Files
astrolabe/src/app/components/SettingsPopover.module.css
T

160 lines
3.0 KiB
CSS

/* SettingsPopover — per-pane settings disclosure (spec §07; arch 10). */
.wrap {
position: relative;
display: inline-flex;
}
/* Gear trigger — a subtle icon button matching the modal-shell close affordance. */
.gear {
display: inline-flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
padding: 0;
border: var(--border-width) solid transparent;
border-radius: var(--radius);
background: transparent;
color: var(--text-secondary);
cursor: pointer;
transition:
background var(--dur-fast) var(--ease),
color var(--dur-fast) var(--ease);
}
.gear:hover {
background: var(--layer-01);
color: var(--text);
}
.gear[aria-expanded='true'] {
background: var(--layer-02);
color: var(--text);
}
.gear:focus-visible {
outline: 2px solid var(--focus);
outline-offset: 1px;
}
/* The disclosed panel — portaled to <body>, positioned `fixed` from the gear's
rect (top/left|right set inline) so it escapes the panes' overflow clipping. */
.pop {
position: fixed;
z-index: 1000;
width: 288px;
max-width: min(320px, 90vw);
padding: var(--space-4);
background: var(--layer-01);
border: var(--border-width) solid var(--border-strong);
border-radius: var(--radius);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
}
.title {
margin: 0 0 var(--space-3);
font-size: 11px;
font-weight: 600;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--text-secondary);
}
.row {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-4);
min-height: 32px;
}
.row + .row {
margin-top: var(--space-1);
}
.label {
font-size: 13px;
color: var(--text);
}
.control {
display: flex;
align-items: center;
gap: var(--space-3);
}
.footer {
display: flex;
justify-content: flex-end;
margin-top: var(--space-3);
padding-top: var(--space-3);
border-top: var(--border-width) solid var(--border);
}
/* Shared controls used inside popovers ------------------------------------- */
.range {
width: 128px;
accent-color: var(--accent);
}
.value {
min-width: 48px;
text-align: right;
font-variant-numeric: tabular-nums;
font-size: 12px;
color: var(--text-secondary);
}
.number,
.text {
padding: var(--space-2) var(--space-3);
border: var(--border-width) solid var(--border-strong);
border-radius: var(--radius);
background: var(--bg);
color: var(--text);
font: inherit;
font-size: 12px;
}
.number {
width: 60px;
text-align: right;
}
.text {
width: 160px;
font-family: var(--font-mono);
}
.number:focus-visible,
.text:focus-visible {
outline: 2px solid var(--focus);
outline-offset: -1px;
}
.text::placeholder {
color: var(--text-placeholder);
}
.reset {
border: none;
background: none;
padding: 0;
color: var(--accent);
font: inherit;
font-size: 12px;
cursor: pointer;
}
.reset:hover {
color: var(--accent-hover);
text-decoration: underline;
}
.reset:focus-visible {
outline: 2px solid var(--focus);
outline-offset: 2px;
}