:root{--top-h:52px;--bg:#f3f2ee;--ink:#1d1f22;--mute:#5f6369;--hair:rgba(29,31,34,.18);--panel:rgba(243,242,238,.82);--accent:#e8632b;--water:#d9e2ea;--green:#5aa66b;--amber:#d9a53a;--red:#d45440;--night:rgba(20,21,24,.12);--mono:"SF Mono",ui-monospace,Menlo,Consolas,monospace;--sans:-apple-system,"Helvetica Neue",Helvetica,Arial,sans-serif}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#141518;--ink:#e9e7e1;--mute:#9a9ea5;--hair:rgba(233,231,225,.18);--panel:rgba(20,21,24,.78);--water:#1d2229;--night:rgba(0,0,0,.35)}}
:root[data-theme=dark]{--bg:#141518;--ink:#e9e7e1;--mute:#9a9ea5;--hair:rgba(233,231,225,.18);--panel:rgba(20,21,24,.78);--water:#1d2229;--night:rgba(0,0,0,.35)}
*{box-sizing:border-box}html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.3;overflow:hidden;-webkit-font-smoothing:antialiased}
.mono{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--bg);padding:6px 10px;z-index:50}.skip:focus{left:8px}
.top{position:fixed;top:0;left:0;right:0;height:52px;display:flex;align-items:center;gap:14px;padding:0 14px;padding-top:env(safe-area-inset-top);z-index:20;background:linear-gradient(var(--panel),transparent)}
.brand{display:flex;align-items:center;gap:8px;flex:none}.mark{width:14px;height:14px;border:2px solid var(--accent);border-radius:50%;position:relative}.mark::after{content:"";position:absolute;left:4px;top:-5px;width:2px;height:20px;background:var(--accent)}.word{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.venues{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;flex:1 1 auto;min-width:0}.venues::-webkit-scrollbar{display:none}
.venues button{flex:none;display:flex;align-items:center;gap:6px;background:none;border:1px solid transparent;color:var(--mute);font:11px var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:5px 8px;cursor:pointer;border-radius:3px}
.venues button svg{width:22px;height:14px;display:block}.venues button svg path{fill:none;stroke:currentColor;stroke-width:1.2;vector-effect:non-scaling-stroke}
.venues button[aria-pressed=true]{color:var(--ink);border-color:var(--hair)}.venues button:focus-visible,.days button:focus-visible,.btn:focus-visible,.presets button:focus-visible,.pin:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.days{display:flex;gap:2px;flex:none}.days button{background:none;border:0;border-bottom:2px solid transparent;color:var(--mute);font:11px var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:6px 6px;cursor:pointer}.days button[aria-checked=true]{color:var(--ink);border-bottom-color:var(--accent)}.days button.outlook{border-bottom-style:dotted;border-bottom-color:var(--hair)}
.right{display:flex;align-items:center;gap:6px;flex:none}
.sel,.btn{background:none;border:1px solid var(--hair);color:var(--ink);font:11px var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:5px 8px;border-radius:3px;cursor:pointer;-webkit-appearance:none;appearance:none}
.btn.round{width:28px;height:28px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}
.main{position:fixed;inset:0}
.stage{position:absolute;inset:0}.stage canvas{display:block;width:100%;height:100%;touch-action:none}
.presets{position:absolute;right:14px;top:calc(var(--top-h) + 12px);display:flex;flex-direction:column;gap:6px;z-index:5}.presets button{width:32px;height:32px;background:var(--panel);border:1px solid var(--hair);color:var(--ink);border-radius:3px;cursor:pointer;font-size:13px}.presets button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}
.compass{position:absolute;left:14px;top:calc(var(--top-h) + 12px);width:72px;height:72px;z-index:5;pointer-events:none}.compass .ring{fill:none;stroke:var(--hair);stroke-width:1}.compass .n{font:10px var(--mono);fill:var(--ink);text-anchor:middle}.compass .tick{stroke:var(--mute);stroke-width:1}
.hero{position:absolute;left:50%;top:50%;width:120px;height:120px;margin:-60px 0 0 -60px;pointer-events:none;z-index:4;transition:transform .5s cubic-bezier(.2,.8,.2,1)}.hero .arrow{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.hero .num{font:bold 17px var(--mono);fill:var(--ink);text-anchor:middle;paint-order:stroke;stroke:var(--bg);stroke-width:4px}
.flag{position:absolute;left:0;right:0;top:var(--top-h);height:3px;background:transparent}.flag.amber{background:var(--amber)}.flag.red{background:var(--red)}
.panel{position:absolute;z-index:6;background:var(--panel);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--hair);border-radius:4px}
.dial{left:14px;bottom:140px;width:150px;height:150px;padding:0}.dial svg{width:100%;height:100%;display:block}.dial .shell{fill:var(--bg);stroke:var(--ink);stroke-width:1.2}.dial .windv{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round}.dial .wedge{fill:var(--accent);opacity:.15}.dial .ghost{fill:none;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:3 4;opacity:.6}.dial .ring{fill:none;stroke:var(--hair)}
.dialnum{position:absolute;left:0;right:0;bottom:8px;text-align:center;pointer-events:none}.dialnum .big{display:block;font-size:22px;font-weight:700;color:var(--ink)}.dialnum .small{display:block;font-size:11px;color:var(--mute)}
.readout{left:178px;right:14px;bottom:140px;height:auto;min-height:60px;display:flex;flex-wrap:wrap;gap:8px 18px;padding:10px 14px;align-items:center}
.readout .item{display:flex;align-items:center;gap:7px;min-width:52px}.readout .item svg{width:18px;height:18px;flex:none;stroke:var(--mute);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.readout .item .v{font:bold 17px var(--mono);letter-spacing:.02em}.readout .item .u{font:10px var(--mono);color:var(--mute);letter-spacing:.06em;text-transform:uppercase}.readout .item.hidden{display:none}
.readout .dots{display:flex;gap:4px}.readout .dots i{width:7px;height:7px;border-radius:50%;background:var(--hair);display:block}.readout .dots i.on{background:var(--ink)}
.readout .effect .v.head{color:var(--red)}.readout .effect .v.tail{color:var(--green)}
.slider{left:14px;right:14px;bottom:14px;height:112px;padding:0}
.strip{position:absolute;left:0;right:0;top:0;width:100%;height:70px;display:block}
.time{position:absolute;left:0;right:0;top:62px;width:100%;margin:0;height:40px;background:transparent;-webkit-appearance:none;appearance:none;cursor:pointer}
.time::-webkit-slider-runnable-track{height:1px;background:var(--hair)}.time::-moz-range-track{height:1px;background:var(--hair)}
.time::-webkit-slider-thumb{-webkit-appearance:none;width:2px;height:22px;margin-top:-11px;background:var(--ink);border:0;border-radius:0}.time::-moz-range-thumb{width:2px;height:22px;background:var(--ink);border:0;border-radius:0}
.pin{position:absolute;top:0;width:0;height:112px;pointer-events:none}.pin::before{content:"";position:absolute;left:-1px;top:0;bottom:0;width:2px;background:var(--accent)}.pinlabel{position:absolute;left:-28px;top:4px;width:56px;text-align:center;font-size:11px;font-weight:700;color:#1d1f22;background:var(--accent);padding:2px 0;border-radius:2px;pointer-events:auto;cursor:ew-resize;touch-action:none}
.play{position:absolute;left:8px;bottom:6px}.now{position:absolute;right:10px;bottom:8px;font-size:11px;color:var(--mute)}
.fallback{position:absolute;inset:52px 0 0 0;padding:12px;overflow:auto}.fallback svg{width:100%;height:auto;max-height:60vh;display:block}
.credits{background:var(--bg);color:var(--ink);border:1px solid var(--hair);border-radius:6px;max-width:460px;padding:18px 22px;font-size:14px}.credits::backdrop{background:rgba(0,0,0,.4)}.credits h2{margin:0 0 8px;font-size:16px}.credits .small{font-size:11px;color:var(--mute);text-transform:none;letter-spacing:.02em}
@media (max-width:1100px){.top{height:auto;flex-wrap:wrap;gap:6px;padding:6px 10px}.days{order:3;flex:1 1 100%;overflow-x:auto;scrollbar-width:none}.days::-webkit-scrollbar{display:none}.right{margin-left:auto}}
@media (max-width:760px){.brand .word{display:none}.dial{width:110px;height:110px;bottom:132px;left:10px}.dialnum .big{font-size:17px}.readout{left:128px;right:10px;bottom:132px;gap:6px 12px;padding:8px 10px}.readout .item .v{font-size:15px}.slider{left:10px;right:10px;bottom:10px;height:108px}.hero{width:90px;height:90px;margin:-45px 0 0 -45px}}
@media (prefers-reduced-motion:reduce){.hero{transition:none}}
