@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap";:root{--paper:#fdfbf6;--bg:#e9eef6;--navy:#1b2a4a;--navy-soft:#5a6b8c;--line:#d8dce6;--amber:#e8a200;--amber-bg:#fff6e0;--ok:#1d8a5f;--warn:#e8a200;--danger:#c43d3d;--board:#202c4d;--board-line:#33426e;--board-ink:#f2f4fa;--board-muted:#aeb8d2;--ils-bezel:#16203a;--ils-face:#202c4d;--ils-face-line:#33426e;--ils-ink:#f2f4fa;--ils-ink-muted:#aeb8d2;--ils-course:#3a9de0;--ils-loc:#7967c8;--ils-gs:#3f9c72;--ils-aircraft:#f2f4fa;--ils-runway:#1b2a4a;--font-ui:"Zen Kaku Gothic New", system-ui, -apple-system, "Hiragino Sans", "Noto Sans JP", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--fs-title:26px;--fs-screen-title:22px;--fs-card-heading:17.5px;--fs-body:16.5px;--fs-note:15px;--fs-label:12.5px;--fs-readout:30px;--fs-readout-sm:21px;--space-tight:8px;--space:18px;--space-wide:28px;--radius-card:14px;--radius-button:12px;--radius-sm:10px;--shadow-card:0 10px 30px #1b2a4a24;--shadow-flat:0 2px 8px #1b2a4a14;--shell-max:480px;--tap-min:44px;--motion-fast:80ms;--motion-calm:.32s;--ease-instrument:cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background-color:var(--bg);color:var(--navy);font-family:var(--font-ui);font-size:var(--fs-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.9;overflow-x:hidden}:focus-visible{outline:3px solid var(--amber);outline-offset:2px;border-radius:4px}.shell{width:100%;max-width:var(--shell-max);padding:var(--space) var(--space) calc(var(--space-wide) + env(safe-area-inset-bottom));padding-left:calc(var(--space) + env(safe-area-inset-left));padding-right:calc(var(--space) + env(safe-area-inset-right));margin:0 auto}.stack{gap:var(--space);flex-direction:column;display:flex}.stack-tight{gap:var(--space-tight);flex-direction:column;display:flex}.app-title{font-size:var(--fs-title);margin:0;font-weight:700;line-height:1.35}.screen-title{font-size:var(--fs-screen-title);margin:0;font-weight:700;line-height:1.4}.card-heading{font-size:var(--fs-card-heading);margin:0;font-weight:700}.body-text{font-size:var(--fs-body);margin:0}.note-text{font-size:var(--fs-note);color:var(--navy-soft);margin:0;line-height:1.8}.mono-label{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.2em;color:var(--navy-soft);text-transform:uppercase;font-weight:600}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-card);padding:var(--space)}.card-raised{box-shadow:var(--shadow-card);border-color:#0000}.card-header{justify-content:space-between;align-items:baseline;gap:var(--space-tight);background:var(--navy);color:var(--paper);border-radius:var(--radius-card) var(--radius-card) 0 0;padding:10px var(--space);margin:0;display:flex}.card-header .mono-label{color:var(--board-muted)}.card-header-title{font-size:var(--fs-card-heading);font-weight:700}.card-body{background:var(--paper);border:1px solid var(--line);border-radius:0 0 var(--radius-card) var(--radius-card);padding:var(--space);border-top:none}.button-primary{width:100%;min-height:52px;padding:15px var(--space);background:var(--navy);color:var(--paper);border-radius:var(--radius-button);box-shadow:var(--shadow-flat);font-family:var(--font-ui);font-size:var(--fs-body);cursor:pointer;border:none;flex-direction:column;align-items:center;gap:2px;font-weight:700;line-height:1.4;display:flex}.button-primary .mono-label{color:var(--board-muted)}.button-secondary{width:100%;min-height:48px;padding:12px var(--space);background:var(--paper);color:var(--navy);border:1px solid var(--line);border-left:5px solid var(--line);border-radius:var(--radius-sm);font-family:var(--font-ui);font-size:var(--fs-body);cursor:pointer;text-align:left;flex-direction:column;align-items:flex-start;gap:2px;font-weight:700;line-height:1.4;display:flex}.button-secondary:hover{border-left-color:var(--amber)}.button-quiet{min-height:var(--tap-min);color:var(--navy-soft);font-family:var(--font-ui);font-size:var(--fs-note);cursor:pointer;text-underline-offset:4px;background:0 0;border:none;padding:10px 14px;font-weight:700;text-decoration:underline}.safety-strip{align-items:center;gap:var(--space-tight);background:var(--amber-bg);border-radius:var(--radius-sm);font-size:var(--fs-note);color:var(--navy);border:1px solid #f0d9a0;padding:10px 14px;line-height:1.7;display:flex}.safety-strip .mono-label{color:#9a7420;flex:none}.safety-strip--compact{padding:5px 12px;font-size:13.5px;line-height:1.5}.safety-strip--compact .mono-label{font-size:11px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.divider{background:var(--line);border:none;height:1px;margin:0}@media (height<=720px){:root{--space-tight:6px;--space:12px;--space-wide:18px}.shell{padding-top:10px}.screen-title{font-size:20px;line-height:1.3}.screen-header .mono-label{margin-top:4px}.safety-strip--compact{padding:3px 12px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.screen-header{flex-direction:column;gap:2px;display:flex}.screen-header__back{text-align:left;align-self:flex-start;padding-left:0;padding-right:14px}.screen-header .mono-label{margin-top:var(--space-tight)}.about-disclaimer{border-left:5px solid var(--amber)}.about-list{gap:var(--space-tight);flex-direction:column;margin:0;padding-left:1.2em;display:flex}.explanation{background:var(--paper);border:1px solid var(--line);border-left:5px solid var(--line);border-radius:var(--radius-card);padding:14px var(--space);flex-direction:column;gap:6px;display:flex}.explanation[data-kind=aha]{border-left-color:var(--amber);background:var(--amber-bg)}.explanation[data-kind=success]{border-left-color:var(--ok)}.explanation[data-kind=hint]{border-left-color:var(--navy-soft)}.ils-indicator{padding:var(--space-tight) 0;background:var(--ils-bezel);border-radius:var(--radius-card);justify-content:center;display:flex}.ils-indicator__face{width:100%;max-width:320px;height:auto;display:block}.ils-bezel{fill:var(--ils-bezel);stroke:var(--ils-face-line);stroke-width:1px}.ils-face{fill:var(--ils-face)}.ils-course-head{fill:var(--ils-course)}.ils-course-shaft{stroke:var(--ils-course);stroke-width:4px;stroke-linecap:round}.ils-dot{fill:none;stroke:var(--ils-ink-muted);stroke-width:1.5px}.ils-scale-line{stroke:var(--ils-face-line);stroke-width:1.5px;stroke-linecap:round}.ils-loc-bar{stroke:var(--ils-loc);stroke-width:6px;stroke-linecap:round}.ils-gs-bar{stroke:var(--ils-gs);stroke-width:6px;stroke-linecap:round}.ils-loc-bar,.ils-gs-bar{transition:transform var(--motion-calm) var(--ease-instrument)}.ils-indicator__face[data-motion=fast] .ils-loc-bar,.ils-indicator__face[data-motion=fast] .ils-gs-bar{transition-duration:var(--motion-fast)}.ils-aircraft line{stroke:var(--ils-aircraft);stroke-width:3px;stroke-linecap:round}.position-grid{grid-template-columns:auto 1fr 1fr 1fr;align-items:center;gap:4px;display:grid}.position-grid__row{grid-template-columns:subgrid;grid-column:1/-1;gap:4px;display:grid}.position-grid__head{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--navy-soft);text-align:center;font-weight:600;line-height:1.3}.position-grid__head--row{text-align:right;padding-right:4px}.position-grid__cell{background:var(--paper);min-height:56px;color:var(--navy);border:1px solid var(--line);border-radius:var(--radius-sm);font-family:var(--font-ui);font-size:var(--fs-note);cursor:pointer;justify-content:center;align-items:center;padding:4px;font-weight:700;display:flex}.position-grid__cell:hover:not(:disabled){border-color:var(--amber)}.position-grid__cell:disabled{cursor:default;opacity:1}.position-grid__cell[data-state=correct]{border-color:var(--ok);border-width:2px}.position-grid__cell[data-state=again]{border-color:var(--amber);border-width:2px}.position-grid__mark{font-size:26px;line-height:1}.position-grid__again{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.05em;color:#9a7420;font-weight:700}@media (height<=720px){.position-grid__cell{min-height:var(--tap-min)}.position-grid,.position-grid__row{gap:3px}.position-grid__head{line-height:1.2}}.side-view{flex-direction:column;gap:2px;margin:0;display:flex}.side-view--compact .mono-label{letter-spacing:.08em;font-size:11.5px}.side-view__canvas{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;height:auto;display:block}.sv-path{stroke:var(--ils-course);stroke-width:2px;stroke-dasharray:7 5}.sv-ground{stroke:var(--line);stroke-width:2px}.sv-runway{fill:var(--ils-runway)}.sv-deviation{stroke:var(--navy-soft);stroke-width:1.5px;stroke-dasharray:3 3}.sv-aircraft{transition:transform var(--motion-calm) var(--ease-instrument)}.sv-aircraft polygon{fill:var(--navy)}.top-view{flex-direction:column;gap:2px;margin:0;display:flex}.top-view--compact .mono-label{letter-spacing:.08em;font-size:11.5px}.top-view__canvas{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;height:auto;display:block}.tv-course{stroke:var(--ils-course);stroke-width:2px;stroke-dasharray:7 5}.tv-runway{fill:var(--ils-runway)}.tv-runway-center{stroke:var(--paper);stroke-width:1.5px;stroke-dasharray:4 4}.tv-crosstrack{stroke:var(--navy-soft);stroke-width:1.5px;stroke-dasharray:3 3}.tv-aircraft{transition:transform var(--motion-calm) var(--ease-instrument)}.tv-aircraft polygon{fill:var(--navy)}.challenge .ils-indicator{padding:4px 0}.challenge .ils-indicator__face{max-width:236px}.challenge__views{gap:var(--space-tight);grid-template-columns:1fr 1fr;align-items:end;display:grid}.challenge__prompt{font-size:var(--fs-card-heading);margin:0;font-weight:700;line-height:1.6}.challenge__hold{text-align:center}.challenge-result__header{flex-direction:column;gap:2px;display:flex}.challenge-review{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.challenge-review__row{align-items:baseline;gap:var(--space-tight);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 14px;display:flex}.challenge-review__position{flex:1;min-width:0;font-weight:700}.challenge-review__mark{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.05em;color:var(--navy-soft);flex:none;font-weight:700}.course-complete__lead{font-size:var(--fs-screen-title);margin:0;font-weight:700;line-height:1.6}.course-complete__learned{flex-direction:column;gap:4px;margin:0;padding-left:1.2em;display:flex}.course-complete__note{background:var(--amber-bg);border-color:#f0d9a0;flex-direction:column;gap:4px;display:flex}.course-complete__note .mono-label{color:#9a7420}.course-complete__progress,.course-complete__series{flex-direction:column;gap:4px;display:flex}.course-complete__chain{font-size:var(--fs-body);margin:0;line-height:1.8}.course-complete__next{font-family:var(--font-mono);letter-spacing:.05em}.home-header{flex-direction:column;gap:2px;display:flex}.home-lead{margin:var(--space-tight) 0 0;font-size:var(--fs-card-heading);color:var(--navy-soft);font-weight:700;line-height:1.6}.home-progress{flex-direction:column;gap:0;display:flex}.home-progress__value{align-items:baseline;gap:4px;margin:0;display:flex}.home-progress__count{font-family:var(--font-mono);font-size:var(--fs-readout);font-weight:700;line-height:1.2}.home-progress__total{font-size:var(--fs-note);color:var(--navy-soft)}.home-series{flex-direction:column;gap:2px;display:flex}.position-slider{background:var(--paper);border:1px solid var(--line);border-left:5px solid var(--ils-loc);border-radius:var(--radius-sm);padding:10px var(--space-tight) 12px}.position-slider[data-tone=vertical]{border-left-color:var(--ils-gs)}.position-slider__head{justify-content:space-between;align-items:baseline;gap:var(--space-tight);padding:0 6px;display:flex}.position-slider__value{font-size:var(--fs-card-heading);font-weight:700}.position-slider__row{align-items:center;gap:4px;display:flex}.position-slider__step{width:var(--tap-min);height:var(--tap-min);background:var(--bg);color:var(--navy);border:1px solid var(--line);border-radius:var(--radius-sm);font-family:var(--font-ui);cursor:pointer;flex:none;font-size:20px;font-weight:700;line-height:1}.position-slider__step:hover{border-color:var(--amber)}.position-slider__range{min-width:0;height:var(--tap-min);appearance:none;cursor:pointer;background:0 0;flex:1;margin:0}.position-slider__range::-webkit-slider-runnable-track{background:linear-gradient(to right, transparent calc(50% - var(--snap-band)), var(--navy-soft) calc(50% - var(--snap-band)), var(--navy-soft) calc(50% + var(--snap-band)), transparent calc(50% + var(--snap-band))), var(--line);border-radius:999px;height:10px}.position-slider__range::-moz-range-track{background:linear-gradient(to right, transparent calc(50% - var(--snap-band)), var(--navy-soft) calc(50% - var(--snap-band)), var(--navy-soft) calc(50% + var(--snap-band)), transparent calc(50% + var(--snap-band))), var(--line);border-radius:999px;height:10px}.position-slider__range::-webkit-slider-thumb{appearance:none;background:var(--ils-loc);border:3px solid var(--paper);width:30px;height:30px;box-shadow:var(--shadow-flat);border-radius:50%;margin-top:-10px}.position-slider__range::-moz-range-thumb{background:var(--ils-loc);border:3px solid var(--paper);width:24px;height:24px;box-shadow:var(--shadow-flat);border-radius:50%}.position-slider[data-tone=vertical] .position-slider__range::-webkit-slider-thumb{background:var(--ils-gs)}.position-slider[data-tone=vertical] .position-slider__range::-moz-range-thumb{background:var(--ils-gs)}.position-slider__scale{justify-content:space-between;gap:var(--space-tight);padding:2px calc(var(--tap-min) + 8px) 0;font-family:var(--font-mono);font-size:var(--fs-label);color:var(--navy-soft);font-weight:600;display:flex}.position-slider__scale span:nth-child(2){text-align:center}.marker-readout{flex-direction:column;gap:4px;margin:0;display:flex}.marker-readout__item{justify-content:space-between;align-items:baseline;gap:var(--space-tight);background:var(--board);border-radius:var(--radius-sm);padding:8px 14px;display:flex}.marker-readout__item .mono-label{color:var(--board-muted)}.marker-readout__item dd{color:var(--board-ink);font-size:var(--fs-readout-sm);margin:0;font-weight:700}.view-pair{gap:var(--space-tight);flex-direction:column;display:flex}.choice-list{gap:var(--space-tight);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.choice{width:100%;min-height:var(--tap-min);padding:10px var(--space);background:var(--paper);color:var(--navy);border:1px solid var(--line);border-left:5px solid var(--line);border-radius:var(--radius-sm);font-family:var(--font-ui);font-size:var(--fs-body);text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:2px;font-weight:700;line-height:1.5;display:flex}.choice:hover:not(:disabled){border-left-color:var(--amber)}.choice:disabled{cursor:default;opacity:1}.choice[data-state=correct]{border-left-color:var(--ok);background:var(--paper)}.choice[data-state=again]{border-left-color:var(--amber)}.choice__label{font-size:var(--fs-body)}.choice__mark{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.1em;font-weight:700}.choice[data-state=correct] .choice__mark{color:var(--navy)}.choice[data-state=again] .choice__mark{color:#9a7420}.lesson-complete__header{flex-direction:column;gap:2px;display:flex}.lesson-complete__learned{flex-direction:column;gap:4px;margin:0;padding-left:1.2em;display:flex}.lesson-complete__score{flex-direction:column;gap:4px;display:flex}.papi-view{flex-direction:column;gap:2px;margin:0;display:flex}.papi-view__canvas{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;height:auto;display:block}.pv-ground{fill:var(--bg)}.pv-horizon{stroke:var(--line);stroke-width:2px}.pv-runway{fill:var(--ils-runway)}.pv-runway-center{stroke:var(--paper);stroke-width:1.5px;stroke-dasharray:5 5}.pv-light{stroke:var(--navy);stroke-width:1.5px}.pv-light--white{fill:#fff}.pv-light--red{fill:var(--danger)}.papi-view__readout{font-family:var(--font-mono);font-size:var(--fs-readout-sm);color:var(--navy);text-align:center;margin:0;font-weight:700}@media (height<=720px){.papi-view{width:100%;max-width:240px;margin:0 auto}.papi-view .mono-label,.papi-view__readout{line-height:1.3}}.lesson-progress{margin:0}.lesson-compare{gap:var(--space-tight);flex-direction:column;display:flex}.lesson-compare__views{gap:var(--space-tight);align-items:end;display:grid}.lesson-compare__views[data-count="1"]{grid-template-columns:1fr}.lesson-compare__views[data-count="2"]{grid-template-columns:1fr 1fr}.lesson-compare .ils-indicator{padding:4px 0}.lesson-compare .ils-indicator__face{max-width:232px}.lesson-page--trainer .ils-indicator{padding:4px 0}.lesson-page--trainer .ils-indicator__face{max-width:236px}.lesson-quiz__prompt{font-size:var(--fs-card-heading);margin:0;font-weight:700;line-height:1.6}.lesson-hold{text-align:center}@media (height<=720px){.lesson-progress{line-height:1.4}.lesson-compare__views[data-count="1"]{max-width:240px;margin:0 auto}.lesson-compare__views .mono-label,.top-view .mono-label,.side-view .mono-label{line-height:1.3}.lesson-quiz__prompt{font-size:var(--fs-body);line-height:1.5}}.lesson-list{gap:var(--space-tight);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.lesson-row{background:var(--paper);border:1px solid var(--line);border-left:5px solid var(--line);border-radius:var(--radius-sm);width:100%;padding:12px var(--space);text-align:left;font-family:var(--font-ui);color:var(--navy);display:block}.lesson-row--open{border-left-color:var(--navy);cursor:pointer;min-height:var(--tap-min)}.lesson-row--open:hover{border-left-color:var(--amber)}.lesson-row--open[data-status=completed]{border-left-color:var(--ok)}.lesson-row__head{justify-content:space-between;align-items:baseline;gap:var(--space-tight);display:flex}.lesson-row__status{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.1em;color:var(--navy-soft);background:var(--bg);border-radius:999px;flex:none;padding:2px 10px;font-weight:600}.lesson-row--open[data-status=completed] .lesson-row__status{color:var(--ok)}.lesson-row__title{font-size:var(--fs-card-heading);margin:2px 0 0;font-weight:700;line-height:1.5;display:block}.lesson-row--open .note-text{display:block}.lesson-row__duration{font-family:var(--font-mono);margin-top:2px}.challenge-invite{border-left:5px solid var(--ils-gs)}
