%menu-panel { position: absolute; overflow: hidden; } %menu-panel [type='checkbox'] { display: none; } %menu-panel [type='checkbox'] ~ * { transition: transform 150ms, min-height 150ms, max-height 150ms; min-height: 0; } %menu-panel [type='checkbox']:checked ~ * { transform: translateX(calc(-100% - 10px)); /* this needs to autocalculate */ /* or be hardcoded */ /* min-height: 143px; */ } %menu-panel-sub-panel { position: absolute; top: 0; left: calc(100% + 10px); } %menu-panel > ul > li > div[role='menu'] { @extend %menu-panel-sub-panel; } %menu-panel > ul > li > *:not(div[role='menu']) { position: relative; } %menu-panel:not(.left) { right: 0px; } %menu-panel.left { left: 0px; } %menu-panel:not(.above) { top: 28px; } %menu-panel.above { bottom: 42px; } %menu-panel > ul { margin: 0; padding: 4px 0; } %menu-panel > ul, %menu-panel > ul > li, %menu-panel > ul > li > * { width: 100%; } %menu-panel > ul > li > * { text-align: left !important; } %menu-panel-separator { padding-top: 0.35em; } %menu-panel-separator:not(:first-child) { margin-top: 0.35em; } %menu-panel-separator:not(:empty) { padding-left: 1em; padding-right: 1em; padding-bottom: 0.1em; } %menu-panel-header { padding: 10px; padding-left: 36px; } %menu-panel .is-active { position: relative; } %menu-panel .is-active > *::after { position: absolute; top: 50%; margin-top: -8px; right: 10px; } %menu-panel-header::before { position: absolute; left: 15px; top: calc(10px + 0.1em); } %menu-panel-header { max-width: fit-content; } @supports not (max-width: fit-content) { %menu-panel-header { max-width: 200px; } }