df2e4c1518
* main: (35 commits) Replace the whole card on update Include bottom inset on the modal and footer, too Attempt to fix expanded search input Lose the second close button This seems to have caused the unwanted effect of not focusing the field in Mobile Safari Always display the cancel button, `esc` isn't obvious Nothing should cover the bar, trays or search results Dark theme color isn't black Add env constaints for mobile layout Smaller on mobile Reasonalbe max heights Remove top orientation (it doesn't work well), make right and left classes exclusive This is too fancy, remove it Set reasonable maxes Restore bubble to Maybe Restore structured logging of `queenbee_id` Add a kamal pre-build hook with some safety checks Configure beta to use production blob store Configure beta load balancer Update beta deployment and secrets config ...
223 lines
5.4 KiB
CSS
223 lines
5.4 KiB
CSS
@layer components {
|
|
/* Trigger
|
|
/* ------------------------------------------------------------------------ */
|
|
|
|
.nav__trigger {
|
|
--input-background: var(--color-canvas);
|
|
--input-border-color: transparent;
|
|
--input-padding: 0.3em 2em 0.3em 0.75em;
|
|
|
|
font-weight: 600;
|
|
inline-size: auto;
|
|
margin-block-start: 0.1em;
|
|
|
|
::-webkit-search-cancel-button {
|
|
-webkit-appearance: none;
|
|
}
|
|
|
|
@media (any-hover: hover) {
|
|
&:hover {
|
|
filter: brightness(0.9);
|
|
|
|
span {
|
|
background: var(--color-ink-lighter);
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
--input-background: var(--color-ink-lighter);
|
|
}
|
|
}
|
|
}
|
|
|
|
span {
|
|
background: var(--color-ink-lightest);
|
|
block-size: auto;
|
|
border-radius: 0.3125em;
|
|
box-shadow:
|
|
0 0 0 1px oklch(var(--lch-ink-darkest) / 0.1),
|
|
0 0.1em 0.2em -0.1em oklch(var(--lch-ink-darkest) / 0.05),
|
|
0 0.2em 0.4em -0.2em oklch(var(--lch-ink-darkest) / 0.05),
|
|
0 0.3em 0.6em -0.3em oklch(var(--lch-ink-darkest) / 0.05)
|
|
;
|
|
display: grid;
|
|
height: 1.5em;
|
|
inline-size: 1.5em;
|
|
padding: 0.325em 0.275em 0.225em 0.275em;
|
|
place-content: center;
|
|
width: 1.5em;
|
|
}
|
|
|
|
svg {
|
|
height: 100%;
|
|
margin-inline-start: 0.4125em;
|
|
margin-inline-end: 0.5375em;
|
|
max-height: 0.8625em;
|
|
overflow: visible;
|
|
width: auto;
|
|
}
|
|
}
|
|
|
|
/* Dialog
|
|
/* ------------------------------------------------------------------------ */
|
|
|
|
.nav__menu.popup {
|
|
--panel-border-color: var(--color-selected-dark);
|
|
--panel-border-radius: 1.4em;
|
|
--panel-padding: var(--block-space);
|
|
--panel-size: 45ch;
|
|
--popup-display: grid;
|
|
--nav-section-gap: 2px;
|
|
|
|
block-size: auto;
|
|
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%);
|
|
grid-template-rows: auto 1fr auto;
|
|
gap: var(--nav-section-gap);
|
|
max-block-size: calc(100vh - var(--block-space) - var(--footer-height));
|
|
overflow: hidden;
|
|
padding-block-end: 0;
|
|
scrollbar-gutter: stable both-edges;
|
|
z-index: var(--z-nav);
|
|
|
|
@media (max-height: 668px) {
|
|
max-block-size: calc(100vh - var(--block-space));
|
|
}
|
|
}
|
|
|
|
.nav__scroll-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--nav-section-gap);
|
|
margin-inline: calc(-1 * var(--block-space)); /* space for scrollbar */
|
|
overflow: auto;
|
|
padding-block-end: var(--nav-section-gap);
|
|
padding-inline: var(--block-space);
|
|
}
|
|
|
|
.nav__close {
|
|
@media (any-hover: hover) {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
.nav__header {
|
|
--actions-width: 2rem;
|
|
|
|
display: grid;
|
|
grid-template-columns: var(--actions-width) 1fr var(--actions-width);
|
|
grid-template-areas:
|
|
"actions-start title actions-end";
|
|
justify-items: center;
|
|
}
|
|
|
|
.nav__header-actions {
|
|
display: flex;
|
|
font-size: var(--text-x-small);
|
|
gap: var(--inline-space);
|
|
inline-size: var(--actions-width);
|
|
min-inline-size: fit-content;
|
|
}
|
|
|
|
.nav__header-actions--end {
|
|
grid-area: actions-end;
|
|
justify-content: flex-end;
|
|
margin-inline-start: auto;
|
|
}
|
|
|
|
.nav__header-actions--start {
|
|
grid-area: actions-start;
|
|
margin-inline-end: auto;
|
|
}
|
|
|
|
.nav__header-title {
|
|
color: inherit;
|
|
grid-area: title;
|
|
justify-content: center;
|
|
margin: auto;
|
|
min-inline-size: 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.nav__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;
|
|
}
|
|
}
|
|
}
|
|
|
|
.nav__footer {
|
|
background-color: var(--color-canvas);
|
|
border-block-start: 1px solid var(--color-ink-lighter);
|
|
font-size: var(--text-small);
|
|
line-height: 1.6;
|
|
margin-block-start: calc(-1 * var(--nav-section-gap));
|
|
padding: 1.5ch;
|
|
text-align: center;
|
|
z-index: 1;
|
|
|
|
@media (max-height: 668px) {
|
|
font-size: var(--text-x-small);
|
|
}
|
|
}
|
|
}
|