:root {
  --ink:#102532;--muted:#617783;--line:#d5e3eb;--line-strong:#b7cedb;--paper:#fff;
  --canvas:#f3f9fc;--soft:#edf7fc;--accent:#25B5FF;--accent-dark:#079be8;
  --accent-pale:#e5f6ff;--danger:#b52b23;--danger-pale:#fff0ed;--warning:#9b5b12;
  --success:#168fd5;--success-pale:#e5f6ff;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--ink);background:var(--canvas);font-synthesis:none;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-size:14px;line-height:1.45}button,input{font:inherit}button{touch-action:manipulation}.hidden{display:none!important}
.topbar{height:68px;padding:0 max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;justify-content:flex-start;border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:40}.topbar:has(.user-menu.hidden){display:none}.user-menu strong,.user-menu small{display:block}.user-menu small{color:var(--muted);font-size:11px}.user-menu{display:flex;align-items:center;gap:16px;text-align:left}
main{width:min(1180px,calc(100% - 48px));margin:0 auto;padding:48px 0 72px}.eyebrow{margin-bottom:8px;color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}h1,h2,p{margin-top:0}h1{margin-bottom:9px;font-size:clamp(30px,4vw,48px);line-height:1.03;letter-spacing:-.045em;font-weight:720}h2{margin-bottom:0;font-size:21px;letter-spacing:-.025em}.page-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:30px}.page-heading p{margin:0;color:var(--muted);font-size:15px}.status{display:flex;align-items:center;gap:9px;padding:9px 12px;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:12px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 0 4px rgb(22 113 73/.11)}
.login-panel{width:min(430px,100%);margin:7vh auto 0;padding:36px;border:1px solid var(--line);background:var(--paper);box-shadow:8px 8px 0 #dfe5df}.login-panel>p{margin-bottom:27px;color:var(--muted)}.form-notice{margin:-10px 0 20px;padding:12px 13px;color:#7d1814;background:var(--danger-pale);border-left:5px solid var(--danger);font-weight:650}.form-stack{display:grid;gap:10px}.form-stack+form{margin-top:22px;padding-top:22px;border-top:1px solid var(--line)}label,.field-label{color:#3d4942;font-size:12px;font-weight:700}.form-heading{display:flex;justify-content:space-between;align-items:center}
input{width:100%;height:46px;padding:9px 12px;color:var(--ink);background:#fff;border:1px solid var(--line-strong);border-radius:2px;outline:none;transition:border-color 140ms,box-shadow 140ms}input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgb(32 106 70/.13)}.otp{font-size:20px;letter-spacing:.22em;font-variant-numeric:tabular-nums}
.button{min-height:42px;padding:8px 15px;border:1px solid transparent;border-radius:2px;font-weight:720;cursor:pointer;transition:background 140ms,border-color 140ms,color 140ms,transform 100ms}.button:active{transform:translateY(1px)}.button:focus-visible,.icon-button:focus-visible,.text-button:focus-visible,.day-arrow:focus-visible,.day-chip:focus-visible,.slot-action:focus-visible,.notice-close:focus-visible{outline:3px solid rgb(32 106 70/.2);outline-offset:2px}.button:disabled{opacity:.5;cursor:wait}.primary{color:#fff;background:var(--accent)}.primary:hover{background:var(--accent-dark)}.secondary{color:var(--ink);background:#fff;border-color:var(--line-strong)}.secondary:hover,.ghost:hover{background:var(--soft)}.ghost{min-height:34px;color:var(--muted);background:transparent;border-color:var(--line)}.danger{color:#fff;background:var(--danger)}.text-button{padding:0;color:var(--accent);background:none;border:0;font-size:12px;font-weight:700;cursor:pointer}.icon-button{width:38px;height:38px;color:var(--muted);background:transparent;border:1px solid var(--line);border-radius:2px;font-size:22px;cursor:pointer}
.notice{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:14px;margin-bottom:22px;padding:19px 20px;color:#104e33;background:var(--success-pale);border:1px solid #9fd3b4;border-left:6px solid var(--success);box-shadow:4px 4px 0 rgb(22 113 73/.1)}.notice.error{color:#7d1814;background:var(--danger-pale);border-color:#edaaa4;border-left-color:var(--danger);box-shadow:4px 4px 0 rgb(181 43 35/.09)}.notice-icon{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;color:#fff;background:var(--success);font-weight:900}.notice-icon::after{content:'✓'}.notice.loading .notice-icon{background:transparent}.notice.loading .notice-icon::after{content:'';width:18px;height:18px;border:3px solid rgb(37 181 255/.28);border-top-color:var(--accent-dark);border-radius:50%;animation:notice-spin .75s linear infinite}.notice.loading .notice-close{visibility:hidden}.notice.error .notice-icon{background:var(--danger)}.notice.error .notice-icon::after{content:'!'}.notice strong{display:block;font-size:17px;letter-spacing:-.01em}.notice p{margin:2px 0 0;color:inherit}.notice-close{padding:0 4px;border:0;background:transparent;color:currentColor;font-size:22px;cursor:pointer}
.schedule{background:var(--paper);border:1px solid var(--line-strong);box-shadow:8px 8px 0 #dfe5df}.schedule-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 26px;border-bottom:1px solid var(--line)}.date-control{display:flex;align-items:center;gap:17px}.day-arrow{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line-strong);border-radius:50%;background:#fff;color:var(--ink);cursor:pointer;font-size:17px}.day-arrow:hover{background:var(--soft)}.active-date{min-width:220px}.active-date span{display:block;margin-bottom:2px;color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.active-date h2{font-size:24px}
.day-strip{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--line)}.day-chip{min-width:0;padding:15px 6px;background:#fafbfa;border:0;border-right:1px solid var(--line);color:var(--muted);cursor:pointer}.day-chip:last-child{border-right:0}.day-chip span,.day-chip strong{display:block}.day-chip span{font-size:10px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.day-chip strong{margin-top:3px;color:var(--ink);font-size:18px}.day-chip:hover{background:var(--soft)}.day-chip.active{background:var(--accent);color:#d8ebdf}.day-chip.active strong{color:#fff}.day-chip.today:not(.active) strong{color:var(--accent)}
.availability-key{display:flex;flex-wrap:wrap;gap:20px;padding:13px 26px;color:var(--muted);border-bottom:1px solid var(--line);font-size:11px}.availability-key span{display:flex;align-items:center;gap:7px}.availability-key i{display:inline-block;width:11px;height:11px;border:1px solid var(--line-strong)}.key-open{background:#fff}.key-busy{background:#d8ddd9}.key-yours{background:var(--accent)}.key-maintenance{background:repeating-linear-gradient(135deg,#ffd27a,#ffd27a 3px,#f0b84a 3px,#f0b84a 6px);border-color:#c07813}.key-past{background:repeating-linear-gradient(135deg,#fff,#fff 3px,#dfe3e0 3px,#dfe3e0 5px)}
.timeline-head,.time-row{display:grid;grid-template-columns:112px 1fr 110px;align-items:center}.timeline-head{min-height:38px;padding:0 26px;color:var(--muted);background:#f7f9f7;border-bottom:1px solid var(--line);font-size:10px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.timeline{position:relative}.time-row{min-height:48px;padding:0 26px;border-bottom:1px solid #e7ebe8}.time-row:last-child{border-bottom:0}.time-label{color:#667169;font-size:12px;font-variant-numeric:tabular-nums}.slot-status{align-self:stretch;display:flex;align-items:center;gap:10px;padding-left:16px;border-left:3px solid #cad3cc;color:#4f5d54}.slot-status::before{content:'';width:7px;height:7px;border-radius:50%;background:#8e9a92}.slot-action{justify-self:end;padding:6px 0;border:0;background:transparent;color:var(--accent);font-size:12px;font-weight:800;cursor:pointer}.slot-action:hover{text-decoration:underline}.time-row.unavailable{background:#edf0ee}.time-row.unavailable .slot-status{border-left-color:#89958d;color:#4c5650}.time-row.unavailable .slot-status::before{background:#68736c}.time-row.mine{background:var(--accent-pale)}.time-row.mine .slot-status{border-left-color:var(--accent);color:var(--accent-dark);font-weight:700}.time-row.mine .slot-status::before{background:var(--accent)}.time-row.past{background:repeating-linear-gradient(135deg,#fafbfa,#fafbfa 7px,#f1f3f1 7px,#f1f3f1 10px);color:#9aa29d}.time-row.past .slot-status{border-left-color:#d8ddd9;color:#929b95}.time-row.past .slot-status::before{background:#b9c1bc}.current-time{position:absolute;left:112px;right:26px;height:2px;background:#d3493e;z-index:2;pointer-events:none}.current-time::before{content:'';position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:#d3493e}
.backdrop{position:fixed;inset:0;z-index:60;background:rgb(19 29 23/.38);animation:fade-in 160ms ease-out}.booking-panel{position:fixed;top:0;right:0;z-index:70;width:min(430px,100%);height:100dvh;padding:30px;background:#fff;border-left:1px solid var(--line-strong);box-shadow:-20px 0 55px rgb(15 24 18/.16);transform:translateX(102%);transition:transform 220ms cubic-bezier(.2,.75,.25,1);display:flex;flex-direction:column}.booking-panel.open{transform:none}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:24px;border-bottom:1px solid var(--line)}.selection-summary{padding:26px 0;border-bottom:1px solid var(--line)}.selection-summary strong,.selection-summary span{display:block}.selection-summary strong{font-size:22px;letter-spacing:-.03em}.selection-summary span{margin-top:3px;color:var(--muted)}#selection-time{margin-top:12px;color:var(--ink);font-size:18px;font-weight:700}.field-group{padding-top:24px}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}.segmented button{min-height:42px;color:#424f47;background:var(--soft);border:1px solid transparent;border-radius:2px;cursor:pointer}.segmented button:hover{border-color:var(--line-strong)}.segmented button.active{color:#fff;background:var(--ink)}.segmented button:disabled{opacity:.35;cursor:not-allowed}.inline-error{margin-top:16px;padding:13px;color:#821b16;background:var(--danger-pale);border:1px solid #edaaa4;border-left:5px solid var(--danger);font-weight:650}.panel-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:auto;padding-top:24px}
dialog{width:min(430px,calc(100% - 32px));padding:0;border:1px solid var(--line-strong);border-radius:2px;box-shadow:12px 12px 0 rgb(23 33 27/.17)}dialog::backdrop{background:rgb(16 24 19/.4)}.dialog-copy{padding:26px}.dialog-copy p{margin:7px 0 0;color:var(--muted)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding:15px 24px;background:#f3f5f3;border-top:1px solid var(--line)}
@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes notice-spin{to{transform:rotate(360deg)}}
@media(max-width:700px){.topbar{height:60px;padding:0 16px}.user-menu>span{display:none}main{width:100%;padding:27px 0 48px}.workspace .page-heading{padding:0 17px}.page-heading{align-items:flex-start}.status{display:none}.schedule{border-left:0;border-right:0;box-shadow:none}.schedule-header{padding:18px 16px}.active-date{min-width:0}.active-date h2{font-size:19px}.date-control{gap:10px}.day-arrow{width:36px;height:36px}.schedule-header>.button{display:none}.day-strip{overflow-x:auto;grid-template-columns:repeat(7,minmax(62px,1fr))}.availability-key{gap:11px;padding:11px 16px}.timeline-head,.time-row{grid-template-columns:74px 1fr 62px;padding-left:16px;padding-right:12px}.timeline-head{font-size:9px}.slot-status{padding-left:10px}.current-time{left:74px;right:12px}.booking-panel{top:auto;bottom:0;width:100%;height:auto;max-height:91dvh;padding:22px;border-top:1px solid var(--line-strong);border-left:0;transform:translateY(102%)}.segmented{grid-template-columns:repeat(4,1fr)}.segmented button{padding:5px;font-size:12px}.login-panel{margin:4vh 16px 0;width:auto;padding:25px}.notice{margin:0 16px 20px}.slot-action{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Reservation confirmation */
.reserve-button{box-shadow:6px 6px 0 #b7cedb;transform:translate(-2px,-2px)}
.reserve-button:hover:not(:disabled){box-shadow:8px 8px 0 #a9c5d4;transform:translate(-3px,-3px)}
.reserve-button:active:not(:disabled){box-shadow:2px 2px 0 #a9c5d4;transform:translate(1px,1px)}
.reserve-button:disabled{box-shadow:3px 3px 0 #d5e3eb;transform:none}
.confirm-dialog{width:min(570px,calc(100% - 32px))}.confirm-dialog .dialog-copy{padding:30px}.confirm-dialog .eyebrow{margin-bottom:6px}.configuration-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:24px 0 0}.configuration-summary>div{min-width:0;padding:15px 16px;border:1px solid var(--line);background:var(--soft)}.configuration-summary .configuration-time{grid-column:1/-1;background:#fff;border-color:var(--line-strong)}.configuration-summary dt{margin-bottom:4px;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.configuration-summary dd{margin:0;color:var(--ink);font-size:15px;font-weight:750;font-variant-numeric:tabular-nums}.configuration-summary dd small{display:block;margin-top:2px;color:var(--muted);font-size:11px;font-weight:600}.confirm-dialog .dialog-actions{padding:17px 30px}.confirm-dialog .dialog-actions .primary{min-width:180px}
@media(max-width:560px){.configuration-summary{grid-template-columns:1fr}.configuration-summary .configuration-time{grid-column:auto}.confirm-dialog .dialog-copy{padding:24px 20px}.confirm-dialog .dialog-actions{display:grid;grid-template-columns:1fr 1fr;padding:14px 20px}.confirm-dialog .dialog-actions .primary{min-width:0}}

/* Reservation composer and horizontal availability timeline */
.booking-composer{margin-bottom:24px;padding:25px 26px;background:var(--paper);border:1px solid var(--line-strong);box-shadow:8px 8px 0 #dfe5df}.composer-intro{display:flex;align-items:baseline;gap:12px;margin-bottom:20px}.composer-intro .eyebrow{margin:0}.composer-intro p{margin:0 0 0 auto;color:var(--muted)}.composer-fields{display:grid;grid-template-columns:minmax(150px,1fr) minmax(180px,1fr) minmax(210px,1.4fr) auto;gap:14px;align-items:end}.composer-field>span{display:block;margin-bottom:7px;color:#3d4942;font-size:12px;font-weight:700}.composer-field input{height:48px;font-size:17px;font-weight:700}.duration-stepper{height:48px;display:grid;grid-template-columns:46px 1fr 46px;border:1px solid var(--line-strong);background:#fff}.duration-stepper button{border:0;background:var(--soft);color:var(--accent);font-size:22px;cursor:pointer}.duration-stepper button:hover{background:var(--accent-pale)}.duration-stepper button:disabled{color:#aab2ad;cursor:not-allowed}.duration-stepper output{display:grid;place-items:center;border-left:1px solid var(--line);border-right:1px solid var(--line);font-size:15px;font-weight:750;font-variant-numeric:tabular-nums}.composer-summary{height:48px;display:flex;flex-direction:column;justify-content:center;padding-left:14px;border-left:3px solid var(--accent)}.composer-summary span,.composer-summary small{color:var(--muted);font-size:10px}.composer-summary strong{line-height:1.25;font-size:15px;font-variant-numeric:tabular-nums}.composer-summary.conflict{border-left-color:var(--danger)}.composer-summary.conflict small{color:var(--danger);font-weight:700}.reserve-button{height:48px;padding-inline:24px}.booking-composer>.inline-error{margin-bottom:0}.my-reservations{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.my-reservations>span{align-self:center;margin-right:4px;color:var(--muted);font-size:11px;font-weight:750;text-transform:uppercase}.reservation-pill{padding:7px 10px;border:1px solid #a7cdb7;background:var(--accent-pale);color:var(--accent-dark);font-size:11px;font-weight:700;cursor:pointer}
.horizontal-calendar{overflow-x:auto;overscroll-behavior-x:contain;padding:26px 26px 20px;scrollbar-color:var(--line-strong) transparent}.timeline{position:relative;width:1536px;height:190px;min-width:100%;border:1px solid var(--line-strong);background:#fff;overflow:hidden}.timeline-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(96,1fr)}.quarter-cell{border-right:1px solid #edf0ee}.quarter-cell.hour{border-right-color:#cbd3cd}.hour-labels{position:absolute;z-index:8;left:0;right:0;top:0;height:39px;border-bottom:1px solid var(--line-strong);background:#f7f9f7}.hour-label{position:absolute;top:12px;transform:translateX(-50%);color:#8b958e;font-size:9px;font-variant-numeric:tabular-nums;white-space:nowrap}.hour-label.major{color:#3d4942;font-size:10px;font-weight:750}.hour-label:first-child{transform:none;padding-left:5px}.hour-label:last-child{transform:translateX(-100%);padding-right:5px}.calendar-track-label{position:absolute;left:14px;top:47px;z-index:2;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.availability-block{position:absolute;top:76px;height:70px;z-index:3;display:flex;align-items:center;padding:0 11px;overflow:hidden;border-left:3px solid #68736c;background:#d8ddd9;color:#39443d;font-size:11px;font-weight:700;white-space:nowrap}.availability-block.mine{border-left-color:var(--accent-dark);background:var(--accent);color:#fff}.selection-block{position:absolute;top:67px;height:88px;z-index:5;display:flex;align-items:center;justify-content:center;min-width:4px;padding:0 9px;border:2px solid #c07813;background:#ffc85b;color:#4d3309;box-shadow:0 7px 18px rgb(117 72 8/.2);font-size:11px;font-weight:850;white-space:nowrap;overflow:hidden;transition:left 180ms cubic-bezier(.2,.8,.2,1),width 180ms cubic-bezier(.2,.8,.2,1),background 140ms,transform 180ms}.selection-block.updated{transform:scaleY(1.07)}.selection-block.conflict{border-color:var(--danger);background:#ef8e85;color:#66130e}.past-block{position:absolute;top:39px;bottom:0;left:0;z-index:1;background:repeating-linear-gradient(135deg,rgb(238 241 239/.78),rgb(238 241 239/.78) 5px,rgb(222 227 223/.78) 5px,rgb(222 227 223/.78) 8px);pointer-events:none}.now-marker{position:absolute;top:39px;bottom:0;z-index:6;width:2px;background:#d3493e;pointer-events:none}.now-marker::before{content:'';position:absolute;left:-4px;top:-4px;width:10px;height:10px;border-radius:50%;background:#d3493e}.key-preview{background:#ffc85b!important;border-color:#c07813!important}
@media(max-width:900px){.composer-intro{display:block}.composer-intro p{margin:5px 0 0}.composer-fields{grid-template-columns:1fr 1fr}.composer-summary{padding-left:10px}.reserve-button{width:100%}}
@media(max-width:560px){.booking-composer{padding:20px 16px;box-shadow:none;border-left:0;border-right:0}.composer-fields{grid-template-columns:1fr}.composer-summary{height:auto;min-height:48px}.horizontal-calendar{padding:20px 16px 16px}.timeline{width:1440px}.availability-key{overflow-x:auto;flex-wrap:nowrap}.availability-key span{white-space:nowrap}}
.timeline-empty-message{position:absolute;left:16px;top:80px;color:var(--muted);font-size:12px}.timeline-fallback{display:block}
.reservation-limit{display:flex;align-items:center;gap:12px;margin:-3px 0 19px;padding:13px 15px;border:1px solid #a7cdb7;border-left:5px solid var(--accent);background:var(--accent-pale);color:var(--accent-dark)}.reservation-limit strong{white-space:nowrap}.reservation-limit span{color:#496455;font-size:12px}.booking-composer.locked .composer-fields{opacity:.58}.booking-composer.locked .composer-intro p{display:none}.selection-block{color:transparent!important}@media(max-width:700px){.reservation-limit{display:block}.reservation-limit strong,.reservation-limit span{display:block}.reservation-limit span{margin-top:3px}}

/* Cyan palette and flat, even-edged surfaces */
.primary,.day-chip.active{color:var(--ink)}.primary:hover{color:#fff}.status-dot{box-shadow:0 0 0 4px rgb(55 178 251/.16)}input:focus{box-shadow:0 0 0 3px rgb(55 178 251/.16)}.button:focus-visible,.icon-button:focus-visible,.text-button:focus-visible,.day-arrow:focus-visible,.day-chip:focus-visible,.slot-action:focus-visible,.notice-close:focus-visible{outline-color:rgb(55 178 251/.24)}.day-chip.active{color:#16455f}.notice{color:#075b8c;border-color:#9bdcff;box-shadow:4px 4px 0 rgb(55 178 251/.14)}.notice-icon{color:var(--ink)}.reservation-pill,.reservation-limit{border-color:#94d7fc;color:#075b8c}.reservation-limit span{color:#356b89}.availability-block,.availability-block.mine,.composer-summary,.composer-summary.conflict,.reservation-limit,.notice,.notice.error,.form-notice,.inline-error{border-left-width:1px}.availability-block.mine{color:var(--ink)}
.availability-block.mine{background:#43b977;color:#0b3c22}.key-yours{background:#43b977}.availability-block.maintenance{background:repeating-linear-gradient(135deg,#ffd27a,#ffd27a 7px,#f0b84a 7px,#f0b84a 14px)!important;color:#5a3200!important;border-color:#c07813!important;box-shadow:0 7px 18px rgb(117 72 8/.22)!important}.selection-block{background:#ffc85b;border-color:#c07813}.selection-block.conflict{background:#ef8e85;border-color:var(--danger)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.time-picker{height:48px;display:grid;grid-template-columns:1fr auto 1fr .9fr;align-items:center;gap:5px;padding:4px 5px;border:1px solid var(--line-strong);background:#fff;transition:border-color 150ms,box-shadow 150ms,transform 150ms}.time-picker:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px rgb(37 181 255/.16);transform:translateY(-1px)}.time-picker b{color:var(--muted);font-size:18px}.time-picker label{min-width:0}.time-picker select{width:100%;height:38px;padding:0 22px 0 8px;appearance:none;border:0;border-radius:2px;outline:0;background:var(--soft) linear-gradient(45deg,transparent 50%,var(--accent-dark) 50%) right 8px center/5px 5px no-repeat;color:var(--ink);font-size:15px;font-weight:760;font-variant-numeric:tabular-nums;cursor:pointer;transition:background-color 130ms,color 130ms}.time-picker select:hover,.time-picker select:focus{background-color:var(--accent-pale);color:var(--accent-dark)}.time-picker select:disabled{cursor:not-allowed;opacity:.55}.time-picker .period-select{font-size:12px;letter-spacing:.04em}
.availability-block,.selection-block{top:67px;height:88px;border:2px solid #aeb9b2;border-radius:2px;box-shadow:0 7px 18px rgb(31 49 39/.18)}.availability-block.mine{border-color:#218653;box-shadow:0 7px 18px rgb(33 134 83/.24)}.selection-block{border-color:#c07813;box-shadow:0 7px 18px rgb(117 72 8/.22)}.selection-block.conflict{border-color:var(--danger);box-shadow:0 7px 18px rgb(181 43 35/.22)}
.time-picker{height:48px;display:grid;grid-template-columns:1fr 14px 1fr .88fr;align-items:stretch;gap:0;padding:0;border:1px solid var(--line-strong);border-radius:2px;background:#fff;box-shadow:none;transition:border-color 140ms,box-shadow 140ms}.time-picker:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgb(37 181 255/.14);transform:none}.time-picker b{display:grid;place-items:center;color:var(--muted);background:#fff;font-size:16px;font-weight:650}.time-picker label{display:block;height:46px;min-width:0}.time-picker select{width:100%;height:46px;padding:0 21px 0 10px;appearance:none;border:0;border-radius:0;outline:0;background-color:#fff;background-image:linear-gradient(45deg,transparent 50%,#6e818c 50%),linear-gradient(135deg,#6e818c 50%,transparent 50%);background-position:calc(100% - 10px) 20px,calc(100% - 6px) 20px;background-size:4px 4px,4px 4px;background-repeat:no-repeat;color:var(--ink);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer;transition:background-color 120ms,color 120ms}.time-picker select:hover,.time-picker select:focus{background-color:var(--soft);color:var(--ink)}.time-picker label:nth-of-type(2){border-right:1px solid var(--line)}.time-picker .period-select{font-size:12px;letter-spacing:.05em;text-align:center}.time-picker select:disabled{cursor:not-allowed;opacity:.5;background-color:var(--soft)}
.time-entry{height:48px;display:grid;grid-template-columns:minmax(78px,1fr) auto;align-items:stretch;border:1px solid var(--line-strong);border-radius:2px;background:#fff;transition:border-color 140ms,box-shadow 140ms}.time-entry:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgb(37 181 255/.14)}.time-entry label{min-width:0}.time-entry input{height:46px;padding:0 12px;border:0;box-shadow:none!important;background:transparent;font-size:17px;font-weight:740;letter-spacing:.02em;font-variant-numeric:tabular-nums}.time-entry input::placeholder{color:#9aabb4}.period-toggle{display:grid;grid-template-columns:1fr 1fr;margin:5px;padding-left:5px;border-left:1px solid var(--line)}.period-toggle button{min-width:37px;padding:0 7px;border:0;border-radius:2px;background:transparent;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.05em;cursor:pointer;transition:background-color 120ms,color 120ms}.period-toggle button:hover{color:var(--ink);background:var(--soft)}.period-toggle button.active{color:#064d73;background:var(--accent-pale);box-shadow:inset 0 0 0 1px #8fdcff}.period-toggle button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.period-toggle button:disabled{cursor:not-allowed;opacity:.45}.field-hint{display:block;margin-top:6px;color:var(--muted);font-size:10px;white-space:nowrap}.time-entry.invalid{border-color:var(--danger);box-shadow:0 0 0 3px rgb(181 43 35/.1)}.composer-field{position:relative}.field-hint{position:absolute;top:calc(100% + 5px);left:0;margin:0}.composer-fields{margin-bottom:13px}.horizontal-calendar{scrollbar-width:thin;scrollbar-color:transparent transparent}.horizontal-calendar::-webkit-scrollbar{height:5px}.horizontal-calendar::-webkit-scrollbar-track{background:transparent}.horizontal-calendar::-webkit-scrollbar-thumb{background:transparent;border-radius:999px}.horizontal-calendar.reveal-scrollbar{scrollbar-color:#8ec7e5 transparent}.horizontal-calendar.reveal-scrollbar::-webkit-scrollbar-thumb{background:#8ec7e5}.horizontal-calendar.reveal-scrollbar::-webkit-scrollbar-thumb:hover{background:#56b5e6}.horizontal-calendar.reveal-scrollbar::-webkit-scrollbar-thumb:active{background:var(--accent-dark)}.horizontal-calendar.is-auto-scrolling{scrollbar-color:transparent transparent}.horizontal-calendar.is-auto-scrolling::-webkit-scrollbar-thumb{background:transparent}
.availability-block,.availability-block.mine,.composer-summary,.composer-summary.conflict,.reservation-limit,.notice,.notice.error,.form-notice,.inline-error{border-left-width:1px}

/* Cross-midnight reservations are clipped into day-sized segments, while the
   moving highlight and open edge make their continuity visible. */
.day-boundaries{position:absolute;z-index:9;left:0;right:0;top:163px;display:flex;justify-content:space-between;pointer-events:none}.day-boundaries span{padding:2px 6px;background:rgb(255 255 255/.92);color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.day-boundaries span:last-child{text-align:right}
.availability-block,.selection-block{background-size:auto,32px 100%;background-position:0 0,0 0}.availability-block.continues-from-previous,.availability-block.continues-into-next,.selection-block.continues-from-previous,.selection-block.continues-into-next{border-radius:0;animation:reservation-flow 1.4s linear infinite}.availability-block.continues-from-previous,.selection-block.continues-from-previous{border-left-style:dashed}.availability-block.continues-into-next,.selection-block.continues-into-next{border-right-style:dashed}.availability-block.continues-from-previous::before,.selection-block.continues-from-previous::before,.availability-block.continues-into-next::after,.selection-block.continues-into-next::after{position:absolute;z-index:2;top:50%;width:18px;height:26px;display:grid;place-items:center;transform:translateY(-50%);background:rgb(255 255 255/.82);color:#315266;font-size:14px;font-weight:900}.availability-block.continues-from-previous::before,.selection-block.continues-from-previous::before{content:'←';left:0}.availability-block.continues-into-next::after,.selection-block.continues-into-next::after{content:'→';right:0}.availability-block.continues-from-previous,.availability-block.continues-into-next{background-image:linear-gradient(rgb(216 221 217/.86),rgb(216 221 217/.86)),repeating-linear-gradient(110deg,transparent 0 12px,rgb(255 255 255/.42) 12px 17px)}.availability-block.mine.continues-from-previous,.availability-block.mine.continues-into-next{background-image:linear-gradient(rgb(67 185 119/.88),rgb(67 185 119/.88)),repeating-linear-gradient(110deg,transparent 0 12px,rgb(255 255 255/.34) 12px 17px)}.availability-block.maintenance.continues-from-previous,.availability-block.maintenance.continues-into-next{background-image:linear-gradient(rgb(239 209 144/.88),rgb(239 209 144/.88)),repeating-linear-gradient(110deg,transparent 0 12px,rgb(255 255 255/.4) 12px 17px)}.selection-block.continues-from-previous,.selection-block.continues-into-next{background-image:linear-gradient(rgb(255 200 91/.9),rgb(255 200 91/.9)),repeating-linear-gradient(110deg,transparent 0 12px,rgb(255 255 255/.48) 12px 17px)}.selection-block.conflict.continues-from-previous,.selection-block.conflict.continues-into-next{background-image:linear-gradient(rgb(239 142 133/.9),rgb(239 142 133/.9)),repeating-linear-gradient(110deg,transparent 0 12px,rgb(255 255 255/.38) 12px 17px)}
@keyframes reservation-flow{to{background-position:0 0,32px 0}}

/* Keep helper copy and validation panels in separate vertical space. */
.composer-fields{margin-bottom:24px}
@media(max-width:900px){.composer-fields{row-gap:28px}}
.access-request{text-align:center}.access-request-icon{display:grid;place-items:center;width:42px;height:42px;margin:0 auto 15px;border:1px solid #edaaa4;border-radius:50%;background:var(--danger-pale);color:var(--danger);font-size:20px;font-weight:900}.access-request h2{margin-bottom:9px}.access-request p{margin-bottom:22px;color:var(--muted)}.access-request .button{display:block;width:100%;margin-top:9px;text-decoration:none}
.contact-admin-row{display:inline;white-space:nowrap}.copy-email{display:inline-grid;place-items:center;width:16px;height:16px;margin-left:2px;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;vertical-align:-3px}.copy-email svg{grid-area:1/1;width:15px;height:15px}.copy-email .check-icon{display:none}.copy-email.copied .copy-icon{display:none}.copy-email.copied .check-icon{display:block}.copy-email:focus-visible{outline:1px solid currentColor;outline-offset:1px}
.contact-admin-row{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:18px;color:var(--muted);font-size:12px}.copy-email{margin-left:1px;vertical-align:initial}

/* Left edges match each component's surrounding border. */
.form-notice{border:1px solid #edaaa4}
.notice{border-left-color:#9bdcff}
.notice.error{border-left-color:#edaaa4}
.inline-error{border-left-color:#edaaa4}
.reservation-limit{border-left-color:#94d7fc}
.composer-summary,.composer-summary.conflict{border-left-color:var(--line-strong)}
.availability-block{border-left-width:2px;border-left-color:#aeb9b2}
.availability-block.mine{border-left-width:2px;border-left-color:#218653}
.availability-block.maintenance{border-left-width:2px;border-left-color:#c07813!important;border-style:solid!important}
.key-maintenance{background:repeating-linear-gradient(135deg,#ffd27a,#ffd27a 3px,#f0b84a 3px,#f0b84a 6px)!important;border-color:#c07813!important}
.selection-block,.selection-block.conflict{border-left-width:2px}
.availability-block.continues-from-previous,.selection-block.continues-from-previous{border-left-style:solid}

/* Persistent light/dark appearance */
.theme-toggle{position:fixed;top:14px;right:max(18px,calc((100vw - 1180px)/2));z-index:100;display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid var(--line-strong);border-radius:50%;background:var(--paper);color:var(--ink);box-shadow:3px 3px 0 rgb(16 37 50/.12);cursor:pointer;transition:color 150ms,background-color 150ms,border-color 150ms,transform 150ms,box-shadow 150ms}.theme-toggle:hover{color:var(--accent);transform:translateY(-1px);box-shadow:4px 5px 0 rgb(16 37 50/.14)}.theme-toggle:focus-visible{outline:3px solid rgb(37 181 255/.28);outline-offset:3px}.theme-toggle svg{grid-area:1/1;width:19px;height:19px}.theme-toggle .theme-sun{display:none}[data-theme="dark"] .theme-toggle .theme-moon{display:none}[data-theme="dark"] .theme-toggle .theme-sun{display:block}

:root[data-theme="dark"]{--ink:#e8f4fa;--muted:#8fa8b6;--line:#0e1e33;--line-strong:#081221;--paper:#152945;--canvas:#0d1a2b;--soft:#1d385c;--accent:#086fa8;--accent-dark:#0b86c7;--accent-pale:#103246;--danger:#ff766e;--danger-pale:#351c21;--warning:#ffc15c;--success:#42c5ff;--success-pale:#102f40;color-scheme:dark}
[data-theme="dark"] body{background:var(--canvas)}
[data-theme="dark"] .topbar,[data-theme="dark"] .login-panel,[data-theme="dark"] .booking-composer,[data-theme="dark"] .schedule,[data-theme="dark"] dialog,[data-theme="dark"] .booking-panel{background:var(--paper);border-color:transparent}
[data-theme="dark"] .login-panel,[data-theme="dark"] .booking-composer,[data-theme="dark"] .schedule{box-shadow:8px 8px 0 #000000}
[data-theme="dark"] .theme-toggle{box-shadow:3px 3px 0 #000000}
[data-theme="dark"] .status,[data-theme="dark"] input,[data-theme="dark"] .secondary,[data-theme="dark"] .day-arrow,[data-theme="dark"] .duration-stepper,[data-theme="dark"] .timeline,[data-theme="dark"] .time-entry,[data-theme="dark"] .time-picker,[data-theme="dark"] .time-picker b,[data-theme="dark"] .time-picker select,[data-theme="dark"] .configuration-summary .configuration-time,[data-theme="dark"] .admin-field select,[data-theme="dark"] .inline-email-completion{background:#0e192a;color:var(--ink)}
[data-theme="dark"] input::placeholder,[data-theme="dark"] .time-entry input::placeholder{color:#607b8a}
[data-theme="dark"] label,[data-theme="dark"] .field-label,[data-theme="dark"] .composer-field>span,[data-theme="dark"] .admin-field>span,[data-theme="dark"] .hour-label.major{color:#c4d9e3}
[data-theme="dark"] .primary,[data-theme="dark"] .day-chip.active{color:#dff5ff;background:var(--accent)}
[data-theme="dark"] .primary:hover{color:#fff;background:var(--accent-dark)}
[data-theme="dark"] .reserve-button{box-shadow:6px 6px 0 #075274}
[data-theme="dark"] .reserve-button:hover:not(:disabled){box-shadow:8px 8px 0 #08658f}
[data-theme="dark"] .reserve-button:disabled{box-shadow:3px 3px 0 #193645}
[data-theme="dark"] .day-chip{background:#111d31;color:var(--muted)}
[data-theme="dark"] .day-chip:hover{background:#1a2b47}
[data-theme="dark"] .day-chip.active{color:#dff5ff}
[data-theme="dark"] .key-open{background:#0e192a}
[data-theme="dark"] .key-busy,[data-theme="dark"] .availability-block{background:#2e3d54;color:#d8e6ec;border-color:#465875}
[data-theme="dark"] .key-past{background:repeating-linear-gradient(135deg,#0e192a,#0e192a 3px,#263450 3px,#263450 5px)}
[data-theme="dark"] .hour-labels{background:#101c30}
[data-theme="dark"] .quarter-cell{border-right-color:#152238}
[data-theme="dark"] .quarter-cell.hour{border-right-color:#263450}
[data-theme="dark"] .past-block{background:repeating-linear-gradient(135deg,rgb(10 20 40/.8),rgb(10 20 40/.8) 5px,rgb(34 48 76/.78) 5px,rgb(34 48 76/.78) 8px)}
[data-theme="dark"] .day-boundaries span{background:rgb(15 27 50/.92)}
[data-theme="dark"] .availability-block.mine{background:#1e5e3a;color:#dff6e8;border-color:#2c9c5d}
[data-theme="dark"] .key-maintenance,[data-theme="dark"] .availability-block.maintenance{background:repeating-linear-gradient(135deg,#e9a83c,#e9a83c 7px,#c07813 7px,#c07813 14px)!important;color:#241604!important;border-color:#ffd27a!important}
[data-theme="dark"] .selection-block{background:#e9a83c;color:#241604;border-color:#e0ab46;box-shadow:0 7px 20px rgb(0 0 0/.36)}
[data-theme="dark"] .selection-block.conflict{background:#a94145;color:#fff0f0;border-color:#db645c}
[data-theme="dark"] .notice{color:#ccefff;background:#1c3055;border-color:#2b4782;box-shadow:4px 4px 0 rgb(0 0 0/.2)}
[data-theme="dark"] .notice.error,[data-theme="dark"] .form-notice,[data-theme="dark"] .inline-error{color:#ffd7d4;background:#351c21;border-color:#5c2a2d}
[data-theme="dark"] .reservation-limit{background:#1c355c;border-color:#2b437a;color:#8fdcff}
[data-theme="dark"] .reservation-limit span{color:#a8c3d0}
[data-theme="dark"] .configuration-summary>div,[data-theme="dark"] .dialog-actions,[data-theme="dark"] .admin-advanced,[data-theme="dark"] .storage-total{background:var(--soft)}
[data-theme="dark"] dialog{color:var(--ink);box-shadow:12px 12px 0 #000000}
[data-theme="dark"] dialog::backdrop{background:rgb(0 7 11/.72)}
[data-theme="dark"] .period-toggle button.active{color:#bdeaff;background:#1f3c6e;box-shadow:inset 0 0 0 1px #3266bd}
[data-theme="dark"] .duration-stepper button{background:#1b2e4d}
[data-theme="dark"] .duration-stepper button:hover{background:#263d66}
[data-theme="dark"] .reservation-pill{border-color:#264a9c;background:#1c355c;color:#83d8ff}
[data-theme="dark"] .extended-badge{background:#3b2b15!important;color:#ffd28b!important}
[data-theme="dark"] .inline-email-ghost{color:#587282}
[data-theme="dark"] .access-request-icon{border-color:#74383b}
@media(max-width:700px){.theme-toggle{top:10px;right:12px;width:38px;height:38px}}
