@layer components { .input:is(.fizzy-menu-trigger) { --input-background: var(--color-canvas); --input-border-color: transparent; --input-padding: 0.2em 2em 0.2em 0.9em; inline-size: auto; margin-block-start: 0.1em; ::-webkit-search-cancel-button { -webkit-appearance: none; } @media (any-hover: hover) { &:hover { filter: brightness(0.9); @media (prefers-color-scheme: dark) { --input-background: var(--color-ink-lighter); } } } svg { block-size: auto; inline-size: 1.1em; margin-block-end: 0.2em; margin-inline-end: 0.8ch; } } .fizzy-menu:is(.panel) { --panel-border-color: var(--color-selected-dark); --panel-border-radius: 1.4em; --panel-size: 45ch; align-items: stretch; box-shadow: 0 0 0 1px oklch(var(--lch-blue-medium) / 5%), 0 0.2em 0.2em oklch(var(--lch-blue-medium) / 5%), 0 0.4em 0.4em oklch(var(--lch-blue-medium) / 5%), 0 0.8em 0.8em oklch(var(--lch-blue-medium) / 5%); flex-direction: column; gap: 2px; } .fizzy-menu__close { @media (any-hover: hover) { display: none; } } .fizzy-menu__hotkeys { --gap: 8px; align-items: center; display: flex; flex-wrap: wrap; gap: var(--gap); inline-size: 100%; list-style: none; justify-content: center; margin: var(--block-space) auto calc(var(--block-space-half) / 2); max-inline-size: 100%; /* When all its children are hidden, hide this as well so it doesn't take up space */ &:has(.popup__item[hidden]):not(:has(.popup__item:not([hidden]))) { display: none; } .btn { --btn-border-radius: 0.4em; align-content: end; aspect-ratio: 5/3; background-color: var(--color-ink-lightest); border-radius: 0.5em; flex-basis: calc((100% - var(--gap) * 2) / 3); flex-direction: column; font-size: var(--text-small); line-height: 1; justify-content: center; overflow: hidden; position: relative; row-gap: 0.3lh; text-align: center; kbd { border: none; box-shadow: none; inset: 0.66em 0.33em auto auto; opacity: 0.5; position: absolute; @media (any-hover: none) { /* This is a reasonable way to assert touch devices. any-pointer would seem */ /* to be a better fit but it is incorrectly reported on many devices */ display: none; } } .icon { --icon-size: 2em !important; } span { display: flex; text-wrap: nowrap; } @media (max-width: 639px) { font-size: var(--text-x-small); font-weight: 500; } } } }