:root{--paper:#fdfbf6;--bg:#e9eef6;--navy:#1b2a4a;--navy-soft:#354669;--line:#d8dce6;--amber:#e8a200;--amber-bg:#fff6e0;--ok:#146b4a;--ok-bg:#e7f4ee;--warn:#e8a200;--danger:#b02f2f;--danger-bg:#fceceb;--warn-ink:#7a5600;--answer-ink:#1a6698;--board:#202c4d;--board-line:#33426e;--board-ink:#f2f4fa;--board-muted:#c2cbe2;--scene-aircraft:#f2f4fa;--scene-target:#e6a23c;--scene-answer:#3a9de0;--scene-given:#ec6a5e;--scene-guide:#4a5b85;--fs-display:32px;--fs-title:24px;--fs-lead:21px;--fs-body:20px;--fs-note:18px;--fs-glyph:26px;--fs-digit:96px;--fs-code:34px;--fs-number:26px;--lh-body:1.75;--lh-note:1.7;--lh-tight:1.4;--radius:12px;--radius-lg:18px;--shadow:0 1px 2px #1b2a4a14, 0 8px 24px #1b2a4a0f;--tap-min:56px;--tap-answer:76px;--tap-gap:140px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--navy);font-family:Hiragino Kaku Gothic ProN,Hiragino Sans,Noto Sans JP,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:var(--fs-body);line-height:var(--lh-body);-webkit-text-size-adjust:100%}#root{flex-direction:column;min-height:100dvh;display:flex}button{font:inherit;color:inherit;cursor:pointer}h1,h2,h3{line-height:var(--lh-tight);margin:0}.app{width:100%;max-width:720px;padding:16px 16px calc(16px + env(safe-area-inset-bottom));flex-direction:column;flex:1;gap:16px;margin:0 auto;display:flex}.app--session{gap:12px;height:100dvh;max-height:100dvh;margin:0 auto;position:fixed;inset:0;overflow:hidden}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:16px}.muted{color:var(--navy-soft)}.small{font-size:var(--fs-note);line-height:var(--lh-note)}.button{border:1px solid var(--line);background:var(--paper);border-radius:var(--radius);min-height:48px;padding:12px 16px;font-weight:600;transition:background .12s}.button:hover{background:#fff}.button--primary{background:var(--navy);border-color:var(--navy);color:#fff}.button--primary:hover{background:#24365c}.button--ghost{color:var(--navy-soft);background:0 0;border-color:#0000;min-height:40px;padding:8px 10px}.stack{flex-direction:column;gap:12px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.br-wide{display:none}@media (width>=560px){.br-wide{display:inline}}.footnote{color:var(--navy-soft);font-size:var(--fs-note);line-height:var(--lh-note);text-align:center;padding:4px 0 8px}:focus-visible{outline:3px solid var(--answer-ink);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.top__head{text-align:center;padding-top:16px}.top__audience{letter-spacing:.08em;margin:0}.top__title{font-size:var(--fs-display);letter-spacing:.04em;text-wrap:balance;margin:2px 0 0}.top__pick{text-align:center;padding-top:4px}.top__section{font-size:var(--fs-title);letter-spacing:.04em;margin:0 0 4px}.top__lead{color:var(--navy-soft);font-size:var(--fs-note);line-height:var(--lh-note);margin:0}.top__card{text-align:left;border-left:4px solid var(--navy);min-height:var(--tap-min);flex-direction:column;align-items:flex-start;gap:4px;display:flex}.top__card:hover{background:#fff}.top__index{letter-spacing:.08em}.top__name{font-size:var(--fs-title);letter-spacing:.03em}.top__aim{font-size:var(--fs-body);line-height:var(--lh-body);color:var(--navy-soft)}.top__parts{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft);font-weight:700}.top__example{margin-top:4px}.series__head{text-align:center;padding-top:16px}.series__title{font-size:var(--fs-title);letter-spacing:.04em;margin:2px 0 8px}.series__lead{color:var(--navy-soft);font-size:var(--fs-note);line-height:var(--lh-note);margin:0}.series__card{text-align:left;border-left:4px solid var(--navy);flex-direction:column;align-items:flex-start;gap:4px;display:flex}.series__card:hover{background:#fff}.series__index{letter-spacing:.08em}.series__name{font-size:var(--fs-title);letter-spacing:.03em}.series__desc{font-size:var(--fs-body);line-height:var(--lh-body);color:var(--navy-soft)}.series__example{margin-top:4px}.series__nav{justify-content:center;margin-top:auto;display:flex}.home__head{text-align:center;padding-top:12px}.home__series{letter-spacing:.08em;margin:0}.home__title{font-size:var(--fs-display);letter-spacing:.04em;margin:2px 0 8px}.home__lead{color:var(--navy-soft);font-size:var(--fs-note);line-height:var(--lh-note);margin:0}.home__firstRun{text-align:left;border-left:4px solid var(--amber);flex-direction:column;gap:2px;display:flex}.home__sectionTitle{font-size:var(--fs-body);color:var(--navy-soft);letter-spacing:.04em;margin:0}.home__levels{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.home__level{border:1px solid var(--line);border-radius:var(--radius);background:#fff;min-height:48px;font-weight:700}.home__level--on{background:var(--navy);border-color:var(--navy);color:#fff}.home__levelNote{margin:0}.home__start{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;min-height:60px;display:flex}.home__startSub{font-size:var(--fs-note);line-height:var(--lh-note);font-weight:400}.home__focus{padding:8px}.home__focusItem{text-align:left;border-radius:var(--radius);background:0 0;border:none;flex-direction:column;gap:2px;min-height:56px;padding:10px 12px;display:flex}.home__focusItem:hover{background:#f3f6fb}.home__focusLabel{align-items:center;gap:8px;font-weight:700;display:flex}.home__focusTag{font-style:normal;font-size:var(--fs-note);color:var(--warn-ink);background:var(--amber-bg);border-radius:999px;padding:2px 8px;font-weight:700}.home__last{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.home__lastRow{flex-wrap:wrap;align-items:baseline;gap:16px;display:flex}.home__links{flex-wrap:wrap;justify-content:center;gap:4px;margin-top:auto;display:flex}.pad{flex-direction:column;align-items:center;gap:8px;display:flex}.pad__frame{font-size:var(--fs-body);color:var(--navy-soft);letter-spacing:.02em;margin:0;font-weight:700}.pad__grid{grid-template-columns:repeat(3, minmax(var(--tap-min), 96px));grid-template-rows:repeat(3, minmax(var(--tap-min), 62px));gap:10px;display:grid}.pad__key{min-width:var(--tap-min);min-height:var(--tap-min);border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);box-shadow:var(--shadow);flex-direction:column;justify-content:center;align-items:center;gap:2px;transition:transform 80ms,background .12s;display:flex}.pad__key:active:not(:disabled){transform:scale(.96)}.pad__key:disabled{opacity:.75;cursor:default}.pad__arrow{font-size:var(--fs-glyph);font-weight:700;line-height:1}.pad__name{font-size:var(--fs-body);color:var(--navy-soft);line-height:1.2}.pad__key--correct{background:var(--ok-bg);border-color:var(--ok);color:var(--ok);opacity:1}.pad__key--correct .pad__name{color:var(--ok)}.pad__key--given{background:var(--danger-bg);border-color:var(--danger);color:var(--danger);opacity:1}.pad__key--given .pad__name{color:var(--danger)}.pad__center{font-size:var(--fs-note);color:var(--navy-soft);border:1px dashed var(--line);border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex}.pad__blank{visibility:hidden}@media (height<=720px){.pad__grid{grid-template-rows:repeat(3, minmax(var(--tap-min), 68px))}}@media (height<=680px){.pad{gap:4px}.pad__grid{grid-template-rows:repeat(3, var(--tap-min));gap:8px}}.scene{border-radius:50%;max-width:100%;height:auto;margin:0 auto;display:block}.scene__targetLabel{fill:var(--scene-target);stroke:var(--board);stroke-width:3.5px;paint-order:stroke;stroke-linejoin:round;font-size:16px;font-weight:700}.scene__target--other{opacity:.8}.scene__hiddenText{fill:var(--board-muted);font-size:15px}.scene__noise{opacity:.5}.turn{flex-wrap:wrap;justify-content:center;gap:8px;margin:0;padding:0;list-style:none;display:flex}.turn__item{background:var(--amber-bg);font-weight:700;font-size:var(--fs-body);border:1px solid #f0dcae;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;display:flex}.turn__glyph{flex:none}.tutorial{align-items:stretch}.tutorial__head{justify-content:space-between;align-items:center;display:flex}.tutorial__title{font-size:var(--fs-title)}.tutorial__text{text-align:center;font-size:var(--fs-body);line-height:var(--lh-body);margin:0}.tutorial__question{text-align:center;font-weight:700;font-size:var(--fs-lead);margin:0}.tutorial__scene{justify-content:center;display:flex}.tutorial__scene .scene{width:min(80vw,40vh,300px);height:auto}.tutorial__actions{justify-content:center;display:flex}.tutorial__result{flex-direction:column;align-items:center;gap:8px;display:flex}.tutorial__resultText{text-align:center;margin:0;font-weight:700}.tutorial__purpose{text-align:center;font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft);margin:0}.trace{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.trace__row{background:#f3f6fb;border-radius:8px;grid-template-columns:1fr auto 3.5em;align-items:center;gap:8px;padding:5px 10px;display:grid}.trace__label{font-size:var(--fs-body);color:var(--navy-soft)}.trace__arrow{font-size:var(--fs-glyph);font-weight:700;line-height:1}.trace__name{font-size:var(--fs-body);text-align:right;font-weight:700}.session__head{grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.session__mode{text-align:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.session__progress{font-variant-numeric:tabular-nums;font-weight:700}.session__bar{background:var(--line);border-radius:999px;height:4px;margin-top:-8px;overflow:hidden}.session__barFill{background:var(--navy);height:100%;transition:width .2s}.session__prompt{text-align:center;flex-direction:column;gap:8px;display:flex}.session__situation{color:var(--navy-soft);font-size:var(--fs-body);line-height:var(--lh-note);margin:0}.session__question{font-size:var(--fs-lead);line-height:var(--lh-tight);margin:0}.session__scene{flex:1;justify-content:center;align-items:center;min-height:0;padding-bottom:32px;display:flex;position:relative}.session__scene .scene{width:auto;max-width:100%;height:100%;max-height:300px}.session__correct{line-height:var(--lh-tight);justify-content:center;align-items:baseline;gap:8px;display:flex;position:absolute;inset:auto 0 0}.session__correctMark{color:var(--ok);font-weight:700;font-size:var(--fs-lead)}.review{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;flex:1;gap:12px;min-height:0;padding:16px;display:flex;overflow-y:auto}.review>*{flex-shrink:0}.review__title{font-size:var(--fs-lead);margin:0}.review__answers{grid-template-columns:1fr 1fr;gap:8px;display:grid}.review__answer{border-radius:var(--radius);border:1px solid var(--line);flex-direction:column;gap:2px;padding:8px 12px;display:flex}.review__answer strong{font-size:var(--fs-lead)}.review__answer--correct{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}.review__answer--given{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}.review__hint{background:var(--amber-bg);border-radius:var(--radius);font-size:var(--fs-body);line-height:var(--lh-body);margin:0;padding:10px 12px}.review__id{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.review__next{margin-top:4px}@media (height<=680px){.app--session{padding:10px 12px calc(10px + env(safe-area-inset-bottom));gap:10px}.session__prompt{gap:4px}.review{gap:10px;padding:12px}}.session__ready{background:var(--amber-bg);border:1px solid var(--amber);border-radius:var(--radius-lg);text-align:center;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.session__readyText{font-size:var(--fs-body);line-height:var(--lh-note);margin:0}.session__ready .button{align-self:center;min-width:10em}.result__head{text-align:center;padding-top:8px}.result__title{font-size:var(--fs-title);margin:2px 0 0}.result__sectionTitle{font-size:var(--fs-body);color:var(--navy-soft);letter-spacing:.04em;margin:0}.result__best{text-align:center;color:var(--ok);background:var(--ok-bg);border-color:var(--ok);margin:0;font-weight:700}.result__scores{grid-template-columns:1fr 1fr;gap:12px;display:grid}.result__score{flex-direction:column;gap:2px;display:flex}.result__big{font-size:var(--fs-number);font-variant-numeric:tabular-nums;line-height:1.2}.result__sub{font-size:var(--fs-note);color:var(--navy-soft);font-weight:700}.result__compare{justify-content:space-between;align-items:baseline;gap:12px;margin:0;display:flex}.result__delta{font-style:normal;font-size:var(--fs-note);color:var(--navy-soft);margin-left:8px}.result__lead{font-size:var(--fs-body);line-height:var(--lh-body);margin:0}.result__trendRow{flex-direction:column;gap:2px;margin:0;display:flex}.result__trendLabel{font-weight:700}.result__trendNums{font-variant-numeric:tabular-nums}.result__errorRow{justify-content:space-between;margin:0;display:flex}.result__note{margin:0}.result__review{border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px}.result__review summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:40px;display:flex}.result__reviewQ{font-size:var(--fs-body);line-height:var(--lh-body)}.result__reviewA{font-size:var(--fs-lead);white-space:nowrap}.result__reviewBody{flex-direction:column;gap:8px;padding-top:8px;display:flex}.result__reviewId{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.history__head{align-items:center;gap:8px;display:flex}.history__title{font-size:var(--fs-title)}.history__sectionTitle{font-size:var(--fs-body);color:var(--navy-soft);letter-spacing:.04em;margin:0}.history__streak{text-align:center;margin:0}.history__chart{width:100%;height:auto}.history__trendText{word-break:keep-all;margin:0}.history__weak{justify-content:space-between;margin:0;display:flex}.history__list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.history__row{background:#f3f6fb;border-radius:8px;grid-template-columns:3em 1fr auto auto;align-items:baseline;gap:8px;padding:6px 8px;display:grid}.history__best{font-weight:700;font-size:var(--fs-lead);align-items:baseline;gap:12px;margin:0;display:flex}.about__head{align-items:center;gap:8px;display:flex}.about__title{font-size:var(--fs-title)}.about__sectionTitle{font-size:var(--fs-body);color:var(--navy-soft);letter-spacing:.04em;margin:0}.about__text{font-size:var(--fs-body);line-height:var(--lh-body);margin:0}.about__list{font-size:var(--fs-body);line-height:var(--lh-body);flex-direction:column;gap:4px;margin:0;padding-left:1.2em;display:flex}.about__text code{background:#f3f6fb;border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.about__policyLink{color:inherit;text-underline-offset:3px;white-space:nowrap;text-decoration:underline}.dev__head{align-items:center;gap:8px;display:flex}.dev__title{font-size:var(--fs-title)}.dev__label{font-size:var(--fs-note);color:var(--navy-soft)}.dev__input{border:1px solid var(--line);border-radius:var(--radius);min-width:12em;min-height:48px;font:inherit;background:#fff;flex:1;padding:8px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.dev__error{color:var(--danger);margin:0}.dev__situation,.dev__question,.dev__answer{text-align:center;margin:0}.dev__question{font-weight:700}.dev__answer{color:var(--answer-ink);font-weight:700}.dev__meta{flex-direction:column;gap:2px;margin:0;display:flex}.dev__meta div{justify-content:space-between;display:flex}.dev__meta dt,.dev__meta dd{color:var(--navy-soft);margin:0}.oview{flex-direction:column;align-items:center;gap:4px;width:100%;max-width:420px;min-height:0;margin:0 auto;display:flex}.oview__figure{width:100%;max-width:100%;height:auto;min-height:0;display:block}.oview__axis{fill:var(--board-muted);font-weight:600}.oview__label{fill:var(--board-ink);font-weight:600}.oview__caption{font-size:var(--fs-note);line-height:var(--lh-tight);text-align:center;color:var(--navy-soft);margin:0}.oview__caption--title{color:var(--navy);font-weight:700}.oview__caption--given{color:var(--danger)}.pscene{width:100%;max-width:460px;height:auto;margin:0 auto;display:block}.pscene__label{fill:var(--board-ink);font-weight:600}.pscene__label--observer{fill:var(--navy);font-weight:700}.pscene__mark{fill:var(--board-ink);font-weight:700}.pscene__markSmall{fill:var(--board);font-weight:700}.pscene__item--asked .pscene__mark{fill:#fff}.ptutorial{gap:12px}.ptutorial__head{justify-content:space-between;align-items:center;gap:8px;display:flex}.ptutorial__title{font-size:var(--fs-title)}.ptutorial__text{font-size:var(--fs-body);line-height:var(--lh-body);margin:0}.ptutorial__question{font-size:var(--fs-lead);margin:0;font-weight:700}.ptutorial__observer{align-self:flex-start}.ptutorial__scene{justify-content:center;display:flex}.ptutorial__compare{background:var(--amber-bg);border-radius:var(--radius);font-size:var(--fs-body);line-height:var(--lh-body);flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin:0;padding:10px 14px;display:flex}.ptutorial__actions{justify-content:center;display:flex}.ptutorial__result{flex-direction:column;gap:10px;display:flex}.ptutorial__resultText{margin:0;font-weight:700}.lesson{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;flex:1;gap:10px;min-height:0;padding:16px;display:flex}.lesson__body{scrollbar-gutter:stable;flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow-y:auto}.lesson__foot{border-top:1px solid var(--line);flex-direction:column;flex:none;padding-top:10px;display:flex}.lesson__head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.lesson__head>.button{white-space:nowrap;flex:none}.lesson__badge{background:var(--amber-bg);color:var(--warn-ink);font-size:var(--fs-note);border-radius:999px;margin:0;padding:3px 10px;font-weight:700;display:inline-block}.lesson__title{font-size:var(--fs-lead);margin:4px 0 0}.lesson__steps{gap:6px;margin:0;padding:0;list-style:none;display:flex}.lesson__step{font-size:var(--fs-note);color:var(--navy-soft);background:#f1f4fa;border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-weight:600;display:flex}.lesson__step--on{background:var(--navy);color:#fff}.lesson__stepNo{font-variant-numeric:tabular-nums}.lesson__text{font-size:var(--fs-body);line-height:var(--lh-body);margin:0}.lesson__question{font-size:var(--fs-lead);margin:0;font-weight:700}.lesson__observer{align-self:flex-start}.lesson__scene{justify-content:center;display:flex}.lesson__callout{background:var(--amber-bg);border:1px solid var(--amber);border-radius:var(--radius);font-size:var(--fs-note);text-align:center;align-self:center;margin:0;padding:6px 14px;font-weight:700}.lesson__result{font-weight:700;font-size:var(--fs-body);margin:0}.lesson__result--ok{color:var(--ok)}.lesson__figures{flex-direction:column;align-items:center;gap:12px;display:flex}.lesson__figure{text-align:center;flex-direction:column;gap:4px;width:100%;max-width:360px;margin:0;display:flex}.lesson__next{width:100%}@media (height<=680px){.lesson{gap:8px;padding:12px}.lesson__body{gap:8px}.lesson__foot{padding-top:8px}}.pobserver{background:var(--navy);color:#fff;font-size:var(--fs-body);border-radius:999px;align-self:center;margin:0;padding:4px 14px;font-weight:700}.session__scene .pscene{width:auto;max-width:100%;height:100%;max-height:440px}.session__scene .oview{max-height:100%}.session__scene .oview__figure{width:auto;max-width:100%;max-height:400px}.preview__figures{flex-direction:column;align-items:center;gap:12px;display:flex}.preview__figure{text-align:center;flex-direction:column;gap:4px;width:100%;max-width:360px;margin:0;display:flex}.preview__figure .oview{max-width:360px}.preview__legend{color:var(--navy-soft);flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 8px;margin:0;display:flex}.preview__key{font-weight:700}.preview__key--answer{color:var(--answer-ink)}.preview__key--given{color:var(--danger)}@media (height<=680px){.session__scene .pscene{max-height:320px}.session__scene .oview__figure{max-height:300px}}.cfield{flex-direction:column;gap:8px;width:min(100%,max(300px,62dvh));margin:0 auto;display:flex;position:relative}.cfield__svg{aspect-ratio:1;border-radius:var(--radius-lg);touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;display:block}.cfield__board{fill:var(--board)}.cfield__grid{stroke:var(--board-line);stroke-width:2px}.cfield__target-group,.cfield__marker-group{pointer-events:none}.cfield__halo{fill:none;stroke:var(--scene-target);stroke-opacity:.7;stroke-width:5px}.cfield__near{fill:none;stroke:var(--scene-target);stroke-opacity:.65;stroke-width:4px;stroke-dasharray:14 14}.cfield__target{fill:var(--scene-target)}.cfield__marker-ring{fill:none;stroke:var(--scene-aircraft);stroke-width:12px}.cfield__marker-dot{fill:var(--scene-aircraft)}.cfield__stick{opacity:0}.cfield__stick-ring{fill:none;stroke:var(--scene-answer);stroke-width:3px;stroke-dasharray:10 12}.cfield__stick-line{stroke:var(--scene-answer);stroke-width:8px;stroke-linecap:round}.cfield__stick-dot{fill:var(--scene-answer)}.cfield__ready{color:var(--navy-soft);font-size:var(--fs-note);line-height:var(--lh-note);text-align:center;margin:0}.cfield__ready--done{visibility:hidden}.cfield__progress{background:var(--line);border-radius:4px;height:8px;overflow:hidden}.cfield__progress-bar{background:var(--navy);width:0;height:100%}.cfield__code{visibility:hidden;pointer-events:none}.cfield__code-plate{fill:var(--paper);stroke:var(--navy);stroke-width:3px}.cfield__code-text{fill:var(--navy);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700}.lab__head{align-items:center;gap:8px;display:flex}.lab__title{font-size:var(--fs-title)}.lab__caution{text-align:center;margin:0}.lab__modes{grid-template-columns:1fr 1fr;gap:8px;display:grid}.lab__levels{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.lab__mode{min-height:var(--tap-min);border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);font-size:var(--fs-note);line-height:var(--lh-note);padding:10px 8px;font-weight:600}.lab__mode--on{background:var(--navy);border-color:var(--navy);color:#fff}.lab__section{font-size:var(--fs-lead);margin:0}.lab__lead{font-size:var(--fs-lead);line-height:var(--lh-body);margin:0}.lab__hint,.lab__note,.lab__running{margin:0}.lab__running{text-align:center}.lab__id{color:var(--navy-soft);white-space:nowrap;margin-left:8px}.lab__legend{color:var(--navy-soft);flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.lab__legend li{align-items:center;gap:10px;display:flex}.lab__chip{background:var(--board);border-radius:8px;flex:none;width:32px;height:32px;position:relative}.lab__chip:after{content:"";border-radius:50%;position:absolute;inset:6px}.lab__chip--target:after{background:var(--scene-target)}.lab__chip--marker:after{border:3px solid var(--scene-aircraft);inset:4px}.lab__chip--near:after{border:2px dashed var(--scene-target);opacity:.65;inset:6px}.lab__chip--halo:after{border:2px solid var(--scene-target);opacity:.7;inset:2px}.lab__start{min-height:var(--tap-min)}.lab__scores{grid-template-columns:1fr 1fr;gap:12px;display:grid}.lab__score{text-align:center;flex-direction:column;align-items:center;gap:2px;display:flex}.lab__number{font-size:var(--fs-number);line-height:var(--lh-tight)}.lab__log summary{cursor:pointer;min-height:44px;color:var(--navy-soft);align-items:center;display:flex}.lab__meta{flex-direction:column;gap:2px;margin:0;display:flex}.lab__meta div{justify-content:space-between;gap:12px;display:flex}.lab__meta dt,.lab__meta dd{color:var(--navy-soft);margin:0}.lab__actions{flex-direction:column;gap:8px;display:flex}.lab__actions .button{min-height:var(--tap-min)}.lab__warn{font-size:var(--fs-lead);line-height:var(--lh-body);color:var(--warn-ink);margin:0}.lab__sub{font-size:var(--fs-body);color:var(--navy-soft);margin:0}.lab__choices{flex-direction:column;gap:8px;display:flex}.lab__choice{min-height:var(--tap-min);border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--navy);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-lead);line-height:var(--lh-body);letter-spacing:.12em;padding:12px;font-weight:700}.lab__code-line{font-size:var(--fs-body);line-height:var(--lh-body);flex-wrap:wrap;align-items:baseline;gap:8px;margin:0;display:flex}.lab__code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-number);letter-spacing:.12em;color:var(--navy);font-weight:700}.lab__verdict--ok{color:var(--ok);font-weight:600}.lab__verdict--miss{color:var(--navy-soft)}.lab__chip--code:after{background:var(--paper);border:1px solid var(--navy);border-radius:3px;inset:8px 4px}.lab__held{border-top:1px solid var(--line);padding-top:12px}.lab__unsure{width:100%;min-height:var(--tap-min);border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--navy-soft);font-size:var(--fs-body);line-height:var(--lh-body);padding:12px}.lab__verdict--held{color:var(--navy-soft);font-weight:600}.lab__badge{border:1px solid var(--navy);color:var(--navy);border-radius:999px;align-self:center;margin:0;padding:4px 14px;font-weight:600}.lab__steps{flex-direction:column;gap:6px;margin:0;padding-left:1.4em;display:flex}.mt{gap:12px}.mt__head{align-items:center;gap:8px;display:flex}.mt__title{font-size:var(--fs-title)}.mt__section{font-size:var(--fs-lead)}.mt__sub{font-size:var(--fs-body)}.mt__lead{font-size:var(--fs-lead);line-height:var(--lh-body);margin:0}.mt__note,.mt__hint{margin:0}.mt__id{margin-left:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.mt__levels{gap:8px;display:flex}.mt__level{border:1px solid var(--line);background:var(--paper);border-radius:var(--radius);min-height:var(--tap-min);flex:1;padding:10px 8px;font-weight:600}.mt__level--on{background:var(--navy);border-color:var(--navy);color:#fff}.mt__actions{flex-wrap:wrap;gap:8px;display:flex}.mt__start{min-height:var(--tap-answer)}.mt__stageview{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex}.mt__slot{align-items:flex-start;min-height:132px;display:flex}.mt__notice{border:2px solid var(--line);border-radius:var(--radius-lg);background:var(--paper);justify-content:space-between;align-items:center;gap:12px;width:100%;padding:10px 12px;display:flex}.mt__notice--check{background:var(--amber-bg);border-color:var(--warn)}.mt__notice--priority{background:var(--danger-bg);border-color:var(--danger)}.mt__notice--late{background:var(--paper);border-color:var(--line)}.mt__notice--done{background:var(--ok-bg);border-color:var(--ok)}.mt__notice-text{flex-direction:column;gap:2px;min-width:0;display:flex}.mt__notice-name{font-size:var(--fs-lead);font-weight:700}.mt__notice-name--check{color:var(--warn-ink)}.mt__notice-name--priority{color:var(--danger)}.mt__notice-name--done{color:var(--ok)}.mt__notice-hint{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft)}.mt__notice-button{min-height:var(--tap-min);border-radius:var(--radius);border:1px solid var(--navy);background:var(--navy);color:#fff;min-width:128px;font-size:var(--fs-body);flex:none;padding:10px 14px;font-weight:700}.mt__stage{min-height:var(--tap-gap);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;display:flex}.mt__digit{font-size:var(--fs-digit);color:var(--navy);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.1}.mt__answered{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft)}.mt__pad{gap:12px;display:flex}.mt__answer{min-height:var(--tap-answer);border-radius:var(--radius);border:1px solid var(--line);background:var(--paper);font-size:var(--fs-body);flex:1;font-weight:700}.mt__answer:disabled{color:var(--navy-soft);cursor:default}.mt__lesson{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;gap:6px;padding:12px;display:flex}.mt__lesson-line{font-size:var(--fs-lead);line-height:var(--lh-body);margin:0}.mt__nudge{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--warn-ink);margin:0}.mt__stats{flex-wrap:wrap;gap:12px;display:flex}.mt__stat{flex-direction:column;flex:120px;gap:2px;display:flex}.mt__number{font-size:var(--fs-number);line-height:var(--lh-tight)}.mt__log summary{cursor:pointer}.mt__meta{flex-direction:column;gap:4px;margin:8px 0 0;display:flex}.mt__meta div{gap:8px;display:flex}.mt__meta dt{color:var(--navy-soft);flex:0 0 40%}.mt__meta dd{margin:0}.mt__legend{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.mt__legend li{align-items:center;gap:8px;display:flex}.mt__chip{border:2px solid var(--line);border-radius:6px;flex:none;width:22px;height:22px}.mt__chip--check{background:var(--amber-bg);border-color:var(--warn)}.mt__chip--priority{background:var(--danger-bg);border-color:var(--danger)}.mt__compare{flex-direction:column;gap:10px;margin:0;display:flex}.mt__compare-row{flex-wrap:wrap;gap:2px 16px;display:flex}.mt__compare-name{color:var(--navy-soft);flex:100%}.mt__compare-cell{gap:6px;margin:0 0 0 16px;display:flex}.mt__compare-side{color:var(--navy-soft)}.mem{gap:12px}.mem__head{align-items:center;gap:8px;display:flex}.mem__head>.button--ghost{white-space:nowrap;flex:none}.mem__title{font-size:var(--fs-title)}.mem__section{font-size:var(--fs-lead)}.mem__sub{font-size:var(--fs-body)}.mem__lead{font-size:var(--fs-lead);line-height:var(--lh-body);margin:0}.mem__note,.mem__hint{margin:0}.mem__id{margin-left:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.mem__levels{gap:8px;display:flex}.mem__level{border:1px solid var(--line);background:var(--paper);border-radius:var(--radius);min-height:var(--tap-min);flex:1;padding:10px 8px;font-weight:600}.mem__level--on{background:var(--navy);border-color:var(--navy);color:#fff}.mem__actions{flex-wrap:wrap;gap:8px;display:flex}.mem__start{min-height:var(--tap-answer)}.mem .button--primary:disabled{background:var(--paper);border-color:var(--line);color:var(--navy-soft);cursor:default}.mem__stageview{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex}.mem__slot{flex-direction:column;justify-content:flex-start;gap:4px;min-height:92px;display:flex}.mem__slot-lead{font-size:var(--fs-lead);line-height:var(--lh-body);margin:0;font-weight:700}.mem__slot-hint{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft);margin:0}.mem__stage{min-height:var(--tap-gap);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.mem__codes{flex-direction:column;gap:8px;width:100%;max-width:320px;margin:0;padding:0;list-style:none;display:flex}.mem__code-row{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:12px;padding:6px 14px;display:flex}.mem__code-no{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft);flex:none;min-width:4.5em}.mem__code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-code);line-height:var(--lh-tight);letter-spacing:.08em;color:var(--navy);font-weight:700}.mem__symbol{font-size:var(--fs-digit);color:var(--navy);min-height:1.2em;line-height:1.1}.mem__ack{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--ok);min-height:var(--lh-note)}.mem__pad{display:flex}.mem__find{min-height:var(--tap-answer);border-radius:var(--radius);border:1px solid var(--navy);background:var(--navy);color:#fff;font-size:var(--fs-body);flex:1;font-weight:700}.mem__find:disabled{background:var(--paper);border-color:var(--line);color:var(--navy-soft);cursor:default}.mem__recall{flex-direction:column;gap:10px;display:flex}.mem__seats{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.mem__seat{align-items:center;gap:12px;display:flex}.mem__seat-no{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft);flex:none;min-width:4.5em}.mem__placed{min-height:var(--tap-min);border-radius:var(--radius);border:2px solid var(--ok);background:var(--ok-bg);flex:1;justify-content:space-between;align-items:center;gap:8px;padding:6px 12px;display:flex}.mem__placed-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-code);letter-spacing:.08em;color:var(--navy);font-weight:700;line-height:1.1}.mem__placed-undo{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft)}.mem__empty{min-height:var(--tap-min);border-radius:var(--radius);border:2px dashed var(--line);background:var(--paper);color:var(--navy-soft);font-size:var(--fs-note);line-height:var(--lh-note);flex:1;align-items:center;padding:6px 12px;display:flex}.mem__choices{flex-wrap:wrap;gap:12px;display:flex}.mem__choice{max-width:calc(50% - 6px);min-height:var(--tap-answer);border-radius:var(--radius);border:1px solid var(--line);background:var(--paper);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-code);letter-spacing:.08em;color:var(--navy);flex:30%;font-weight:700}.mem__choice:disabled{color:var(--navy-soft);background:var(--bg);cursor:default}.mem__nudge{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--warn-ink);margin:0}.mem__lesson{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;gap:6px;padding:12px;display:flex}.mem__lesson-line{font-size:var(--fs-lead);line-height:var(--lh-body);margin:0}.mem__stats{flex-wrap:wrap;gap:12px;display:flex}.mem__stat{flex-direction:column;flex:120px;gap:2px;display:flex}.mem__number{font-size:var(--fs-number);line-height:var(--lh-tight)}.mem__answer{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-body);line-height:var(--lh-body);margin:0}.mem__log summary{cursor:pointer}.mem__meta{flex-direction:column;gap:4px;margin:8px 0 0;display:flex}.mem__meta div{gap:8px;display:flex}.mem__meta dt{color:var(--navy-soft);flex:0 0 40%}.mem__meta dd{margin:0}.mem__legend{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.mem__legend li{align-items:center;gap:10px;display:flex}.mem__glyph{font-size:var(--fs-glyph);color:var(--navy);text-align:center;flex:none;min-width:1.4em;line-height:1}@media (width<=359px){.app.mem{padding-left:10px;padding-right:10px}.mem .card{padding:10px}.mem__seat{gap:8px}.mem__seat-no,.mem__code-no{min-width:3.6em}}.rct{gap:12px}.rct__head{align-items:center;gap:8px;display:flex}.rct__title{font-size:var(--fs-title)}.rct__section{font-size:var(--fs-lead)}.rct__sub{font-size:var(--fs-body)}.rct__lead{font-size:var(--fs-lead);line-height:var(--lh-body);margin:0}.rct__note,.rct__hint{margin:0}.rct__id{margin-left:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.rct__levels{gap:8px;display:flex}.rct__level{border:1px solid var(--line);background:var(--paper);border-radius:var(--radius);min-height:var(--tap-min);flex:1;padding:10px 8px;font-weight:600}.rct__level--on{background:var(--navy);border-color:var(--navy);color:#fff}.rct__actions{flex-wrap:wrap;gap:8px;display:flex}.rct__start{min-height:var(--tap-answer)}.rct__legend{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.rct__legend li{align-items:center;gap:10px;display:flex}.rct__legend-key{text-align:center;border:1px solid var(--line);background:var(--paper);border-radius:8px;flex:none;min-width:36px;padding:2px 6px;font-weight:700}.rct__legend-glyph{font-size:var(--fs-glyph);line-height:1}.rct__pairs{flex-wrap:wrap;align-items:center;gap:6px 14px;margin:0;display:flex}.rct__pairs--off{visibility:hidden}.rct__pairs-label{color:var(--navy-soft)}.rct__pair{white-space:nowrap}.rct__runhead{justify-content:space-between;align-items:center;gap:8px;display:flex}.rct__runhead>p{margin:0}.rct__runhead>.button{white-space:nowrap;flex:none}.rct__stageview{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex}.rct__stage{min-height:var(--tap-gap);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;display:flex}.rct__glyphline{flex-direction:column;align-items:center;gap:4px;display:flex}.rct__glyph{font-size:var(--fs-digit);color:var(--navy);line-height:1.1}.rct__glyph--empty{color:var(--navy-soft)}.rct__name{font-size:var(--fs-lead);font-weight:700}.rct__rule{font-size:var(--fs-body);color:var(--warn-ink);border:2px solid var(--warn);background:var(--amber-bg);border-radius:var(--radius);padding:2px 12px;font-weight:700}.rct__waiting{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft)}.rct__say{text-align:center;align-items:center;min-height:60px;display:flex}.rct__correct{font-size:var(--fs-body);color:var(--ok);font-weight:700}.rct__mistake{font-size:var(--fs-body);color:var(--answer-ink);font-weight:700}.rct__early{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--navy-soft)}.rct__pad{grid-auto-rows:1fr;gap:12px;display:grid}.rct__pad--2,.rct__pad--4{grid-template-columns:repeat(2,1fr)}.rct__answer{min-height:var(--tap-answer);border-radius:var(--radius);border:1px solid var(--line);background:var(--paper);justify-content:center;align-items:center;gap:8px;padding:8px 10px;font-weight:700;display:flex}.rct__answer-key{border:1px solid var(--line);min-width:32px;color:var(--navy-soft);font-size:var(--fs-note);border-radius:8px;padding:2px 6px}.rct__answer-glyph{font-size:var(--fs-glyph);line-height:1}.rct__answer-name{font-size:var(--fs-body)}.rct--lesson .rct__lesson,.rct--lesson .rct__pad,.rct--lesson .rct__pairs{flex-shrink:0}.rct--lesson .rct__say{min-height:0}.rct__lesson{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;gap:6px;padding:12px;display:flex}.rct__lesson-line{font-size:var(--fs-lead);line-height:var(--lh-body);margin:0}.rct__nudge{font-size:var(--fs-note);line-height:var(--lh-note);color:var(--warn-ink);margin:0}.rct__inputs{border:0;flex-direction:column;gap:8px;margin:0;padding:0;display:flex}.rct__inputs legend{padding:0}.rct__inputlist{flex-direction:column;gap:8px;display:flex}.rct__input{min-height:var(--tap-min);border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);cursor:pointer;align-items:center;gap:12px;padding:10px 12px;display:flex}.rct__input--on{border-color:var(--navy);border-width:2px}.rct__input-mark{min-width:22px;min-height:22px;accent-color:var(--navy);flex:none;margin:0}.rct__input-name{font-size:var(--fs-body);font-weight:700}.rct__stats{flex-wrap:wrap;gap:12px;display:flex}.rct__stat{flex-direction:column;flex:120px;gap:2px;display:flex}.rct__number{font-size:var(--fs-number);line-height:var(--lh-tight)}.rct__log summary{cursor:pointer}.rct__meta{flex-direction:column;gap:4px;margin:8px 0 0;display:flex}.rct__meta div{gap:8px;display:flex}.rct__meta dt{color:var(--navy-soft);flex:0 0 40%}.rct__meta dd{margin:0}
