:root{color-scheme:light;--ink: #14202b;--muted: #5c6b76;--paper: #f4f6f5;--card: #ffffff;--line: #d7dee2;--navy: #14202b;--teal: #0d6a45;--teal-dark: #0a5236;--amber: #8a5a00;--amber-bg: #fff4dc;--blue: #1d4e89;--blue-bg: #e7f1fb;--out: #0d6a45;--out-bg: #e5f4ec;--overdue: #9d2430;--overdue-bg: #fdecee;--returned: #5c6b7a;--returned-bg: #eef2f5;--rejected: #8a3d55;--rejected-bg: #f8e8ee;--selected-bg: #f3fbf8;--logo-pad: #ffffff;--shadow: 0 1px 2px rgba(20, 32, 43, .05);font-family:Manrope,Segoe UI,sans-serif;color:var(--ink);background:var(--paper)}[data-theme=dark]{color-scheme:dark;--ink: #e7eef3;--muted: #9aabb6;--paper: #0f151a;--card: #172129;--line: #2c3944;--navy: #1b2730;--teal: #2f9d6a;--teal-dark: #3fb57a;--amber: #e0b35a;--amber-bg: #3a2f18;--blue: #7eb0e0;--blue-bg: #1a2d40;--out: #2f9d6a;--out-bg: #173328;--overdue: #ef6b75;--overdue-bg: #3a1c22;--returned: #9aabb6;--returned-bg: #222c35;--rejected: #d28aa0;--rejected-bg: #3a2230;--selected-bg: #173328;--logo-pad: #ffffff;--shadow: 0 1px 2px rgba(0, 0, 0, .35)}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}code{font-family:Cascadia Code,Consolas,monospace;font-size:.92em}.app{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:28px 0 48px}.header{display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;margin-bottom:16px}.brand{display:flex;align-items:center;gap:12px}.brand-logo{display:block;height:44px;width:auto;max-width:min(220px,55vw);object-fit:contain;background:var(--logo-pad);border-radius:6px;padding:4px 8px}.brand p{color:var(--muted);font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;margin:0}.gate-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.gate-logo{display:block;height:56px;width:auto;max-width:min(280px,100%);object-fit:contain;background:var(--logo-pad);border-radius:6px;padding:4px 8px}.nav,.segmented{display:flex;flex-wrap:wrap;padding:3px;border-radius:8px;background:var(--card);border:1px solid var(--line)}.nav button,.segmented button{border:0;background:transparent;border-radius:5px;padding:8px 14px}.nav button.is-on,.segmented button.is-on{background:var(--navy);color:#fff}.who{margin-left:auto;display:flex;align-items:center;gap:10px}.theme-toggle{width:36px;height:36px;padding:0;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);display:grid;place-items:center;flex:0 0 auto}.theme-toggle:hover{border-color:var(--teal);color:var(--teal)}.theme-toggle svg{width:18px;height:18px;display:block}.role{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:4px;padding:4px 8px}.summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}.summary button{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:flex;align-items:baseline;gap:10px;text-align:left;box-shadow:var(--shadow)}.summary button:hover{border-color:var(--teal)}.summary button.is-on{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal);background:var(--selected-bg)}.summary strong{font-size:1.45rem;letter-spacing:-.04em;color:var(--teal-dark)}.summary .is-alert strong{color:var(--overdue)}.tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}.search{flex:1 1 220px}.search input{width:100%}.tools-note{margin:0}.guide{margin-bottom:12px}.guide ol{margin:10px 0;padding-left:1.2rem;display:grid;gap:8px}.guide p{color:var(--muted)}.hint{margin-top:8px;color:var(--ink);font-size:.86rem;line-height:1.4}.unit-state{display:block;margin-top:4px;color:var(--ink);font-size:.86rem}.unit-state.is-alert{color:var(--overdue);font-weight:600}.custody-board h3{margin:16px 0 0;font-size:.95rem}.custody-board .log-filters+h3{margin-top:16px}.log-filters{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.custody-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}.custody-list .meta{display:block;font-family:Consolas,monospace;color:var(--muted)}.custody-list li{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:10px 12px}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.summary span{color:var(--muted);font-size:.82rem}.role-rep{background:var(--blue-bg);color:var(--blue)}.role-manager{background:var(--out-bg);color:var(--teal-dark)}.role-admin{background:var(--navy);color:#fff}.layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;box-shadow:var(--shadow)}.aside{display:flex;flex-direction:column;gap:16px;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto}.calendar-toolbar,.section-head,.booking-card header,.dialog-actions,.card-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.calendar-toolbar h2,.section-head h2,.card h2{font-size:1.15rem}.card h3{margin-top:14px;font-size:.95rem}.toolbar-actions,.card-actions{display:flex;gap:8px;flex-wrap:wrap}.legend{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.weekdays{margin-bottom:6px;color:var(--muted);font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.weekdays span{padding-left:6px}.day{min-height:108px;border:1px solid var(--line);border-radius:6px;background:var(--card);padding:6px;text-align:left;display:flex;flex-direction:column;gap:4px}.day.is-outside{opacity:.45}.day.is-today .day-number{background:var(--teal);color:#fff}.day.is-selected{border-color:var(--teal);background:var(--selected-bg);box-shadow:inset 0 0 0 1px var(--teal)}.day-number{width:1.6rem;height:1.6rem;display:grid;place-items:center;border-radius:999px;font-size:.8rem;font-weight:700}.day-chips{display:flex;flex-direction:column;gap:3px;min-width:0}.chip{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:4px;padding:2px 6px;font-size:.72rem;font-weight:650;line-height:1.4;border-left:3px solid currentColor}.chip-pending{background:var(--amber-bg);color:var(--amber)}.chip-approved{background:var(--blue-bg);color:var(--blue)}.chip-out{background:var(--out-bg);color:var(--out)}.chip-overdue{background:var(--overdue-bg);color:var(--overdue)}.chip-returned{background:var(--returned-bg);color:var(--returned)}.chip-rejected,.chip-cancelled{background:var(--rejected-bg);color:var(--rejected)}.more{color:var(--muted);font-size:.72rem;padding-left:4px}.stack{display:flex;flex-direction:column;gap:10px;margin-top:12px}.booking-card{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--card)}.booking-card p{margin-top:4px}.meta,.quiet,.empty{color:var(--muted);font-size:.88rem}.notes{color:var(--ink);font-size:.88rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.primary,.secondary,.ghost,.danger{border-radius:6px;padding:8px 14px;border:1px solid transparent;font-weight:650}.primary{background:var(--teal);color:#fff}.primary:hover{background:var(--teal-dark)}.secondary{background:var(--navy);color:#fff}.ghost{background:var(--card);border-color:var(--line)}.danger{background:var(--card);color:var(--overdue);border-color:var(--overdue)}button:disabled{opacity:.55;cursor:not-allowed}.banner{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;border-radius:8px;padding:12px 14px;margin-bottom:16px}.banner.preview{background:#fff8ea;border:1px solid #f0ddb0}.banner.error{background:var(--overdue-bg);border:1px solid #f3c2c8}.gate{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,460px);gap:28px;align-items:center;width:min(980px,calc(100% - 32px));margin:0 auto}.gate-copy h1{font-size:clamp(2rem,4vw,3.2rem);letter-spacing:-.04em;line-height:1.05;margin:8px 0 12px}.gate-copy p{color:var(--muted);font-size:1.05rem;max-width:38ch}.eyebrow{color:var(--teal);font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:.78rem}.gate-form,.setup-card{display:flex;flex-direction:column;gap:12px}.setup-card h2{margin-bottom:4px}label{display:flex;flex-direction:column;gap:6px;font-size:.88rem;font-weight:650}input,select,textarea{border:1px solid var(--line);border-radius:6px;padding:10px 12px;background:var(--card);font-weight:500}textarea{resize:vertical}.date-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-error{color:var(--overdue);font-size:.88rem}.form-note{color:var(--amber);font-size:.88rem}.steps{margin:0;padding-left:1.2rem;color:var(--ink);display:grid;gap:8px}.sql{margin:0;padding:12px;border-radius:12px;background:var(--navy);color:#e7f6f2;overflow:auto;font-size:.82rem}.equipment-form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;margin:14px 0}.people-form{display:grid;grid-template-columns:1.2fr 1.4fr 1fr .8fr auto;gap:10px;align-items:end;margin:14px 0}.equipment-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px}.equipment-list li{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:10px 12px}.equipment-list .meta{display:block;font-family:Consolas,monospace}.backdrop{position:fixed;inset:0;background:#14233273;display:grid;place-items:center;padding:20px;z-index:20}.dialog{width:min(480px,100%);max-height:calc(100vh - 40px);overflow:auto;display:flex;flex-direction:column;gap:12px}.dialog h2{margin-bottom:4px}.loading{min-height:100vh;display:grid;place-items:center;color:var(--muted)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(12,110,98,.35);outline-offset:2px}@media(max-width:960px){.layout,.gate,.equipment-form,.people-form{grid-template-columns:1fr}.aside{position:static;max-height:none}.who{margin-left:0}}@media(max-width:720px){.app{width:calc(100% - 20px);padding:12px 0 32px}.header{gap:10px;margin-bottom:10px}.layout{display:flex;flex-direction:column}.aside{position:static;max-height:none}.summary{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}.tools{margin-bottom:10px}.search{flex-basis:100%}.summary button{flex-direction:column;align-items:flex-start;gap:2px;padding:8px}.summary strong{font-size:1.15rem}.summary span{font-size:.68rem;line-height:1.2}.calendar-card{padding:12px}.legend{margin:8px 0}.weekdays,.month-grid{gap:3px}.weekdays{font-size:.62rem;letter-spacing:0;text-align:center}.weekdays span{padding-left:0}.day{min-height:0;aspect-ratio:1;padding:2px;align-items:center;gap:2px;border-radius:8px}.day-number{width:1.35rem;height:1.35rem;font-size:.72rem}.day-chips{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:3px}.day-chips .chip{width:6px;height:6px;min-height:6px;padding:0;border:0;border-radius:999px;font-size:0;line-height:0}.day-chips .more{display:none}.custody-list li{flex-direction:column;align-items:stretch}.custody-list .card-actions{justify-content:flex-start}}
