:root{--brand:#1b75bc;--brand-light:#29abe2;--brand-dark:#14548a;--accent:#f5821f;--otter-brown:#a97350;--bg:#f2f8fc;--surface:#fff;--text:#1c2733;--border:#d6e4ef;--amber:#b8860b;--red:#b3261e;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.brand-logo{max-width:100%;height:auto;display:block}.brand-logo-large{max-height:130px;margin:0 auto}.brand-compact{align-items:center;gap:.5rem;display:inline-flex}.brand-otter{width:auto;height:2.6em}.brand-words{flex-direction:column;font-family:Comic Sans MS,Segoe UI,sans-serif;line-height:1.05;display:flex}.brand-name{font-size:1.15rem;font-weight:700}.brand-ogden{color:var(--brand);font-style:italic}.brand-otters{color:var(--accent)}.staff-title{align-items:center;gap:.7rem;display:flex}.page-title{color:var(--brand-dark)}.login-card .brand-logo-large{margin:0 auto .3rem}.portal-header .brand-logo-large{max-height:84px;margin:0}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}button{cursor:pointer;font-family:inherit}.login-page{justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:100%;max-width:360px;padding:2.5rem;box-shadow:0 4px 24px #0000000f}.login-card h1{color:var(--brand-dark);margin:0 0 .25rem;font-size:1.5rem}.login-card .subtitle{color:#667;margin:0 0 1.5rem}.login-card form{flex-direction:column;gap:.35rem;display:flex}.login-card label{margin-top:.5rem;font-size:.85rem;font-weight:600}.login-card input{border:1px solid var(--border);border-radius:8px;padding:.6rem .75rem;font-size:1rem}.login-card button{background:var(--brand);color:#fff;border:none;border-radius:8px;margin-top:1.25rem;padding:.7rem;font-size:1rem;font-weight:600}.login-card button:disabled{opacity:.6;cursor:not-allowed}.error{color:var(--red);margin:.5rem 0 0;font-size:.9rem}.app-page{max-width:1100px;margin:0 auto;padding:1.5rem}.app-page header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.app-page h1{color:var(--brand-dark);margin:0;font-size:1.35rem}.main-nav{gap:.5rem;display:flex}.main-nav a{color:var(--brand-dark);border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:.4rem .9rem;font-size:.9rem;text-decoration:none}.main-nav a.active{background:var(--brand);border-color:var(--brand);color:#fff}.header-actions{align-items:center;gap:1rem;display:flex}.header-actions button{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.4rem .8rem}.role-badge{text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;border-radius:999px;padding:.2rem .7rem;font-size:.75rem;font-weight:700;display:inline-block}.role-badge-director{background:var(--brand-dark);color:#fff}.role-badge-manager{color:#fff;background:#6a3ba8}.role-badge-teacher{color:#1a4f8a;background:#e6f0fa}.role-badge-reception{color:#4a5a5c;background:#eef4f4}.level-unset{font-style:italic}.day-tabs{flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;display:flex}.day-tabs button{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:.4rem 1rem;font-size:.9rem}.day-tabs button.active{background:var(--brand);border-color:var(--brand);color:#fff}.timetable-grid{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:10px;width:100%;overflow:hidden}.timetable-grid th,.timetable-grid td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:.6rem .8rem}.timetable-grid th{text-transform:uppercase;letter-spacing:.03em;color:#4a5a5c;background:#eef4f4;font-size:.8rem}.timetable-grid tr.inactive{opacity:.55}.time-cell{white-space:nowrap;font-weight:600}.notes-cell{color:#5a6a6c;font-size:.82rem}.session-chip{flex-direction:column;gap:.1rem;display:flex}.session-name{font-weight:600}.session-meta{color:#5a6a6c;font-size:.78rem}.toolbar{gap:.75rem;margin-bottom:1rem;display:flex}.toolbar input[type=search]{border:1px solid var(--border);border-radius:8px;flex:1;padding:.55rem .8rem;font-size:.95rem}.notice{background:#fff8e6;border:1px solid #e6d9a8;border-radius:8px;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;padding:.8rem 1rem;font-weight:500;display:flex}.data-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:10px;width:100%;overflow:hidden}.data-table th,.data-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:.6rem .8rem}.data-table th{text-transform:uppercase;letter-spacing:.03em;color:#4a5a5c;background:#eef4f4;font-size:.8rem}.muted{color:#7a8a8c}.chip{border-radius:999px;margin-left:.5rem;padding:.1rem .55rem;font-size:.75rem;font-weight:600;display:inline-block}.chip.warn{color:var(--red);background:#fdecea}.chip.credit{color:#6a3ba8;background:#f0e6fa}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:1rem;padding:1.25rem}.card h2{color:var(--brand-dark);margin-top:0;font-size:1.1rem}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem 1rem;margin-bottom:1rem;display:grid}.form-grid label{flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600;display:flex}.form-grid input,.form-grid select{border:1px solid var(--border);border-radius:8px;padding:.5rem .7rem;font-size:.95rem;font-weight:400}.payment-preview{background:#eef7f4;border:1px solid #cfe6de;border-radius:8px;margin-bottom:1rem;padding:.9rem 1.1rem}.payment-preview h3{margin:0 0 .5rem;font-size:.95rem}.payment-preview ul{margin:0 0 .5rem;padding-left:1.2rem}.payment-preview .total{margin:0;font-size:1.02rem}.date-label{align-items:center;gap:.6rem;font-size:.9rem;font-weight:600;display:flex}.date-label input{border:1px solid var(--border);border-radius:8px;padding:.45rem .7rem;font-size:.95rem}.register-slot h2{font-size:1rem}.register-row{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.45rem 0;display:flex}.register-progress-panel{background:var(--surface-2,#f7f8fa);border-radius:8px;flex-basis:100%;margin-top:.25rem;padding:.5rem .75rem}.register-progress-panel .milestone-list{margin:.35rem 0 0}.register-row select{border:1px solid var(--border);border-radius:8px;min-width:230px;padding:.4rem .6rem}.register-row select.status-attended{background:#e9f6ee;border-color:#bfe3cd}.register-row select.status-ill,.register-row select.status-holiday{background:#fff6e6;border-color:#ecd9ab}.register-row select.status-no_show,.register-row select.status-no_show_online{background:#fdecea;border-color:#f3c1bd}button.chip{cursor:pointer;border:none}.chip.payment-paid,.chip.payment-paid_ahead{color:#1d6b3a;background:#e9f6ee}.chip.payment-due,.chip.payment-pending_waived{color:#8a6100;background:#fff3d6}.chip.payment-late{color:var(--red);background:#fdecea}.toolbar-date{align-self:center;font-weight:600}.block-legend{padding:.8rem 1rem}.legend-swatches{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.legend-title{color:var(--brand-dark);margin-right:.25rem;font-size:.85rem;font-weight:600}.block-swatch{border:2px solid #0000;border-radius:6px;padding:.15rem .5rem;font-size:.75rem;font-weight:700;display:inline-block}.block-swatch.current{border-color:#16323a;box-shadow:inset 0 0 0 2px #fff}.legend-note{margin:.5rem 0 0;font-size:.82rem}.swatch-inline{vertical-align:-.08rem;border-radius:3px;width:.7rem;height:.7rem;margin-right:.35rem;display:inline-block}.time-row{align-items:flex-start;gap:.9rem;margin-bottom:1rem;display:flex}.time-label{color:var(--brand-dark);text-align:right;flex:0 0 3.6rem;padding-top:1.1rem;font-size:1.05rem;font-weight:700}.time-sessions{flex-wrap:wrap;flex:1;gap:1rem;display:flex}.time-sessions .register-slot{flex:420px;min-width:0;margin-bottom:0}.slot-notes{margin:-.25rem 0 .5rem;font-size:.82rem}.over-capacity{color:var(--red);font-weight:700}.roles-editor{flex-direction:column;gap:.3rem;display:flex}.temp-password{letter-spacing:.12em;text-align:center;border:1px dashed var(--border);-webkit-user-select:all;user-select:all;background:#eef4f4;border-radius:10px;margin:.5rem 0;padding:.8rem 1rem;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:1.8rem;font-weight:700}.register-roster-actions{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.register-roster-actions select{border:1px solid var(--border);border-radius:8px;max-width:12rem;padding:.3rem .5rem;font-size:.82rem}.level-select.needs-level{color:#8a6100;background:#fff6e6;border-color:#e6a23c;font-weight:600}.remove-btn{color:var(--red);background:#fdecea;border:1px solid #f3c1bd;border-radius:8px;padding:.3rem .6rem;font-size:.82rem;font-weight:600}.modal-backdrop{z-index:50;background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{width:100%;max-width:560px;max-height:calc(100vh - 2rem);margin:1rem;overflow-y:auto;box-shadow:0 12px 40px #0000002e}.modal-actions{justify-content:flex-end;gap:.6rem;display:flex}.modal-actions button{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.5rem 1rem}.checkbox-label span{align-items:center;gap:.4rem;font-weight:400;display:flex}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.9rem 1.5rem;display:grid}.settings-grid label{flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600;display:flex}.setting-row{gap:.5rem;display:flex}.setting-row input{border:1px solid var(--border);border-radius:8px;flex:1;padding:.5rem .7rem;font-size:.95rem;font-weight:400}.setting-row button{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.4rem .9rem}.public-page{max-width:760px;margin:0 auto;padding:1.25rem 1rem 3rem}.public-header{text-align:center;margin-bottom:1.5rem}.public-header h1{color:var(--brand-dark);margin-bottom:.3rem;font-size:1.6rem}.public-header p{margin:.2rem 0}.public-notice{z-index:10;position:sticky;top:.5rem}.public-day h2{color:var(--brand-dark);border-bottom:2px solid var(--brand);margin:1.5rem 0 .6rem;padding-bottom:.3rem;font-size:1.05rem}.public-sessions{flex-direction:column;gap:.5rem;display:flex}.public-session{background:var(--surface);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem 1rem;display:flex}.public-session.full{opacity:.65}.public-footer{text-align:center;color:#6a7a7c;margin-top:2.5rem;font-size:.85rem}.booking-actions{flex-wrap:wrap;gap:.35rem;display:flex}.booking-actions button{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.3rem .7rem;font-size:.82rem}.chip.status-chip-confirmed{color:#1d6b3a;background:#e9f6ee}.chip.status-chip-held{color:#8a6100;background:#fff3d6}.chip.status-chip-cancelled,.chip.status-chip-auto_released{color:#666;background:#eee}.chip.status-chip-attended{color:#1a4f8a;background:#e6f0fa}.chip.status-chip-no_show{color:var(--red);background:#fdecea}.adhoc-row{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.adhoc-row input{border:1px solid var(--border);border-radius:8px;padding:.45rem .6rem}.adhoc-row button{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.35rem .6rem}.events-layout{grid-template-columns:minmax(260px,1fr) 2fr;align-items:start;gap:1rem;display:grid}@media (width<=800px){.events-layout{grid-template-columns:1fr}}.events-list{flex-direction:column;gap:.5rem;display:flex}.event-card{text-align:left;cursor:pointer;font:inherit;flex-direction:column;gap:.2rem;display:flex}.event-card.selected{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.event-detail h2{margin:0}.club-days{flex-direction:column;gap:.4rem;margin-bottom:.8rem;display:flex}.club-day{justify-content:space-between;align-items:center;gap:1rem;font-size:.9rem;display:flex}.club-day select{border:1px solid var(--border);border-radius:8px;padding:.4rem .6rem}.one-to-one-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.75rem;display:grid}.one-to-one-card h3{margin:0 0 .4rem;font-size:1rem}.one-to-one-card.free{border-style:dashed}.one-to-one-card.booked{border-left:4px solid var(--brand)}.teacher-tbc{color:var(--amber);font-size:.85rem;font-weight:600}.one-to-one-card .note{font-style:italic}.one-to-one-card .booking-actions{margin-top:.5rem}.child-link{color:inherit;text-decoration:none}.child-link:hover strong{color:var(--brand);text-decoration:underline}.status-key{color:#4a5a5c;flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.82rem;display:flex}.status-dot{border:1px solid var(--border);border-radius:50%;width:14px;height:14px;margin-left:.6rem;display:inline-block}.status-dot.white{background:#fff}.status-dot.yellow{background:#f5cf3f}.status-dot.blue{background:#2f7fd1}.lang-toggle{border:1px solid var(--border);background:var(--surface);border-radius:999px;margin-left:.8rem;padding:.25rem .8rem;font-size:.8rem}.level-block{border-top:1px solid var(--border)}.level-block.current .level-header{background:#eef7f4}.level-header{width:100%;font:inherit;text-align:left;background:0 0;border:none;align-items:center;gap:.8rem;padding:.6rem .4rem;display:flex}.milestone-list{flex-direction:column;gap:.35rem;margin:0;padding:.2rem .4rem .8rem;list-style:none;display:flex}.milestone-list li{align-items:flex-start;gap:.6rem;font-size:.92rem;display:flex}.milestone-chip{border:2px solid var(--border);border-radius:50%;flex-shrink:0;width:30px;height:30px;font-size:.8rem;font-weight:700}.milestone-chip:disabled{cursor:default}.milestone-chip.ms-white{color:#667;background:#fff}.milestone-chip.ms-yellow{color:#5d4a00;background:#f5cf3f;border-color:#d9b21a}.milestone-chip.ms-blue{color:#fff;background:#2f7fd1;border-color:#1f5fa8}.ws-level{border-top:1px solid var(--border);align-items:center;gap:1rem;padding:.4rem 0;display:flex}.ws-level strong{width:70px}.ws-chips{flex-wrap:wrap;gap:.35rem;display:flex}.badge-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.6rem;display:grid}.badge-card{border:1px solid var(--border);border-radius:10px;padding:.7rem .9rem}.badge-card.achieved{border-color:var(--brand);background:#eef7f4}.badge-dates{flex-direction:column;gap:.2rem;margin-top:.4rem;font-size:.8rem;display:flex}.badge-set{border:1px dashed var(--border);color:var(--brand-dark);background:0 0;border-radius:6px;align-self:flex-start;padding:.15rem .5rem;font-size:.78rem}.feedback-composer{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.feedback-composer textarea{border:1px solid var(--border);font:inherit;resize:vertical;border-radius:8px;padding:.6rem .8rem}.feedback-composer button{align-self:flex-end}.feedback-item{border-top:1px solid var(--border);padding:.6rem 0}.feedback-item p{margin:.25rem 0 0}.portal-page{max-width:640px;margin:0 auto;padding:.9rem .9rem 3rem}.portal-header{justify-content:space-between;align-items:center;margin-bottom:.6rem;display:flex}.portal-header h1{color:var(--brand-dark);margin:0;font-size:1.3rem}.portal-header button{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:.35rem .8rem}.portal-banner{background:var(--brand);color:#fff;text-align:center;border-radius:10px;margin-bottom:.8rem;padding:.6rem 1rem}.portal-tabs{margin-bottom:.8rem}.payment-banner{font-weight:600}.payment-banner.pb-paid,.payment-banner.pb-paid_ahead{color:#1d6b3a;background:#e9f6ee;border-color:#bfe3cd}.payment-banner.pb-due,.payment-banner.pb-pending_waived{color:#8a6100;background:#fff3d6;border-color:#ecd9ab}.payment-banner.pb-late{color:var(--red);background:#fdecea;border-color:#f3c1bd}.portal-key{margin:0 0 .5rem}.portal-badges{flex-wrap:wrap;gap:.4rem;display:flex}.portal-badges .chip{color:#667;background:#eee;margin-left:0}.portal-badges .chip.credit{color:#6a3ba8;background:#f0e6fa}.portal-hint{margin-top:1rem;font-size:.82rem}.tuck-tile-card{padding:0;position:relative;overflow:hidden}.tuck-tile{cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;flex-direction:column;gap:.2rem;width:100%;padding:.7rem .9rem;display:flex}.tuck-tile:disabled{opacity:.55;cursor:not-allowed}.tuck-edit-btn{border:none;border-top:1px solid var(--border);background:var(--surface-2,#f7f8fa);border-radius:0;width:100%;padding:.3rem;font-size:.78rem}.stock-count-section{text-transform:uppercase;letter-spacing:.04em;color:var(--brand-dark);border-bottom:1px solid var(--border);margin:.9rem 0 .3rem;padding-bottom:.2rem;font-size:.8rem}.order-line{border:1px solid var(--border);border-radius:10px;margin-bottom:.75rem;padding:.75rem 1rem .5rem}.order-line-footer{justify-content:space-between;align-items:center;gap:1rem;margin-top:.25rem;display:flex}.order-total{align-self:center;font-size:1rem}.customer-picker{margin-bottom:.75rem}.customer-picker input{border:1px solid var(--border);border-radius:8px;width:100%;margin-top:.25rem;padding:.5rem .75rem}.customer-hits{border:1px solid var(--border);border-radius:8px;flex-direction:column;margin-top:.25rem;display:flex;overflow:hidden}.customer-hits button{text-align:left;background:var(--surface);border:none;border-bottom:1px solid var(--border);padding:.5rem .75rem}.customer-hits button:hover{background:#eef4f4}.director-only{border-left:4px solid var(--brand-dark)}.funnel-grid{flex-direction:column;gap:.35rem;display:flex}.funnel-bar-row{grid-template-columns:140px 1fr 2rem;align-items:center;gap:.6rem;font-size:.85rem;display:grid}.funnel-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.funnel-bar-track{background:var(--bg);border:1px solid var(--border);border-radius:6px;height:14px;overflow:hidden}.funnel-bar{background:var(--brand);border-radius:6px 0 0 6px;height:100%}.site-visit-link{border:none;border-radius:8px;padding:.55rem 1.1rem;font-weight:600;text-decoration:none;display:inline-block}.site-hero{object-fit:cover;border-radius:12px;width:100%;max-height:260px;margin-bottom:1rem}.site-landing-buttons{flex-direction:column;gap:.7rem;max-width:420px;margin:1.5rem auto 0;display:flex}.site-door{color:var(--text);background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:10px;flex-direction:column;gap:.15rem;padding:1rem 1.2rem;text-decoration:none;display:flex}.site-door strong{color:var(--brand-dark);font-size:1.05rem}.site-door.primary-door{background:var(--brand);border-color:var(--brand)}.site-door.primary-door strong,.site-door.primary-door .muted{color:#fff}button.primary{background:var(--brand);border:1px solid var(--brand);color:#fff;border-radius:8px;padding:.55rem 1rem;font-weight:600}button.primary:disabled{opacity:.6;cursor:not-allowed}button.danger{background:var(--red);border:1px solid var(--red);color:#fff;border-radius:8px;padding:.55rem 1rem;font-weight:600}button.danger:disabled{opacity:.5;cursor:not-allowed}
