*{box-sizing:border-box} :root{--navy:#102334;--ink:#152c3d;--muted:#596d7a;--line:#d8e2e8;--teal:#086b62;--mint:#68ead0;--gold:#fae49b;--blue:#315efb}body{margin:0;background:var(--navy);color:var(--ink);font:17px/1.85 Tahoma,Arial,sans-serif}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:14px;padding:12px 24px;background:var(--teal);color:white;font-weight:700;min-height:52px}button:hover{filter:brightness(1.08)}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #548aff;outline-offset:4px}a{color:inherit}header{max-width:1220px;margin:auto;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;color:white;gap:20px}.brand{text-decoration:none;font-size:32px;font-weight:bold;color:var(--mint);line-height:1.1}.brand span{display:block;color:#dceaf0;font-size:13px;font-weight:normal;margin-top:10px}.course span{display:block;font-size:14px;color:#adbdc8}.edition{font-size:14px;border:1px solid #496072;border-radius:30px;padding:5px 16px}main{max-width:1160px;margin:16px auto 44px;padding:0 24px}.layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px}.rail{color:#ccdae3}.rail h1{font-size:26px;color:#fff;margin:0 0 8px;line-height:1.5}.rail p{font-size:15px}.path{list-style:none;padding:0;margin:28px 0;position:relative}.path li{display:flex;gap:13px;align-items:center;margin-bottom:16px;font-size:14px}.node{width:33px;height:33px;display:grid;place-items:center;border:1px solid #496172;border-radius:50%;flex:none}.path .active{color:var(--mint);font-weight:bold}.active .node{background:var(--mint);color:var(--navy);border:0}.done .node{border-color:var(--mint);color:var(--mint)}.rail .aside-note{border-top:1px solid #405767;padding-top:18px;font-size:14px;color:#adc2cf}.surface{background:#f7fafb;border-radius:26px;padding:30px;min-width:0;box-shadow:0 22px 45px #0002}.eyebrow{font-size:14px;color:var(--teal);font-weight:bold;margin:0 0 10px;letter-spacing:.02em}h1,h2,h3,p{margin-top:0}h1{font-size:32px;line-height:1.6}h2{font-size:25px;line-height:1.65;margin-bottom:16px}h3{font-size:19px;line-height:1.7;margin-bottom:10px}.subtitle,.muted{color:var(--muted)}.subtitle{font-size:17px}.pill{display:inline-block;background:#e2f3ef;color:#07584e;padding:3px 12px;border-radius:20px;font-size:14px;margin:0 0 7px 6px}.pill.gold{background:#fff1c7;color:#705017}.facts{display:flex;gap:10px;margin:20px 0;flex-wrap:wrap}.fact{background:#eaf0f5;padding:12px 16px;border-radius:14px;flex:1;min-width:100px}.fact strong{display:block;font-size:25px;line-height:1.5}.fact span{font-size:14px;color:var(--muted)}form{margin-top:22px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field label{display:block;font-size:15px;margin-bottom:6px;font-weight:700}.field input{width:100%;min-width:0;border:1px solid #a7bac7;border-radius:11px;padding:10px 13px;color:var(--ink);background:white}.field small{display:block;font-size:13px;color:var(--muted);margin-top:5px}.wide{grid-column:1/-1}.callout{border-inline-start:4px solid #3a91a2;background:#eaf3f8;padding:13px 17px;border-radius:8px;margin:18px 0;font-size:15px}.callout.warn{border-color:#bb8a30;background:#fff3d6}.callout.good{border-color:#147568;background:#e3f3ed}.actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:23px}.secondary{background:#e5edf2;color:#29495d}.ghost{background:transparent;color:var(--muted);border:1px solid var(--line)}.danger{color:#9c3232;background:#fff1ef}.small{font-size:14px;padding:7px 13px;min-height:44px}.tools{display:flex;gap:8px;flex-wrap:wrap;margin-top:26px;padding-top:18px;border-top:1px solid var(--line)}.progressline{display:flex;justify-content:space-between;gap:10px;font-size:14px;color:var(--muted);margin-bottom:12px}.progress{height:6px;background:#dce7ed;border-radius:5px;margin-bottom:27px;overflow:hidden}.progress div{height:100%;background:var(--teal)}.prompt{font-size:21px;margin:12px 0 20px}.equation,.math{direction:ltr;unicode-bidi:isolate;font-family:Arial,Tahoma,sans-serif}.equation{display:block;text-align:center;border-radius:16px;background:#eaf0f5;padding:17px;font-size:26px;line-height:1.8;margin:16px 0;overflow-wrap:anywhere}.options{display:grid;gap:11px;margin:22px 0}.option{text-align:right;background:#fff;color:var(--ink);border:2px solid #d4dfe6;display:flex;align-items:center;gap:14px;line-height:1.7;font-weight:normal;width:100%;padding:12px 16px}.option .letter{font-size:14px;border-radius:9px;background:#eaf0f5;width:30px;height:30px;display:grid;place-items:center;flex:none}.option.selected{border-color:var(--teal);background:#e5f5f0}.option.selected .letter{background:var(--teal);color:#fff}.option:disabled{opacity:1}.feedback{padding:20px;background:#e5f2f0;border:1px solid #83b5aa;border-radius:16px;margin-top:20px}.feedback.incorrect{background:#fff1d5;border-color:#dcbe7c}.feedback p:last-child{margin-bottom:0}.module{padding:20px;background:#fff;border:1px solid var(--line);border-radius:17px;margin:15px 0}.module ol{padding-inline-start:25px}.module li{margin-bottom:10px}.review details{padding:10px 0;border-bottom:1px solid var(--line)}summary{cursor:pointer;font-size:16px}.scoregrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.score{border:1px solid var(--line);background:#fff;border-radius:15px;padding:15px}.score b{display:block;font-size:30px;color:var(--teal)}.score small{font-size:13px;color:var(--muted)}.tablewrap{overflow-x:auto;margin-top:22px}table{width:100%;border-collapse:collapse;background:white;font-size:14px}th,td{text-align:right;padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{background:#e8f0f5}td small{display:block;color:var(--muted);font-size:12px}.badge{background:var(--navy);color:var(--gold);border-radius:16px;padding:18px 22px;margin:18px 0}.badge strong{display:block;font-size:24px}.badge span{color:#d8e5ec;font-size:15px}.diagram{background:#edf3f7;border-radius:14px;padding:12px;margin:15px 0}.diagram svg{display:block;width:100%;max-height:170px}#notice{position:fixed;bottom:16px;left:16px;right:16px;margin:auto;max-width:600px;background:#102334;color:white;border:1px solid #70a59f;padding:12px 18px;border-radius:12px;font-size:15px;display:none;z-index:10}#notice.show{display:block}.saving{font-size:13px;color:var(--muted);margin:12px 0 0}.checks{display:grid;gap:12px;margin-top:15px}.check{display:flex;gap:10px;align-items:flex-start}.check input{width:22px;height:22px;margin-top:6px;flex:none}dialog{border:0;border-radius:20px;padding:28px;max-width:min(90vw,500px);color:var(--ink)}dialog::backdrop{background:#102334b8}.print-only{display:none}.wrapcode{overflow-wrap:anywhere;direction:ltr;unicode-bidi:isolate;font-size:12px}.empty-note{padding:22px;background:#eff4f8;border-radius:14px}.question-code{font-size:12px;color:#6d7c89;direction:ltr}.reveal-answer{font-weight:bold;color:#0a6258}@media(max-width:850px){.layout{grid-template-columns:1fr}.rail{display:flex;flex-wrap:wrap;gap:8px 20px}.rail h1{font-size:24px}.rail p,.rail .aside-note{display:none}.path{margin:0;display:flex;flex-wrap:wrap;gap:8px 12px;width:100%}.path li{margin:0;font-size:12px;gap:5px}.node{width:25px;height:25px}.surface{padding:24px}.edition{display:none}}@media(max-width:540px){body{font-size:16px}header{padding:18px 18px;gap:10px}.course{font-size:14px;text-align:left}.course span{font-size:12px}.brand{font-size:29px}.brand span{font-size:12px}main{padding:0 12px;margin-top:6px}.surface{border-radius:20px;padding:21px 17px}.formgrid{grid-template-columns:1fr}.wide{grid-column:auto}h1{font-size:27px}h2{font-size:23px}.prompt{font-size:19px}.equation{font-size:23px}.facts{gap:7px}.fact{padding:10px;min-width:85px}.fact strong{font-size:22px}.scoregrid{grid-template-columns:1fr}.score{display:flex;justify-content:space-between;align-items:center;gap:9px}.score b{font-size:24px}.path li{font-size:12px}.actions>button{flex-grow:1}.options{gap:9px}.option{padding:12px}.layout{gap:17px}th,td{padding:10px 7px}.tablewrap table{min-width:580px}}@media(prefers-reduced-motion:no-preference){.surface{animation:arrive .2s ease-out}@keyframes arrive{from{opacity:.7;transform:translateY(4px)}to{opacity:1;transform:none}}}@media print{@page{size:A4;margin:14mm}body{background:white;color:#111;font-size:12px;line-height:1.7}header{padding:0 0 10px;color:#111}.brand{color:#07584e;font-size:24px}.brand span,.course span{color:#444}.edition,.rail,.actions,.tools,.saving,#notice,.no-print,dialog{display:none!important}main{padding:0;margin:0;max-width:none}.layout{display:block}.surface{background:white;box-shadow:none;padding:0;border-radius:0}.print-only{display:block}.tablewrap{overflow:visible}.tablewrap table{min-width:0}th,td{padding:7px;font-size:11px}h1,h2{font-size:21px}.scoregrid{display:grid;grid-template-columns:repeat(3,1fr)}.score{padding:9px}.score b{font-size:22px}.badge{background:#f2f6f6;color:#16473f;padding:10px;border:1px solid #b5c9c3}.badge span{color:#333}.callout{font-size:12px;padding:10px}tr,.score,.badge,.callout{break-inside:avoid}thead{display:table-header-group}.module{break-inside:avoid}.equation{font-size:19px;padding:7px}}
/* City of Codes: game surface */
:root{--navy:#0c1830;--ink:#182b43;--muted:#57677c;--line:#d4dfec;--teal:#1658a6;--mint:#9be4d2;--gold:#ffd89e}body{background:radial-gradient(ellipse at 90% 0,#243d67 0,transparent 52%),#0c1830;min-height:100vh}header{padding:22px 32px}.brand{color:#ffd89e}main{max-width:1160px}.layout{grid-template-columns:300px minmax(0,1fr);gap:32px}.rail{padding:8px 10px}.rail h1{font-size:46px;line-height:1.35;letter-spacing:-1px;margin:14px 0}.rail h1 span{color:#ffd89e}.mission-number{font-size:13px;letter-spacing:.04em;color:#aac8e7}.mission-brief{line-height:1.9;color:#b5c9df}.city-scene{height:170px;position:relative;overflow:hidden;margin:0 -2px 12px}.city-gates{position:absolute;inset:45px 5px 8px;display:flex;align-items:flex-end;justify-content:space-between;direction:ltr}.city-gate{width:54px;height:92px;border:1px solid #6382ab;border-radius:36px 36px 5px 5px;background:linear-gradient(#304d78,#132b4c);display:grid;place-items:center;position:relative}.city-gate:nth-child(2){height:112px}.city-gate:nth-child(3){height:84px}.city-gate:nth-child(4){height:125px}.city-gate span{font-family:Arial,sans-serif;font-size:35px;color:#b6c8df}.city-gate i{width:24px;height:26px;border:1px solid #69819e;border-bottom:0;position:absolute;bottom:0;border-radius:14px 14px 0 0}.city-gate.lit{border-color:#9be4d2;box-shadow:inset 0 0 25px #9be4d22a}.city-gate.lit span{color:#9be4d2}.signal-star{position:absolute;top:10px;right:30px;color:#ffd89e;font-size:29px}.signal-line{position:absolute;bottom:7px;height:2px;background:#9be4d2;left:0;right:0}.orbit{position:absolute;width:210px;height:210px;border:1px dashed #47648c;border-radius:50%;top:15px;left:30px}.o2{width:250px;height:250px;left:10px;top:-5px}.surface{background:#fcfbf7;border-radius:24px;padding:34px;box-shadow:0 20px 60px #02091850;border:1px solid #ffffff32}.eyebrow{color:#1658a6;font-size:14px}.surface h1{font-size:42px;line-height:1.35;margin:16px 0}.title-accent{color:#1658a6}.subtitle{line-height:1.95}.start-route{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin:20px 0;color:#425a76;font-size:12px}.start-route span{background:#eef1f5;padding:6px 10px;border-radius:10px}.start-route i{font-style:normal}.calm-note{font-size:14px;line-height:1.9;background:#eef3f8;padding:13px 15px;border-radius:12px;margin-top:20px;color:#475d76}.launch{display:flex;width:100%;justify-content:space-between;align-items:center;background:#1658a6;box-shadow:0 5px 0 #0d3973;padding:15px 22px;font-size:18px}.launch span{font-size:27px;line-height:1}.field input{border-radius:12px;background:white;min-height:52px}.side-points{border-top:1px solid #405774;padding-top:16px;color:#ffd89e}.side-points small{display:block;color:#a9bed5;font-size:12px}.path .active{color:#ffd89e}.active .node{background:#ffd89e}.done .node{border-color:#9be4d2;color:#9be4d2}.path li{font-size:14px;margin-bottom:12px}.prompt{font-size:20px;line-height:1.9}.equation{background:#e8eef7;border:1px solid #d1ddef;border-radius:16px;color:#123f79;font-size:30px}.option{border-radius:14px;border-color:#d5deeb;box-shadow:0 3px 0 #e5eaf0;min-height:60px;padding:13px 16px}.option.selected{background:#eaf2ff;border-color:#1658a6;box-shadow:0 3px 0 #1658a6}.option.selected .letter{background:#1658a6}.letter{font-family:Tahoma,sans-serif}.progress{background:#e1e8f1;height:8px;margin-bottom:22px}.progress div{background:#1658a6;border-radius:10px}.progressline{align-items:center}.logic-inputs{display:flex;justify-content:center;align-items:center;gap:16px;margin:18px 0}.input-signal{background:#e9eef4;border:1px solid #a8b7cb;padding:8px 24px;min-width:105px;border-radius:12px;text-align:center}.input-signal b{display:block;font-family:Arial,sans-serif;font-size:24px}.input-signal span{font-size:15px}.input-signal.on{border-color:#217f68;background:#e6f5ef;color:#175542}.input-signal.off{color:#714347;background:#f7edee;border-color:#d3b4b8}.input-link{font-size:25px;color:#1658a6}.feedback{background:#e2f4ec;border:2px solid #319573}.feedback.incorrect{background:#fff0ef;border-color:#c36b63}.feedback.incorrect h3{color:#9b342b}.feedback h3{color:#176746}.module{background:#fff;border-radius:16px;padding:18px}.callout{background:#edf3fc}.badge{border:1px solid #c7a16a;background:#153459;color:#ffd89e}.scoregrid{gap:9px}.score b{color:#1658a6}.skill-summaries{display:grid;gap:9px;margin:20px 0}.skill-summaries article{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #d6e0ed;padding:12px 15px;border-radius:13px;background:white}.skill-summaries small{display:block;font-size:12px;color:#617187}.skill-summaries bdi{font-size:21px;color:#1658a6;white-space:nowrap}.result-skills{display:grid;gap:14px;margin-top:20px}.result-skills article{padding:18px;border:1px solid #cbd8e7;background:white;border-radius:15px}.result-skills p{font-size:14px;line-height:1.9;margin-top:12px;margin-bottom:0}.skill-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.skill-numbers>div{background:#f0f4f8;border-radius:10px;padding:9px;text-align:center;font-size:14px}.skill-numbers span{font-size:12px;color:#617187;display:block}.skill-numbers small{font-size:12px;display:block}.skill-evidence{color:#1658a6;font-weight:bold}.growth-note{margin-top:16px;font-size:14px;padding:12px;background:#eaf2fa;border-radius:10px}.lab{background:#152c49;color:#eaf3ff;padding:18px;border-radius:17px;margin-top:20px}.lab p{font-size:14px}.lab-controls{display:flex;gap:8px;flex-wrap:wrap}.lab-controls button{font-size:14px;padding:9px 13px;background:#2a456b;color:white;border:1px solid #6f8cae}.lab-controls button[aria-pressed=true]{background:#9be4d2;color:#12372f}.lab-output{font-size:14px;margin-top:14px;padding:10px;background:#203c60;border-radius:9px}.lab-output.on{color:#b1f6d1}.review summary{font-size:14px;line-height:1.9}.saving{line-height:1.8}.session-options summary{font-size:13px}.question-code{display:none}.wrapcode{display:none}
@media(max-width:850px){.layout{grid-template-columns:1fr}.rail{display:grid;grid-template-columns:1fr auto;gap:8px 14px;padding:0 5px}.mission-number{grid-column:1/-1}.rail h1{font-size:28px;line-height:1.2;margin:0}.rail h1 br{display:none}.rail h1 span{margin-inline-start:8px}.city-scene,.mission-brief{display:none}.side-points{grid-column:2;grid-row:2;padding:0;border:0;font-size:12px}.side-points small{display:none}.path{grid-column:1/-1;display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.path li{font-size:11px;margin-bottom:0;gap:4px}.node{width:23px;height:23px}.surface{padding:26px}.rail .mission-brief{display:none}}
@media(max-width:540px){header{padding:16px 18px}.layout{gap:18px}.surface{padding:23px 18px}.surface h1{font-size:35px}.subtitle{font-size:16px}.prompt{font-size:18px}.start-route{gap:5px;font-size:11px}.start-route span{padding:5px 6px}.start-route i{display:none}.rail h1{font-size:25px}.formgrid{gap:12px}.city-gates{gap:6px}.logic-inputs{gap:10px}.input-signal{min-width:90px;padding:8px 16px}.lab-controls{gap:5px}.lab-controls button{flex:1;padding:9px 7px;font-size:13px}.actions>button{width:100%}.option{padding:12px;gap:10px}.skill-numbers{gap:6px}.skill-numbers>div{padding:8px 5px}.result-skills article{padding:14px}.course span{max-width:165px}.score b{font-size:23px}.score{padding:12px}.side-points{max-width:120px;text-align:left}.path li{font-size:10px}.growth-note{font-size:13px}}
@media(prefers-reduced-motion:no-preference){.signal-star{animation:glow 3s infinite alternate}@keyframes glow{to{opacity:.5;transform:scale(.8)}}}
@media print{.city-scene,.lab,.calm-note,.launch,.side-points{display:none!important}.surface{padding:0;border:0;box-shadow:none}.result-skills article{break-inside:avoid}.result-skills p{font-size:11px}.skill-numbers{grid-template-columns:repeat(3,1fr)}.growth-note{background:#f6f6f6}.wrapcode{display:block}.badge{background:#f3f6f9;color:#173452}}

/* Conditional Station: warm rail signage and distinct green routes. */
:root{--navy:#152e2c;--teal:#17634f;--gold:#ffe2a0;--mint:#b3ead2}body{background:radial-gradient(ellipse at 100% 0,#335c50 0,transparent 52%),#152e2c}.surface{background:#fffaf0}.eyebrow,.title-accent,.score b,.skill-evidence{color:#17634f}.launch{background:#17634f;box-shadow:0 5px 0 #104b3b}.rail h1 span{color:#ffe2a0}.option.selected{border-color:#17634f;background:#eaf7ef;box-shadow:0 3px 0 #17634f}.option.selected .letter,.progress div{background:#17634f}.station-map{margin:30px 0;padding:20px 12px;border:1px solid #729f86;border-radius:4px 28px 4px 28px;background:#24473e;position:relative}.map-label{font-size:12px;color:#ffe2a0}.route-track{display:flex;align-items:center;gap:0;margin:20px 0}.route-track b{border:3px solid #ffd18f;border-radius:50%;width:55px;height:55px;display:grid;place-items:center;color:#ffe2a0;background:#17352e}.route-track i{height:8px;flex:1;border-top:2px solid #c4e9d4;border-bottom:2px solid #c4e9d4}.route-switch{color:#b3ead2;font-size:28px;text-align:center}.route-switch span{font-size:13px}.little-train{display:block;text-align:left;color:#ffd18f;letter-spacing:4px;font-size:26px}.badge,.lab{background:#1d463b}.equation{color:#185340;background:#e7f2e8;border-color:#bfd7c7}.author{text-align:center;color:#f3dfb8;font-size:14px;padding:12px 18px 26px}.surface .actions button{background-color:#17634f}.lab-controls button[aria-pressed=true]{background:#b3ead2;color:#113d2e}.growth-note,.callout{background:#eaf4ec}@media(max-width:850px){.station-map{display:none}.rail h1{letter-spacing:0}.mission-number{font-size:12px}}@media print{.author{color:#173c2f;padding:14px 0 0}.station-map{display:none}.badge{background:#f3f6f9;color:#173452}}

:root{--navy:#1a3d3c;--teal:#176c61}body{background:#1a3d3c}.surface .actions button,.launch,.progress div{background:#176c61}.title-accent,.eyebrow,.score b,.skill-evidence{color:#176c61}.station-map,.lab,.badge{background:#1a3d3c}.adventure-symbol{font:80px/1.7 Arial;text-align:center;color:#ffe2a0}.diagram{margin:18px 0;background:#f3f6f5;padding:6px;border:1px solid #d7e4df}.diagram svg{width:100%;height:auto;max-height:360px}.diagram figcaption{font-size:12px;color:#52635b;text-align:center}.equation{font-size:22px}.rail h1{font-size:36px}@media(max-width:850px){.rail h1{font-size:25px}}@media print{.author{color:#183c3d}}