:root{color-scheme:dark;--bg: #04101c;--panel-bg: rgba(0, 12, 24, .82);--panel-bg-solid: #071826;--panel-border: rgba(255, 255, 255, .14);--text: rgba(255, 255, 255, .88);--text-dim: rgba(255, 255, 255, .55);--text-faint: rgba(255, 255, 255, .35);--accent-green: #4ade80;--accent-amber: #fbbf24;--accent-red: #ef5350;--radius: 8px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "SF Mono", Menlo, Consolas, monospace;--touch-target: 44px;--touch-bar-h: 68px;--tuning-width: min(420px, 92vw)}*{box-sizing:border-box}html,body{margin:0;height:100%;height:100dvh;background:var(--bg);font-family:var(--font-sans);font-size:13px;color:var(--text);overflow:hidden}#app{position:fixed;inset:0;height:100dvh;overflow:hidden}#app canvas{display:block}body.tuning-open #app{right:var(--tuning-width)}button{font-family:var(--font-sans);font-size:13px;color:var(--text);background:#ffffff12;border:1px solid var(--panel-border);border-radius:var(--radius);cursor:pointer;transition:background .15s ease,border-color .15s ease}button:hover{background:#ffffff26;border-color:#ffffff5c}button:focus-visible{outline:2px solid var(--accent-green);outline-offset:2px}.icon-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;font-size:15px;line-height:1}@media(hover:none)and (pointer:coarse){.icon-btn{width:var(--touch-target);height:var(--touch-target)}}#topbar{position:fixed;top:16px;right:16px;z-index:50;display:flex;gap:8px}body.tuning-open #topbar{right:calc(var(--tuning-width) + 16px)}.start-overlay{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;background:#0208108c;padding:16px}.start-overlay[hidden]{display:none}.start-overlay__panel{width:min(360px,100%);padding:28px 24px;background:var(--panel-bg-solid);border:1px solid var(--panel-border);border-radius:calc(var(--radius) * 2);text-align:center;box-shadow:0 12px 40px #00000073}.start-overlay__title{margin:0 0 10px;font-size:22px;font-weight:600;letter-spacing:.02em}.start-overlay__desc{margin:0 0 20px;color:var(--text-dim);font-size:14px;line-height:1.5}.start-overlay__modes{display:flex;gap:8px}.start-overlay__mode{flex:1;padding:10px 4px;min-height:var(--touch-target);font-size:13px}.start-overlay__row{margin:0 0 14px;text-align:left}.start-overlay__row-label{display:block;margin:0 0 6px;color:var(--text-dim);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.start-overlay__choices{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:6px}.start-overlay__choice{padding:8px 4px;min-height:36px;color:var(--text-dim);font-size:11px;line-height:1.25;white-space:normal;word-break:break-word}.start-overlay__choice--active,.start-overlay__mode--active{background:#4ade8029;border-color:#4ade808c;color:var(--accent-green)}.start-overlay__ride{width:100%;padding:14px;min-height:var(--touch-target);background:var(--accent-green);border-color:var(--accent-green);color:#04150a;font-size:16px;font-weight:600}.start-overlay__ride:hover{background:#5eeb92;border-color:#5eeb92}.toast{position:fixed;top:16px;left:50%;transform:translate(-50%) translateY(-8px);z-index:20;display:flex;align-items:center;gap:10px;max-width:min(420px,calc(100vw - 32px));padding:10px 10px 10px 14px;background:var(--panel-bg-solid);border:1px solid var(--panel-border);border-radius:var(--radius);box-shadow:0 8px 24px #00000059;opacity:0;transition:opacity .2s ease,transform .2s ease;pointer-events:none}.toast[hidden]{display:none}.toast--show{opacity:1;transform:translate(-50%) translateY(0);pointer-events:auto}.toast__text{flex:1;font-size:13px;line-height:1.4}.toast__action{flex:none;padding:6px 12px;font-size:12px;color:var(--accent-green);border-color:#4ade8080}.toast__close{flex:none;width:24px;height:24px;padding:0;border:none;background:none;color:var(--text-dim);font-size:15px;line-height:1}.toast__close:hover{background:#ffffff1f}.wing-cue{position:fixed;left:50%;bottom:calc(22px + 8vh + env(safe-area-inset-bottom));transform:translate(-50%);z-index:15;display:flex;align-items:center;gap:8px;padding:5px 14px 5px 6px;background:var(--panel-bg-solid);border:1px solid var(--panel-border);border-radius:999px;box-shadow:0 8px 24px #00000059;opacity:0;transition:opacity .15s ease;pointer-events:none}.wing-cue[hidden]{display:none}.wing-cue--show{opacity:1}@media(hover:none)and (pointer:coarse){.wing-cue{bottom:calc(var(--touch-bar-h) + 14px + env(safe-area-inset-bottom))}}.wing-cue__ring{flex:none;transform:rotate(-90deg)}.wing-cue__ring-track{fill:none;stroke:var(--panel-border);stroke-width:3}.wing-cue__ring-fill{fill:none;stroke:var(--accent-amber);stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset .05s linear}.wing-cue__text{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap}.wing-cue--cancelled .wing-cue__ring,.wing-cue--hint .wing-cue__ring{display:none}.wing-cue--cancelled .wing-cue__text{color:var(--accent-red)}.wing-cue--hint .wing-cue__text{color:var(--accent-green)}.popover{display:none;position:fixed;top:54px;right:16px;z-index:40;padding:10px 14px;background:var(--panel-bg-solid);border:1px solid var(--panel-border);border-radius:var(--radius);box-shadow:0 8px 24px #00000059}.popover--open{display:block}#topbar:has(#help-btn:hover)+.popover{display:block}.popover__list{margin:0;font-family:var(--font-mono);font-size:12px;line-height:1.6;white-space:pre;color:var(--text)}.right-column{position:fixed;top:0;right:16px;bottom:0;z-index:10;display:flex;flex-direction:column;align-items:flex-end;pointer-events:none}.top-right-cluster{flex:none;margin-top:calc(env(safe-area-inset-top) + 64px);display:flex;flex-direction:column;align-items:flex-end;gap:10px}#card{z-index:10;border-radius:var(--radius);cursor:move;touch-action:none;user-select:none}#card canvas{display:block;border-radius:var(--radius)}.course-cluster{display:flex;flex-direction:column;align-items:center;gap:10px}.course-cluster[hidden]{display:none}.wing-status{align-self:stretch;width:190px;padding:8px 10px;border-radius:var(--radius);background:var(--panel-bg, rgba(20, 24, 32, .78));color:var(--text, #e8edf2);font:12px/1.5 system-ui,sans-serif;cursor:move}.tack-line{font-size:14px;font-weight:700;line-height:1.3;margin-bottom:4px}.tack-line--good{color:var(--accent-green)}.tack-line--caution{color:var(--accent-amber)}.tack-line--bad{color:var(--accent-red)}.tack-line--neutral{color:var(--text)}.tack-line--urgent{animation:tack-now-pulse 1s ease-in-out infinite}@keyframes tack-now-pulse{0%,to{opacity:1}50%{opacity:.45}}.status-detail{color:var(--text-dim);white-space:pre-line}.wind-compass{width:180px;height:180px;border-radius:50%;background:var(--panel-bg, rgba(20, 24, 32, .78))}.wind-compass-wrap{display:inline-block;position:relative;cursor:move}.expand-cue{position:absolute;top:-2px;right:-2px;width:16px;height:16px;border-radius:50%;background:#ffffff1a;border:1px solid var(--panel-border);color:var(--text-dim);font-size:11px;line-height:14px;text-align:center;pointer-events:none;user-select:none}.sheet-gauge-wrap{z-index:10;display:inline-block;cursor:move}.sheet-gauge-wrap[hidden]{display:none}.sheet-gauge{display:block;border-radius:var(--radius)}.mid-right-cluster{flex:1 1 auto;min-height:0;width:100%;display:flex;flex-direction:column;align-items:flex-end;gap:14px}.course-cluster{margin-top:auto}.balance-pad-wrap{z-index:10;display:inline-block;cursor:move;margin-bottom:auto}.course-cluster[hidden]~.balance-pad-wrap{margin-top:auto}.balance-pad{display:block;border-radius:var(--radius)}.course-pointer{position:fixed;z-index:11;transform:translate(-50%,-50%) rotate(var(--pointer-rot, 0deg));display:flex;flex-direction:column;align-items:center;gap:2px;pointer-events:none;color:#ff2f9e;filter:drop-shadow(0 0 6px rgba(255,47,158,.65))}.course-pointer[hidden]{display:none}.course-pointer__arrow{display:block}.course-pointer__dist{transform:rotate(calc(-1 * var(--pointer-rot, 0deg)));padding:1px 6px;border-radius:999px;background:#0a040ab8;color:var(--text, #e8edf2);font:600 11px/1.4 var(--font-sans, system-ui, sans-serif);white-space:nowrap}#card-toggle{position:absolute;top:4px;right:6px;width:18px;height:18px;padding:0;background:#ffffff14;border-radius:50%;color:var(--text-dim);font-size:12px;line-height:1}.drawer-backdrop{position:fixed;inset:0;z-index:55;background:#00040a80}.drawer-backdrop[hidden]{display:none}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:56;width:min(340px,100vw);display:flex;flex-direction:column;background:var(--panel-bg-solid);border-left:1px solid var(--panel-border);box-shadow:-12px 0 32px #0006;transform:translate(0);transition:transform .2s ease}.drawer[hidden]{display:none}.drawer__header{flex:none;display:flex;align-items:center;justify-content:space-between;padding:14px 14px 14px 18px;border-bottom:1px solid var(--panel-border)}.drawer__title{margin:0;font-size:15px;font-weight:600;letter-spacing:.02em}.drawer__reset-panels{padding:5px 10px;font-size:11px;color:var(--text-dim)}.drawer__body{flex:1;overflow-y:auto;overflow-x:hidden;padding:6px 18px 24px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}.drawer__body::-webkit-scrollbar{width:6px}.drawer__body::-webkit-scrollbar-track{background:transparent}.drawer__body::-webkit-scrollbar-thumb{background:#ffffff40;border-radius:3px}.drawer__body::-webkit-scrollbar-thumb:hover{background:#fff6}.settings-panel__group{padding:14px 0;border-bottom:1px solid rgba(255,255,255,.08)}.settings-panel__group:last-child{border-bottom:none}.settings-panel__group-title{margin:0 0 10px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint)}.settings-panel__group-body{display:flex;flex-direction:column;gap:10px}.panel-row{display:flex;flex-direction:column;gap:4px}.panel-row[hidden]{display:none}.panel-row__label{color:var(--text-dim);font-size:12px}.panel-row__value{color:var(--text);font-family:var(--font-mono);font-size:11px}.panel-row input[type=range]{width:100%;accent-color:var(--accent-green)}.panel-row select{width:100%;background:#ffffff0f;color:inherit;border:1px solid var(--panel-border);border-radius:var(--radius);padding:7px 8px;font:inherit;font-size:13px;min-height:var(--touch-target)}.panel-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-green)}.panel-row__controls{display:flex;align-items:center;gap:8px}.panel-row__controls input[type=range]{flex:1;min-width:0}.panel-row__number{flex:none;width:58px;background:#ffffff0f;color:inherit;border:1px solid var(--panel-border);border-radius:var(--radius);padding:4px;font-family:var(--font-mono);font-size:11px}.panel-row--modes{gap:6px}.panel-modes{display:flex;gap:12px;flex-wrap:wrap}.panel-modes__option{display:flex;align-items:center;gap:5px;text-transform:capitalize;font-size:12px;color:var(--text);cursor:pointer;min-height:var(--touch-target)}.panel-mode-custom{color:var(--accent-amber)}.panel-section-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 0;background:none;border:none;color:var(--text-dim);font:inherit;font-size:12px;letter-spacing:.04em}.panel-section-toggle:hover{color:var(--text);background:none}.panel-section-toggle__icon{font-size:9px;color:var(--text-faint)}.panel-section-body{display:flex;flex-direction:column;gap:10px;padding-top:4px}.panel-section-body[hidden]{display:none}.panel-subheading{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);border-top:1px solid rgba(255,255,255,.08);padding-top:8px}.panel-section-body>.panel-subheading:first-child{border-top:none;padding-top:0}.panel-reset{display:block;width:100%;margin:16px 0 4px;padding:10px;min-height:var(--touch-target)}.touch-bar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:50;gap:8px;padding:10px 10px calc(10px + env(safe-area-inset-bottom));background:var(--panel-bg-solid);border-top:1px solid var(--panel-border)}@media(hover:none)and (pointer:coarse){.touch-bar{display:flex}}.touch-bar__btn{flex:1;min-height:48px;padding:4px 6px;font-size:13px}.touch-bar__btn[hidden]{display:none}.tuning-page{position:fixed;top:0;right:0;bottom:0;z-index:60;width:var(--tuning-width);display:flex;flex-direction:column;background:var(--panel-bg-solid);border-left:1px solid var(--panel-border);box-shadow:-12px 0 32px #0006}.tuning-page[hidden]{display:none}.tuning-page__header{flex:none;display:flex;align-items:center;justify-content:space-between;padding:14px 14px 14px 18px;border-bottom:1px solid var(--panel-border)}.tuning-page__title{margin:0;font-size:15px;font-weight:700;letter-spacing:.14em}.tuning-page__body{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 18px 8px;display:flex;flex-direction:column;gap:2px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}.tuning-page__body::-webkit-scrollbar{width:6px}.tuning-page__body::-webkit-scrollbar-track{background:transparent}.tuning-page__body::-webkit-scrollbar-thumb{background:#ffffff40;border-radius:3px}.tuning-page__footer{flex:none;padding:12px 18px 18px;border-top:1px solid var(--panel-border);display:flex;flex-direction:column;gap:8px}.tuning-page__code{margin:0;padding:8px;background:#ffffff0d;border:1px solid var(--panel-border);border-radius:var(--radius);font-family:var(--font-mono);font-size:10px;line-height:1.5;white-space:pre;overflow-x:auto;max-height:220px;overflow-y:auto;color:var(--text-dim)}.tuning-scene{padding:12px;margin-bottom:4px;background:#ffffff0a;border:1px solid var(--panel-border);border-radius:var(--radius);display:flex;flex-direction:column;gap:8px}.tuning-scene__title{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.tuning-choice-row{display:flex;gap:6px;flex-wrap:wrap}.tuning-choice-btn{flex:1;min-width:64px;padding:6px 8px;font-size:12px}.variant-picker{margin:2px 0 10px}.variant-picker__row{display:flex;gap:6px;flex-wrap:wrap}.variant-picker__btn{flex:1;min-width:84px;padding:8px 6px;font-size:12px}.variant-picker__btn--active{background:#4ade8029;border-color:#4ade808c;color:var(--accent-green)}.variant-picker__desc{margin:6px 0 0;font-size:11px;line-height:1.5;color:var(--text-dim)}.tuning-force-row{display:flex;gap:6px;margin-bottom:8px}.tuning-force-btn{flex:1;padding:10px;min-height:var(--touch-target);background:var(--accent-green);border-color:var(--accent-green);color:#04150a;font-size:13px;font-weight:600}.tuning-force-btn:hover{background:#5eeb92;border-color:#5eeb92}.tuning-replay-btn{flex:none;padding:10px 14px;min-height:var(--touch-target);font-size:12px}.tuning-section{padding:2px 0;border-bottom:1px solid rgba(255,255,255,.08)}.tuning-section:last-child{border-bottom:none}.tuning-section__row{display:flex;align-items:center;gap:6px}.tuning-section__row .panel-section-toggle{flex:1}.tuning-mini-btn{flex:none;padding:6px 10px;font-size:11px;min-height:28px;white-space:nowrap}.tuning-mini-btn--trigger{color:var(--accent-green);border-color:#4ade8066}.tuning-stub-note{margin:4px 0 10px;font-size:12px;line-height:1.5;color:var(--text-dim);font-style:italic}.panel-row input[type=color]{width:100%;height:28px;padding:2px;background:#ffffff0f;border:1px solid var(--panel-border);border-radius:var(--radius);cursor:pointer}a.panel-reset{text-decoration:none;text-align:center;color:inherit}@media(max-width:700px){.drawer{width:100%}.icon-btn{width:var(--touch-target);height:var(--touch-target)}.start-overlay__title{font-size:26px}.start-overlay__desc{font-size:15px}.right-column{bottom:calc(var(--touch-bar-h) + env(safe-area-inset-bottom) + 12px)}.wing-status{width:160px;font-size:11px}.tack-line{font-size:13px}.wind-compass{width:130px;height:130px}}
