/* Consistent, compact pre-launch interface. World and actor art stay unchanged. */
:root{--panel:#0e2030ed;--border:#a6c3d329;--ink:#edf4f7;--muted:#a8bac7;--cyan:#aadfee;--gold:#e7bd83}
html,body{color:var(--ink);font-family:Inter,'Segoe UI',sans-serif}button{border-radius:12px;font-weight:550;transition:background .16s,border-color .16s}button:hover:not(:disabled){border-color:#b1e5f080}button:focus-visible{outline:2px solid #c4edf5;outline-offset:4px}button:disabled{opacity:.35}
header{padding:22px 28px;background:linear-gradient(#0815226b,transparent)}.brand{gap:11px;font-size:15px;letter-spacing:-.25px}.brand>b{background:#132a3ace;border:1px solid var(--border);border-radius:14px;width:42px;height:42px;font-size:13px;letter-spacing:-.5px}.brand small{font-size:10px;letter-spacing:.5px;color:var(--muted);font-weight:400;margin-top:5px}.top-actions{gap:14px}.top-actions>span{color:#c2ced6;font-size:11px;letter-spacing:.25px;padding:7px 11px;border:1px solid var(--border);border-radius:20px;background:#12283a70}#pause{width:44px;height:44px;border-radius:50%;padding:0;display:grid;place-items:center;background:#102536da;border:1px solid var(--border);font-size:18px}
.eyebrow{font-size:10px;font-weight:600;letter-spacing:1.1px;color:var(--muted);text-transform:uppercase;margin:0 0 12px}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--gold);margin-right:6px;vertical-align:2px}
.mission{left:28px;top:98px;width:238px;padding:18px;background:var(--panel);border:1px solid var(--border);border-radius:18px;box-shadow:0 10px 28px #00101c24;backdrop-filter:blur(12px)}.mission h2{font-size:18px;line-height:1.3;font-weight:550;letter-spacing:-.35px;margin:0 0 8px}.mission>p:not(.eyebrow){font-size:11px;color:var(--muted);line-height:1.5;margin:0 0 20px}.preparation-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;color:var(--muted)}.preparation-heading b{font-size:12px;font-weight:550;color:var(--gold)}#repair-segments{display:flex;gap:4px;margin:10px 0 13px}#repair-segments i{display:block;flex:1;height:4px;background:#92a8b527;border-radius:4px}#repair-segments i.complete{background:var(--gold);box-shadow:0 0 9px #e7bd8333}
#repair-route,body[data-touch=true] #repair-route{position:static;max-width:none;font-size:11px;line-height:1.45;pointer-events:none;margin:0;color:#bdd0db}#repair-route .repair-route-item{display:flex;align-items:center;gap:9px;margin-top:7px}#repair-route b{font-size:9px;font-weight:550;color:var(--cyan);border:1px solid #9cbec443;border-radius:6px;width:23px;height:23px;display:grid;place-items:center;flex:none}#repair-route .repair-route-note{display:block;line-height:1.5;font-size:10px;color:var(--muted)}
.inventory,body[data-aiming=true] .inventory{top:98px;right:28px;left:auto;bottom:auto;width:244px;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:18px;box-shadow:0 10px 28px #00101c24;backdrop-filter:blur(12px)}.inventory-top{display:flex;align-items:center;justify-content:space-between}.inventory-top .eyebrow{font-size:10px;letter-spacing:1px}.inventory-top>span:last-child{display:flex;gap:5px;align-items:baseline;font-size:11px}.inventory-top b{font-size:24px;font-weight:550;line-height:1;color:var(--ink)}.inventory-top small{font-size:10px;color:var(--muted)}.inventory ol{gap:4px;margin:15px 0}.inventory li{padding:7px 0 5px;background:#06182752;border:1px solid #a1bece1a;border-radius:9px;font-size:9px;color:var(--muted)}.inventory li svg{display:block;width:23px;height:23px;margin:0 auto 5px}.inventory li span{font-size:9px;margin:0}.inventory li.next{border-color:#a3e0ef80;background:#9cd9e612;color:#e0f5fa}.inventory li.past{opacity:.5}.next small{font-size:10px;letter-spacing:0;color:var(--muted)}.next strong{font-size:15px;font-weight:550;letter-spacing:-.2px;line-height:1.25;margin-top:5px}#round{display:block;font-size:10px;font-weight:400;color:#7f99aa;margin-top:13px;letter-spacing:0}
.panel{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,-50%);width:360px;max-width:calc(100% - 32px);max-height:calc(100dvh - 32px);overflow:auto;padding:29px;background:linear-gradient(145deg,#142b3cf5,#0b1d2df5);border:1px solid #b2d1df30;border-radius:22px;box-shadow:0 24px 80px #0005;backdrop-filter:blur(16px);margin:0}.panel h1{font-size:34px;line-height:1.13;letter-spacing:-1.25px;font-weight:550;margin:14px 0}.panel h1 em{color:var(--cyan)}.panel>p:not(.eyebrow){font-size:14px;color:var(--muted);line-height:1.65;margin:0 0 20px}.panel .quiet{font-size:10px!important;line-height:1.5!important;margin-top:14px!important;color:#8ba4b5!important}.panel .how{gap:9px;font-size:10px;margin:20px 0 8px}.panel .how kbd{min-width:auto;font-size:9px}.primary{width:100%;border:1px solid #cceef5;background:#afdfea;color:#122f41;min-height:48px;padding:12px 15px;border-radius:12px;font-weight:600;font-size:13px;margin-top:12px}.primary:hover{background:#c6eaf1}.secondary,#reset-playthrough{display:block;width:100%;background:transparent;min-height:44px;color:#bfd1dc;border:1px solid #829dad30;margin:10px 0 0;padding:10px;font-size:12px}#reset-playthrough{border:0;color:#9cafbc;margin-top:6px}#reset-confirm{border:1px solid #e7bd8340;border-radius:14px;padding:12px;margin-top:10px;font-size:12px;color:#d5e0e7}#reset-confirm p{line-height:1.6;margin:0 0 10px}#reset-confirm button{font-size:11px;padding:9px;min-height:44px;margin:0 3px 0 0}#reset-yes{background:#e8c59b;color:#352d23}#reset-no{background:#264556;border:1px solid #94bac840}#preview-tools{margin-top:14px;border-top:1px solid var(--border);padding-top:12px;color:#91a9b9;font-size:11px}#preview-tools summary{cursor:pointer}#phone-report{border:1px solid var(--border);min-height:44px;border-radius:10px;margin-top:10px;font-size:11px}
.play-actions{right:28px;bottom:78px;gap:8px}.play-actions button{gap:10px;padding:12px 15px;border-radius:13px;min-width:103px;min-height:48px;font-size:12px;background:#10283be8;border:1px solid var(--border);backdrop-filter:blur(8px)}.play-actions button:last-child{background:#285469bd;border-color:#add8e946}.play-actions kbd{font-size:8px;opacity:.65;border-color:#b0cfdd30}.play-actions #aim[aria-pressed=true]{background:#9dd2e0;color:#0d3042;border-color:#c0e7f0}footer{padding:18px 28px;font-size:10px;background:linear-gradient(transparent,#0a192578);color:#aabdc9}footer button{font-size:11px;background:#0f273add;border:1px solid var(--border);border-radius:12px;min-height:40px;padding:8px 14px}footer .desktop-hint{font-size:10px}footer i{margin:0 6px;color:#7591a4}#toast{top:85px;max-width:min(430px,90%);white-space:normal;text-align:center;border:1px solid #bcd3df30;background:#112d40ed;color:#deedf2;font-size:12px;padding:12px 20px;border-radius:14px;z-index:8;box-shadow:0 8px 25px #0003}
#repair-nearby{bottom:142px;max-width:calc(100vw - 30px);font-size:12px;white-space:normal;text-align:center;color:#dcedf3;background:#153447ed;border:1px solid #a6d4e465;border-radius:30px;padding:13px 22px;min-height:48px;box-shadow:0 8px 25px #0003}#aim-hint{font-size:10px;letter-spacing:.25px;background:#122a3bcd;border:1px solid var(--border);padding:8px 14px;color:#c8dfe8;border-radius:20px}#aim-hint:after{content:none}#aim-hint span{font-size:inherit}#reticle{border-color:#d3e8f294}
.challenge-panel{background:linear-gradient(145deg,#142c3e,#0d2132);border-color:var(--border);border-radius:22px}.repair-heading h2{font-weight:550}.repair-heading .eyebrow{font-size:10px;color:#9ab9ca}.repair-heading button{background:#1b3b50;border-color:var(--border);border-radius:50%}#repair-instruction{color:#c2e5ee;font-size:15px}.repair-bottom{color:#a9c1ce;font-size:12px}.repair-bottom button{background:#b0dedc;color:#153544;border-radius:11px}.challenge-review-tools{z-index:20}
#onboarding{position:fixed;inset:0;z-index:40;isolation:isolate;background:linear-gradient(transparent,#04101b42);touch-action:none}#tour-focus{position:absolute;border:2px solid #c0eff9;box-shadow:0 0 0 300vmax #030d184f,0 0 26px #7cceff40;pointer-events:none;z-index:0}#tour-arrow{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;overflow:visible}#tour-card{position:absolute;bottom:max(45px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:360px;max-width:calc(100% - 32px);padding:22px 24px;background:#112a3efa;border:1px solid #a3d6e45c;border-radius:22px;box-shadow:0 20px 65px #0005;z-index:3;color:var(--ink)}.tour-meta{display:flex;justify-content:space-between;font-size:10px;color:#a1bdce;margin-bottom:12px;letter-spacing:.4px}#tour-card h2{font-size:23px;line-height:1.22;letter-spacing:-.5px;font-weight:550;margin:0 0 10px}#tour-card p{font-size:14px;line-height:1.6;color:#c4d7e2;margin:0 0 5px}#tour-card .primary{min-height:44px;margin-top:16px}.inventory{z-index:4}body[data-phase=onboarding][data-onboarding="1"] .inventory{z-index:41;opacity:1;border-color:#beeaf48c;pointer-events:none}body[data-phase=onboarding][data-onboarding="2"] #tour-focus{display:none}body[data-phase=onboarding] .play-actions,body[data-phase=onboarding] #joystick,body[data-phase=onboarding] #repair-nearby,body[data-phase=onboarding] footer{display:none}body[data-phase=onboarding] *{cursor:auto!important}
@media(max-width:1000px) and (min-width:701px){.mission{width:218px}.inventory{width:228px}.play-actions button{min-width:90px}}
body[data-touch=true] header{padding:calc(12px + var(--safe-top)) calc(14px + var(--safe-right)) 10px calc(14px + var(--safe-left))}body[data-touch=true] .brand{font-size:12px;gap:8px;letter-spacing:-.25px}body[data-touch=true] .brand>b{width:35px;height:35px;border-radius:12px;font-size:11px}body[data-touch=true] .brand small{font-size:8px;letter-spacing:.4px;margin-top:4px}body[data-touch=true] #pause{min-width:44px;min-height:44px;width:44px;height:44px}body[data-touch=true] .mission{top:calc(78px + var(--safe-top));left:calc(12px + var(--safe-left));width:148px;padding:12px;border-radius:15px;backdrop-filter:none}body[data-touch=true] .mission h2{font-size:14px;line-height:1.3;margin-bottom:10px}body[data-touch=true] .mission .eyebrow{font-size:8px;letter-spacing:.6px;margin-bottom:10px}body[data-touch=true] .mission>p:not(.eyebrow){display:none}body[data-touch=true] .preparation-heading{font-size:9px;gap:4px;align-items:flex-start}body[data-touch=true] .preparation-heading span{max-width:77px}body[data-touch=true] .preparation-heading b{font-size:10px;white-space:nowrap}body[data-touch=true] #repair-segments{margin:9px 0 10px;gap:3px}body[data-touch=true] #repair-route{font-size:9px;line-height:1.4}body[data-touch=true] #repair-route b{width:19px;height:19px;font-size:8px;border-radius:5px}body[data-touch=true] #repair-route .repair-route-item{gap:6px;margin-top:7px}body[data-touch=true] #repair-route .repair-route-note{font-size:9px}
body[data-touch=true] .inventory,body[data-touch=true][data-aiming=true] .inventory{top:calc(78px + var(--safe-top));right:calc(12px + var(--safe-right));width:164px;left:auto;bottom:auto;padding:12px;border-radius:15px;background:var(--panel)}body[data-touch=true] .inventory-top .eyebrow{font-size:8px;letter-spacing:.6px}body[data-touch=true] .inventory-top>span:last-child{font-size:10px;gap:3px;align-items:baseline}body[data-touch=true] .inventory-top b{font-size:20px}body[data-touch=true] .inventory-top b:after{content:none}body[data-touch=true] .inventory-top small{font-size:9px}body[data-touch=true] .inventory ol{display:flex;gap:3px;margin:12px 0 10px}body[data-touch=true] .inventory li{padding:5px 0;border-radius:6px;font-size:8px}body[data-touch=true] .inventory li svg{width:18px;height:18px;margin-bottom:4px}body[data-touch=true] .inventory li span{font-size:7px}body[data-touch=true] .inventory .next small{display:block;font-size:9px;letter-spacing:0}body[data-touch=true] .next strong{font-size:12px;line-height:1.3}body[data-touch=true] #round{font-size:9px;margin-top:10px}
body[data-touch=true] .panel{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,-50%);width:340px;max-width:calc(100% - 30px);margin:0;padding:24px;border-radius:22px}body[data-touch=true] .panel h1{font-size:31px;margin:14px 0}body[data-touch=true] .panel>p:not(.eyebrow){font-size:13px;margin:0 0 17px;line-height:1.6}body[data-touch=true] .panel .primary{font-size:13px;margin-top:12px;min-height:48px}
body[data-touch=true] .play-actions{right:calc(14px + var(--safe-right));bottom:calc(56px + var(--safe-bottom));grid-template-columns:62px 62px;grid-template-rows:55px 55px;gap:9px}body[data-touch=true] .play-actions button{font-size:11px;min-height:55px;border-radius:15px;padding:6px}body[data-touch=true][data-phase=playing] #joystick{left:calc(14px + var(--safe-left));bottom:calc(60px + var(--safe-bottom));width:106px;height:106px;background:#142f456e;border:1px solid #a4cbdd52}body[data-touch=true] #stick{width:36px;height:36px;left:34px;top:34px;background:#a9d2e1b5}body[data-touch=true] #repair-nearby{bottom:calc(190px + var(--safe-bottom));font-size:11px;min-height:46px;padding:12px 17px}body[data-touch=true] footer{padding:8px 14px calc(6px + var(--safe-bottom))}body[data-touch=true] footer button{min-height:40px;font-size:10px}body[data-touch=true] footer .touch-hint{font-size:9px}body[data-touch=true] #toast{top:calc(276px + var(--safe-top));font-size:11px;max-width:90%}body[data-touch=true] #aim-hint{font-size:9px;max-width:90%;white-space:normal;text-align:center}body[data-touch=true] #aim-hint .touch-hint{font-size:9px}
@media(max-width:350px){body[data-touch=true] .mission{width:134px;padding:10px}body[data-touch=true] .inventory{width:152px;padding:10px}body[data-touch=true] .brand small{display:none}}
@media(max-height:550px){body[data-touch=true] .mission{top:68px;width:177px;padding:10px 12px}body[data-touch=true] .mission h2{display:block;font-size:13px;margin:0 0 10px}body[data-touch=true] .mission>.eyebrow{display:none}body[data-touch=true] #repair-route{display:none}body[data-touch=true] .preparation-heading span{max-width:none}body[data-touch=true] #repair-segments{margin-bottom:0}body[data-touch=true] .inventory,body[data-touch=true][data-aiming=true] .inventory{top:68px;width:186px;padding:10px 12px}body[data-touch=true] .inventory ol{margin:8px 0 9px}body[data-touch=true] .inventory .next small,body[data-touch=true] #round{display:none}body[data-touch=true] .inventory .next{margin:0}body[data-touch=true] .next strong{font-size:11px;margin:0}body[data-touch=true] .play-actions,body[data-touch=true][data-phase=playing] #joystick{bottom:35px}body[data-touch=true] #repair-nearby{bottom:90px;max-width:35%;font-size:10px;padding:10px 13px}body[data-touch=true] #toast{top:68px;max-width:40%;font-size:10px}body[data-touch=true] .panel{width:360px;padding:18px 24px;max-height:calc(100dvh - 20px)}body[data-touch=true] .panel h1{font-size:26px;margin:8px 0}body[data-touch=true] .panel>p:not(.eyebrow){font-size:12px;margin-bottom:9px}body[data-touch=true] .panel .touch-intro{display:none}body[data-touch=true] footer .touch-hint{display:none}body[data-touch=true] footer{justify-content:center}#tour-card{bottom:18px;width:320px;padding:16px 20px}#tour-card h2{font-size:19px}#tour-card p{font-size:12px;line-height:1.5}.tour-meta{margin-bottom:8px;font-size:9px}#tour-card .primary{margin-top:12px;min-height:42px}body[data-onboarding="0"] #tour-card{left:24px;transform:none;width:280px}body[data-onboarding="1"] #tour-card{left:30%;width:300px}#repair-canvas{height:calc(100dvh - 175px)}.repair-heading button,.repair-bottom button{min-height:44px;min-width:44px}}
@media(max-width:700px) and (min-height:551px){#tour-card{bottom:30px;padding:20px;width:340px}#tour-card h2{font-size:21px}#tour-card p{font-size:13px}.tour-meta{font-size:10px}}
@media(prefers-reduced-motion:reduce){button{transition:none}}
/* Opt-in review tools never appear in the player's ordinary game. */
.challenge-review-tools{position:fixed;inset:auto auto 8px 50%;transform:translateX(-50%);z-index:30;max-width:min(650px,95vw);padding:6px;border-radius:10px;background:#102c3d;color:#d5edf7;font-size:11px}
.challenge-review-tools summary{cursor:pointer;list-style:none;text-align:center;padding:5px 12px}
.challenge-review-tools:not([open])>*:not(summary){display:none}
.challenge-review-tools[open]{width:650px;bottom:8px}
.challenge-review-tools button{padding:8px;margin:2px;font-size:11px;min-height:32px}
body[data-phase="onboarding"] .challenge-review-tools,body[data-phase="challenge"] .challenge-review-tools{display:none}
#station-status{display:block;font-size:12px;letter-spacing:.8px;color:#b6e5d4;margin:17px 0 7px}#optional-repairs{font-size:10px!important;line-height:1.5!important;margin:0 0 15px!important;color:#a5b9c6!important}#pause-reward{border-top:1px solid var(--border);margin-top:15px;padding-top:15px;font-size:12px;line-height:1.5}#pause-reward strong{font-size:12px;color:#b6e5d4}#pause-reward p{color:var(--muted)}
body[data-touch=true] #station-status{font-size:9px;letter-spacing:.3px;margin:10px 0 7px}body[data-touch=true] #optional-repairs{display:block;font-size:8px!important;margin-bottom:10px!important}body[data-touch=true] #toast{top:calc(325px + var(--safe-top))}
@media(max-height:550px){body[data-touch=true] #optional-repairs{display:none}body[data-touch=true] #station-status{font-size:9px;margin:6px 0}body[data-touch=true] #toast{top:68px}}

/* Completion is part of the scene: a quiet caption, no modal choices. */
#celebration-caption{position:fixed;z-index:18;left:50%;bottom:max(72px,calc(env(safe-area-inset-bottom) + 45px));transform:translateX(-50%);width:min(560px,calc(100% - 32px));text-align:center;color:#f0f8ff;pointer-events:none;text-shadow:0 2px 16px #001321,0 1px 4px #001321;padding:22px 18px;background:radial-gradient(ellipse,#071a2bd6,transparent 73%)}
#celebration-title{display:block;font-size:clamp(19px,2.3vw,30px);font-weight:600;letter-spacing:1.2px;line-height:1.3}#celebration-copy{font-size:13px;line-height:1.6;color:#d5e8f1;margin:9px auto 0;max-width:430px}
body[data-phase=celebrating] .mission,body[data-phase=celebrating] .inventory,body[data-phase=celebrating] header,body[data-phase=celebrating] footer,body[data-phase=celebrating] .play-actions,body[data-phase=celebrating] #joystick,body[data-phase=celebrating] #reticle,body[data-phase=celebrating] #aim-hint,body[data-phase=celebrating] #repair-nearby,body[data-phase=celebrating] #toast,body[data-phase=celebrating] .challenge-review-tools,body[data-phase=celebrating] .launch-review-tools{visibility:hidden!important;pointer-events:none!important}
@media(max-width:700px){#celebration-caption{bottom:110px;padding:18px 8px}#celebration-copy{font-size:12px;max-width:310px}body[data-phase=celebrating] #celebration-caption{bottom:34px}}
@media(max-height:550px){#celebration-caption,body[data-phase=celebrating] #celebration-caption{bottom:14px;padding:12px 8px}#celebration-title{font-size:21px}#celebration-copy{font-size:11px;margin-top:4px}}
.launch-review-tools{position:fixed;bottom:8px;left:8px;z-index:30;background:#102c3d;padding:6px;border-radius:8px;font-size:11px;max-width:min(430px,96vw)}.launch-review-tools summary{cursor:pointer;padding:5px}.launch-review-tools button{padding:8px;font-size:11px;margin:3px}.launch-review-tools output{display:block;font-size:9px;max-height:60px;overflow:auto}.launch-review-tools:not([open])>*:not(summary){display:none}body[data-phase=onboarding] .launch-review-tools,body[data-phase=challenge] .launch-review-tools,body[data-phase=completion] .launch-review-tools{display:none}
body[data-phase=completion] .challenge-review-tools{display:none}

/* The playfield has no cursor overlay; menus and repair canvases retain theirs. */
body[data-phase=playing] #game,body[data-phase=playing] #game *{cursor:none!important}
body[data-phase=arriving],body[data-phase=celebrating]{cursor:none}
body[data-phase=arriving] .mission,body[data-phase=arriving] .inventory,body[data-phase=arriving] header,body[data-phase=arriving] footer,body[data-phase=arriving] .play-actions,body[data-phase=arriving] #joystick,body[data-phase=arriving] #reticle,body[data-phase=arriving] #aim-hint,body[data-phase=arriving] #repair-nearby,body[data-phase=arriving] #toast,body[data-phase=arriving] .challenge-review-tools,body[data-phase=arriving] .launch-review-tools{visibility:hidden!important;pointer-events:none!important}
#final-repair-shortcut{text-align:center;border-radius:10px}

.launch-review-tools button{background:#234154;color:#e8f6fc;border:1px solid #729daf66;border-radius:7px}
