:root{
  --paper:#faf8f5; --card:#fff;
  --ink:#1c2321; --ink-2:#5a6360; --ink-3:#8b938f;
  --line:#e2ded7; --line-2:#cfc9bf;
  --accent:#2f6f66; --accent-soft:#e4efec; --accent-line:#9cc3bb;
  --warn:#a86a2a; --warn-soft:#f7ecdc; --warn-line:#e4cda8;
  --stop:#9a3f38; --stop-soft:#f6e4e2; --stop-line:#e5b9b4;
  --wall:#141a18;
  --radius:3px;
  --shadow:0 1px 2px rgba(28,35,33,.05), 0 8px 24px -12px rgba(28,35,33,.18);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--paper);color:var(--ink);
  font:15px/1.5 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased}
a{color:var(--accent)}
.wrap{max-width:1180px;margin:0 auto;padding:0 16px}
.vis-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------------- header ---------------- */
header{border-bottom:1px solid var(--line);background:var(--card)}
.bar{display:flex;align-items:center;gap:14px;min-height:60px;flex-wrap:wrap;padding:8px 0}
.mark{display:flex;align-items:baseline;gap:9px;font-weight:600;letter-spacing:-.015em;text-decoration:none;color:var(--ink)}
.mark .dot{width:9px;height:9px;border:1.5px solid var(--accent);border-radius:50%;display:block;transform:translateY(-1px)}
.mark b{font-size:16px}
.org{color:var(--ink-3);font-size:13px;padding-left:14px;border-left:1px solid var(--line)}
.spacer{flex:1}
nav.main{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
nav.main a{font-size:13.5px;text-decoration:none;color:var(--ink-2);padding:6px 10px;border-radius:var(--radius)}
nav.main a:hover{background:var(--accent-soft);color:var(--accent)}
nav.main a[aria-current="page"]{background:var(--accent-soft);color:var(--accent);font-weight:550}
.whoami{font-size:13px;color:var(--ink-3);display:flex;align-items:center;gap:9px}
.whoami b{color:var(--ink);font-weight:550}
.badge{font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border-radius:20px;font-weight:650;background:var(--accent-soft);color:#24564f}
.count{display:inline-block;min-width:17px;padding:1px 5px;border-radius:20px;background:var(--warn);color:#fff;font-size:11px;font-weight:650;text-align:center;margin-left:4px}

/* ---------------- layout ---------------- */
.grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:26px;align-items:start;padding:26px 0 56px}
@media (max-width:900px){.grid{grid-template-columns:minmax(0,1fr);gap:20px;padding:18px 0 40px}}
.single{padding:26px 0 56px;max-width:760px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.panel + .panel{margin-top:18px}
.panel-hd{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.panel-hd h2{margin:0;font-size:14px;font-weight:600;letter-spacing:-.01em}
.panel-hd .sub{font-size:12.5px;color:var(--ink-3)}
.panel-bd{padding:16px}
h1{font-size:22px;letter-spacing:-.02em;margin:0 0 4px}
.lede{color:var(--ink-2);font-size:14px;margin:0 0 18px}

/* ---------------- date strip ---------------- */
.days{display:flex;gap:6px;overflow-x:auto;padding:12px 16px;border-bottom:1px solid var(--line)}
.day{flex:0 0 auto;min-width:58px;text-align:center;padding:7px 9px;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--card);color:var(--ink-2);line-height:1.25;text-decoration:none}
.day:hover{border-color:var(--line-2)}
.day .dw{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3)}
.day .dn{display:block;font-size:15px;font-weight:600;color:var(--ink)}
.day[aria-current="date"]{background:var(--accent);border-color:var(--accent)}
.day[aria-current="date"] .dw,.day[aria-current="date"] .dn{color:#fff}

/* ---------------- floor plans ---------------- */
.floors{display:grid;grid-template-columns:auto minmax(0,1fr);gap:22px;align-items:start}
.stack{display:flex;flex-direction:column;gap:18px}
.floor-lb{display:flex;align-items:baseline;gap:8px;margin:0 0 7px;font-size:11px;
  text-transform:uppercase;letter-spacing:.09em;color:var(--ink-3)}
.floor-lb i{font-style:normal;color:var(--line-2)}
svg.plan{display:block;width:100%;height:auto;overflow:visible}
.plan-sm{max-width:116px}
.plan-md{max-width:270px}
@media (max-width:760px){
  .floors{grid-template-columns:minmax(0,1fr)}
  .floors > .floor{order:-1}
  .floors .stack{flex-direction:row;gap:16px;align-items:flex-start}
  .floors .stack > .floor{flex:1;min-width:0}
  .plan-sm,.plan-md{max-width:100%}
}
.plan .shell{fill:none;stroke:var(--wall);stroke-width:11}
.plan .win{stroke:#fff;stroke-width:7}
.plan .div{stroke:var(--wall);stroke-width:9;stroke-linecap:square}
.plan .fitting{fill:var(--wall)}
.plan .svc{fill:#dfeae7;stroke:var(--wall);stroke-width:4}
.plan .svc-t{fill:var(--ink-2);font-size:13px;letter-spacing:.08em}
.plan .circ{fill:#f1ede7}
.plan .circ-t{fill:var(--ink-3);font-size:13px;letter-spacing:.08em}
.plan .stair{fill:none;stroke:var(--line-2);stroke-width:3}

.room{cursor:pointer}
.room .hit{fill:#fff;stroke:var(--line-2);stroke-width:2;transition:fill .12s,stroke .12s}
.room .num{font-size:30px;font-weight:650;fill:var(--ink);text-anchor:middle;pointer-events:none}
.room .cap{font-size:12px;fill:var(--ink-3);text-anchor:middle;letter-spacing:.07em;pointer-events:none}
.room .free{font-size:12.5px;fill:var(--ink-3);text-anchor:middle;pointer-events:none}
.room:hover .hit{fill:var(--accent-soft);stroke:var(--accent-line)}
.room[data-state="busy"] .hit{fill:#f7f1e7;stroke:#e0cfb4}
.room[data-state="busy"] .num{fill:var(--warn)}
.room[data-state="full"] .hit{fill:#f3ece6;stroke:#ddcbb8}
.room[data-state="full"] .num{fill:var(--stop)}
.room[data-sel="1"] .hit{fill:var(--accent-soft);stroke:var(--accent);stroke-width:4}
.room[data-sel="1"] .num{fill:var(--accent)}
.room:focus{outline:none}
.room:focus-visible .hit{stroke:var(--accent);stroke-width:4}
.room.out{cursor:not-allowed}
.room.out .hit,.room.out:hover .hit{fill:url(#hatch);stroke:var(--line-2)}
.room.out .num,.room.out .cap,.room.out .free{fill:var(--ink-3)}

.legend{display:flex;flex-wrap:wrap;gap:14px;padding:12px 16px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-2)}
.legend span{display:flex;align-items:center;gap:7px}
.sw{width:13px;height:13px;border-radius:2px;border:1.5px solid var(--line-2);display:block}
.sw.free{background:#fff}
.sw.busy{background:#f7f1e7;border-color:#e0cfb4}
.sw.full{background:#f3ece6;border-color:#ddcbb8}
.sw.out{background:repeating-linear-gradient(45deg,#efebe4 0 3px,#e2ded7 3px 6px)}

/* ---------------- forms & buttons ---------------- */
label.field{display:block;margin-bottom:13px}
label.field span{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:5px}
input[type=email],input[type=password],input[type=text],select,textarea{
  width:100%;font:inherit;font-size:14px;color:var(--ink);background:var(--card);
  border:1px solid var(--line-2);border-radius:var(--radius);padding:9px 10px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-line);outline-offset:-1px;border-color:var(--accent)}
.btn{font:inherit;font-size:14px;font-weight:550;padding:10px 15px;cursor:pointer;
  background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:var(--radius);text-decoration:none;display:inline-block;text-align:center}
.btn:hover:not(:disabled){background:#265a53}
.btn:disabled{background:#eceae6;color:var(--ink-3);border-color:var(--line);cursor:not-allowed}
.btn.block{width:100%}
.btn.ghost{background:var(--card);color:var(--ink-2);border-color:var(--line-2)}
.btn.ghost:hover{background:var(--paper);color:var(--ink)}
.btn.danger{background:var(--card);color:var(--stop);border-color:var(--stop-line)}
.btn.danger:hover{background:var(--stop-soft)}
.btn.sm{font-size:13px;padding:6px 11px}

.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.slot{font:inherit;font-size:13px;padding:9px 4px;text-align:center;cursor:pointer;
  border:1px solid var(--line);border-radius:var(--radius);background:var(--card);color:var(--ink)}
.slot:hover:not(:disabled){border-color:var(--accent-line);background:var(--accent-soft)}
.slot[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
.slot:disabled{background:#f6f4f1;color:var(--ink-3);cursor:not-allowed;text-decoration:line-through}

/* ---------------- notes ---------------- */
.note{font-size:13px;line-height:1.55;padding:11px 13px;border-radius:var(--radius);margin:0 0 13px}
.note.ok{background:var(--accent-soft);color:#24564f;border:1px solid var(--accent-line)}
.note.warn{background:var(--warn-soft);color:#7d4e1c;border:1px solid var(--warn-line)}
.note.stop{background:var(--stop-soft);color:#7d322c;border:1px solid var(--stop-line)}
.note.plain{background:var(--paper);color:var(--ink-2);border:1px solid var(--line)}
.note b{font-weight:650}
.note:last-child{margin-bottom:0}

/* ---------------- lists & tables ---------------- */
.rows{margin:0;padding:0;list-style:none}
.rows li{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line)}
.rows li:last-child{border-bottom:0}
.rows .grow{flex:1;min-width:0}
.rows .grow b{display:block;font-weight:550}
.rows .grow span{font-size:12.5px;color:var(--ink-3)}
.rows .acts{display:flex;gap:6px;flex-shrink:0}
.pill{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;padding:3px 7px;border-radius:20px;font-weight:650;white-space:nowrap}
.pill.ok,.pill.approved{background:var(--accent-soft);color:#24564f}
.pill.soon,.pill.pending{background:var(--warn-soft);color:#7d4e1c}
.pill.no,.pill.rejected{background:var(--stop-soft);color:#7d322c}
.pill.cancelled{background:#efece8;color:var(--ink-3)}
.empty{padding:26px 16px;text-align:center;color:var(--ink-3);font-size:13.5px}

footer{border-top:1px solid var(--line);padding:18px 0 34px;font-size:12px;color:var(--ink-3);line-height:1.6}
.cred{font-size:12.5px;color:var(--ink-2);background:var(--paper);border:1px solid var(--line);
  border-radius:var(--radius);padding:11px 13px;margin-top:16px;line-height:1.7}
.cred code{background:var(--card);border:1px solid var(--line);border-radius:2px;padding:1px 5px;font-size:12px}
