:root {
  color-scheme: light;
  --fg:#182923;--bg:#f3f5f4;--card:#fff;--surface:#f8faf9;--line:#d4ded7;
  --accent:#205c47;--on-accent:#fff;--danger:#a32e36;--muted:#57685f;--focus:#246947;
  --success:#276044;--success-bg:#e7f1e9;--error-bg:#fae9ea;--nav:#edf1ee;
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;
  --radius:8px;--sidebar:224px;
}
[data-theme=dark] {
  color-scheme:dark;
  --fg:#e7eee9;--bg:#14201b;--card:#1c2b24;--surface:#23342b;--line:#456052;
  --accent:#aed3b9;--on-accent:#13271b;--danger:#ffb4b8;--muted:#b0c2b6;--focus:#aed3b9;
  --success:#b3dbbf;--success-bg:#294735;--error-bg:#4c2a2e;--nav:#17271f;
}
* {box-sizing:border-box}
html,body {margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:"General Sans",system-ui,-apple-system,"Segoe UI",sans-serif;font-size:15px;line-height:1.5}
[hidden] {display:none!important}
:focus-visible {outline:3px solid var(--focus);outline-offset:3px}
h1,h2,h3,p {margin-top:0}
h1 {font-size:clamp(1.65rem,2.5vw,2.15rem);line-height:1.2;letter-spacing:-.045em;margin-bottom:8px}
h2 {font-size:1.15rem;letter-spacing:-.02em;margin-bottom:16px}
h3 {font-size:1rem;margin-block:24px 12px}
a {color:var(--accent);text-underline-offset:3px}
button,input,select,textarea {font:inherit;border-radius:4px;max-width:100%}
button {padding:10px 16px;min-height:42px;line-height:1.35;background:var(--accent);color:var(--on-accent);border:1px solid transparent;cursor:pointer;font-weight:600}
button:hover:not(:disabled) {filter:brightness(.94)}
button:disabled {opacity:.6;cursor:not-allowed}
button.secondary {background:var(--card);color:var(--fg);border-color:var(--line)}
button.danger {background:var(--error-bg);color:var(--danger);border-color:var(--danger)}
input,select,textarea {padding:10px 12px;min-height:42px;border:1px solid var(--line);background:var(--card);color:var(--fg);width:100%;min-width:0}
textarea {resize:vertical}
label {display:flex;flex-direction:column;gap:6px;font-size:.875rem;font-weight:550;color:var(--fg);min-width:0}
.hint,.meta {font-size:.85rem;color:var(--muted);font-weight:400}
.meta {line-height:1.6;margin-top:6px}
.skip-link {position:fixed;top:8px;left:8px;transform:translateY(-150%);padding:12px;background:var(--card);z-index:100}
.skip-link:not(:focus) {clip-path:inset(50%);width:1px;height:1px;overflow:hidden;padding:0;white-space:nowrap}
.skip-link:focus {transform:none}
#workspace {min-height:100vh;display:flex;flex-direction:column}
.signed-in #workspace {margin-left:var(--sidebar)}
#sidebar {position:fixed;inset:0 auto 0 0;width:var(--sidebar);padding:28px 16px;background:var(--nav);border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:30}
.brand {display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--fg);padding:0 8px}
.brand strong {display:block;font-size:1.1rem;letter-spacing:.08em}
.brand small {display:block;font-size:.75rem;color:var(--muted)}
.workspace-label {padding:36px 8px 24px;display:grid;gap:6px}
.workspace-label strong {overflow-wrap:anywhere}
.workspace-label small,.sidebar-foot {font-size:.75rem;color:var(--muted)}
.eyebrow {display:block;font-size:.65rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.tabs {display:flex;flex-direction:column;gap:6px}
.tabs button {text-align:left;background:transparent;color:var(--muted);border:1px solid transparent;font-size:.85rem}
.tabs button[aria-selected=true] {background:var(--card);border-color:var(--line);color:var(--accent)}
.sidebar-foot {margin-top:auto;padding:24px 8px 0}
.sidebar-foot p {margin:8px 0 24px}
.topbar {min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 32px;background:var(--card);border-bottom:1px solid var(--line)}
#breadcrumb {font-size:.8rem;color:var(--muted)}
.header-actions {display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.header-actions button {font-size:.8rem;padding:8px 12px}
#userbar {font-size:.8rem;overflow-wrap:anywhere;max-width:250px}
#menu-toggle {display:none}
main {width:100%;max-width:1600px;margin:0 auto;padding:32px;flex:1;min-width:0}
.page-heading {margin-bottom:28px}
.page-heading p {color:var(--muted);margin-bottom:0}
#scope-strip {display:flex;gap:16px;align-items:center;margin-bottom:24px;font-size:.75rem;color:var(--muted)}
#scope-strip label {flex-direction:row;align-items:center;font-size:.75rem}
#pillar-select {width:auto;min-width:110px;padding:6px 10px;font-size:.8rem}
#scope-timezone {overflow-wrap:anywhere}
.panel,#login-panel {background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px}
#login-panel {max-width:640px;margin-top:24px}
#login-panel label {margin-bottom:16px}
.row {display:flex;gap:16px;flex-wrap:wrap;align-items:end;margin-bottom:20px}
.row>label {flex:1 1 150px}
.filter-panel {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:end;margin-bottom:24px}
.booking-layout {display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:24px;align-items:start}
.room-workspace {min-width:0;display:grid;gap:20px}
.room-workspace>.row,.room-workspace p {margin-bottom:0}
.room-selector {display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,.65fr) auto;gap:12px}
.room-selector #jump-booking {grid-column:1/-1}
#room-timezone {padding:0 4px}
#room-details {background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px;overflow-wrap:anywhere}
#room-details h3 {margin-top:0}
#room-details p {font-size:.9rem;color:var(--muted);margin-bottom:14px}
.actions {display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.actions a {font-size:.85rem}
fieldset {min-width:0;border:1px solid var(--line);border-radius:4px;padding:16px;margin:0}
legend {padding:0 6px;font-weight:650}
.booking-editor>fieldset {padding:0;border:0}
.booking-editor legend {font-size:1.15rem;padding:0 0 16px}
.booking-editor label {margin-bottom:16px}
.booking-editor .row {gap:12px}
.booking-editor button {margin-bottom:8px;width:100%}
.booking-editor .row>label {flex-basis:120px}
#book-msg {font-size:.9rem;overflow-wrap:anywhere}
.ok,.error {padding:12px 16px;border-radius:4px;font-size:.9rem}
.ok {color:var(--success);background:var(--success-bg)}
.error {color:var(--danger);background:var(--error-bg)}
.error:empty,.ok:empty,#global-status:empty {display:none}
#global-status:not(:empty),#maintenance-banner {padding:16px;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:4px;background:var(--card)}
.state-panel {padding:16px;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:4px}
.state-panel strong {color:var(--fg);display:block}
.state-panel p {margin:6px 0 0}
.state-panel.error strong {color:var(--danger)}
[aria-busy=true] {min-height:72px;color:var(--muted)}
.booking {padding:20px;margin-bottom:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);display:flex;align-items:center;gap:12px;flex-wrap:wrap;overflow-wrap:anywhere}
.booking>div:first-child {flex:1 1 300px;min-width:0}
.booking>span {flex:1 1 250px}
.booking button,.booking a {font-size:.85rem}
.booking a {padding:8px}
.history-filter {max-width:300px;margin-bottom:24px}
.notices-panel {margin-top:32px}
.notices-panel label {max-width:450px}
.notices-panel p button {margin-left:12px}
details.panel>summary {font-weight:600;cursor:pointer}
details[open]>summary {margin-bottom:20px}
.calendar-grid {display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.calendar-grid section,.calendar-list section {border:1px solid var(--line);border-radius:4px;padding:12px;min-width:0}
.calendar-event {background:var(--surface);padding:12px;margin-block:8px;font-size:.8rem;overflow-wrap:anywhere}
.calendar-event p {margin-top:8px}
.finder-results {margin:24px 0}
#room-cards {display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:16px}
.room-card {border:1px solid var(--line);border-radius:var(--radius);background:var(--card);padding:20px;min-width:0;overflow-wrap:anywhere}
.room-card h3 {margin:0 0 8px}.room-card p {white-space:pre-line}
.room-card button[aria-pressed=true] {border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.room-metadata {display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:16px}
.room-metadata dt {font-size:.85rem;color:var(--muted)}.room-metadata dd {margin:4px 0 0}
.calendar-navigation {margin:16px 0}.calendar-closed {border-left:3px solid var(--danger)}
.calendar-grid section>p,.calendar-list section>p {font-size:.85rem;color:var(--muted)}
.day-track {position:relative;height:180px;margin:20px 0 24px;background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(25% - 1px),var(--line) calc(25% - 1px),var(--line) 25%);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.day-tick {position:absolute;left:0;transform:translateY(-50%);font-size:.8rem;background:var(--card);color:var(--muted);padding-right:4px}
.day-span {position:absolute;min-height:2px;background:var(--accent);border:1px solid var(--card);opacity:.85}
.day-span-closed {background:var(--danger)}
.admin-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
#tab-admin>label {max-width:300px;margin-bottom:24px}
#admin-content {border:0;padding:0}
#admin-content>legend {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
#admin-tools details {background:var(--card);border:1px solid var(--line);padding:20px;margin:16px 0;border-radius:var(--radius)}
#admin-tools summary {cursor:pointer;font-weight:600}
#admin-tools form {margin-block:16px}
#admin-tools label {margin-bottom:12px}
#admin-tools pre {white-space:pre-wrap;overflow-wrap:anywhere;max-height:360px;overflow-y:auto;background:var(--surface);padding:16px}
#admin-tools .booking {padding:16px}
#admin-tools .booking>div:first-child {flex-basis:200px}
footer {padding:20px 32px;border-top:1px solid var(--line);font-size:.75rem;color:var(--muted)}
dialog {background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:12px;padding:24px;width:min(600px,calc(100vw - 24px));max-height:85dvh;overflow:auto}
dialog::backdrop {background:#14231cb3}
.dialog-head {display:flex;align-items:start;justify-content:space-between;gap:20px}
.dialog-head h2 {overflow-wrap:anywhere}
dialog dl {margin:0}
dialog dl>div {padding:12px 0;border-bottom:1px solid var(--line)}
dialog dt {font-size:.8rem;color:var(--muted)}
dialog dd {margin:4px 0 0;overflow-wrap:anywhere}
.inventory-toolbar {display:flex;align-items:center;justify-content:space-between;gap:16px;margin:20px 0;flex-wrap:wrap}
.inventory-toolbar h2,.inventory-toolbar p {margin-bottom:6px}
#inventory-editor {display:block;background:var(--surface);padding:20px;border:1px solid var(--line);border-radius:8px;margin:20px 0}
#inventory-editor form {max-width:650px}
#inventory-editor-close {margin-top:12px}
.inventory-metrics {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0}
.inventory-metrics>div {padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:6px}
.inventory-metrics strong {display:block;font-size:1.6rem}
.inventory-metrics span {font-size:.8rem;color:var(--muted)}
.import-provenance>div {display:grid;grid-template-columns:140px minmax(0,1fr);gap:12px;margin:12px 0}
.import-provenance dt {color:var(--muted);font-size:.85rem}
.import-provenance dd {margin:0;overflow-wrap:anywhere}
.import-conflicts {padding-left:22px;color:var(--danger);overflow-wrap:anywhere}
.inventory-table-wrap {position:relative;max-width:100%;overflow:auto;border:1px solid var(--line);border-radius:6px}
.inventory-table-wrap table {border-collapse:collapse;width:100%;font-size:.85rem}
.inventory-table-wrap caption {text-align:left;padding:12px;color:var(--muted)}
.inventory-table-wrap th,.inventory-table-wrap td {text-align:left;padding:12px;border-top:1px solid var(--line)}
#inventory-impact-body {overflow-wrap:anywhere}
@media(max-width:760px){.inventory-metrics{grid-template-columns:1fr 1fr}.import-provenance>div{grid-template-columns:1fr;gap:4px}}
@media (max-width:1180px) {.booking-layout{grid-template-columns:1fr}.filter-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.booking-editor{max-width:none}.booking-editor>fieldset{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.booking-editor>fieldset>p,.booking-editor>fieldset>div,.booking-editor>fieldset>button{grid-column:1/-1}}
@media (max-width:760px) {
  .signed-in #workspace {margin-left:0}
  #sidebar {transform:translateX(-100%);box-shadow:0 0 30px #0003}
  #sidebar.open {transform:translateX(0)}
  #menu-toggle {display:inline-flex}
  #nav-backdrop {position:fixed;inset:0;background:#14231c88;z-index:25;border-radius:0}
  .topbar {padding:12px 16px;gap:12px;min-height:68px}
  #breadcrumb {display:none}
  .header-actions {gap:8px;justify-content:end}
  #userbar {max-width:110px;font-size:.7rem}
  .header-actions button {font-size:.75rem;padding:8px}
  main {padding:24px 16px}
  #scope-strip {flex-direction:column;align-items:start;gap:8px}
  .page-heading {margin-bottom:24px}
  .panel,#room-details {padding:20px}
  .filter-panel,.admin-grid,.booking-editor>fieldset {grid-template-columns:1fr}
  .filter-panel {gap:12px}
  .room-selector {grid-template-columns:minmax(0,1fr)}
  .row>label {flex-basis:100%}
  .booking {align-items:start;padding:16px;gap:10px}
  .booking>div:first-child {flex-basis:100%}
  #admin-tools details {padding:16px}
  #admin-tools .booking>div:first-child {flex-basis:100%}
  #logout {max-width:140px}
  footer {padding:20px 16px}
}
/* Theme colors change atomically: interpolating only the background briefly
   pairs dark-theme text with a light background (and fails contrast). */
#admin-review {width:min(620px,calc(100vw - 32px));max-height:85vh;overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:24px;background:var(--surface);color:var(--fg)}
#admin-review::backdrop {background:rgba(16,34,27,.65)}
#admin-review form {display:flex;flex-direction:column;max-height:calc(85vh - 48px);margin:0}
#admin-review h2,#admin-review .actions,#admin-reason-label,#admin-review-error {flex-shrink:0}
#admin-review dl {margin:16px 0;display:grid;gap:10px}
#admin-review #admin-review-scroll {overflow-y:auto;min-height:0;flex:1;padding-right:8px}
#admin-review dl>div {display:grid;grid-template-columns:minmax(100px,1fr) minmax(0,2fr);gap:12px}
#admin-review dt {font-weight:600;color:var(--muted)}
#admin-review dd {margin:0;overflow-wrap:anywhere}
#admin-review textarea {width:100%}
#grant-status,#audit-status,#bookings-status {font-size:.875rem;color:var(--muted)}
#grants-list .booking strong,#admin-list .booking .meta {overflow-wrap:anywhere}
@media(max-width:520px){#admin-review {padding:18px}#admin-review dl>div {grid-template-columns:1fr;gap:2px}}
.policy-effective {padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:6px;margin:20px 0}
.policy-summary {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.policy-summary dt {font-size:.8rem;color:var(--muted)}
.policy-summary dd {margin:4px 0 0;font-weight:600}
#weekly-hours {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
#weekly-hours fieldset {min-width:0}
.hours-interval {display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-top:12px}
.hours-interval label {flex:1;min-width:95px}
.hours-interval input {width:100%}
.retain-choice {display:flex;flex-direction:row;align-items:start;gap:10px;padding:16px;border:1px solid var(--line);margin:16px 0}
.retain-choice input {width:auto;margin-top:5px;flex-shrink:0}
.policy-impacts {padding-left:20px;overflow-wrap:anywhere}
.policy-impacts li {padding:12px 0;border-bottom:1px solid var(--line)}
#closures-list form {width:100%}
@media(max-width:700px){#weekly-hours {grid-template-columns:1fr}.policy-summary {grid-template-columns:repeat(2,minmax(0,1fr))}}
.request-review {width:min(640px,calc(100vw - 32px));max-height:85vh;border:1px solid var(--line);border-radius:12px;padding:24px;background:var(--surface);color:var(--fg)}
.request-review::backdrop {background:rgba(16,34,27,.65)}
.request-review form {display:flex;flex-direction:column;max-height:calc(85vh - 48px);margin:0}
.request-review .request-review-scroll {overflow:auto;min-height:0;flex:1;padding-right:8px;margin-bottom:12px}
.request-review .actions {margin-top:12px}
.request-review h2,.request-review label,.request-review .actions,.request-review [role=alert] {flex-shrink:0}
.request-review textarea {width:100%}
.editor-steps {font-size:.8rem;font-weight:650;color:var(--accent);letter-spacing:.025em}
#editor-context {padding:12px;background:var(--surface);border-left:3px solid var(--accent);font-size:.85rem}
.booking-state {font-size:.8rem;color:var(--accent);margin:6px 0;overflow-wrap:anywhere}
#mine-summary {color:var(--muted);font-size:.875rem;margin:20px 0}
#mine-filters {margin-bottom:20px}
#alternatives {display:grid;gap:10px}
#alternatives button {text-align:left;overflow-wrap:anywhere}
[aria-invalid=true] {border-color:var(--danger)}
.request-review dl>div {display:grid;grid-template-columns:1fr 2fr;gap:12px}
.request-review dd {margin:0;overflow-wrap:anywhere}
#requests-status,#delegation-status {font-size:.875rem;color:var(--muted)}
#requests-list .booking p {overflow-wrap:anywhere}
/* Operator hashes and stable IDs must remain readable on narrow screens. */
#report-results,#inventory-quality,#import-history,#operator-status {overflow-wrap:anywhere;min-width:0}
#report-results .panel,#operator-status .panel {margin:16px 0}
@media(max-width:520px){.request-review {padding:18px}.request-review dl>div {grid-template-columns:1fr;gap:3px}}
