.signin{position:relative;z-index:1;display:grid;place-items:center;min-height:100dvh;padding:max(var(--s-lg),env(safe-area-inset-top)) max(var(--s-lg),env(safe-area-inset-right)) max(var(--s-lg),env(safe-area-inset-bottom)) max(var(--s-lg),env(safe-area-inset-left));overflow:hidden;text-align:center;background:var(--bg)}.signin-shell{position:relative;width:min(29rem,100%);overflow:hidden;border:1px solid var(--line);border-radius:calc(var(--r-xl) + 6px);color:var(--ink);background:var(--surface);animation:signin-enter .52s var(--ease) both}.signin-media{position:relative;isolation:isolate;aspect-ratio:16 / 9;overflow:hidden;border-bottom:1px solid var(--line);background:var(--surface-2)}.signin-poster,.signin-video{position:absolute;inset:0;z-index:1;display:block;width:100%;height:100%;object-fit:contain;filter:grayscale(.9) contrast(1.08) brightness(.8)}.signin-poster{opacity:1;transition:opacity var(--t-base) var(--ease)}.signin-poster.is-covered{opacity:0}.signin-video{opacity:0;transition:opacity var(--t-base) var(--ease)}.signin-video.is-ready{opacity:1}.signin-content{position:relative;display:flex;min-height:13rem;flex-direction:column;align-items:center;justify-content:center;padding:1.9rem 1.5rem 1.65rem}.signin-heading{display:grid;justify-items:center;gap:var(--s-xs);margin-bottom:var(--s-xl)}.signin-mark{margin:0;font-family:var(--font-display);font-size:var(--t-wordmark);font-weight:var(--w-page);font-style:normal;line-height:1;text-transform:uppercase}button.signin-action{display:inline-flex;width:min(21rem,100%);min-height:var(--control-h-lg);align-items:center;justify-content:center;gap:11px;padding:14px 20px;border:1px solid var(--action);border-radius:var(--r-xl);color:var(--action-ink);background:var(--action);box-shadow:none}button.signin-action:hover{border-color:var(--action-edge);background:var(--action)}button.signin-action:active{transform:translateY(1px);box-shadow:var(--press-lit)}button.signin-action:disabled,button.signin-action:disabled:hover{border-color:var(--action-edge);background:var(--action);color:var(--action-ink);cursor:wait}.signin-google-mark,.signin-spinner{width:20px;height:20px;flex:0 0 20px}.signin-google-mark{box-sizing:content-box;padding:5px;border-radius:var(--r-pill);background:var(--ink)}.signin-spinner{display:inline-block;border:2px solid var(--line-strong);border-top-color:var(--action);border-radius:50%;animation:signin-spin .72s linear infinite}button.signin-action .signin-spinner{border-color:var(--action);border-top-color:var(--action-ink)}.signin-restoring{display:inline-flex;min-height:var(--control-h-lg);align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:var(--t-small)}.signin-error{width:min(21rem,100%);margin-top:var(--s-md);padding:9px 11px;border:1px solid var(--danger);border-radius:var(--r-md);color:var(--danger-2);background:var(--surface-2);font-size:var(--t-small);line-height:1.4;animation:signin-error-in var(--t-base) var(--ease) both}@keyframes signin-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes signin-error-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes signin-spin{to{transform:rotate(360deg)}}@media(max-height:690px){.signin{align-items:start;overflow-y:auto}.signin-media{height:auto}.signin-content{min-height:11.5rem;padding-top:1.55rem;padding-bottom:1.45rem}.signin-heading{margin-bottom:var(--s-lg)}}@media(min-width:640px){.signin-content{padding-right:2rem;padding-left:2rem}}@media(orientation:landscape)and (max-height:600px){.signin-shell{display:grid;width:min(52rem,100%);grid-template-columns:minmax(16rem,.9fr) minmax(20rem,1.1fr)}.signin-media{height:100%;min-height:22rem;aspect-ratio:auto;border-right:1px solid var(--line);border-bottom:0}}@media(prefers-reduced-motion:reduce){.signin-shell,.signin-error,.signin-spinner{animation:none}.signin-poster,.signin-video,button.signin-action{transition:none}}.morse-key-input{display:grid;gap:var(--s-md)}.morse-key-entry{margin:0;min-height:2.2em;padding:0;font-family:var(--font-mono);font-size:1.8rem;line-height:1.2;letter-spacing:.16em;text-align:center;overflow-wrap:anywhere}.morse-key{display:grid;place-items:center;width:100%;min-height:84px;padding:var(--s-md) var(--s-lg);border-radius:var(--r-lg);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),filter var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.morse-key,.morse-key:hover{border-color:var(--session-colour, var(--action, var(--accent)));background:var(--session-colour, var(--action, var(--accent)));color:var(--session-ink, var(--action-ink, var(--accent-ink)))}@media(hover:hover)and (pointer:fine){.morse-key:hover{filter:brightness(1.05)}}.morse-key[data-pressed=true],.morse-key:active{transform:translateY(2px);box-shadow:none;filter:brightness(.88)}.morse-key{gap:var(--s-sm);align-content:center}.morse-key-face{display:block;inline-size:clamp(3.5rem,24vw,6.5rem);block-size:.55rem;border-radius:var(--r-pill);background:color-mix(in oklab,currentColor 40%,var(--session-colour, var(--action)))}.morse-key-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:0 var(--s-md);font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;line-height:1.2;color:currentColor}.morse-key-legend-mark{letter-spacing:0}.morse-key:disabled,.morse-key:disabled:hover{border-color:var(--line-strong);background:var(--surface-3);color:var(--muted);filter:none}.morse-key:disabled .morse-key-face{background:var(--line-strong)}.morse-key:disabled .morse-key-legend{visibility:hidden}@media(orientation:landscape)and (max-height:560px){.morse-key-legend{display:none}.morse-key{min-height:64px}.morse-key-input{gap:var(--s-xs)}.morse-key-entry{min-height:1.2em;font-size:1.3rem}}@media(prefers-reduced-motion:reduce){.morse-key{transition:none}.morse-key[data-pressed=true],.morse-key:active{transform:none}}.morse-listen-play-wrap{display:inline-grid;justify-items:center;gap:var(--s-xs)}.morse-listen-play,.morse-listen-play:hover,.morse-listen-play:active{display:grid;place-items:center;width:96px;height:96px;min-width:0;padding:0;border:0;border-radius:50%;color:var(--session-ink, var(--accent-ink));background:var(--session-colour, var(--accent));box-shadow:none}.morse-listen-play:disabled,.morse-listen-play:disabled:hover{color:var(--muted);background:var(--plate);border:1px solid var(--line);cursor:default;opacity:1}.morse-listen-play:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.morse-listen-play-readout{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);color:var(--muted);font-variant-numeric:tabular-nums}@media(max-height:560px){.morse-listen-play,.morse-listen-play:hover,.morse-listen-play:active{width:64px;height:64px}.morse-listen-play svg{width:28px;height:28px}}.morse-marks{--morse-unit: 12px;display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--morse-unit);max-width:100%;line-height:0;vertical-align:middle}.morse-mark{display:block;flex:none;block-size:var(--morse-unit);inline-size:var(--morse-unit);overflow:hidden;border-radius:var(--r-pill);background:currentColor;font-size:0}.morse-mark.is-dah{inline-size:calc(3 * var(--morse-unit))}.morse-marks.is-pip{--morse-unit: 4px}.morse-marks.is-tile{--morse-unit: 10px}.morse-marks.is-support{--morse-unit: max(8px, .28em)}.morse-marks.is-stimulus{--morse-unit: clamp(14px, 5.2vw, 26px)}@media(max-height:560px){.morse-marks.is-stimulus{--morse-unit: clamp(10px, 4.5vh, 18px)}}@media(forced-colors:active){.morse-mark{background:CanvasText;forced-color-adjust:none}}.morse-phrase{min-width:0;margin:0;font-family:var(--font-display);font-size:clamp(1.15rem,4.8vw,1.6rem);font-weight:var(--w-display);line-height:1.1}.morse-phrase-beats{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.15em .45em}.morse-phrase-beat{display:inline-grid;justify-items:center;gap:.05em;overflow-wrap:anywhere}.morse-phrase-mark{font-family:var(--font-mono);font-size:.72em;line-height:1;letter-spacing:.02em;color:var(--muted)}.morse-phrase-beat.is-hidden .morse-phrase-word,.morse-phrase-beat.is-hidden .morse-phrase-mark{color:var(--subtle)}.morse-grammar-mark{font-family:var(--font-mono);color:var(--muted)}.morse-character-support{display:grid;grid-template-columns:clamp(3.5rem,16vw,5rem) minmax(0,1fr) auto;align-items:center;gap:0 var(--s-md);min-width:0;width:100%;padding:var(--s-sm) var(--s-md)}.morse-character-support.is-sounding{border-color:var(--accent)}.morse-character-support-glyph{display:grid;place-items:center;align-self:stretch;border-inline-end:1px solid var(--line);padding-inline-end:var(--s-sm);font-family:var(--font-display);font-size:clamp(2.8rem,14vw,4.4rem);font-weight:var(--w-display);line-height:.9}.morse-character-support-body{display:grid;gap:.25rem;min-width:0}.morse-character-support-notation,.morse-character-support-mnemonic{margin:0}.morse-character-support-notation{font-family:var(--font-mono);font-size:clamp(1.8rem,8vw,2.6rem);font-weight:var(--w-strong);line-height:1;letter-spacing:.08em;overflow-wrap:anywhere}.morse-character-support-mnemonic{font-size:1rem;font-weight:var(--w-strong)}.morse-character-support>.morse-play{grid-column:3}.morse-character-support-audio-error{grid-column:1 / -1;margin:var(--s-xs) 0 0;color:var(--muted);font-size:var(--t-small)}@media(max-width:360px){.morse-character-support{grid-template-columns:min(3.2rem,18vw) minmax(0,1fr) auto;gap:0 var(--s-sm);padding-inline:var(--s-sm)}.morse-character-support-glyph{font-size:min(2.6rem,15vw)}.morse-character-support-notation{font-size:min(1.7rem,8vw)}}@container (max-width: 18em){.morse-character-support{grid-template-columns:minmax(0,1fr) auto;gap:0 var(--s-sm);padding-inline:0}.morse-character-support-glyph{grid-column:1 / -1;justify-self:start;border:0;padding:0;margin-bottom:var(--s-xs)}.morse-character-support>.morse-play{grid-column:2}}.session.session-frame{display:flex;flex-direction:column;gap:var(--s-md);min-height:100svh;padding-block:max(var(--s-md),env(safe-area-inset-top)) max(var(--s-lg),env(safe-area-inset-bottom))}:where(.session-frame)>*{flex:none;min-width:0}.session-body{flex:1 0 auto;display:flex;flex-direction:column;gap:var(--s-md);min-width:0}.session-stimulus,.session-response{margin-block-start:auto}.session-stimulus:last-child,.session-centred,.session-frame>.session-correct{margin-block:auto}.session-frame-response{display:grid;gap:var(--s-sm)}.session-frame-header{display:grid;grid-template-columns:auto minmax(24px,1fr) auto;align-items:center;gap:var(--s-md)}.session-frame-title{margin:0;font-family:var(--font);font-size:var(--t-body);font-weight:700;line-height:inherit;letter-spacing:inherit}.session-frame-header button{min-height:44px;min-width:44px;background:var(--plate, var(--surface));box-shadow:none}.session-frame-progress{height:6px;overflow:hidden;background:var(--field);border:1px solid var(--line);border-radius:var(--r-pill)}.session-frame-progress>span{display:block;height:100%;background:var(--session-colour);transform-origin:left}.session-correct{color:var(--session-colour);font-size:2rem;font-weight:700;text-align:center;animation:session-correct .15s cubic-bezier(.22,1,.36,1)}.session-miss{display:grid;gap:var(--s-sm);align-self:stretch;padding:var(--s-md);border:1px solid var(--line-strong);border-radius:var(--r-lg);background:var(--surface-2);text-align:start;container-type:inline-size}.session-miss>p{margin:0}.session-miss-verdict{font-family:var(--font-display);font-size:var(--t-component);font-weight:var(--w-section);color:var(--danger-2)}.session-miss-said{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-xs) var(--s-md);min-width:0}.session-miss-said-label{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--muted)}.session-miss-said-value{min-width:0;font-size:var(--t-component);font-weight:var(--w-section);color:var(--ink);overflow-wrap:anywhere}.session-miss>.session-miss-continue{width:100%;min-height:var(--control-h-lg)}@keyframes session-correct{0%{transform:scale(.96);opacity:.6}to{transform:scale(1);opacity:1}}.session-round-result{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;gap:var(--s-sm);text-align:center}.session-round-result>.session-round-reading{margin-block-start:auto}.session-frame [tabindex="-1"]:focus{outline:none}.session-frame .session-round-reading{font-family:var(--font-mono);font-size:clamp(2.5rem,14vw,5rem);font-variant-numeric:tabular-nums;font-weight:var(--w-page);line-height:1.06;letter-spacing:-.028em;color:var(--ink)}.session-round-actions{display:grid;grid-auto-flow:row;gap:var(--s-sm);align-self:stretch;margin-block-start:auto;padding-block-start:var(--s-md)}.session-frame .is-wrong{color:var(--danger)}.session-frame:is([data-session-kind=key],[data-session-kind=listen],[data-session-kind=read],[data-session-kind=free]) .is-correct{border-color:var(--session-colour)}@media(prefers-reduced-motion:reduce){.session-correct{animation:none}}.session-frame-toolbar{margin:0}@media(max-height:560px){.session.session-frame{width:min(100%,860px);gap:var(--s-xs);padding-block:max(var(--s-sm),env(safe-area-inset-top)) max(var(--s-sm),env(safe-area-inset-bottom))}.session-body{gap:var(--s-xs)}.session-frame .session-round-reading{font-size:clamp(2rem,14vh,3.5rem)}.session-miss{gap:var(--s-xs);padding:var(--s-sm) var(--s-md)}.session-miss>.session-miss-continue{min-height:var(--control-h)}}@media(max-height:560px)and (min-width:560px){.session-miss{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);align-items:center;column-gap:var(--s-lg)}.session-miss>.session-miss-verdict{grid-column:1;grid-row:1}.session-miss>.session-miss-said{grid-column:1;grid-row:2}.session-miss>.session-miss-continue{grid-column:1;grid-row:3}.session-miss>:not(.session-miss-verdict,.session-miss-said,.session-miss-continue){grid-column:2;grid-row:1 / span 3}}.letter-practice{max-width:34rem;margin-inline:auto}.letter-practice>.session-prompt-heading{font-size:1.4rem}.letter-practice-directions{display:flex;flex-wrap:wrap;gap:.5rem}.letter-practice-directions button{flex:1 1 4rem;min-width:0;min-height:44px}.letter-practice-directions [aria-pressed=true]{background:var(--surface-2);box-shadow:inset 0 -2px currentColor}.letter-practice-stimulus{display:grid;place-items:center;min-height:9rem}.letter-practice-stimulus .letter-practice-marks{color:var(--ink)}.letter-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-sm)}.letter-choices:focus{outline:none}.letter-choice{min-height:76px;padding:var(--s-sm);font-size:1.9rem;font-weight:700;letter-spacing:0;line-height:1}.letter-choice:active:not(:disabled){border-color:var(--session-colour)}.letter-practice-cue{margin:0;text-align:center;font-family:var(--font-mono);font-size:var(--t-readout);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--muted)}.letter-practice-stimulus{gap:var(--s-sm);align-content:center}.letter-practice-speed{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-sm)}.letter-practice-speed>button{min-width:44px;min-height:44px}.letter-practice-speed>button[aria-pressed=true]{background:var(--surface-3);border-color:var(--session-colour);box-shadow:inset 0 -2px var(--session-colour)}.letter-practice-speed-note{font-family:var(--font-mono);font-size:var(--t-readout);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--muted)}.letter-practice-speed-result{display:grid;gap:var(--s-xs);text-align:center}.letter-practice-speed-result>p{margin:0;color:var(--ink)}.letter-practice-speed-result>.letter-practice-speed-basis{color:var(--muted);font-size:var(--t-small)}.letter-practice-response{display:grid;gap:var(--s-sm)}.letter-practice-response>.quiet{justify-self:center}.letter-practice:has(>.letter-practice-correction)>.letter-practice-stimulus{min-height:0}.letter-practice .session-bar{flex-wrap:wrap}.letter-practice .morse-character-support .morse-phrase-beat{min-width:0;max-width:100%}@media(max-width:360px){.letter-practice .morse-character-support{grid-template-columns:minmax(0,1fr) auto}.letter-practice .morse-character-support-glyph{grid-column:1 / -1;border:0;padding:0;justify-self:start;margin-bottom:var(--s-sm)}.letter-practice .morse-character-support>.morse-play{grid-column:2}}@media(max-height:560px){.letter-practice-stimulus{min-height:0}.letter-practice-stimulus .lesson-glyph{font-size:clamp(2.2rem,14vh,3rem)}.letter-practice-response{gap:0}.letter-practice-cue{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}@media(max-height:560px)and (min-width:480px){.letter-choices{grid-template-columns:repeat(4,minmax(0,1fr))}.letter-choice{min-height:56px;font-size:1.6rem}}@media(max-height:560px)and (max-width:479px){.letter-choice{min-height:48px}}.backdrop.backdrop{background:var(--scrim);-webkit-backdrop-filter:none;backdrop-filter:none}.backdrop .sheet{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-lift)}.backdrop .sheet-head{border-bottom:1px solid var(--line)}.backdrop .sheet-head h2{font-size:var(--t-component);font-weight:var(--w-component);letter-spacing:0;line-height:1.3}.sheet .actions button.quiet{padding-inline:var(--s-md)}@media(max-width:560px){.sheet .actions{flex-direction:column-reverse;align-items:stretch}.sheet .actions>button{width:100%}}.sheet .add-menu{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:var(--s-sm)}.sheet .add-menu-option{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-sm);min-height:96px;padding:var(--s-md);border:1px solid var(--line);border-radius:var(--r-lg);text-align:center;color:var(--ink);background:var(--surface-2);box-shadow:none}.sheet .add-menu-option:hover{border-color:var(--line-hover);background:var(--surface-3)}.sheet .add-menu-option:active{background:var(--surface-3);box-shadow:var(--press)}.add-menu-mark{width:28px;height:28px;color:var(--ink)}.sheet .add-menu-option-title{font-size:var(--t-component);font-weight:var(--w-component);overflow-wrap:anywhere}.sheet .field-row .help{font-family:var(--font-mono);font-size:var(--t-readout);letter-spacing:var(--track-readout)}.sheet .field-row .count{font-family:var(--font-mono);font-size:var(--t-readout);letter-spacing:var(--track-readout);font-variant-numeric:tabular-nums}.sheet .field-row .error{color:var(--danger)}.sheet .sheet-note{margin:0;color:var(--ink)}.plate{padding:var(--s-md);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--ink);background:var(--plate)}.plate-raised{background:var(--plate-raised);box-shadow:var(--shadow-sm)}.plate-repair{border-color:var(--warning)}.screen-header{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-md)}.screen-header-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-md)}.screen-header-back{padding-left:0}.screen-header-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-sm);margin-left:auto}.screen-header-actions button{min-width:44px}.screen-header-title-row{display:flex;align-items:center;gap:var(--s-sm);min-width:0}.screen-header-glyph{display:grid;flex:none;place-items:center}.screen-header-title{min-width:0;margin:0;overflow-wrap:break-word}.screen-header-title:focus{outline:none}.screen-header-progress{display:flex;align-items:center;gap:var(--s-md)}.screen-header-track{flex:1;height:8px;overflow:hidden;border:1px solid var(--line);border-radius:4px;background:var(--field)}.screen-header-track>span{display:block;height:100%;background:var(--action)}.screen-header-readout{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}.screen-header.today-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-xs) var(--s-md)}.today-head .screen-header-title-row{flex:0 0 auto}.today-brand{font-family:var(--font-display);font-size:var(--t-wordmark);font-weight:var(--w-page);font-style:normal;line-height:1;text-transform:uppercase}.today-head-tools{display:flex;align-items:center;gap:var(--s-sm)}.today-profile{display:grid;width:44px;height:44px;padding:0;place-items:center;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--plate-raised);color:var(--muted);box-shadow:none}.today-profile:hover{border-color:var(--line-hover);background:var(--surface-3);color:var(--ink)}.today-profile svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.today-date{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--subtle);white-space:nowrap}.home-panel{margin:var(--s-xl) 0 var(--s-2xl);padding:0;overflow:hidden}.home-readout{display:grid;grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr));margin:0 -1px -1px 0}.home-readout>div{display:flex;min-width:0;flex-direction:column-reverse;justify-content:flex-end;gap:var(--s-xs);padding:var(--s-md);box-shadow:inset -1px -1px 0 var(--line)}.home-readout dt{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--muted)}.home-readout dd{margin:0;font-family:var(--font-mono);font-size:var(--t-component);font-weight:700;color:var(--ink);overflow-wrap:anywhere}.home-section-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-md)}.home-section-bar h2{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);line-height:1.2;text-transform:uppercase;color:var(--muted)}.index.docket{display:grid;gap:var(--s-sm);margin-top:var(--s-sm);border-top:0}.index-row.plate-raised{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--plate-raised);box-shadow:var(--shadow-sm)}.index-row.plate-repair{border-color:var(--warning)}.index-row.today-plate{grid-template-columns:56px minmax(0,1fr);align-items:center;gap:var(--s-lg);padding:var(--s-lg);transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.index-row.today-plate:after{content:none}.index-row.today-plate:hover{border-color:var(--line-hover);background:var(--surface-3)}.index-row.today-plate.plate-repair:hover{border-color:var(--warning)}.index-row.today-plate:active{transform:translateY(1px);box-shadow:var(--press)}.home-topic-copy{display:grid;gap:var(--s-xs);min-width:0}.today-plate-title{font-size:var(--t-component);line-height:1.3;overflow-wrap:anywhere}.home-topic-reading{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);line-height:1.4;text-transform:uppercase;color:var(--muted)}.home-topic-reading.is-repair{color:var(--warning)}.home-topic-reading.is-repair:before{content:"◆ "}.home-dial{position:relative;display:grid;place-items:center;width:56px;height:56px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--field)}.home-dial>svg{position:absolute;inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);transform:rotate(-90deg)}.home-dial circle{fill:none;stroke-width:3}.home-dial-track{stroke:var(--line-strong)}.home-dial-arc{stroke:var(--track-hue, var(--ink));stroke-linecap:round}.home-dial-stage{stroke:var(--track-hue, var(--muted));stroke-dasharray:3 9}.home-dial.is-complete .home-dial-stage{stroke:var(--track-hue, var(--complete));stroke-dasharray:none}.home-dial.is-repair .home-dial-stage{stroke:var(--warning);stroke-dasharray:none}.home-dial-mark{color:var(--muted);font-family:var(--font-mono);font-size:var(--t-component)}.home-dial.is-complete .home-dial-mark{color:var(--track-hue, var(--muted))}.home-dial.is-repair .home-dial-mark{color:var(--warning)}.home-add{display:block;width:100%;min-height:var(--control-h-lg);margin-top:var(--s-xl)}.home-empty{display:grid;justify-items:start;gap:var(--s-lg)}.today-note{color:var(--ink)}@media(prefers-reduced-motion:reduce){.index-row.today-plate{transition:none}}.home-readout dd{display:flex;flex-wrap:wrap;align-items:center;gap:.35em}.home-readout-icon{width:.85em;height:.85em;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.home-dial-mark{display:grid;place-items:center;width:28px;height:28px}.home-dial-mark .topic-icon{width:100%;height:100%}.home-topic-fallback{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.spine{position:relative;isolation:isolate;display:grid;gap:12px;padding:0;margin:0;list-style:none;background:var(--bg)}.spine:before,.spine:after{content:"";position:absolute;z-index:1;left:34px;width:4px;top:var(--spine-top);height:calc(var(--spine-bottom) - var(--spine-top));background:var(--spine-ahead);pointer-events:none}.spine:after{height:calc(var(--spine-current, var(--spine-top)) - var(--spine-top));background:var(--action)}.spine-row,.spine-row:hover,.spine-row:active{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:10px;border:2px solid var(--bg);border-radius:18px;text-align:left;color:var(--ink);background:var(--bg);box-shadow:none;transition:transform .15s var(--ease)}.spine-row>*{position:relative;z-index:2}.spine-row[aria-disabled=true]{cursor:default;transform:none;color:var(--muted)}.spine-row:focus-visible{outline:2px solid var(--action-edge);outline-offset:2px}.spine-row.is-plate,.spine-row.is-plate:hover,.spine-row.is-plate:active{border-color:var(--line);background:var(--plate)}.spine-node{display:grid;place-items:center;flex:0 0 36px;height:36px;margin-inline:6px;border:2px solid var(--line-hover);border-radius:50%;font-size:1rem;font-weight:800;color:var(--ink);background:var(--plate)}.spine-node-square{border-radius:9px}.is-done>.spine-node{border-color:var(--complete);background:var(--surface-4);color:var(--ink)}.is-locked>.spine-node{border-color:var(--spine-ahead);color:var(--muted)}.is-repair>.spine-node{border-color:var(--warning);color:var(--warning)}.spine-row.is-plate.is-repair,.spine-row.is-plate.is-repair:hover,.spine-row.is-plate.is-repair:active{border-color:var(--warning)}.spine-main{display:grid;gap:4px;min-width:0}.spine-label{min-width:0;overflow-wrap:anywhere;font-size:1.125rem;font-weight:700}.spine-detail{font-size:.75rem;color:var(--muted);overflow-wrap:anywhere}.spine-trailing{display:flex;flex-wrap:wrap;align-items:center;margin-left:auto}.spine-row.is-position,.spine-row.is-position:hover,.spine-row.is-position:active{min-height:80px;border-color:var(--action-edge);background:var(--plate-raised);box-shadow:var(--shadow-sm)}.is-position>.spine-node{flex-basis:48px;height:48px;margin-inline:0;border-color:var(--action);background:var(--action);color:var(--action-ink)}.spine-jump,.spine-jump:hover,.spine-jump:active{position:fixed;z-index:15;bottom:calc(var(--nav-clearance, 0px) + var(--mode-tray-height, 0px) + var(--s-md));left:50%;translate:-50% 0;min-height:44px;border:2px solid var(--action-edge);border-radius:var(--r-pill);color:var(--action-ink);background:var(--action);box-shadow:var(--shadow-sm);transition:transform .15s var(--ease)}.spine-row-wrap{position:relative}.spine-row.has-aside,.spine-row.has-aside:hover,.spine-row.has-aside:active{align-items:flex-start;padding-bottom:calc(max(var(--control-h),.9rem + 20px) + 14px)}.spine-row.has-aside>.spine-node{margin-top:2px}.spine-aside{position:absolute;z-index:3;left:var(--spine-aside-inset, 72px);right:12px;bottom:12px;display:flex;flex-wrap:wrap;gap:var(--s-sm)}@media(max-width:360px){.spine-row{gap:8px}}@media(prefers-reduced-motion:reduce){.spine-row,.spine-jump{transition:none}.spine-row:active,.spine-jump:active{transform:none}}.mode-tray-dock{position:fixed;z-index:10;bottom:var(--nav-clearance, 90px);left:0;right:0;background:var(--bg)}:has(>.mode-tray-dock){padding-bottom:calc(var(--mode-tray-height, 112px) + var(--s-lg))}:has(>.mode-tray-dock) :is(button,a,input,select,textarea){scroll-margin-bottom:calc(var(--nav-clearance, 90px) + var(--mode-tray-height, 112px) + var(--s-lg))}.mode-tray{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px;max-width:760px;margin-inline:auto;padding:8px;border-top:1px solid var(--line);background:var(--bg)}.mode-tray-tile,.mode-tray-tile:hover,.mode-tray-tile:active{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-width:44px;min-height:88px;padding:12px 2px;border:0;border-radius:16px;color:var(--tile-ink);background:var(--tile-fill);box-shadow:none;transition:transform .15s var(--ease)}.mode-tray-tile[aria-disabled=true]{color:var(--muted);background:var(--plate);border:1px solid var(--line);cursor:default;transform:none}.mode-tray-stimulus{display:grid;place-items:center;height:32px}.mode-tray-label{font-size:.875rem;font-weight:700;line-height:1.2;overflow-wrap:anywhere}.mode-tray-lock{position:absolute;top:6px;right:6px}.mode-tray-tile:focus-visible{outline:2px solid var(--ink);outline-offset:2px}@media(max-height:700px),(max-width:360px){.mode-tray{gap:6px;padding:6px 8px}.mode-tray-tile,.mode-tray-tile:hover,.mode-tray-tile:active{gap:4px;min-height:64px;padding:6px 2px;border-radius:12px}.mode-tray-stimulus{height:28px}.mode-tray-label{font-size:.8125rem}}@media(max-height:420px)and (min-width:560px){.mode-tray{padding:4px 8px}.mode-tray-tile,.mode-tray-tile:hover,.mode-tray-tile:active{flex-direction:row;gap:10px;min-height:44px;padding:4px 8px;border-radius:10px}.mode-tray-stimulus{height:32px}}@media(min-width:980px){.mode-tray-dock{position:sticky;top:var(--mode-tray-top, 0px);margin-top:var(--s-lg)}.mode-tray{padding-inline:0;border-top:0;border-bottom:1px solid var(--line)}}@media(prefers-reduced-motion:reduce){.mode-tray-tile{transition:none}.mode-tray-tile:active{transform:none}}button.sources-link{display:block;min-height:44px;margin:var(--s-xl) auto 0;padding:0 var(--s-md);color:var(--subtle);font-size:var(--t-small)}.learn-notes.sources-notes{margin-top:0;padding-top:0;border-top:0}.sources-notes ul{list-style:disc}.sources-notes ol{list-style:decimal}.sources-notes{min-width:0;grid-template-columns:minmax(0,1fr);overflow-wrap:anywhere}.visual{display:grid;gap:var(--s-sm);margin:0;max-width:28rem}.visual.is-compact{max-width:11rem}.visual-frame{overflow:hidden;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface-2)}.visual-image{display:block;width:100%;height:auto}.visual-missing{margin:0;padding:var(--s-md);font-size:var(--t-small);line-height:1.5;color:var(--muted)}.visual-caption{display:grid;gap:var(--s-xs);font-size:var(--t-small);line-height:1.55;color:var(--muted)}.visual-credit{font-size:var(--t-label);color:var(--subtle)}.figure{display:block;width:100%;height:auto}.figure-ring{fill:none;stroke:var(--line-hover);stroke-width:1.5}.figure-cardinal{fill:var(--muted);font-family:var(--font-mono);font-size:11px;font-weight:600}.figure-pointer{stroke:var(--ink);stroke-width:2.5;stroke-linecap:round}.figure-pointer-label{fill:var(--ink);font-family:var(--font-mono);font-size:10px}.figure-hub{fill:var(--ink)}.figure-guide{stroke:var(--line-strong);stroke-width:1;stroke-dasharray:2 4}.figure-arc{fill:none;stroke:var(--muted);stroke-width:1.5}.figure-north-ray{stroke:var(--ink);stroke-width:2.5;stroke-linecap:round}.figure-north-ray.is-M{stroke-dasharray:9 5}.figure-north-ray.is-G{stroke-dasharray:1 6;stroke-width:3.5}.figure{--light-white: #f4f6f9;--light-red: #ef5a52;--light-green: #34c58a}.figure-hull{fill:var(--surface-3);stroke:var(--line-hover);stroke-width:1.5;stroke-linejoin:round}.figure-light{stroke:var(--bg);stroke-width:1.5}.figure-light.is-white{fill:var(--light-white)}.figure-light.is-red{fill:var(--light-red)}.figure-light.is-green{fill:var(--light-green)}.figure-sector{fill:none;stroke-width:4;stroke-linecap:butt}.figure-sector.is-white{stroke:var(--light-white)}.figure-sector.is-red{stroke:var(--light-red)}.figure-sector.is-green{stroke:var(--light-green)}.figure-sector-label{fill:var(--muted);font-family:var(--font-mono);font-size:9px;font-weight:600}.figure-observer{fill:var(--bg);stroke:var(--accent);stroke-width:2}.figure-observer-line{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:3 3}.figure-day-ground{fill:var(--accent)}.figure-day-shape{fill:var(--accent-ink)}.learn-entry .visual{max-width:14rem}.figure-signal-flag{--flag-white: #f4f6f9;--flag-blue: #1f4fbf;--flag-red: #d8352c;--flag-yellow: #f2c81c;--flag-black: #0b0d10}.flag-fill.is-white{fill:var(--flag-white)}.flag-fill.is-blue{fill:var(--flag-blue)}.flag-fill.is-red{fill:var(--flag-red)}.flag-fill.is-yellow{fill:var(--flag-yellow)}.flag-fill.is-black{fill:var(--flag-black)}.flag-stroke.is-white{stroke:var(--flag-white)}.flag-stroke.is-blue{stroke:var(--flag-blue)}.flag-stroke.is-red{stroke:var(--flag-red)}.flag-stroke.is-yellow{stroke:var(--flag-yellow)}.flag-stroke.is-black{stroke:var(--flag-black)}.flag-outline{fill:none;stroke:var(--line-hover);stroke-width:1;stroke-linejoin:round}.morse-phrase-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s-md);align-items:center;width:100%}.morse-letter{font-family:var(--font-display);font-size:clamp(2.5rem,11vw,4rem);font-weight:var(--w-display);line-height:.95;color:var(--ink)}@media(max-width:420px){.morse-phrase-row{grid-template-columns:1fr;gap:var(--s-sm)}.morse-letter{font-size:2.8rem}}.visual-guide{max-width:700px;min-width:0}.visual-guide-rail{display:flex;gap:16px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding:0 0 8px;margin:0;list-style:none;position:relative}.visual-guide-panel{flex:0 0 calc(100% - 24px);min-width:0;scroll-snap-align:start}.visual-guide-panel:last-child{flex-basis:100%}.visual-guide-panel h4{font-size:var(--t-body);margin:0 0 var(--s-sm)}.visual-guide-marker{font-family:var(--font-mono);color:var(--ink)}.visual-guide .visual{max-width:700px}.visual-guide-panel dl{font-size:var(--t-small);line-height:1.55;margin:var(--s-sm) 0}.visual-guide-panel dt{font-weight:600;color:var(--ink)}.visual-guide-panel dd{margin:0 0 var(--s-sm);color:var(--muted)}.visual-guide-meta{font-family:var(--font-mono);font-size:var(--t-small);color:var(--muted)}.visual-guide-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-sm)}.visual-guide-controls button{min-height:44px}.visual-guide-position{flex:1 1 auto;min-width:0;margin:0;text-align:center;font-family:var(--font-mono);font-size:var(--t-label);font-variant-numeric:tabular-nums}.visual-guide-steps{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--s-xs)}.visual-guide-steps button{min-width:44px;min-height:44px;color:var(--muted);background:transparent;border:1px solid var(--line);border-radius:var(--r-sm);font-family:var(--font-mono);cursor:pointer}.visual-guide-steps button[aria-current]{color:var(--ink);border-color:var(--line-hover);background:var(--surface-2)}.visual-guide-steps button:hover{border-color:var(--line-hover)}.visual-guide-steps button:focus-visible,.visual-guide-rail:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media(min-width:760px){.visual-guide-panel{flex-basis:100%}}.learn-support{max-width:68ch;margin:var(--s-xl) 0 var(--s-2xl)}.learn-support-kind,.learn-case-label{margin:0 0 var(--s-sm);font-size:var(--t-label);font-weight:var(--w-label);letter-spacing:.08em;text-transform:uppercase;color:var(--subtle)}.learn-overview{max-width:58ch;font-family:var(--font-display);font-size:var(--t-lede);line-height:1.55;color:var(--ink)}.learn-section,.learn-case{margin-top:var(--s-xl)}.learn-section>h3,.learn-case>h3{font-family:var(--font-display);font-size:var(--t-section);line-height:1.2;text-wrap:balance}.learn-blocks{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-md);margin-top:var(--s-md)}.learn-paragraph,.learn-list,.learn-definitions,.learn-case-scenario,.learn-case-takeaway{max-width:68ch;line-height:1.65;overflow-wrap:anywhere}.learn-list{padding-left:1.35em}.learn-list li+li{margin-top:var(--s-xs)}.learn-steps li::marker{color:var(--subtle);font-variant-numeric:tabular-nums}.learn-definitions{margin:0}.learn-definitions>div{display:grid;gap:3px;padding:var(--s-sm) 0;border-bottom:1px solid var(--line)}.learn-definitions dt{font-weight:var(--w-label);color:var(--ink)}.learn-definitions dd{margin:0;color:var(--muted);overflow-wrap:anywhere}.learn-entries{display:grid;gap:0;margin:0;padding:0;list-style:none}.learn-entry{display:grid;gap:var(--s-xs);padding:var(--s-md) 0;border-bottom:1px solid var(--line)}.learn-entry:last-child{border-bottom:0}.learn-entry-head{display:flex;align-items:baseline;gap:var(--s-sm);margin:0;font-family:var(--font-display);font-weight:var(--w-section);line-height:1.15}.learn-entry-marker{flex:none;min-width:2ch;font-size:var(--t-page);color:var(--ink)}.learn-entry-title{min-width:0;font-size:var(--t-component);color:var(--ink);text-wrap:balance}.learn-entry-meta{margin:0;font-family:var(--font-mono);font-size:var(--t-small);color:var(--muted)}.learn-entry-fields{display:grid;gap:var(--s-xs);margin:var(--s-xs) 0 0}.learn-entry-fields dt{font-size:var(--t-label);font-weight:var(--w-label);letter-spacing:.07em;text-transform:uppercase;color:var(--subtle)}.learn-entry-fields dd{margin:0;max-width:68ch;color:var(--muted);line-height:1.55;overflow-wrap:anywhere}.learn-entry-note{margin:var(--s-xs) 0 0;max-width:68ch;font-size:var(--t-small);line-height:1.55;color:var(--subtle)}.learn-table-wrap{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);scrollbar-width:thin}.learn-table-wrap:focus-visible{outline:3px solid var(--action);outline-offset:3px}.learn-table{width:100%;min-width:21.5em;table-layout:fixed;border-collapse:collapse;font-size:var(--t-body);line-height:1.45}.learn-table th,.learn-table td{padding:var(--s-sm) var(--s-md) var(--s-sm) 0;text-align:left;vertical-align:top;overflow-wrap:break-word;word-break:normal}.learn-table th:first-child,.learn-table td:first-child{width:30%}.learn-table th:nth-child(2):not(:last-child),.learn-table td:nth-child(2):not(:last-child){width:50%}.learn-table th:nth-child(3):last-child,.learn-table td:nth-child(3):last-child{width:20%}.learn-table:has(th:nth-child(2):last-child){min-width:0}.learn-table:has(th:nth-child(4)){min-width:34em;table-layout:auto}.learn-table:has(th:nth-child(4)) :is(th,td){width:auto}.learn-table th:last-child,.learn-table td:last-child{padding-right:0}.learn-table th{font-size:var(--t-label);font-weight:var(--w-label);letter-spacing:.05em;text-transform:uppercase;color:var(--subtle)}.learn-table tbody tr+tr{border-top:1px solid var(--line)}.learn-case{padding-top:var(--s-lg);border-top:1px solid var(--line-strong)}.learn-case-scenario{margin-top:var(--s-md);color:var(--muted)}.learn-case-analysis{margin-top:var(--s-lg)}.learn-case-analysis h4{font-size:1rem;font-weight:var(--w-label);line-height:1.4;color:var(--ink)}.learn-case-analysis .learn-blocks{margin-top:var(--s-sm)}.learn-case-takeaway{margin-top:var(--s-lg);padding-top:var(--s-md);border-top:1px solid var(--line-strong)}.learn-notes{display:grid;gap:var(--s-lg);margin-top:var(--s-xl);padding-top:var(--s-lg);border-top:1px solid var(--line);color:var(--muted);font-size:var(--t-body);line-height:1.55}.learn-notes h3{margin-bottom:var(--s-sm);font-size:var(--t-label);font-weight:var(--w-label);letter-spacing:.07em;text-transform:uppercase;color:var(--subtle)}.learn-notes ul,.learn-notes ol{padding-left:1.35em}.learn-notes li+li{margin-top:var(--s-xs)}.learn-notes a{color:var(--ink);text-underline-offset:.18em}.learn-source-note{color:var(--subtle)}.sheet-items{margin-top:var(--s-sm)}.sheet-items li{display:grid;grid-template-columns:2.2rem minmax(0,1fr);grid-template-areas:"num prompt" "num answer";gap:2px var(--s-md);padding:var(--s-md) 0;border-bottom:1px solid var(--line)}.sheet-items li.has-visual{grid-template-areas:"num visual" "num prompt" "num answer"}.sheet-visual{grid-area:visual;margin-bottom:var(--s-xs)}.sheet-num{grid-area:num;align-self:start;padding-top:3px;font-size:var(--t-label);color:var(--subtle)}.sheet-prompt{grid-area:prompt;font-size:var(--t-small);font-weight:var(--w-label);letter-spacing:.05em;color:var(--subtle)}.sheet-answer{grid-area:answer;font-family:var(--font-display);font-size:1.32rem;font-weight:var(--w-display);line-height:1.3;letter-spacing:-.012em;overflow-wrap:anywhere}@media(min-width:620px){.sheet-items li{grid-template-columns:2.6rem fit-content(14rem) minmax(0,1fr);grid-template-areas:"num prompt answer";align-items:baseline;gap:var(--s-lg)}.sheet-items li.has-visual{grid-template-areas:"num prompt answer" "num visual visual"}.sheet-prompt{padding-top:2px}.learn-definitions>div{grid-template-columns:minmax(8rem,.34fr) minmax(0,1fr);gap:var(--s-lg)}}.morse-packet{display:grid;gap:var(--s-md)}.morse-cards{display:grid;gap:var(--s-md);margin:0;padding:0;list-style:none}.morse-card{display:grid;gap:var(--s-sm);justify-items:start;background:var(--surface-2)}.morse-card.is-sounding{border-color:var(--line-strong)}.morse-visual-row{display:flex;align-items:center;gap:var(--s-sm);width:100%}.morse-mnemonic{display:block;flex:1 1 auto;min-width:0;max-width:22em;height:auto}.morse-mnemonic-glyph{font-family:var(--font-display);font-size:34px;font-weight:var(--w-display);fill:var(--ink)}.morse-mnemonic-rail{stroke:var(--line);stroke-width:1}.morse-mnemonic-origin{stroke:var(--line-strong);stroke-width:1.5}.morse-mnemonic-element{transition:fill 90ms linear}.morse-mnemonic-dit{fill:var(--mode-read)}.morse-mnemonic-dah{fill:var(--action)}.morse-mnemonic-element.is-sounding{fill:var(--ink)}.morse-canonical{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-sm);margin:0}.morse-notation{font-family:var(--font-mono);font-size:var(--t-component);letter-spacing:.06em;color:var(--ink)}.morse-rhythm{font-size:var(--t-small);color:var(--muted);letter-spacing:.02em}.morse-play{flex-shrink:0}.morse-play.is-playing{border-color:var(--line-strong)}.morse-packet-note,.morse-audio-error{margin:0;font-size:var(--t-small);color:var(--muted)}.morse-audio-error{color:var(--danger-2)}@media(prefers-reduced-motion:reduce){.morse-mnemonic-element{transition:none}}@media(min-width:620px){.morse-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}.learn-support :is(h3,h4),.learn-overview,.topic-scope{overflow-wrap:anywhere;-webkit-hyphens:manual;hyphens:manual}.topic-reading{display:grid;grid-template-columns:minmax(0,1fr)}.topic-reading-title{overflow-wrap:anywhere}.topic-reading .screen-header-glyph .topic-icon{width:32px;height:32px}.topic-reading-hero{margin-top:var(--s-lg)}.topic-reading-hero .visual{margin:0}.topic-reading .topic-scope{max-width:58ch;margin:var(--s-lg) 0 0;font-size:var(--t-component);line-height:1.45;color:var(--muted)}.topic-reading .learn-support{margin-top:var(--s-lg)}.topic-reading .sources-link{justify-self:start}@media(min-width:980px){.topic-reading{max-width:760px}}.audio-stimulus{display:grid;gap:var(--s-sm);margin:0;max-width:28rem}.audio-player{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-sm) var(--s-md)}.audio-play{display:inline-flex;align-items:center;gap:var(--s-sm);min-height:var(--control-h-lg);padding-inline:var(--s-lg)}.audio-play-mark{font-size:1.1em;line-height:1}.audio-status{margin:0;flex:1 1 10rem;font-size:var(--t-small);line-height:1.4;color:var(--muted)}.audio-transcript{display:grid;gap:var(--s-xs);padding:var(--s-md);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface-2)}.audio-transcript-label{font-size:var(--t-label);font-weight:var(--w-label);letter-spacing:.07em;text-transform:uppercase;color:var(--subtle)}.audio-transcript-text{line-height:1.5;overflow-wrap:anywhere;color:var(--ink)}.audio-reveal{justify-self:start}.audio-assisted{margin:0;font-size:var(--t-small);line-height:1.4;color:var(--muted)}.audio-response{display:grid;gap:var(--s-sm)}.audio-field{display:grid;gap:var(--s-xs)}.audio-label{font-size:var(--t-label);font-weight:var(--w-label);letter-spacing:.07em;text-transform:uppercase;color:var(--subtle)}.audio-input{width:100%;min-height:var(--control-h-lg);font-size:var(--t-component)}.morse-mode-letter{font-size:30px;font-weight:800;line-height:1}.morse-mode-text{display:flex;align-items:center;gap:3px;font-size:26px;font-weight:800;line-height:1}.morse-mode-cursor{width:5px;height:28px;background:currentColor}.morse-mode-letter.is-small{font-size:15px}.morse-mode-text.is-small{gap:1px;font-size:12px}.morse-mode-text.is-small .morse-mode-cursor{width:2px;height:12px}.morse-progress-lesson .spine-label{font-size:1.25rem;letter-spacing:.12em}.spine-row.is-position.morse-progress-lesson .spine-label{font-size:1.625rem;font-weight:800}.spine-row.is-position.morse-progress-start .spine-label{font-size:1.5rem;font-weight:800}.morse-progress-label{font-size:.75rem;color:var(--muted)}.morse-progress-checkpoint .spine-label,.morse-progress-test .spine-label{font-size:.875rem;font-weight:800}.morse-progress-test .spine-label{font-size:1.25rem}.morse-progress-repair{color:var(--warning)}.morse-progress-path .spine-node{border-color:var(--line-hover);color:var(--ink)}.morse-progress-path .is-done>.spine-node{border-color:var(--complete);background:var(--surface-4);color:var(--ink)}.morse-progress-path .is-locked>.spine-node{border-color:var(--spine-ahead);color:var(--muted)}.morse-progress-path .is-repair>.spine-node{border-color:var(--warning);color:var(--warning)}.morse-progress-path .is-position>.spine-node{border-color:var(--action);background:var(--action);color:var(--action-ink)}.morse-progress-test>.spine-node{flex-basis:44px;height:44px;font-size:.75rem;letter-spacing:.02em}.spine-row.morse-progress-test,.spine-row.morse-progress-test:hover,.spine-row.morse-progress-test:active{min-height:96px;background:var(--plate-raised);border-color:var(--line-strong)}.spine-row.morse-progress-test.is-position,.spine-row.morse-progress-test.is-position:hover,.spine-row.morse-progress-test.is-position:active{min-height:104px;border-color:var(--action-edge)}.spine-row.morse-progress-test.is-repair,.spine-row.morse-progress-test.is-repair:hover,.spine-row.morse-progress-test.is-repair:active{border-color:var(--warning)}.spine-row.morse-progress-test.is-position>.spine-node{flex-basis:48px;height:48px}.spine-row.morse-progress-test.has-aside,.spine-row.morse-progress-test.has-aside:hover,.spine-row.morse-progress-test.has-aside:active{min-height:0}.spine-row-wrap:has(>.morse-progress-test){--spine-aside-inset: 80px}.spine-row-wrap:has(>.morse-progress-test.is-position){--spine-aside-inset: 72px}.morse-progress-aside{min-height:44px}.morse-progress-notice{margin:var(--s-xs) 0 0;padding-left:72px;font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--muted)}.morse-progress-pips{display:flex;flex-wrap:wrap;justify-content:flex-end}.morse-progress-pip,.morse-progress-pip:hover,.morse-progress-pip:active{display:grid;place-items:center;width:44px;min-width:44px;min-height:44px;padding:0;border:0;border-radius:9px;background:transparent;box-shadow:none;transition:transform .15s var(--ease)}.morse-progress-pip-key{--pip-colour: var(--mode-key);--pip-ink: var(--mode-key-ink)}.morse-progress-pip-listen{--pip-colour: var(--mode-listen);--pip-ink: var(--mode-listen-ink)}.morse-progress-pip-read{--pip-colour: var(--mode-read);--pip-ink: var(--mode-read-ink)}.morse-progress-pip-free{--pip-colour: var(--mode-free);--pip-ink: var(--mode-free-ink)}.morse-progress-pip-chip{display:grid;place-items:center;width:32px;height:32px;border:2px solid var(--pip-colour);border-radius:8px;color:var(--pip-colour);background:var(--plate)}.morse-progress-pip.is-cleared .morse-progress-pip-chip{color:var(--pip-ink);background:var(--pip-colour)}.morse-progress-pip.is-locked .morse-progress-pip-chip{border-color:var(--spine-ahead);color:var(--muted)}.morse-progress-pip[aria-disabled=true]{cursor:default;transform:none}.morse-progress-pip:focus-visible{outline:2px solid var(--action-edge);outline-offset:2px}@media(prefers-reduced-motion:reduce){.morse-progress-pip{transition:none}.morse-progress-pip:active{transform:none}}@media(max-height:420px)and (min-width:560px){.spine.morse-progress-path{gap:6px}.morse-progress-path .spine-row:not(.has-aside),.morse-progress-path .spine-row:not(.has-aside):hover,.morse-progress-path .spine-row:not(.has-aside):active{min-height:48px;padding-block:4px}.morse-progress-path .spine-row.is-position,.morse-progress-path .spine-row.is-position:hover,.morse-progress-path .spine-row.is-position:active{min-height:56px}.morse-progress-path .is-position>.spine-node{flex-basis:40px;height:40px}.spine-row.is-position.morse-progress-lesson .spine-label{font-size:1.375rem}.morse-progress-path .spine-row.morse-progress-test,.morse-progress-path .spine-row.morse-progress-test:hover,.morse-progress-path .spine-row.morse-progress-test:active{min-height:64px}}.session.session-frame.morse-placement-session{min-height:0;padding:0}.morse-placement-intro,.morse-placement-result,.morse-placement-question{display:grid;gap:1rem}.morse-placement-choices{display:grid;gap:.75rem}.morse-placement-choices button{display:flex;align-items:center;gap:var(--s-md);min-height:var(--control-h-lg);text-align:left;font-size:var(--t-component)}.morse-placement-mark{flex:none}.morse-placement-question{text-align:center;outline:none}.morse-placement-meta{margin:0;font-size:.82rem;color:var(--muted)}.morse-placement-letter{margin:.5rem 0 0;font-size:clamp(4.5rem,22vw,7rem);line-height:1;font-weight:700;letter-spacing:-.04em}.morse-placement-word{margin:.5rem 0 0;display:flex;justify-content:center;flex-wrap:wrap;gap:.08em;font-size:clamp(2.5rem,13vw,4.25rem);line-height:1.1;font-weight:650;letter-spacing:.08em}.morse-placement-word .is-current{text-decoration:underline;text-decoration-thickness:.12em;text-underline-offset:.12em}.morse-placement-key{display:grid;width:min(100%,30rem);justify-self:center;justify-items:stretch;gap:.5rem}.morse-placement-key .morse-key-entry{display:none}.morse-placement-feedback{min-height:5rem;display:grid;place-content:center;gap:.25rem}.morse-placement-feedback strong{font-size:1.15rem}.morse-placement-feedback span{color:var(--muted)}.morse-placement-result-title{margin:0;font-size:1.35rem;font-weight:700}@media(max-height:620px){.morse-placement-letter{font-size:3.75rem}.morse-placement-word{font-size:2.4rem}}.topic-track-learning{--topic-track: var(--learning);--topic-track-ink: var(--mode-listen-ink)}.topic-track-survival{--topic-track: var(--survival);--topic-track-ink: var(--mode-free-ink)}.topic-track-tradecraft{--topic-track: var(--tradecraft);--topic-track-ink: var(--mode-read-ink)}.topic-title{overflow-wrap:anywhere}.topic-title:focus{outline:none}.topic .screen-header-glyph .topic-icon{width:32px;height:32px}.topic:not(.topic-morse) .screen-header-track>span{background:var(--topic-track)}.topic:not(.topic-morse) .screen-header.is-banked .screen-header-track>span{background:var(--complete)}.topic-state,.topic-listening,.topic-earned,.topic-history-head{margin:0;font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--muted)}.topic-state{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-xs);color:var(--ink)}.topic-state.is-repair{color:var(--warning)}.topic-unfinished{display:grid;justify-items:start;gap:var(--s-md);margin-top:var(--s-lg)}.topic-unfinished p{color:var(--muted)}.topic-items{margin-top:var(--s-lg)}.topic-items .spine-label{font-size:var(--t-component)}.topic-items .spine-detail{font-size:var(--t-small);line-height:1.45}.topic-items .spine-node{font-family:var(--font-mono);font-size:14px}.topic-items .is-unseen>.spine-node{border-color:var(--spine-ahead);color:var(--muted)}.topic-items .topic-item-group{min-height:56px}.topic-items .topic-item-group .spine-label{font-family:var(--font-mono);font-size:var(--t-component);letter-spacing:.12em}.topic-item-visual{display:grid;gap:var(--s-sm);min-width:0;padding:0 var(--s-sm) var(--s-sm) 70px}.topic-item-visual .visual{margin:0}.topic-tray .mode-tray-stimulus{max-width:100%;min-width:0}.topic-tile-count{font-family:var(--font-mono);font-size:26px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.topic-history{display:grid;gap:var(--s-sm);margin-top:var(--s-xl)}.topic-pips{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.topic-pip{position:relative;display:block;width:16px;height:32px;overflow:hidden;border:1px solid var(--line-strong);border-radius:4px;background:var(--field)}.topic-pip>span{position:absolute;inset:auto 0 0;background:var(--ink)}.topic-earned{margin-top:var(--s-md)}.topic-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--s-xs) var(--s-lg);margin-top:var(--s-xl)}.topic-foot button.sources-link{margin:0}.topic-morse-reference{font-weight:700}.topic-morse .morse-progress-path{margin-top:var(--s-lg)}.topic-morse-top{display:block;height:0}.topic-morse-header{position:sticky;z-index:5;top:0;margin-inline:calc(-1 * var(--s-sm));padding:0 var(--s-sm);background:var(--bg)}.topic-morse-header.is-compact{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"back title actions" "progress progress progress";align-items:center;gap:var(--s-xs) var(--s-sm);padding-top:max(var(--s-sm),env(safe-area-inset-top));padding-bottom:var(--s-sm);border-bottom:1px solid var(--line)}.topic-morse-header.is-compact .screen-header-bar{display:contents}.topic-morse-header.is-compact .screen-header-back{grid-area:back;display:inline-flex;align-items:center;gap:var(--s-xs);white-space:nowrap}.topic-morse-header.is-compact .screen-header-actions{grid-area:actions;margin-left:0}.topic-morse-header.is-compact .screen-header-title-row{grid-area:title}.topic-morse-header.is-compact .screen-header-progress{grid-area:progress}.topic-morse-header.is-compact .topic-title{overflow:hidden;font-size:var(--t-component);white-space:nowrap;text-overflow:ellipsis}.topic-morse-header.is-compact .topic-edit{display:none}.topic-morse .spine-row,.topic-morse .morse-progress-pip,.topic-morse .morse-progress-aside{scroll-margin-top:112px;scroll-margin-bottom:calc(var(--nav-clearance, 0px) + var(--mode-tray-height, 0px))}@media(max-height:420px)and (min-width:560px){.topic-morse-header,.topic-morse-header.is-compact{grid-template-columns:auto minmax(0,1fr) auto auto;grid-template-areas:"back title progress actions";align-items:center;gap:var(--s-xs) var(--s-sm);padding-top:max(var(--s-xs),env(safe-area-inset-top));padding-bottom:var(--s-xs)}.topic-morse-header .screen-header-bar{display:contents}.topic-morse-header .screen-header-back{grid-area:back}.topic-morse-header .screen-header-actions{grid-area:actions;margin-left:0}.topic-morse-header .screen-header-title-row{grid-area:title}.topic-morse-header .screen-header-progress{grid-area:progress}.topic-morse-header .screen-header-track{display:none}.topic-morse-header .topic-title{overflow:hidden;font-size:var(--t-component);white-space:nowrap;text-overflow:ellipsis}.topic-morse .spine-row,.topic-morse .morse-progress-pip,.topic-morse .morse-progress-aside{scroll-margin-top:56px}}@media(min-width:980px){.topic-morse .spine-row,.topic-morse .morse-progress-pip,.topic-morse .morse-progress-aside{scroll-margin-top:184px}}@media(min-width:980px){.topic{max-width:760px}}.lib-head{position:relative;min-height:56px}.lib-list{padding-bottom:calc(56px + var(--s-lg))}.lib-search-box{position:absolute;top:50%;right:0;display:flex;align-items:center;gap:var(--s-xs);width:44px;transform:translateY(-50%);transition:none}.lib-search-box.is-open{width:100%;background:var(--bg)}.lib-search{flex:1;min-width:0;appearance:none}.lib-search::-webkit-search-cancel-button{appearance:none}.lib-search-toggle{flex:none;display:inline-grid;place-items:center;width:44px;min-height:44px;padding:0;border:0;border-radius:var(--r-md);color:var(--muted);background:transparent;box-shadow:none}.lib-search-toggle:hover{color:var(--ink);border-color:transparent;background:var(--surface-2)}.lib-search-toggle:active{box-shadow:none;background:var(--surface-3)}@media(min-width:980px){.lib-search-box.is-open{width:min(100%,380px)}}@media(prefers-reduced-motion:reduce){.lib-search-box{transition:none}}.lib-group{margin-top:var(--s-xl)}.lib-group-rest{margin-top:var(--s-2xl)}.lib-group-rest:first-child{margin-top:var(--s-xl)}.lib-group-bar{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-md);padding-inline:2px}.lib-group-head{margin:0;font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);line-height:1.2;text-transform:uppercase;color:var(--muted)}.lib-group-count{font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);color:var(--subtle)}.lib-group .index{display:grid;gap:var(--s-sm);margin-top:var(--s-sm);border-top:0}.lib-track+.lib-track{margin-top:var(--s-lg)}.lib-track-head{display:flex;align-items:center;gap:var(--s-sm);margin:var(--s-md) 0 0;padding-inline:2px;font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);line-height:1.2;text-transform:uppercase;color:var(--track-hue)}.lib-track-head:after{content:"";flex:1;height:1px;background:var(--line)}.lib-track-head+.index{margin-top:var(--s-sm)}.index-row.lib-row{grid-template-columns:minmax(0,1fr);align-items:start;column-gap:var(--s-md);row-gap:12px;padding:var(--s-md) var(--s-lg) var(--s-md) var(--s-md);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--plate);box-shadow:none;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.index-row.lib-row:after{content:none}.index-row.lib-row.plate-raised{background:var(--plate-raised);box-shadow:var(--shadow-sm)}.index-row.lib-row.plate-repair{border-color:var(--warning)}.index-row.lib-row:hover{border-color:var(--line-hover);background:var(--plate-raised)}.index-row.lib-row.plate-raised:hover{background:var(--surface-3)}.index-row.lib-row.plate-repair:hover{border-color:var(--warning)}.index-row.lib-row:active,.index-row.lib-row.plate-raised:active{transform:translateY(1px);background:var(--surface-3);box-shadow:var(--press)}.index-row.lib-row>.gauge-row,.index-row.lib-row>.lib-row-reading{grid-column:1 / -1}.index-row.lib-row .index-title{font-size:1.25rem;font-weight:700;line-height:1.2}.index-row.lib-row.has-topic-icon{grid-template-columns:28px minmax(0,1fr);align-items:center}.index-row.lib-row.has-topic-icon .index-title{min-width:0}.topic-icon{display:block;flex:none;background:var(--track-hue, var(--topic-track, var(--muted)));-webkit-mask:var(--topic-icon-src) center / contain no-repeat;mask:var(--topic-icon-src) center / contain no-repeat}.index-row.lib-row .topic-icon{width:28px;height:28px}.index-row.lib-row .gauge-row{display:grid;min-width:0;gap:var(--s-xs);--gauge-delay: calc(var(--order, 0) * 24ms + .18s)}.index-row.lib-row .gauge-row .gauge-track{width:100%;min-width:0;height:8px;border:1px solid var(--line);border-radius:4px;background:var(--field);box-shadow:none}.index-row.lib-row .gauge-row .gauge-fill{border-radius:0}.index-row.lib-row .gauge-label,.lib-row-reading{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:700;letter-spacing:var(--track-readout);line-height:1.3;text-transform:uppercase;color:var(--muted)}.lib-repair{color:var(--warning)}.lib-repair:before{content:"◆ "}@media(prefers-reduced-motion:reduce){.lib-entry,.index-row.lib-row .gauge-fill{animation:none}.lib-fab:hover svg{transform:none}.index-row.lib-row{transition:none}}.lib-blank{display:grid;justify-items:start;gap:var(--s-lg);margin-top:var(--s-xl)}.lib-blank p{color:var(--ink)}.lib-blank-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-md)}.lib-fab{position:fixed;right:max(var(--s-lg),env(safe-area-inset-right));bottom:calc(var(--nav-clearance, 80px) + var(--s-lg));z-index:25;width:56px;height:56px;padding:0;display:inline-grid;place-items:center;border-radius:var(--r-pill);box-shadow:var(--shadow-sm);transition:transform var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.lib-fab svg{transition:transform var(--t-base) var(--ease)}.lib-fab:hover svg{transform:rotate(90deg)}.lib-fab:active{transform:scale(.94);box-shadow:var(--press-lit)}@media(min-width:980px){.lib-fab{bottom:var(--s-2xl)}}.lib-row .index-title{min-width:0;overflow-wrap:anywhere}.roles-page{width:100%;max-width:860px;min-width:0}.roles-overview{min-width:0}.roles-intro{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-sm) var(--s-lg);margin:var(--s-sm) 0 var(--s-xl)}.roles-intro p{margin:0;color:var(--muted);font-size:var(--t-body)}.roles-collection-count,.role-collection-status,.roles-award-count,.roles-award-note,.roles-award-version,.roles-path-count{font-family:var(--font-mono);font-size:var(--t-readout);font-variant-numeric:tabular-nums;color:var(--muted)}.roles-collection-count{white-space:nowrap}.role-collection{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-sm);padding:0;margin:0;list-style:none}.role-collection-entry{min-width:0}.role-collection-button{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--s-xs);width:100%;min-width:0;padding:var(--s-sm) 2px;box-shadow:none;border:1px solid transparent;border-radius:var(--r-lg);background:transparent;color:var(--ink);text-align:center}.role-collection-button:hover{border-color:var(--line);background:var(--surface)}.role-collection-button:active{background:var(--surface-2)}.role-collection-button:focus-visible{outline:2px solid var(--action);outline-offset:2px}.role-collection-badge{display:block;width:min(100%,80px);height:80px;object-fit:contain}.role-collection-name{max-width:100%;overflow-wrap:anywhere;font-size:var(--t-small);font-weight:var(--w-component)}.role-collection-status{overflow-wrap:anywhere;line-height:1.4}.backdrop.role-detail-dialog.is-centred .sheet{width:min(100%,740px);max-height:min(88dvh,880px)}.role-detail-dialog .sheet-body{padding:var(--s-lg) var(--s-xl) calc(var(--s-xl) + env(safe-area-inset-bottom))}.role-detail-dialog .sheet-head h2{font-size:var(--t-section)}.role-detail-content{display:grid;gap:var(--s-lg);min-width:0}.roles-award{display:grid;grid-template-columns:minmax(96px,148px) minmax(0,1fr);gap:var(--s-lg);align-items:start}.roles-medallion{width:100%;height:auto;aspect-ratio:1;object-fit:contain}.roles-award-copy{display:grid;gap:var(--s-xs);min-width:0}.roles-description{margin:0 0 var(--s-xs);color:var(--ink);font-size:var(--t-body);overflow-wrap:anywhere}.roles-award-status{overflow-wrap:anywhere;font-size:var(--t-component)}.roles-award-count,.roles-award-note,.roles-award-version{margin:0;overflow-wrap:anywhere}.roles-award-note{line-height:1.5}.roles-continue{min-height:var(--control-h-lg);width:100%;padding-inline:var(--s-md);text-align:center;white-space:normal;overflow-wrap:anywhere}.roles-pathways{display:grid;gap:var(--s-xl)}.roles-path-heading{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:var(--s-sm);padding-inline:2px}.roles-path-heading h3{margin:0;font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;overflow-wrap:anywhere;color:var(--muted)}.roles-path-count{margin:0;white-space:nowrap;color:var(--subtle)}.roles-topic-list{display:grid;gap:var(--s-sm);margin:var(--s-sm) 0 0;padding:0;list-style:none}button.role-topic-plate{display:grid;grid-template-columns:1.2em minmax(0,1fr) auto;align-items:center;gap:var(--s-sm) var(--s-md);width:100%;min-height:56px;padding:var(--s-md);border:1px solid var(--line);border-radius:var(--r-lg);text-align:left;color:var(--ink);background:var(--plate);box-shadow:none}button.role-topic-plate:not(:disabled):hover{border-color:var(--line-hover);background:var(--surface-2)}button.role-topic-plate:not(:disabled):active{background:var(--surface-3);box-shadow:var(--press)}button.role-topic-plate:disabled{color:var(--subtle);cursor:default}button.role-topic-plate:focus-visible{outline:2px solid var(--action);outline-offset:2px}.role-topic-title{font-weight:var(--w-component);overflow-wrap:anywhere}.role-topic-state{display:inline-flex;gap:8px;justify-content:flex-end;font-family:var(--font-mono);font-size:var(--t-readout);text-align:right;color:var(--muted)}.role-topic-mark{font-size:1.2rem;color:var(--subtle)}.role-topic-mark.is-done{color:var(--ok)}.roles-boundary{margin:0;padding-inline:2px;font-size:var(--t-small);color:var(--muted)}.roles-award-version{padding-inline:2px}@media(min-width:700px){.role-collection{column-gap:var(--s-lg)}.role-collection-badge{height:106px;width:min(100%,106px)}.role-collection-name{font-size:var(--t-component)}}@media(max-width:699px){.backdrop.role-detail-dialog.is-centred{padding:0;align-items:stretch}.backdrop.role-detail-dialog.is-centred .sheet{width:100%;height:100dvh;max-height:none;border-radius:0;border-inline:0}.role-detail-dialog .sheet-head{padding-top:calc(var(--s-md) + env(safe-area-inset-top))}.role-detail-dialog .sheet-body{padding:var(--s-md) var(--s-lg) calc(var(--s-2xl) + env(safe-area-inset-bottom))}.roles-award{grid-template-columns:96px minmax(0,1fr);gap:var(--s-md)}.role-detail-dialog .sheet-head h2{font-size:var(--t-component)}}@media(max-width:370px){.role-collection-button{padding-inline:2px}.role-collection-badge{height:72px;width:min(100%,72px)}.roles-award{grid-template-columns:80px minmax(0,1fr);gap:var(--s-sm)}button.role-topic-plate{grid-template-columns:1.2em minmax(0,1fr)}.role-topic-state{grid-column:2;grid-row:2;justify-content:flex-start;text-align:left}}@media(prefers-reduced-motion:reduce){.role-collection-button,.role-detail-dialog .sheet{transition:none;animation:none}}.profile-page{display:grid;gap:var(--s-lg);width:100%;max-width:720px}.profile-page>*{min-width:0}.profile-section{display:grid;gap:var(--s-md);padding:var(--s-lg)}.profile-section h2{margin:0;font-size:var(--t-component);font-weight:var(--w-component);letter-spacing:0;line-height:1.3}.profile-readouts{display:grid;margin:0}.profile-readout{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s-xs) var(--s-md);padding:var(--s-sm) 0;border-top:1px solid var(--line)}.profile-readout:first-child{border-top:0;padding-top:0}.profile-readout dt{font-size:var(--t-small);color:var(--muted)}.profile-readout dd{margin:0;font-size:var(--t-small);font-weight:700;text-align:right;overflow-wrap:anywhere}.profile-actions{display:flex;flex-wrap:wrap;gap:var(--s-sm)}.profile-actions>button{flex:1 1 9rem}.profile-message{margin:0;font-size:var(--t-small);color:var(--muted);overflow-wrap:anywhere}.profile-message.error{color:var(--danger)}.profile-message:empty{display:none}.profile-recovered{display:grid;gap:var(--s-sm);padding-top:var(--s-md);border-top:1px solid var(--line)}.profile-recovered-text{margin:0;font-size:var(--t-small);color:var(--muted)}.profile-ids{display:grid;gap:var(--s-xs);margin:0;padding:0;list-style:none}.catalog-notice-id{overflow-wrap:anywhere;font-size:var(--t-small);color:var(--muted)}.profile-danger-zone{border-color:var(--line)}button.profile-danger{width:100%;border-color:var(--danger);color:var(--danger);background:var(--plate);box-shadow:none}button.profile-danger:hover:not(:disabled){border-color:var(--danger-2);color:var(--danger-ink);background:var(--danger)}button.profile-danger:active:not(:disabled){box-shadow:var(--press)}.profile-toggle{display:flex;gap:var(--s-sm);align-items:center;min-height:44px;padding-top:var(--s-xs);border-top:1px solid var(--line);font-size:var(--t-small);cursor:pointer}.profile-toggle input{width:1.1rem;height:1.1rem;accent-color:var(--accent)}.profile-about{margin:0;padding-inline:2px;font-size:var(--t-readout);color:var(--subtle)}.sequence-card{display:block;width:100%;--sequence-ink: var(--learning)}.sequence-card.track-survival{--sequence-ink: var(--survival)}.sequence-card.track-tradecraft{--sequence-ink: var(--tradecraft)}.sequence-word{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:.12em;font-size:2.25rem;font-weight:600;line-height:1.3}.sequence-letter{color:var(--subtle)}.sequence-letter.is-answered{color:var(--complete)}.sequence-letter.is-current{color:var(--sequence-ink);font-size:1.65em}.sequence-card.is-medium .sequence-word{font-size:1.7rem}.sequence-card.is-long .sequence-word{font-size:1.2rem}.test-done .test-outcome{max-width:34ch;margin:0 auto;color:var(--muted)}.test-done .session-round-reading:focus{outline:none}.test-done .test-missed{display:grid;justify-items:center;gap:var(--s-sm);max-width:100%}.test-done .test-missed-head{margin:0;color:var(--muted);font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase}.test-done .test-missed-list{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-xs);margin:0;padding:0;list-style:none}.test-done .test-missed-chip,.test-done .test-missed-more{display:inline-flex;align-items:baseline;gap:var(--s-xs);max-width:100%;padding:var(--s-xs) var(--s-md);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-2);font-size:var(--t-small);overflow-wrap:anywhere}.test-done .test-missed-prompt{font-weight:600}.test-done .test-missed-answer{color:var(--muted)}.test-done .test-missed-more{background:transparent;color:var(--muted)}.save-bar{position:relative;width:min(100%,22rem);height:4px;margin:var(--s-md) auto 0;overflow:hidden;border-radius:2px;background:var(--line)}.save-bar:after{content:"";position:absolute;inset:0 auto 0 0;width:40%;border-radius:inherit;background:var(--accent);animation:save-bar-travel 1.4s ease-in-out infinite}@keyframes save-bar-travel{0%{transform:translate(-100%)}to{transform:translate(250%)}}@media(prefers-reduced-motion:reduce){.save-bar:after{animation:none;width:100%;background:var(--line-strong)}}.grade-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-sm)}.grade-pair button{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-sm);min-height:var(--control-h-lg)}.grade-miss{color:var(--danger-2)}.grade-arrow{font-family:var(--font-mono);font-weight:var(--w-label)}@media(max-height:560px){.grade-pair button{min-height:var(--control-h)}}.card-stage{min-width:0;position:relative;display:grid;perspective:1400px;margin-block-start:auto}.rapid-session>.recall-actions{margin-block-start:auto}.grade-cue{position:absolute;top:var(--s-md);z-index:2;display:flex;align-items:center;gap:var(--s-xs);padding:var(--s-sm) var(--s-md);border:1px solid currentcolor;border-radius:var(--r-pill);background:var(--surface);font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;white-space:nowrap;pointer-events:none;transition:background-color var(--t-fast) var(--ease),scale var(--t-fast) var(--ease)}.grade-cue-miss{left:var(--s-md);color:var(--danger-2)}.grade-cue-hit{right:var(--s-md);color:var(--ok)}.grade-cue-arrow{font-size:1.1rem;line-height:1}.card-stage.is-armed-incorrect .grade-cue-miss,.card-stage.is-armed-correct .grade-cue-hit{background:currentcolor;color:var(--bg);scale:1.07}.card-stage.is-armed-incorrect .grade-cue-miss{border-color:var(--danger-2);background:var(--danger-2)}.card-stage.is-armed-correct .grade-cue-hit{border-color:var(--ok);background:var(--ok)}button.flip-card{min-width:0;width:100%;min-height:clamp(300px,58svh,500px);display:grid;padding:0;border:0;border-radius:var(--r-xl);color:var(--ink);background:transparent;box-shadow:none;cursor:pointer;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.flip-card.is-dragging{cursor:grabbing}button.flip-card:hover{border-color:transparent;background:transparent;box-shadow:none}button.flip-card:active{transform:none;background:transparent}.flip-inner{min-width:0;position:relative;display:grid;transform-style:preserve-3d;transition:transform var(--t-flip) var(--ease-flip)}.flip-card.is-revealed .flip-inner{transform:rotateY(180deg)}.flip-face{min-width:0;grid-area:1 / 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-lg);padding:var(--s-xl);border:1px solid var(--line-strong);border-radius:var(--r-xl);backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:var(--shadow-sm)}.flip-front{background:var(--surface-2)}.flip-back{position:relative;overflow:hidden;transform:rotateY(180deg);border-color:var(--line-hover);background:var(--surface-3)}.flip-label{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--muted)}.flip-back .flip-label{color:var(--ink)}.flip-value{min-width:0;max-width:100%;font-family:var(--font-display);font-size:clamp(3rem,16vw,6.5rem);font-weight:var(--w-display);line-height:1.02;letter-spacing:-.03em;text-align:center;overflow-wrap:break-word;text-wrap:balance}.flip-value-answer{font-size:clamp(2.3rem,11vw,5rem);line-height:1.1}.flip-value.is-medium{max-width:22ch;font-size:clamp(1.7rem,7.5vw,3rem);line-height:1.16;letter-spacing:-.025em}.flip-value.is-long{max-width:34ch;font-family:var(--font);font-size:clamp(1.15rem,4.6vw,1.65rem);font-weight:600;line-height:1.35;letter-spacing:-.01em;text-align:left;text-wrap:pretty}.recall-actions{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:var(--s-sm);opacity:0;transform:translateY(6px);pointer-events:none;transition:opacity var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.recall-actions.is-visible{opacity:1;transform:none;pointer-events:auto;transition-delay:calc(var(--t-flip) * .45)}@media(min-width:680px){button.flip-card{min-height:430px}}@media(orientation:landscape)and (max-height:560px){.session.session-frame.rapid-session:not(.is-progressive){display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,.46fr);grid-template-rows:auto minmax(0,1fr);height:100svh;min-height:0;column-gap:var(--s-md)}.rapid-session:not(.is-progressive) .session-frame-header{grid-column:1 / -1}.rapid-session:not(.is-progressive) .card-stage{grid-column:1;grid-row:2;min-height:0;margin:0}button.flip-card{height:100%;min-height:0}.flip-inner,.flip-face{min-height:0}.flip-face{gap:var(--s-xs);padding:var(--s-md);overflow:hidden}.flip-value{font-size:clamp(2rem,15vh,3.4rem)}.flip-value-answer{font-size:clamp(1.4rem,10vh,2.4rem)}.flip-value.is-medium{font-size:clamp(1.1rem,7vh,1.6rem)}.flip-value.is-long{font-size:clamp(.95rem,5vh,1.15rem)}.rapid-session>.recall-actions{grid-column:2;grid-row:2;align-self:end;margin:0}.recall-actions{grid-template-columns:1fr}.grade-cue{padding:var(--s-xs) var(--s-sm);font-size:var(--t-readout)}}@media(prefers-reduced-motion:reduce){.flip-inner,.recall-actions,.grade-cue{transition:none}.recall-actions.is-visible{transition-delay:0s}.card-stage.is-armed-incorrect .grade-cue-miss,.card-stage.is-armed-correct .grade-cue-hit{scale:1}}.test-frame-reading{display:block;text-align:end;font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);font-variant-numeric:tabular-nums;color:var(--muted)}.progressive-card{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;gap:var(--s-md);min-width:0;text-align:center}.progressive-card>.test-task,.choice-card>.test-task{margin-block-start:auto}.progressive-card>.test-answer,.progressive-card>.test-feedback,.choice-card>.choice-options,.choice-card>.audio-response{margin-block-start:auto}.progressive-card>.test-feedback,.choice-card>.test-feedback{align-self:stretch;text-align:start}.test-task{margin:0;font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--ink)}.test-prompt{margin:0;font-family:var(--font-display);font-size:clamp(3.4rem,18vw,5.5rem);font-weight:var(--w-display);line-height:.9;overflow-wrap:anywhere}.test-prompt.is-pattern{font-size:clamp(1.7rem,9vw,2.4rem);line-height:1}.test-prompt .test-pattern{color:var(--ink)}.test-support{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--s-sm) var(--s-md);margin:0;padding:var(--s-md);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface-2)}.test-length{font-size:var(--t-small);color:var(--muted)}.test-answer{display:grid;width:100%;margin-block-start:var(--s-sm)}.test-entry{display:grid;justify-items:center;gap:var(--s-sm)}.test-entry .test-entry-input{inline-size:5.5rem;min-height:72px;padding:var(--s-sm);font-family:var(--font-display);font-size:2.4rem;text-align:center;text-transform:uppercase}.test-entry-legend{margin:0;font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--subtle)}@media(max-height:560px){.progressive-card{gap:var(--s-sm)}.test-prompt{font-size:clamp(2rem,11vh,2.6rem)}.test-prompt.is-pattern{font-size:clamp(1.3rem,6vh,1.8rem)}.test-support{padding:var(--s-sm) var(--s-md)}.progressive-card .morse-key-entry{min-height:1.2em;font-size:1.3rem}.test-answer{margin-block-start:0}.test-entry-input{min-height:var(--control-h-lg)}.progressive-card:has(>.test-feedback)>.test-task,.choice-card:has(>.test-feedback:not(.is-correct))>:not(.test-feedback,.test-prompt){display:none}.progressive-card:has(>.test-feedback)>.test-prompt,.choice-card:has(>.test-feedback:not(.is-correct))>.test-prompt{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.test-feedback{gap:var(--s-xs);padding:var(--s-sm) var(--s-md)}.test-verdict{font-size:var(--t-component)}.progressive-card>.test-feedback{grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:center;column-gap:var(--s-lg)}.progressive-card>.test-feedback>.test-correction{display:contents}.progressive-card>.test-feedback>*{grid-column:1}.progressive-card>.test-feedback .test-correction-support{grid-column:2;grid-row:1 / span 3}.progressive-card>.test-feedback>.test-verdict{grid-row:1}.progressive-card .test-correction-row{grid-column:1;grid-row:2;grid-template-columns:auto minmax(0,1fr);gap:var(--s-sm)}.progressive-card>.test-feedback>.test-next{grid-row:3}.progressive-card>.test-feedback>.test-ladder{grid-column:1 / -1;grid-row:4}.test-feedback .test-next{min-height:var(--control-h);margin-block-start:0}}.test-feedback{display:grid;gap:var(--s-sm);margin-block-start:var(--s-sm);padding:var(--s-lg);border-color:var(--line-strong);background:var(--surface-2)}.test-feedback.is-correct{justify-items:start;gap:var(--s-xs)}.test-verdict{margin:0;font-family:var(--font-display);font-size:var(--t-section);font-weight:var(--w-section);color:var(--danger-2)}.test-feedback.is-correct .test-verdict{color:var(--ok)}.test-ladder{margin:0;color:var(--subtle);font-family:var(--font-mono);font-size:var(--t-readout);letter-spacing:var(--track-readout);line-height:1.5}.test-correction{display:grid;gap:var(--s-xs)}.test-correction-row{display:grid;grid-template-columns:6.5rem minmax(0,1fr);align-items:baseline;gap:var(--s-md);margin:0}.test-correction-label{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--subtle)}.test-correction-value{font-size:1.3rem;letter-spacing:.14em;color:var(--ink)}.test-correction-glyph{font-family:var(--font-display);font-size:1.6rem;font-weight:var(--w-display);line-height:1;letter-spacing:0;color:var(--ink)}.test-next{min-height:var(--control-h-lg);margin-block-start:var(--s-sm)}.choice-card{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;gap:var(--s-md);min-width:0;text-align:center}.choice-card>.choice-options,.choice-card>.audio-response{align-self:stretch;text-align:start}.test-prompt.is-question{font-size:var(--t-section);line-height:1.3;letter-spacing:0}.choice-card .visual{max-width:min(100%,13rem)}.choice-options{display:grid;gap:var(--s-sm)}.choice-option{display:block;width:100%;min-height:var(--control-h-lg);padding:var(--s-sm) var(--s-md);text-align:start;overflow-wrap:anywhere}.choice-option.is-answer{border-color:var(--ok)}.choice-option.is-wrong{border-color:var(--danger-2)}.choice-value{font-size:var(--t-component);letter-spacing:0;overflow-wrap:anywhere}@media(max-height:560px){.choice-card{gap:var(--s-sm)}.choice-option{min-height:var(--control-h)}}@media(max-height:560px){.session-frame .morse-character-support-glyph{font-size:clamp(2rem,12vh,2.8rem)}.session-frame .morse-character-support-notation{font-size:clamp(1.2rem,7vh,1.6rem)}}.morse-checkpoint-target{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;gap:var(--s-md);width:min(100%,32rem);margin-inline:auto;outline:none}.morse-checkpoint-target>.lesson-task{margin:auto 0 0}.morse-checkpoint-target>.morse-checkpoint-answer,.morse-checkpoint-target>.morse-checkpoint-feedback,.morse-checkpoint-target>.session-miss{margin-block-start:auto}.morse-checkpoint-letter,.morse-checkpoint-word{margin:0;font-family:var(--font-display);font-weight:var(--w-page);line-height:1;text-align:center}.morse-checkpoint-letter{font-size:clamp(4rem,22vw,8rem)}.morse-checkpoint-word{display:flex;flex-wrap:wrap;justify-content:center;gap:.08em;max-width:100%;font-size:clamp(2.2rem,13vw,5rem);letter-spacing:.03em}.morse-checkpoint-word span{display:inline-grid;place-items:center;min-width:.8em;padding:.08em .03em;border-radius:var(--r-sm)}.morse-checkpoint-word .is-current{box-shadow:inset 0 -.14em 0 var(--ink)}.morse-checkpoint-feedback{display:grid;justify-items:center;gap:var(--s-xs);width:min(100%,24rem);min-height:5rem;background:var(--surface-2);text-align:center}.morse-checkpoint-feedback.is-correct{border-color:var(--ok)}.morse-checkpoint-feedback.is-wrong{border-color:var(--danger)}.morse-checkpoint-feedback .lesson-next{margin-block-start:var(--s-sm);min-width:10rem}.morse-checkpoint-feedback strong,.morse-checkpoint-feedback span,.morse-checkpoint-summary p{margin:0}.morse-checkpoint-summary{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;gap:var(--s-md);text-align:center}.morse-checkpoint-summary>.session-prompt-heading{margin-block-start:auto}.morse-checkpoint-summary>.lesson-exits,.morse-checkpoint-summary>button{align-self:stretch;margin-block-start:auto}.morse-checkpoint-summary .session-prompt-heading{font-family:var(--font-display);font-size:var(--t-page);line-height:1.08}.morse-checkpoint-summary p{color:var(--muted)}@media(max-width:380px){.morse-checkpoint-word{font-size:clamp(2rem,12vw,3.5rem)}}@media(prefers-reduced-motion:reduce){.morse-checkpoint-word .is-current{transition:none}}.morse-checkpoint-target{animation:morse-target-in var(--t-base) var(--ease) both}.morse-checkpoint-answer{display:grid;width:100%}.morse-checkpoint-feedback{animation:morse-target-in var(--t-fast) var(--ease) both}@media(prefers-reduced-motion:reduce){.morse-checkpoint-target,.morse-checkpoint-feedback{animation:none}}@media(orientation:landscape)and (max-height:560px)and (min-width:600px){.morse-lesson.morse-checkpoint[data-step] .morse-checkpoint-target{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);grid-template-rows:auto 1fr;align-content:center;align-items:center;gap:var(--s-sm) var(--s-lg);width:100%}.morse-checkpoint-target>.lesson-task,.morse-checkpoint-target>.morse-checkpoint-answer,.morse-checkpoint-target>.morse-checkpoint-feedback{margin:0}.morse-checkpoint-target>.lesson-task{grid-column:1;grid-row:1;align-self:end}.morse-checkpoint-letter,.morse-checkpoint-word{grid-column:1;grid-row:2;align-self:start}.morse-checkpoint-letter{font-size:5rem}.morse-checkpoint-word{font-size:2.4rem}.morse-checkpoint-target>.morse-checkpoint-answer,.morse-checkpoint-target>.morse-checkpoint-feedback{grid-column:2;grid-row:1 / 3;min-width:0}}.lesson-title{margin:0;font-family:var(--font-display);font-size:var(--t-page);font-weight:var(--w-page);line-height:1.08;text-wrap:balance}.lesson-lede,.lesson-foot{max-width:46ch;margin:0;color:var(--muted)}.lesson-foot{font-size:var(--t-small);color:var(--subtle)}.lesson-stage{display:grid;justify-items:start;gap:var(--s-sm);padding:var(--s-lg);background:var(--surface-2)}.lesson-glyph{margin:0;font-family:var(--font-display);font-size:clamp(3.4rem,18vw,5.5rem);font-weight:var(--w-display);line-height:.9;color:var(--ink)}.lesson-visual{display:flex;align-items:center;gap:var(--s-sm);width:100%}.lesson-visual .morse-mnemonic{display:block;flex:1 1 auto;min-width:0;max-width:22em;height:auto}.lesson-canonical,.lesson-length{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-sm);margin:0}.lesson-introduce,.lesson-check,.lesson-feedback{display:grid;gap:var(--s-md)}.morse-lesson .lesson-introduce,.morse-lesson .lesson-check{flex:1 0 auto;display:flex;flex-direction:column;gap:var(--s-md)}.lesson-introduce>.lesson-task,.lesson-check>.lesson-task,.morse-lesson>.lesson-title{margin-block-start:auto}.lesson-introduce>.lesson-next,.lesson-check>.lesson-answer,.lesson-check>.lesson-options,.morse-lesson>.lesson-exits,.morse-lesson>.lesson-feedback{margin-block-start:auto}.lesson-introduce>.lesson-task,.lesson-check>.lesson-task,.lesson-check>.lesson-glyph,.morse-lesson>.lesson-title{align-self:center;text-align:center}.lesson-check>.lesson-support,.lesson-check>.lesson-listening-stimulus{justify-content:center}.lesson-task{margin:0;font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--ink)}.lesson-task.is-review{justify-self:center;align-self:center;display:inline-flex;align-items:center;gap:.5em;padding:.35em .8em .35em .6em;border:1px solid color-mix(in srgb,var(--learning) 60%,var(--surface-2));border-radius:var(--r-pill);background:color-mix(in srgb,var(--learning) 12%,var(--surface-2));font-family:var(--font-display);font-size:var(--t-section);font-weight:var(--w-section);letter-spacing:.01em;text-transform:none;color:var(--learning)}.review-mark{inline-size:1em;block-size:1em;flex:none;animation:review-mark-turn .52s var(--ease) both}@keyframes review-mark-turn{0%{transform:rotate(-190deg);opacity:0}to{transform:rotate(0);opacity:1}}.lesson-check[data-kind=review] .lesson-glyph{font-size:clamp(4.5rem,26vw,7.5rem);color:var(--learning)}.lesson-check[data-kind=review] .lesson-listening-stimulus{border-color:var(--learning);background:color-mix(in srgb,var(--learning) 8%,var(--surface-2))}@media(prefers-reduced-motion:reduce){.review-mark{animation:none}}.lesson-support,.lesson-listening-stimulus{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-sm) var(--s-md);padding:var(--s-md);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface-2)}.lesson-listening-stimulus{border-color:var(--line-hover);background:var(--surface-2)}.lesson-length{font-size:var(--t-small);color:var(--muted)}.lesson-options{display:grid;gap:var(--s-sm)}.lesson-option{min-height:64px;padding:var(--s-md);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface-3);color:var(--ink);font-family:var(--font-mono);font-size:1.3rem;letter-spacing:.16em}.lesson-letter-option{font-family:var(--font-display);font-size:1.6rem;font-weight:var(--w-section);letter-spacing:normal}.lesson-audio-skip{align-self:center}.lesson-next{min-height:var(--control-h-lg)}.lesson-feedback .lesson-next{margin-block-start:var(--s-sm);justify-self:stretch}.lesson-feedback{padding:var(--s-lg);border-color:var(--line-strong);background:var(--surface-2)}.lesson-verdict{margin:0;font-family:var(--font-display);font-size:var(--t-section);font-weight:var(--w-section);color:var(--danger-2)}.lesson-feedback.is-correct .lesson-verdict{color:var(--ok)}.lesson-correction{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4em;margin:0;color:var(--muted)}.lesson-grammar{max-width:46ch;margin:0;font-size:var(--t-small);color:var(--muted)}.lesson-exits{display:grid;gap:var(--s-sm)}.lesson-check,.lesson-introduce,.lesson-feedback{animation:morse-target-in var(--t-base) var(--ease) both}.lesson-answer{display:grid;width:100%}.lesson-feedback.is-correct{display:grid;justify-items:start;gap:var(--s-xs)}@media(prefers-reduced-motion:reduce){.lesson-check,.lesson-introduce,.lesson-feedback{animation:none}}@media(max-height:560px){.morse-lesson .lesson-glyph,.lesson-check[data-kind=review] .lesson-glyph{font-size:clamp(2.2rem,13vh,3.2rem)}.lesson-task.is-review{font-size:var(--t-component)}.lesson-stage{padding:var(--s-sm) var(--s-md)}.lesson-support,.lesson-listening-stimulus{padding:var(--s-xs) var(--s-md)}.lesson-options{grid-template-columns:repeat(auto-fit,minmax(4rem,1fr))}.lesson-option{min-height:var(--control-h);padding:var(--s-xs)}.morse-lesson .lesson-introduce,.morse-lesson .lesson-check{gap:var(--s-xs)}.lesson-stage .lesson-glyph{font-size:clamp(2.6rem,18vh,4rem)}.lesson-feedback{gap:var(--s-xs);padding:var(--s-sm) var(--s-md)}.lesson-verdict{font-size:var(--t-component)}.lesson-next{min-height:var(--control-h)}}@media(orientation:landscape)and (max-height:560px){.lesson-stage{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--s-xs) var(--s-lg)}.lesson-stage>.lesson-glyph{grid-row:1 / span 3}.lesson-stage>:not(.lesson-glyph){grid-column:2}}.lesson-save-hold{display:grid;gap:var(--s-sm);padding:var(--s-lg);background:var(--surface-2);color:var(--muted)}.practice-stage{flex:1 0 auto;display:flex;flex-direction:column;gap:var(--s-md);width:min(100%,34rem);margin-inline:auto}.practice-stage>.practice-question{margin-block-start:auto}.practice-stage>.practice-reveal,.practice-stage>.practice-grade,.practice-run>.practice-feedback{margin-block-start:auto}.practice-question,.practice-answer{display:grid;gap:var(--s-xs);padding:var(--s-lg);background:var(--surface-2)}.practice-question:focus-visible{outline:2px solid var(--line-hover);outline-offset:2px}.practice-answer{border-color:var(--line-strong)}.practice-label{font-size:var(--t-label);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.practice-value{font-family:var(--font-display);font-size:var(--t-page);line-height:1.1;overflow-wrap:anywhere}.practice-value.is-medium{font-size:var(--t-section)}.practice-value.is-long{font-size:var(--t-component)}.practice-reveal{min-height:var(--control-h-lg)}.practice-feedback{width:min(100%,34rem);margin-inline:auto}.practice-feedback .practice-feedback-answer{font-family:var(--font-display);font-size:var(--t-section);letter-spacing:0;overflow-wrap:anywhere}.practice-summary{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;gap:var(--s-md);width:min(100%,34rem);margin-inline:auto;text-align:center}.practice-summary>.session-prompt-heading{margin-block-start:auto}.practice-summary>:last-child{align-self:stretch;margin-block-start:auto}.practice-summary .session-prompt-heading{margin-inline:0;margin-block-end:0;font-family:var(--font-display);font-size:var(--t-page);line-height:1.08}.practice-summary-actions{display:grid;gap:var(--s-sm)}.practice-summary .session-prompt-heading:focus{outline:none}@media(max-height:560px){.practice-stage{gap:var(--s-xs)}.practice-question,.practice-answer{padding:var(--s-sm) var(--s-md)}.practice-value{font-size:var(--t-section)}.practice-reveal{min-height:var(--control-h)}}.copy-run>.fluency-head{margin-block-start:auto}.copy-run>.copy-start{align-self:stretch;margin-block-start:auto;min-height:var(--control-h-lg)}.fluency-head{display:grid;gap:var(--s-sm);width:min(100%,36rem);margin-inline:auto}.fluency-head .session-prompt-heading{margin:0;outline:none}.copy-answer{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s-sm);width:100%}.copy-input{min-width:0;font-size:var(--t-component);letter-spacing:.04em;text-transform:uppercase}.copy-input::placeholder{text-transform:none;letter-spacing:0}.copy-expected{display:flex;flex-wrap:wrap;justify-content:center;gap:.2em .45em;margin:0;font-family:var(--font-display);font-size:clamp(1.4rem,6vw,2.2rem);line-height:1.15;letter-spacing:.03em}.copy-expected .is-wrong-char{color:var(--danger-2);text-decoration:underline;text-underline-offset:.15em}.copy-table{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,8.5rem),1fr));gap:var(--s-sm);width:min(100%,36rem);margin:0 auto;padding:0;list-style:none}.copy-table-entry{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-sm);width:100%;min-height:var(--control-h);padding:var(--s-xs) var(--s-md);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink)}.copy-table-glyph{font-size:var(--t-component);font-weight:var(--w-section)}.copy-table-pattern{color:var(--muted);font-size:var(--t-small);white-space:nowrap}.fluency-target{flex:1 0 auto;display:flex;flex-direction:column;align-items:center;gap:var(--s-md);width:min(100%,32rem);margin-inline:auto}.fluency-target>.lesson-task{margin:auto 0 0}.fluency-target>.fluency-answer-area,.fluency-target>.copy-answer,.fluency-target>.fluency-feedback:not(.copy-feedback),.fluency-target>.session-miss{margin-block-start:auto}.fluency-listen{display:grid;justify-items:center;gap:var(--s-sm)}.fluency-miss>.fluency-answer{justify-self:center}.fluency-shape{display:flex;align-items:center;gap:8px;margin:0;line-height:0}.fluency-shape>span{display:block;width:10px;height:10px;border-radius:50%;background:var(--line-strong);font-size:0}.fluency-shape>.is-current{background:var(--session-colour, var(--ink))}.fluency-audio-error{margin:0;color:var(--warning);font-size:var(--t-small);text-align:center}.fluency-answer-area{width:100%}.fluency-feedback{display:grid;justify-items:center;gap:var(--s-sm);width:100%;background:transparent;text-align:center}.fluency-feedback.is-correct{border-color:var(--ok)}.fluency-feedback.is-wrong{border-color:var(--danger)}.fluency-feedback strong{font-size:var(--t-label);text-transform:uppercase;letter-spacing:.08em}.fluency-feedback.is-correct strong{color:var(--ok)}.fluency-feedback.is-wrong strong{color:var(--danger-2)}.fluency-answer{display:flex;flex-wrap:wrap;justify-content:center;gap:.06em;font-family:var(--font-display);font-size:clamp(2rem,11vw,3.4rem);line-height:1;letter-spacing:.04em}.fluency-answer .is-wrong-char{color:var(--danger-2)}.free-play-tabs{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-sm);width:min(100%,36rem);margin-inline:auto}.free-play-body{flex:1 0 auto;display:flex;flex-direction:column;gap:var(--s-md);width:min(100%,36rem);margin-inline:auto}.free-play-body>.free-play-output,.free-play-body>.free-play-text{margin-block-start:auto}.free-play-body>.morse-key-input,.free-play-text~.free-play-actions{margin-block-start:auto}.free-play-body .note{margin:0;text-align:center}.free-play-output{min-height:3.2em;margin:0;padding:var(--s-md);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);font-size:clamp(1.4rem,6vw,2rem);line-height:1.3;letter-spacing:.05em;white-space:pre-wrap;overflow-wrap:anywhere}.free-play-placeholder{color:var(--placeholder);font-size:var(--t-component);letter-spacing:0}.free-play-unknown{margin-inline:.15em;color:var(--danger-2);font-size:.6em;vertical-align:middle}.free-play-cursor{color:var(--session-colour, var(--ink))}.free-play-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-sm)}.free-play-actions>button{flex:1 1 auto;padding-inline:var(--s-sm)}.free-play-text{font-size:var(--t-component);text-transform:uppercase}.free-play-text::placeholder{text-transform:none}@media(max-width:480px){.copy-answer{grid-template-columns:minmax(0,1fr)}}.fluency-head,.free-play-body{min-width:0;overflow-wrap:anywhere}.free-play .session-frame-progress{visibility:hidden}.session-frame .free-play-tabs button,.session-frame .free-play-tabs button:hover{min-height:44px;border:1px solid var(--line);background:var(--plate, var(--surface));color:var(--ink);box-shadow:none}.session-frame .free-play-tabs [aria-selected=true],.session-frame .free-play-tabs [aria-selected=true]:hover{border-color:var(--session-colour);background:var(--session-colour);color:var(--session-ink)}.session-frame .free-play-tabs button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.free-play-tabs svg{width:24px;height:24px;fill:currentColor;vertical-align:middle;margin-inline-end:8px}.listening-spacing{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-sm)}.listening-spacing-value{margin-inline-end:auto;font-size:var(--t-small);color:var(--muted)}@media(orientation:landscape)and (max-height:560px)and (min-width:600px){.fluency-run .fluency-target{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);grid-template-rows:auto auto auto;align-content:center;align-items:center;justify-items:center;gap:var(--s-sm) var(--s-lg);width:min(100%,44rem)}.fluency-run .fluency-target>*{margin:0}.fluency-run .fluency-target>.lesson-task{grid-column:1;grid-row:1;align-self:end}.fluency-run .fluency-target>.fluency-listen{grid-column:1;grid-row:2;align-self:start}.fluency-run .fluency-target>.fluency-audio-error{grid-column:1;grid-row:3}.fluency-run .fluency-target>.fluency-answer-area,.fluency-run .fluency-target>.fluency-feedback{grid-column:2;grid-row:1 / span 3;align-self:start;min-width:0}.fluency-run .fluency-target>.copy-answer{grid-column:2;grid-row:1;min-width:0}.fluency-run .fluency-target>.copy-feedback{grid-column:2;grid-row:2 / span 2}.fluency-answer{font-size:clamp(1.8rem,6vw,2.6rem)}.copy-expected{font-size:1.6rem}.fluency-feedback{gap:var(--s-xs)}.fluency-run .fluency-target:has(>.fluency-miss)>.lesson-task,.fluency-run .fluency-target:has(>.fluency-miss)>.fluency-listen{display:none}.fluency-run .fluency-target>.fluency-miss{grid-column:1 / -1;grid-row:1 / span 3;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:center;gap:var(--s-xs) var(--s-lg);width:100%}.fluency-run .fluency-miss>.fluency-answer{grid-column:1;grid-row:3}.fluency-run .fluency-miss>.session-miss-continue{grid-row:4}.fluency-run .fluency-miss>.morse-character-support{grid-column:2;grid-row:1 / span 4;min-width:0}.fluency-run .fluency-target>.copy-miss{grid-column:2;grid-row:2 / span 2;justify-self:stretch;min-width:0}.fluency-run .fluency-target>.copy-miss{grid-template-columns:minmax(0,1fr)}.fluency-run .copy-miss>*{grid-column:1;grid-row:auto}}@media(max-height:560px){.free-play-output{min-height:2.4em;padding:var(--s-xs) var(--s-md);font-size:clamp(1.1rem,7vh,1.5rem)}.free-play-body{gap:var(--s-xs)}.free-play-actions button{min-height:var(--control-h);padding-block:var(--s-xs)}}.send-stage{flex:1 0 auto;display:flex;flex-direction:column;gap:var(--s-lg)}.send-stage>.send-stage-head{margin-block-start:auto}.send-stage-head{display:grid;justify-items:center;gap:var(--s-sm);min-width:0;text-align:center}.send-kicker{margin:0;color:var(--subtle);font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase}.send-target{margin:0;color:var(--ink);font-family:var(--font);font-weight:var(--w-page);line-height:1.04;letter-spacing:.035em}.send-target-word{display:flex;flex-wrap:wrap;justify-content:center;gap:.05em;font-size:clamp(2.6rem,15vw,5.4rem)}.send-target-word>span{display:inline-grid;place-items:center;min-width:.72em;padding:.08em .025em;border-radius:var(--r-sm);color:var(--ink);transition:color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.send-target-word>span.is-current{box-shadow:inset 0 -.12em 0 var(--session-colour, var(--ink))}.send-target-word>span.is-done{color:var(--subtle)}.send-target-message{display:flex;flex-wrap:wrap;justify-content:center;gap:.22em .36em;max-width:34rem;font-size:clamp(1.55rem,7.4vw,2.65rem);line-height:1.16;letter-spacing:-.01em}.send-target-message>span{padding:.08em .05em;border-radius:var(--r-sm);color:var(--muted)}.send-target-message>span.is-current-word{color:var(--ink);box-shadow:inset 0 -.1em 0 var(--session-colour, var(--ink))}.send-purpose{max-width:34rem;margin:0;color:var(--muted);font-size:var(--t-small);line-height:1.45}.send-output{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:var(--s-sm);min-height:3.1rem;padding:var(--s-sm) var(--s-md);border-radius:var(--r-md);background:var(--field);box-shadow:var(--engrave)}.send-output-label{color:var(--subtle);font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase}.send-output-value{min-width:0;overflow-wrap:anywhere;color:var(--ink);font-family:var(--font-mono);font-size:clamp(1rem,4.8vw,1.35rem);letter-spacing:.04em}.send-key-zone{margin-block-start:auto;display:grid;gap:var(--s-md);width:min(100%,34rem);margin-inline:auto}.send-feedback-slot{display:grid;place-items:center;min-height:4.35rem}.send-feedback-placeholder{color:transparent;-webkit-user-select:none;user-select:none}.send-feedback{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--s-sm);width:100%;min-height:4rem;padding:var(--s-sm) var(--s-md);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);text-align:center}.send-feedback.is-correct{border-color:color-mix(in oklch,var(--ok) 62%,var(--line))}.send-feedback.is-wrong{border-color:color-mix(in oklch,var(--danger) 68%,var(--line))}.send-feedback strong{color:var(--ink)}.send-feedback.is-correct strong{color:var(--ok)}.send-feedback.is-wrong strong{color:var(--danger)}.send-flow-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-sm)}.send-review-card{margin-block:auto}.send-review-card,.send-summary-card{display:grid;gap:var(--s-lg);width:min(100%,36rem);margin-inline:auto;padding:var(--s-lg);border:1px solid var(--line);border-radius:var(--r-xl);background:var(--surface-2);box-shadow:var(--shadow)}.send-review-card .session-prompt-heading,.send-summary-card .session-prompt-heading{margin:0;font-family:var(--font);font-size:var(--t-section);line-height:1.15}.send-review-card .session-prompt-heading.is-correct{color:var(--ok)}.send-compare{display:grid;gap:var(--s-md);margin:0}.send-compare>div{display:grid;gap:var(--s-xs);min-width:0;padding-block:var(--s-md);border-top:1px solid var(--line-strong)}.send-compare dt{color:var(--subtle);font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase}.send-compare dd{margin:0;overflow-wrap:anywhere;color:var(--ink);font-family:var(--font-mono);font-size:clamp(1rem,5.4vw,1.45rem);line-height:1.4;letter-spacing:.035em}.send-review-score,.send-score{margin:0;color:var(--ink);font-family:var(--font-mono);font-weight:var(--w-label)}.send-review-score{font-size:var(--t-component)}.send-score{font-size:clamp(3rem,17vw,5.8rem);line-height:.95;letter-spacing:-.045em}.send-summary-copy{margin:0;color:var(--muted)}.send-summary-actions{display:grid;gap:var(--s-sm)}@media(max-height:720px)and (max-width:480px){.send-stage{gap:var(--s-md)}.send-purpose{font-size:.78rem}.send-feedback-slot{min-height:3.5rem}.send-target-message{font-size:clamp(1.35rem,6.7vw,2.2rem)}}@media(max-width:380px){.send-target-word{font-size:clamp(2.25rem,13vw,4rem)}.send-target-message{font-size:clamp(1.35rem,7vw,2.1rem)}.send-output{grid-template-columns:1fr;gap:2px}}@media(prefers-reduced-motion:reduce){.send-target-word>span{transition:none}}.session-frame .send-review-card{background:var(--plate-raised, var(--surface-2));box-shadow:none}.session-frame .send-review-card .session-prompt-heading.is-correct{color:var(--session-colour)}@media(max-height:560px){.send-stage{gap:var(--s-sm)}.send-target-word{font-size:clamp(2rem,13vh,3rem)}.send-target-message{font-size:clamp(1.2rem,7vh,1.6rem)}.send-output{min-height:0;padding-block:var(--s-xs)}.send-key-zone{gap:var(--s-xs)}.send-feedback-slot{min-height:0}.send-feedback-slot:has(>.send-feedback-placeholder){display:none}.send-review-card{gap:var(--s-sm);padding:var(--s-md)}}.morse-reference{display:grid;align-content:start;gap:var(--s-md);padding-bottom:max(var(--s-2xl),env(safe-area-inset-bottom))}.morse-ref-title{margin:0;font-family:var(--font-display);font-size:var(--t-page);font-weight:var(--w-page);line-height:1.08;overflow-wrap:anywhere}.morse-ref-lede,.morse-ref-foot{max-width:52ch;margin:0;color:var(--muted)}.morse-ref-foot{font-size:var(--t-small);color:var(--subtle)}.morse-ref-list{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-sm);margin:0;padding:0;list-style:none}.morse-ref-card{display:grid;grid-template-columns:clamp(3.8rem,18vw,5.8rem) minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:center;gap:0 var(--s-md);min-height:5.6rem;padding:var(--s-sm) var(--s-md)}.morse-ref-card>.morse-ref-support{grid-column:1 / -1;grid-row:1 / -1}.morse-ref-card.is-sounding{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.morse-ref-letter{grid-column:1;grid-row:1 / 3;align-self:stretch;display:grid;place-items:center;border-inline-end:1px solid var(--line);padding-inline-end:var(--s-sm);font-family:var(--font-display);font-size:clamp(3rem,15vw,4.6rem);font-weight:var(--w-display);line-height:.9;color:var(--ink)}.morse-ref-body{grid-column:2;grid-row:1 / 3;display:grid;align-content:center;gap:.3rem;min-width:0}.morse-ref-pattern,.morse-ref-mnemonic{margin:0}.morse-ref-pattern{font-family:var(--font-mono);font-size:clamp(2rem,9vw,3rem);font-weight:var(--w-strong);line-height:1;letter-spacing:.08em;white-space:nowrap}.morse-ref-mnemonic{overflow-wrap:anywhere;font-size:clamp(1rem,4vw,1.2rem);font-weight:var(--w-strong);line-height:1.15}.morse-ref-card>.morse-play{grid-column:3;grid-row:1 / 3;align-self:center}@media(min-width:760px){.morse-ref-list{grid-template-columns:repeat(2,minmax(0,1fr))}.morse-ref-card{grid-template-columns:4.5rem minmax(0,1fr) auto}.morse-ref-letter{font-size:3.5rem}.morse-ref-pattern{font-size:2.2rem}}@media(max-width:360px){.morse-ref-card{grid-template-columns:min(3.4rem,18vw) minmax(0,1fr) auto;gap:0 var(--s-sm);padding-inline:var(--s-sm)}.morse-ref-letter{font-size:min(2.7rem,15vw)}.morse-ref-pattern{font-size:min(1.8rem,9vw);white-space:normal}}@media(min-width:361px)and (max-width:480px){.morse-ref-card{grid-template-columns:min(3.8rem,18vw) minmax(0,1fr) auto}.morse-ref-letter{font-size:min(3rem,15vw)}.morse-ref-pattern{font-size:min(2rem,9vw);white-space:normal}}.morse-ref-extras{display:grid;gap:var(--s-sm)}.morse-ref-extras-head{margin:var(--s-lg) 0 0;font-size:var(--t-component)}:root{--bg: oklch(.255 .012 255);--surface: oklch(.3 .013 255);--surface-2: oklch(.345 .014 255);--surface-3: oklch(.4 .015 255);--surface-4: oklch(.45 .015 255);--field: oklch(.22 .012 255);--ink: oklch(.97 .004 255);--muted: oklch(.83 .012 255);--subtle: oklch(.75 .012 255);--placeholder: oklch(.68 .012 255);--line: oklch(.42 .014 255);--line-strong: oklch(.55 .014 255);--line-hover: oklch(.62 .014 255);--action: oklch(.86 .16 95);--action-ink: oklch(.22 .04 95);--action-edge: var(--action);--accent: var(--action);--accent-2: var(--action);--accent-ink: var(--action-ink);--accent-wash: oklch(.33 .03 95);--mode-key: oklch(.8 .14 150);--mode-key-ink: oklch(.22 .04 150);--mode-listen: oklch(.8 .1 250);--mode-listen-ink: oklch(.22 .04 250);--mode-read: oklch(.8 .11 300);--mode-read-ink: oklch(.22 .04 300);--mode-free: oklch(.8 .12 205);--mode-free-ink: oklch(.22 .04 205);--plate: var(--surface);--plate-raised: var(--surface-2);--spine-ahead: var(--line-strong);--learning: oklch(.78 .1 250);--survival: oklch(.8 .11 205);--tradecraft: oklch(.77 .11 300);--danger: oklch(.74 .13 18);--danger-2: oklch(.8 .11 18);--danger-ink: oklch(.2 .04 18);--ok: oklch(.8 .1 170);--complete: oklch(.7 .02 255);--warning: oklch(.75 .11 50);--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--r-pill: 999px;--s-xs: 6px;--s-sm: 8px;--s-md: 14px;--s-lg: 18px;--s-xl: 26px;--s-2xl: 40px;--s-3xl: 64px;--font: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display: var(--font);--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--t-display: clamp(2.5rem, 9vw, 3.6rem);--t-wordmark: clamp(2rem, 9.5vw, 2.6rem);--t-page: 2.15rem;--t-section: 1.45rem;--t-component: 1.05rem;--t-lede: 1.15rem;--t-body: .98rem;--t-small: .85rem;--t-label: .72rem;--t-readout: .75rem;--track-readout: .055em;--w-display: 600;--w-page: 600;--w-section: 600;--w-component: 600;--w-label: 600;--w-body: 400;--engrave: inset 0 0 0 1px var(--line);--press: inset 0 2px 4px rgb(0 0 0 / 30%);--press-lit: inset 0 2px 4px rgb(0 0 0 / 18%);--shadow-sm: 0 1px 2px rgb(0 0 0 / 30%);--shadow-key: 0 8px 22px rgb(0 0 0 / 35%);--shadow: 0 14px 36px rgb(0 0 0 / 35%);--shadow-rail: 4px 0 18px rgb(0 0 0 / 30%);--shadow-lift: 0 22px 54px rgb(0 0 0 / 42%);--scrim: rgb(0 0 0 / 62%);--t-fast: .15s;--t-base: .22s;--t-flip: .46s;--ease: cubic-bezier(.22, 1, .36, 1);--ease-flip: cubic-bezier(.32, .72, .24, 1);--control-h: 44px;--control-h-lg: 56px;--rail: 236px;--measure: 68ch}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-width:320px;min-height:100dvh;font-family:var(--font);font-size:var(--t-body);font-weight:var(--w-body);line-height:1.55;color:var(--ink);background:var(--bg);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}.app-shell{position:relative;z-index:1}h1,h2,h3,p,ul,ol,dl,figure{margin:0}ul,ol{padding:0;list-style:none}h1,:where(.session-prompt-heading){font-family:var(--font-display);font-size:var(--t-page);font-weight:var(--w-page);line-height:1.06;letter-spacing:-.028em}h2:not(:where(.session-prompt-heading)){font-family:var(--font-display);font-size:var(--t-section);font-weight:var(--w-section);line-height:1.18;letter-spacing:-.02em}h3{font-size:var(--t-component);font-weight:var(--w-component);line-height:1.3}p{max-width:var(--measure)}.tabular,.session-bar{font-family:var(--font-mono);font-variant-numeric:tabular-nums}code{font-family:var(--font-mono);font-size:.85em;padding:1px 5px;border-radius:var(--r-sm);background:var(--surface-2)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}button{min-height:44px;padding:11px 16px;border:1px solid var(--accent);border-radius:var(--r-md);font:inherit;font-weight:var(--w-component);letter-spacing:.005em;color:var(--accent-ink);background:var(--action);box-shadow:var(--shadow-sm);cursor:pointer;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}button:hover{background:var(--accent-2);border-color:var(--accent-2)}button:active{transform:translateY(1px);box-shadow:var(--press-lit)}button.ghost{color:var(--ink);background:var(--surface-2);border-color:var(--line-strong);box-shadow:var(--shadow-sm)}button.ghost:hover{background:var(--surface-3);border-color:var(--line-hover)}button.ghost:active{background:var(--surface-2);box-shadow:var(--press)}button.quiet{min-height:44px;padding:8px 2px;border:0;border-radius:var(--r-sm);font-size:var(--t-small);font-weight:var(--w-component);color:var(--muted);background:transparent;box-shadow:none}button.quiet:hover{color:var(--ink);background:transparent;border-color:transparent;text-decoration:underline;text-underline-offset:4px}button.quiet:active{box-shadow:none}button.danger{color:var(--danger-ink);background:var(--danger);border-color:var(--danger)}button.danger:hover{background:var(--danger-2);border-color:var(--danger-2)}button.small{padding:9px 12px;font-size:var(--t-label)}button.icon{min-width:44px;padding:0;display:inline-grid;place-items:center}button:disabled,button:disabled:hover,button:disabled:active{color:var(--subtle);background:var(--surface-2);border-color:var(--line);box-shadow:none;cursor:not-allowed;transform:none;text-decoration:none}button.quiet:disabled,button.quiet:disabled:hover{color:var(--placeholder);background:transparent;border-color:transparent}.field{width:100%;min-height:var(--control-h);padding:11px 12px;border:1px solid var(--line-strong);border-radius:var(--r-md);font:inherit;color:var(--ink);background:var(--field);box-shadow:var(--engrave);transition:border-color var(--t-fast) var(--ease)}.field[aria-invalid=true]{border-color:var(--danger)}.field::placeholder{color:var(--placeholder)}.field:focus-visible{border-color:var(--accent)}textarea.field{min-height:88px;line-height:1.5;resize:vertical}textarea.mono{font-family:var(--font-mono);font-size:var(--t-small)}:where(.panel,.morse-card,.morse-ref-card,.morse-checkpoint-feedback,.lesson-stage,.lesson-feedback,.test-feedback,.practice-question,.practice-answer,.practice-feedback,.fluency-feedback){padding:var(--s-md);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}button:where(.panel){padding:var(--s-md);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}.gauge{display:block}.gauge-track{display:block;width:100%;height:6px;overflow:hidden;border-radius:var(--r-pill);background:var(--field);box-shadow:var(--engrave)}.gauge-fill{display:block;height:100%;border-radius:inherit;background:var(--track-hue, var(--muted));transform-origin:left center;transition:none;animation:gauge-fill-in .64s var(--ease) both;animation-delay:var(--gauge-delay, .12s)}@keyframes gauge-fill-in{0%{transform:scaleX(0)}}@media(prefers-reduced-motion:reduce){.gauge-fill{animation:none}}.gauge-label.is-banked:before{content:"✓ ";color:var(--track-hue, var(--ink))}.gauge-page{display:grid;gap:var(--s-xs);margin-top:var(--s-md)}.gauge-label{margin:0;color:var(--subtle);font-family:var(--font-mono);font-size:var(--t-readout);letter-spacing:var(--track-readout);text-transform:uppercase}.app-shell{min-height:100dvh}main{width:min(100%,720px);margin-inline:auto;padding:var(--s-xl) max(var(--s-lg),env(safe-area-inset-left)) calc(var(--nav-clearance, 90px) + var(--s-lg))}main:focus{outline:none}.demo-note{max-width:none;display:flex;align-items:baseline;gap:var(--s-sm);margin:calc(var(--s-md) * -1) 0 var(--s-lg);padding:var(--s-sm) var(--s-md);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);font-size:var(--t-label);line-height:1.4;color:var(--subtle)}.demo-note strong{flex:none;font-weight:var(--w-component);letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}.nav{position:fixed;inset:auto 0 0;z-index:20;display:flex;border:0;border-top:1px solid var(--line-strong);border-radius:0;background:var(--surface);padding:var(--s-xs) max(var(--s-xs),env(safe-area-inset-right)) max(var(--s-xs),env(safe-area-inset-bottom)) max(var(--s-xs),env(safe-area-inset-left))}.nav .brand{display:none}.nav ul{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;flex:1}.nav-btn{position:relative;width:100%;min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 2px;border:0;border-radius:var(--r-lg);font-size:.72rem;font-weight:var(--w-label);color:var(--muted);background:transparent;transition:color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}.nav-btn:hover{color:var(--ink);background:var(--surface-2)}.nav-btn:active{transform:none;box-shadow:none}.nav-btn[aria-current=page]{background:var(--surface-3);color:var(--accent-2)}.nav-btn[aria-current=page]:before{content:"";position:absolute;inset:0 26% auto;height:2px;border-radius:var(--r-pill);background:var(--accent-2)}.index{margin-top:var(--s-lg);border-top:1px solid var(--line)}.index-row{position:relative;width:100%;display:grid;gap:5px;padding:15px 20px 15px 2px;border:0;border-bottom:1px solid var(--line);border-radius:0;text-align:left;color:var(--ink);background:transparent;transition:background var(--t-fast) var(--ease)}.index-row:hover{background:var(--surface-2)}.index-row:active{transform:none;box-shadow:none}.index-row:after{content:"›";position:absolute;right:2px;top:50%;transform:translateY(-50%);color:var(--subtle);transition:transform var(--t-base) var(--ease),color var(--t-fast) var(--ease)}.index-row:hover:after{transform:translate(3px,-50%);color:var(--ink)}.index-row.static{cursor:default}.index-row.static:after{content:none}.index-title{font-family:var(--font-display);font-size:var(--t-component);font-weight:var(--w-component);letter-spacing:-.008em}.index-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-sm);font-size:var(--t-label);font-weight:var(--w-body);color:var(--muted)}.status{font-family:var(--font-mono);font-size:var(--t-readout);font-weight:var(--w-label);letter-spacing:var(--track-readout);text-transform:uppercase;color:var(--muted)}.status-completed{color:var(--ok)}.status-decayed{color:var(--warning)}.track-learning{color:var(--learning)}.track-survival{color:var(--survival)}.track-tradecraft{color:var(--tradecraft)}.empty{margin-top:var(--s-lg);color:var(--muted)}.session-shell main{padding-block:0;padding-inline:0}.session{width:min(100%,620px);margin-inline:auto;padding:max(var(--s-xl),env(safe-area-inset-top)) max(var(--s-lg),env(safe-area-inset-left)) var(--s-2xl)}.session-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-md);margin-bottom:var(--s-2xl);font-size:var(--t-label);color:var(--muted);font-variant-numeric:tabular-nums}.session-bar p{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-sm);min-width:0}.session-count{margin-inline-start:auto;font-family:var(--font-mono);font-size:var(--t-component);font-weight:var(--w-label);color:var(--ink);white-space:nowrap}.session-topic,.session-bar button{font-family:var(--font)}.session-topic{font-weight:var(--w-label);color:var(--ink)}.rate{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-sm);margin-top:var(--s-sm)}.backdrop{position:fixed;inset:0;z-index:40;display:flex;align-items:flex-end;background:var(--scrim)}.sheet{width:100%;max-height:92dvh;display:flex;flex-direction:column;border:1px solid var(--line-strong);border-radius:var(--r-xl) var(--r-xl) 0 0;background:var(--surface-2);box-shadow:var(--shadow-lift)}.backdrop.is-centred{align-items:center;justify-content:center;padding:var(--s-lg)}.backdrop.is-centred .sheet{width:min(100%,560px);max-height:84dvh;border-radius:var(--r-xl)}.backdrop.is-centred .sheet-head{flex-shrink:0}.backdrop.is-centred .sheet-head h2{min-width:0;overflow-wrap:anywhere;font-size:var(--t-component)}.backdrop.is-centred .sheet-head button{flex-shrink:0}.sheet-head{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:var(--s-md);padding:var(--s-md) var(--s-md) var(--s-md) var(--s-lg);border-bottom:1px solid var(--line)}.sheet-head h2{min-width:0;overflow-wrap:anywhere}.sheet-head button{flex-shrink:0}.sheet-body{min-height:0;overscroll-behavior:contain;padding:var(--s-lg) var(--s-lg) calc(var(--s-lg) + env(safe-area-inset-bottom));overflow-y:auto}.sheet-body>p{color:var(--muted)}.actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--s-sm);margin-top:var(--s-lg)}.actions.start{justify-content:flex-start}.field-row{display:grid;gap:var(--s-xs);margin-bottom:var(--s-lg)}.field-row label{font-size:var(--t-label);font-weight:var(--w-label)}.help,.count{font-size:var(--t-label);color:var(--muted)}.error{font-size:var(--t-label);color:var(--danger)}.note{font-size:var(--t-label);color:var(--muted)}@media(min-width:980px){.nav{inset:0 auto 0 0;width:var(--rail);flex-direction:column;align-items:stretch;padding:var(--s-xl) var(--s-md);border:0;border-radius:0;border-right:1px solid var(--line-strong);box-shadow:var(--shadow-rail)}.nav .brand{display:grid;gap:2px;padding:0 10px var(--s-xl)}.brand-name{font-size:var(--t-component);font-weight:var(--w-component);letter-spacing:.02em}.brand-note{font-size:var(--t-label);color:var(--subtle)}.nav ul{flex:none;align-content:start;grid-auto-flow:row;gap:2px}.nav-btn{min-height:var(--control-h);flex-direction:row;justify-content:flex-start;gap:10px;padding:0 10px;border-radius:var(--r-md);font-size:var(--t-body)}.nav-btn[aria-current=page]{background:var(--surface-2)}.nav-btn[aria-current=page]:before{inset:20% auto 20% 0;width:2px;height:auto}main{width:100%;max-width:none;margin-inline:0;padding:var(--s-2xl) var(--s-2xl) var(--s-2xl) calc(var(--rail) + var(--s-2xl))}main>*{max-width:760px}.session-shell main{width:100%;margin-inline:auto;padding-left:var(--s-2xl)}.backdrop{align-items:center;justify-content:center;padding:var(--s-xl)}.sheet{width:min(100%,560px);max-height:84dvh;border-radius:var(--r-xl)}}@keyframes morse-target-in{0%{opacity:0;transform:translateY(6px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.catalog-notice-id{padding:var(--s-sm) 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:var(--t-label);list-style:none}
