:root { --input-visibility-gap: 16px; --keyboard-inset: 0px; }
input, textarea, [contenteditable="true"] { scroll-margin-block: var(--input-visibility-gap); }
form[aria-busy="true"] button:disabled { cursor: progress; }
.theme-control { display: grid; gap: 6px; padding: 12px 16px; font-size: .875rem; font-weight: 600; color: var(--color-text); }
.theme-control[hidden] { display: none; }
.theme-control-compact { display: flex; align-items: center; justify-content: center; padding: 0; }
.theme-control-compact[hidden] { display: none; }
.theme-switch { position: relative; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.theme-switch-icon { font-size: 14px; line-height: 1; }
.theme-switch input { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.theme-switch-track { display: inline-flex; width: 38px; height: 22px; align-items: center; padding: 3px; border: 1px solid var(--color-border-strong); border-radius: 999px; background: var(--color-surface-subtle); transition: background-color .18s ease, border-color .18s ease; }
.theme-switch-track > span { width: 14px; height: 14px; border-radius: 50%; background: var(--color-text-subtle); transition: transform .18s ease, background-color .18s ease; }
.theme-switch input:checked + .theme-switch-track { border-color: var(--color-brand-solid); background: var(--color-brand-solid); }
.theme-switch input:checked + .theme-switch-track > span { transform: translateX(14px); background: var(--color-on-accent, #fff); }
.theme-switch input:focus-visible + .theme-switch-track { outline: 3px solid var(--color-focus); outline-offset: 3px; }
.theme-control select { width: 100%; min-height: 44px; padding: 8px 10px; border: 1px solid var(--color-border-strong); border-radius: 8px; background: var(--color-surface); color: var(--color-text); font: inherit; }
.theme-control select:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.site-footer .theme-control { max-width: 240px; margin: 12px auto 0; text-align: left; }
.feedback-error { color: var(--color-danger); }
.keyboard-open textarea { max-height: calc(var(--visible-viewport-height) - 2 * var(--input-visibility-gap)); }
@media (max-width: 600px) {
    /* iOS zooms small editable controls. This minimum also improves legibility. */
    input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]), select, textarea { font-size: max(16px, 1em) !important; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
.table-scroll { max-width: 100%; overflow-x: auto; contain: layout inline-size; }
.table-scroll:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.searchable-select-input { box-sizing: border-box; max-width: 100%; }
.searchable-select-input:focus-visible { outline: 3px solid var(--color-focus); outline-offset: 2px; }
.searchable-select-source[hidden] { display: none !important; }
.admin-grid, .admin-grid > *, .admin-panel { min-width: 0; }
.navbar-menu-button span { background-color: var(--color-text); }
