:root{color:#ecf3ff;background:#08111d;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.4;font-weight:500}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;overflow:hidden}body{background:#050e18}button,select,input{font:inherit}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid #83f7d7;outline-offset:3px}summary:focus-visible{outline:2px solid #83f7d7;outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.scores-page{height:100%;overflow-y:auto;padding:clamp(12px,2vw,28px);display:grid;align-items:safe center;container-type:inline-size}.scores-content{width:100%;max-width:1280px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:20px;align-items:start}.scores-content>.three-panel{width:100%}.scores-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:10px 0 24px}.scores-heading h2{margin:0;font-size:30px}.score-mode-tabs{display:flex;gap:3px;padding:3px;border:1px solid #27394f;border-radius:8px;background:#09131f}.score-mode-tabs button{border:0;padding:7px 18px;border-radius:5px;background:transparent;color:#a8bdd9;cursor:pointer}.score-mode-tabs button[aria-selected=true]{color:#8be4cf;background:#163b42}.score-table{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}.score-table th,.score-table td{padding:10px 8px;text-align:left}.score-table thead th{color:#a8bdd9;font-size:12px;font-weight:500;border-bottom:1px solid #27394f}.score-table tbody th{font-weight:600}.score-table tbody tr{border-bottom:1px solid rgba(167,208,255,.12)}.scores-list-card tbody tr{cursor:pointer}.scores-list-card tbody tr:hover{background:#8dc7ff0f}.scores-list-card tbody tr.is-selected{background:#83f7d71a;box-shadow:inset 3px 0 #83f7d7}.score-select{display:block;width:100%;padding:5px 0;border:0;background:transparent;color:inherit;text-align:left;font-weight:600;cursor:pointer}.score-select[aria-pressed=true]{color:#83f7d7}.score-table .score-number{text-align:right;white-space:nowrap}.score-best{font-weight:700}.score-table small{display:block;color:#a8bdd9;font-size:11px;font-weight:400;white-space:normal;margin-top:3px}.score-history-card>h2{margin:0 0 4px;font-size:22px}#score-history-title{margin:0 0 18px;color:#bfd1ee}.score-history-body>h3,.score-history-body>.history-drill,.score-history-body>.history-note:last-child{display:none}.score-history-body .history-summary{margin-bottom:18px}.score-history-body [data-action=more-history]{margin-top:12px}@container (max-width: 900px){.scores-content{grid-template-columns:minmax(0,1fr);max-width:760px}}@container (max-width: 550px){.scores-list-card .score-secondary{display:none}.score-table th,.score-table td{padding:9px 6px}.score-mode-tabs button{padding-inline:12px}}@media(pointer:coarse){.score-select,.score-mode-tabs button,.score-history-card button{min-height:44px}}.drill-history h3{margin:0 0 4px;font-size:22px}.history-drill{margin:0 0 18px;color:#bfd1ee}.history-summary{display:grid;grid-template-columns:1fr 1fr;gap:14px;color:#bfd1ee;font-size:13px}.history-summary strong{display:block;color:#ecf3ff;font-size:26px;font-variant-numeric:tabular-nums;margin-top:4px}.history-status,.scores-status,.history-note{font-size:13px;line-height:1.5;color:#bfd1ee}.history-status{margin-block:16px}.history-empty{padding:20px 0;color:#bfd1ee}.history-run{border-top:1px solid rgba(167,208,255,.16)}.history-run summary{display:flex;gap:12px;justify-content:space-between;padding:14px 0;cursor:pointer;font-size:14px}.history-run summary:before{content:"+";color:#83f7d7}.history-run[open] summary:before{content:"−"}.history-run summary>span:first-of-type{flex:1}.history-run summary small{display:block;margin-top:4px;color:#bfd1ee;font-size:12px}.history-score{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.history-metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:4px 0 16px}.history-metrics dt{font-size:12px;color:#bfd1ee}.history-metrics dd{margin:4px 0 0;font-variant-numeric:tabular-nums}.drill-history>[data-action=more-history]{margin-top:12px}.shell{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);width:100%;height:100%}.topbar{display:grid;grid-template-columns:240px minmax(0,1fr) auto;align-items:center;gap:24px;padding:16px 24px;border-bottom:1px solid #1c334a;background:#060f1d}.ui-icon{width:18px;height:18px;flex:0 0 auto;vertical-align:middle}.sensitivity-chip{display:flex;align-items:center;gap:12px;padding:8px 14px;border:1px solid #25435f;border-radius:10px;background:#0b1c2e;color:#a8bfd9;cursor:pointer;text-align:left}.sensitivity-chip>.ui-icon{color:#23d6e9}.sensitivity-chip small{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase}.sensitivity-chip strong{display:block;font-size:12px;color:#dfedff;white-space:nowrap}.brand{min-width:0}.eyebrow{color:#8bbcff;font-size:12px;letter-spacing:.18em;text-transform:uppercase}.settings-page{height:100%;overflow-y:auto;padding:clamp(20px,4vw,48px)}.settings-content{max-width:760px;margin:0 auto}.player-settings{display:grid;gap:20px;margin-top:28px}.player-settings fieldset,.player-settings details{min-width:0;margin:0;padding:20px;border:1px solid rgba(167,208,255,.16);border-radius:16px;background:#ffffff08}.player-settings legend{padding:0 8px;font-size:18px;font-weight:700}.player-settings p,.player-settings small{color:#bfd1ee;font-size:14px}.player-settings fieldset>p:first-of-type{margin-top:0}.player-settings summary{cursor:pointer}.player-settings fieldset>.three-field+.three-field{margin-top:20px}.settings-link{padding:0;border:0;background:none;color:#8fc9ff;text-decoration:underline;cursor:pointer}.sensitivity-summary{color:#bfd1ee;margin:20px 0 8px}.settings-save-status{min-height:1.4em;margin:0}.player-settings input[type=checkbox]{accent-color:#83f7d7}.three-mode:fullscreen{background:#08111d}.brand-logo{display:block;width:100%;max-width:220px;height:auto}h1,h2{margin:12px 0 14px;line-height:.95}h1{font-size:clamp(34px,5vw,54px)}h2{font-size:clamp(28px,4vw,40px)}.lede,.mode-meta p,.three-hint,.results-scenario{margin:0;color:#bfd1ee;font-size:15px}.mode-list{display:flex;justify-content:center;gap:8px}.mode-tab{display:inline-flex;align-items:center;justify-content:center;gap:10px;white-space:nowrap;border:1px solid transparent;border-radius:10px;padding:12px 16px;background:transparent;color:#a8bdd9;cursor:pointer;text-align:left}.mode-tab.active{background:#10263f;border-color:#284e70;color:#e8f4ff}.mode-tab.active .ui-icon{color:#24d8e9}.mode-tab:hover,.sensitivity-chip:hover{background:#10263f}.stage{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-width:0;min-height:0}.stage-inner{min-width:0;min-height:0;position:relative;width:100%;height:100%}.mode-frame{width:100%;height:100%;border:0;background:#000}.three-mode,.three-root{width:100%;height:100%}.three-mode{position:relative}.three-ready{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:none;background:transparent}.three-ready.open{display:block}.three-ready button{position:relative;width:100%;height:100%;display:block;box-sizing:border-box;padding:16px;border:0;border-radius:0;background:transparent;color:#eaf2ff;cursor:pointer}.three-ready button:disabled{opacity:1;cursor:default}.three-ready button:focus-visible{outline:2px solid #83f7d7;outline-offset:-6px}.three-ready-title{top:calc(50% + 28px);font-size:22px;font-weight:700}.three-ready .three-hint{top:calc(50% + 60px);margin:0}.three-ready-title,.three-ready .three-hint{position:absolute;left:16px;right:16px;text-shadow:0 1px 4px #02070e}.three-frame-stats{position:absolute;bottom:12px;right:16px;z-index:3;max-width:calc(100% - 32px);padding:6px 10px;border-radius:8px;background:#040a14db;color:#bfd1ee;font-size:12px;font-variant-numeric:tabular-nums;pointer-events:none}.scene-canvas{display:block;width:100%;height:100%}.three-hud{position:absolute;top:18px;left:18px;right:18px;display:flex;flex-wrap:wrap;gap:10px;z-index:3;pointer-events:none}.three-pill{flex:0 0 auto;padding:10px 14px;border:1px solid rgba(175,205,255,.18);border-radius:999px;background:#040a14db;font-size:13px;letter-spacing:.04em;text-transform:uppercase}.three-pill strong{color:#fff;margin-left:8px;font-size:14px;font-variant-numeric:tabular-nums;display:inline-block;width:6ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;text-align:right}.three-pill[data-hud-pill=drill] strong,.three-pill[data-hud-pill=sensitivity] strong,.three-pill[data-hud-pill=input] strong{width:auto;text-align:left}.three-pill[data-hud-pill=score] strong{width:10ch}.three-pill[data-hud-pill=status] strong{width:12ch;text-align:left}.three-crosshair{position:fixed;left:0;top:0;transform-origin:0 0;display:block;image-rendering:pixelated;z-index:2;pointer-events:none}.three-hud.counting-down [data-hud-pill=time]{color:#ffd385;border-color:#ffd385}.three-overlay,.three-ending,.three-results{position:absolute;top:0;right:0;bottom:0;left:0;display:none;place-items:center;align-items:safe center;overflow:auto;scroll-padding:8px;box-sizing:border-box;padding:clamp(12px,3vw,24px);z-index:4;background:#02070eb3;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.three-overlay.open,.three-ending.open,.three-results.open{display:grid}.three-results.in-map{left:50%;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;place-items:center start;padding:12px;overflow:hidden;pointer-events:none}.three-results.in-map .three-panel{width:min(320px,100%);margin-left:max(0px,calc(25% - 166px));max-width:100%;max-height:calc(100% - 32px);overflow:auto;padding:18px;border-radius:16px;box-shadow:none;pointer-events:auto}.three-results.in-map.looking .three-panel{pointer-events:none}.three-results.in-map h2{font-size:24px;line-height:1.1}.three-results.in-map .results-grid{gap:8px;margin-top:14px}.three-results.in-map .results-grid div{padding:8px;border-radius:8px}.three-results.in-map .results-grid strong{font-size:20px}.three-results.in-map .three-actions{flex-wrap:wrap;gap:8px;margin-top:14px}.three-results.in-map .three-actions button{padding:9px 12px}.three-results.in-map .three-hint{font-size:12px}.three-results.in-map.looking .three-actions{display:none}@media(max-width:700px){.three-results.in-map .three-panel{padding:12px}.three-results.in-map .results-grid{grid-template-columns:1fr}.three-results.in-map h2{font-size:18px}}.three-panel{box-sizing:border-box;width:min(560px,100%);min-width:0;padding:clamp(16px,3vw,28px);border-radius:18px;background:linear-gradient(145deg,#081b2e,#061320 85%);border:1px solid #1e3b54}.three-settings-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-top:18px}.three-field{display:grid;min-width:0;gap:8px}.three-field span,.results-grid span{color:#9ab4d7;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.three-field select,.three-field input{box-sizing:border-box;width:100%;min-width:0;border:1px solid rgba(167,208,255,.16);border-radius:14px;padding:12px 14px;background:#ffffff0f;color:#f4f8ff}.three-field select{color-scheme:dark}.three-field select option{background-color:#172331;color:#f4f8ff}.three-actions{display:flex;gap:12px;margin-top:24px}.three-hint{margin-top:16px}.three-actions button{border:0;border-radius:999px;padding:12px 18px;background:#ffffff14;color:#f4f8ff;cursor:pointer}.three-actions button.primary{background:linear-gradient(135deg,#83f7d7,#5aa6ff);color:#04101f;font-weight:700}.results-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:22px}.results-grid div{padding:14px;border-radius:16px;background:#ffffff0d}.results-grid strong{display:block;margin-top:6px;font-size:22px}@media(max-width:960px),(max-height:620px){.three-hud{top:8px;left:8px;right:8px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.three-pill{min-width:0;padding:6px 8px;border-radius:12px;font-size:10px;letter-spacing:0}.three-pill strong{margin-left:4px;font-size:12px}.three-hud .three-pill strong{display:block;width:100%;margin-left:0;text-align:left}.three-pill[data-hud-pill=drill],.three-pill[data-hud-pill=sensitivity],.three-pill[data-hud-pill=input],.three-pill[data-hud-pill=status],.three-pill[data-hud-pill=streak],.three-pill[data-hud-pill=best]{display:none}}@media(max-width:720px){.three-actions{flex-wrap:wrap}.three-actions button{flex:1;min-width:0}}@media(max-width:480px){.three-hud{grid-template-columns:repeat(2,minmax(0,1fr))}}.three-toggle{display:flex;align-items:center;gap:10px;margin-top:14px;color:#d7e5fb;font-size:14px}.three-toggle input{width:16px;height:16px}.release-version{color:#9caec6;font-size:.75rem;margin-top:.3rem}.three-dashboard{background:#050e18;-webkit-backdrop-filter:none;backdrop-filter:none;padding:20px 24px 24px}.three-dashboard.open{display:block}.training-dashboard{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px;width:100%;max-width:1680px;min-height:100%;margin:0 auto}.training-dashboard>.three-panel{width:100%;padding:22px}.dashboard-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.dashboard-heading h2{margin:0;font-size:22px;line-height:1.3;letter-spacing:-.04em}.dashboard-heading .training-drill-controls,.dashboard-heading .three-field{min-width:0}.dashboard-heading select{padding:10px 12px;border-radius:9px;font-size:12px;background:#0d2137}.performance-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}.performance-metric{--metric-color: #23c9e8;min-width:0;padding:14px 12px;border:1px solid #23435f;border-left:2px solid var(--metric-color);border-radius:12px;background:linear-gradient(120deg,#0e263f,#0a1d31)}.performance-metric.best{--metric-color: #edc351}.performance-metric.latest{--metric-color: #3a9fff}.performance-metric.accuracy{--metric-color: #22b5b7}.metric-label{display:flex;align-items:center;gap:7px;font-size:11px;color:#bacde3}.metric-label>span{display:grid;place-items:center;color:var(--metric-color);width:25px;height:25px;border-radius:6px;background:#18354a}.metric-label .ui-icon{width:16px;height:16px}.metric-value{display:flex;align-items:baseline;flex-wrap:wrap;justify-content:space-between;gap:4px;margin-top:6px;font-size:clamp(22px,1.8vw,29px);font-weight:700;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.metric-change{font-size:11px;letter-spacing:0;color:#a8bdd9}.metric-change.positive{color:#4adfc8}.metric-change.negative{color:#ff8094}.performance-metric small{display:block;color:#94b1cd;font-size:10px;margin-top:3px}.dashboard-section{border:1px solid #1e3d58;border-radius:12px;padding:17px;background:linear-gradient(130deg,#0a1e31,#061421)}.dashboard-section+.dashboard-section{margin-top:16px}.dashboard-section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.dashboard-section h3{margin:0;font-size:14px;line-height:1.4}.trend-section h3{text-transform:uppercase;letter-spacing:.12em;font-size:11px;color:#b6cce3}.dashboard-section-heading p{margin:4px 0 0;font-size:11px;color:#8daac5}.trend-best{display:inline-flex;align-items:center;flex-wrap:wrap;gap:6px;color:#afc3d9;font-size:10px}.trend-best strong{color:#e7efff}.trend-best i{width:20px;border-top:2px dashed #edc351}.performance-chart{display:block;width:100%;height:auto;max-height:220px;margin-top:8px;overflow:visible}.performance-chart text{fill:#98b4cf;font:12px Segoe UI,sans-serif}.performance-chart .chart-score{fill:#d5f6ff;font-weight:600}.chart-grid{stroke:#1b354a;stroke-width:1}.chart-best{stroke:#edc351;stroke-width:1.5;stroke-dasharray:7 6}.chart-line{stroke:#21cde5;stroke-width:2.5;fill:none;stroke-linejoin:round}.performance-chart circle{fill:#21cde5;stroke:#082132;stroke-width:1.5}.trend-empty{display:flex;align-items:center;justify-content:center;flex-direction:column;min-height:230px;color:#aac0d8;text-align:center}.trend-empty>span{display:grid;place-items:center;width:42px;height:42px;margin-bottom:12px;border:1px solid #25465e;border-radius:50%;color:#26cee0;font-size:24px}.trend-empty strong{font-size:14px;font-weight:600}.trend-empty p{font-size:12px;color:#8daac5;margin-top:6px}.dashboard-history>h3{margin-bottom:14px}.dashboard-history>.history-summary,.dashboard-history>.history-drill,.dashboard-history>.history-note{display:none}.history-columns,.dashboard-history .history-run summary{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(64px,.7fr) minmax(60px,.65fr) minmax(0,1.15fr);align-items:center;column-gap:12px;padding:11px 10px}.history-columns{background:#122d43;border-radius:6px;color:#afc6de;font-size:11px}.dashboard-history .history-run{border-top:0;border-bottom:1px solid #1b364c}.dashboard-history .history-run summary{font-size:12px;margin:0}.dashboard-history .history-run summary:before{display:none}.dashboard-history .history-run time{color:#bed0e4}.dashboard-history .history-run time:before{content:"+";display:inline-block;width:13px;color:#42cfde}.dashboard-history .history-run[open] time:before{content:"−"}.dashboard-history .history-run .history-score{text-align:left}.dashboard-history .history-accuracy{color:#bed0e4}.dashboard-history .history-result{font-size:11px;color:#96b1cd}.dashboard-history .history-run.is-best{background:#17243d;box-shadow:inset 2px 0 #afa0fa}.dashboard-history .is-best .history-result{color:#c5bafa}.dashboard-history .history-run summary:hover{background:#112b3f}.dashboard-history .history-run>.history-metrics,.dashboard-history .history-run>.history-note{margin:12px}.dashboard-history [data-action=more-history]{margin-top:14px;font-size:12px}.dashboard-drill .eyebrow{font-size:10px;margin-bottom:12px}.dashboard-drill h2{margin:0 0 12px;font-size:clamp(24px,2.3vw,36px);line-height:1.15;letter-spacing:-.045em}.drill-intro{color:#b0c4db;font-size:14px;margin:0;line-height:1.6}.drill-rules{margin-top:8px;font-size:12px;color:#bed0e4}.drill-rules summary{color:#80d8f4;cursor:pointer;width:fit-content}.drill-rules p{line-height:1.7}.drill-tags{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0}.drill-tags span{padding:5px 9px;border:1px solid #25435d;background:#0d2236;border-radius:6px;color:#a8cce0;font-size:11px}.drill-preview{position:relative;margin:0;overflow:hidden;border:1px solid #29465e;border-radius:12px;background:#0a1926}.drill-preview img{display:block;width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover}.drill-preview figcaption{display:flex;justify-content:space-between;padding:10px 12px;background:#0b2032;color:#b9cde1;font-size:11px}.drill-preview figcaption span{color:#8ca6be}.enter-range{margin-top:16px}.enter-range button.primary{width:100%;padding:16px;border-radius:10px;background:linear-gradient(110deg,#24d7df,#2b8dff);border:1px solid #32c8ea;font-size:17px}.enter-range button.primary:hover{filter:brightness(1.1)}.enter-range button:disabled{opacity:.5;cursor:wait}.enter-range button>span{font-size:13px;margin-right:10px}.range-controls{font-size:11px;line-height:1.9;color:#8eacc8;text-align:center;margin:12px 0 0}kbd{font:inherit;font-size:.9em;padding:2px 4px;border:1px solid #2a455d;border-radius:3px;color:#bed1e5;background:#11283d}.drill-settings{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 14px;padding-top:20px;margin-top:20px;border-top:1px solid #1c354a;color:#8eacc8;font-size:12px}@media(max-width:1200px){.topbar{grid-template-columns:180px minmax(0,1fr) auto;gap:12px;padding-inline:18px}.mode-tab{gap:7px;padding:11px;font-size:13px}.three-dashboard{padding:18px}.training-dashboard{gap:16px}.training-dashboard>.three-panel{padding:18px}.performance-metrics{gap:8px}.performance-metric{padding:12px 9px}.metric-label{font-size:10px;gap:5px}.metric-label>span{width:21px;height:21px}.dashboard-section{padding:14px}}@media(max-width:1000px){.topbar{grid-template-columns:minmax(0,1fr) auto;padding:12px 16px}.topbar .mode-list{grid-column:1 / -1;grid-row:2;justify-content:start}.brand-logo{max-width:190px}.training-dashboard{grid-template-columns:minmax(0,1fr);max-width:800px}.dashboard-drill{grid-row:1}.drill-preview{max-width:560px;margin-inline:auto}}@media(max-width:540px){.topbar{gap:10px;padding:10px 12px}.topbar .brand-logo{max-width:156px}.sensitivity-chip{gap:5px;padding:6px 8px}.sensitivity-chip>.ui-icon,.sensitivity-chip>span:last-child{display:none}.sensitivity-chip small{font-size:8px}.sensitivity-chip strong{font-size:10px}.mode-list{gap:4px}.mode-tab{flex:1;padding:9px 5px;font-size:12px;gap:6px}.mode-tab .ui-icon{width:15px;height:15px}.three-dashboard{padding:12px}.training-dashboard>.three-panel{padding:16px}.dashboard-heading{align-items:start;flex-direction:column;gap:12px}.dashboard-heading .training-drill-controls{width:100%}.dashboard-heading .three-field{flex:1}.performance-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.performance-metric{padding:12px}.metric-value{font-size:24px}.dashboard-section-heading{align-items:start;flex-direction:column}.history-columns,.dashboard-history .history-run summary{grid-template-columns:minmax(0,1.5fr) minmax(52px,.7fr) minmax(0,1fr);gap:8px;padding:10px 6px}.history-columns>:nth-child(3),.dashboard-history .history-accuracy{display:none}.dashboard-history .history-run summary{font-size:11px}.dashboard-history .history-run time:before{width:10px}.performance-chart text{font-size:26px}}@media(max-width:360px){.topbar .brand-logo{max-width:130px}.mode-tab .ui-icon{display:none}}
