/* Tokens follow datenbase/frontend/src/index.css: --app-* colours and the
   --ctl-* control scale, with one dark palette for system or chosen theme. */
:root{
  --app-bg:#f8f9fa;--app-surface:#fff;--app-surface-muted:#f8fafc;--app-hover:#f1f5f9;--app-border:#e2e8f0;--app-border-strong:#cbd5e1;
  --app-text:#111827;--app-text-secondary:#475569;--app-text-muted:#64748b;
  --app-accent:#3b82f6;--app-accent-solid:#2563eb;--app-accent-solid-hover:#1d4ed8;--app-accent-soft:#eff6ff;--app-accent-text:#1d4ed8;
  --app-success-soft:#d1fae5;--app-success-text:#047857;--app-warning-soft:#fef3c7;--app-warning-text:#b45309;--app-danger-text:#dc2626;
  --app-tint-base:#fff;--app-modal-backdrop:rgba(15,23,42,.58);
  --free:#059669;--free-soft:#d1fae5;--busy:#ea580c;--busy-soft:#ffedd5;--busy-text:#9a3412;--unknown:#94a3b8;
  --ctl-h-xs:28px;--ctl-h-sm:32px;--ctl-h-md:36px;--ctl-h-lg:44px;--ctl-radius-sm:6px;--ctl-radius-md:8px;--ctl-font-sm:.8125rem;--ctl-font-md:.875rem;--ctl-pad-x-sm:.5rem;--ctl-pad-x-md:.75rem;
  --ctl-menu-max-h:300px;--ctl-menu-max-w:360px;--ctl-menu-radius:8px;--ctl-menu-pad:.25rem;
  --ctl-menu-shadow:0 10px 24px rgba(15,23,42,.14),0 2px 6px rgba(15,23,42,.08);
  --ctl-focus-ring:0 0 0 3px color-mix(in srgb,var(--app-accent) 22%,transparent);
  --card-shadow:0 1px 2px rgba(16,24,40,.05);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){
  --app-bg:#0b1120;--app-surface:#111827;--app-surface-muted:#172033;--app-hover:#1e293b;--app-border:#2b3a50;--app-border-strong:#475569;
  --app-text:#f1f5f9;--app-text-secondary:#cbd5e1;--app-text-muted:#94a3b8;
  --app-accent:#60a5fa;--app-accent-solid:#1d4ed8;--app-accent-solid-hover:#1e40af;--app-accent-soft:#172554;--app-accent-text:#93c5fd;
  --app-success-soft:#052e2b;--app-success-text:#6ee7b7;--app-warning-soft:#422006;--app-warning-text:#fbbf24;--app-danger-text:#f87171;
  --app-tint-base:#111827;--app-modal-backdrop:rgba(2,6,23,.6);
  --free:#34d399;--free-soft:#064e3b;--busy:#fb923c;--busy-soft:#431407;--busy-text:#fdba74;--unknown:#64748b;
  --ctl-menu-shadow:0 10px 24px rgba(0,0,0,.45),0 2px 6px rgba(0,0,0,.3);--card-shadow:none;color-scheme:dark}}
:root[data-theme=dark]{
  --app-bg:#0b1120;--app-surface:#111827;--app-surface-muted:#172033;--app-hover:#1e293b;--app-border:#2b3a50;--app-border-strong:#475569;
  --app-text:#f1f5f9;--app-text-secondary:#cbd5e1;--app-text-muted:#94a3b8;
  --app-accent:#60a5fa;--app-accent-solid:#1d4ed8;--app-accent-solid-hover:#1e40af;--app-accent-soft:#172554;--app-accent-text:#93c5fd;
  --app-success-soft:#052e2b;--app-success-text:#6ee7b7;--app-warning-soft:#422006;--app-warning-text:#fbbf24;--app-danger-text:#f87171;
  --app-tint-base:#111827;--app-modal-backdrop:rgba(2,6,23,.6);
  --free:#34d399;--free-soft:#064e3b;--busy:#fb923c;--busy-soft:#431407;--busy-text:#fdba74;--unknown:#64748b;
  --ctl-menu-shadow:0 10px 24px rgba(0,0,0,.45),0 2px 6px rgba(0,0,0,.3);--card-shadow:none;color-scheme:dark}

/* ---- Base ---------------------------------------------------------------- */
*{box-sizing:border-box}
body{margin:0;background:var(--app-bg);color:var(--app-text);font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:inherit}
button,a,input,select,summary{touch-action:manipulation}
button{cursor:pointer}
[hidden]{display:none!important}
a{color:var(--app-accent-text)}
h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}
.eyebrow{font-size:11px;letter-spacing:.08em;font-weight:600;color:var(--app-text-muted);text-transform:uppercase}

/* ---- Buttons (datenbase Button: variant × size) ------------------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;position:relative;border:1px solid transparent;border-radius:var(--ctl-radius-md);font-weight:500;letter-spacing:-.01em;line-height:1.2;white-space:nowrap;user-select:none;outline:none;background:transparent;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}
.btn:focus-visible{box-shadow:var(--ctl-focus-ring)}
.btn:active:not(:disabled){transform:translateY(1px)}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn svg{flex-shrink:0}
.btn.xsmall{min-height:var(--ctl-h-xs);padding:0 .5rem;border-radius:var(--ctl-radius-sm);font-size:var(--ctl-font-sm)}
.btn.small{min-height:var(--ctl-h-md);padding:0 .875rem;font-size:var(--ctl-font-md)}
.btn.medium{min-height:2.5rem;padding:0 1.125rem;font-size:.9375rem}
.btn.large{min-height:var(--ctl-h-lg);padding:0 1.5rem;font-size:1rem}
.btn.icon-only{padding:0}
.btn.icon-only.xsmall{width:var(--ctl-h-xs)}.btn.icon-only.small{width:var(--ctl-h-md)}
.btn.full{width:100%}
.btn.primary{background-color:var(--app-accent-solid);background-image:linear-gradient(180deg,rgba(255,255,255,.14),rgba(255,255,255,0));color:#fff;box-shadow:0 1px 2px rgba(16,24,40,.12)}
.btn.primary:hover:not(:disabled){background-color:var(--app-accent-solid-hover)}
.btn.primary:focus-visible{box-shadow:0 1px 2px rgba(16,24,40,.12),var(--ctl-focus-ring)}
.btn.primary:disabled{cursor:wait}
.btn.secondary{background:var(--app-surface);color:var(--app-text-secondary);border-color:var(--app-border-strong)}
.btn.secondary:hover:not(:disabled){background:var(--app-hover);color:var(--app-text)}
.btn.outline{color:var(--app-accent-text);border-color:color-mix(in srgb,var(--app-accent) 55%,transparent)}
.btn.outline:hover:not(:disabled){background:var(--app-accent-soft);border-color:var(--app-accent)}
.btn.ghost{color:var(--app-text-secondary)}
.btn.ghost:hover:not(:disabled){background:var(--app-hover);color:var(--app-text)}

/* ---- Chips -------------------------------------------------------------- */
.chip{display:inline-flex;align-items:center;gap:.375rem;height:24px;padding:0 .6rem;border-radius:999px;font-size:12px;font-weight:500;background:var(--app-hover);color:var(--app-text-secondary);white-space:nowrap}
.chip.info{background:var(--app-accent-soft);color:var(--app-accent-text)}
.chip.success{background:var(--app-success-soft);color:var(--app-success-text)}
.chip-dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.chip:empty{display:none}

/* ---- Top bar ------------------------------------------------------------ */
.topbar{position:sticky;top:0;z-index:20;height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 max(24px,calc((100vw - 1440px)/2));background:color-mix(in srgb,var(--app-surface) 88%,transparent);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--app-border)}
.brand{display:flex;align-items:center;gap:12px;color:var(--app-text);font-size:17px;font-weight:650;text-decoration:none;letter-spacing:-.01em}
.brand small{display:block;font-size:11px;font-weight:500;color:var(--app-text-muted);letter-spacing:0;margin-top:1px}
.brandmark{width:36px;height:36px;border-radius:var(--ctl-radius-md);display:grid;place-items:center;color:#fff;background:var(--app-accent-solid);background-image:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0));box-shadow:0 1px 2px rgba(16,24,40,.15)}
.topbar-actions{display:flex;align-items:center;gap:.5rem}
#theme svg{display:none}#theme[data-mode=auto] .i-auto,#theme[data-mode=light] .i-light,#theme[data-mode=dark] .i-dark{display:block}

/* ---- Layout ------------------------------------------------------------- */
main{max-width:1488px;margin:auto;padding:0 24px}
.intro{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:36px 0 24px}
h1{font-size:clamp(28px,3vw,40px);letter-spacing:-.03em;margin:10px 0 8px;line-height:1.1}
.intro p{margin:0;color:var(--app-text-secondary)}
.intro-note{border-left:2px solid var(--app-accent);padding-left:16px;min-width:220px;font-size:13px;color:var(--app-text-muted)}
.intro-note b{display:block;color:var(--app-text);font-size:14px;margin-bottom:2px}
.workspace{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px;align-items:start}
.filters,.results{background:var(--app-surface);border:1px solid var(--app-border);border-radius:12px;box-shadow:var(--card-shadow)}

/* ---- Filter panel ------------------------------------------------------- */
.filters{position:sticky;top:80px;max-height:calc(100vh - 96px);overflow:auto;padding:18px 20px 20px;scrollbar-width:thin}
.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.section-title h2{font-size:16px}
.group{padding:14px 0 16px;border-bottom:1px solid var(--app-border)}
.group:last-of-type{border-bottom:0}
.group-title{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--app-text-muted);margin-bottom:2px}
label{display:block;font-size:13px;font-weight:500;color:var(--app-text-secondary);margin:12px 0 6px}
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.room-type-fields{grid-template-columns:1.5fr 1fr}
.field-grid>div{min-width:0}

/* Plain inputs share the trigger geometry. */
input[type=number],.search-field,.ui-field,.ui-trigger{display:flex;align-items:center;width:100%;min-width:0;height:var(--ctl-h-md);background:var(--app-surface);border:1px solid var(--app-border);border-radius:var(--ctl-radius-md);font-size:var(--ctl-font-md);transition:border-color .12s ease,box-shadow .12s ease}
input[type=number]{padding:0 var(--ctl-pad-x-md);color:var(--app-text);outline:0;-moz-appearance:textfield}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
input[type=number]:hover,.search-field:hover,.ui-field:hover,.ui-trigger:hover{border-color:var(--app-border-strong)}
input[type=number]:focus,.search-field:focus-within,.ui-field:focus-within,.ui-field.open,.ui-trigger:focus-visible,.ui-select.open .ui-trigger{outline:0;border-color:var(--app-accent);box-shadow:var(--ctl-focus-ring)}
input::placeholder{color:var(--app-text-muted);font-weight:400}
.search-field{gap:.4rem;padding:0 .25rem 0 var(--ctl-pad-x-md);color:var(--app-text-muted)}
.search-field:focus-within{color:var(--app-accent)}
.search-field input{flex:1;min-width:0;height:100%;border:0;outline:0;background:none;color:var(--app-text);font-size:var(--ctl-font-md);padding:0}
.search-field input::-webkit-search-cancel-button{cursor:pointer}

/* ---- CustomSelect trigger ---------------------------------------------- */
.ui-native{display:none!important}
.ui-select{position:relative;min-width:0}
.ui-trigger{justify-content:space-between;gap:.375rem;padding:0 var(--ctl-pad-x-md) 0 var(--ctl-pad-x-md);color:var(--app-text);font-weight:500;text-align:left;cursor:pointer}
.ui-trigger.placeholder{color:var(--app-text-secondary);font-weight:400}
.ui-trigger-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-trigger svg{color:var(--app-text-muted);flex-shrink:0;transition:transform .12s ease}
.ui-select.open .ui-trigger svg{transform:rotate(180deg)}

/* ---- DateField / TimeSelect -------------------------------------------- */
.ui-field{gap:0;padding:0;position:relative}
.ui-field input[type=text]{flex:1;min-width:0;height:100%;border:0;outline:0;background:none;padding:0 var(--ctl-pad-x-md);font-size:var(--ctl-font-md);font-weight:500;color:var(--app-text);font-variant-numeric:tabular-nums}
.ui-time input[type=text]{padding-left:0}
.ui-field-icon{display:flex;padding:0 .4rem 0 var(--ctl-pad-x-md);color:var(--app-text-muted)}
.ui-field:focus-within .ui-field-icon{color:var(--app-accent)}
.ui-weekday{font-size:12px;color:var(--app-text-muted);padding-right:.25rem}
.ui-field-button{display:flex;align-items:center;justify-content:center;align-self:stretch;padding:0 var(--ctl-pad-x-md);background:none;border:0;border-left:1px solid var(--app-border);border-radius:0 var(--ctl-radius-md) var(--ctl-radius-md) 0;color:var(--app-text-muted);transition:background .12s ease,color .12s ease}
.ui-field-button:hover,.ui-date.open .ui-field-button{background:var(--app-surface-muted);color:var(--app-accent)}
.ui-field-button:focus-visible{outline:0;box-shadow:var(--ctl-focus-ring)}

/* ---- Floating menus (one surface for selects, time list, calendar) ------ */
.ui-menu{position:fixed;z-index:1300;background:var(--app-surface);border:1px solid var(--app-border);border-radius:var(--ctl-menu-radius);box-shadow:var(--ctl-menu-shadow);animation:menuIn 90ms cubic-bezier(.16,1,.3,1);color:var(--app-text)}
.ui-menu.ui-menu-up{animation-name:menuUp}
@keyframes menuIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@keyframes menuUp{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.ui-select-menu{display:flex;flex-direction:column;width:max-content;max-width:min(var(--ctl-menu-max-w),calc(100vw - 1rem));max-height:min(var(--ctl-menu-max-h),var(--menu-available-h,var(--ctl-menu-max-h)));overflow:hidden}
.ui-time-menu{max-height:min(240px,var(--menu-available-h,240px))}
.ui-menu-search{display:flex;align-items:center;gap:.4rem;margin:var(--ctl-menu-pad);padding:0 .5rem;height:var(--ctl-h-sm);border:1px solid var(--app-border);border-radius:var(--ctl-radius-sm);background:var(--app-surface-muted);color:var(--app-text-muted);flex-shrink:0}
.ui-menu-search:focus-within{border-color:var(--app-accent);color:var(--app-accent)}
.ui-menu-search input{flex:1;min-width:0;border:0;outline:0;background:none;font-size:var(--ctl-font-sm);color:var(--app-text);height:100%}
.ui-options{flex:1 1 auto;min-height:0;overflow-y:auto;padding:var(--ctl-menu-pad);outline:0;scrollbar-width:thin}
.ui-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;min-height:var(--ctl-h-sm);padding:.4rem .5rem;border:0;background:transparent;border-radius:var(--ctl-radius-sm);font-size:var(--ctl-font-sm);color:var(--app-text-secondary);text-align:left}
.ui-option span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-option.active{background:var(--app-hover);color:var(--app-text)}
.ui-option.selected{background:var(--app-accent-soft);color:var(--app-accent-text);font-weight:500}
.ui-option.selected.active{background:color-mix(in srgb,var(--app-accent) 18%,var(--app-accent-soft))}
.ui-option svg{color:var(--app-accent);flex-shrink:0}
.ui-time-menu .ui-option{font-variant-numeric:tabular-nums}
.ui-empty{padding:1.25rem .75rem;text-align:center;color:var(--app-text-muted);font-size:var(--ctl-font-md)}

.ui-calendar{width:300px;max-width:calc(100vw - 1rem);padding:.75rem}
.ui-cal-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:.6rem;margin-bottom:.6rem;border-bottom:1px solid var(--app-border)}
.ui-cal-head strong{font-size:var(--ctl-font-md);font-weight:600}
.ui-cal-week,.ui-cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:.2rem}
.ui-cal-week span{text-align:center;font-size:.75rem;font-weight:600;color:var(--app-text-muted);padding:.2rem 0 .35rem}
.ui-day{aspect-ratio:1;min-height:32px;border:0;background:none;border-radius:var(--ctl-radius-sm);font-size:var(--ctl-font-md);color:var(--app-text-secondary);font-variant-numeric:tabular-nums;transition:background .12s ease}
.ui-day:hover{background:var(--app-hover);color:var(--app-text)}
.ui-day:focus-visible{outline:0;box-shadow:var(--ctl-focus-ring)}
.ui-day.today{color:var(--app-accent-text);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--app-accent) 45%,transparent)}
.ui-day.selected{background:var(--app-accent-solid);color:#fff;font-weight:600;box-shadow:none}
.ui-day.selected:hover{background:var(--app-accent-solid-hover)}
.ui-cal-days>.ui-day:is(:nth-child(7n),:nth-child(7n-1)):not(.selected){color:var(--app-text-muted)}
.ui-cal-foot{display:flex;gap:.5rem;margin-top:.6rem;padding-top:.6rem;border-top:1px solid var(--app-border)}

/* Phones: menus become a bottom sheet. */
.ui-sheet{left:0!important;right:0;bottom:0;top:auto!important;width:100%!important;max-width:none!important;min-width:0!important;max-height:70vh;border-radius:16px 16px 0 0;animation:sheetIn .18s ease-out;padding-bottom:max(.5rem,env(safe-area-inset-bottom))}
.ui-calendar.ui-sheet{padding:1rem 1rem max(1rem,env(safe-area-inset-bottom))}
.ui-sheet .ui-option{min-height:var(--ctl-h-lg);font-size:var(--ctl-font-md)}
.ui-sheet-backdrop{position:fixed;inset:0;z-index:1299;background:var(--app-modal-backdrop);animation:fade .15s ease-out}
@keyframes sheetIn{from{transform:translateY(100%)}to{transform:none}}
@keyframes fade{from{opacity:0}}

/* ---- Room picker -------------------------------------------------------- */
.room-picker{margin-top:14px;border:1px solid var(--app-border);border-radius:var(--ctl-radius-md);background:var(--app-surface-muted)}
.room-picker summary{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 .75rem;min-height:var(--ctl-h-md);font-size:var(--ctl-font-md);font-weight:500;color:var(--app-text-secondary);cursor:pointer;list-style:none;border-radius:var(--ctl-radius-md)}
.room-picker summary::-webkit-details-marker{display:none}
.room-picker summary>span:first-child{display:flex;align-items:center;gap:.4rem}
.room-picker summary>span:first-child:before{content:'';width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .12s ease;margin-right:2px}
.room-picker[open] summary>span:first-child:before{transform:rotate(45deg)}
.room-picker summary:hover{color:var(--app-text)}
.room-picker summary:focus-visible{outline:0;box-shadow:var(--ctl-focus-ring)}
.pick-actions{display:flex;gap:.25rem;padding:0 .4rem .25rem;border-bottom:1px solid var(--app-border)}
.room-list{max-height:240px;overflow:auto;padding:.25rem;scrollbar-width:thin}
.room-option{display:flex;align-items:center;gap:.6rem;margin:0;padding:.4rem .5rem;font-size:var(--ctl-font-sm);font-weight:400;color:var(--app-text);border-radius:var(--ctl-radius-sm);cursor:pointer}
.room-option:hover{background:var(--app-hover)}
.room-option small{margin-left:auto;color:var(--app-text-muted);font-size:12px}
.room-option input{appearance:none;flex-shrink:0;width:16px;height:16px;margin:0;border:1.5px solid var(--app-border-strong);border-radius:4px;background:var(--app-surface);display:grid;place-items:center;cursor:pointer;transition:background .12s ease,border-color .12s ease}
.room-option input:checked{background:var(--app-accent-solid);border-color:var(--app-accent-solid)}
.room-option input:checked:after{content:'';width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg)}
.room-option input:focus-visible{outline:0;box-shadow:var(--ctl-focus-ring)}
#apply{margin-top:16px}
.filter-foot{color:var(--app-text-muted);font-size:12px;margin:12px 0 0}

/* ---- Results ------------------------------------------------------------ */
.results{padding:24px;min-height:595px}
.results-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}
.results-heading h2{font-size:22px;letter-spacing:-.02em;margin-top:6px}
.day-nav{display:flex;gap:.4rem}
.message{background:var(--app-warning-soft);color:var(--app-warning-text);border-radius:var(--ctl-radius-md);padding:10px 14px;font-size:var(--ctl-font-md);margin-top:16px;animation:slideIn .16s ease-out}
.message.info{background:var(--app-accent-soft);color:var(--app-accent-text)}
@keyframes slideIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}
.stat{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;border:1px solid var(--app-border);border-radius:10px;background:var(--app-surface);text-align:left;color:var(--app-text);transition:border-color .12s ease,background .12s ease,box-shadow .12s ease}
.stat:hover{border-color:var(--app-border-strong);background:var(--app-surface-muted)}
.stat:focus-visible{outline:0;box-shadow:var(--ctl-focus-ring)}
.stat-label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--app-text-secondary)}
.stat strong{font-size:28px;font-weight:650;letter-spacing:-.02em;line-height:1.2;font-variant-numeric:tabular-nums}
.stat-hint{font-size:12px;color:var(--app-text-muted)}
.stat.active{background:var(--app-accent-soft);border-color:color-mix(in srgb,var(--app-accent) 55%,transparent);box-shadow:inset 3px 0 0 var(--app-accent)}
.stat.free.active{background:color-mix(in srgb,var(--free) 9%,var(--app-tint-base));border-color:color-mix(in srgb,var(--free) 50%,transparent);box-shadow:inset 3px 0 0 var(--free)}
.stat.busy.active{background:color-mix(in srgb,var(--busy) 9%,var(--app-tint-base));border-color:color-mix(in srgb,var(--busy) 50%,transparent);box-shadow:inset 3px 0 0 var(--busy)}
.stat.unknown.active{background:var(--app-hover);border-color:var(--app-border-strong);box-shadow:inset 3px 0 0 var(--unknown)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}
.dot.free{background:var(--free)}.dot.busy{background:var(--busy)}.dot.unknown{background:var(--unknown)}

.timeline-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.segmented{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--app-border);border-radius:var(--ctl-radius-md);background:var(--app-surface-muted)}
.segmented button{display:inline-flex;align-items:center;gap:.375rem;min-height:calc(var(--ctl-h-sm) - 6px);padding:0 .75rem;border:1px solid transparent;border-radius:calc(var(--ctl-radius-md) - 2px);background:transparent;color:var(--app-text-secondary);font-size:var(--ctl-font-md);font-weight:500;transition:background-color .12s ease,color .12s ease,box-shadow .12s ease}
.segmented button:hover{color:var(--app-text)}
.segmented button:focus-visible{outline:0;box-shadow:var(--ctl-focus-ring)}
.segmented button.selected{background:var(--app-surface);color:var(--app-text);border-color:var(--app-border);box-shadow:0 1px 2px rgba(16,24,40,.1)}
.tools{display:flex;gap:.25rem;align-items:center}
.tools>span{font-size:12px;color:var(--app-text-muted);margin-right:.5rem;font-variant-numeric:tabular-nums}
.legend{display:flex;gap:16px;margin:18px 0 12px;color:var(--app-text-muted);font-size:12px;flex-wrap:wrap}
.legend span{display:flex;align-items:center;gap:6px}
.window-key:before{content:'';width:12px;height:12px;border-radius:3px;background:color-mix(in srgb,var(--app-accent) 12%,transparent);border:1px dashed var(--app-accent)}

/* ---- Timeline ----------------------------------------------------------- */
.timeline-scroll{overflow:auto;max-height:640px;border:1px solid var(--app-border);border-radius:10px;scrollbar-width:thin}
.timeline{min-width:720px}
.timeline-header,.room-row{display:grid;grid-template-columns:150px minmax(400px,1fr) 124px}
.timeline-header{position:sticky;top:0;z-index:3;height:38px;align-items:center;background:var(--app-surface-muted);border-bottom:1px solid var(--app-border);color:var(--app-text-muted);font-size:11px;font-weight:600;letter-spacing:.04em}
.timeline-header>span{padding-left:14px}
.hours{position:relative;height:100%;display:flex;align-items:center}
.hours span{position:absolute;transform:translateX(-50%);font-variant-numeric:tabular-nums}
.hours span:first-child{transform:none;padding-left:4px}.hours span:last-child{transform:translateX(-100%);padding-right:4px}
.room-row{min-height:58px;border-top:1px solid var(--app-border);cursor:pointer;transition:background .12s ease}
.room-row:first-of-type{border-top:0}
.room-row:hover{background:var(--app-surface-muted)}
.room-row:focus-visible{outline:0;box-shadow:inset 0 0 0 2px var(--app-accent)}
.room-name{display:flex;flex-direction:column;justify-content:center;padding:10px 14px;font-size:14px;font-weight:600;border-right:1px solid var(--app-border)}
.room-name small{color:var(--app-text-muted);font-size:12px;font-weight:400;margin-top:2px}
.track{position:relative;min-height:56px;background:repeating-linear-gradient(to right,transparent 0,transparent calc(8.33333% - 1px),var(--app-border) calc(8.33333% - 1px),var(--app-border) 8.33333%)}
.track .selection{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--app-accent) 8%,transparent);border-left:1px dashed var(--app-accent);border-right:1px dashed var(--app-accent);pointer-events:none}
.track .baseline{position:absolute;left:0;right:0;top:16px;height:26px;border-radius:6px;background:color-mix(in srgb,var(--free) 16%,var(--app-tint-base))}
.track.unknown .baseline{background:repeating-linear-gradient(135deg,var(--app-hover),var(--app-hover) 5px,var(--app-surface-muted) 5px,var(--app-surface-muted) 10px)}
.event{position:absolute;top:16px;height:26px;z-index:1;min-width:2px;padding:0 6px;display:flex;align-items:center;border-radius:4px;border-left:3px solid var(--busy);background:var(--busy-soft);color:var(--busy-text);font-size:11px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.status-cell{display:flex;align-items:center;justify-content:center;padding:8px}
.badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap}
.badge.free{background:color-mix(in srgb,var(--free) 14%,var(--app-tint-base));color:var(--app-success-text)}
.badge.busy{background:var(--busy-soft);color:var(--busy-text)}
.badge.unknown{background:var(--app-hover);color:var(--app-text-muted)}
.badge .dot{width:6px;height:6px}

.list-table{width:100%;min-width:600px;border-collapse:collapse;font-size:var(--ctl-font-md)}
.list-table thead{position:sticky;top:0;z-index:3}
.list-table th{padding:10px 14px;text-align:left;background:var(--app-surface-muted);color:var(--app-text-muted);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--app-border)}
.list-table td{padding:12px 14px;border-top:1px solid var(--app-border);color:var(--app-text-secondary)}
.list-table tbody tr:first-child td{border-top:0}
.list-table tbody tr{cursor:pointer;transition:background .12s ease}
.list-table tbody tr:hover{background:var(--app-surface-muted)}
.list-table tbody tr:focus-visible{outline:0;box-shadow:inset 0 0 0 2px var(--app-accent)}
.list-table td:first-child{font-weight:600;color:var(--app-text)}
.list-table small{display:block;margin-top:2px;color:var(--app-text-muted);font-weight:400;font-size:12px}

.data-note{font-size:12px;color:var(--app-text-muted);margin:14px 0 0}
.empty{text-align:center;padding:48px 16px}
.empty>span{color:var(--app-border-strong)}
.empty h3{font-size:16px;margin-top:8px}
.empty p{color:var(--app-text-muted);font-size:var(--ctl-font-md)}
footer{display:flex;justify-content:space-between;gap:20px;margin:24px 0 32px;color:var(--app-text-muted);font-size:12px}

/* ---- Room detail dialog ------------------------------------------------- */
dialog{width:min(680px,95vw);padding:24px 28px;border:1px solid var(--app-border);border-radius:14px;background:var(--app-surface);color:var(--app-text);box-shadow:0 24px 48px rgba(15,23,42,.24);animation:dialogIn .18s ease-out}
@keyframes dialogIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
dialog::backdrop{background:var(--app-modal-backdrop);backdrop-filter:blur(2px)}
.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}
.dialog-head h2{font-size:26px;letter-spacing:-.02em;margin-top:6px}
.detail-meta{color:var(--app-text-secondary);font-size:var(--ctl-font-md);margin:0 0 16px}
.detail-section{font-size:14px;margin:22px 0 8px}
.booking{display:grid;grid-template-columns:110px 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--app-border);font-size:var(--ctl-font-md)}
.booking b{font-variant-numeric:tabular-nums;font-weight:600}
.booking a{text-decoration:none}.booking a:hover{text-decoration:underline}
.week-table{width:100%;border-collapse:collapse;margin:8px 0 20px;font-size:var(--ctl-font-md)}
.week-table th,.week-table td{padding:9px 8px;border-bottom:1px solid var(--app-border);text-align:left;vertical-align:top}
.week-table th{color:var(--app-text-muted);font-weight:500;white-space:nowrap}
.week-table td{font-variant-numeric:tabular-nums}
.week-table td:last-child{color:var(--app-text-muted);white-space:nowrap}

/* ---- Responsive --------------------------------------------------------- */
@media (max-width:1100px){.workspace{grid-template-columns:280px minmax(0,1fr);gap:16px}.filters{padding:16px}.results{padding:18px}.stats{grid-template-columns:repeat(2,1fr)}.intro-note{display:none}}
@media (max-width:760px){
  main{padding:0 16px}.topbar{padding:0 16px;height:58px;position:static}.topbar .chip{display:none}
  .intro{padding:24px 0 18px}.workspace{grid-template-columns:minmax(0,1fr)}
  .filters{position:static;max-height:none}
  .results{padding:16px}.results-heading{flex-wrap:wrap}.results-heading h2{font-size:20px}
  .stats{gap:8px}.stat{padding:12px}.stat strong{font-size:24px}.stat-hint{display:none}
  .tools>span{display:none}.legend{gap:12px}
  footer{flex-direction:column;gap:4px}
  dialog{padding:20px}.dialog-head h2{font-size:22px}
}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
