@font-face{font-family:Novaroa Sans;src:url(/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2) format("woff2-variations");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:Newsreader Variable;src:url(/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2) format("woff2-variations");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:DM Mono;src:url(/assets/dm-mono-latin-400-normal-4GdczIuU.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:DM Mono;src:url(/assets/dm-mono-latin-500-normal-DRMDZjhP.woff2) format("woff2");font-style:normal;font-weight:500;font-display:swap}:root{font-family:Novaroa Sans,system-ui,sans-serif;color:#f6f4ea;background:#070a08;font-synthesis:none;font-optical-sizing:auto;--ink: #070a08;--forest: #0d1811;--forest-raised: #142219;--signal: #c9ff3d;--signal-shadow: #6f9320;--sand: #e8d4ad;--paper: #f6f4ea;--muted: #9eaa9f;--functional-boundary: #68776b;--danger-text: #ff9f8d;--danger-border: #ff7362;--danger-surface: #9b332a;--danger-shadow: #4b1713;--danger-boundary: #8e493f;--disabled-text: #657067;--line: rgba(232, 212, 173, .2);--scene-depth: #0d1712;--scene-horizon: #17261c;--scene-floor: #1d2b21;--scene-furniture: #8f795d;--scene-furniture-shadow: #594c3b;--scene-outline: #050705;--scene-recovery: #d9a66f;--scene-window-grid: rgba(232, 212, 173, .08);--recap-muted: #40520e;--recap-divider: rgba(7, 10, 8, .22);--space-2xs: 4px;--space-xs: 8px;--space-sm: 12px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--space-3xl: 64px;--conversation-max: 760px;--motion-fast: .16s;--motion-state: .22s;--motion-emphasis: .24s;--ease-out-quint: cubic-bezier(.22, 1, .36, 1);--ease-out-expo: cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100svh;background:var(--ink)}button,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}button:active:not(:disabled){filter:brightness(.9)}:where(a,button){min-width:44px;min-height:44px}:where(a,button,textarea):focus-visible{outline:2px solid var(--signal);outline-offset:3px}:where(.primary-action,.record,.send-turn){min-height:44px}.app-shell{height:100dvh;min-height:100svh;display:grid;grid-template-areas:"brand brand" "scene conversation";grid-template-columns:minmax(300px,34%) minmax(0,66%);grid-template-rows:72px minmax(0,1fr);overflow:hidden;background:var(--ink)}@media(min-width:885px){.app-shell:has(.game-stage[data-compact=true]){grid-template-columns:minmax(240px,26%) minmax(0,74%)}}.app-shell>*,.conversation-surface,.conversation-panel,.conversation-flow,.conversation-exchange,.npc-line,.learner-turn,.coach-feedback{min-width:0}.mission-heading h1,.mission-objective,.learner-turn p,.npc-line blockquote,.coach-feedback p,.coach-details li,.system-message p,.voice-composer p{overflow-wrap:anywhere}.brand-bar{grid-area:brand;grid-column:1 / -1;position:relative;z-index:5;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-lg);padding-right:max(var(--space-xl),env(safe-area-inset-right));padding-left:max(var(--space-xl),env(safe-area-inset-left));border-bottom:1px solid var(--line);background:var(--ink)}.brand{display:inline-flex;align-items:center;gap:11px;width:max-content;max-width:100%;min-width:0;color:var(--paper);text-decoration:none}.brand-mark{display:grid;place-items:center;width:32px;height:32px;color:var(--ink);background:var(--signal);box-shadow:0 0 18px #c9ff3d24;font:700 19px/1 Novaroa Sans,sans-serif}.brand-name{font:700 25px/1 Novaroa Sans,sans-serif;letter-spacing:-.035em}.brand-promise{margin:0;color:var(--sand);font:500 .75rem/1.25 Novaroa Sans,sans-serif;letter-spacing:.01em}.mission-index{justify-self:end;display:flex;min-width:0;align-items:center;gap:12px;font-family:DM Mono,monospace;text-transform:uppercase}.mission-index span{color:var(--signal);font-size:10px}.mission-index strong{color:var(--paper);font-size:12px;font-weight:500}.game-stage{grid-area:scene;position:relative;min-height:0;height:calc(100dvh - 72px);overflow:hidden;border-right:1px solid var(--line);background:var(--scene-depth)}.office-scene{position:relative;width:100%;height:100%;contain:strict;isolation:isolate;overflow:hidden;background:radial-gradient(circle at 52% 38%,rgba(232,212,173,.08),transparent 42%),var(--scene-depth)}.office-scene-label{position:absolute;top:5%;left:4%;z-index:2;color:var(--sand);font:600 clamp(13px,2.2vw,24px)/1 "Novaroa Sans",sans-serif;letter-spacing:.01em;opacity:.72}.office-window{position:absolute;top:0;right:0;bottom:23%;left:0;overflow:hidden;background:linear-gradient(180deg,#09120d 0 48%,var(--scene-horizon) 100%)}.office-window:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;background:linear-gradient(108deg,transparent 8%,rgba(232,212,173,.05) 48%,transparent 70%)}.office-window-frame{position:absolute;z-index:2;background:#070a08e0}.office-window-frame--vertical{inset:0 auto 0 27%;width:clamp(4px,.6vw,8px)}.office-window-frame--horizontal{inset:43% 0 auto;height:clamp(4px,.6vw,8px)}.office-building{position:absolute;bottom:0;background:#102017}.office-building:after{content:"";position:absolute;top:14%;right:16%;bottom:14%;left:16%;opacity:.34;background:linear-gradient(90deg,var(--sand) 0 7%,transparent 7% 42%,var(--sand) 42% 49%,transparent 49% 84%,var(--sand) 84% 91%,transparent 91%)}.office-building--near{right:6%;width:27%;height:49%}.office-building--far{right:38%;width:18%;height:33%;opacity:.58}.office-wall-light{position:absolute;top:11%;right:8%;z-index:4;width:2px;height:25%;background:linear-gradient(var(--sand),transparent);opacity:.34}.office-floor{position:absolute;top:77%;right:0;bottom:0;left:0;border-top:1px solid rgba(201,255,61,.5);background:var(--scene-floor)}.office-desk{position:absolute;right:3%;bottom:11%;width:34%;height:32%}.office-desk-top{position:absolute;top:29%;left:0;width:100%;height:8%;background:var(--sand)}.office-desk-front{position:absolute;top:37%;left:3%;width:94%;height:31%;background:var(--scene-furniture)}.office-desk-leg{position:absolute;top:68%;width:7%;height:32%;background:var(--scene-furniture-shadow)}.office-desk-leg--left{left:10%}.office-desk-leg--right{right:10%}.office-monitor{position:absolute;top:0;left:48%;width:38%;aspect-ratio:1.55;border:clamp(5px,.8vw,10px) solid var(--scene-outline);background:var(--scene-horizon)}.office-monitor:before{content:"";position:absolute;top:100%;left:38%;width:24%;height:25%;background:var(--scene-outline)}.office-monitor:after{content:"";position:absolute;top:120%;left:22%;width:56%;height:8%;background:var(--scene-outline)}.office-monitor-screen{display:block;width:100%;height:100%;background:linear-gradient(145deg,#263d2d,#142219);box-shadow:inset 0 0 18px #c9ff3d1f}.office-desk-lamp{position:absolute;top:8%;left:12%;z-index:2;width:3%;height:23%;background:var(--scene-outline);transform:rotate(12deg);transform-origin:bottom}.office-desk-lamp:before{content:"";position:absolute;top:-16%;left:-250%;width:600%;aspect-ratio:1.8;background:var(--sand);clip-path:polygon(18% 0,82% 0,100% 100%,0 100%)}.office-desk-mug{position:absolute;top:22%;left:27%;z-index:2;width:7%;height:9%;border:2px solid var(--scene-outline);border-top:0;background:var(--scene-recovery)}.office-character{position:absolute;left:37%;bottom:19%;width:clamp(76px,16vw,150px);height:clamp(150px,34vw,290px);transform-origin:50% 100%;transition:transform .22s cubic-bezier(.22,1,.36,1)}.office-character-head{position:absolute;top:0;left:18%;z-index:2;width:64%;aspect-ratio:1;border:clamp(7px,1.2vw,13px) solid var(--scene-outline);background:var(--sand)}.office-character-hair{position:absolute;inset:0 0 auto;height:28%;background:var(--scene-furniture-shadow)}.office-character-eye{position:absolute;top:48%;width:10%;aspect-ratio:1;background:var(--scene-depth);transition:background-color .18s ease}.office-character-eye--left{left:27%}.office-character-eye--right{right:27%}.office-character-body{position:absolute;top:30%;right:0;bottom:0;left:0;display:grid;place-items:center;overflow:hidden;background:linear-gradient(90deg,#9fad99,#bdc9b7 48%,#8f9d88)}.office-character-collar{position:absolute;top:0;width:38%;height:18%;background:var(--paper);clip-path:polygon(0 0,50% 100%,100% 0)}.office-character-name{color:var(--scene-depth);font:700 clamp(15px,2.5vw,25px)/1 "Novaroa Sans",sans-serif;letter-spacing:.08em}.office-reaction-glyph{position:absolute;left:calc(37% + clamp(62px,14vw,135px));bottom:66%;color:var(--signal);font:700 clamp(24px,4vw,42px)/1 "Novaroa Sans",sans-serif;transition:color .18s ease,transform .22s cubic-bezier(.22,1,.36,1),opacity .18s ease}.office-scene[data-reaction=presenting][data-motion=full] .office-character{animation:office-idle 2.8s ease-in-out infinite}.office-scene[data-reaction=listening] .office-character{transform:translate(-4px,5px) scale(1.02,.98)}.office-scene[data-reaction=listening] .office-character-eye{background:var(--paper)}.office-scene[data-reaction=thinking] .office-character{transform:translate(5px,2px) scale(.99,1.01)}.office-scene[data-reaction=thinking] .office-reaction-glyph{color:var(--sand)}.office-scene[data-reaction=responding] .office-character{transform:translateY(-5px) scale(1.03)}.office-scene[data-reaction=encouraging] .office-character{transform:translateY(-7px) scale(1.04)}.office-scene[data-reaction=clarifying] .office-character{transform:translate(7px,1px)}.office-scene[data-reaction=clarifying] .office-reaction-glyph{color:var(--sand)}.office-scene[data-reaction=recovering] .office-character{transform:translateY(7px) scale(.98,.96)}.office-scene[data-reaction=recovering] .office-reaction-glyph{color:var(--scene-recovery)}.office-scene[data-reaction]:not([data-reaction=presenting]) .office-reaction-glyph{animation:office-glyph-in .24s cubic-bezier(.22,1,.36,1)}.scene-fallback{margin-bottom:20px;padding:14px 16px;color:var(--sand);border:1px solid var(--functional-boundary);background:var(--forest-raised);font:500 11px/1.6 DM Mono,monospace;text-align:center;text-transform:uppercase}.conversation-surface{grid-area:conversation;min-height:0;display:grid;grid-template-columns:minmax(0,var(--conversation-max));align-content:start;justify-content:center;overflow-y:auto;scrollbar-color:var(--signal) var(--forest);padding:var(--space-2xl) clamp(var(--space-lg),3.2vw,var(--space-2xl)) var(--space-3xl);background:radial-gradient(circle at 16% 4%,rgba(232,212,173,.06),transparent 28%),linear-gradient(155deg,#142219eb,#070a08fc 52%)}.mission-heading{padding-bottom:var(--space-xl);border-bottom:1px solid var(--line)}.mission-label{display:inline-block;color:var(--signal);font:500 .75rem/1.3 DM Mono,monospace;letter-spacing:.08em;text-transform:uppercase}.mission-heading h1{max-width:12ch;margin:.875rem 0 .75rem;font:700 3.5rem/.94 Newsreader Variable,serif;font-kerning:normal;letter-spacing:-.035em;text-wrap:balance}.mission-objective{max-width:42ch;margin:0;color:var(--sand);font-size:1rem;line-height:1.6;text-wrap:pretty}.mission-loading{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-xl);color:var(--muted);font:400 11px/1 DM Mono,monospace;text-transform:uppercase}.mission-loading span{width:12px;height:12px;background:var(--signal);animation:signal-pulse 1.2s steps(2) infinite}.system-message{margin-top:28px;padding:16px;border:1px solid var(--danger-boundary);background:#8e493f24}.system-message span{color:var(--danger-text);font:650 .875rem/1.2 Novaroa Sans,sans-serif}.system-message p{margin:8px 0 0;line-height:1.5}.system-message button{margin-top:var(--space-md);padding:11px 15px;color:var(--ink);border:1px solid var(--signal);background:var(--signal);font-weight:650;cursor:pointer}.system-message details{margin-top:var(--space-sm);color:var(--muted)}.system-message summary{width:max-content;min-height:44px;display:flex;align-items:center;cursor:pointer}.system-message details p{max-width:68ch;color:var(--muted);font:.75rem/1.55 DM Mono,monospace}.conversation-panel{min-height:100%}.conversation-flow{display:grid;gap:0;padding-top:var(--space-xl);padding-bottom:var(--space-xl)}.mission-progress{margin-bottom:var(--space-xl)}.opening-exchange{margin-bottom:var(--space-lg)}.conversation-exchange{position:relative;display:grid;gap:18px;padding:24px 0 28px;scroll-margin-top:calc(64px + env(safe-area-inset-top) + var(--space-md));animation:exchange-enter var(--motion-state) var(--ease-out-quint) both}.conversation-exchange:focus-visible{outline:none}.conversation-exchange:focus-visible>.exchange-history-content>.npc-line{outline:2px solid var(--signal);outline-offset:4px}.recap h2:focus-visible{outline:2px solid var(--signal);outline-offset:6px}.conversation-exchange+.conversation-exchange{margin-top:12px;border-top:1px solid var(--line)}.conversation-exchange+.conversation-exchange:before{content:"";position:absolute;top:-1px;left:0;width:52px;height:2px;background:var(--signal)}.conversation-exchange[data-collapsed=true]{gap:0;padding:10px 0}.exchange-history-toggle{width:100%;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:8px 0;color:var(--muted);text-align:left;border:0;background:transparent;cursor:pointer}.exchange-history-toggle span{font:500 .75rem/1.35 Novaroa Sans,sans-serif}.exchange-history-toggle strong{color:var(--sand);font:650 .75rem/1.35 Novaroa Sans,sans-serif}.exchange-history-toggle:hover strong,.exchange-history-toggle:focus-visible strong{color:var(--signal)}.exchange-history-toggle:focus-visible{outline:2px solid var(--signal);outline-offset:3px}.exchange-history-content{display:contents}.exchange-history-content[hidden]{display:none}.learner-turn{display:grid;gap:8px;justify-items:end;padding-left:clamp(28px,12%,96px);text-align:right}.exchange-sent{width:max-content;padding:3px 7px;color:var(--muted);border:1px solid var(--line);font:500 .75rem/1.2 Novaroa Sans,sans-serif}.learner-turn>span:not(.exchange-sent){color:var(--signal);font:600 .75rem/1.2 Novaroa Sans,sans-serif}.learner-turn p{margin:0;padding:12px 15px;color:var(--paper);border:1px solid color-mix(in srgb,var(--signal) 42%,transparent);background:#c9ff3d0f;font-size:14px;line-height:1.55}.progress-label{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-sm);margin-bottom:9px;color:var(--muted);font:500 .75rem/1.35 Novaroa Sans,sans-serif}.progress-label strong{max-width:24ch;display:grid;justify-items:end;gap:3px;color:var(--paper);font-size:.875rem;text-align:right}.progress-label strong small{color:var(--muted);font-size:.75rem;font-weight:500}.progress-track{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.progress-track span{height:4px;background:#e8d4ad29}.progress-track span.complete{background:var(--signal);animation:progress-confirm var(--motion-state) var(--ease-out-expo) both;transform-origin:left center}.npc-line{display:grid;gap:16px;padding:19px 0 21px;border-bottom:1px solid var(--line)}.speaker-lockup{display:flex;align-items:center;gap:11px}.npc-avatar{display:grid;place-items:center;width:36px;height:36px;color:var(--ink);background:var(--signal);box-shadow:0 0 16px #c9ff3d1f;font:700 18px/1 Novaroa Sans,sans-serif}.speaker-lockup>span:last-child{display:grid;gap:4px}.speaker{color:var(--paper);font:650 .875rem/1.2 Novaroa Sans,sans-serif}.speaker-lockup small{color:var(--muted);font-size:.75rem}.npc-line blockquote{margin:0;color:var(--paper);font:500 clamp(22px,2vw,31px)/1.22 "Newsreader Variable",serif;letter-spacing:-.025em}.npc-audio-controls{display:flex;flex-wrap:wrap;gap:8px}.npc-audio-controls button{padding:8px 10px;color:var(--sand);border:1px solid var(--functional-boundary);background:transparent;font:600 .75rem/1 Novaroa Sans,sans-serif;cursor:pointer}.npc-audio-controls button:hover,.npc-audio-controls button:focus-visible{color:var(--ink);border-color:var(--signal);background:var(--signal)}.opening-audio-controls{display:grid;justify-items:start;gap:8px}.opening-audio-controls button{padding:9px 12px;color:var(--paper);border:1px solid var(--functional-boundary);background:transparent;font:600 .75rem/1 Novaroa Sans,sans-serif;cursor:pointer}.opening-audio-controls button:hover,.opening-audio-controls button:focus-visible{color:var(--paper);background:transparent;outline:2px solid var(--signal);outline-offset:3px}.opening-audio-error{margin:0;color:var(--danger-text);font-size:12px;line-height:1.5}.section-label{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}.section-label h2{margin:0;font:600 12px/1.2 Newsreader Variable,sans-serif;letter-spacing:.03em;text-transform:uppercase}.section-label span{color:var(--muted);font:400 9px/1 DM Mono,monospace;text-transform:uppercase}.hint-block ul,.recap ul{display:grid;gap:7px;margin:0;padding:0;list-style:none}.hint-block button{width:100%;display:flex;align-items:center;gap:9px;padding:11px 13px;color:var(--sand);text-align:left;border:1px solid var(--functional-boundary);border-radius:0;background:transparent;cursor:pointer;transition:.16s ease}.hint-block button span{color:var(--signal);font-size:20px;line-height:0}.hint-block button:hover,.hint-block button:focus-visible{color:var(--paper);border-color:var(--signal);background:#c9ff3d12;transform:translate(3px)}.recorder-row{display:grid;justify-items:center;gap:12px;padding:4px 0}.record{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:12px;min-width:min(100%,280px);padding:17px 24px;color:var(--ink);border:1px solid var(--signal);border-radius:0;background:var(--signal);box-shadow:0 4px 8px #6f93202e;font:700 14px/1 Novaroa Sans,sans-serif;cursor:pointer;transition:transform var(--motion-fast) var(--ease-out-quint),box-shadow var(--motion-fast) ease}.record:hover{transform:translateY(-1px);box-shadow:0 5px 8px #6f93203d}.record:active{transform:translateY(1px);box-shadow:0 3px 6px #6f932029}.record.active{color:var(--paper);border-color:var(--danger-border);background:var(--danger-surface);box-shadow:0 8px 24px #4b171347;animation:record-pulse 1.2s steps(2) infinite}.mic-symbol{position:relative;width:13px;height:18px;border:2px solid currentColor;border-radius:8px}.mic-symbol:after{content:"";position:absolute;left:50%;bottom:-7px;width:17px;height:8px;border:2px solid currentColor;border-top:0;transform:translate(-50%)}.recording-status{color:var(--muted);font:400 9px/1.2 DM Mono,monospace;letter-spacing:.04em;text-transform:uppercase}.transcript-field{display:grid;gap:9px;color:var(--sand);font:500 10px/1.2 DM Mono,monospace;letter-spacing:.04em;text-transform:uppercase}.transcript-field small{margin-left:6px;color:var(--muted);font-weight:400;text-transform:none}.transcript-field textarea{width:100%;min-height:78px;resize:vertical;padding:13px 14px;color:var(--paper);border:1px solid var(--functional-boundary);border-radius:0;background:#0d1811d6;font-size:1rem;line-height:1.5;text-transform:none;transition:border-color .16s ease}.transcript-field textarea:focus{border-color:var(--signal)}textarea::placeholder{color:var(--muted);opacity:1}.coach-feedback{padding:12px 14px;border:1px solid var(--functional-boundary);background:#e8d4ad0a}.coach-feedback .coach-summary{margin:0;color:var(--sand);font:600 .875rem/1.5 Novaroa Sans,sans-serif}.coach-feedback>button{min-height:44px;margin-top:2px;padding:0;color:var(--muted);border:0;border-bottom:1px solid currentColor;background:transparent;font:600 .75rem/1.4 Novaroa Sans,sans-serif;cursor:pointer}.coach-feedback>button:hover{color:var(--signal)}.coach-feedback>button:focus-visible{color:var(--signal);outline:2px solid var(--signal);outline-offset:4px}.coach-details{display:grid;gap:10px;margin-top:14px;padding-top:13px;border-top:1px solid var(--line);animation:disclosure-enter var(--motion-fast) var(--ease-out-quint) both}.coach-details p{margin:0;color:var(--paper)}.coach-details strong{color:var(--sand);font-weight:600}.coach-details ul{display:grid;gap:7px;margin:0;padding-left:18px;color:var(--muted);font-size:12px;line-height:1.5}.inline-error{margin:0;color:var(--danger-text);font-size:12px;line-height:1.5}.send-turn{width:100%;padding:13px 16px;color:var(--paper);border:1px solid var(--sand);border-radius:0;background:transparent;font:650 .875rem/1 Novaroa Sans,sans-serif;cursor:pointer;transition:.16s ease}.send-turn:hover:not(:disabled){color:var(--ink);background:var(--sand)}.send-turn:disabled{color:var(--disabled-text);border-color:#9eaa9f33;cursor:not-allowed}.text-action{padding:0;color:var(--sand);border:0;border-bottom:1px solid currentColor;background:transparent;font:500 10px/1.5 DM Mono,monospace;text-transform:uppercase;cursor:pointer}.text-action:hover,.text-action:focus-visible{color:var(--signal)}.typing-fallback{justify-self:center}.voice-composer{position:sticky;z-index:4;bottom:-1px;display:grid;gap:var(--space-sm);margin-top:var(--space-xl);padding:var(--space-md);border:1px solid var(--functional-boundary);background:var(--forest-raised)}.voice-composer[data-tone=active]{border-color:var(--signal);outline:1px solid var(--signal);outline-offset:-2px}.voice-composer[data-tone=success]{border-color:var(--signal);outline:3px double var(--signal);outline-offset:-3px;background:color-mix(in srgb,var(--signal) 5%,var(--forest-raised))}.voice-composer[data-tone=error]{border-color:var(--danger-border);outline:2px dashed var(--danger-border);outline-offset:-2px}.voice-composer.voice-composer--recording{border-color:var(--danger-border);outline:2px solid var(--danger-border);outline-offset:-2px;animation:record-pulse 1.2s steps(2) infinite}.voice-composer-state{display:grid;gap:6px}.voice-composer-status{margin:0;color:var(--muted);font:650 .75rem/1.2 Novaroa Sans,sans-serif}.voice-composer-guidance{margin:0;color:var(--sand);font-size:.875rem;line-height:1.55}.voice-composer--transcribing .voice-composer-guidance,.voice-composer--submitting .voice-composer-guidance{color:var(--paper)}.voice-composer-idle,.voice-composer-review,.voice-composer-error,.voice-composer-requesting,.voice-composer-transcribing{display:grid;gap:14px}.voice-composer-requesting,.voice-composer-recording,.voice-composer-transcribing,.voice-composer-review,.voice-composer-error{animation:composer-state-enter var(--motion-fast) var(--ease-out-quint) both}.voice-composer-hints{display:grid;gap:8px}.voice-composer-hints button{padding:10px 12px;color:var(--sand);text-align:left;border:1px solid var(--functional-boundary);background:transparent;cursor:pointer}.voice-composer-hints button[aria-pressed=true]{border-color:var(--signal);background:color-mix(in srgb,var(--signal) 12%,transparent)}.voice-composer-hints .voice-composer-more-hints{min-height:44px;padding:0;color:var(--muted);border:0;border-bottom:1px solid currentColor;justify-self:start}.voice-composer-hints .voice-composer-more-hints:hover,.voice-composer-hints .voice-composer-more-hints:focus-visible{color:var(--signal)}.voice-composer-additional-hints{display:grid;gap:8px}.voice-composer-speaking-reference{margin:8px 0 0;color:var(--muted);font-size:.875rem}.voice-composer-typing-hints{padding-top:2px}.voice-composer-use-hint{display:grid;gap:4px}.voice-composer-use-hint span{color:var(--paper);font-weight:650}.voice-composer-use-hint small{color:var(--muted);font:400 .75rem/1.45 Novaroa Sans,sans-serif}.voice-composer-origin{width:max-content;margin:0;color:var(--signal);font:500 .75rem/1.35 Novaroa Sans,sans-serif}.voice-composer-draft{display:grid;gap:8px;color:var(--muted);font:600 .8125rem/1.35 Novaroa Sans,sans-serif}.voice-composer-draft textarea{width:100%;min-height:78px;resize:vertical;padding:12px;color:var(--paper);border:1px solid var(--functional-boundary);background:var(--forest);font:400 1rem/1.5 Novaroa Sans,sans-serif;text-transform:none}.voice-composer-recording{display:flex;align-items:center;justify-content:space-between;gap:14px}.voice-composer-recording time{color:var(--paper);font:500 18px/1 DM Mono,monospace}.voice-composer-error-message{margin:0;color:var(--paper);line-height:1.5}.voice-composer-preserved-draft{display:grid;gap:6px;padding:12px;border:1px solid var(--functional-boundary);background:#e8d4ad12}.voice-composer-preserved-draft p{margin:0}.voice-composer-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:8px}.voice-composer-actions button,.voice-composer-recording button{padding:12px 14px;color:var(--paper);border:1px solid var(--functional-boundary);background:transparent;font-weight:600;cursor:pointer}.voice-composer-actions button:last-child,.voice-composer-recording button{color:var(--ink);border-color:var(--signal);background:var(--signal)}.voice-composer button:disabled{color:var(--muted);border-color:var(--functional-boundary);background:var(--forest);cursor:not-allowed}.voice-composer button:focus-visible,.voice-composer textarea:focus-visible{outline:2px solid var(--signal);outline-offset:3px}.conversation-panel[data-first-exchange=true] .voice-composer{position:static}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.first-exchange-orientation{display:grid;gap:var(--space-sm);padding:var(--space-lg) 0 0;border-top:1px solid var(--line)}.first-exchange-orientation>p{max-width:54ch;margin:0;color:var(--sand);line-height:1.6}.first-exchange-orientation>.primary-action{width:100%;min-height:52px;margin-top:var(--space-xs);padding:14px 18px;border:1px solid var(--signal);font-weight:700;cursor:pointer;box-shadow:0 4px 8px #6f932029}.first-exchange-reference{padding:var(--space-sm) var(--space-md);color:var(--paper)!important;border:1px solid var(--functional-boundary);background:#c9ff3d0d}.first-exchange-reference strong{font-weight:650}.orientation-details-trigger{justify-self:start;min-height:44px;padding:0;color:var(--muted);border:0;border-bottom:1px solid currentColor;background:transparent;cursor:pointer}.orientation-details-trigger:hover,.orientation-details-trigger:focus-visible{color:var(--signal)}.orientation-details{display:grid;gap:var(--space-sm);padding:14px 16px;color:var(--muted);border-left:1px solid var(--functional-boundary);background:#e8d4ad09;font-size:.875rem;line-height:1.6;animation:disclosure-enter var(--motion-fast) var(--ease-out-quint) both}.orientation-details p{margin:0}.orientation-hints{display:grid;gap:var(--space-xs)}.orientation-hints button{min-height:44px;padding:10px 12px;color:var(--sand);text-align:left;border:1px solid var(--functional-boundary);background:transparent;cursor:pointer}.orientation-hints button[aria-pressed=true]{color:var(--paper);border-color:var(--signal);background:#c9ff3d14}.first-exchange-privacy{margin:0;color:var(--muted);font-size:.75rem;line-height:1.5}.primary-action{color:var(--ink);background:var(--signal);font-weight:700}.secondary-action{justify-self:start;min-height:44px;padding:0;color:var(--muted);border:0;border-bottom:1px solid currentColor;background:transparent;cursor:pointer}.secondary-action:hover,.secondary-action:focus-visible{color:var(--paper)}.first-exchange-success{margin:0 0 var(--space-xs);padding:9px 0;color:var(--sand);border-bottom:1px solid var(--line);font:500 .75rem/1.5 Novaroa Sans,sans-serif;animation:status-confirm var(--motion-state) var(--ease-out-expo) both}.access-denied{min-height:100dvh;display:grid;align-items:center;padding-top:max(clamp(28px,8vw,120px),env(safe-area-inset-top));padding-right:max(clamp(28px,8vw,120px),env(safe-area-inset-right));padding-bottom:max(clamp(28px,8vw,120px),env(safe-area-inset-bottom));padding-left:max(clamp(28px,8vw,120px),env(safe-area-inset-left));background:radial-gradient(circle at 24% 28%,rgba(201,255,61,.1),transparent 34%),var(--ink)}.access-denied-content{width:min(100%,680px);display:grid;justify-items:start;gap:var(--space-md)}.access-denied .brand{margin-bottom:var(--space-2xl)}.access-status{margin:0;color:var(--signal);font:650 .875rem/1.4 Novaroa Sans,sans-serif}.access-denied h1{max-width:11ch;margin:0;font:700 clamp(3rem,7vw,5.25rem)/.98 "Newsreader Variable",serif;letter-spacing:-.035em;text-wrap:balance}.access-denied-content>p:not(.access-status,.access-support){max-width:46ch;margin:0;color:var(--sand);font-size:1rem;line-height:1.65}.access-recovery{margin-top:var(--space-sm);padding:13px 17px;color:var(--ink);border:1px solid var(--signal);background:var(--signal);font-weight:700;cursor:pointer}.access-recovery:hover{filter:brightness(.92)}.access-support{max-width:54ch;margin:var(--space-xs) 0 0;color:var(--muted);font-size:.875rem;line-height:1.6}.recap{margin-top:var(--space-2xl);padding:var(--space-lg);color:var(--ink);background:var(--sand);box-shadow:0 14px 34px #0000003d;animation:recap-reveal var(--motion-emphasis) var(--ease-out-expo) both}.recap-kicker{margin:0 0 var(--space-xs);color:var(--recap-muted);font:650 .875rem/1.4 Novaroa Sans,sans-serif}.recap h2{margin:0 0 5px;font:700 34px/.98 Newsreader Variable,serif;letter-spacing:-.035em}.recap-state{margin-top:0;color:var(--recap-muted);font:650 .75rem/1.2 Novaroa Sans,sans-serif}.recap p{font-size:.875rem;line-height:1.6}.recap h3{margin:19px 0 9px;font:650 .875rem/1.2 Novaroa Sans,sans-serif}.recap li{padding:8px 0;border-top:1px solid var(--recap-divider);font-size:.875rem}.recap-transfer{display:grid;justify-items:start;gap:var(--space-xs);margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--recap-divider)}.recap-transfer button{min-height:44px;padding:11px 14px;color:var(--paper);border:1px solid var(--ink);background:var(--ink);font-weight:700;cursor:pointer}.recap-transfer p{min-height:1.5em;margin:0;color:var(--recap-muted);font-size:.75rem}.mission-feedback{display:grid;gap:var(--space-sm);margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--line)}.mission-feedback h3{margin:0;font:650 1rem/1.35 Novaroa Sans,sans-serif}.feedback-intro{max-width:52ch;margin:0;color:var(--muted);font-size:.875rem;line-height:1.55}.feedback-disclosure{justify-self:start;padding:0 0 3px;color:var(--sand);border:0;border-bottom:1px solid currentColor;background:transparent;font-weight:650;cursor:pointer}.feedback-disclosure:hover,.feedback-disclosure:focus-visible{color:var(--signal)}.feedback-form{display:grid;gap:var(--space-sm);margin-top:var(--space-sm);padding-top:var(--space-md);border-top:1px solid var(--line)}.feedback-form>p{margin:0;color:var(--paper);line-height:1.55}.feedback-choice{display:flex;gap:8px}.feedback-choice button{padding:9px 16px;color:var(--sand);border:1px solid var(--functional-boundary);background:transparent;cursor:pointer}.feedback-choice button[aria-pressed=true]{color:var(--ink);border-color:var(--signal);background:var(--signal)}.mission-feedback label{display:grid;gap:8px;color:var(--muted);font:500 10px/1.2 DM Mono,monospace;text-transform:uppercase}.mission-feedback textarea{resize:vertical;padding:12px;color:var(--paper);border:1px solid var(--functional-boundary);background:var(--forest);font:400 1rem/1.5 Novaroa Sans,sans-serif;text-transform:none}.feedback-thanks{color:var(--signal);font:650 .875rem/1.5 Novaroa Sans,sans-serif}.voice-composer-draft-label{display:flex;justify-content:space-between;gap:var(--space-sm)}.voice-composer-draft-label small{color:var(--muted);font-weight:400}@keyframes signal-pulse{50%{opacity:.35}}@keyframes record-pulse{50%{filter:brightness(1.25)}}@keyframes office-idle{50%{transform:translateY(-5px)}}@keyframes office-glyph-in{0%{opacity:.35;transform:scale(.85)}}@keyframes exchange-enter{0%{opacity:0;transform:translateY(8px)}}@keyframes progress-confirm{0%{transform:scaleX(.18)}}@keyframes status-confirm{0%{opacity:.35;transform:scale(.985)}}@keyframes disclosure-enter{0%{opacity:0;transform:translateY(-4px)}}@keyframes recap-reveal{0%{opacity:0;transform:translateY(10px)}}@keyframes composer-state-enter{0%{opacity:.4;transform:translateY(4px)}}@media(max-width:1040px){.brand-promise{display:none}.brand-bar{grid-template-columns:1fr auto}}@media(max-width:884px){.app-shell{height:auto;min-height:100dvh;grid-template-areas:"brand" "scene" "conversation";grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto;align-content:start;overflow:visible}.brand-bar{position:sticky;top:0;height:calc(64px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);padding-right:max(18px,env(safe-area-inset-right));padding-left:max(18px,env(safe-area-inset-left))}.game-stage{min-height:0;height:clamp(80px,12dvh,104px);border-right:0;border-bottom:1px solid var(--line)}.game-stage[data-compact=true]{height:96px}.office-scene-label{top:14px;left:18px;font-size:.875rem}.office-floor{top:82%;right:0;bottom:0;left:0}.office-desk{right:3%;bottom:2%;width:30%;height:70%}.office-character{left:40%;bottom:5%;width:52px;height:96px}.office-reaction-glyph{left:calc(40% + 48px);bottom:58%;font-size:1.5rem}.conversation-surface{grid-template-columns:minmax(0,1fr);overflow:visible;padding:var(--space-md) max(var(--space-lg),env(safe-area-inset-right)) max(var(--space-2xl),calc(var(--space-xl) + env(safe-area-inset-bottom))) max(var(--space-lg),env(safe-area-inset-left))}.mission-heading{padding-bottom:var(--space-lg)}.mission-heading h1{font-size:2.5rem}.conversation-flow{padding-top:var(--space-lg)}.voice-composer{position:static}}@media(max-width:480px){.brand-bar{height:calc(56px + env(safe-area-inset-top))}.brand-name{font-size:21px}.mission-index span{display:none}.game-stage{height:72px}.game-stage[data-compact=true]{height:64px}.office-character{left:40%;bottom:2%;width:38px;height:66px}.office-reaction-glyph{left:calc(40% + 34px);bottom:50%;font-size:1.15rem}.office-desk{right:3%;bottom:1%;width:28%;height:66%}.conversation-surface{padding-top:10px;padding-right:max(var(--space-md),env(safe-area-inset-right));padding-left:max(var(--space-md),env(safe-area-inset-left))}.mission-heading{padding-bottom:10px}.mission-heading h1{margin:6px 0 4px;font-size:2rem;line-height:.98}.mission-objective{line-height:1.4}.conversation-flow{padding-top:10px}.mission-progress{margin-bottom:10px}.progress-label{margin-bottom:6px}.opening-exchange{margin-bottom:8px}.opening-exchange{position:relative}.npc-line{gap:8px;padding:8px 0 10px}.npc-line blockquote{font-size:1.2rem;line-height:1.18}.opening-audio-controls{gap:4px}.opening-audio-controls button{min-height:44px}.opening-audio-controls:not(:has(.opening-audio-error)){position:absolute;top:8px;right:0}.first-exchange-orientation{gap:6px;padding-top:8px}.first-exchange-orientation>p{line-height:1.35}.first-exchange-orientation>.primary-action{min-height:48px;margin-top:0;padding:12px 16px}.office-scene-label,.mission-label,.conversation-panel[data-first-exchange=false] .opening-exchange{display:none}.conversation-panel[data-first-exchange=false] .conversation-exchange:last-of-type{padding-bottom:16px}.section-label{align-items:flex-start;flex-direction:column;gap:5px}.mission-index strong,.speaker,.speaker-lockup small,.voice-composer-status,.progress-label,.progress-label strong,.section-label span,.recording-status,.voice-composer-origin,.voice-composer-draft,.mission-feedback label,.voice-composer-guidance,.opening-audio-error,.inline-error,.coach-feedback p,.coach-details ul,.orientation-details,.first-exchange-review-note,.first-exchange-privacy,.recap p,.recap li{font-size:.875rem}.record{width:100%}.voice-composer-actions{grid-template-columns:1fr}.voice-composer-review .voice-composer-actions{position:sticky;z-index:2;bottom:max(0px,env(safe-area-inset-bottom));grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);padding-top:var(--space-sm);background:linear-gradient(180deg,transparent,var(--forest-raised) 24%)}.voice-composer[data-tone=neutral] .voice-composer-review .voice-composer-actions{position:static;background:transparent}.voice-composer-draft textarea{min-height:104px;scroll-margin-bottom:168px}}@media(max-width:480px)and (max-height:700px){.brand-bar{height:calc(56px + env(safe-area-inset-top))}.game-stage{height:64px}.game-stage[data-compact=true]{height:58px}.office-scene-label{top:9px}.office-character{bottom:2%;width:34px;height:56px}.office-reaction-glyph{left:calc(40% + 31px);bottom:48%;font-size:1rem}.office-desk{height:60%}.conversation-surface{padding-top:var(--space-sm);padding-bottom:max(var(--space-lg),calc(var(--space-md) + env(safe-area-inset-bottom)))}.mission-heading{padding-bottom:var(--space-sm)}.mission-heading h1{margin:var(--space-xs) 0 var(--space-2xs);font-size:2rem;line-height:.98}.mission-objective{line-height:1.45}.conversation-flow{padding-top:var(--space-sm);padding-bottom:var(--space-lg)}.mission-progress{margin-bottom:var(--space-md)}.progress-label{margin-bottom:6px}.opening-exchange{margin-bottom:var(--space-sm)}.npc-line{gap:10px;padding:10px 0 12px}.npc-line blockquote{font-size:1.25rem}.first-exchange-orientation{gap:var(--space-xs);padding-top:var(--space-sm)}.first-exchange-orientation>p{line-height:1.45}.first-exchange-orientation>.primary-action{margin-top:0}}@media(min-width:481px)and (max-width:900px)and (max-height:480px){.game-stage{height:96px}.game-stage[data-compact=true]{height:80px}.office-scene-label,.mission-label{display:none}.mission-index strong,.speaker,.speaker-lockup small,.voice-composer-status,.progress-label,.progress-label strong,.section-label span,.recording-status,.voice-composer-origin,.voice-composer-draft,.mission-feedback label,.voice-composer-guidance,.opening-audio-error,.inline-error,.coach-feedback p,.coach-details ul,.orientation-details,.first-exchange-review-note,.first-exchange-privacy,.recap p,.recap li{font-size:.875rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.mission-loading span,.record.active,.voice-composer--recording{animation:none}.office-character,.office-reaction-glyph{animation:none!important;transition:none}.conversation-exchange,.progress-track span.complete,.coach-details,.orientation-details,.first-exchange-success,.voice-composer-requesting,.voice-composer-recording,.voice-composer-transcribing,.voice-composer-review,.voice-composer-error,.recap{animation:none}}@media(forced-colors:active){:where(a,button,textarea){border-color:ButtonText;forced-color-adjust:auto}:where(a,button,textarea):focus-visible{outline-color:Highlight}[aria-pressed=true]{color:HighlightText;background:Highlight;border-color:Highlight}.voice-composer[data-tone=error],.error-message,.inline-error{border-color:Mark;color:Mark}.voice-composer--recording,.record.active{border-color:Highlight}:where(.voice-composer[data-tone=success],.first-exchange-success,.feedback-thanks){color:CanvasText;border-color:CanvasText;background:Canvas}:where(.scene-fallback,.voice-composer,textarea){background:Canvas;color:CanvasText}}
