:root{font-family:'DM Sans',-apple-system,BlinkMacSystemFont,sans-serif;color:#232823;background:#e9eae5;font-synthesis:none;--lime:#d8ee98;--muted:#7b8077;--paper:#f6f6f2}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #65972a;outline-offset:4px}button{border:0}a{color:inherit;text-decoration:none}.shell{max-width:460px;min-height:100dvh;background:var(--paper);margin:auto;padding:25px 22px max(32px,env(safe-area-inset-bottom))}.top{display:flex;justify-content:space-between;align-items:center;margin:0 2px 23px}.brand{font-size:18px;font-weight:700;letter-spacing:-.7px;display:flex;gap:8px;align-items:center}.brand svg{width:25px;height:25px}.bell,.back{width:44px;height:44px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 3px 15px #23332205}.bell svg{width:20px;height:20px}.eyebrow{font-size:12px;letter-spacing:2px;font-weight:600;text-transform:uppercase;color:var(--muted)}.hero{position:relative;border-radius:26px;overflow:hidden;height:260px;background:#a4aea0;margin-bottom:24px}.hero img{height:100%;width:100%;object-fit:cover;transition:opacity .25s}.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#0001 20%,#07190888)}.hero-copy{position:absolute;z-index:1;left:24px;bottom:25px;color:white}.hero-copy span{font-size:13px;opacity:.85}.hero h1{font-size:34px;font-weight:500;letter-spacing:-1.3px;margin:6px 0 0}.hero-tag{position:absolute;right:18px;top:18px;z-index:1;border:1px solid #ffffff70;border-radius:99px;background:#ffffff1c;backdrop-filter:blur(10px);color:white;padding:7px 11px;font-size:12px}.section-line{display:flex;align-items:center;justify-content:space-between;margin:0 2px 12px}.section-line h2{font-size:16px;font-weight:600;margin:0}.section-line span{font-size:12px;color:var(--muted)}.sports{display:grid;gap:10px}.sport{display:flex;align-items:center;gap:14px;position:relative;width:100%;height:79px;background:white;border:1px solid #e8e9e2;border-radius:21px;padding:12px 16px;text-align:left;overflow:hidden;transition:background .2s,transform .2s,border .2s}.sport:active,.cta:active{transform:scale(.98)}.sport.active{background:var(--lime);border-color:#cce184}.sport-icon{width:42px;height:42px;border-radius:50%;background:#f5f6f1;display:grid;place-items:center;flex-shrink:0}.sport.active .sport-icon{background:#ffffff66}.sport strong{font-size:19px;font-weight:600;letter-spacing:-.4px}.sport small{display:block;font-size:12px;color:#788070;margin-top:2px}.sport-thumb{width:67px;height:54px;object-fit:cover;border-radius:12px;margin-left:auto;opacity:.9}.chev{width:16px;height:16px;color:#67705e;flex-shrink:0}.cta{width:100%;padding:19px 10px;background:#283227;color:white;border-radius:19px;font-size:17px;font-weight:600;margin-top:17px;box-shadow:0 8px 18px #25342112;display:flex;align-items:center;justify-content:center;gap:10px;transition:.2s}.cta.success{background:var(--lime);color:#273323}.cta svg{width:21px;height:21px}.save-note{text-align:center;font-size:12px;color:var(--muted);min-height:17px;margin:10px 0 26px}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick{border-radius:21px;background:#eeeee8;padding:17px;text-align:left;min-height:100px}.quick svg{width:22px;height:22px;margin-bottom:13px;display:block;color:#505947}.quick span{font-size:14px;font-weight:500}.nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,460px);z-index:5;display:flex;justify-content:space-around;background:#f6f6f2ed;backdrop-filter:blur(20px);border-top:1px solid #e4e6dc;padding:12px 12px max(14px,env(safe-area-inset-bottom));}.nav a{display:grid;place-items:center;gap:5px;font-size:10px;color:#8d9287;padding:4px 16px;border-radius:15px}.nav svg{width:21px;height:21px}.nav a.selected{color:#283624}.nav a.selected svg{background:var(--lime);border-radius:7px;box-shadow:0 0 0 6px var(--lime)}.page-head h1{font-size:32px;letter-spacing:-1.3px;margin:9px 0}.page-head p{color:var(--muted);font-size:14px;margin:0 0 24px}.card{background:#fff;border:1px solid #e8e9e2;border-radius:25px;padding:22px;margin-bottom:15px}.card h2{font-size:17px;letter-spacing:-.3px;font-weight:600;margin:0 0 17px}.big-stat{font-size:58px;line-height:1.1;letter-spacing:-3px;font-weight:500;margin:12px 0}.big-stat small{font-size:16px;letter-spacing:0;color:#7a8271}.count-row{display:flex;align-items:center;gap:10px;padding:10px 0;font-size:14px}.count-row strong{margin-left:auto}.dot{width:9px;height:9px;border-radius:50%;background:#b6d775}.dot.padel{background:#859b82}.dot.gym{background:#d8cbbc}.total{border-top:1px solid #eeeeea;margin-top:8px;padding-top:17px;display:flex;justify-content:space-between;font-size:15px}.visits{padding:0 18px}.visit{display:flex;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid #efefea}.visit:last-child{border:0}.visit .sport-icon{width:39px;height:39px}.visit b{font-size:14px;font-weight:500;display:block}.visit small{display:block;font-size:12px;color:var(--muted);margin-top:4px}.visit time{margin-left:auto;font-size:14px;color:#7b8175}.demo{font-size:11px;padding:4px 7px;border-radius:8px;background:#eff1e8;color:#777f6c}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-grid .card{padding:20px;margin:0}.stat-grid label{font-size:13px;color:var(--muted)}.stat-grid strong{display:block;font-size:38px;letter-spacing:-1.5px;font-weight:500;margin-top:9px}.favorite{display:flex;align-items:center;gap:16px;background:var(--lime)}.favorite h2{margin-bottom:6px}.favorite p{font-size:13px;margin:0;color:#616e4e}.bars{display:flex;align-items:flex-end;gap:12px;height:130px;margin-top:22px}.bar-col{flex:1;text-align:center;height:100%;display:flex;flex-direction:column;justify-content:flex-end;gap:8px}.bar-col i{display:block;background:#e8eddc;border-radius:7px;min-height:5px}.bar-col.today i{background:#bddc7d}.bar-col span{font-size:12px;color:#858b7e}.bar-col b{font-size:12px;font-weight:500;color:#657257}.notice{padding:18px;background:#eef1e7;border-radius:18px;font-size:14px;line-height:1.6}.admin-shell{max-width:1000px}.admin-shell .nav{width:min(100%,1000px)}.admin-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}.admin-stats .card{margin:0;padding:19px}.admin-stats span{font-size:13px;color:var(--muted)}.admin-stats strong{display:block;font-size:34px;letter-spacing:-1px;margin-top:10px;font-weight:500}.admin-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}.heat-wrap{overflow:auto}.heatmap{display:grid;grid-template-columns:24px repeat(17,minmax(15px,1fr));gap:5px;min-width:540px}.heatmap .cell{height:24px;border-radius:4px}.heatmap .hour{font-size:10px;text-align:center;color:#858b7e}.heatmap .day{font-size:12px;display:flex;align-items:center}.heat-legend{display:flex;align-items:center;justify-content:flex-end;gap:4px;font-size:11px;color:#858b7e;margin-top:13px}.heat-legend i{width:15px;height:10px;border-radius:3px}.peak{margin-top:20px;padding:14px;background:#f0f4e6;border-radius:14px;font-size:13px;line-height:1.6}.dist-track{display:flex;height:13px;border-radius:20px;overflow:hidden;margin:20px 0 10px}.dist-track i{display:block}.overlay{position:fixed;inset:0;z-index:20;background:#1d281d44;backdrop-filter:blur(5px);display:flex;align-items:flex-end;justify-content:center}.sheet{width:min(100%,460px);background:var(--paper);border-radius:28px 28px 0 0;padding:26px 24px 40px;animation:rise .25s ease}.sheet h2{margin:0 0 16px;font-size:23px}.sheet p{font-size:14px;color:var(--muted);line-height:1.6}.sheet button{width:100%;border-radius:15px;background:#263325;color:white;padding:16px;margin-top:10px}.schedule-row{display:flex;justify-content:space-between;padding:15px 0;border-bottom:1px solid #e7e9df;font-size:15px}.progress{display:flex;gap:6px;margin:20px 0}.progress i{height:5px;flex:1;border-radius:9px;background:#e8ecdf}.progress i.filled{background:#adc975}footer{font-size:12px;text-align:center;color:#989e90;margin-top:25px}@keyframes rise{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@media(min-width:600px){.shell{margin:30px auto;min-height:calc(100dvh - 60px);border-radius:32px;box-shadow:0 20px 80px #38453410}.nav{bottom:0;border-radius:22px 22px 0 0}.hero{height:275px}.admin-shell{padding:30px 35px max(32px,env(safe-area-inset-bottom))}.admin-shell .top{margin-bottom:30px}}@media(max-width:650px){.admin-grid{grid-template-columns:1fr}.admin-stats{gap:8px}.admin-stats .card{padding:15px}.admin-stats strong{font-size:29px}.admin-stats span{font-size:12px}.hero{height:235px}.shell{padding-top:max(22px,env(safe-area-inset-top))}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* Reference direction: photo-led, layered mobile sports experience. */
:root{--paper:#e6e3de;--lime:#d5f78c;font-family:-apple-system,BlinkMacSystemFont,'DM Sans',sans-serif;background:#d9d9d6;color:#151715}.shell{background:linear-gradient(145deg,#efede9,#ddd9d3)}.home-shell{padding:0 0 max(32px,env(safe-area-inset-bottom));position:relative;overflow:hidden}.home-shell .top{position:absolute;z-index:3;top:max(24px,env(safe-area-inset-top));right:20px;margin:0}.home-shell .brand{display:none}.home-shell .bell{height:52px;width:52px;box-shadow:0 4px 18px #0000000c;background:#fff}.home-shell .bell svg{width:25px;height:25px}.home-shell .hero{height:320px;border-radius:0;margin:0;background:#65755b}.home-shell .hero img{object-position:center 55%}.home-shell .hero:after{background:linear-gradient(180deg,#00000003 25%,#15241820 60%,#26302065)}.home-shell .hero-copy{left:25px;bottom:77px}.home-shell .hero h1{font-size:38px;letter-spacing:-1.7px;font-weight:400}.home-content{position:relative;z-index:2;margin-top:-44px;padding:0 15px}.sports{gap:10px}.sport{height:101px;border-radius:24px;background:#e5e2dd;padding:17px 20px;border:1px solid #ffffffaa;box-shadow:0 4px 14px #282d1d08;gap:15px;isolation:isolate}.sport-thumb{position:absolute;z-index:-2;inset:0 0 0 auto;height:100%;width:72%;border-radius:0;object-fit:cover;opacity:1;object-position:center}.sport:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#e7e4dff7 0%,#e7e4dfe8 30%,#e7e4df99 51%,#e7e4df00 100%)}.sport.active{background:#d5f78c;border-color:#dbf6ab;box-shadow:0 5px 15px #4e672f19}.sport.active:before{background:linear-gradient(90deg,#d5f78c 0%,#d5f78cee 33%,#d5f78ca8 62%,#d5f78c60 100%)}.sport.active .sport-thumb{mix-blend-mode:multiply;filter:saturate(.8)}.sport-icon,.sport.active .sport-icon{background:transparent;width:43px;height:48px;border-radius:0}.sport-icon svg{width:40px;height:40px;stroke-width:1.8}.sport strong{font-weight:500;font-size:26px;letter-spacing:-1.3px}.chev-circle{margin-left:auto;width:43px;height:43px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;background:#faf9f0bd;backdrop-filter:blur(12px)}.chev{color:#161b13;width:21px;height:21px}.cta{margin-top:13px;padding:16px;border-radius:20px;background:#20261f;box-shadow:none;font-size:16px}.save-note{margin:8px 0 9px;min-height:0}.save-note:empty{display:none}.quick-grid{gap:9px;margin-top:13px}.quick{display:flex;align-items:center;gap:9px;border-radius:23px;background:#f7f5f0d9;border:1px solid #ffffff70;min-height:77px;padding:12px 10px;box-shadow:0 1px 10px #34342303}.quick>svg:first-child{background:#fff7;border-radius:50%;width:36px;height:36px;padding:7px;flex-shrink:0;margin:0;box-sizing:content-box;color:#171b15}.quick span{font-size:13px;font-weight:400;letter-spacing:-.4px;white-space:nowrap}.quick>.chev{width:15px;height:15px;margin:0 0 0 auto;flex-shrink:0}.nav{background:#ebe8e2ed;border-top:0;padding:12px 20px max(16px,env(safe-area-inset-bottom));gap:15px}.nav a{height:47px;width:47px;padding:10px;border-radius:50%;color:#6f706a;display:grid}.nav a>span{display:none}.nav svg{width:25px;height:25px;stroke-width:1.7}.nav a.selected{background:#20231f;color:#fff}.nav a.selected svg{background:transparent;border-radius:0;box-shadow:none}.home-shell footer{display:none}.card{border-color:#ffffff80}.bell{box-shadow:none}.admin-shell .nav a>span{display:block;font-size:10px}.admin-shell .nav a{width:auto;height:auto;min-width:65px;border-radius:17px}.admin-shell .nav{gap:0}.admin-shell{background:#f6f6f2}.page-head{padding-top:5px}@media(min-width:600px){.home-shell{margin:30px auto;border-radius:36px}.home-shell .hero{height:340px}.nav{border-radius:25px 25px 0 0}}@media(max-width:370px){.sport{height:94px;padding:15px}.sport strong{font-size:24px}.quick{gap:5px;padding:10px 7px}.quick>svg:first-child{width:25px;height:25px}.quick span{font-size:12px}}@media(min-width:371px) and (max-width:450px){.home-shell .hero{height:300px}.sport{height:96px}.quick{min-height:74px}}

.quick>svg:first-child{box-sizing:border-box;width:36px;height:36px;padding:7px}.quick{padding:12px 10px;gap:7px}.quick span{white-space:normal;font-size:14px;line-height:1.25}.home-shell .hero img{filter:saturate(.72)}.sport[data-sport="tennis"] .sport-thumb{object-position:center 49%}.home-shell .nav a:last-child svg{width:23px;height:23px}
.sport{padding:0 18px 0 0;gap:0}.sport-select{display:flex;align-items:center;gap:15px;align-self:stretch;flex:1;min-width:0;text-align:left;padding:17px 20px;background:transparent;border-radius:24px}.qr-trigger{border:0;position:relative;z-index:1;cursor:pointer;width:46px;height:46px}.qr-icon{width:22px;height:22px;color:#161b13}.qr-trigger:active{transform:scale(.93)}.sport:active{transform:none}.sport-select:active{transform:scale(.98)}.scanner-sheet{padding-bottom:max(25px,env(safe-area-inset-bottom));max-height:94dvh;overflow:auto}.scanner-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px}.scanner-heading h2{margin:7px 0 0}.scanner-sheet .scanner-close{width:40px;height:40px;border-radius:50%;margin:0;background:#ffffffb0;color:#222;padding:0;font-size:27px}.camera-preview{height:min(48dvh,360px);position:relative;overflow:hidden;border-radius:24px;background:#20261f;display:grid;place-items:center}.camera-preview video{width:100%;height:100%;object-fit:cover}.scan-frame{position:absolute;width:68%;aspect-ratio:1;border:2px solid #d5f78c;border-radius:23px;box-shadow:0 0 0 200px #0003;pointer-events:none}.camera-hint{position:absolute;bottom:20px;color:white;text-align:center;font-size:13px;padding:6px 12px;border-radius:10px;background:#0005;max-width:90%}.scanner-status{min-height:42px}.qr-file-label{width:100%;display:block;background:#fff8;border-radius:15px;padding:15px;text-align:center;cursor:pointer;font-size:14px;border:1px solid #fff9}.qr-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.qr-file-label:focus-visible{outline:3px solid #65972a;outline-offset:3px}.scanner-sheet .scanner-cancel{margin-top:10px;background:#263325}.scanner-sheet h2{font-size:24px}
.center-name{display:block;font-size:13px;letter-spacing:.15px;margin-bottom:9px;color:#fff;opacity:.9}.booking-link{display:block;text-align:center;padding:17px;border-radius:15px;background:#d5f78c;color:#25331d;font-weight:500}.brand{font-size:16px}.home-shell .hero-copy{bottom:68px}
.sport-label{display:flex;flex-direction:column;gap:4px}.sport .registered-label{font-size:13px;margin:0;color:#334a20;letter-spacing:0}.sport.registered{animation:registered-pulse .5s ease}.home-content>.save-note:not(:empty){margin:12px 0 4px;color:#435532}.home-content>.quick-grid{margin-top:12px}@keyframes registered-pulse{0%{box-shadow:0 0 0 0 #abd45d80}70%{box-shadow:0 0 0 7px #abd45d00}100%{box-shadow:0 4px 14px #282d1d08}}
