@font-face{font-family:"Source Sans 3";src:url(./SourceSans3-Bold-D6_5tO0y.ttf) format("truetype");font-weight:700;font-display:swap}:root{color:#2b2f36;background:#9bb65e;font-family:"Source Sans 3",Segoe UI,system-ui,sans-serif;font-size:16px;--hp: 2px}@media(min-width:900px){:root{--hp: 3px}}*{box-sizing:border-box}html,body,#app{margin:0;height:100%;overflow:hidden}body{user-select:none;-webkit-user-select:none}#view{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;image-rendering:auto}.hud{position:absolute;inset:0;pointer-events:none}.hud [data-ui],.hud button{pointer-events:auto}.chip{background:#f7ecd4;color:#2b2f36;border:1px solid rgba(59,42,42,.35);border-radius:12px;box-shadow:0 2px 8px #3a2b3f40;font-family:"Source Sans 3",sans-serif;font-weight:700;-webkit-font-smoothing:antialiased}.hud-band{position:absolute;z-index:6;top:calc(var(--hp) * 4 + env(safe-area-inset-top));left:calc(var(--hp) * 6 + env(safe-area-inset-left));right:calc(var(--hp) * 6 + env(safe-area-inset-right));display:flex;flex-direction:column;gap:calc(var(--hp) * 2);pointer-events:none}.topbar{display:flex;align-items:center;gap:calc(var(--hp) * 2);height:calc(var(--hp) * 18);min-width:0}.hud-band .time,.hud-band .leg,.hud-band .points,.hud-band .speed,.menu-btn{position:static;top:auto;right:auto;display:flex;align-items:center;flex-wrap:nowrap;gap:calc(var(--hp) * 1);height:calc(var(--hp) * 18);min-height:0;min-width:0;padding:0 calc(var(--hp) * 2);font-size:calc(var(--hp) * 8);font-weight:400;line-height:1;white-space:nowrap}.hud-band .time{padding-left:calc(var(--hp) * 1);flex:0 1 auto}.clock-copy{display:flex;flex-direction:column;justify-content:center;gap:0;min-width:0;line-height:1}.weekday{font-size:calc(var(--hp) * 6);letter-spacing:.02em;text-transform:uppercase;color:#6b7280;line-height:1}.clock{font-size:calc(var(--hp) * 8);font-weight:400;line-height:1}.hud-band .leg{flex:0 1 auto;padding-left:calc(var(--hp) * 1)}.leg-to{display:none}.leg-time{font-size:calc(var(--hp) * 8);font-weight:400;font-variant-numeric:tabular-nums;line-height:1}.leg.last{box-shadow:var(--hp) var(--hp) 0 #e8892bd9}.hud-band .points{flex:0 0 auto;font-variant-numeric:tabular-nums;z-index:auto}.hud-band .speed{flex:0 0 auto;margin-left:auto;font-variant-numeric:tabular-nums;font-size:calc(var(--hp) * 7)}.menu-btn{flex:0 0 auto;margin-left:0;border-radius:calc(var(--hp) * 4);font-family:"Source Sans 3",sans-serif;color:#2b2f36;cursor:pointer;-webkit-font-smoothing:none}.eyebrow{margin:0;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#6b7280}input[type=range]{width:100%;margin:8px 0 0;accent-color:#e8892b;touch-action:pan-x}.stats-panel{position:absolute;top:calc(var(--hp) * 42 + env(safe-area-inset-top));right:calc(var(--hp) * 6 + env(safe-area-inset-right));padding:calc(var(--hp) * 3) calc(var(--hp) * 4);white-space:pre-line;font-variant-numeric:tabular-nums;font-size:calc(var(--hp) * 7);line-height:1.35;min-width:148px;z-index:6}.minimap{display:none!important}.arrow{position:absolute;z-index:5;display:flex;align-items:center;gap:calc(var(--hp) * 2);padding:calc(var(--hp) * 2) calc(var(--hp) * 3);border:1px solid rgba(59,42,42,.35);border-radius:12px;background:#f7ecd4;box-shadow:0 2px 8px #3a2b3f40;transform:none;pointer-events:none;font-family:"Source Sans 3",sans-serif;font-weight:700;font-size:calc(var(--hp) * 8);line-height:1;white-space:nowrap;-webkit-font-smoothing:antialiased;color:#2b2f36}.arrow.edge-right{flex-direction:row-reverse}.arrow[hidden]{display:none!important}.arrow svg,.sun-arc,.leg-ring,.leg-leaf,.token{display:block}.sun-arc{width:calc(var(--hp) * 16);height:calc(var(--hp) * 9)}.leg-ring,.leg-leaf{width:calc(var(--hp) * 12);height:calc(var(--hp) * 12)}.token{width:calc(var(--hp) * 8);height:calc(var(--hp) * 8);border-radius:50%;background:#e8892b;box-shadow:inset 0 0 0 2px #f7ecd4,0 0 0 1px #2b2f36}.arrow svg{width:calc(var(--hp) * 12);height:calc(var(--hp) * 12);transform-origin:50% 50%}.hud-band .points{gap:calc(var(--hp) * 1)}.paints{display:grid;gap:4px;margin:8px 0}.paints label{display:flex;align-items:center;gap:8px;min-height:36px;font-weight:650}.paints input{width:18px;height:18px;accent-color:#e8892b}#veil{position:absolute;inset:0;z-index:1;background:#1c2430;opacity:0;pointer-events:none}:root{--wheel: clamp(150px, 46vw, 190px);--pedal-h: clamp(72px, 10vh, 90px);--pedal-w: clamp(76px, 21vw, 96px)}.wheel{display:none;position:absolute;z-index:7;right:calc(4px + env(safe-area-inset-right));bottom:calc(4px + env(safe-area-inset-bottom));width:calc(var(--wheel) + 40px);height:calc(var(--wheel) + 40px);touch-action:none;background:transparent}.wheel-face{position:absolute;inset:20px;border-radius:50%;background:radial-gradient(circle at 42% 36%,#f7ecd4,#f5eddb 58%,#e6d5bc);border:1px solid rgba(59,42,42,.18);box-shadow:0 3px 6px #3a2b3f4d,inset 0 0 0 12px #3f4247eb;pointer-events:none}.wheel-rotor{position:absolute;inset:12px;border-radius:50%}.spoke{position:absolute;left:50%;top:50%;width:8px;height:46px;margin-left:-4px;margin-top:-46px;border-radius:4px;background:#3f4247;transform-origin:50% 46px}.spoke-e{transform:rotate(90deg)}.spoke-s{transform:rotate(180deg)}.spoke-w{transform:rotate(270deg)}.hub{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;background:#e8892b;box-shadow:inset 0 0 0 2px #f7ecd4}body.touch .wheel,body.phone .wheel,body.touch .pedals,body.phone .pedals{display:flex}.pedals{display:none;position:absolute;z-index:7;left:calc(10px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));gap:8px;touch-action:none}.pedal{position:relative;width:var(--pedal-w);height:var(--pedal-h);padding:8px 6px;border:1px solid rgba(59,42,42,.18);border-radius:18px;background:linear-gradient(180deg,#f7ecd4,#e7d7be);color:#2b2f36;font:inherit;font-size:14px;font-weight:700;line-height:1.15;touch-action:none;cursor:pointer;box-shadow:0 3px 6px #3a2b3f4d}.pedal.held{background:#2f4a63;color:#f7ecd4;transform:translateY(2px);box-shadow:inset 0 2px 6px #1c243073}.rev{position:absolute;top:6px;right:8px;width:22px;height:22px;border-radius:50%;background:#e8892b;color:#fff;font-size:13px;line-height:22px;text-align:center}.compass{position:relative;width:calc(var(--hp) * 16);height:calc(var(--hp) * 16);flex:0 0 auto;border-radius:50%;border:1px solid rgba(59,42,42,.35);background:#f7ecd4;box-shadow:0 2px 8px #3a2b3f40;pointer-events:none}.compass-rose{position:absolute;inset:0}.compass-rose span{position:absolute;left:50%;top:50%;font-size:calc(var(--hp) * 5);font-weight:700;line-height:1;color:#2b2f36}.c-n{transform:translate(-50%,-50%) translateY(calc(var(--hp) * -5));color:#c8432f!important}.c-e{transform:translate(-50%,-50%) translate(calc(var(--hp) * 5))}.c-s{transform:translate(-50%,-50%) translateY(calc(var(--hp) * 5))}.c-w{transform:translate(-50%,-50%) translate(calc(var(--hp) * -5))}.sign{position:absolute;z-index:4;display:flex;flex-direction:column;align-items:flex-start;gap:3px;pointer-events:none}.blade{display:flex;align-items:center;gap:6px;min-height:28px;padding:3px 14px 3px 12px;border-radius:999px;background:#0e4d8b;border:2px solid #f7f4ee;color:#fff;font-family:"Source Sans 3",sans-serif;font-weight:700;font-size:clamp(15px,4.4vw,18px);line-height:1.1;letter-spacing:.01em;white-space:nowrap;box-shadow:0 2px 4px #14203047}.blade-arrow{width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:9px solid white;transform-origin:30% 50%}.road-name{position:absolute;z-index:6;left:50%;bottom:calc(var(--wheel) + 36px + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(46vw,220px);padding:2px 12px;border-radius:999px;background:#0e4d8b;border:2px solid #f7f4ee;color:#fff;font-family:"Source Sans 3",sans-serif;font-weight:700;font-size:clamp(13px,3.6vw,16px);line-height:1.2;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;box-shadow:0 2px 4px #14203047}body:not(.phone):not(.touch) .road-name{bottom:calc(18px + env(safe-area-inset-bottom))}.perf{position:absolute;z-index:8;top:calc(92px + env(safe-area-inset-top));left:calc(8px + env(safe-area-inset-left));padding:6px 8px;font-size:12px;line-height:1.35;white-space:pre;pointer-events:none}body.touch .minimap{width:128px;height:128px;bottom:calc(148px + env(safe-area-inset-bottom))}.action{position:absolute;z-index:7;touch-action:none;right:calc(16px + env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));min-width:132px;min-height:48px;padding:12px 18px;border:0;border-radius:999px;background:#e8892b;color:#fff;font:inherit;font-size:16px;font-weight:650;cursor:pointer;box-shadow:0 8px 20px #e8892b59}.action:disabled{opacity:.45}.credit{position:absolute;z-index:2;left:50%;right:auto;top:calc(var(--hp) * 38 + env(safe-area-inset-top));bottom:auto;transform:translate(-50%);width:max-content;max-width:calc(100vw - 16px);margin:0;font-size:9px;line-height:1.25;text-align:center;color:#2b2f36b8;text-shadow:0 1px 0 rgba(255,255,255,.6);pointer-events:none}@media(min-width:700px){.credit{font-size:10px;white-space:nowrap}}.place-pill{position:absolute;z-index:3;transform:translate(-50%,-130%);padding:2px 8px;border-radius:999px;background:#f4ecd6eb;color:#3a342c;font-size:12px;font-weight:600;line-height:1.3;letter-spacing:.01em;white-space:nowrap;pointer-events:none;box-shadow:0 1px 2px #3a342c2e}.hud-band .goal{position:static;left:auto;right:auto;top:auto;display:flex;align-items:center;height:calc(var(--hp) * 12);min-height:0;padding:0 calc(var(--hp) * 3);z-index:auto}.goal p{margin:0;flex:1;min-width:0;font-size:calc(var(--hp) * 7);line-height:1;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ask{width:44px;height:44px;flex:none;border:0;border-radius:50%;background:#2b2f36;color:#fff;font:inherit;font-size:18px;font-weight:700;cursor:pointer}.toast{position:absolute;left:calc(var(--hp) * 6 + env(safe-area-inset-left));top:calc(var(--hp) * 42 + env(safe-area-inset-top));padding:calc(var(--hp) * 2) calc(var(--hp) * 3);font-size:calc(var(--hp) * 8);line-height:1.2;max-width:min(340px,calc(100% - 24px));text-align:left;opacity:0;z-index:6;transition:opacity .28s ease}.venue-card{position:absolute;left:calc(12px + env(safe-area-inset-left));top:calc(312px + env(safe-area-inset-top));padding:12px 14px;max-width:min(280px,calc(100% - 24px));z-index:3}.venue-card p{margin:0}.venue-name{font-weight:650;line-height:1.3}.when{color:#2f4a63;font-weight:650;margin-top:4px!important}.sheet{position:absolute;left:12px;top:calc(var(--hp) * 42 + env(safe-area-inset-top));width:min(320px,calc(100% - 24px));padding:16px;z-index:7}.menu-sheet{left:auto;right:calc(var(--hp) * 6 + env(safe-area-inset-right));width:min(220px,calc(100% - 48px))}.sheet h2{margin:4px 0 12px;font-size:22px;line-height:1.2}.sheet button{display:block;width:100%;min-height:44px;margin-top:8px;padding:8px 14px;border:0;border-radius:12px;background:#2f4a63;color:#fff;font:inherit;font-size:16px;font-weight:650;text-align:left;cursor:pointer}.sheet button.quiet{background:#e4e0d8;color:#2b2f36}.relaxed-row{display:flex;align-items:center;gap:10px;min-height:44px;font-size:16px;font-weight:650;cursor:pointer}.relaxed-row input{width:22px;height:22px;accent-color:#2f4a63}.toast.show{opacity:1}.intro{position:absolute;left:12px;right:12px;top:calc(196px + env(safe-area-inset-top));width:auto;max-width:420px;margin:0 auto;padding:16px 16px 14px;z-index:3}.intro h2{margin:4px 0 8px;font-size:22px;line-height:1.2}@media(max-width:420px){.intro h2{font-size:20px}}.intro p{margin:0 0 10px;font-size:16px;line-height:1.4}.howto-touch,body.touch .howto-keys,body.phone .howto-keys{display:none}body.touch .howto-touch,body.phone .howto-touch{display:block}.intro button{min-height:48px;padding:0 18px;border:0;border-radius:999px;background:#e8892b;color:#fff;font:inherit;font-size:16px;font-weight:650;cursor:pointer}.loading{position:absolute;inset:0;z-index:8;display:grid;place-items:center;background:linear-gradient(180deg,#7fb4e0,#dcebf6 46%,#7fa65a);pointer-events:auto}.load-card{width:min(440px,calc(100% - 32px));padding:22px 22px 20px}.load-card h1{margin:6px 0 8px;font-size:28px}.load-card p{margin:0;line-height:1.45}button[hidden],.chip[hidden],.loading[hidden],.sign[hidden],.blade[hidden],.road-name[hidden],.rev[hidden]{display:none!important}@media(orientation:landscape)and (max-height:520px){:root{--wheel: clamp(120px, 36vh, 168px)}}@media(prefers-reduced-motion:reduce){.toast{transition:none}}
