:root{--ink:#fff;--charcoal:#24282a;--cream:#fffcf6;--gold:#da9a38;--panel:#24282a9e;--accent:#930303;--display:"Outfit", Verdana, sans-serif;--serif:"Habibi", Georgia, serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);font-family:var(--display);color:var(--ink);-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body{overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;background:#dde9f3;height:100%;margin:0;overflow:hidden}#scene{width:100%;height:100%;display:block;position:fixed;inset:0}#hud{padding:calc(var(--safe-top) + 12px) 16px 22px;pointer-events:none;text-shadow:0 1px 3px #0006;background:linear-gradient(#0a142299,#0a142200);position:fixed;top:0;left:0;right:0}#zone{letter-spacing:.04em;text-transform:uppercase;font-family:Georgia,Times New Roman,serif;font-size:24px;font-weight:700;line-height:1.05}.stats{opacity:.9;font-variant-numeric:tabular-nums;gap:14px;margin-top:2px;font-size:13px;display:flex}.speed{right:16px;top:calc(var(--safe-top) + 44px);text-align:right;font-variant-numeric:tabular-nums;font-size:26px;font-weight:700;line-height:1.1;position:absolute}.speed small{opacity:.85;margin:0 6px 0 3px;font-size:11px;font-weight:500}#controls{padding:18px 16px calc(var(--safe-bottom) + 12px);background:linear-gradient(#0a142200,#0a142299);flex-direction:column;gap:8px;display:flex;position:fixed;bottom:0;left:0;right:0}#controls .row{gap:8px;display:flex}#controls button,#controls select{background:var(--panel);min-height:44px;color:var(--ink);font:inherit;-webkit-backdrop-filter:blur(6px);border:0;border-radius:10px;flex:1;font-size:15px}#controls #play{background:var(--accent);flex:0 0 56px;font-size:18px}#scrub{width:100%;accent-color:var(--accent)}#inspector{left:16px;right:16px;bottom:calc(var(--safe-bottom) + 150px);pointer-events:none;flex-direction:column;gap:8px;display:none;position:fixed}body.inspecting #inspector{display:flex}#inspector canvas{background:var(--panel);border-radius:10px;width:100%}#section{height:130px}#profile{height:90px}#loading{color:#1d2430;background:#eef3f8;place-content:center;justify-items:center;gap:12px;font-family:Georgia,serif;transition:opacity .4s;display:grid;position:fixed;inset:0}#loading img{width:96px}body.ready #loading{opacity:0;pointer-events:none}#rotate{display:none}@media (orientation:landscape) and (height<=500px){#rotate{z-index:10;background:#1d2430;place-content:center;font-family:Georgia,serif;font-size:20px;display:grid;position:fixed;inset:0}}#fps{right:8px;bottom:calc(var(--safe-bottom) + 150px);color:#1d2430;font:11px ui-monospace,monospace;display:none;position:fixed}body.debug #fps{display:block}body.debug #loading{transition:none}#loading .credit{bottom:calc(var(--safe-bottom) + 16px);text-align:center;opacity:.6;font:11px system-ui,sans-serif;position:absolute;left:0;right:0}#menu,#ride,#viewer{display:none}body.in-menu #menu,body.riding #ride,body.viewing #viewer{display:block}#menu{padding:calc(var(--safe-top) + 48px) 24px calc(var(--safe-bottom) + 24px);text-align:center;background:linear-gradient(#0e1a2a26,#0e1a2ab8);position:fixed;inset:0;overflow-y:auto}#menu .logo{filter:invert();opacity:.95;width:72px}#menu h1{letter-spacing:.02em;text-shadow:0 2px 10px #00000059;margin:10px 0 2px;font-family:Georgia,Times New Roman,serif;font-size:38px}#menu .tagline{opacity:.85;letter-spacing:.16em;text-transform:uppercase;margin:0 0 32px;font-size:13px}#menu .choices{gap:10px;max-width:340px;margin:0 auto;display:grid}#menu button,#ride-card button{color:#fff;min-height:52px;font:inherit;-webkit-backdrop-filter:blur(8px);background:#ffffff29;border:0;border-radius:12px;font-size:16px;font-weight:600}#menu button.primary,#ride-card button.primary{background:var(--accent)}#menu button.quiet{opacity:.85;background:0 0;font-weight:500}#menu button small{opacity:.7;margin-left:4px;font-weight:400}#menu .how{text-align:left;background:#0a142273;border-radius:12px;max-width:340px;margin:22px auto 0;padding:10px 14px;font-size:14px;line-height:1.45}#menu .how summary{cursor:pointer;font-weight:600}#menu .how .keys{opacity:.7;font-size:12px}#ride-hud{padding:calc(var(--safe-top) + 10px) 16px 20px;pointer-events:none;text-shadow:0 1px 3px #0006;z-index:3;background:linear-gradient(#0a14228c,#0a142200);position:fixed;top:0;left:0;right:0}#ride-zone{letter-spacing:.04em;text-transform:uppercase;font-family:Georgia,serif;font-size:22px;font-weight:700}.ride-numbers{font-variant-numeric:tabular-nums;gap:16px;margin-top:2px;display:flex}.ride-numbers b{font-size:26px}.ride-numbers small{opacity:.85;margin-left:3px;font-size:12px}#ride-posture{letter-spacing:.12em;background:#ffffff2e;border-radius:6px;margin-top:6px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-block}#ride-posture.on-knives{background:var(--accent)}.ride-buttons{right:12px;top:calc(var(--safe-top) + 10px);pointer-events:auto;gap:8px;display:flex;position:absolute}.ride-buttons button{color:#fff;min-width:44px;min-height:36px;font:inherit;background:#101c2c80;border:0;border-radius:10px;font-size:13px}#zones{z-index:2;touch-action:none;grid-template:"front front front"34%"left.right"38%"rl rb rr"28%/1fr 1fr 1fr;display:grid;position:fixed;inset:0}.zone{border:1px dashed #fff0;justify-content:center;align-items:center;transition:background 80ms;display:flex}#zones.active .zone{border-color:#ffffff24}.zone span{letter-spacing:.1em;text-transform:uppercase;color:#ffffff8c;text-shadow:0 1px 2px #00000080;pointer-events:none;font-size:11px}.zone.held{background:#ffffff1f}.zone.front{grid-area:front;padding-top:90px}.zone.left{grid-area:left}.zone.right{grid-area:right}.zone.rake-left{grid-area:rl}.zone.rake-both{grid-area:rb}.zone.rake-right{grid-area:rr}#zones.knives .zone.front span{color:#ffd2bee6}.run{background:var(--accent);color:#fff;letter-spacing:.08em;border:0;border-radius:50%;grid-area:rb;place-self:center;width:108px;height:108px;font:700 22px system-ui,sans-serif;display:none;box-shadow:0 6px 24px #0000004d}.run.held{transform:scale(.94)}#zones.running .run{display:block}#zones.running .zone.rake-both{visibility:hidden}#ride-banner{z-index:4;text-align:center;background:#0a142240;place-content:center;display:grid;position:fixed;inset:0}#ride-banner[hidden],#ride-card[hidden]{display:none}#ride-banner-title{text-shadow:0 2px 10px #00000073;font-family:Georgia,serif;font-size:30px;font-weight:700}#ride-banner-hint{opacity:.9;margin-top:8px;font-size:14px}#ride-card{left:16px;right:16px;bottom:calc(var(--safe-bottom) + 24px);z-index:5;-webkit-backdrop-filter:blur(10px);text-align:center;background:#0e1826d1;border-radius:16px;padding:20px;position:fixed}#ride-card-title{font-variant-numeric:tabular-nums;font-family:Georgia,serif;font-size:40px;font-weight:700}#ride-card-subtitle{opacity:.9;margin:4px 0 10px}#ride-card-lines{opacity:.85;margin-bottom:16px;font-size:14px;line-height:1.5}#ride-card .row{gap:10px;display:flex}#ride-card .row button{flex:1}#ride-banner.replay{inset:auto 0;top:calc(var(--safe-top) + 96px);pointer-events:auto;background:0 0}#ride-banner.replay #ride-banner-title{letter-spacing:.3em;text-transform:uppercase;background:var(--accent);border-radius:6px;justify-self:center;padding:4px 12px;font-family:system-ui,sans-serif;font-size:13px;display:inline-block}#ride-card button[hidden]{display:none}#zone,#ride-zone{font-family:var(--display);letter-spacing:-.5px;font-weight:800}.stats,.ride-numbers,.speed{font-family:var(--display)}#controls button,#controls select,.ride-buttons button{font-family:var(--display);text-transform:uppercase;letter-spacing:.04em;background:var(--panel);font-size:13px;font-weight:700}#menu{text-align:left;background:linear-gradient(#24282a0d 20%,#24282acc);padding-left:28px;padding-right:28px;display:none}body.in-menu #menu{flex-direction:column;display:flex}#menu .logo{filter:invert();width:64px;margin-bottom:auto}#menu .tagline{font-family:var(--serif);letter-spacing:0;text-transform:none;opacity:1;order:-1;margin:0 0 4px;font-size:22px}#menu h1{font-family:var(--display);letter-spacing:-2px;text-transform:uppercase;margin:0 0 28px;font-size:50px;font-weight:700;line-height:.95}#menu .titles{flex-direction:column;display:flex}#menu .choices{max-width:420px;margin:0}#menu button,#ride-card button{font-family:var(--display);text-transform:uppercase;letter-spacing:.04em;background:var(--cream);color:var(--accent);-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:4px;font-size:15px;font-weight:700}#menu button.primary,#ride-card button.primary{background:var(--accent);color:#fff}#menu button.quiet{color:#fff;text-align:left;background:0 0;padding-left:0}#menu button small{color:var(--gold);font-weight:700}#menu .how{background:var(--cream);max-width:420px;color:var(--charcoal);font-family:var(--serif);border-radius:4px;margin:14px 0 0}#menu .how summary{font-family:var(--display);text-transform:uppercase;letter-spacing:.04em;color:var(--accent)}#menu .how b{font-family:var(--display);font-weight:700}#ride-posture{font-family:var(--display);border-radius:3px}.zone span{font-family:var(--display);font-weight:700}.run{font-family:var(--display)}#ride-banner-title{font-family:var(--display);letter-spacing:-1.5px;text-transform:uppercase;font-size:46px;font-weight:800}#ride-banner-hint{font-family:var(--serif);font-size:16px}#ride-banner.replay #ride-banner-title{font-family:var(--display);letter-spacing:.3em;border-radius:3px;font-size:13px;font-weight:700}#ride-card{background:var(--cream);color:var(--charcoal);text-align:left;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:6px;box-shadow:0 10px 40px #00000059}#ride-card-title{font-family:var(--display);letter-spacing:-1.5px;text-transform:uppercase;color:var(--accent);font-weight:800;line-height:1}#ride-card-subtitle{font-family:var(--serif);font-size:18px}#ride-card-lines{font-family:var(--serif);color:#555;opacity:1}#ride-card button{border:1px solid #93030340}#loading{background:var(--cream);color:var(--charcoal);font-family:var(--serif)}#rotate{font-family:var(--serif)}#ride-card.message #ride-card-title{letter-spacing:-.8px;font-size:30px}#ride-card-time{font-family:var(--display);letter-spacing:-1.5px;color:var(--charcoal);font-variant-numeric:tabular-nums;margin-top:6px;font-size:44px;font-weight:800}#ride-card-time small{letter-spacing:0;color:#6e6e6e;margin-left:6px;font-size:18px;font-weight:700}#ride-card-time:empty,#select{display:none}body.selecting #select{display:block}#menu .rider-line{color:#fff;background:#24282a8c;border:1px solid #ffffff2e;justify-content:space-between;align-items:baseline;max-width:420px;min-height:44px;margin:0 0 12px;padding:0 14px;display:flex}#menu .rider-line small{color:var(--gold);margin:0}.select-panel{padding:12px 16px calc(var(--safe-bottom) + 12px);background:var(--cream);color:var(--charcoal);border-radius:14px 14px 0 0;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 40px #0000004d}@media (width>=760px) and (aspect-ratio>=1){.select-panel{border-radius:0;width:400px;max-height:none;padding-top:24px;top:0;left:auto}}.select-panel h2{font-family:var(--display);text-transform:uppercase;letter-spacing:-.5px;color:var(--accent);letter-spacing:.02em;margin:0 0 6px;font-size:16px;font-weight:800}.select-panel h3{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:16px 0 8px;font-size:13px}#select-riders{scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;margin:0 -16px;display:flex;overflow-x:auto}#select-riders::-webkit-scrollbar{display:none}.rider-card{box-sizing:border-box;scroll-snap-align:center;scroll-snap-stop:always;text-align:left;color:var(--charcoal);flex:0 0 100%;padding:0 16px}#select-dots{justify-content:center;gap:8px;margin:18px 0 12px;display:flex}#select-dots button{background:#d8d2c4;border:0;border-radius:50%;width:8px;height:8px;padding:0}#select-dots button.chosen{background:var(--accent);border-radius:4px;width:22px}.rider-name{font-family:var(--display);text-transform:uppercase;font-size:18px;font-weight:800}.rider-flag{font-family:var(--serif);color:var(--accent);font-size:14px}.rider-stats{grid-template-columns:1fr 1fr;gap:4px 12px;display:grid}.stat{font-family:var(--display);text-transform:uppercase;letter-spacing:.04em;color:#6e6e6e;font-size:11px}.stat i{background:#e8e4da;border-radius:3px;height:5px;margin-top:2px;display:block;overflow:hidden}.stat b{background:var(--accent);height:100%;display:block}.toboggan-step,#select.stage-toboggan .rider-step{display:none}#select.stage-toboggan .toboggan-step{display:block}.select-back{color:var(--accent);font-family:var(--display);text-transform:uppercase;letter-spacing:.04em;background:0 0;border:0;min-height:32px;margin:0 0 6px;padding:0;font-size:13px;font-weight:700}.toboggan-switch{flex-direction:column;gap:8px;margin:0 0 12px;display:flex}.toboggan-switch button{text-align:left;padding:10px 14px;display:block}.toboggan-switch button b{text-transform:uppercase;font-size:15px;display:block}.toboggan-switch button span{font-family:var(--serif);color:#5a5a5a;text-transform:none;margin-top:3px;font-size:13px;font-weight:400;line-height:1.3;display:block}.toboggan-switch button.chosen span{color:#ffffffe0}.toboggan-switch button,#select-done{min-height:46px;color:var(--accent);font-family:var(--display);text-transform:uppercase;background:#fff;border:1px solid #93030340;border-radius:4px;flex:1;font-size:14px;font-weight:700}.toboggan-switch button.chosen{background:var(--accent);color:#fff}#select-done{background:var(--accent);color:#fff;border:0;width:100%}#select-done:disabled{color:#8a857a;background:#d8d2c4}.rider-card.locked .rider-name{letter-spacing:.1em;font-size:30px}.rider-unlock{font-family:var(--display);text-transform:uppercase;color:var(--accent);margin:8px 0 12px;font-size:17px;font-weight:800;line-height:1.25}#select-dots button.locked:not(.chosen){background:#2a2c30}.rider-name .flag{vertical-align:-2px;border-radius:2px;height:16px;margin-right:8px;box-shadow:0 0 0 1px #0000001f}#select.career .toboggan-switch{display:none}#select.career #select-done{margin-top:6px}.screen{display:none;position:fixed;inset:0;overflow-y:auto}body.screen-intro #intro,body.screen-saves #saves,body.screen-hub #hub{display:flex}#intro{text-align:center;padding:calc(var(--safe-top) + 24px) 24px calc(var(--safe-bottom) + 24px);cursor:pointer;background:radial-gradient(#0e141e1a,#0e141e8c);flex-direction:column;justify-content:center;align-items:center}#intro .badge{filter:drop-shadow(0 8px 24px #00000073);width:min(46vw,220px)}#intro h1{font-family:var(--display);letter-spacing:-1px;text-transform:uppercase;text-shadow:0 3px 18px #00000080;margin:18px 0 0;font-size:clamp(34px,10vw,64px);font-weight:800}#intro .tap{font-family:var(--display);letter-spacing:.3em;text-transform:uppercase;text-shadow:0 2px 8px #0009;margin-top:14vh;font-size:15px;font-weight:700;animation:1.6s ease-in-out infinite tap-pulse}@keyframes tap-pulse{50%{opacity:.35}}#saves,#hub{padding:calc(var(--safe-top) + 16px) 12px calc(var(--safe-bottom) + 12px);background:linear-gradient(#24282a00 30%,#24282a8c);justify-content:center;align-items:flex-end}.screen .panel{background:var(--cream);width:100%;max-width:460px;max-height:100%;color:var(--charcoal);border-radius:14px;padding:18px 16px;overflow-y:auto;box-shadow:0 10px 40px #00000059}@media (width>=760px) and (aspect-ratio>=1){#saves,#hub{justify-content:flex-end;align-items:stretch;padding:0}.screen .panel{border-radius:0;max-width:400px}}.screen h2{font-family:var(--display);text-transform:uppercase;color:var(--accent);margin:4px 0 12px;font-size:22px;font-weight:800}.screen h3{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:16px 0 6px;font-size:12px}.screen .muted,#modal .muted{color:#777;font-family:var(--serif);font-size:13px}.screen button,#modal button,#sheet button{width:100%;min-height:46px;color:var(--accent);font-family:var(--display);text-transform:uppercase;background:#fff;border:1px solid #93030340;border-radius:4px;margin-top:8px;font-size:14px;font-weight:700}.screen button.primary,#modal button.primary,#sheet button.primary{background:var(--accent);color:#fff;border:0}.screen button:disabled{opacity:.5}.screen .row{gap:8px;display:flex}.screen button.quiet{color:#777;background:0 0;border:0}.badge-small{float:right;width:48px;margin-top:-4px}#account-bar{clear:both;font-family:var(--serif);color:var(--charcoal);background:#f3ece0;border-radius:10px;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:4px 0 12px;padding:10px 12px;font-size:14px;display:flex}#account-bar>span{flex:180px}#account-bar b{font-family:var(--display);color:var(--accent)}.screen #account-bar button{width:auto;min-height:36px;margin:0;padding:0 14px}.account-actions{display:flex}.screen #account-bar .account-actions button{padding:0 8px}.account-input{box-sizing:border-box;width:100%;font:16px var(--serif);color:var(--charcoal);background:#fff;border:1px solid #9303034d;border-radius:6px;margin-top:10px;padding:12px}.account-input.code{font:800 26px var(--display);letter-spacing:6px;text-align:center}.account-error{color:var(--accent);margin:8px 0 0;font-size:14px}#admin{z-index:55;padding:calc(var(--safe-top) + 10px) 10px calc(var(--safe-bottom) + 10px);background:#14161899;justify-content:center;display:flex;position:fixed;inset:0}#admin[hidden]{display:none}.admin-panel{background:var(--cream);width:min(100%,760px);color:var(--charcoal);font-family:var(--serif);border-radius:12px;padding:16px;overflow-y:auto}.admin-head{justify-content:space-between;align-items:center;display:flex}.admin-head h2{font:800 22px var(--display);text-transform:uppercase;color:var(--accent);margin:0}#admin-close{color:#777;background:0 0;border:0;font-size:28px}.admin-panel h3{font:700 14px var(--display);text-transform:uppercase;margin:18px 0 6px}.admin-panel h3 small{font:13px var(--serif);text-transform:none;color:#777}.admin-kpis{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px;display:grid}.admin-kpis div{border-top:3px solid var(--accent);padding-top:4px}.admin-kpis b{font:800 26px var(--display);display:block}.admin-kpis span{color:#666;font-size:12px}.admin-days{align-items:flex-end;gap:2px;height:120px;display:flex}.admin-day{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;height:100%;display:flex}.admin-day .bar{background:var(--accent);border-radius:2px 2px 0 0;align-items:flex-end;width:100%;min-height:1px;display:flex}.admin-day .new{background:var(--gold);width:100%}.admin-day span{font:9px var(--display);color:#888;margin-top:2px}.admin-table{overflow-x:auto}.admin-table table{border-collapse:collapse;width:100%;font:13px var(--display)}.admin-table th{text-align:left;border-bottom:2px solid var(--charcoal);white-space:nowrap;padding:4px 6px}.admin-table td{white-space:nowrap;border-bottom:1px solid #e6dfd0;padding:5px 6px}.admin-table td small{color:#888;font-family:var(--serif);display:block}@media (width<=560px){.admin-kpis{grid-template-columns:repeat(2,1fr)}}.save{background:#fff;border:1px solid #9303032e;border-radius:12px;align-items:stretch;margin-bottom:10px;display:flex;overflow:hidden;box-shadow:0 1px 3px #24282a0f}.screen .save button{background:0 0;border:0;border-radius:0;min-height:0;margin:0}.screen .save .save-open{text-align:left;text-transform:none;min-width:0;color:var(--charcoal);flex:1;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"who best""meta best""status best";align-items:center;gap:3px 12px;padding:13px 4px 13px 16px;display:grid}.save-who{font-family:var(--display);color:var(--charcoal);white-space:nowrap;text-overflow:ellipsis;grid-area:who;font-size:18px;font-weight:800;overflow:hidden}.save-meta{font-family:var(--serif);color:#6b6b6b;white-space:nowrap;text-overflow:ellipsis;grid-area:meta;font-size:13px;font-weight:400;overflow:hidden}.save-status{font-family:var(--display);letter-spacing:.06em;text-transform:uppercase;color:#9a9a9a;grid-area:status;font-size:10px;font-weight:700}.save-status.member{color:var(--gold)}.save-best{flex-direction:column;grid-area:best;align-items:flex-end;line-height:1.05;display:flex}.save-best b{font-family:var(--display);color:var(--accent);font-variant-numeric:tabular-nums;font-size:22px;font-weight:800}.save-best small{font-family:var(--serif);color:#8a8a8a;font-size:11px;font-weight:400}.save-who .flag,#hub-rider .flag{vertical-align:-1px;height:14px;margin-right:8px;box-shadow:0 0 0 1px #0000001f}.screen .save .save-delete{color:#a7a7a7;border-left:1px solid #9303031a;flex:none;justify-content:center;align-items:center;width:48px;display:flex}.screen .save .save-delete:active{color:var(--accent);background:#9303030d}#saves .panel h2{margin-bottom:16px}.hub-head{justify-content:space-between;align-items:center;display:flex}.screen .hub-head button{width:auto;min-height:32px;margin:0}#hub-rider{text-transform:uppercase;font-size:22px;font-weight:800}#hub-rider .flag{height:16px}#hub-rider small{color:#fff;background:var(--gold);vertical-align:3px;border-radius:3px;margin-left:4px;padding:2px 6px;font-size:12px}#hub-date{font-family:var(--serif);color:var(--accent);font-size:14px}#hub-goal{font-family:var(--serif);background:#f3ede0;border-radius:6px;margin:10px 0;padding:10px 12px;font-size:15px}.race-card{border:2px solid var(--accent);background:#fff;border-radius:8px;margin-bottom:10px;padding:10px 12px}.race-today{letter-spacing:.12em;text-transform:uppercase;color:var(--gold);font-size:11px;font-weight:700}.race-name{text-transform:uppercase;font-size:17px;font-weight:800}.race-format,.race-note{font-family:var(--serif);color:#555;font-size:13px}#hub-choices{flex-wrap:wrap;gap:6px;display:flex}.screen button.chip{flex:1;width:auto;min-height:36px;margin:0 0 4px;font-size:12px}.screen button.chip.chosen{background:var(--charcoal);color:#fff}.hub-list div{font-family:var(--serif);border-bottom:1px solid #ece6d8;justify-content:space-between;padding:3px 0;font-size:14px;display:flex}.hub-list b{font-family:var(--display)}#coach{left:50%;top:calc(var(--safe-top) + 112px);width:min(92vw,420px);color:var(--charcoal);border-left:5px solid var(--accent);font-family:var(--serif);z-index:20;pointer-events:none;background:#fffcf6f5;border-radius:8px;padding:12px 14px;font-size:16px;line-height:1.35;position:fixed;transform:translate(-50%);box-shadow:0 6px 24px #0000004d}#coach b{font-family:var(--display);color:var(--accent)}#coach.lesson{border:3px solid var(--accent);border-left-width:8px;padding:14px 16px;font-size:19px;animation:1.1s ease-in-out infinite coach-bubble}@keyframes coach-bubble{0%,to{box-shadow:0 6px 24px #0000004d,0 0 #ffc446b3}50%{box-shadow:0 6px 24px #0000004d,0 0 0 10px #ffc44600}}#zones .zone.coach-pulse{border:3px solid #ffce5af2;border-radius:14px;animation:1.1s ease-in-out infinite coach-zone}#zones .zone.coach-pulse span{color:#fff;text-shadow:0 2px 6px #000c;font-size:22px}@keyframes coach-zone{0%,to{background:#ffc44614}50%{background:#ffc4466b}}#modal{z-index:50;background:#1416188c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}#modal[hidden],#sheet[hidden]{display:none}.modal-card{background:var(--cream);width:min(100%,420px);color:var(--charcoal);border-radius:12px;padding:20px 18px 14px;box-shadow:0 16px 50px #00000073}.modal-card h2{font-family:var(--display);text-transform:uppercase;color:var(--accent);margin:0 0 10px;font-size:22px;font-weight:800}#modal-body{font-family:var(--serif);font-size:16px;line-height:1.45}#modal-body b{font-family:var(--display)}#modal-buttons{flex-direction:column;margin-top:12px;display:flex}#sheet{z-index:60;padding:calc(var(--safe-top) + 12px) 10px calc(var(--safe-bottom) + 10px);background:#141618b3;flex-direction:column;align-items:center;display:flex;position:fixed;inset:0}#sheet-paper{color:#1a1a1a;background:#fbfaf5;border-radius:3px;flex:1;justify-content:center;width:min(100%,640px);padding:18px 12px;font-family:Times New Roman,Times,serif;display:flex;overflow:hidden;box-shadow:0 10px 40px #00000080}#sheet button{width:min(100%,640px)}.sheet-fit{transform-origin:top;flex:none;width:560px}.sheet-club{font-size:15px;font-weight:700}.sheet-race{text-align:center;margin-top:4px;font-size:17px;font-weight:700}.sheet-note,.sheet-start,.sheet-date{text-align:center;font-size:14px}.sheet-date{margin:8px 0}.sheet-day{margin:8px 0 4px;font-weight:700}#sheet-paper table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:12px}#sheet-paper th{text-align:right;padding:2px 3px;font-weight:400}#sheet-paper td{text-align:right;white-space:nowrap;padding:1px 3px}#sheet-paper td.name,#sheet-paper td:first-child{text-align:left}#sheet-paper tr.me td{background:#fff1b8;font-weight:700}.sheet-foot{text-align:center;margin-top:14px;font-size:13px;line-height:1.5}.sheet-next{margin-top:10px;font-weight:700}.rider-line{font-family:var(--serif);color:var(--charcoal);margin:2px 0 6px;font-size:17px}.rider-story{font-family:var(--serif);color:#4a4a4a;margin:0 0 8px;font-size:13.5px;line-height:1.35}#calendar{z-index:40;color:var(--charcoal);padding:calc(var(--safe-top) + 12px) 12px calc(var(--safe-bottom) + 12px);background:#fffaf2;display:none;position:fixed;inset:0;overflow-y:auto}body.calendar-open #calendar{display:block}.cal-bar{grid-template-columns:auto 1fr auto;align-items:center;gap:8px;max-width:1200px;margin:0 auto 10px;display:grid}#calendar button{color:var(--charcoal);font-family:var(--display);text-transform:uppercase;background:#f1ede6;border:0;border-radius:2px;min-height:32px;padding:7px 9px;font-size:11px;font-weight:700}#cal-month{text-align:center;font-family:var(--serif);color:var(--charcoal);margin:0;font-size:clamp(20px,5vw,30px);font-weight:400}.cal-nav{gap:2px;display:flex}#cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;max-width:1200px;margin:0 auto;display:grid}.cal-dow{font-family:var(--serif);padding:4px 2px;font-size:13px}.cal-day{background:#f3f0ea;flex-direction:column;gap:2px;min-height:64px;padding-bottom:4px;display:flex}.cal-day.empty{background:0 0}.cal-day.off{opacity:.45}.cal-day.past .cal-num{color:#aaa}.cal-day.ahead{cursor:pointer}.cal-day.ahead:hover,.cal-day.ahead:active{outline:2px solid var(--accent);outline-offset:-2px}.cal-day.today{outline:2px solid var(--accent)}.cal-num{font-family:var(--serif);border-bottom:2px solid #e6e2da;margin-bottom:2px;padding:4px 6px 3px;font-size:14px}.cal-event{color:#fff;font-family:var(--display);text-transform:uppercase;word-break:break-word;background:#7e1a0e;margin:0 2px;padding:3px 4px;font-size:9px;font-weight:700;line-height:1.15}.cal-event.club{background:#b9a89a}.cal-event small{opacity:.8;font-weight:400;display:block}.cal-foot{max-width:1200px;font-family:var(--serif);flex-wrap:wrap;align-items:center;gap:12px;margin:12px auto 0;font-size:13px;display:flex}.cal-key:before{content:"";vertical-align:-1px;background:#7e1a0e;width:12px;height:12px;margin-right:6px;display:inline-block}.cal-key.club:before{background:#b9a89a}.cal-key.skip{font-style:italic}.cal-key.skip:before{display:none}body.calendar-open #modal{z-index:60}#calendar #cal-close{background:var(--accent);color:#fff;margin-left:auto;padding:0 22px}@media (width>=760px){.cal-day{min-height:92px}.cal-event{padding:4px 6px;font-size:11px}.cal-num{font-size:17px}}#hub-weather{border-left:3px solid var(--gold);font-family:var(--serif);background:#fff;margin:8px 0 4px;padding:8px 10px;font-size:14px}#hub-weather b{font-family:var(--display);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-size:11px;display:block}#ride-banner .ride-note{max-width:420px;margin:10px auto 0;font-size:14px;line-height:1.35;display:block}#music-toggle{top:calc(var(--safe-top) + 10px);z-index:30;color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#24282a73;border:0;border-radius:50%;width:38px;height:38px;padding:9px;position:fixed;left:10px}#music-toggle svg{width:100%;height:100%}#music-toggle .slash{display:none}#music-toggle.off .slash{display:inline}body.riding #music-toggle,body.selecting #music-toggle,body.viewing #music-toggle,body.calendar-open #music-toggle{display:none}.cal-event{-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word;word-break:normal}.cal-short{display:none}@media (width<=600px){.cal-bar{grid-template-columns:1fr auto}#cal-month{grid-area:1/1/auto/-1}#cal-grid{gap:2px}.cal-dow{font-size:11px}.cal-day{min-height:54px}.cal-num{padding:3px 4px 2px;font-size:12px}.cal-event{letter-spacing:-.01em;margin:0 1px;padding:2px;font-size:7.5px}.cal-the,.cal-long{display:none}.cal-short{display:inline}}#day{z-index:45;padding:calc(var(--safe-top) + 16px) 16px calc(var(--safe-bottom) + 16px);background:radial-gradient(#0e141e59,#0e141ebf);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#day[hidden]{display:none}.day-card{background:var(--cream);width:100%;max-width:380px;color:var(--charcoal);text-align:center;border-radius:14px;padding:26px 22px 18px;animation:.5s ease-out day-in;box-shadow:0 16px 50px #00000073}@keyframes day-in{0%{opacity:0;transform:translateY(18px)scale(.97)}}#day-weekday{font-family:var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-size:13px;font-weight:700}#day-date{font-family:var(--display);text-transform:uppercase;color:var(--accent);margin:6px 0 2px;font-size:46px;font-weight:800;line-height:1}#day-year{font-family:var(--serif);color:#777;font-size:15px}.day-weather{text-align:left;background:#fff;border-radius:10px;align-items:center;gap:14px;margin:18px 0 6px;padding:12px 14px;display:flex}#day-temp{font-family:var(--display);text-align:center;min-width:86px;font-size:34px;font-weight:800}#day-condition{font-family:var(--display);text-transform:uppercase;letter-spacing:.06em;color:var(--accent);font-size:13px;font-weight:700}#day-condition-text{font-family:var(--serif);font-size:14px;line-height:1.3}.day-card h3{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:16px 0 6px;font-size:12px}#day-races div{font-family:var(--serif);padding:3px 0;font-size:15px}#day-races b{font-family:var(--display);text-transform:uppercase;letter-spacing:.05em;color:#888;font-size:11px;display:block}#day-races .open{color:var(--accent);font-weight:600}#day-top{font-family:var(--serif);color:#555;margin:12px 0 4px;font-size:14px}#day #day-go{background:var(--accent);color:#fff;width:100%;min-height:48px;font-family:var(--display);text-transform:uppercase;border:0;border-radius:4px;margin-top:14px;font-size:15px;font-weight:700}#modal .luck-text{font-family:var(--serif);margin:4px 0 8px;font-size:17px;line-height:1.4}.standings-note{font-family:var(--serif);margin:10px 0 8px;font-size:14px;line-height:1.35}table.standings{border-collapse:collapse;width:100%;font-family:var(--serif);font-size:13.5px}table.standings th{font-family:var(--display);text-transform:uppercase;letter-spacing:.06em;color:#888;text-align:left;padding:2px 4px;font-size:10px}table.standings td{border-top:1px solid #eee5d8;padding:4px}table.standings td:first-child{width:34px;font-family:var(--display);color:#777;font-weight:700}table.standings td:last-child,table.standings th:last-child{text-align:right;font-variant-numeric:tabular-nums}table.standings small{color:#999;font-size:11px}table.standings tr.me td{color:var(--accent);background:#93030314;font-weight:700}table.standings tr.gap td{text-align:center;color:#bbb;border:0;padding:0}#trophies{display:none}body.trophy-room #trophies{display:block}#trophy-cards{margin:0 -16px;overflow:hidden}.trophy-card{color:var(--charcoal);touch-action:pan-y;padding:0 16px}.trophy-card.from-right{animation:.35s ease-out card-in-right}.trophy-card.from-left{animation:.35s ease-out card-in-left}@keyframes card-in-right{0%{opacity:0;transform:translate(40%)}to{opacity:1;transform:none}}@keyframes card-in-left{0%{opacity:0;transform:translate(-40%)}to{opacity:1;transform:none}}.trophy-kicker{font-family:var(--display);letter-spacing:.08em;text-transform:uppercase;color:var(--gold);font-size:12px;font-weight:700}.trophy-title{font-family:var(--display);text-transform:uppercase;color:var(--accent);margin:2px 0;font-size:20px;font-weight:800}.trophy-note,.trophy-text,.trophy-hint{font-family:var(--serif);color:#5a5a5a;margin:6px 0;font-size:14px;line-height:1.35}.trophy-kpis{grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px;display:grid}.trophy-kpis div{background:#fff;border:1px solid #ebe5d8;border-radius:6px;padding:7px 10px}.trophy-kpis span{letter-spacing:.04em;text-transform:uppercase;color:#7a7a7a;font-size:11px;display:block}.trophy-kpis b{color:var(--charcoal);font-size:20px;font-weight:800}.trophy-card h3{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:12px 0 6px;font-size:13px}.trophy-clubs{margin:0;padding:0;list-style:none}.trophy-clubs li{border-bottom:1px solid #efe9dd;padding:5px 0}.trophy-clubs b{text-transform:uppercase;font-size:14px;display:block}.trophy-clubs span{font-family:var(--serif);color:#5a5a5a;font-size:13px}.room-close{top:calc(var(--safe-top) + 12px);z-index:5;color:#fff;text-align:center;-webkit-backdrop-filter:blur(4px);background:#1416188c;border:0;border-radius:50%;width:44px;height:44px;padding:0;font-size:30px;line-height:44px;position:fixed;right:12px}@media (width>=760px) and (aspect-ratio>=1){.room-close{right:412px}}.hub-actions{flex-direction:column;gap:10px;margin-top:12px;display:flex}.hub-actions button,.hub-actions p,.hub-actions #hub-choices button{margin:0}.hub-actions p:empty,.hub-actions div:empty,.hub-actions [hidden]{display:none}.hub-pair{grid-template-columns:1fr 1fr;gap:10px;display:grid}#hub-trophies:disabled{opacity:.45}#times{display:none}body.times-room #times{display:block}#times .select-panel{flex-direction:column;max-height:50vh;display:flex}.times-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.times-head h2{margin:0}.times-switch{border:1px solid #9303034d;border-radius:6px;display:flex;overflow:hidden}.times-switch button{min-height:34px;color:var(--accent);font-family:var(--display);text-transform:uppercase;background:#fff;border:0;border-radius:0;padding:0 14px;font-size:13px;font-weight:700}.times-switch button.chosen{background:var(--accent);color:#fff}#times-list{margin:0 -16px;padding:0 16px;overflow-y:auto}.times-row{width:100%;min-height:48px;color:var(--charcoal);text-align:left;background:0 0;border:0;border-bottom:1px solid #efe9dd;border-radius:0;grid-template-columns:28px 1fr auto;align-items:center;gap:10px;padding:6px 4px;display:grid}.times-row.chosen{background:#f6efe1}.times-row .rank{color:var(--gold);text-align:center;font-weight:800}.times-row .when b{text-transform:none;font-size:14px;font-weight:700;display:block}.times-row .when small{font-family:var(--serif);color:#6a6a6a;font-size:12px}.times-row .time{font-size:18px;font-weight:800}#times-colorbar{left:14px;top:calc(var(--safe-top) + 76px);color:#fff;background:#1416188c;border-radius:8px;grid-template-rows:auto auto 1fr auto;justify-items:center;gap:4px;width:46px;height:30vh;padding:8px 0;font-size:12px;font-weight:700;display:grid;position:fixed}#times-colorbar .bar{border-radius:6px;width:12px}#times-colorbar .unit{letter-spacing:.06em;text-transform:uppercase;opacity:.8;font-size:10px}#times-colorbar .mid{display:none}#times-note{left:76px;right:76px;top:calc(var(--safe-top) + 14px);color:#fff;text-shadow:0 1px 3px #000000b3;margin:0;font-size:13px;position:fixed}@media (width>=760px) and (aspect-ratio>=1){#times .select-panel{max-height:none}}#trophy-swipe{text-align:center;font-family:var(--display);letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-top:10px;font-size:11px;font-weight:700;animation:2.4s ease-in-out infinite swipe-nudge}@keyframes swipe-nudge{0%,to{opacity:.55;transform:translate(0)}50%{opacity:1;transform:translate(-8px)}}#trophy-celebrate,#trophies.celebrating #trophy-cards,#trophies.celebrating #trophy-swipe{display:none}#trophies.celebrating #trophy-celebrate{display:block}#trophy-celebrate .trophy-title{font-size:22px}#trophy-celebrate button{background:var(--accent);color:#fff;width:100%;min-height:46px;font-family:var(--display);text-transform:uppercase;border:0;border-radius:4px;margin-top:6px;font-size:14px;font-weight:700}
