:root{color-scheme:dark;--bg:#070908;--panel:#101413;--line:#3b403e;--gold:#f4bd38;--text:#f7f7f5;--muted:#c0c3c1;--green:#12b957;--blue:#59b6ff;--danger:#ff7777;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html{background:var(--bg);min-height:100%;scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 78px 40px,#251b08 0,transparent 230px),linear-gradient(140deg,#090b0a,#030504 70%);color:var(--text)}button,a{font:inherit}button{color:inherit}button,a{-webkit-tap-highlight-color:transparent}
.app-header{max-width:820px;margin:auto;min-height:118px;padding:calc(20px + env(safe-area-inset-top)) 28px 18px;display:flex;align-items:center;justify-content:space-between;gap:20px}.organisation-brand{display:flex;align-items:center;gap:18px;color:#fff;text-decoration:none;min-width:0}.organisation-brand img{width:142px;height:84px;object-fit:contain}.organisation-brand span{padding-left:18px;border-left:1px solid #393a36;display:grid}.organisation-brand strong{font:600 clamp(28px,6vw,52px)/1.05 Georgia,serif;white-space:nowrap}.organisation-brand small{text-transform:uppercase;letter-spacing:.35em;color:#c4c4c2;margin-top:8px}.header-actions{display:flex;align-items:center;gap:10px}.contact-shortcut,.profile-shortcut{border:0;background:transparent;color:#fff;min-width:64px;display:grid;justify-items:center;gap:4px;text-decoration:none;cursor:pointer}.contact-shortcut[hidden]{display:none}.contact-shortcut>span{width:42px;height:42px;border:1px solid #777c79;border-radius:50%;display:grid;place-items:center;font-size:21px}.profile-icon{width:46px;height:46px;border:2px solid #a7aaa8;border-radius:50%;display:grid;place-items:center;font-size:28px}.contact-shortcut small,.profile-shortcut small{font-size:15px;white-space:nowrap}
.update-banner{position:sticky;top:0;z-index:20;background:#fff0bd;color:#191300;padding:12px 20px;display:flex;justify-content:center;align-items:center;gap:18px;font-weight:700}.update-banner[hidden]{display:none}.update-banner button{border:1px solid #392c00;border-radius:8px;background:#171200;color:#fff;padding:9px 14px;font-weight:800}
main{max-width:820px;margin:auto;padding:0 28px calc(112px + env(safe-area-inset-bottom))}.state-view{min-height:60vh;display:grid;place-content:center;justify-items:center;text-align:center;gap:12px}.state-view[hidden]{display:none}.state-view h1,.state-view p{margin:0}.state-view p{color:var(--muted);max-width:440px}.loader{width:46px;height:46px;border:4px solid #424642;border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite}.state-icon{width:54px;height:54px;border:2px solid var(--gold);border-radius:50%;display:grid;place-items:center;color:var(--gold);font-size:32px;font-weight:800}@keyframes spin{to{transform:rotate(1turn)}}.app-page{display:grid;gap:18px}.app-page[hidden]{display:none}
.passport-card{position:relative;overflow:hidden;border:1px solid #555b58;border-radius:24px;min-height:326px;padding:30px 34px;display:grid;grid-template-columns:1fr 310px;gap:24px;background:radial-gradient(circle at 68% 10%,#a55d0e80,transparent 43%),radial-gradient(circle at 19% 0,#35200a,transparent 45%),#080b0a;box-shadow:0 18px 50px #0008}.passport-card:before{content:"";position:absolute;left:-70px;top:-220px;width:580px;height:500px;border-radius:50%;border-right:1px solid #cb8414;background:linear-gradient(100deg,#090b0a,#24150788)}.passport-copy,.passport-credential{position:relative;z-index:1}.passport-copy{display:flex;flex-direction:column;align-items:flex-start}.passport-kicker{text-transform:uppercase;letter-spacing:.28em;color:var(--gold);font-weight:700;font-size:16px}.passport-copy h1{font-size:clamp(30px,6vw,48px);line-height:1.05;margin:16px 0}.membership-state{font-size:24px;color:var(--gold);margin-bottom:28px}.passport-copy dl{margin:auto 0 0;display:grid;gap:14px}.passport-copy dl div,.profile-card dl div{display:grid}.passport-copy dt,.profile-card dt{color:var(--muted);font-size:16px}.passport-copy dd{font-size:23px;font-weight:700;margin:3px 0 0}.passport-credential{display:grid;align-content:center;justify-items:center}.qr-frame{width:min(100%,250px);aspect-ratio:1;padding:14px;border-radius:22px;background:linear-gradient(135deg,#fff4c7,#f2b52d);box-shadow:0 0 35px #f2a91e33}.qr-frame img{width:100%;height:100%;display:block;background:#fff;border-radius:9px}.passport-mark{display:grid;justify-items:center;margin-top:8px}.passport-mark img{width:145px;max-height:52px;object-fit:contain}.passport-mark span{text-transform:uppercase;color:var(--gold);font-size:13px;letter-spacing:.45em;margin-left:.45em}
.passport-note,.offline-notice{border:1px solid var(--line);border-radius:20px;background:#0d1110;padding:15px 22px;display:flex;align-items:center;gap:18px}.passport-note>span{flex:0 0 48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#ffe07a,#eca51d);color:#111;display:grid;place-items:center;font:bold 31px Georgia}.passport-note p{font-size:17px;line-height:1.5;margin:0}.offline-notice{border-color:#977026;background:#281f0c;color:#ffe6a2}.offline-notice[hidden]{display:none}.offline-notice span{color:#e9d9aa}
.dashboard-card{border:1px solid var(--line);border-radius:21px;background:linear-gradient(145deg,#121615,#0b0e0d);padding:22px;box-shadow:0 13px 35px #0003}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:12px}.section-heading h2,.dashboard-card>h2{font-size:30px;line-height:1;margin:0 0 6px}.section-heading p{margin:0;color:var(--muted)}.section-heading button{border:0;background:transparent;color:#ddd;cursor:pointer;min-height:44px}.section-heading button b,.section-heading>b{font-size:36px}
.booking-list{display:grid}.booking-item{display:grid;grid-template-columns:94px 1fr auto;gap:20px;align-items:center;padding:16px 6px;border-bottom:1px solid #353a38}.booking-item:last-child{border-bottom:0}.booking-item--featured{grid-template-columns:112px minmax(0,1fr) 205px}.date-block{border:1px solid #956b12;border-radius:13px;min-height:114px;display:grid;place-content:center;text-align:center;background:#111310}.date-block strong{font-size:38px;line-height:1;color:var(--gold)}.date-block span,.date-block small{font-size:16px;margin-top:6px}.date-block small{font-size:13px}.booking-copy{min-width:0}.booking-copy h3,.history-item h3{font-size:22px;margin:0 0 4px}.booking-copy p,.history-item p{margin:2px 0;color:#d2d4d2;font-size:17px}.venue-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking-meta{display:flex;align-items:center;gap:10px;margin-top:9px;flex-wrap:wrap}.booking-meta>span{border-radius:999px;background:#323433;padding:7px 13px;font-weight:700}.booking-meta .price-state{background:#087f3a}.booked-state{background:var(--green)!important;padding:10px 18px!important;border-radius:999px;font-weight:800;white-space:nowrap}.cancel-link{border:0;background:transparent;color:var(--blue);padding:8px 4px;cursor:pointer}.booking-actions{display:grid;gap:5px}.booking-actions button{min-height:46px;border:1px solid #686d6a;border-radius:11px;background:#111413;font-weight:700;cursor:pointer}.booking-actions .booked-state{text-align:center}.book-action{display:grid;place-items:center;min-width:150px;min-height:74px;border-radius:13px;text-decoration:none;background:linear-gradient(120deg,#ffe276,#eaa413);color:#171000;font-size:22px;font-weight:800}.wide-link{width:100%;min-height:48px;margin-top:12px;border:1px solid #555a57;border-radius:11px;background:#101312;font-weight:700;cursor:pointer}.wide-link span{font-size:23px;margin-left:12px}
.booking-copy .session-label{margin:1px 0 5px;color:#f0c657;font-size:16px;font-weight:800}.venue-details{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;margin-top:3px}.venue-details .venue-line{margin:0}.venue-address{flex-basis:100%;color:var(--muted);font-size:15px;line-height:1.35}.directions-link{border:0;background:transparent;color:var(--blue);padding:4px 0;font-weight:700;cursor:pointer}.directions-link:focus-visible,.contact-shortcut:focus-visible{outline:3px solid #f4bd3870;outline-offset:3px}
.attendance-summary-link{width:100%;text-align:left;cursor:pointer}.attendance-summary{display:grid;grid-template-columns:1.3fr repeat(3,1fr);align-items:end}.attendance-summary>div{min-height:80px;padding:5px 18px;border-left:1px solid #404442;display:grid;align-content:end;text-align:center}.attendance-summary>div:first-child{border-left:0;text-align:left}.attendance-summary strong{font-size:30px}.attendance-total strong{font-size:48px}.attendance-summary span{color:#ddd}.admin-card>div{display:flex;align-items:center;gap:22px}.admin-card h2,.admin-card p{margin:0}.admin-icon{font-size:46px;color:var(--gold)}.outline-action{float:right;margin-top:-54px;min-height:50px;padding:12px 20px;border:1px solid #6a6f6c;border-radius:10px;text-decoration:none;color:#fff;font-weight:700}.admin-context{clear:both;padding-top:12px!important;color:var(--muted)}.powered-brand{display:grid;justify-items:center;color:#bbb;margin:10px auto 0}.powered-brand img{width:210px;margin-top:3px}
.page-title{display:flex;align-items:center;gap:15px;padding:10px 2px}.page-title button{width:48px;height:48px;border:1px solid #565b58;border-radius:50%;background:#111;font-size:30px}.page-title h1{font-size:34px;margin:0}.page-title p{margin:4px 0 0;color:var(--muted)}.attendance-categories{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}.attendance-categories button{border:1px solid var(--line);border-radius:15px;background:#111514;padding:16px;display:grid;cursor:pointer}.attendance-categories button.active{border-color:var(--gold);background:#292008}.attendance-categories strong{font-size:28px}.attendance-categories span{color:var(--muted)}.history-item{display:grid;grid-template-columns:82px 1fr;gap:16px;align-items:center;padding:14px 3px;border-bottom:1px solid #333836}.history-item:last-child{border-bottom:0}.history-item .date-block{min-height:90px}.history-item span{display:inline-block;color:#56db8c;margin-top:6px}.profile-card dl{margin:0}.profile-card dl div{padding:14px 0;border-bottom:1px solid #343936}.profile-card dl div:last-child{border-bottom:0}.profile-card dd{margin:4px 0 0;font-size:20px}.privacy-card p{color:var(--muted)}.privacy-card button{border:0;background:transparent;color:var(--danger);padding:10px 0}
.profile-help{display:flex;align-items:center;justify-content:space-between;gap:22px}.profile-help h2{font-size:24px;margin:0 0 6px}.profile-help p{color:var(--muted);font-size:17px;line-height:1.45;margin:0}.profile-help .primary-button{flex:0 0 auto;min-width:190px}
.primary-button,.secondary-button,.danger-button{display:inline-grid;place-items:center;min-height:48px;border-radius:11px;padding:11px 18px;text-decoration:none;font-weight:800;cursor:pointer}.primary-button{border:0;background:linear-gradient(120deg,#ffe276,#eaa413);color:#171000}.secondary-button{border:1px solid #666;background:#151817;color:#fff}.danger-button{border:0;background:#bb3333;color:#fff}.full{width:100%}.empty{color:var(--muted);padding:16px 2px}
.bottom-nav{position:fixed;z-index:15;bottom:0;left:0;right:0;min-height:82px;padding:8px max(18px,calc((100vw - 820px)/2)) calc(8px + env(safe-area-inset-bottom));background:#0a0d0cf5;border-top:1px solid #363b38;display:grid;grid-template-columns:repeat(4,1fr);backdrop-filter:blur(16px)}.bottom-nav[hidden]{display:none}.bottom-nav button{position:relative;border:0;background:transparent;color:#b9bcba;min-height:62px;display:grid;place-items:center;align-content:center;gap:2px;cursor:pointer}.bottom-nav button span{font-size:27px}.bottom-nav button.active{color:var(--gold)}.bottom-nav button.active:after{content:"";position:absolute;bottom:-2px;width:70%;height:4px;border-radius:5px;background:var(--gold)}
.install-dialog{position:fixed;inset:0;z-index:50}.install-dialog[hidden]{display:none}.install-dialog button[hidden]{display:none!important}.install-dialog__backdrop{position:absolute;inset:0;background:#000c}.install-dialog__panel{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,560px);max-height:92vh;overflow:auto;background:#151918;border:1px solid #505552;border-radius:24px 24px 0 0;padding:30px 24px calc(24px + env(safe-area-inset-bottom))}.install-dialog__close{position:absolute;right:18px;top:14px;border:0;background:transparent;font-size:32px}.install-dialog__icon{width:62px;border-radius:14px}.install-dialog h2{font-size:30px;margin:5px 0}.install-dialog__intro,.install-option p,.install-message p{color:var(--muted)}.install-steps{display:grid;gap:10px;margin:18px 0}.install-option,.install-message,.install-success{border:1px solid #414643;border-radius:12px;padding:14px}.install-option p{display:flex;align-items:center;gap:9px;line-height:1.45}.install-step-icon{position:relative;flex:0 0 30px;width:30px;height:30px;display:inline-grid;place-items:center;border:1px solid #767b78;border-radius:7px;color:var(--gold);font-size:21px;font-weight:800;line-height:1}.install-step-icon--add{font-size:25px}.install-step-icon--menu{font-size:25px}.install-step-icon--share{overflow:visible}.install-share-arrow{position:absolute;top:-3px;left:50%;transform:translateX(-50%);z-index:1;font-size:21px;line-height:1;background:#151918;padding:0 2px}.install-share-box{position:absolute;left:7px;right:7px;bottom:5px;height:13px;border:2px solid var(--gold);border-top-width:1px;border-radius:2px}.eyebrow{text-transform:uppercase;letter-spacing:.18em;color:var(--gold);font-weight:700}.cancel-error{color:var(--danger)}body.dialog-open{overflow:hidden}.calendar-summary{margin:14px 0 18px;padding:13px;border:1px solid #444a47;border-radius:12px;background:#0e1211}.calendar-summary p{margin:5px 0;color:var(--muted)}.calendar-options{display:grid;gap:10px}.app-toast{position:fixed;z-index:70;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(calc(100% - 28px),430px);padding:14px 18px;border:1px solid #c79222;border-radius:13px;background:#3a2b0a;color:#fff4c6;text-align:center;font-weight:800;box-shadow:0 14px 38px #0009}.app-toast[hidden]{display:none}
@media(max-width:650px){.app-header{min-height:94px;padding:calc(14px + env(safe-area-inset-top)) 16px 12px}.organisation-brand{gap:9px}.organisation-brand img{width:82px;height:60px}.organisation-brand span{padding-left:9px}.organisation-brand strong{font-size:25px}.organisation-brand small{font-size:9px}.header-actions{gap:3px}.contact-shortcut,.profile-shortcut{min-width:49px}.contact-shortcut>span,.profile-icon{width:38px;height:38px}.contact-shortcut small,.profile-shortcut small{font-size:11px}main{padding:0 12px calc(102px + env(safe-area-inset-bottom))}.app-page{gap:12px}.passport-card{min-height:252px;padding:22px 20px;grid-template-columns:1fr 142px;gap:10px;border-radius:18px}.passport-kicker{font-size:11px}.passport-copy h1{font-size:27px;margin:10px 0}.membership-state{font-size:17px;margin-bottom:15px}.passport-copy dt{font-size:12px}.passport-copy dd{font-size:16px}.qr-frame{width:136px;padding:8px;border-radius:13px}.passport-mark img{width:100px}.passport-mark span{font-size:9px}.passport-note,.offline-notice{border-radius:15px;padding:11px 13px;gap:11px}.passport-note>span{flex-basis:36px;height:36px;font-size:24px}.passport-note p{font-size:13px}.dashboard-card{padding:16px;border-radius:16px}.section-heading h2,.dashboard-card>h2{font-size:24px}.booking-item,.booking-item--featured{grid-template-columns:72px minmax(0,1fr);gap:12px;padding:12px 0}.date-block{min-height:88px}.date-block strong{font-size:29px}.date-block span{font-size:13px}.booking-copy h3,.history-item h3{font-size:17px}.booking-copy p,.history-item p{font-size:14px}.booking-actions,.book-action{grid-column:1/-1}.booking-actions{grid-template-columns:1fr}.booking-actions .booked-state{grid-column:1/-1}.book-action{min-height:50px}.attendance-summary{grid-template-columns:1.25fr repeat(3,1fr)}.attendance-summary>div{padding:4px 7px;min-height:66px}.attendance-summary strong{font-size:22px}.attendance-total strong{font-size:36px}.attendance-summary span{font-size:11px}.admin-card .outline-action{float:none;margin:14px 0 0;display:grid;place-items:center}.admin-context{font-size:13px}.profile-help{align-items:stretch;flex-direction:column}.profile-help .primary-button{width:100%;min-width:0}.bottom-nav{font-size:12px}.bottom-nav button span{font-size:23px}.page-title h1{font-size:28px}.history-item{grid-template-columns:68px 1fr}.history-item .date-block{min-height:76px}}
@media(max-width:390px){.passport-card{grid-template-columns:1fr 122px}.qr-frame{width:118px}.passport-copy h1{font-size:23px}.passport-copy dd{font-size:14px}.passport-mark img{width:82px}.organisation-brand strong{font-size:21px}.attendance-summary>div:nth-child(n+4){display:none}.attendance-summary{grid-template-columns:1.2fr 1fr 1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.loader{animation-duration:1.6s}}
.auth-view{max-width:820px;margin:18px auto 40px}.auth-view[hidden],.install-landing[hidden],.auth-panel[hidden]{display:none}.auth-panel{max-width:620px;margin:32px auto;padding:clamp(24px,6vw,42px)}
.auth-view h1{font-family:Georgia,serif;font-size:clamp(2rem,8vw,3.3rem);margin:.25rem 0 1rem}
.auth-view form,.profile-form{display:grid;gap:16px;margin-top:24px}
.auth-view label,.profile-form label{display:grid;gap:7px;font-weight:700;color:inherit}
.auth-view input,.profile-form input,.auth-view select,.profile-form select{width:100%;box-sizing:border-box;border:1px solid #6a6f6c;border-radius:10px;background:#fff;padding:13px 14px;font:inherit;color:#111}
.auth-view input:focus,.profile-form input:focus,.auth-view select:focus,.profile-form select:focus{outline:3px solid rgba(214,168,75,.28);border-color:#d6a84b}
.auth-message{min-height:1.5em;color:#f0c657;font-weight:700}.profile-form small{color:var(--muted);font-weight:400;line-height:1.45}
.install-landing{padding:clamp(22px,5vw,40px);overflow:hidden}.install-landing__hero{display:flex;align-items:center;gap:18px}.install-landing__icon{width:72px;height:72px;border-radius:17px}.install-landing__hero h1{margin:.2rem 0}.install-landing__lead{max-width:690px;color:var(--muted);font-size:18px;line-height:1.55}.install-landing__lead strong{color:var(--text)}.install-benefits-title{font-size:20px;margin:22px 0 0}.install-benefits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 20px;margin:12px 0 20px;padding:0;list-style:none}.install-benefits li{position:relative;padding-left:27px}.install-benefits li:before{content:"✓";position:absolute;left:0;color:var(--gold);font-weight:900}.install-landing__actions{max-width:470px;margin:24px auto 36px;text-align:center;display:grid;gap:9px}.install-landing__actions .primary-button{min-height:58px;font-size:18px;text-transform:uppercase;letter-spacing:.04em}.install-landing__actions small{color:var(--gold);font-weight:800}.install-anywhere{border-top:1px solid var(--line);padding-top:26px}.install-anywhere>h2{font-size:30px;margin:4px 0 8px}.install-anywhere>p:not(.eyebrow){color:var(--muted);margin:0 0 18px}.install-guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.install-guide-card{min-width:0;border:1px solid #3f4542;border-radius:16px;padding:16px;background:#0b0f0e}.install-guide-card.preferred{border-color:var(--gold);box-shadow:0 0 0 2px #f4bd3826}.install-guide-card.preferred:before{content:"This device";display:inline-block;margin-bottom:10px;border-radius:999px;background:#6e510d;color:#fff2c4;padding:4px 9px;font-size:12px;font-weight:800}.guide-heading{display:flex;align-items:center;gap:10px}.guide-heading h3{font-size:19px;margin:0}.guide-heading small{color:var(--muted)}.guide-device{width:34px;height:45px;border:2px solid #d7d9d7;border-radius:7px;display:grid;place-items:center;font-size:0}.guide-device:after{content:"";width:4px;height:4px;border-radius:50%;background:var(--gold);align-self:end;margin-bottom:3px}.guide-device--computer{width:48px;height:34px;border-radius:4px}.guide-device--computer:after{width:18px;height:2px;margin-bottom:-7px}.guide-visual{position:relative;min-height:88px;margin:15px 0;padding:12px;border:1px solid #454a47;border-radius:10px;background:#171b1a;display:grid;gap:7px;align-content:center}.guide-menu-row{background:#fff;color:#171717;border-radius:7px;padding:8px;font-size:13px;font-weight:700}.guide-visual b{justify-self:end;color:var(--gold);font-size:13px}.share-symbol,.guide-dots,.install-symbol{position:absolute;right:9px;top:5px;color:var(--gold);font-size:22px;font-weight:800}.share-symbol{border:1px solid #767b78;border-radius:5px;width:30px;height:31px;display:grid;place-items:center;padding-bottom:5px}.install-guide-card ol{margin:0;padding-left:22px;color:#d4d7d5;font-size:14px;line-height:1.45}.install-guide-card li+li{margin-top:5px}
@media(max-width:720px){.install-guide-grid{grid-template-columns:1fr}.install-guide-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:0 14px}.install-guide-card.preferred:before,.guide-heading{grid-column:1/-1}.guide-visual{grid-column:1}.install-guide-card ol{grid-column:2;grid-row:2/4;align-self:center}}
@media(max-width:480px){.auth-view{margin:5px auto 24px}.install-landing{padding:19px 16px}.install-landing__hero{align-items:flex-start;gap:12px}.install-landing__icon{width:54px;height:54px;border-radius:13px}.install-landing__hero h1{font-size:31px}.install-benefits{grid-template-columns:1fr}.install-anywhere>h2{font-size:25px}.install-guide-card{display:block}.install-guide-card ol{margin-top:12px}}
dialog{border:1px solid #505552;border-radius:18px;padding:0;background:#151918;color:#fff;box-shadow:0 24px 70px rgba(0,0,0,.55);max-width:min(560px,calc(100vw - 30px))}
dialog::backdrop{background:rgba(0,0,0,.75)}dialog form{padding:28px;margin:0}
