:root{--ink:#263e37;--muted:#64766a;--paper:#f6f6ee;--line:#dce3d5;--green:#2d6656;--orange:#f2a373;--pip:#efa177;--pip-dark:#b97055;--radius:23px;font-family:ui-rounded,"Trebuchet MS",system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none;color-scheme:light}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:default}button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #b86437;outline-offset:3px}button{touch-action:manipulation}h1,h2,h3,p{margin:0}button svg{pointer-events:none}button{color:inherit}a{color:inherit}[hidden]{display:none!important}.frame-root{max-width:1440px;margin:auto;overflow:hidden;background:radial-gradient(ellipse at 84% 15%,#e8eee0 0,transparent 55%),var(--paper)}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:24px 38px;border-bottom:1px solid var(--line)}.wordmark{display:flex;align-items:center;gap:10px;font-size:29px;font-weight:800;letter-spacing:-1.5px}.wordmark svg{width:23px;height:30px;color:var(--green)}.brand-pill{font-family:system-ui,sans-serif;margin-left:5px;border:1px solid #c5d6bd;border-radius:6px;padding:5px 8px;font-size:9px;letter-spacing:1.7px;font-weight:750;color:#54704e}.tools{display:flex;gap:7px}.icon-btn{display:inline-flex;justify-content:center;align-items:center;gap:5px;background:transparent;border:1px solid var(--line);border-radius:50px;min-width:39px;height:39px;font-size:20px;padding:6px 10px}.sound-label{font:600 10px system-ui,sans-serif;color:var(--muted)}.eyebrow{display:flex;align-items:center;gap:8px;font:750 10px/1.6 system-ui,sans-serif;letter-spacing:2px;color:var(--muted)}.live-dot{height:7px;width:7px;display:inline-block;background:#81a77b;border-radius:50%;box-shadow:0 0 0 4px #81a77b1a}.intro{display:grid;grid-template-columns:1fr 1.15fr;gap:12px;align-items:center;padding:44px 38px 52px;min-height:590px}.intro h1{font-size:clamp(40px,5.3vw,72px);letter-spacing:-3.6px;line-height:1.04;margin:20px 0 19px;font-weight:800}.intro h1 em{font-style:normal;color:var(--green)}.intro-lead{font-size:21px;line-height:1.5;letter-spacing:-.4px;margin-bottom:14px}.intro-copy>p:not(.intro-lead){color:var(--muted);font-size:14px;line-height:1.75;max-width:365px}.feature-row{display:flex;gap:7px;flex-wrap:wrap;margin:20px 0}.feature-row span{font:650 10px system-ui,sans-serif;padding:7px 9px;border-radius:6px;background:#e9eedf;color:#5d7158}.btn{min-height:48px;border-radius:12px;padding:13px 19px;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:20px;font-weight:750;font-size:14px;transition:transform .16s,background .16s,box-shadow .16s}.btn.primary{background:var(--green);color:#fff9eb;box-shadow:0 4px 0 #1d4b3d}.btn.primary:hover{background:#235344;transform:translateY(-1px)}.btn.primary:active{transform:translateY(2px);box-shadow:0 1px 0 #1d4b3d}.btn.secondary{background:#edf1e5;color:var(--ink);border-color:var(--line)}.start-btn{min-width:240px;margin:2px 0 21px}.start-btn span{font-size:22px}.remember{display:flex;align-items:center;gap:8px;font:550 11px/1.5 system-ui,sans-serif;color:var(--muted);cursor:pointer}.remember input{accent-color:var(--green);width:16px;height:16px;margin:0}.intro-copy>.small-note{font:11px/1.5 system-ui,sans-serif!important;margin-top:6px!important;color:#708070!important;max-width:none!important}.intro-art{position:relative;min-width:0;padding:18px 0 0}.intro-art .illustration{background:#e3ead8;border:1px solid #d4e0c7;border-radius:45% 45% 25% 25%;overflow:hidden;aspect-ratio:1.04;display:flex;align-items:center;box-shadow:inset 0 -30px 80px #c4d4b452}.intro-art .illustration>svg{width:137%;flex:none;transform:translateX(-13.5%)}.art-sticker{position:absolute;right:15px;top:0;background:#f7cc79;padding:20px 13px;font-size:10px;line-height:1.6;letter-spacing:1.2px;transform:rotate(10deg);font-weight:800;border-radius:50%;z-index:2;text-align:center;box-shadow:0 4px 0 #cea65d24}.pip-custom{display:flex;align-items:center;justify-content:center;gap:9px;margin:22px 0 0;font-size:12px;color:var(--muted)}.pip-custom>span{margin-right:8px}.swatch{width:25px;height:25px;border:3px solid var(--paper);border-radius:50%;outline:1px solid transparent}.swatch.apricot{background:#efa177}.swatch.mint{background:#8fc7ad}.swatch.lilac{background:#bda5d6}.swatch.selected{outline-color:var(--green)}
.play{padding:27px 30px 22px}.mission-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:23px}.mission-heading h1{font-size:30px;letter-spacing:-1.1px;line-height:1.2;margin:5px 0 7px}.mission-heading p{font-size:13px;line-height:1.6;color:var(--muted)}.mission-progress{display:flex;gap:8px;flex:none}.step-dot{display:flex;align-items:center;justify-content:center;border:1px solid #cbd6c6;border-radius:50%;height:33px;width:33px;font:650 12px system-ui,sans-serif;color:#84947c}.step-dot.active{background:#eacba8;border-color:#c79561;color:#6b492e}.step-dot.done{background:var(--green);color:#fff;border-color:var(--green)}.work-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(310px,1fr);gap:20px;align-items:start}.world-panel{border-radius:var(--radius);border:1px solid #d3dec9;overflow:hidden;background:#e6edda;min-width:0}.world-top{padding:16px 19px 0;display:flex;align-items:center;justify-content:space-between;gap:8px}.world-tag{font:700 8px/1.5 system-ui,sans-serif;letter-spacing:1.5px;color:#76896c}.status-pill{background:#ffffff78;border:1px solid #cedec4;padding:5px 9px;border-radius:50px;font-size:9px;white-space:nowrap;color:#456746}.stage{min-width:0;position:relative;padding:0 4px}.illustration>svg{width:100%;height:auto;display:block;overflow:visible}.goal-strip{margin:0 16px 15px;background:#fafff0aa;border:1px solid #d2dec8;border-radius:12px;padding:14px;display:flex;align-items:center;justify-content:center;gap:23px;text-align:center}.tiny-label{display:block;font:750 8px/1.5 system-ui,sans-serif;letter-spacing:1.3px;color:#6a8061;margin-bottom:5px}.goal-strip strong{font-size:17px;letter-spacing:-.3px}.goal-plus{color:#afbe9f;font-size:21px}.coach{display:flex;align-items:center;gap:13px;padding:16px 20px;background:#f5f7ed;border-top:1px solid #d3dec9;min-height:94px}.coach-avatar{width:40px;height:42px;border-radius:45% 45% 38% 38%;display:grid;place-items:center;background:var(--pip);color:#7f4429;font-size:25px;flex:none}.coach p{font-size:12px;line-height:1.65;color:#51614e}.workbench{background:#fbfcf6;border:1px solid var(--line);border-radius:var(--radius);padding:22px 20px}.workbench-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:15px;border-bottom:1px solid var(--line);margin-bottom:18px}.workbench-heading h2{font-size:17px;letter-spacing:-.5px}.workbench-heading span{font-size:9px;color:var(--muted)}.parts{border:0;padding:0;margin:0 0 18px;min-width:0}.parts legend{display:flex;align-items:center;gap:7px;width:100%;font-size:12px;font-weight:700;margin-bottom:9px;padding:0}.part-number{height:19px;width:19px;border-radius:50%;background:#edf1e4;display:inline-grid;place-items:center;font-size:10px;color:#7b8b71}.part-help{margin-left:auto;font-size:9px;font-weight:500;color:#819079}.power-options{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.boost-options,.route-options{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.part-btn{position:relative;border:1px solid #dce4d3;border-radius:11px;background:#f2f5eb;padding:10px 4px;min-height:66px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-size:11px;transition:.15s}.part-btn svg{width:21px;height:22px}.part-btn strong{font-size:13px;line-height:1}.part-btn small{font-size:9px;color:var(--muted)}.part-btn.selected{background:#e4edda;border:2px solid #658f63;padding:9px 3px;box-shadow:0 2px 0 #b7cbad}.part-btn.selected:after{content:'✓';position:absolute;right:3px;top:2px;color:#427144;font-size:9px}.part-btn:hover{background:#e8eedd}.test-btn{width:100%;margin-top:0}.test-btn span{font-size:22px;line-height:1}.test-btn:disabled{background:#718f77;box-shadow:none}.workbench-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:16px}.text-btn{border:0;background:transparent;font-size:11px;font-weight:650;color:var(--green);padding:6px 0;text-decoration:underline;text-decoration-color:#aebfad;text-underline-offset:4px}.workbench-bottom>span{font-size:10px;color:var(--muted)}.lab-bottom{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-top:20px}.lab-bottom details{flex:1;min-width:0}.lab-bottom summary{cursor:pointer;font-size:11px;font-weight:650;padding:6px 0}.lab-bottom summary span{font-size:10px;font-weight:400;color:var(--muted);margin-left:9px}.history{margin-top:10px;padding:13px;border:1px solid var(--line);border-radius:12px;background:#ffffff55;max-height:200px;overflow:auto;font-size:11px}.history p{color:var(--muted)}.history-row{display:grid;grid-template-columns:38px 1fr 1.2fr;gap:9px;padding:8px 0;border-bottom:1px solid var(--line)}.history-row:last-child{border:0}.history-row span:last-child{text-align:right;color:var(--muted)}.game-footer{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:21px 35px;border-top:1px solid var(--line);color:#809075;font:10px/1.5 system-ui,sans-serif;letter-spacing:.5px}.game-footer b{background:#e1e8d9;padding:3px 5px;border-radius:3px;font-size:9px}.footer-version{font-size:9px}.complete{position:relative;text-align:center;padding:44px 35px 45px}.complete .eyebrow{justify-content:center}.complete h1{font-size:43px;letter-spacing:-2px;line-height:1.15;margin:13px 0}.complete>p{font-size:14px;line-height:1.7;color:var(--muted);max-width:590px;margin:0 auto 20px}.award-seal{width:94px;height:94px;display:grid;place-items:center;font-size:43px;border:1px solid #dbc38e;border-radius:50%;background:#f6e8c4;margin:0 auto 24px;box-shadow:0 0 0 8px #f2ebd3,0 0 0 9px #e6dcc1}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:710px;margin:24px auto}.stat-card{background:#edf2e4;border:1px solid #d8e3cb;border-radius:15px;padding:21px 12px}.stat-card strong{display:block;font-size:31px;font-weight:800;margin-bottom:7px}.stat-card span{font-size:11px;color:var(--muted)}.run-summary{max-width:710px;margin:0 auto 23px;text-align:left;border:1px solid var(--line);border-radius:14px;padding:6px 18px;background:#fbfcf6}.run-row{display:flex;gap:12px;justify-content:space-between;padding:14px 0;font-size:12px;border-bottom:1px solid var(--line)}.run-row:last-child{border:0}.run-row>span{color:var(--muted);text-align:right}.complete-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.complete .fineprint{margin:19px auto 0;font:10px/1.7 system-ui,sans-serif}.complete .export{margin-top:13px}
.modal{background:#fafbf4;border:1px solid #d2ddc8;border-radius:22px;color:var(--ink);padding:25px;max-width:470px;width:calc(100% - 32px);box-shadow:0 22px 90px #182b3d40;max-height:calc(100dvh - 40px);overflow:auto}.modal::backdrop{background:#1e362d66;backdrop-filter:blur(4px)}.modal-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.modal h2{font-size:26px;letter-spacing:-.9px;margin-bottom:15px}.modal-body{font-size:14px;line-height:1.8;color:#586b55}.modal-body p{margin-bottom:12px}.modal-body ul{padding-left:20px}.modal-body label{display:flex;gap:10px;align-items:flex-start;margin:12px 0;font-size:13px}.modal-body input{accent-color:var(--green);margin-top:6px}.modal-body .fineprint{font-size:11px}.modal-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:21px}.modal-actions .btn{flex:1;font-size:12px}.hint-step{padding:14px;background:#edf2e3;border-radius:12px;border:1px solid #d2dfc6}.toast{position:fixed;bottom:16px;left:50%;transform:translate(-50%,20px);padding:13px 18px;border-radius:12px;color:#fff;background:#2b4b3f;box-shadow:0 5px 30px #25352922;max-width:calc(100% - 32px);width:max-content;font:12px/1.5 system-ui,sans-serif;z-index:200;opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}
/* Scene animation: original vector art, no canvas framework or downloaded assets. */
.cloud{animation:cloud-drift 7s ease-in-out infinite alternate}.cloud.second{animation-delay:-3s}.pip-bob{transform-box:fill-box;transform-origin:center bottom;animation:pip-breathe 3s ease-in-out infinite}.pip-eye{transform-box:fill-box;transform-origin:center;animation:blink 5.3s infinite}.gear-spin{transform-box:fill-box;transform-origin:center;animation:gear-turn 16s linear infinite}.gear-spin.reverse{animation-direction:reverse;animation-duration:22s}.core-glow{opacity:.45;animation:core-pulse 2.6s ease-in-out infinite}.signal-line{stroke-dasharray:8 12;animation:signal-move 2s linear infinite}.beam-ring{opacity:.12}.spark-dot{animation:twinkle 2.4s infinite alternate}.spark-dot:nth-child(even){animation-delay:-1.2s}.testing .gear-spin{animation-duration:.8s}.testing .core-glow{animation-duration:.17s}.testing .pip-bob{animation:machine-shake .15s linear infinite}.success .beam-ring{animation:ripple 1.5s ease-out infinite}.success .pip-bob{animation:happy-jump .65s ease-in-out 3}.success .balloon{animation:balloon-float 2.5s ease-in-out infinite}.success .sunlight{opacity:.8}.sunlight{opacity:.15;transition:opacity .6s}.machine-fail{animation:machine-shake .15s 3}.confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:20}.confetti i{position:absolute;left:var(--x);top:-20px;width:8px;height:15px;background:var(--c);border-radius:3px;animation:confetti-fall 1.6s var(--d) ease-in forwards}.confetti i:nth-child(2n){width:8px;height:8px;border-radius:50%}
@keyframes cloud-drift{to{transform:translateX(12px)}}@keyframes pip-breathe{50%{transform:translateY(-4px) scaleY(1.018)}}@keyframes blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.08)}}@keyframes gear-turn{to{transform:rotate(360deg)}}@keyframes core-pulse{50%{opacity:.9}}@keyframes signal-move{to{stroke-dashoffset:-40}}@keyframes twinkle{to{opacity:.25}}@keyframes machine-shake{25%{transform:translateX(-2px)}75%{transform:translateX(2px)}}@keyframes happy-jump{50%{transform:translateY(-14px) rotate(-3deg)}}@keyframes ripple{0%{opacity:.7;stroke-width:5}100%{opacity:.12;stroke-width:1}}@keyframes balloon-float{50%{transform:translateY(-14px)}}@keyframes confetti-fall{to{top:105%;transform:rotate(var(--r));opacity:.5}}
@media(min-width:1200px){.stage{padding:2px 15px}.world-panel .illustration>svg{max-height:335px}.workbench{padding:24px}.parts{margin-bottom:19px}}
@media(max-width:900px){.intro{padding:30px 24px 38px;min-height:530px}.intro h1{font-size:52px;letter-spacing:-2.8px}.intro-lead{font-size:19px}.art-sticker{right:0;padding:14px 10px;font-size:8px}.work-grid{grid-template-columns:minmax(0,1.3fr) minmax(285px,1fr);gap:14px}.play{padding:24px 20px}.workbench{padding:18px 15px}.goal-strip{gap:13px;padding:12px 9px}.goal-strip strong{font-size:14px}.goal-strip .tiny-label{font-size:7px}.world-top{padding:14px 12px 0}.world-tag{font-size:7px;letter-spacing:1px}.world-top .status-pill{font-size:8px}.coach{padding:13px;gap:10px}.mission-heading h1{font-size:27px}}
@media(max-width:680px){.topbar{padding:18px 21px}.intro{grid-template-columns:1fr;padding:30px 23px}.intro-copy{position:relative;z-index:1}.intro h1{font-size:56px;letter-spacing:-3px;margin:15px 0}.intro-lead{font-size:19px}.intro-copy>p:not(.intro-lead){max-width:100%}.intro-art{grid-row:2;max-width:470px;margin:10px auto 0;width:100%}.intro-art .illustration{aspect-ratio:1.7;border-radius:24px}.intro-art .illustration>svg{width:105%;transform:translateX(-2.5%)}.art-sticker{top:0;right:12px}.pip-custom{margin-top:15px}.start-btn{width:100%;margin-bottom:18px}.work-grid{grid-template-columns:1fr}.world-panel .illustration>svg{max-height:295px}.world-top{padding:14px 16px 0}.world-tag{font-size:8px}.stage{padding:0 10px}.goal-strip{margin:0 14px 12px;padding:11px 16px;gap:25px}.goal-strip strong{font-size:18px}.goal-strip .tiny-label{font-size:8px}.coach{min-height:80px;padding:13px 16px}.coach p{font-size:12px}.mission-heading{gap:10px;align-items:flex-start}.mission-heading h1{font-size:27px}.mission-heading p{font-size:12px}.mission-progress{gap:5px;margin-top:4px}.step-dot{width:25px;height:25px;font-size:10px}.workbench{padding:20px}.workbench-heading h2{font-size:18px}.workbench-heading span{font-size:10px}.parts legend{font-size:13px}.part-help{font-size:10px}.part-btn{min-height:62px}.part-btn svg{height:21px}.parts{margin-bottom:17px}.workbench-bottom>span{font-size:11px}.text-btn{font-size:12px}.lab-bottom{flex-direction:column;gap:9px}.lab-bottom details{width:100%}.game-footer{padding:17px 22px;font-size:9px}.footer-version{display:none}.complete{padding:32px 22px}.complete h1{font-size:35px}.stat-card{padding:16px 6px}.stat-card strong{font-size:25px}.stat-card span{font-size:9px}.stats-grid{gap:7px}.run-row{font-size:11px}.intro .eyebrow{font-size:9px}}
@media(max-width:370px){.topbar{padding:14px}.play{padding:19px 12px}.intro{padding:25px 18px}.intro h1{font-size:49px}.wordmark{font-size:25px}.brand-pill{padding:4px;font-size:8px}.mission-progress{display:none}.goal-strip{gap:15px}.goal-strip strong{font-size:16px}.part-help{font-size:9px}.game-footer{padding:16px 14px}.workbench{padding:18px 14px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.bench-feedback{font-size:12px;line-height:1.7;margin-top:14px;border:1px solid #d1dfc8;border-left:3px solid #71976b;background:#eef3e5;padding:12px;border-radius:8px;color:#415f42}

/* Phaser transparent scene overlays the original SVG, which remains a fallback. */
#stage{position:relative;isolation:isolate}#stage .almond-phaser-layer{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}#stage .almond-phaser-layer canvas{display:block;width:100%;height:100%;object-fit:fill}#stage .almond-phaser-status{position:absolute;right:12px;top:10px;z-index:3;font-size:10px;letter-spacing:.07em;color:#446554;background:#f5f8e7dd;border-radius:12px;padding:4px 8px} @media(prefers-reduced-motion:reduce){#stage .almond-phaser-layer{display:none}}
