:root{--bg:#0b1a26;--panel:#091520a8;--panel-solid:#0f2232;--line:#ffffff1a;--text:#eef4f8;--muted:#9fb3c2;--accent:#ff7a1a;--wind:#7cc7ff;--good:#4ade80;--warn:#fbbf24;--bad:#f87171;--r:14px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--mono:"IBM Plex Mono", ui-monospace, monospace;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px)}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;margin:0;font-family:Manrope,system-ui,-apple-system,Segoe UI,sans-serif;overflow:hidden}#scene{width:100%;height:100%;display:block;position:fixed;inset:0}[hidden]{display:none!important}button{font:inherit;color:inherit}kbd{font-family:var(--mono);border:1px solid var(--line);color:var(--muted);background:#ffffff0f;border-bottom-width:2px;border-radius:5px;padding:1px 6px;font-size:11px}:focus-visible{outline:2px solid var(--wind);outline-offset:2px}svg.lucide{stroke-width:2px;flex:none;width:18px;height:18px}.loading{z-index:50;background:radial-gradient(120% 90% at 50% 10%,#1d3b55 0%,#0b1a26 60%);place-items:center;transition:opacity .6s;display:grid;position:fixed;inset:0}.loading.fade{opacity:0;pointer-events:none}.loading-inner{text-align:center;width:min(320px,80vw)}.brand-mark{width:56px;height:56px;margin:0 auto var(--s4);color:var(--accent);background:#ff7a1a24;border-radius:16px;place-items:center;display:grid}.brand-mark svg.lucide{width:28px;height:28px}.loading-title{margin-bottom:var(--s3);font-size:18px;font-weight:700}.loading-bar{background:#ffffff1a;border-radius:4px;height:4px;overflow:hidden}.loading-bar span{background:var(--accent);width:5%;height:100%;transition:width .3s;display:block}.loading-sub{margin-top:var(--s3);color:var(--muted);font-size:13px}.start{z-index:40;padding:var(--s4);touch-action:pan-y;background:linear-gradient(#06101a26 0%,#06101aa6 100%);place-items:center;display:grid;position:fixed;inset:0;overflow-y:auto}.start-card{width:min(520px,100%);padding:var(--s6);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px)saturate(1.2);background:#091520c7;border-radius:22px;box-shadow:0 30px 80px #00000059}.start-eyebrow{align-items:center;gap:var(--s2);color:var(--wind);letter-spacing:.02em;font-size:13px;font-weight:600;display:flex}.start h1{margin:var(--s3) 0 var(--s3);letter-spacing:-.02em;font-size:clamp(30px,6vw,42px);font-weight:800;line-height:1.05}.start h1 em{color:var(--accent);font-style:normal}.start-lede{color:var(--muted);margin:0 0 var(--s5);font-size:15px;line-height:1.5}.field{margin-bottom:var(--s4);display:block}.field>span{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:var(--s2);font-size:12px;font-weight:700;display:block}.field input{width:100%;height:48px;padding:0 var(--s4);font:inherit;color:var(--text);border:1px solid var(--line);-webkit-user-select:text;user-select:text;background:#ffffff0f;border-radius:12px;outline:none;font-size:16px}.field input:focus{border-color:var(--wind)}.swatches{gap:var(--s2);flex-wrap:wrap;display:flex}.swatch{cursor:pointer;border:2px solid #ffffff2e;border-radius:50%;width:44px;height:44px;padding:0;position:relative}.swatch[aria-checked=true]{border-color:var(--text);box-shadow:0 0 0 3px #ffffff26}.levels{gap:var(--s2);grid-template-columns:repeat(3,1fr);display:grid}.level{padding:var(--s3);cursor:pointer;border:1px solid var(--line);background:#ffffff0a;border-radius:12px;flex-direction:column;gap:2px;min-height:44px;display:flex}.level input{opacity:0;pointer-events:none;position:absolute}.level b{font-size:15px}.level small{color:var(--muted);font-size:12px;line-height:1.35}.level:has(input:checked){border-color:var(--accent);background:#ff7a1a1a}.level:has(input:focus-visible){outline:2px solid var(--wind)}.btn-primary,.btn-secondary{justify-content:center;align-items:center;gap:var(--s2);cursor:pointer;border:0;border-radius:14px;width:100%;height:52px;font-size:16px;font-weight:800;display:inline-flex}.btn-primary{background:var(--accent);color:#1b0d02;margin-top:var(--s2)}.btn-primary:hover{filter:brightness(1.06)}.btn-secondary{border:1px solid var(--line);background:#ffffff14;font-weight:700}.start-foot{justify-content:space-between;gap:var(--s3);margin-top:var(--s4);color:var(--muted);font-size:13px;display:flex}.start-foot span{align-items:center;gap:6px;display:inline-flex}.start-foot svg.lucide{width:15px;height:15px}.hud{pointer-events:none;z-index:10;position:fixed;inset:0}.hud>div{position:absolute}.hud button,.hud .trim-card{pointer-events:auto}.hud-tl{top:calc(var(--s4) + var(--safe-t));left:calc(var(--s4) + var(--safe-l));max-width:min(420px,46vw)}.hud-tr{top:calc(var(--s4) + var(--safe-t));right:calc(var(--s4) + var(--safe-r));align-items:flex-end;gap:var(--s2);flex-direction:column;display:flex}.hud-bl{bottom:calc(var(--s4) + var(--safe-b));left:calc(var(--s4) + var(--safe-l))}.hud-bc{bottom:calc(var(--s4) + var(--safe-b));align-items:center;gap:var(--s2);flex-direction:column;display:flex;left:50%;transform:translate(-50%)}.hud-br{bottom:calc(var(--s4) + var(--safe-b));right:calc(var(--s4) + var(--safe-r))}.panel,.coach,.map-card,.wind-card,.speed-card,.trim-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);-webkit-backdrop-filter:blur(14px)saturate(1.3)}.coach{gap:var(--s3);padding:var(--s3) var(--s4);transition:opacity .4s,transform .4s;display:flex}.coach.hide{opacity:0;transform:translateY(-6px)}.coach-icon{color:var(--accent);padding-top:2px}.coach-title{font-size:14px;font-weight:700}.coach-text{color:#cfdde7;margin-top:2px;font-size:13.5px;line-height:1.45}.coach-text b{color:var(--text)}.coach.tone-warn .coach-icon{color:var(--warn)}.coach.tone-bad .coach-icon{color:var(--bad)}.coach.tone-good .coach-icon{color:var(--good)}.tool-row{gap:var(--s2);display:flex}.icon-btn{cursor:pointer;background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);border-radius:12px;place-items:center;width:44px;height:44px;display:grid}.icon-btn:hover{background:#14283ad9}.icon-btn[aria-pressed=true]{color:var(--accent)}.map-card{padding:var(--s2)}.map-card canvas{width:220px;height:190px;display:block}.map-foot{padding:var(--s1) var(--s1) 0;color:var(--muted);justify-content:space-between;align-items:center;font-size:12px;display:flex}.map-foot span{align-items:center;gap:6px;display:inline-flex}.map-foot svg.lucide{width:14px;height:14px}.net:before{content:"";background:var(--muted);border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.net.online:before{background:var(--good)}.net.offline:before{background:var(--bad)}.wind-card{padding:var(--s2);flex-direction:column;align-items:center;display:flex}.wind-card canvas{width:200px;height:200px;display:block}.pos{padding:2px 0 var(--s1);letter-spacing:.01em;font-size:13px;font-weight:700}.speed-card{gap:var(--s4);padding:var(--s3) var(--s4);align-items:center;display:flex}.stat{flex-direction:column;align-items:flex-start;display:flex}.stat span{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:18px;font-weight:600;line-height:1.1}.stat label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:700}.stat.big{flex-flow:wrap;align-items:baseline;width:118px}.stat.big span{font-size:40px}.stat.big small{font-family:var(--mono);color:var(--muted);margin-left:4px;font-size:14px}.stat.big label{width:100%}.stat-col{gap:var(--s2);flex-direction:column;min-width:64px;display:flex}.heel-meter{border:1px solid var(--line);background:#09152099;border-radius:6px;width:260px;height:6px;position:relative}.heel-zone{background:#4ade8073;border-radius:6px;position:absolute;top:0;bottom:0}.heel-needle{background:var(--text);border-radius:2px;width:3px;height:12px;position:absolute;top:-4px;left:50%;transform:translate(-50%)}.trim-card{padding:var(--s3) var(--s4);gap:var(--s3);flex-direction:column;width:270px;display:flex}.trim-head{align-items:center;gap:var(--s2);margin-bottom:6px;font-size:13px;display:flex}.trim-head b{font-weight:700}.trim-state{color:var(--muted);flex:1;font-size:12px;font-weight:600}.trim-state.good{color:var(--good)}.trim-state.warn{color:var(--warn)}.trim-state.bad{color:var(--bad)}.trim-bar{border-radius:6px;height:10px;display:flex;position:relative;overflow:hidden}.trim-bar .z{height:100%}.trim-bar .luff{background:#fbbf2480;width:14%}.trim-bar .good{background:#4ade8073;width:48%}.trim-bar .stall{background:#f8717173;flex:1}.trim-bar i{background:#fff;border-radius:2px;width:4px;height:14px;transition:left .12s linear;position:absolute;top:-2px;left:0;transform:translate(-50%);box-shadow:0 0 0 1px #0006}.sheet{align-items:center;gap:var(--s2);color:var(--muted);margin-top:6px;font-size:11px;display:flex}.sheet-bar{background:#ffffff1a;border-radius:3px;flex:1;height:4px;overflow:hidden}.sheet-bar i{background:var(--wind);width:50%;height:100%;display:block}.trim-foot{color:var(--muted);justify-content:space-between;font-size:11px;display:flex}.trim.disabled{opacity:.45}.toast{top:calc(90px + var(--safe-t));padding:var(--s2) var(--s4);border:1px solid var(--line);opacity:0;white-space:nowrap;background:#091520cc;border-radius:999px;font-size:14px;font-weight:700;transition:opacity .3s,transform .3s;position:absolute;left:50%;transform:translate(-50%,-8px)}.toast.show{opacity:1;transform:translate(-50%)}.drawer{z-index:30;border-left:1px solid var(--line);-webkit-backdrop-filter:blur(20px);width:min(420px,100vw);padding-top:var(--safe-t);touch-action:pan-y;-webkit-user-select:text;user-select:text;background:#091520f0;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.drawer-head{padding:var(--s4) var(--s4) var(--s3) var(--s5);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex}.drawer-head h2{align-items:center;gap:var(--s2);margin:0;font-size:18px;display:flex}.drawer-body{padding:var(--s4) var(--s5) calc(var(--s6) + var(--safe-b));flex:1;overflow-y:auto}.seg{border:1px solid var(--line);background:#ffffff0d;border-radius:12px;padding:3px;display:flex}.seg button{cursor:pointer;height:40px;color:var(--muted);background:0 0;border:0;border-radius:9px;flex:1;font-weight:700}.seg button[aria-pressed=true]{color:var(--text);background:#ff7a1a29}.hint{color:var(--muted);margin-top:6px;font-size:12px;display:block}.keys{border-collapse:collapse;width:100%;font-size:13px}.keys td{border-bottom:1px solid var(--line);padding:6px 0}.keys td:first-child{white-space:nowrap;width:120px}.about{color:var(--muted);margin-top:var(--s5);font-size:12.5px;line-height:1.5}.lesson{border:1px solid var(--line);padding:var(--s3) var(--s4);margin-bottom:var(--s3);background:#ffffff08;border-radius:12px}.lesson.active{border-color:var(--accent);background:#ff7a1a12}.lesson.done{opacity:.75}.lesson-head{align-items:center;gap:var(--s2);cursor:pointer;min-height:32px;display:flex}.lesson-num{background:#ffffff14;border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-size:12px;font-weight:800;display:grid}.lesson.done .lesson-num{color:var(--good);background:#4ade8033}.lesson.active .lesson-num{background:var(--accent);color:#1b0d02}.lesson-title{flex:1;font-size:14.5px;font-weight:700}.lesson-text{color:#cfdde7;margin:var(--s2) 0 0;font-size:13.5px;line-height:1.55}.lesson-goal{margin-top:var(--s2);color:var(--wind);align-items:center;gap:6px;font-size:12.5px;font-weight:600;display:flex}.lesson-progress{height:4px;margin-top:var(--s2);background:#ffffff14;border-radius:3px;overflow:hidden}.lesson-progress i{background:var(--accent);width:0;height:100%;display:block}.lesson button.start-lesson{margin-top:var(--s3);height:40px;padding:0 var(--s4);background:var(--accent);color:#1b0d02;cursor:pointer;border:0;border-radius:10px;font-weight:800}.primer h3{margin:var(--s5) 0 var(--s2);font-size:14px}.primer p{color:#cfdde7;margin:0 0 var(--s2);font-size:13.5px;line-height:1.55}.touch{pointer-events:none;z-index:12;position:fixed;inset:0}.tiller-pad{left:calc(var(--s4) + var(--safe-l));bottom:calc(var(--s4) + var(--safe-b));pointer-events:auto;touch-action:none;background:var(--panel);border:1px solid var(--line);justify-content:center;align-items:center;gap:var(--s2);-webkit-backdrop-filter:blur(14px);border-radius:18px;flex-direction:column;width:220px;height:96px;display:flex;position:absolute}.tiller-pad span{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:700}.tiller-track{background:#ffffff1f;border-radius:6px;width:180px;height:8px;position:relative}.tiller-knob{background:var(--text);border-radius:50%;width:40px;height:40px;margin:-20px 0 0 -20px;position:absolute;top:50%;left:50%;box-shadow:0 4px 14px #0000004d}.touch-right{right:calc(var(--s4) + var(--safe-r));bottom:calc(var(--s4) + var(--safe-b));align-items:flex-end;gap:var(--s2);pointer-events:none;display:flex;position:absolute}.sheet-slider{pointer-events:auto;touch-action:none;background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);border-radius:16px;width:64px;height:150px;position:relative;overflow:hidden}.sheet-slider.tall{width:72px;height:210px}.ss-fill{background:linear-gradient(#7cc7ff8c,#7cc7ff40);height:50%;position:absolute;bottom:0;left:0;right:0}.sheet-slider span{text-align:center;text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:800;position:absolute;top:8px;left:0;right:0}.sheet-slider.auto{opacity:.5}.touch-btn{pointer-events:auto;border:1px solid var(--line);background:var(--panel);cursor:pointer;-webkit-backdrop-filter:blur(14px);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:64px;height:64px;font-size:11px;font-weight:800;display:flex}.touch-btn[aria-pressed=true]{border-color:var(--accent);background:#ff7a1a4d}body.is-touch .hud-bl{top:calc(var(--s3) + var(--safe-t));bottom:auto;left:calc(var(--s3) + var(--safe-l))}body.is-touch .wind-card canvas{width:120px;height:120px}body.is-touch .pos{font-size:11px}body.is-touch .hud-tl{top:auto;bottom:calc(126px + var(--safe-b));left:calc(var(--s3) + var(--safe-l));max-width:min(360px,60vw)}body.is-touch .hud-tl .coach{padding:var(--s2) var(--s3)}body.is-touch .coach-text{font-size:12.5px}body.is-touch .hud-bc{bottom:auto;top:calc(var(--s3) + var(--safe-t))}body.is-touch .speed-card{padding:var(--s2) var(--s3);gap:var(--s3)}body.is-touch .stat.big{width:84px}body.is-touch .stat.big span{font-size:28px}body.is-touch .stat span{font-size:15px}body.is-touch .heel-meter{width:200px}body.is-touch .hud-br{bottom:auto;top:calc(var(--s3) + var(--safe-t) + 52px);right:calc(var(--s3) + var(--safe-r))}body.is-touch .hud-tr{top:calc(var(--s3) + var(--safe-t));right:calc(var(--s3) + var(--safe-r))}body.is-touch .map-card{display:none}body.is-touch .trim-card{width:190px;padding:var(--s2) var(--s3);gap:var(--s2)}body.is-touch .trim-card kbd,body.is-touch .trim .sheet,body.is-touch .trim-foot{display:none}body.is-touch .trim-head{margin-bottom:3px;font-size:12px}body.is-touch .tool-row{gap:6px}@media (max-width:760px){.start-card{padding:var(--s5)}.levels{grid-template-columns:1fr}body.is-touch .speed-card .stat-col:last-child{display:none}body.is-touch .hud-bc{left:auto;right:calc(var(--s3) + var(--safe-r));top:calc(var(--s3) + var(--safe-t) + 52px);align-items:flex-end;transform:none}body.is-touch .hud-br{top:calc(var(--s3) + var(--safe-t) + 130px)}body.is-touch .heel-meter{width:150px}body.is-touch .trim-card{width:160px}body.is-touch .hud-tl{max-width:calc(100vw - 32px);bottom:calc(240px + var(--safe-b))}body.is-touch .tiller-pad{width:180px}body.is-touch .tiller-track{width:140px}}@media (max-height:500px){body.is-touch .hud-tl{display:none}body.is-touch .sheet-slider{height:120px}body.is-touch .sheet-slider.tall{height:150px}body.is-touch .wind-card canvas{width:96px;height:96px}body.is-touch .hud-br{top:calc(var(--s3) + var(--safe-t));right:calc(var(--s3) + var(--safe-r) + 210px)}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.tiller-pad span{order:-1}@media (max-width:760px){body.is-touch .hud-bc{top:calc(var(--s3) + var(--safe-t) + 56px)}body.is-touch .hud-br{top:calc(var(--s3) + var(--safe-t) + 176px)}body.is-touch .touch-right #t-kite{position:absolute;bottom:158px;right:80px}body.is-touch .hud-tl{bottom:calc(126px + var(--safe-b));left:calc(var(--s3) + var(--safe-l));max-width:calc(100vw - 180px);right:auto}}@media (max-height:500px){body.is-touch .hud-br{top:auto;right:auto;bottom:calc(var(--s3) + var(--safe-b));left:50%;transform:translate(-50%)}body.is-touch .hud-bc{top:calc(var(--s3) + var(--safe-t))}body.is-touch .heel-meter{display:none}}.maneuver-btn{pointer-events:auto;align-items:center;gap:var(--s2);height:44px;padding:0 var(--s4);border:1px solid var(--line);background:var(--panel);cursor:pointer;-webkit-backdrop-filter:blur(14px);border-radius:12px;font-size:14px;font-weight:800;display:inline-flex}.maneuver-btn:hover{background:#14283ad9}.maneuver-btn[aria-pressed=true],.touch-btn#t-maneuver[aria-pressed=true]{border-color:var(--wind);background:#7cc7ff40}body.is-touch .maneuver-btn{display:none}.paused{z-index:35;padding:var(--s4);background:#06101a73;place-items:center;display:grid;position:fixed;inset:0}.paused-card{text-align:center;width:min(380px,100%);padding:var(--s6) var(--s5);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);background:#091520db;border-radius:22px}.paused-card h2{margin:0 0 var(--s2);font-size:24px}.paused-card p{color:var(--muted);margin:0 0 var(--s5);font-size:14.5px;line-height:1.5}@media (max-width:760px){body.is-touch .touch-right #t-maneuver{position:absolute;bottom:230px;right:80px}}.wordmark{letter-spacing:-.02em;color:var(--text);font-size:20px;font-weight:800}.wordmark span{color:var(--accent)}.loading-title.wordmark{font-size:26px}.start-top{justify-content:space-between;align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.tiller-pad{gap:22px}@media (max-width:420px){body.is-touch .wind-card canvas{width:100px;height:100px}body.is-touch .tool-row{gap:4px}body.is-touch .pos{font-size:10px}}.start h1 em{white-space:nowrap}@media (max-width:420px){body.is-touch .pos{text-align:center;max-width:104px;line-height:1.25}}.touch-btn span{letter-spacing:-.01em;font-size:10.5px}
