/* Achoo! interface: one type scale, one control system, one surface language. */
:root{color-scheme:dark;--bg:#071216;--surface:#101f25;--raised:#172b31;--ink:#f2f7f5;--muted:#aec2c3;--aqua:#68d9d3;--line:#2b444b;--radius:0;--font:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--mono:ui-monospace,SFMono-Regular,Consolas,monospace}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:18px/1.5 var(--font);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 20px;border:1px solid var(--line);border-radius:0;background:var(--raised);color:var(--ink);font-size:16px;font-weight:650;line-height:1.25;cursor:pointer;transition:background .15s,border-color .15s,transform .15s}button:hover{background:#203940;border-color:#66858b}button:active{transform:translateY(1px)}button.primary{background:var(--aqua);border-color:var(--aqua);color:#06191c;font-weight:750}button.primary:hover{background:#91e8e0;border-color:#91e8e0}button.quiet{background:transparent;color:var(--muted);border-color:transparent}button:disabled{opacity:.35;cursor:default;transform:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--aqua);outline-offset:4px}a{color:var(--aqua);text-underline-offset:4px}button[aria-pressed=true],nav button.active{border-color:var(--aqua);color:var(--aqua)}[hidden]{display:none!important}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
header,footer{max-width:1280px;margin:auto;padding:20px 32px;display:flex;align-items:center;justify-content:space-between;gap:20px}header{border-bottom:1px solid var(--line)}.wordmark{font-size:20px;font-weight:750;letter-spacing:-.7px;color:var(--ink);text-decoration:none}.wordmark span{color:var(--aqua)}nav{display:flex;gap:4px}nav button{background:transparent;border-color:transparent;min-height:40px;padding:8px 14px;font-size:16px}nav button.active{background:var(--raised);border-color:var(--line);color:var(--ink)}.prototype,.eyebrow{font:650 16px/1.5 var(--font);letter-spacing:1.5px;text-transform:uppercase;color:var(--aqua)}.prototype{color:var(--muted);font-size:16px}main{max-width:1160px;margin:auto;padding:28px 32px 64px}footer{border-top:1px solid var(--line);font-size:16px;color:var(--muted)}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.15;letter-spacing:-.035em}h2{font-size:32px;margin-bottom:16px}h3{font-size:22px;margin-bottom:12px}p{margin-bottom:16px}.small,.hint,#locationStatus{font-size:16px;line-height:1.5;color:var(--muted)}.lede{max-width:680px;font-size:18px;color:var(--muted)}.page-title{font-size:clamp(36px,6vw,64px);margin:14px 0}.eyebrow{margin-bottom:14px}.row{display:flex;gap:10px;margin:16px 0;flex-wrap:wrap}.row input{flex:1;min-width:0}input,select{width:100%;min-height:48px;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:0;padding:12px 14px;font-size:16px}input[type=range]{padding:12px 0;accent-color:var(--aqua)}label{display:block;font-size:16px;font-weight:650}label b{float:right;color:var(--aqua)}select{margin-top:10px}hr{border:0;border-top:1px solid var(--line);margin:24px 0}.panel,.location{background:var(--surface);border:1px solid var(--line);border-radius:0;padding:24px}.badge{display:inline-block;padding:6px 10px;border-radius:0;background:#68d9d310;color:var(--aqua);font:650 16px var(--font);letter-spacing:1px}.readings>div{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid var(--line)}.readings span{color:var(--muted)}.readings b{font-variant-numeric:tabular-nums}.dw-link{display:block;padding:14px 0;font-weight:650;text-decoration:none}details{scroll-margin-block:16px;border-top:1px solid var(--line);margin-top:20px}summary{cursor:pointer;min-height:48px;padding:14px 0;font-size:16px;font-weight:650;color:var(--muted)}details[open]>summary{color:var(--ink)}details[open]{padding-bottom:8px}
/* Setup screens: a single content stage and predictable next action. */
.flow-nav{max-width:920px;margin:0 auto 24px;display:flex;align-items:center;justify-content:space-between;gap:16px}.flow-nav>div{display:flex;flex-direction:column;gap:4px;text-align:center}.flow-nav span{font:600 16px var(--font);letter-spacing:1.6px;color:var(--aqua)}.flow-nav b{font-size:16px;letter-spacing:-.2px}.flow-nav button{width:44px;min-height:44px;padding:8px;background:transparent;font-size:24px;border-color:var(--line)}.flow-nav button[hidden]{display:flex!important;visibility:hidden}.flow-stage{max-width:920px;margin:auto;min-height:440px;display:grid;align-items:center}.flow-page{width:100%;max-width:560px;margin:auto;padding:24px 0}.flow-page>p{color:var(--muted)}.flow-page .location,.flow-page .panel{margin:24px 0 0}.typed-brief{font:600 16px/1.9 var(--font);padding:16px 20px;border-left:2px solid var(--aqua);color:var(--ink)!important;background:#68d9d306;border-radius:0}.step-continue{display:flex;width:min(100%,560px);margin:24px auto 0;min-height:52px}.story-intro{display:grid;grid-template-columns:.8fr 1.2fr;align-items:center;gap:0;background:var(--surface);border:1px solid var(--line);border-radius:0;overflow:hidden}.story-copy{padding:32px}.story-copy h2{font-size:clamp(32px,4vw,48px);margin:12px 0 20px}.story-copy em{font-style:normal;color:var(--aqua)}#storyCaption{color:var(--muted);font-size:16px;min-height:72px;margin:0}.story-progress{display:flex;gap:6px;margin:20px 0}.story-progress i{height:3px;flex:1;background:var(--line);border-radius:0}.story-progress i.on{background:var(--aqua)}.story-copy .row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}.story-copy #skipStory{grid-column:1/-1;min-height:52px}.story-copy .quiet{padding:10px 6px;font-size:16px;min-height:40px}.story-copy .small{display:none}.story-stage{min-width:0;line-height:0}.dw1-story-art{display:block;width:100%;height:auto;object-fit:contain}.story-label{display:none}.intro{display:none}.pre-game .game-layout{display:none!important}.game-layout aside{display:none}.game-layout{max-width:760px;margin:auto}.arena{background:var(--bg);border:1px solid var(--line);border-radius:0;overflow:hidden}.canvas-wrap{position:relative;max-width:600px;margin:auto}canvas{display:block;width:100%;aspect-ratio:1;touch-action:none}.overlay{position:absolute;inset:0;overflow-y:auto;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:24px;gap:12px;text-align:center;background:#071216f5}.overlay h2{font-size:26px;margin:0}.overlay p{max-width:360px;font-size:16px;color:var(--muted);margin:0 0 4px}.overlay button{flex-shrink:0;width:min(100%,360px)}.overlay #start{background:transparent;border-color:transparent;color:var(--muted)}.dw1-menu-art{display:block;width:min(100%,360px);height:auto;max-height:26dvh;object-fit:contain;border-radius:0;margin:0 auto 4px;flex-shrink:0}.dw1-sidekick-art{display:block;width:100%;height:auto;border-radius:0}.field-context{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}.field-context a{color:var(--ink);text-decoration:none;font-size:16px;font-weight:700;letter-spacing:-.4px}.field-context a span{color:var(--aqua)}.field-context>span{display:none}#soundToggle{margin-left:auto;white-space:nowrap}.field-context button{min-height:40px;padding:8px 12px;font-size:16px}.hud{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 14px;padding:8px 12px;min-height:38px;font-size:16px;color:var(--muted);letter-spacing:.5px}.hud b{display:inline;font-size:16px;color:var(--ink);font-variant-numeric:tabular-nums;margin-left:4px}.hud .battery{display:none}.shield-status{color:#ffe0a0;font-weight:750}.objective{padding:12px 16px;background:var(--surface)}.objective b{display:block;font:650 16px var(--font);color:var(--aqua);margin-bottom:4px}.objective span{font-size:16px;color:var(--muted)}.audio-strip,.controls,.hint{display:none}.steer-pad{display:flex;align-items:center;justify-content:space-between;gap:16px;height:var(--pad-height,156px);min-height:84px;margin:12px 10px 10px;padding:16px 20px;border:1px solid #57767b;border-radius:0;background:var(--surface);isolation:isolate}.steer-pad span{font:650 16px var(--font);letter-spacing:.5px;color:var(--muted)}.steer-pad b{font-size:36px;color:var(--aqua)}.steer-pad small{display:none}#steerPad,#steerPad *,#game{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain}.steer-pad *{pointer-events:none}.steering .arena button,.steering .flow-nav button{pointer-events:none}
/* Active play reserves the viewport for the maze and thumb pad. */
body.game-active{overflow:hidden;overscroll-behavior:none}body.game-active #play{position:fixed;inset:0;z-index:30;height:var(--play-height,100dvh);padding:env(safe-area-inset-top,0px) 4px env(safe-area-inset-bottom,0px);background:var(--bg);display:flex;flex-direction:column;overflow:hidden}body.game-active .flow-nav,body.game-active .objective{display:none!important}body.game-active.practice-mode .objective{display:block!important}body.game-active .game-layout{display:flex;flex:1;min-height:0;width:100%;max-width:900px;margin:0 auto}body.game-active .arena{display:flex;flex-direction:column;align-items:stretch;width:100%;height:100%;min-height:0;border:0;border-radius:0}body.game-active .arena>:not(.canvas-wrap){flex:none}body.game-active .canvas-wrap{width:var(--maze-side,40dvh);height:var(--maze-side,40dvh);max-width:none;flex:none;margin:0 auto}body.game-active #game{width:100%;height:100%}body.game-active .field-context{min-height:48px;padding:4px 10px}body.game-active .overlay{padding:18px;gap:10px}body.game-active .overlay h2{font-size:23px}body.game-active .overlay p{font-size:16px}body.game-active .overlay button{min-height:44px;padding:10px 16px}#play,#flowTitle{scroll-margin-top:16px}#play:focus,#flowTitle:focus{outline:none}
/* Dialogs share the same surface, tabs, and primary action. */
dialog{color:var(--ink);background:var(--surface);border:1px solid #3b5960;border-radius:0;padding:24px;width:min(94vw,480px);max-width:680px;max-height:90dvh;overflow-y:auto;overscroll-behavior:contain;scroll-padding:24px;box-shadow:0 24px 90px #0008}dialog::backdrop{background:#020a0fe6;backdrop-filter:blur(8px)}dialog h2{font-size:28px;margin:0 0 20px}dialog h3{font-size:22px}dialog p{font-size:16px;line-height:1.6}dialog .small{font-size:16px}dialog .primary,dialog #back{width:100%;min-height:52px;margin-top:20px}.mission-file{background:var(--surface)}.mission-file .eyebrow{font-family:var(--font)}.info-tabs{display:flex;gap:4px;padding:4px;background:var(--bg);border-radius:0;margin-bottom:24px}.info-tabs button{flex:1;border:0;background:transparent;min-height:44px}.info-tabs [aria-pressed=true]{background:var(--raised);color:var(--ink)}.info-sheet section{min-width:0}.nudge,.plus-preview{border:1px solid var(--line);border-radius:0;padding:16px;margin:20px 0;background:#68d9d305}.nudge b{font:650 16px var(--font);color:var(--aqua);letter-spacing:1px}.nudge p{margin:8px 0 0}.info-sheet #safeReading{white-space:pre-line;font:500 16px/1.8 var(--font)}.music-options .row{display:grid;grid-template-columns:1fr 1fr}.music-previews{display:flex;flex-wrap:wrap;gap:8px}.music-previews button{flex:1;font-size:16px;padding:10px}.music-options button{min-height:44px}.music-options [aria-pressed=true]{color:var(--aqua);border-color:#456a6c}.alert-sheet{border-color:#bd9f70}.alert-sheet .eyebrow{color:#f1d1a0}.alert-sheet #alertAction{border-left:2px solid #e8c38a;padding-left:16px}.lesson-sheet{width:min(94vw,460px);padding:20px;text-align:center}.lesson-sheet .card-result{position:static;font:800 clamp(22px,5.5vw,28px)/1.15 var(--font);letter-spacing:-.5px;margin:0 0 20px;color:var(--ink)}.villain-card-art{width:min(100%,330px);aspect-ratio:656/600;margin:0 auto 16px;background-image:url('assets/germs-readable-labels.png');background-size:200% 200%;background-repeat:no-repeat;border-radius:0;animation:card-reveal .25s ease-out}.lesson-sheet .villain-card-art{width:min(100%,calc(42dvh * 1.0933))}.lesson-tip{padding:0 4px}.lesson-tip p,.villain-clue{font-size:18px;line-height:1.5;margin:0}.lesson-more{margin-top:16px}.lesson-more summary,.lesson-more p,.lesson-more a{font-size:16px}.lesson-more a{display:inline-block;padding:10px}.lesson-sheet .small{margin:12px 0 0}.win-sheet{width:min(94vw,560px);text-align:center;padding:20px}.hero-win-art{display:block;width:100%;height:auto;border-radius:0;margin-bottom:20px;animation:card-reveal .25s ease-out}.win-sheet h2{margin-bottom:12px}.win-sheet #winScores{color:var(--muted);line-height:1.6;margin:0}.lesson-sheet[open] .card-result,.lesson-sheet[open] .lesson-tip{animation:result-pulse 1s ease-in-out 2}@keyframes card-reveal{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes result-pulse{0%,100%{opacity:1}50%{opacity:.6}}#scoreSummary{font-weight:650}#levelBest{color:var(--muted)}
/* Collection and private build notes use the same cards. */
.villains{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:32px 0}.villains article{border:1px solid var(--line);border-radius:0;background:var(--surface);padding:20px}.villains h3{font-size:24px;margin:10px 0}.villains small{font:600 16px var(--font);color:var(--muted);letter-spacing:1px}.villains p{font-size:16px;color:var(--muted);margin:0}.germ{height:96px;display:grid;place-items:center;font:700 60px var(--font)}.virus{color:#ff6c9a}.bacterium{color:#b2df62}.twins{color:#af97ef}.blob{color:#f8b14c}.concept{display:block;width:100%;height:auto;max-width:720px;margin:24px auto;border-radius:0}.plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px}.plan-grid .panel p{color:var(--muted);font-size:16px}.plan-grid .panel p:last-child{margin:0}.plan-grid h3{font-size:20px}body:has(.pre-game) footer{display:none}
@media(pointer:fine){body.game-active .steer-pad{height:48px;min-height:48px;margin:8px 10px}.steer-pad b{font-size:28px}}
@media(max-width:900px){.prototype{display:none}.story-copy{padding:24px}.story-copy h2{font-size:34px}.villains{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){header{padding:14px 20px;gap:12px;flex-wrap:wrap}.wordmark{font-size:18px}nav{gap:0}nav button{font-size:16px;padding:8px 10px;min-height:36px}main{padding:20px 16px 40px}.flow-nav{margin-bottom:20px}.flow-nav b{font-size:16px}.flow-stage{min-height:0}.story-intro{grid-template-columns:1fr;border-radius:0}.story-stage{order:-1}.story-copy{padding:20px}.story-copy .eyebrow,.story-copy h2{display:none}#storyCaption{min-height:48px;font-size:16px}.story-progress{margin:16px 0}.story-copy .row{gap:4px}.flow-page{padding:12px 4px}.flow-page h2{font-size:30px}.flow-page .location,.flow-page .panel{padding:20px}.location .row:has(#locate){flex-direction:column}.location .quiet{border:1px solid var(--line);font-size:16px;min-height:48px}.typed-brief{font-size:16px}.step-continue{margin-top:20px}.overlay{padding:16px;gap:10px}.overlay h2{font-size:22px}.overlay p{font-size:16px}.dw1-menu-art{max-height:22dvh;width:100%}.field-context a{font-size:16px}.field-context button{padding:8px 10px;font-size:16px}.hud{font-size:16px;gap:5px 8px}.hud b{font-size:16px}.steer-pad span{font-size:16px}.steer-pad b{font-size:40px}.plan-grid{grid-template-columns:1fr}.villains{gap:12px}.villains article{padding:16px}.villains h3{font-size:21px}dialog{padding:20px;border-radius:0}.info-tabs{margin-bottom:20px}footer{padding:24px 20px;flex-direction:column;align-items:flex-start}body:has(.pre-game) header{padding:12px 20px}body:has(.pre-game) nav{display:none}}
@media(max-height:650px){.overlay{justify-content:flex-start}.dw1-menu-art{max-height:18dvh}.lesson-sheet .villain-card-art{width:min(100%,calc(34dvh * 1.0933))}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}body.reduce-effects .card-result,body.reduce-effects .lesson-tip{animation:none}
@media print{header,footer,button,.view:not(#plan){display:none!important}#plan{display:block!important}body{background:white;color:black}.plan-grid{display:block}.panel{break-inside:avoid;background:white;color:black;border:1px solid #bbb;margin:12px 0}.plan-grid .panel p,.lede,.eyebrow{color:#222}main{padding:0}}

/* The ready screen is a card, not an overlay squeezed into a small maze. */
body:not(.game-active) .canvas-wrap:has(.overlay:not([hidden])) #game{display:none}body:not(.game-active) .canvas-wrap:has(.overlay:not([hidden])) .overlay{position:relative;overflow:visible;padding:24px}body:not(.game-active) .arena:has(.overlay:not([hidden]))>.field-context,body:not(.game-active) .arena:has(.overlay:not([hidden]))>.objective,body:not(.game-active) .arena:has(.overlay:not([hidden]))>.hud{display:none}body:not(.game-active) .canvas-wrap:has(.overlay:not([hidden])){max-width:480px}

/* Title-only interludes let character artwork remain special. */
.achoo-transition-logo{flex-shrink:0;padding:28px 4px 20px;font:italic 900 clamp(48px,11vw,80px)/1 system-ui,sans-serif;letter-spacing:-.06em;color:var(--ink);text-align:center}.achoo-transition-logo span{color:var(--aqua)}.win-sheet .achoo-transition-logo{padding:32px 0}.overlay:has(.achoo-transition-logo){justify-content:center}

/* A single light sweep gives the title movement without distracting from play. */
.achoo-transition-logo{color:#effbf8;background:linear-gradient(110deg,#d9f5f0 0%,#68d9d3 35%,#fff 48%,#68d9d3 61%,#d9f5f0 100%);background-size:250% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:achoo-enter .45s ease-out both,achoo-shimmer 4.5s ease-in-out infinite}
.achoo-transition-logo span{-webkit-text-fill-color:inherit}
@keyframes achoo-enter{from{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}
@keyframes achoo-shimmer{0%,25%{background-position:100% 50%}65%,100%{background-position:0% 50%}}
@media(prefers-reduced-motion:reduce){.achoo-transition-logo{animation:none;background:none;-webkit-text-fill-color:var(--ink)}.achoo-transition-logo span{-webkit-text-fill-color:var(--aqua)}}
body.reduce-effects .achoo-transition-logo{animation:none;background:none;-webkit-text-fill-color:var(--ink)}body.reduce-effects .achoo-transition-logo span{-webkit-text-fill-color:var(--aqua)}
/* Accessibility: visible alternatives, contrast, zoom and user preferences. */
.skip-link{position:fixed;top:8px;left:8px;z-index:100;padding:12px 18px;background:var(--aqua);color:var(--bg);border-radius:0;transform:translateY(-150%)}.skip-link:focus{transform:none}button:not(.quiet):not(.primary),input,select{border-color:#6b858d}#accessDialog #motion,#accessDialog #buttonControls{width:100%;margin-bottom:12px}#accessDialog .small{margin-top:12px}.direction-buttons{display:flex;gap:10px;padding:16px 10px;justify-content:center}.direction-buttons button{min-width:48px;min-height:48px;flex:1;max-width:100px;font-size:26px}.direction-buttons button:focus-visible{outline-offset:1px}#game:focus-visible{outline:3px solid var(--aqua);outline-offset:-3px}body.game-active .field-context{flex-wrap:wrap}body.game-active .field-context button{min-height:44px}#shieldStatus{min-width:90px}body.reduce-effects *,body.reduce-effects *::before,body.reduce-effects *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(forced-colors:active){.achoo-transition-logo{background:none;-webkit-text-fill-color:CanvasText;color:CanvasText}.achoo-transition-logo span{-webkit-text-fill-color:CanvasText}button,input,select{border:1px solid ButtonText}.steer-pad{border:1px solid CanvasText}.story-progress i.on{background:Highlight}}
@media(max-width:359px){header{padding:12px}main{padding:16px 12px}.row{flex-wrap:wrap}.row #place{flex-basis:100%}.row #search{width:100%}.flow-nav{gap:8px}.info-tabs button{padding:10px 8px}body.game-active #play{overflow-y:auto}body.game-active .game-layout{flex:none;height:auto;min-height:100%}body.game-active .arena{height:auto;min-height:100%}.direction-buttons{gap:6px}.field-context a{white-space:normal}}

/* Illustrated title from the character artwork, with a masked light sweep. */
.achoo-transition-logo{position:relative;width:min(100%,440px);padding:12px 0!important;margin:0 auto;background:none!important;-webkit-text-fill-color:initial;animation:achoo-enter .45s ease-out both;font:inherit;line-height:0}
.achoo-title-art{display:block;width:100%;height:auto;object-fit:contain}
.achoo-transition-logo::after{content:'';position:absolute;inset:12px 0;background:linear-gradient(110deg,transparent 38%,#ffffff70 48%,transparent 58%);background-size:250% 100%;mask:url('assets/achoo-logo-graffiti-v1.png') center/contain no-repeat;-webkit-mask:url('assets/achoo-logo-graffiti-v1.png') center/contain no-repeat;pointer-events:none;animation:achoo-shimmer 4.5s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.achoo-transition-logo::after{display:none}}body.reduce-effects .achoo-transition-logo::after{display:none}@media(forced-colors:active){.achoo-transition-logo::after{display:none}}
/* Brand credit now sits below the character introduction in the artwork. */
.story-copy>h2,.story-copy>.eyebrow{display:none}#storyCaption{min-height:0;margin:0 0 24px;text-align:center}.intro-brand-link{display:block;font-size:clamp(20px,3vw,28px);line-height:1.2;font-weight:800;letter-spacing:-.8px;color:var(--ink);text-decoration:none}.intro-brand-link span,.intro-parent span{color:var(--aqua)}.intro-parent{display:block;margin-top:6px;font-size:16px;color:var(--muted)}.story-copy .row{grid-template-columns:1fr}.story-copy .quiet{justify-self:center}

/* Official brand typography, sourced from Orbient's live wordmark styles. */
@font-face{font-family:'DM Serif Display';font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/dm-serif-display.ttf') format('truetype')}
.wordmark,.intro-brand-link,.field-context>a,.orbient-wordmark{font-family:'DM Serif Display',serif;font-weight:400;font-style:normal;letter-spacing:0}
.intro-parent{font-family:var(--font);font-size:16px}.orbient-wordmark{font-size:24px;color:var(--ink);text-decoration:none;line-height:1}.orbient-wordmark span{color:var(--aqua)}.intro-brand-link{font-size:clamp(24px,3vw,32px)}

/* Consistent external-link glyph and a more legible header wordmark. */
.external-link-icon{display:inline-block;width:16px;height:16px;margin-left:8px;vertical-align:-1px;flex:none;color:var(--aqua)}header .wordmark{font-size:28px;line-height:1.2;display:inline-flex;align-items:baseline;white-space:nowrap}header .wordmark .external-link-icon{width:18px;height:18px;align-self:center}.intro-brand-link .external-link-icon{width:18px;height:18px}.field-context>a .external-link-icon{width:14px;height:14px;margin-left:5px}@media(max-width:680px){header .wordmark{font-size:26px}header{gap:10px}header>[data-accessibility]{padding:10px 0;font-size:16px}}@media(max-width:359px){header .wordmark{font-size:24px}.field-context>a .external-link-icon{display:none}}

/* One compact mission dossier; the next action stays in reach. */
.flow-page.mission-dossier{background:var(--surface);border:1px solid var(--line);border-radius:0;padding:24px;margin:0 auto}.dossier-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.dossier-heading .eyebrow{margin:0}.dossier-stamp{font:650 16px var(--font);letter-spacing:1px;color:var(--muted);border:1px solid #57767b;border-radius:0;padding:5px 7px}.mission-dossier>h2{font-size:28px;margin:0 0 16px}.mission-dossier .typed-brief{font-size:16px;line-height:1.65;padding:12px 16px;margin:0 0 20px}.mission-dossier .panel{padding:16px 0 0;margin:0;border:0;border-top:1px solid var(--line);border-radius:0;background:none}.mission-dossier .panel>.eyebrow{display:none}.mission-dossier #city{font-size:21px;margin:0 0 8px}.mission-dossier .badge{font-size:16px;padding:4px 8px}.mission-dossier .readings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}.mission-dossier .readings>div{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0;border:0;font-size:16px}.mission-dossier .readings b{font-size:18px}.mission-dossier #dataTime{font-size:16px;line-height:1.45;margin:12px 0 0}.mission-dossier .game-options{margin-top:16px}.mission-dossier .game-options summary{padding:12px 0 0;min-height:36px;font-size:16px}.mission-screen{padding-bottom:160px}.mission-screen #stepContinue{position:fixed;bottom:calc(env(safe-area-inset-bottom,0px) + 84px);left:50%;transform:translateX(-50%);width:min(560px,calc(100% - 32px));margin:0;z-index:40;box-shadow:0 0 0 10px var(--bg),0 12px 28px #0008}.mission-screen #stepContinue:active{transform:translateX(-50%) translateY(1px)}@media(max-width:680px){.flow-page.mission-dossier{padding:20px}.mission-screen .flow-stage{min-height:0}.mission-screen .flow-nav{margin-bottom:16px}.mission-dossier .typed-brief{font-size:16px}.dossier-heading{margin-bottom:12px}.mission-dossier>h2{font-size:26px}.mission-screen #stepContinue{bottom:calc(env(safe-area-inset-bottom,0px) + 84px)}}@media(max-width:359px){.dossier-heading{flex-wrap:wrap}.mission-dossier .readings{gap:8px}.mission-dossier .readings b{font-size:16px}}

/* Bottom-edge page tabs keep the dossier compact and familiar. */
.mission-dossier .dossier-heading{margin-bottom:20px}.dossier-page{min-height:240px;outline-offset:4px}.dossier-page h2{font-size:28px;margin:0 0 16px}.dossier-page .typed-brief{margin-bottom:0}.mission-dossier .dossier-page .panel{padding:0;margin:0;border:0}.mission-dossier .dossier-page .game-options{margin:0;border:0}.dossier-page .game-options>summary,.dossier-page .game-options>hr{display:none}.dossier-page .game-options label{margin-top:16px}.dossier-page .game-options label:first-of-type{margin-top:0}.dossier-tabs{display:flex;gap:4px;margin:12px -24px -24px;padding:0 12px;background:var(--bg);border-top:1px solid var(--line);border-radius:0}.dossier-tabs button{flex:1;min-height:48px;background:transparent;border:1px solid transparent;border-top:0;border-radius:0;color:var(--muted);font-size:16px;padding:12px 8px;position:relative;top:-1px}.dossier-tabs button[aria-selected=true]{color:var(--aqua);background:var(--surface);border-color:var(--line);box-shadow:inset 0 -3px var(--aqua)}.dossier-tabs button:focus-visible{outline-offset:-4px}.dossier-page[hidden]{display:none!important}@media(max-width:680px){.dossier-tabs{margin-right:-20px;margin-left:-20px;margin-bottom:-20px}.dossier-page{min-height:210px}.dossier-page h2{font-size:26px}}

.mission-place{font-size:16px;font-weight:650;line-height:1.4;color:var(--ink)!important;padding:10px 12px;margin:0 0 18px;border:1px solid #57767b;border-radius:0;background:var(--bg);overflow-wrap:anywhere;min-height:42px}.mission-dossier .badge{white-space:normal;line-height:1.5}

#overlayTitle:has(.ready-title-art){width:min(100%,380px);line-height:0;margin:0 auto 12px}.ready-title-art{display:block;width:100%;height:auto;max-height:30dvh;object-fit:contain}.overlay:has(.ready-title-art){justify-content:center}body.game-active #overlayTitle:has(.ready-title-art){margin-bottom:8px}

/* Character identity stays readable outside the raster artwork. */
.germ-identity{margin:0 0 16px;text-align:center}.germ-identity h3{font-size:clamp(28px,7vw,34px);font-weight:800;line-height:1.1;margin:0 0 6px;color:var(--ink)}.germ-identity p{font:700 16px/1.3 var(--font);letter-spacing:1px;color:var(--aqua);margin:0}.lesson-sheet .germ-identity{margin:0 0 14px}.lesson-sheet .villain-card-art{width:min(100%,calc(42dvh * 1.0933))}

/* Non-playing overlays use the available screen, not the top of a square maze. */
body.game-active .arena:has(#overlay:not([hidden]))>.steer-pad,body.game-active .arena:has(#overlay:not([hidden]))>.direction-buttons,body.game-active .arena:has(#overlay:not([hidden]))>.hud,body.game-active.practice-mode .arena:has(#overlay:not([hidden]))>.objective{display:none!important}
body.game-active .arena:has(#overlay:not([hidden])) .canvas-wrap{flex:1;width:100%;height:auto;min-height:0;max-width:720px;align-self:center;display:flex}
body.game-active .arena:has(#overlay:not([hidden])) #game{display:none}
body.game-active .arena:has(#overlay:not([hidden])) .overlay{inset:0;background:var(--bg);padding:clamp(20px,5vw,40px);gap:20px;justify-content:center;justify-content:safe center}
body.game-active .arena:has(#overlay:not([hidden])) .overlay h2{font-size:clamp(30px,7vw,42px);line-height:1.1;max-width:480px}
body.game-active .arena:has(#overlay:not([hidden])) .overlay p{font-size:18px;line-height:1.5;max-width:440px;margin:0 0 8px}
body.game-active .arena:has(#overlay:not([hidden])) .overlay button{width:min(100%,420px);min-height:54px;font-size:18px}
body.game-active .arena .overlay #start.primary{background:var(--aqua);border:1px solid var(--aqua);color:var(--bg)}
body.game-active .arena .overlay #practice:not(.primary){background:transparent;border-color:transparent;color:var(--muted);order:6}
.flow-stage{min-height:0}.flow-page{padding-top:8px;padding-bottom:8px}.dossier-page{min-height:190px}@media(max-width:680px){.flow-nav{margin-bottom:16px}.dossier-page{min-height:170px}}

#difficultyLabel{display:inline-block;font-size:16px;font-weight:800;letter-spacing:.08em;color:var(--aqua,#68d6d1);margin-left:8px}

/* Arcade display: scores first, supporting status kept compact. */
.arcade-scores{display:flex;justify-content:space-between;flex-basis:100%;width:100%;padding:0 0 7px;margin-bottom:2px;border-bottom:1px solid var(--line);font:700 16px/1.2 var(--font);letter-spacing:.12em;color:var(--muted)}
.arcade-scores>span{display:flex;flex-direction:column;gap:3px}.arcade-scores>span:last-child{text-align:right}.hud .arcade-scores b{font:800 clamp(20px,4vw,28px)/1 var(--font);font-variant-numeric:tabular-nums;letter-spacing:.06em;color:var(--ink)}
#overlayText,#winScores{white-space:pre-line;font-variant-numeric:tabular-nums}
.overlay:has(#start.primary) #overlayTitle{font-family:var(--font);font-weight:900;letter-spacing:.04em}
.overlay:has(#start.primary) #overlayText,#winScores{font-family:var(--font);line-height:1.8}
.story-intro,.mission-file,.lesson-sheet,.win-sheet{border-radius:0;box-shadow:none}
.info-tabs button,.dossier-tabs button{border-radius:0}
.lesson-tip{background:transparent;border:0;border-radius:0}
#start,#nextLevel,#practice,.step-continue{letter-spacing:.04em;border-radius:0}

/* Final interface system: open surfaces, square controls, readable type. */
button,input,select,summary{font-family:var(--font);font-size:18px;min-height:48px}
button{font-weight:750}.small,.hint,#locationStatus,dialog .small,.lesson-more summary,.lesson-more p,.lesson-more a,.mission-dossier #dataTime{font-size:16px;line-height:1.5}
.flow-nav b{font-size:20px}.flow-nav span,.eyebrow,.prototype,.badge,.dossier-stamp{font-size:16px;letter-spacing:.05em}
.story-intro,.flow-page.mission-dossier,.arena{border:0;background:var(--bg)}
.story-copy{background:var(--bg)}.mission-place{background:none;border:0;border-bottom:1px solid var(--line);padding:0 0 14px;font-size:20px}
.typed-brief,.mission-dossier .typed-brief{font-family:var(--font);font-size:18px;line-height:1.6;background:none;padding:8px 0 8px 16px}
.dossier-tabs,.info-tabs{background:none;border-bottom:1px solid var(--line);padding:0;gap:0}
.dossier-tabs button,.info-tabs button{font-size:18px;min-height:52px;box-shadow:none;background:none}
.dossier-tabs button[aria-selected=true],.info-tabs [aria-pressed=true]{background:none;border-color:transparent;border-bottom:3px solid var(--aqua);box-shadow:none;color:var(--aqua)}
.nudge,.plus-preview{background:none;border:0;border-left:2px solid var(--aqua);padding:4px 0 4px 16px}
dialog{box-shadow:none;border:1px solid #6b858d}dialog::backdrop{backdrop-filter:none}
.overlay p,body.game-active .overlay p{font-size:18px}.overlay:has(#start.primary) #overlayTitle,.overlay:has(#start.primary) #overlayText{font-family:var(--font)}
.arcade-scores{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:14px}.hud .arcade-scores b{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:26px}
.hud{font-size:14px}.hud b{font-size:20px}#difficultyLabel{font-size:14px}.steer-pad span{font-size:16px}
.field-context button,header>[data-accessibility]{font-size:16px}.field-context>a{font-size:22px}
@media(max-width:680px){.story-copy{padding:20px 0}.flow-page.mission-dossier{padding:16px 20px}.mission-dossier .readings{gap:8px}.mission-dossier .readings>div{font-size:16px}.mission-dossier .readings b{font-size:22px}nav button{font-size:16px}.flow-nav b{font-size:20px}}

/* Oversized arcade calls, with room for labels to wrap on small screens. */
#start,#nextLevel,#practice.primary,#villainStart{font-size:clamp(26px,6vw,36px);font-weight:900;line-height:1.1;min-height:68px;padding:16px 20px;white-space:normal;overflow-wrap:anywhere}
body.game-active .arena:has(#overlay:not([hidden])) .overlay #start,body.game-active .arena:has(#overlay:not([hidden])) .overlay #practice.primary{font-size:clamp(28px,7vw,38px);min-height:72px}
.overlay:has(#start.primary) #overlayTitle,body.game-active .arena:has(#overlay:not([hidden])) .overlay:has(#start.primary) #overlayTitle{font-size:clamp(40px,10vw,64px);font-weight:900;line-height:1.05;letter-spacing:-.025em}
#winTitle{font-size:clamp(32px,8vw,48px);font-weight:900;line-height:1.1}
.hud .arcade-scores b{font-size:clamp(26px,6vw,34px)}
@media(max-height:560px){#start,#nextLevel,#practice.primary,#villainStart,body.game-active .arena:has(#overlay:not([hidden])) .overlay #start,body.game-active .arena:has(#overlay:not([hidden])) .overlay #practice.primary{font-size:26px;min-height:56px;padding:12px 16px}}

/* During play the maze takes priority over menus and secondary records. */
body.game-active .field-context{flex-wrap:nowrap;gap:6px;min-height:44px;padding:0 6px}
body.game-active .field-context>a{font-size:clamp(16px,4.5vw,21px);white-space:nowrap;min-width:0;flex:1}
body.game-active .field-context>a .external-link-icon{display:none}
body.game-active .field-context button{flex:none;min-width:44px;min-height:44px;padding:6px 8px;font-size:14px;background:none;border-color:transparent}
body.game-active .hud{flex-wrap:nowrap;min-height:40px;gap:8px;padding:4px 8px;font-size:12px;border:0}
body.game-active .hud>span{white-space:nowrap}
body.game-active .hud b{font-size:18px;margin-left:3px}
body.game-active .arcade-scores{flex:1;flex-basis:auto;width:auto;border:0;margin:0;padding:0;font-size:12px;letter-spacing:.03em}
body.game-active .arcade-scores>span{gap:0;flex-direction:row;align-items:baseline;flex-wrap:wrap;column-gap:5px}
body.game-active .hud .arcade-scores b{font-size:22px;letter-spacing:0;margin:0}
body.game-active .arcade-scores>span:last-child,body.game-active #difficultyLabel,body.game-active #shieldStatus{display:none!important}
body.game-active .steer-pad{margin:6px 4px 4px;padding:12px 16px}
body.game-active .steer-pad span{font-size:16px}
@media(max-width:359px){body.game-active .hud{gap:5px;padding-inline:4px}body.game-active .hud b{font-size:16px}body.game-active .hud .arcade-scores b{font-size:20px}}

.pause-page-tabs{display:flex;border-bottom:1px solid var(--line);gap:0;margin:0 0 24px}.pause-page-tabs button{flex:1;min-width:0;min-height:48px;padding:10px 8px;font-size:16px;background:none;border:0;border-bottom:3px solid transparent}.pause-page-tabs button[aria-selected=true]{color:var(--aqua);border-bottom-color:var(--aqua)}#pauseGame [role=tabpanel]{padding:0 0 8px}#pauseGame .music-options{border:0;margin-top:20px}#pauseGame .music-options>summary{display:none}


.campaign-finale #winTitle{font-size:clamp(36px,8vw,52px);line-height:1.05}.campaign-finale #finaleMessage{font-size:20px;line-height:1.4}.campaign-finale #shareScore,.campaign-finale #nextLevel{width:100%;font-size:28px;min-height:64px}.campaign-finale #replayCampaign{width:100%;font-size:20px;margin-top:12px}.campaign-finale #shareScoreStatus:empty{display:none}

#leaderboardDialog{width:min(94vw,560px)}#leaderboardTitle{font-size:clamp(32px,8vw,48px);font-weight:900}#scoreEntry h3{font-size:28px}#scoreEntry label{margin-top:16px}#scoreEntry form button{font-size:20px}#scoreList{padding-left:32px;margin:24px 0;font:700 18px/1.5 ui-monospace,monospace}#scoreList li{padding:10px 0;border-bottom:1px solid var(--line)}#scoreList li strong{display:inline-block;min-width:40%;font-size:18px}#scoreList li b{font-size:22px}#scoreList li small{display:block;font-size:16px;color:var(--muted)}.board-filters{display:grid;grid-template-columns:1fr 1fr;gap:12px}.board-filters label{font-size:16px}.board-filters select{font-size:16px}#boardClose{width:100%;font-size:22px}.leaderboard-link{width:100%;font-size:18px}

.haptics-options{border-top:1px solid var(--line);padding-top:20px;margin:20px 0}.haptics-options>button{width:100%}.haptics-options .row{display:grid;grid-template-columns:1fr 1fr}.haptics-options .row button{padding:12px 8px;font-size:16px}

.endless-clock{position:absolute;top:6px;left:50%;transform:translateX(-50%);z-index:2;pointer-events:none;padding:3px 10px;background:#071216;color:#f2f7f5;border:1px solid #aec2c3;font:800 18px/1.3 ui-monospace,monospace;font-variant-numeric:tabular-nums}.endless-clock.time-low{color:#ffe0a0;border-color:#ffe0a0}#endlessTimerToggle{width:100%;margin-top:20px}
/* Opening hero (ACH-HERO-001, Oct 26 2026): portrait sticker art, capped so the play button stays on screen. */
.dw1-hero-art{width:auto;max-width:100%;max-height:min(56vh,620px);margin:0 auto;filter:drop-shadow(0 10px 24px #0008)}
.dw1-sidekick-art{max-height:340px;width:auto;max-width:100%;margin:0 auto}
