@use "@styles/abstracts/functions" as fun; @use "@styles/abstracts/mixins" as mix; .title { margin: 0; padding: 0; background: none; font-size: var(--font-size-xl); text-align: left; } .icon { display: flex; flex-flow: row nowrap; align-items: center; justify-content: center; width: fun.convert-px(30); height: fun.convert-px(30); background: var(--color-bg); border: fun.convert-px(1) solid var(--color-primary); border-radius: fun.convert-px(3); color: var(--color-primary); font-weight: 800; transition: all 0.25s ease-in-out 0s; &::before, &::after { content: ""; background: var(--color-primary); transition: all 0.4s ease-out 0s; } &::before { width: 10%; height: 60%; position: relative; left: 30%; } &::after { width: 60%; height: 10%; position: relative; left: -5%; } } .body { width: 100%; max-height: 0; margin: 0 0 fun.convert-px(-6); // collapse borders overflow: hidden; visibility: hidden; transition: all 0.6s cubic-bezier(0, 1, 0, 1) 0s, margin 0.2s ease-in-out 0s, border 0.1s ease-in-out 0.3s, visibility 0.1s linear 0.6s; &--borders { border: 0 solid transparent; } > *:last-child { margin-bottom: 0; } @include mix.media("screen") { @include mix.dimensions("md") { font-size: var(--font-size-sm); font-weight: 500; } } } .wrapper { --header-height: #{fun.convert-px(65)}; display: flex; flex-flow: column; &--expanded { .icon::before { height: 0; } .body { max-height: 10000px; // needs a fixed value for transition. margin: var(--spacing-sm) 0; overflow: visible; visibility: visible; transition: visibility 0.1s linear 0s, max-height 0.6s linear 0s, margin 0.2s ease-in-out 0s; &--borders { border: fun.convert-px(2) solid var(--color-primary-dark); } } } } .wrapper--expanded.wrapper--toc { @include mix.media("screen") { @include mix.dimensions("lg") { max-height: 100vh; .body { overflow-y: auto; } } } } .header { display: flex; flex-flow: row nowrap; align-items: center; justify-content: space-between; gap: var(--spacing-md); width: 100%; min-height: var(--header-height); position: sticky; top: 0; z-index: 3; background: var(--color-bg); border: none; border-top: fun.convert-px(2) solid var(--color-primary-dark); border-bottom: fun.convert-px(2) solid var(--color-primary-dark); cursor: pointer; &:hover, &:focus { .icon { background: var(--color-primary-light); color: var(--color-fg-inverted); transform: scale(1.2); &::before, &::after { background: var(--color-bg); } } } > button { padding: 0 var(--spacing-xs); } }