:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#d6e0d8;background:#091e25;font-synthesis:none;--gold:#e6bd78;--muted:#799397;--line:#294148;--panel:#102a31;--green:#a8cba1}*{box-sizing:border-box}body{margin:0;font-size:13px}button,select{font:inherit;color:inherit;background:#153239;border:1px solid #375057;border-radius:5px;padding:9px 12px;cursor:pointer}button:hover{border-color:#caaa70;background:#244047}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--gold);outline-offset:2px}header{height:84px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line);background:#0b232a}.brand{text-decoration:none;color:#eee3c8;display:flex;align-items:center;gap:14px;letter-spacing:2.1px;font-size:17px;font-weight:600}.brand small{display:block;font-size:8px;letter-spacing:2.35px;margin-top:7px;color:#8da4a2}.brand-icon{border:1px solid #ab9367;width:43px;height:43px;display:grid;place-content:center;font-family:Georgia,serif;font-size:22px;transform:rotate(45deg);color:var(--gold)}.brand-icon span{font-size:12px}.brand-icon{line-height:14px}.header-right{display:flex;align-items:center;gap:10px}#saved{font-size:11px;color:#91aba4;margin-right:10px}.runtime{height:29px;background:#102a30;color:#8baaa4;display:flex;align-items:center;justify-content:center;gap:15px;font-size:10px;letter-spacing:.5px;border-bottom:1px solid #264147}.runtime.offline{height:auto;min-height:40px;background:#4b3526;color:#ffdaa9;padding:8px}.runtime button{padding:2px 8px}main{display:grid;grid-template-columns:211px minmax(470px,1fr) minmax(350px,420px);max-width:1800px;margin:auto;min-height:calc(100vh - 113px)}.campaign{padding:29px 19px;background:#0b242b;border-right:1px solid var(--line)}.eyebrow{font-size:9px;letter-spacing:1.7px;font-weight:650;color:#b8a783}h1,h2{font-family:Georgia,"Times New Roman",serif;color:#efe6d0;font-weight:400}h1{font-size:29px;margin:9px 0 0;letter-spacing:-.6px}h2{font-size:24px;margin:11px 0 5px}.muted{color:var(--muted)}.campaign>p{margin:0 0 27px;font-size:11px}nav{display:flex;flex-direction:column;gap:7px}.chapter{background:transparent;border:1px solid transparent;text-align:left;padding:12px 8px;display:flex;gap:11px;align-items:center;position:relative;border-radius:6px}.chapter .number{font-family:Georgia,serif;color:#91a3a1;font-size:17px}.chapter strong{display:block;font-size:11px;font-weight:500;line-height:1.4}.chapter small{display:block;font-size:9px;color:#6f8b90;margin-top:5px}.chapter.active{background:#203b3e;border-color:#516052}.chapter.active .number,.chapter.active strong{color:var(--gold)}.chapter.done .number{color:var(--green)}.chapter:disabled{opacity:.48}.tower-card{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.tower-options{display:flex;margin-top:12px;gap:6px}.tower-options button{font-size:11px;padding:8px 12px}.tower-options .selected{border-color:var(--gold);color:var(--gold)}.tower-card p{font-size:10px;color:var(--muted);line-height:1.6}.restoration{margin-top:22px}.restoration span{display:block;font-family:Georgia,serif;font-size:25px;color:var(--gold)}.restoration small{color:#8a9e99;font-size:10px}.restoration>div{height:3px;background:#274147;margin-top:13px}.restoration i{display:block;background:var(--gold);height:3px}.railway{min-width:0;padding:27px 25px 30px;background:radial-gradient(ellipse at 50% 30%,#18383e,#0d252c 70%)}.world-heading{display:flex;align-items:center;justify-content:space-between}.clock{text-align:right}.clock span{font:22px ui-monospace,monospace;color:#e3d7b7}.clock small{display:block;font-size:7px;letter-spacing:1.4px;color:#789492;margin-top:6px}.map-wrap{position:relative;margin:16px -10px 0}#world{display:block;width:100%;max-height:500px;overflow:visible}.map-caption{position:absolute;top:12px;left:18px;display:flex;align-items:center;gap:6px;font-size:9px;color:#8ca5a6}.weather-dot{width:5px;height:5px;border-radius:50%;background:#8cadb4}.map-key{position:absolute;bottom:8px;left:20px;display:flex;gap:15px;font-size:8px;color:#8daba8}.map-key span:nth-child(2){color:var(--gold)}.map-key span:nth-child(3){color:var(--green)}.transport{display:flex;align-items:center;justify-content:space-between;margin:9px 0 20px;padding-top:14px;border-top:1px solid var(--line);gap:8px}.transport>div{display:flex;align-items:center;gap:7px}.transport button,.transport select{font-size:10px;padding:8px 10px}.primary{background:var(--gold);color:#1b3032;border-color:var(--gold);font-weight:650}.primary:hover{background:#f3d396;color:#13252a}.ghost-label{font-size:9px;color:#8aa29b;display:flex;align-items:center;gap:4px}.ghost-label input{accent-color:var(--gold)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;border:1px solid #324c50;border-radius:6px;background:#0c252bcc;padding:17px 14px}.stats>div:not(:first-child){border-left:1px solid var(--line);padding-left:15px}.stats small{font-size:7px;letter-spacing:1.05px;color:#9aac9f;display:block}.stats strong{font-family:Georgia,serif;font-size:27px;font-weight:400;color:#e6dabc;display:block;margin-top:7px}.stats strong span{font-family:system-ui;font-size:8px;color:#789493;margin-left:3px}.objective{display:flex;gap:13px;border-bottom:1px solid var(--line);padding:23px 0 19px}.objective-symbol{color:var(--gold);font-size:30px;line-height:1}.objective h3{margin:8px 0;font-weight:500;font-size:13px;color:#e6dfc9}.objective p{color:#91a6a4;line-height:1.7;font-size:11px;margin:0}.reward{color:#b9caa8;font-size:9px;margin-top:12px}.fleet-header{display:flex;justify-content:space-between;align-items:center;margin-top:12px}.fleet-header h3{font-size:12px;font-weight:500}.fleet-header span{font-size:9px;color:#849d9d}.fleet-scroll{max-height:250px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:10px}th{font-size:8px;font-weight:500;color:#6f8d91;text-align:left;letter-spacing:1px;padding:10px 8px}td{padding:10px 8px;border-top:1px solid #254047;color:#bdc9bf}td small{display:block;font-size:9px;color:#779397;margin-top:4px}.fleet tr.highlight{background:#6e623533}.status{font-size:9px;color:#a8b69a}.status.moving{color:var(--gold)}.status.delivered{color:#a5dba7}.status.pending{color:#e1aa77}.desk{background:#0a2027;border-left:1px solid var(--line);padding:24px 20px;min-width:0}.desk-heading{display:flex;justify-content:space-between;align-items:center;font-size:8px;letter-spacing:1px;gap:5px}.desk-heading>div{display:flex;align-items:center;gap:7px}.live-dot{width:5px;height:5px;border-radius:50%;background:#b9c997;box-shadow:0 0 8px #8ad48a}.language{color:#a5b7ac;font-size:8px;letter-spacing:0;border:1px solid #345056;border-radius:4px;padding:5px}.editor-tabs{display:flex;align-items:center;gap:6px;margin-top:22px;border:1px solid #2c454b;border-bottom:0;border-radius:6px 6px 0 0;background:#132d34;padding:7px}.editor-tabs button{border:0;background:none;padding:4px;font-size:9px;color:#8fa6a5}.editor-tabs .active{margin-right:auto;color:#d0d5c5}.editor-tabs span{color:var(--gold);font-size:6px;margin-left:7px}.editor-wrap{height:315px;border:1px solid #2c454b;border-bottom:0;display:flex;background:#091c23;padding-top:16px;overflow:hidden}.editor-wrap pre{font:12px/1.85 ui-monospace,SFMono-Regular,Consolas,monospace;color:#41636d;margin:0;text-align:right;width:38px;flex-shrink:0;padding-right:12px;overflow:hidden;user-select:none}textarea{color:#d9c69b;tab-size:2;background:transparent;resize:vertical;border:0;outline:0!important;font:12px/1.85 ui-monospace,SFMono-Regular,Consolas,monospace;width:100%;padding:0 12px 25px 0;white-space:pre;min-height:100%;resize:none}.editor-footer{border:1px solid #2c454b;border-top:0;border-radius:0 0 6px 6px;display:flex;justify-content:space-between;padding:8px;color:#60858c;font-size:8px;background:#091c23}.run-controls{display:flex;gap:8px;margin:12px 0}.run-controls .primary{flex:1;text-align:left;font-size:11px;padding:11px}.run-controls kbd{float:right;font:9px system-ui;opacity:.6}.run-controls #stop{font-size:10px}.transaction{display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--line);padding:4px 0 18px}.transaction>div{margin-right:auto}.transaction small{font-size:7px;letter-spacing:1.4px;color:#7d9a98;display:block}.transaction span{font-size:9px;color:#91a69f;display:block;margin-top:5px}.transaction button{font-size:9px;padding:7px}.console-heading{display:flex;justify-content:space-between;align-items:center;margin-top:13px}.console-heading h3{font-size:11px;font-weight:500}.console-heading button{border:0;background:none;font-size:8px;color:#7b999b;padding:0}.output{min-height:80px;max-height:215px;overflow:auto;font:10px/1.65 ui-monospace,monospace}.output p{margin:7px 0;white-space:pre-wrap;overflow-wrap:anywhere}.output .error{color:#e8a591}.output .success{color:#b7c998}.output th,.output td{font-size:9px;padding:6px}.hint{display:flex;gap:10px;margin-top:17px;border:1px solid #494c3d;border-radius:5px;padding:13px;background:#393d2329}.hint>span{font-size:23px;color:var(--gold)}.hint strong{color:#d5c497;font-weight:500;font-size:10px}.hint p{color:#9dada3;font-size:10px;line-height:1.65;margin:6px 0}.hint button{border:0;background:none;padding:0;font-size:9px;color:var(--gold)}.history{margin-top:25px}.history .eyebrow{font-size:8px}#events{max-height:150px;overflow:auto;margin-top:12px}#events p{font-size:9px;color:#91a7a6;line-height:1.6;margin:7px 0}#events time{font-family:monospace;color:#527982;margin-right:9px}#events .delivery,#events .success{color:#aec9a1}#events .error{color:#db9c88}.complete{position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);width:290px;padding:23px;background:#102e34f2;border:1px solid #b69b63;box-shadow:0 20px 60px #041419;border-radius:8px;text-align:center}.complete h2{font-size:28px;margin:10px 0}.complete p{font-size:11px;color:#acc0ac;line-height:1.6}.complete button{margin-top:7px}.complete small{color:var(--gold);letter-spacing:2px;font-size:9px}dialog{background:#102b32;border:1px solid #53635b;border-radius:10px;color:#c6d3c9;max-width:850px;width:90%;max-height:87vh;padding:27px 32px;box-shadow:0 30px 100px #0009}dialog::backdrop{background:#03161bd9;backdrop-filter:blur(5px)}.modal-heading{display:flex;justify-content:space-between;align-items:center}.modal-heading button{font-size:17px;background:none;border:0}.notebook-grid{display:grid;grid-template-columns:1fr 1fr;gap:35px;font-size:12px;line-height:1.7}.notebook-grid h3{color:#e3d5b4;margin-top:22px;font-size:14px}.notebook-grid p,.notebook-grid dd{color:#9fb3ad}.notebook-grid code{color:var(--gold);font-size:11px}.notebook-grid dt{font:11px/1.7 monospace;color:#d3bd8f;margin-top:13px}.notebook-grid dd{font-size:11px;margin:3px 0}.notebook-grid select{width:100%;margin:8px 0 12px}.notebook-grid label{font-size:9px;color:#b7a784}.station-label{font:11px Georgia,serif;fill:#bbc7b8;letter-spacing:.3px}.route-label{font:8px monospace;fill:#7ca0a0}.rain{animation:rain 2.8s linear infinite}.water-ring{animation:ripple 4s ease-out infinite;transform-box:fill-box;transform-origin:center}.beacon-glow{animation:glow 3s ease-in-out infinite}.train-group{filter:drop-shadow(0 0 5px #e5c17666)}@keyframes rain{from{transform:translate(0,-12px)}to{transform:translate(-12px,20px)}}@keyframes ripple{0%{opacity:.1;transform:scale(.85)}50%{opacity:.35}100%{opacity:0;transform:scale(1.2)}}@keyframes glow{0%,100%{opacity:.4}50%{opacity:1}}@media(min-width:1500px){main{grid-template-columns:225px minmax(500px,1fr) 450px}.railway{padding-left:35px;padding-right:35px}.desk{padding:28px}.editor-wrap{height:350px}}@media(max-width:1150px){main{grid-template-columns:165px minmax(390px,1fr) 350px}.campaign{padding:26px 10px}.railway{padding:25px 15px}.desk{padding:24px 13px}.header-right #saved{display:none}.ghost-label{display:none}h1{font-size:25px}.brand{font-size:14px}.brand small{font-size:7px}.chapter strong{font-size:10px}}@media(max-width:960px){main{grid-template-columns:160px 1fr}.desk{grid-column:2;border-top:1px solid var(--line)}.campaign{grid-row:1/3}header{padding:0 16px}.map-wrap{max-width:700px;margin:auto}.editor-wrap{height:300px}}@media(max-width:600px){header{height:72px}.brand small,.brand-icon,.header-right #mode{display:none}.brand{font-size:12px;letter-spacing:1px}.header-right button{font-size:10px}main{display:flex;flex-direction:column}.campaign{padding:14px;border-right:0;border-bottom:1px solid var(--line)}.campaign>h2,.campaign>p,.campaign>.eyebrow,.tower-card,.restoration{display:none}nav{flex-direction:row;overflow:auto;gap:5px}.chapter{min-width:125px;padding:8px}.chapter small{display:none}.railway{padding:22px 15px}.desk{padding:20px 15px}.notebook-grid{grid-template-columns:1fr}h1{font-size:25px}.stats{padding:12px 8px;gap:5px}.stats>div:not(:first-child){padding-left:8px}.stats small{font-size:6px}.clock span{font-size:19px}.runtime{font-size:8px}.map-key{font-size:7px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}

#tide{position:absolute;right:17px;top:4px;font-size:8px;padding:5px 7px;background:#12303899;color:#91aaa4;border-color:#2c474c}.record-summary{font-size:9px;color:#91a79b;line-height:1.7;margin-top:11px}.map-caption{max-width:70%}
.watch-option{display:flex;align-items:center;gap:7px;font-size:11px;color:#d8caab;margin:2px 0 13px}.watch-option input{accent-color:var(--gold)}.watch-option span{font-size:9px;color:#819e9d;margin-left:auto}.next-step{border:1px solid #89734c;background:#403e252b;border-radius:6px;padding:13px;margin-bottom:15px}.next-step strong{font-size:13px;color:#ecd09a;font-weight:550}.next-step p{font-size:11px;color:#b0c2b8;line-height:1.65;margin:7px 0}.next-step button{width:100%;margin-top:5px;font-size:12px}.oracle-details{color:#9baaa5;font-size:10px;margin:10px 0}.oracle-details summary{cursor:pointer;color:#b9ad91}.oracle-details pre{font:10px/1.6 monospace;white-space:pre-wrap;overflow-wrap:anywhere;color:#d9a28f}.output{max-height:220px}.output p.success,.output p.info{font-family:system-ui;font-size:11px}.watch-option span{max-width:150px;text-align:right}
.mission-guide{margin-top:15px;padding:12px;background:#153037;border:1px solid #40534e;border-radius:6px}.mission-guide p{font-size:12px;line-height:1.5;margin:7px 0;color:#ddd0ad}.mission-guide button{border:0;padding:0;background:none;color:#e6bd78;font-size:11px;text-align:left}.hint-body{width:100%}.hint-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.hint-actions button{border:1px solid #655d44;padding:8px 10px!important;background:#1b3336!important}.hint-actions button:disabled{color:#aab5a4;opacity:.55}.hint ol{padding-left:21px;font-size:11px;color:#cfceb2;line-height:1.7}.hint li{margin-top:10px;padding-left:3px}#stage-guide{max-width:690px}#guide-body{font-size:13px;line-height:1.8;max-height:57vh;overflow:auto;padding-right:10px}#guide-body h3{color:#e9ce93;font-weight:500}#guide-body dt{color:#e1c388;font:12px/1.7 monospace;margin-top:14px}#guide-body dd{margin:4px 0 15px;color:#afc2b8}.guide-goal{font-size:17px;color:#ecdfbf}.guide-note{border-left:2px solid #b79c65;padding-left:14px;color:#adc0b6;font-size:12px}.guide-steps{padding-left:23px}.guide-steps li{margin-bottom:13px}.guide-steps b{color:#ead4a9}.guide-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:18px;border-top:1px solid #345057;margin-top:15px}.guide-footer span{font-size:11px;color:#aebda5}#solution-code{font:12px/1.7 monospace;white-space:pre-wrap;color:#e8d3a6;background:#091e25;padding:16px;max-height:55vh;overflow:auto}#solution-dialog{max-width:800px}#replay-stage{display:block;width:100%;margin-top:12px!important;background:#214148;border-color:#b9a575;color:#f0d39a}.complete .replay-note{font-size:10px;color:#aabfae;margin-bottom:0}.complete{width:310px}.complete #next{width:100%}.editor-tabs{margin-top:12px}#guide-body table small{display:block;color:#9bb5ac;font-size:10px}

/* Completion help lives beneath the editor so it stays readable on narrow screens. */
.intellisense{background:#102930;border:1px solid #56716d;border-top:1px solid #b99b61;padding:10px 12px;font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;min-width:0}
.intellisense[hidden],.intellisense [hidden]{display:none}
#code-suggestions{max-height:155px;overflow:auto;overscroll-behavior:contain}
.completion-option{display:flex;justify-content:space-between;gap:12px;padding:5px 8px;border-radius:3px;cursor:pointer;color:#c6d8d1}
.completion-option[aria-selected=true]{background:#31504e;color:#ffe0a0;outline:1px solid #75816a;outline-offset:-1px}
.completion-option small{color:#9eb4ae;font:10px/1.8 system-ui;flex-shrink:0}
.completion-detail,.signature-help p{font:12px/1.5 system-ui;color:#a9bfb6;margin:7px 0}
.intellisense>small{font:10px/1.5 system-ui;color:#a9bfb6}
.signature-help{padding:2px 0 8px;overflow-wrap:anywhere}
.signature-help code{color:#c3d3cb}.signature-help strong{color:#ffe0a0;background:#3d5046;border-radius:3px;padding:2px 4px}
#suggest-code{padding:0;border:0;background:none;color:#e5c782;font:inherit;cursor:pointer}
.editor-footer{gap:8px;align-items:center;flex-wrap:wrap}
#suggest-code:focus-visible{outline:2px solid #e5c782;outline-offset:3px}
#code-suggestions{position:relative}
.concept-lesson{margin:12px 0;border:1px solid #586759;border-radius:6px;background:#132d30;font:13px/1.65 system-ui;color:#bfcec3}
.concept-lesson summary{cursor:pointer;padding:12px 14px;color:#e5c782;font-weight:600}
#lesson-content{padding:0 14px 14px}#lesson-content pre{white-space:pre;overflow:auto;background:#091c23;border:1px solid #2c454b;padding:12px;color:#e6ce9e;font:11px/1.8 ui-monospace,monospace}
#lesson-content ol{padding-left:20px}#lesson-content li{margin:10px 0}#lesson-content b{color:#e4d7b9}
.lesson-bridge{border-top:1px solid #36524c;padding-top:12px}
.practice-reminder{margin:12px 0;padding:12px;border:1px solid #9e8756;border-radius:6px;background:#223b35;color:#cad8c8;font:12px/1.6 system-ui}
.practice-reminder[hidden]{display:none}.practice-reminder strong{color:#edd293}.practice-reminder button{font-size:11px;padding:7px}

#activity{position:fixed;z-index:100;left:50%;bottom:20px;transform:translateX(-50%);max-width:90vw;padding:12px 18px;border:1px solid var(--gold);border-radius:8px;background:#102b32;box-shadow:0 6px 24px #0008;color:#efe6d0;pointer-events:none}#activity[hidden]{display:none}.is-pending{border-color:var(--gold)!important;opacity:1!important;cursor:progress!important}.is-pending::before,#activity::before{content:'';display:inline-block;width:11px;height:11px;margin-right:8px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:pending-spin .8s linear infinite;vertical-align:middle}.chapter.is-pending{background:#34453d}.chapter.is-pending small::after{content:' · Loading…';color:var(--gold)}@keyframes pending-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.is-pending::before,#activity::before{animation:none}}

[hidden]{display:none!important}
@media(max-width:600px){.tower-card:not([hidden]){display:block}}
