#root{min-height:100vh}:root{--ink:#211e1a;--muted:#746d63;--faint:#a29a90;--paper:#f4f0e8;--surface:#fffdf8;--line:#dcd6cc;--line-strong:#c7bfb4;--signal:#ee4b25;--signal-dark:#c93717;--good:#2f7652;--good-soft:#e7f1ea;--warn:#b76a16;--warn-soft:#f7ead4;--danger:#a43b31;--danger-soft:#f4e4e0;color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Avenir Next,Avenir,Helvetica Neue,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{background:linear-gradient(#52493c09 1px, transparent 1px), var(--paper);background-size:100% 24px;min-width:320px;min-height:100vh;margin:0}button,input,select{color:inherit;font:inherit}button,select{cursor:pointer;touch-action:manipulation}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.app-shell{min-height:100vh}.topbar{z-index:20;border-bottom:1px solid var(--line);background:#fffdf8f5;grid-template-columns:1fr auto 1fr;align-items:center;height:64px;padding:0 clamp(16px,2vw,32px);display:grid;position:sticky;top:0}.brand{width:max-content;color:var(--ink);letter-spacing:-.6px;align-items:center;gap:10px;font-size:19px;font-weight:750;text-decoration:none;display:inline-flex}.brand-mark{color:#fff;background:var(--signal);border-radius:7px;place-items:center;width:30px;height:30px;display:grid}.main-nav{align-items:stretch;gap:clamp(18px,2vw,30px);height:100%;display:flex}.nav-icon{display:none}.main-nav a,.main-nav button{color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:7px;padding:0;font-size:14px;font-weight:600;text-decoration:none;transition:color .14s,border-color .14s;display:inline-flex;position:relative}.main-nav a:hover,.main-nav button:hover,.main-nav a.active,.main-nav button.active{color:var(--ink)}.main-nav a.active,.main-nav button.active{border-bottom-color:var(--signal)}.main-nav .auth-nav{color:var(--muted);cursor:pointer;align-items:center;gap:6px;font-size:14px;font-weight:600;display:inline-flex}.nav-count,.filter-count{color:#fff;background:var(--signal);border-radius:5px;place-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;line-height:1;display:inline-grid}.header-actions{justify-self:end;align-items:center;gap:16px;display:flex}.source-state{color:var(--muted);align-items:center;gap:8px;font-size:12px;font-weight:600;display:flex}.source-light{background:var(--warn);border-radius:50%;width:8px;height:8px}.source-light.public-api{background:var(--good)}.source-light.error{background:var(--danger)}.source-light.loading{background:var(--warn)}.sign-in-button,.signed-in-account{border:1px solid var(--line);background:#fff;border-radius:7px;align-items:center;gap:7px;height:34px;font-size:12px;font-weight:650;display:inline-flex}.sign-in-button{padding:0 11px}.sign-in-button:hover{border-color:var(--line-strong)}.sign-in-button:disabled{cursor:wait;opacity:.65}.signed-in-account{max-width:210px;color:var(--good);background:#f8fcf8;border-color:#b9ccbf;padding-left:10px}.signed-in-account>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.signed-in-account button{color:#486653;background:0 0;border:0;border-left:1px solid #c8d8cd;flex:none;place-items:center;width:32px;height:32px;display:grid}.signed-in-account button:hover{color:var(--danger)}main{width:min(1240px,100% - clamp(24px,4vw,48px));margin:0 auto;padding:clamp(28px,3vw,42px) 0 64px}.page-heading{justify-content:space-between;align-items:flex-end;margin-bottom:28px;display:flex}.page-heading h1{letter-spacing:-1.8px;margin:0 0 7px;font-size:clamp(30px,3.3vw,42px);font-weight:690;line-height:1}.location-button,.refresh-button{color:var(--muted);background:0 0;border:0;align-items:center;gap:7px;padding:0;font-size:13px;display:inline-flex}.location-button:hover,.refresh-button:hover{color:var(--ink)}.refresh-button{border:1px solid var(--line);background:var(--surface);border-radius:7px;min-height:34px;padding:0 10px}.refresh-button:disabled{cursor:wait;opacity:.65}.spinning{animation:.85s linear infinite spin}@keyframes spin{to{rotate:360deg}}.reservation-strip{border:1px solid #bad0c1;border-left:3px solid var(--good);background:var(--good-soft);border-radius:8px;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;min-height:66px;margin-bottom:22px;padding:10px 14px;display:grid}.reservation-check{color:#fff;background:var(--good);border-radius:50%;place-items:center;width:30px;height:30px;display:grid}.reservation-copy{gap:2px;display:grid}.reservation-copy strong{font-size:14px}.reservation-copy span{color:#52655a;font-size:12px}.reservation-strip>button{color:#225a3d;background:#f8fcf8;border:1px solid #abc5b3;border-radius:7px;padding:7px 11px;font-size:12px;font-weight:650}.reservations-view{gap:30px;display:grid}.reservation-section{gap:10px;display:grid}.reservation-section-heading{justify-content:space-between;align-items:baseline;display:flex}.reservation-section-heading h2{letter-spacing:-.2px;margin:0;font-size:15px}.reservation-section-heading span{color:var(--faint);font-size:11px}.reservation-list{border:1px solid var(--line);background:var(--surface)}.reservation-row{border-bottom:1px solid var(--line);grid-template-columns:118px minmax(0,1fr) auto;align-items:center;gap:20px;min-height:104px;padding:17px 18px;display:grid}.reservation-row:last-child{border-bottom:0}.reservation-row>time{border-right:1px solid var(--line);font-variant-numeric:tabular-nums;align-content:center;align-self:stretch;gap:3px;padding-right:18px;display:grid}.reservation-row>time strong{font-size:14px}.reservation-row>time span{color:var(--muted);font-size:12px}.reservation-details{gap:4px;min-width:0;display:grid}.reservation-details>div{align-items:center;gap:10px;min-width:0;display:flex}.reservation-details strong{letter-spacing:-.25px;text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.reservation-details>span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.reservation-status{color:var(--good);flex:none;align-items:center;gap:4px;font-size:11px;font-weight:700;display:inline-flex}.reservation-actions{align-items:center;gap:8px;display:flex}.reservation-actions button{border:1px solid var(--line-strong);white-space:nowrap;background:#fff;border-radius:7px;justify-content:center;align-items:center;gap:6px;min-height:34px;padding:0 10px;font-size:12px;font-weight:650;display:inline-flex}.reservation-actions button:hover{background:#faf7f0;border-color:#a79d90}.reservation-actions button:last-child{color:#fff;border-color:var(--ink);background:var(--ink)}.reservation-actions button:last-child:hover{background:#37312b}.reservation-actions button.drop-reservation-button{color:var(--danger);background:#fff;border-color:#d7aaa3}.reservation-actions button.drop-reservation-button:hover{border-color:var(--danger);background:var(--danger-soft)}.reservation-list-empty,.reservations-empty{border:1px solid var(--line);min-height:270px;color:var(--muted);background:var(--surface);text-align:center;align-content:center;place-items:center;padding:28px;display:grid}.reservation-list-empty svg,.reservations-empty svg{color:var(--faint);margin-bottom:9px}.reservation-list-empty h3,.reservations-empty h2{color:var(--ink);margin:0 0 4px;font-size:16px}.reservation-list-empty p,.reservations-empty p{max-width:360px;margin:0 0 14px;font-size:13px;line-height:1.5}.reservation-list-empty button,.reservations-empty button{border:1px solid var(--ink);color:#fff;background:var(--ink);border-radius:7px;align-items:center;gap:7px;min-height:36px;padding:0 12px;font-size:12px;font-weight:700;display:inline-flex}.past-reservations{margin-top:2px}.reservation-row-past{opacity:.72;min-height:88px}.reservation-refresh-error{border-left:3px solid var(--danger);color:var(--danger);background:var(--danger-soft);margin:-16px 0 0;padding:9px 11px;font-size:12px}.reservation-safety-note{color:var(--faint);text-align:center;margin:-10px 0 0;font-size:11px}.plans-view{gap:22px;display:grid}.plans-intro{border:1px solid #bad0c1;border-left:3px solid var(--good);background:var(--good-soft);justify-content:space-between;align-items:center;gap:24px;min-height:68px;padding:12px 14px;display:flex}.plans-intro>div{gap:2px;display:grid}.plans-intro strong{font-size:13px}.plans-intro p{color:#52655a;margin:0;font-size:12px;line-height:1.45}.plans-intro>button,.notification-state{color:#225a3d;background:#f8fcf8;border:1px solid #abc5b3;border-radius:7px;flex:none;align-items:center;gap:6px;min-height:34px;padding:0 10px;font-size:11px;font-weight:700;display:inline-flex}.plans-intro.needs-auth{border-color:#d4c8ad;border-left-color:var(--warn);background:var(--warn-soft)}.plans-intro.needs-auth p{color:#76551f}.plans-intro.needs-auth>button{color:#76551f;background:#fffbf2;border-color:#d4c8ad}.notification-state.unavailable{color:#76551f;background:#faf3e4;border-color:#d4c8ad}.plan-list{border:1px solid var(--line);background:var(--surface)}.plan-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(220px,.85fr) minmax(310px,1.35fr);gap:18px 34px;padding:20px;display:grid}.plan-row:last-child{border-bottom:0}.plan-row.is-paused{background:#f3efe7}.plan-row.needs-auth{background:#fffcf6}.plan-row-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.plan-row-heading>div{gap:4px;display:grid}.plan-row-heading h2{letter-spacing:-.45px;margin:0;font-size:18px}.plan-mode{color:var(--faint);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:750}.plan-status{font-variant-numeric:tabular-nums;border-radius:6px;flex:none;align-items:center;min-height:24px;padding:0 7px;font-size:10px;font-weight:750;display:inline-flex}.plan-status.open,.plan-status.reserved{color:var(--good);background:var(--good-soft)}.plan-status.tight,.plan-status.waiting{color:var(--warn);background:var(--warn-soft)}.plan-status.full{color:var(--danger);background:var(--danger-soft)}.plan-status.paused{color:var(--muted);background:#e7e1d8}.plan-status.auth{color:var(--warn);background:var(--warn-soft)}.plan-rule{grid-row:2;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;display:grid}.plan-rule>div{border-right:1px solid var(--line);gap:3px;min-width:0;padding-right:12px;display:grid}.plan-rule>div:not(:first-child){padding-left:12px}.plan-rule>div:last-child{border-right:0;padding-right:0}.plan-rule dt,.plan-next>span{color:var(--faint);letter-spacing:.04em;text-transform:uppercase;font-size:10px;font-weight:700}.plan-rule dd{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:12px;font-weight:650;overflow:hidden}.plan-next{align-content:start;gap:5px;display:grid}.plan-next>div{gap:3px;display:grid}.plan-next strong{font-size:13px}.plan-next div span,.plan-next p{color:var(--muted);margin:0;font-size:11px;line-height:1.45}.plan-opening{border-top:1px solid var(--line);grid-template-columns:1fr auto;gap:3px 12px;margin-top:7px;padding-top:8px;display:grid}.plan-opening>span:first-child{color:var(--faint);letter-spacing:.04em;text-transform:uppercase;font-size:10px;font-weight:700}.plan-opening>strong{grid-area:2/1/auto/-1;font-size:12px}.plan-opening>span:last-child{color:var(--signal-dark);font-variant-numeric:tabular-nums;text-align:right;font-size:11px;font-weight:750}.plan-actions{flex-wrap:wrap;grid-column:2;gap:7px;display:flex}.plan-actions button{border:1px solid var(--line-strong);background:#fff;border-radius:7px;justify-content:center;align-items:center;gap:6px;min-height:33px;padding:0 10px;font-size:11px;font-weight:650;display:inline-flex}.plan-actions button:disabled{cursor:not-allowed;opacity:.5}.plan-actions .book-plan{border-color:var(--ink);color:#fff;background:var(--ink)}.plan-actions .book-plan:disabled{border-color:var(--line-strong);color:var(--muted);background:#eee9e0}.plan-actions .remove-plan{color:var(--danger)}.plans-empty{border:1px solid var(--line);min-height:300px;color:var(--muted);background:var(--surface);text-align:center;align-content:center;place-items:center;padding:28px;display:grid}.plans-empty svg{color:var(--faint);margin-bottom:9px}.plans-empty h2{color:var(--ink);margin:0 0 4px;font-size:16px}.plans-empty p{max-width:400px;margin:0 0 14px;font-size:13px;line-height:1.5}.plans-empty button{border:1px solid var(--ink);color:#fff;background:var(--ink);border-radius:7px;min-height:36px;padding:0 12px;font-size:12px;font-weight:700}.schedule-tools{border:1px solid var(--line);background:var(--surface)}.day-picker{border-bottom:1px solid var(--line);grid-template-columns:repeat(7,minmax(74px,1fr));display:grid;overflow:auto hidden}.day-picker button{border:0;border-right:1px solid var(--line);min-width:76px;min-height:66px;color:var(--muted);text-align:center;background:0 0;place-content:center;gap:1px;display:grid;position:relative}.day-picker button:last-child{border-right:0}.day-picker button:after{content:"";background:0 0;height:3px;position:absolute;bottom:-1px;left:12px;right:12px}.day-picker button:hover,.day-picker button.active{color:var(--ink);background:#faf7f0}.day-picker button.active:after{background:var(--signal)}.day-picker strong{font-size:13px;font-weight:700}.day-picker span{color:var(--faint);font-size:11px}.filter-row,.mobile-filter-row{align-items:center;gap:10px;padding:12px;display:flex}.search-field{border:1px solid var(--line);background:#fff;border-radius:7px;flex:1;align-items:center;gap:9px;min-width:260px;height:38px;padding:0 11px;display:flex}.search-field:focus-within{border-color:var(--line-strong);box-shadow:0 0 0 2px #ee4b2521}.search-field svg{color:var(--faint);flex:none}.search-field input{background:0 0;border:0;outline:0;flex:1;min-width:0;font-size:13px}.search-field input::placeholder{color:#aaa39a}.search-field button{color:var(--muted);background:0 0;border:0;place-items:center;padding:2px;display:grid}.filter-row select,.mobile-filter-row select,.filter-toggle{border:1px solid var(--line);height:38px;color:var(--ink);background:#fff;border-radius:7px;padding:0 32px 0 11px;font-size:12px;font-weight:600}.filter-toggle{align-items:center;gap:7px;padding-right:11px;display:none}.filter-toggle.active{border-color:var(--line-strong)}.mobile-filter-row{padding-top:0;display:none}.mobile-filter-row select{flex:1;min-width:0}.results-heading{color:var(--muted);justify-content:space-between;align-items:center;margin:23px 0 10px;font-size:12px;display:flex}.results-heading p{margin:0}.results-heading strong{color:var(--ink)}.availability-key{gap:15px;display:flex}.availability-key span{align-items:center;gap:5px;display:inline-flex}.availability-key i{border-radius:50%;width:7px;height:7px}.availability-key .open{background:var(--good)}.availability-key .tight{background:var(--warn)}.availability-key .full{background:var(--danger)}.day-group{margin-bottom:26px}.day-heading{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.day-heading h2{letter-spacing:-.2px;margin:0;font-size:15px;font-weight:700}.day-heading>span{color:var(--faint);font-size:11px}.class-table{border:1px solid var(--line);background:var(--surface);overflow:hidden}.class-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) clamp(96px,8vw,112px);min-height:78px;display:grid}.class-row:last-child{border-bottom:0}.class-row:hover{background:#fffaf2}.class-summary{text-align:left;background:0 0;border:0;grid-template-columns:clamp(84px,8vw,106px) minmax(180px,1.55fr) minmax(120px,.9fr) minmax(125px,.75fr);align-items:center;gap:clamp(10px,1.2vw,16px);min-width:0;padding:13px clamp(12px,1.5vw,18px);display:grid}.class-summary time,.class-identity{gap:2px;display:grid}.class-summary time strong{font-variant-numeric:tabular-nums;font-size:14px}.class-summary time span,.class-identity span,.capacity span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.class-identity{min-width:0}.class-title-line{align-items:center;gap:8px;min-width:0;display:flex}.class-title-line>strong{letter-spacing:-.2px;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;font-weight:700;overflow:hidden}.class-reserved-status{color:var(--good);background:var(--good-soft);white-space:nowrap;border:1px solid #bad0c1;border-radius:5px;flex:none;align-items:center;gap:3px;padding:2px 5px;font-size:11px;font-weight:700;display:inline-flex}.instructor{min-width:0;color:var(--muted);align-items:center;gap:7px;font-size:12px;display:flex}.instructor svg{color:var(--faint);flex:none}.instructor span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.capacity{gap:7px;display:grid}.capacity>div:first-child{justify-content:space-between;align-items:baseline;gap:5px;display:flex}.capacity strong{font-size:12px;font-weight:700}.capacity.open strong{color:var(--good)}.capacity.tight strong{color:var(--warn)}.capacity.full strong{color:var(--danger)}.capacity.reserved strong{color:var(--good)}.capacity-track{background:#e7e2d9;height:3px;overflow:hidden}.capacity-track span{background:var(--good);height:100%;display:block}.capacity.tight .capacity-track span{background:var(--warn)}.capacity.full .capacity-track span{background:var(--danger)}.watch-button{border:1px solid var(--line);height:34px;color:var(--muted);background:#fff;border-radius:7px;justify-content:center;align-self:center;align-items:center;gap:7px;margin-right:14px;font-size:12px;font-weight:650;display:inline-flex}.watch-button:hover{border-color:var(--line-strong);color:var(--ink)}.watch-button.watching{color:var(--signal-dark);background:#fff2ed;border-color:#f0b09f}.empty-state{border:1px solid var(--line);min-height:280px;color:var(--muted);background:var(--surface);text-align:center;align-content:center;place-items:center;display:grid}.empty-state svg{color:var(--faint);margin-bottom:10px}.empty-state h2{color:var(--ink);margin:0 0 4px;font-size:16px}.empty-state p{margin:0 0 14px;font-size:13px}.empty-state button{border:1px solid var(--line-strong);background:#fff;border-radius:7px;padding:8px 12px;font-size:12px;font-weight:650}.data-note{color:var(--faint);text-align:center;margin:28px auto 0;font-size:11px}.drawer-backdrop{z-index:50;background:#211e1a61;justify-content:flex-end;display:flex;position:fixed;inset:0}.modal-backdrop{z-index:60;overscroll-behavior:contain;background:#181613a8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.sign-in-dialog{border:1px solid var(--line-strong);background:var(--surface);border-radius:10px;width:min(410px,100%);box-shadow:0 4px 8px #322b231a}.sign-in-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:20px;padding:20px 22px;display:flex}.sign-in-header h2{letter-spacing:-.35px;margin:0 0 3px;font-size:18px}.sign-in-header p{color:var(--muted);margin:0;font-size:12px}.sign-in-header>button{border:1px solid var(--line);background:#fff;border-radius:7px;flex:none;place-items:center;width:32px;height:32px;display:grid}.sign-in-dialog form{gap:15px;padding:22px;display:grid}.sign-in-dialog label{color:var(--ink);gap:6px;font-size:12px;font-weight:650;display:grid}.sign-in-dialog input{border:1px solid var(--line);background:#fff;border-radius:7px;outline:0;width:100%;height:40px;padding:0 10px;font-size:14px}.sign-in-dialog input:focus{border-color:var(--line-strong);box-shadow:0 0 0 2px #ee4b2521}.sign-in-error{border-left:3px solid var(--danger);color:var(--danger);background:var(--danger-soft);margin:-2px 0 0;padding:9px 10px;font-size:12px;line-height:1.4}.sign-in-submit{border:1px solid var(--ink);color:#fff;background:var(--ink);border-radius:8px;height:41px;font-size:13px;font-weight:700}.sign-in-submit:hover{background:#37312b}.sign-in-submit:disabled{cursor:wait;opacity:.7}.credential-note{color:var(--faint);text-align:center;margin:-2px 4px 0;font-size:10px;line-height:1.45}.class-drawer{border-left:1px solid var(--line-strong);background:var(--surface);flex-direction:column;width:min(440px,100%);height:100%;animation:.18s ease-out drawer-in;display:flex;box-shadow:-4px 0 8px #322b2314}@keyframes drawer-in{0%{opacity:0;translate:24px}}.drawer-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:62px;padding:0 22px;display:flex}.drawer-close{border:1px solid var(--line);background:#fff;border-radius:7px;place-items:center;width:34px;height:34px;display:grid}.drawer-status{border-radius:6px;padding:5px 8px;font-size:11px;font-weight:700}.drawer-status.open,.drawer-status.reserved{color:var(--good);background:var(--good-soft)}.drawer-status.tight{color:var(--warn);background:var(--warn-soft)}.drawer-status.full{color:var(--danger);background:var(--danger-soft)}.drawer-body{flex:1;padding:28px 24px;overflow-y:auto}.drawer-body h2{letter-spacing:-1px;margin:0 0 12px;font-size:27px;font-weight:700;line-height:1.15}.drawer-description{color:var(--muted);margin:0 0 28px;font-size:13px;line-height:1.6}.class-facts{border-top:1px solid var(--line);margin:0;display:grid}.class-facts>div{border-bottom:1px solid var(--line);grid-template-columns:120px 1fr;gap:10px;padding:14px 0;display:grid}.class-facts dt{color:var(--muted);align-items:center;gap:8px;font-size:12px;display:inline-flex}.class-facts dd{margin:0;font-size:12px;font-weight:650}.drawer-capacity{margin-top:28px}.drawer-capacity>div:first-child{justify-content:space-between;align-items:baseline;margin-bottom:13px;display:flex}.drawer-capacity span{color:var(--muted);font-size:12px}.drawer-capacity strong{font-size:12px}.seat-grid{grid-template-columns:repeat(10,1fr);gap:5px;display:grid}.seat-grid i{aspect-ratio:1;background:var(--good-soft);border:1px solid #9cb8a6;border-radius:3px}.seat-grid i.taken{background:#ded8ce;border-color:#d0c9bf}.drawer-footer{border-top:1px solid var(--line);padding:18px 24px 22px}.drawer-actions{grid-template-columns:minmax(0,1fr) 42px;gap:8px;display:grid}.booking-preview-button,.drawer-watch{border:1px solid var(--ink);color:#fff;background:var(--ink);border-radius:8px;justify-content:center;align-items:center;gap:8px;height:42px;font-size:13px;font-weight:700;display:inline-flex}.booking-preview-button:disabled{cursor:not-allowed;border-color:var(--line-strong);color:var(--muted);background:#eee9e0}.drawer-watch{width:42px;color:var(--muted);border-color:var(--line-strong);background:#fff}.drawer-watch.watching{border-color:var(--signal);color:#fff;background:var(--signal)}.drawer-footer p{color:var(--faint);text-align:center;margin:9px 0 0;font-size:10px}.plan-dialog{border:1px solid var(--line-strong);background:var(--surface);border-radius:10px;width:min(520px,100%);box-shadow:0 4px 8px #322b231a}.plan-dialog-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:20px;padding:20px 22px;display:flex}.plan-dialog-header h2{letter-spacing:-.35px;margin:0 0 3px;font-size:18px}.plan-dialog-header p{color:var(--muted);margin:0;font-size:12px}.plan-dialog-header>button{border:1px solid var(--line);background:#fff;border-radius:7px;flex:none;place-items:center;width:32px;height:32px;display:grid}.plan-dialog-body{gap:20px;padding:22px;display:grid}.plan-class-summary{border-bottom:1px solid var(--line);gap:3px;padding-bottom:16px;display:grid}.plan-class-summary strong{letter-spacing:-.2px;font-size:16px}.plan-class-summary span{color:var(--muted);font-size:12px}.plan-kind{border:0;margin:0;padding:0}.plan-kind legend{margin-bottom:7px;font-size:12px;font-weight:700}.plan-kind>div{grid-template-columns:1fr 1fr;gap:8px;display:grid}.plan-kind button{border:1px solid var(--line);text-align:left;background:#fff;border-radius:7px;align-content:center;gap:2px;min-height:60px;padding:8px 11px;font-size:12px;font-weight:700;display:grid}.plan-kind button span{color:var(--muted);font-size:10px;font-weight:500}.plan-kind button.active{border-color:var(--signal);box-shadow:inset 3px 0 0 var(--signal);background:#fff8f3}.plan-fields{grid-template-columns:1fr 1fr;gap:12px;display:grid}.plan-select-field{gap:6px;font-size:12px;font-weight:700;display:grid}.plan-select{min-width:0;position:relative}.plan-select-trigger{border:1px solid var(--line);text-align:left;background:#fff;border-radius:7px;justify-content:space-between;align-items:center;gap:10px;width:100%;min-width:0;height:40px;padding:0 9px;font-size:12px;font-weight:650;display:flex}.plan-select-trigger:hover,.plan-select-trigger[aria-expanded=true]{border-color:var(--line-strong)}.plan-select-trigger[aria-expanded=true]{box-shadow:0 0 0 2px #ee4b2521}.plan-select-trigger span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.plan-select-trigger svg{flex:none}.plan-select-menu{z-index:10;border:1px solid var(--line-strong);background:#fff;border-radius:7px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:0 3px 8px #322b2324}.plan-select-menu button{text-align:left;background:0 0;border:0;border-radius:5px;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:34px;padding:6px 8px;font-size:12px;display:flex}.plan-select-menu button:hover,.plan-select-menu button:focus-visible{background:#f4efe7}.plan-select-menu button.selected{color:var(--signal-dark);font-weight:700}.plan-safety{border-left:3px solid var(--good);color:#315f45;background:var(--good-soft);grid-template-columns:auto 1fr;align-items:start;gap:9px;padding:11px 12px;display:grid}.plan-safety svg{margin-top:1px}.plan-safety p{margin:0;font-size:11px;line-height:1.5}.plan-dialog-footer{justify-content:flex-end;gap:8px;padding:0 22px 22px;display:flex}.plan-dialog-footer button{border:1px solid var(--line-strong);background:#fff;border-radius:8px;min-height:40px;padding:0 14px;font-size:12px;font-weight:700}.plan-dialog-footer .save-plan{border-color:var(--ink);color:#fff;background:var(--ink)}.booking-preview-dialog{border:1px solid var(--line-strong);background:var(--surface);border-radius:10px;width:min(470px,100%);box-shadow:0 4px 8px #322b231a}.booking-preview-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:20px;padding:20px 22px;display:flex}.booking-preview-header h2{letter-spacing:-.35px;margin:0 0 3px;font-size:18px}.booking-preview-header p{color:var(--muted);margin:0;font-size:12px}.booking-preview-header>button{border:1px solid var(--line);background:#fff;border-radius:7px;flex:none;place-items:center;width:32px;height:32px;display:grid}.booking-preview-header>button:disabled{cursor:wait;opacity:.55}.booking-preview-body{gap:18px;padding:22px;display:grid}.booking-preview-class{gap:3px;display:grid}.booking-preview-class strong{letter-spacing:-.2px;font-size:16px}.booking-preview-class span{color:var(--muted);font-size:12px}.booking-preview-facts{border-top:1px solid var(--line);margin:0;display:grid}.booking-preview-facts>div{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;gap:16px;padding:10px 0;display:grid}.booking-preview-facts dt{color:var(--muted);font-size:12px}.booking-preview-facts dd{text-align:right;margin:0;font-size:12px;font-weight:650}.booking-check{border-left:3px solid var(--line-strong);color:var(--muted);background:#f0ece4;grid-template-columns:auto 1fr;align-items:start;gap:9px;padding:11px 12px;font-size:12px;line-height:1.45;display:grid}.booking-check svg{margin-top:1px}.booking-check-ready,.booking-check-reserved{border-left-color:var(--good);color:#315f45;background:var(--good-soft)}.booking-check-unavailable,.booking-check-submitted{border-left-color:var(--warn);color:#7b4d17;background:var(--warn-soft)}.booking-check-error{border-left-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.cancellation-warning{border-left:3px solid var(--danger);color:#743b33;background:var(--danger-soft);grid-template-columns:auto 1fr;align-items:start;gap:9px;padding:11px 12px;font-size:12px;line-height:1.45;display:grid}.cancellation-warning svg{margin-top:1px}.booking-confirm-note{color:var(--muted);margin:-4px 1px 0;font-size:11px;line-height:1.5}.booking-confirm-note strong{color:var(--ink)}.booking-preview-footer{grid-template-columns:1fr 1fr;gap:8px;padding:0 22px 22px;display:grid}.booking-preview-footer button{border:1px solid var(--line-strong);background:#fff;border-radius:8px;min-height:40px;padding:7px 10px;font-size:12px;font-weight:700}.booking-preview-footer button:disabled{cursor:not-allowed}.booking-preview-footer .booking-confirm-button{border-color:var(--ink);color:#fff;background:var(--ink)}.booking-preview-footer .booking-confirm-button:disabled{border-color:var(--line-strong);color:var(--muted);background:#eee9e0}.booking-preview-footer .cancellation-confirm-button{color:#fff;border-color:var(--danger);background:var(--danger)}.booking-preview-footer .cancellation-confirm-button:disabled{cursor:wait;opacity:.6}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=900px){.topbar{grid-template-columns:auto 1fr auto}.main-nav{justify-self:center}.source-state span:first-child{display:none}.header-actions{gap:10px}}@media (width<=760px){.filter-row>select{display:none}.filter-toggle{display:inline-flex}.mobile-filter-row{display:flex}.class-summary{grid-template-columns:90px minmax(180px,1.4fr) minmax(130px,.8fr)}.class-summary .instructor{display:none}.reservation-row{grid-template-columns:100px minmax(0,1fr)}.reservation-actions{grid-column:2;justify-content:flex-start}.plan-row{grid-template-columns:1fr}.plan-rule{grid-row:auto}.plan-actions{grid-column:auto}}@media (width<=680px){.topbar{background:#fffdf8fa;height:56px;padding:0 16px;position:sticky}.main-nav{z-index:45;width:100%;height:calc(58px + env(safe-area-inset-bottom));padding:0 8px env(safe-area-inset-bottom);border-top:1px solid var(--line-strong);background:#fffdf8fa;grid-template-columns:repeat(3,1fr);justify-self:stretch;align-items:stretch;gap:0;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 8px #322b230d}.main-nav button,.main-nav .auth-nav{border-top:2px solid #0000;border-bottom:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:0;height:58px;font-size:10px;line-height:1;display:flex}.main-nav button.active,.main-nav .auth-nav.active{border-top-color:var(--signal);border-bottom-color:#0000}.main-nav .nav-icon{display:block}.main-nav .auth-lock{display:none}.main-nav .nav-count{min-width:16px;height:16px;padding:0 4px;font-size:9px;position:absolute;top:6px;left:calc(50% + 5px)}.source-state{display:none}.header-actions{grid-column:3}.signed-in-account{padding-left:7px}.signed-in-account>span{display:none}main{padding:24px 0 calc(88px + env(safe-area-inset-bottom))}.page-heading{align-items:flex-start;margin-bottom:20px}.page-heading h1{letter-spacing:-1.2px;font-size:30px}.location-button{text-overflow:ellipsis;white-space:nowrap;max-width:calc(100vw - 82px);overflow:hidden}.refresh-button{justify-content:center;width:36px;padding:0;font-size:0}.reservation-strip{grid-template-columns:auto 1fr;min-height:64px;padding:9px 11px}.reservation-strip>button{display:none}.reservation-copy span{text-overflow:ellipsis;white-space:nowrap;max-width:230px;overflow:hidden}.reservation-row{grid-template-columns:74px minmax(0,1fr);gap:12px;padding:14px 12px}.reservation-row>time{padding-right:10px}.reservation-details>div{flex-direction:column;align-items:flex-start;gap:3px}.reservation-actions{border-top:1px solid var(--line);grid-column:1/-1;padding-top:11px}.reservation-actions button{flex:1;min-width:0}.plans-intro{flex-direction:column;align-items:flex-start;gap:10px}.plans-intro>button,.notification-state{justify-content:center;width:100%}.plan-row{gap:16px;padding:16px 13px}.plan-row-heading{gap:8px}.plan-rule{grid-template-columns:1fr}.plan-rule>div,.plan-rule>div:not(:first-child){border-right:0;border-bottom:1px solid var(--line);grid-template-columns:80px 1fr;padding:8px 0}.plan-rule>div:last-child{border-bottom:0}.plan-actions{grid-template-columns:1fr 1fr;display:grid}.plan-actions .remove-plan{grid-column:1/-1}.day-picker{grid-template-columns:repeat(7,74px)}.filter-row{gap:8px;padding:10px}.search-field{min-width:0}.search-field input::placeholder{color:#0000}.filter-toggle{flex:none;font-size:0}.filter-toggle .filter-count{font-size:11px}.availability-key{display:none}.class-row{grid-template-columns:1fr 48px;min-height:92px}.class-summary{grid-template-columns:70px minmax(0,1fr);gap:10px;padding:13px 11px}.class-summary .capacity{grid-column:2}.capacity>div:first-child{justify-content:flex-start;gap:8px}.capacity-track{display:none}.watch-button{width:34px;margin-right:10px;padding:0}.watch-button span{display:none}.drawer-body{padding:24px 20px}.drawer-backdrop{align-items:stretch}.class-drawer{border-left:0;width:100%}.drawer-header{min-height:56px;padding:0 16px}.drawer-footer{padding:14px 16px calc(16px + env(safe-area-inset-bottom))}.modal-backdrop{padding:12px}.sign-in-dialog,.plan-dialog,.booking-preview-dialog{max-height:calc(100dvh - 24px);overflow-y:auto}.sign-in-header,.plan-dialog-header,.booking-preview-header{z-index:1;background:var(--surface);padding:16px;position:sticky;top:0}.sign-in-dialog form,.plan-dialog-body,.booking-preview-body{padding:18px 16px}.plan-fields{grid-template-columns:1fr}.plan-dialog-footer{padding:0 16px calc(16px + env(safe-area-inset-bottom))}.booking-preview-footer{padding:0 16px calc(16px + env(safe-area-inset-bottom));grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
