:root{color-scheme:dark;--bg:#10131c;--panel:#1a1f2c;--ink:#f3f5fa;--muted:#aeb6c9;--lime:#baff52;--blue:#8eacff;--border:#343d52;--pink:#ff9bb5}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 system-ui,-apple-system,sans-serif}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:4px}a{color:var(--blue)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(36px,4vw,58px);line-height:1.03;letter-spacing:-2px}h2{font-size:clamp(26px,3vw,36px);line-height:1.16;letter-spacing:-.8px}h3{font-size:20px;line-height:1.3}header{max-width:1400px;padding:24px 36px;margin:auto;display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid var(--border)}.brand{text-decoration:none;color:var(--ink);font-weight:900;letter-spacing:.1em;font-size:19px}.brand span{color:var(--lime)}.brand small{font:12px ui-monospace,Consolas,monospace;color:var(--muted);letter-spacing:.14em;margin-left:16px}.header-actions{display:flex;align-items:center;gap:20px}.subtle{color:var(--muted);font-size:14px}.text-button{color:var(--muted);background:none;border:0;padding:8px 0;text-decoration:underline;text-underline-offset:5px;font-size:14px}.text-button:hover{color:var(--ink)}main{max-width:1400px;margin:auto;padding:36px}.eyebrow{font:14px/1.5 ui-monospace,Consolas,monospace;letter-spacing:.09em;color:var(--lime);display:block;margin-bottom:12px}.blue{color:var(--blue)}.primary,.secondary{border-radius:10px;padding:14px 22px;font-weight:750;min-height:50px}.primary{background:var(--lime);border:1px solid var(--lime);color:#162009}.primary:hover:not(:disabled){background:#d0ff87}.secondary{background:#252c3c;color:var(--ink);border:1px solid #4b5872}.secondary:hover:not(:disabled){background:#333e52}.primary.small,.secondary.small{font-size:14px;padding:9px 15px;min-height:42px}.welcome{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;max-width:1150px;margin:28px auto}.welcome p{color:var(--muted);max-width:550px}.welcome .lead{font-size:19px;line-height:1.6}.crew-art{width:100%;height:auto;border-radius:24px;display:block;border:1px solid var(--border)}.crew-note{margin-top:14px;display:flex;justify-content:space-around;font-size:14px;color:var(--muted)}.crew-note b{color:var(--lime)}.crew-note span:last-child b{color:var(--blue)}form{margin:24px 0 16px}label{display:block;font-weight:650;margin-bottom:8px}input{width:100%;background:#0b0e15;border:1px solid #56627d;border-radius:10px;color:var(--ink);padding:15px 17px;min-width:0}.form-row{display:flex;gap:12px}.welcome-meta{display:flex;gap:24px;margin:26px 0;color:var(--muted);font-size:14px}.welcome-meta strong{color:var(--ink);font-size:24px;margin-right:5px}.layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:36px}.rail h2{font-size:29px;overflow-wrap:anywhere}.rail .mini-stats{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0}.mini-stats strong{font:32px/1.2 ui-monospace,Consolas,monospace;display:block;color:var(--ink)}.mini-stats span{font-size:12px;color:var(--muted);letter-spacing:.07em}.rail-nav{display:grid;gap:7px}.rail-nav button{background:none;color:var(--muted);text-align:left;border:1px solid transparent;border-radius:8px;padding:10px;display:flex;gap:10px;align-items:center;font-size:14px}.rail-nav button.current{border-color:#536846;color:var(--lime);background:#202c22}.rail-nav button.done{color:var(--ink)}.rail-nav button:hover:not(:disabled){background:#252c3c}.rail-nav .num{font:14px ui-monospace,Consolas,monospace;min-width:23px}.rail-tools{display:flex;flex-direction:column;align-items:flex-start;margin-top:24px;gap:5px}.map-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.map-heading p{color:var(--muted);margin-bottom:0;max-width:580px}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.level-card{border:1px solid var(--border);border-radius:16px;padding:22px;background:var(--panel);position:relative;overflow:hidden;min-width:0}.level-card.active{border-color:#698d49}.level-card.locked{background:#151a25}.level-card .card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:8px}.level-number{font:14px ui-monospace,Consolas,monospace;color:var(--muted)}.status-pill{font:12px ui-monospace,Consolas,monospace;color:var(--blue);border:1px solid #465478;border-radius:5px;padding:3px 7px}.status-pill.open{color:var(--lime);border-color:#638144}.level-card h3{margin-bottom:8px}.level-card p{font-size:14px;color:var(--muted);min-height:42px;margin-bottom:20px}.lock-row{display:flex;gap:6px;margin:20px 0}.lock{height:7px;flex:1;border-radius:2px;background:#3b455c}.lock.solved{background:var(--lime)}.card-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px}.mentor{background:#171e2c;border:1px solid #3a4763;border-radius:16px;display:flex;align-items:center;gap:18px;padding:16px;margin:0 0 24px}.portrait{width:98px;height:112px;flex:0 0 98px;border-radius:12px;background-image:url('assets/crew.png');background-size:200% 100%;background-position:left center;background-repeat:no-repeat}.portrait.glitch{background-position:right center}.mentor .name{font:14px ui-monospace,Consolas,monospace;color:var(--lime);margin-bottom:6px}.mentor.glitch .name{color:var(--blue)}.mentor p{margin:0;font-size:16px}.mentor button{margin-top:6px}.game-content{display:grid;grid-template-columns:minmax(0,1fr) 205px;gap:22px;align-items:start}.board{border:1px solid var(--border);border-radius:18px;background:var(--panel);overflow:hidden;min-width:0}.board-top{display:flex;justify-content:space-between;gap:12px;padding:18px 24px;border-bottom:1px solid var(--border);font:14px ui-monospace}.board-top span:first-child{color:var(--lime)}.board-body{padding:26px}.scenario{font-size:18px;color:#dfe5f2;line-height:1.6;margin:0 0 26px}.choices{display:grid;gap:11px}.choice{background:#252c3c;color:var(--ink);border:1px solid #47516a;border-radius:11px;padding:15px;text-align:left;display:flex;gap:13px;align-items:flex-start;transition:background .15s,transform .15s}.choice:hover:not(:disabled){background:#333e52;transform:translateX(3px)}.choice:disabled{opacity:1}.choice.wrong{border-color:#8e4d65;color:#c8a8b7;background:#30212d}.choice.correct{background:#263b24;border-color:var(--lime)}.key{font:14px ui-monospace,Consolas,monospace;border:1px solid #66728d;border-radius:5px;min-width:25px;text-align:center;line-height:24px;color:var(--muted)}.feedback{margin-top:20px;padding:18px;border-left:3px solid var(--blue);background:#101620;border-radius:8px}.feedback.good{border-color:var(--lime)}.feedback strong{display:block;margin-bottom:6px}.feedback p{margin:8px 0}.feedback a{font-size:14px}.feedback .primary{margin-top:16px}.sidekick{position:sticky;top:18px;text-align:center}.sidekick .portrait{width:100%;height:auto;aspect-ratio:1/1.15}.speech{padding:18px 14px;background:#242d42;border:1px solid #495a80;border-radius:14px;margin-top:10px;font-size:15px}.speech b{color:var(--blue);display:block;font:14px ui-monospace,Consolas,monospace;margin-bottom:8px}.speech p{margin:0}.sidekick .secondary{margin-top:14px;width:100%}.helper-note{font-size:12px;color:var(--muted);margin-top:8px}.dots{display:flex;gap:9px;margin:0 0 20px}.dot{width:34px;height:34px;border:1px solid #4b566e;border-radius:7px;display:grid;place-items:center;font:14px ui-monospace}.dot.done{background:var(--lime);border-color:var(--lime);color:#18230e}.dot.now{color:var(--lime);border-color:var(--lime)}.celebrate{background:var(--panel);border:1px solid #638144;border-radius:20px;padding:32px;text-align:center}.celebrate .crew-art{max-width:340px;margin:0 auto 24px}.celebrate h2{font-size:40px}.xp{font:54px/1.3 ui-monospace,Consolas,monospace;color:var(--lime);margin:20px 0}.button-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.review-item{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:14px}.review-item p{margin-bottom:10px}.review-item summary{cursor:pointer;font-weight:700}.review-item .correct-text{color:var(--lime)}.review-item .subtle{display:block;margin:12px 0}.progress-track{height:5px;background:#343d52;border-radius:3px;margin-top:16px;overflow:hidden}.progress-track span{display:block;height:100%;background:var(--lime)}footer{max-width:1400px;margin:auto;padding:25px 36px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:18px;color:var(--muted);font-size:14px}.error-banner{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:20;max-width:680px;width:calc(100% - 32px);border:1px solid #d97694;background:#392330;color:#ffe3ec;padding:18px;border-radius:12px;box-shadow:0 8px 35px #0009}.error-banner button{margin-left:12px}dialog{background:#1a1f2c;color:var(--ink);border:1px solid var(--border);border-radius:20px;max-width:690px;width:calc(100% - 32px);padding:32px;max-height:90vh}dialog::backdrop{background:#080a12cc}.close{float:right;font-size:30px;text-decoration:none;line-height:1}.loading{padding:30px;color:var(--muted)}.bounce{animation:pop .35s ease-out}@keyframes pop{50%{transform:translateY(-7px) rotate(-2deg)}}[hidden]{display:none!important}@media(max-width:1150px){.game-content{grid-template-columns:1fr}.sidekick{position:static;display:grid;grid-template-columns:88px 1fr;gap:12px;text-align:left}.sidekick .portrait{grid-row:1/4;align-self:start}.speech{margin:0}.sidekick .secondary{width:auto;margin:0;justify-self:start}.helper-note{margin:0}.layout{grid-template-columns:205px minmax(0,1fr);gap:24px}.brand small{display:none}}@media(max-width:760px){header{padding:18px 20px;align-items:flex-start;flex-wrap:wrap}.header-actions{gap:15px;flex-wrap:wrap}.brand{font-size:18px}main{padding:22px 18px}.welcome{grid-template-columns:1fr;gap:25px;margin:0}.welcome-visual{order:-1;max-width:360px;margin:auto}.welcome h1{font-size:38px}.welcome-meta{margin:15px 0}.crew-note{display:none}.welcome .lead{font-size:17px}.layout{grid-template-columns:1fr}.rail h2{font-size:24px;margin-bottom:12px}.rail .mini-stats{display:flex;gap:28px;margin:12px 0}.mini-stats strong{font-size:24px}.rail-nav{grid-template-columns:repeat(8,1fr);gap:4px}.rail-nav button{padding:8px 0;justify-content:center}.rail-nav .nav-label{display:none}.rail-nav .num{min-width:0}.rail-tools{flex-direction:row;gap:18px;flex-wrap:wrap;margin-top:8px}.rail .eyebrow{margin-bottom:6px}.cards{grid-template-columns:1fr}.map-heading{display:block}.map-heading h2{margin-bottom:12px}.form-row{flex-direction:column}.mentor{padding:12px;gap:12px}.portrait{width:75px;height:88px;flex-basis:75px}.mentor p{font-size:15px}.board-body{padding:20px}.board-top{padding:16px 20px}.scenario{font-size:17px}.celebrate{padding:24px 18px}.celebrate h2{font-size:30px}footer{padding:20px;display:block}footer button{display:block}.dots{gap:7px}.dot{width:30px;height:30px}.xp{font-size:42px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Woodland journey: native Canvas scene, accessible HTML controls. */
.world-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.world-heading h2{font:clamp(30px,4vw,48px)/1.1 Georgia,serif;letter-spacing:-1px;color:#efe7cb;margin:6px 0 8px}.world-heading p{margin:0;color:#abbcaf;font-size:14px}.world-badge{border:1px solid #64785c;border-radius:30px;padding:9px 13px;white-space:nowrap;color:#c2d6a8;font:11px ui-monospace;letter-spacing:1px}.woodland{position:relative;isolation:isolate;border:1px solid #6a80604d;border-radius:20px;overflow:hidden;background:#18332f;box-shadow:0 22px 80px #0004}.woodland canvas{display:block;width:100%;height:580px;max-height:72vh;min-height:400px;cursor:crosshair;touch-action:none;outline-offset:-5px}.woodland canvas:focus-visible{outline:3px solid #c6e78c}.world-caption{position:absolute;top:23px;left:25px;pointer-events:none;color:#e4e5c5;text-shadow:0 2px 8px #000}.world-caption .eyebrow{font-size:10px;color:#c9d6ac}.world-caption p{font:italic 18px Georgia,serif;max-width:180px;margin:7px 0}.world-controls{position:absolute;bottom:20px;left:20px;right:20px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;pointer-events:none}.world-controls button{pointer-events:auto;box-shadow:0 4px 16px #0005;min-height:44px}.world-controls>.primary{border-radius:30px;padding:13px 22px;background:#d0e99d;color:#24322c}.walk-pad{display:grid;grid-template-columns:repeat(3,42px);grid-template-rows:repeat(2,42px);gap:4px;pointer-events:auto}.walk-pad button{touch-action:none;user-select:none;border:1px solid #a9bda55c;border-radius:10px;color:#e0e9d0;background:#152d32dc;padding:0;font:22px system-ui}.walk-pad button:first-child{grid-column:2}.walk-pad button:nth-child(2){grid-column:1;grid-row:2}.walk-pad button:nth-child(3){grid-column:2;grid-row:2}.walk-pad button:nth-child(4){grid-column:3;grid-row:2}.walk-pad button:active{background:#526f50}.trail-bar{display:flex;justify-content:space-between;align-items:center;gap:14px;border-bottom:1px solid var(--border);padding:16px 0}.trail-bar p{margin:0;font-size:14px;color:#d2dac9}.trail-bar button{flex-shrink:0}.door-list{border:1px solid #3e5147;border-radius:12px;padding:14px 18px;margin-top:18px;color:#c3ceb8}.door-list summary{cursor:pointer;font-size:14px}.door-list>div{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:16px}.door-list button{text-align:left;font-size:13px}.back-trail{display:block;margin:0 0 22px}.village-complete{justify-content:flex-start;margin-top:20px}#surface{min-width:0}
@media(max-width:1000px){.world-badge{display:none}.world-caption p{max-width:150px;font-size:16px}.world-heading h2{font-size:35px}}
@media(max-width:760px){.woodland canvas{height:510px;max-height:68vh;min-height:390px}.world-heading{margin-top:14px}.world-heading h2{font-size:33px}.world-caption{top:20px;left:16px}.world-caption p{max-width:115px;font-size:15px}.world-caption .eyebrow{font-size:8px;letter-spacing:1px}.world-controls{left:12px;right:12px;bottom:14px}.world-controls>.primary{padding:12px 14px;font-size:13px}.walk-pad{grid-template-columns:repeat(3,38px);grid-template-rows:repeat(2,40px)}.trail-bar{align-items:flex-start;flex-direction:column}.door-list>div{grid-template-columns:1fr}.world-heading .eyebrow{font-size:10px}#trail-help{font-size:12px}.woodland{border-radius:14px}}

/* Final chapter: shared by real campaign completion and the read-only preview. */
.finale{position:relative;isolation:isolate;overflow:hidden;max-width:1120px;margin:0 auto;border:1px solid #73826955;border-radius:26px;background:radial-gradient(ellipse at 50% 15%,#354b443d,transparent 55%),linear-gradient(155deg,#18252d,#121b25 65%,#1b2b2a);text-align:center}.final-content{position:relative;z-index:1;padding:40px 46px 28px}.final-preview{background:#8eacff12;border-bottom:1px solid #8eacff33;padding:9px 16px;color:#aebfe1;font:10px ui-monospace;letter-spacing:2px}.final-chapter{color:#b8c39f;font-size:10px;letter-spacing:3px}.guardian-seal{display:flex;align-items:center;justify-content:center;gap:35px;height:108px;margin:18px 0 10px;color:#cedea0;font-size:30px}.guardian-seal svg{width:95px;height:95px;filter:drop-shadow(0 0 22px #c5f27f22)}.guardian-seal span:last-child{font-size:18px}.final-award{color:#c5d49a;font:10px ui-monospace;letter-spacing:3px;margin:14px 0}.finale h1{font:clamp(45px,6vw,76px)/1.02 Georgia,serif;letter-spacing:-2px;color:#eee7d1;margin:12px 0 18px}.finale h1 em{color:#d2e6a1;font-weight:normal}.final-intro{font-size:16px;line-height:1.75;color:#b8c7c2;margin:0}.final-landscape{max-width:900px;margin:6px auto -5px}.final-landscape svg{display:block;width:100%;height:auto}.final-metrics{display:grid;grid-template-columns:repeat(3,1fr);max-width:770px;margin:0 auto 26px;border-top:1px solid #b1c09133;border-bottom:1px solid #b1c09133;padding:23px 0;background:#12232955}.final-metrics>div+div{border-left:1px solid #b1c0912b}.final-metrics strong{display:block;font:36px Georgia,serif;color:#e4e9cc;margin-bottom:8px}.final-metrics strong span{font-size:19px;color:#8a9d8e}.final-metrics>div>span{font:9px ui-monospace;color:#a9b99c;letter-spacing:1.5px}.final-note{display:flex;align-items:center;gap:18px;text-align:left;max-width:580px;margin:0 auto}.final-note .portrait{width:66px;height:76px;flex:0 0 66px;border-radius:50%;border-color:#6d8165}.final-note b{font:10px ui-monospace;color:#bcd98d;letter-spacing:1px}.final-note p{font:italic 19px/1.45 Georgia,serif;margin:8px 0 0;color:#d9dfd0}.final-earned{font-size:12px;color:#8fa79e;margin:22px 0}.final-actions .primary{background:#d0e99d;border-radius:30px;color:#203229;padding:14px 24px}.final-actions .secondary{border-radius:30px;padding:14px 24px}.final-footnote{color:#98aaa4;font-size:11px;line-height:1.6;margin:15px 0 28px}.final-signoff{font:9px ui-monospace;letter-spacing:3px;color:#7c958c}.final-stars{position:absolute;inset:0;pointer-events:none}.final-stars i{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;background:#dcedaa;border-radius:50%;opacity:.25;box-shadow:0 0 9px #cae69b;animation:final-spark 3s var(--delay) ease-out both}.final-stars i:nth-child(3n){background:#b4b1db;width:4px;height:4px}@keyframes final-spark{0%{opacity:0;transform:translateY(30px) scale(0)}40%{opacity:.85}100%{opacity:.25;transform:translateY(0) scale(1)}}@media(max-width:760px){.final-content{padding:28px 16px 23px}.final-chapter{font-size:8px;letter-spacing:1.5px}.guardian-seal{height:85px;margin-top:16px}.guardian-seal svg{width:78px;height:78px}.finale h1{font-size:49px}.final-intro{font-size:14px}.final-metrics{padding:18px 0;margin-bottom:22px}.final-metrics strong{font-size:28px}.final-metrics>div>span{font-size:8px;letter-spacing:.4px}.final-note{gap:12px}.final-note p{font-size:17px}.final-note b{font-size:8px}.final-actions{flex-direction:column}.final-signoff{font-size:8px;letter-spacing:1.4px}.final-preview{font-size:8px;letter-spacing:1.5px}}@media(prefers-reduced-motion:reduce){.final-stars i{animation:none}}

#final-title:focus{outline:none}

.resume-card{padding:22px;border:1px solid #baff5255;border-radius:18px;background:#baff5209;margin:24px 0}.resume-card h2{font-size:26px}.resume-card .text-button{display:block;margin-top:16px}.legacy-import button{display:block;margin:12px 0}#restore-form input,#delete-form input,#recovery-value{display:block;width:100%;box-sizing:border-box;margin:12px 0;padding:12px;background:#10131c;color:#eef3e5;border:1px solid #8eacff77;border-radius:8px}#recovery-value{font:15px/1.5 monospace;overflow-wrap:anywhere}#account-info details,#restore-box,.legacy-import{margin-top:22px}dialog p{line-height:1.6}dialog hr{border:0;border-top:1px solid #8eacff44;margin:24px 0}
