/* Atelier 452 — Neon Cabinet. Shared tokens and components, no external assets. */
:root{color-scheme:dark;--ink:#eefaff;--muted:#9fb6cb;--dim:#738aa3;--base:#07101f;--panel:#111f35;--edge:#2c405d;--lime:#d3ff68;--cyan:#69e9ef;--purple:#bf9bff;--gold:#ffcf6a;--red:#ff718b;--radius:22px;font:15px "Segoe UI",system-ui,sans-serif;color:var(--ink);background:var(--base)}
*{box-sizing:border-box}body{margin:0;height:100dvh;overflow:hidden;display:flex;flex-direction:column;background:radial-gradient(ellipse at 6% 20%,#16414e50,transparent 48%),radial-gradient(ellipse at 95% 88%,#50396b35,transparent 45%),#07101f;overscroll-behavior:none;-webkit-user-select:none;user-select:none}button,input,select,textarea{font:inherit}button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;cursor:pointer;color:var(--ink);border:1px solid #405879;border-radius:13px;padding:10px 16px;background:linear-gradient(160deg,#243b58,#16273e);box-shadow:inset 0 1px #ffffff12,0 3px 0 #040b15,0 5px 12px #0002;transition:transform .12s,filter .15s,border-color .15s}button:hover:not(:disabled){filter:brightness(1.16);border-color:#84a1c6}button:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 2px 8px #0003,0 1px 0 #040b15}button:disabled{cursor:default;color:#8da3bd;filter:saturate(.6)}button:focus-visible,canvas:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--cyan);outline-offset:4px}button[hidden],[hidden]{display:none!important}.icon{width:22px;height:22px;display:block;flex:none}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.eyebrow{font-size:9px;letter-spacing:1.8px;font-weight:800;color:var(--muted)}h1,h2,p{margin:0}h1,h2{letter-spacing:-.6px}h1{font-size:28px}h2{font-size:19px}.muted{color:var(--muted);font-size:12px;line-height:1.6}.panel{position:relative;min-height:0;border:1px solid var(--edge);border-radius:var(--radius);background:linear-gradient(145deg,#17283e,#101c30);box-shadow:inset 0 1px #ffffff0c,0 8px 24px #0002}
.topbar{height:78px;flex:none;display:flex;align-items:center;gap:26px;padding:0 28px;border-bottom:1px solid #243851;background:#0a1424c9;box-shadow:0 5px 30px #0002}.brand{display:flex;align-items:center;gap:11px;min-width:210px}.brand-mark{width:46px;height:46px;position:relative;transform:rotate(-9deg);background:linear-gradient(145deg,#263f56,#122238);border:1px solid #54718a;border-radius:15px;box-shadow:inset 0 1px #ffffff40,0 4px 0 #030a15}.brand-mark i{position:absolute;border-radius:50%;box-shadow:0 0 10px #d3ff6825}.brand-mark i:nth-child(1){width:13px;height:13px;left:8px;top:7px;background:radial-gradient(circle at 30% 25%,#fff,#d3ff68 50%,#7fbb37)}.brand-mark i:nth-child(2){width:20px;height:20px;right:6px;bottom:6px;background:radial-gradient(circle at 30% 25%,#fff,#69e9ef 50%,#297eac)}.brand-mark i:nth-child(3){width:6px;height:6px;left:7px;bottom:8px;background:var(--purple)}.brand small{font-size:10px;letter-spacing:6px;color:var(--cyan);display:block;font-weight:800;line-height:1.3}.brand strong{font-size:24px;letter-spacing:-1px;font-style:italic;line-height:1.1}.brand strong span{color:var(--lime);font-size:17px;margin-left:5px}.level-identity{display:flex;align-items:center;gap:14px;min-width:0}.level-identity>span{font-size:10px;font-weight:850;letter-spacing:1.5px;border:1px solid #3b526b;padding:10px 12px;border-radius:9px;color:var(--cyan);background:#162740}.level-identity h1{font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.headbuttons{margin-left:auto;display:flex;gap:8px}.icon-button{width:44px;height:44px;padding:10px;border-radius:13px}.icon-button.is-paused{border-color:var(--lime);color:var(--lime)}.is-muted{color:#8ba1b9}.is-muted:after{content:"";position:absolute;width:23px;height:2px;transform:rotate(-45deg);background:#c7d4df;box-shadow:0 0 0 2px #1b3048}#qa{font-size:9px;letter-spacing:.7px;color:var(--gold)}
.app{flex:1;min-height:0;width:100%;max-width:1800px;margin:auto;display:grid;grid-template-columns:minmax(0,1fr) 280px;grid-template-rows:minmax(0,1fr) 78px;gap:14px;padding:18px 24px}.play{grid-column:1;grid-row:1;min-width:0;min-height:0;display:flex;flex-direction:column;gap:10px}.mission{flex:none;padding:13px 17px 11px}.mission-main{display:flex;gap:13px;align-items:center}.mission-symbol{width:46px;height:46px;border:1px solid #549ba04d;border-radius:15px;display:grid;place-items:center;color:var(--cyan);background:radial-gradient(circle at 30% 0,#386b7f50,#102d4050);box-shadow:inset 0 1px #ffffff15}.mission-symbol .icon{width:27px;height:27px}.mission-copy{flex:1;min-width:0}.mission-title{display:flex;align-items:center;justify-content:space-between;gap:6px}.mission h2{font-size:19px;margin:2px 0 5px;font-weight:750}.state{font-size:9px;font-weight:800;letter-spacing:1.3px;color:var(--cyan);display:flex;align-items:center;gap:5px}.state:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.state[data-phase=running]{color:var(--lime)}.state[data-phase=running]:before{animation:beacon 1.8s infinite}.state[data-phase=lost]{color:var(--red)}.mission-progress{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;color:#b9cee0}.chip{font-size:9px;white-space:nowrap;color:#a3b9cc}.chip.done{color:var(--lime)}.progressbar{height:6px;border-radius:8px;background:#040d1b;box-shadow:inset 0 1px 2px #0008;margin-top:7px;overflow:hidden}.progressbar i{display:block;width:var(--progress,0%);height:100%;border-radius:inherit;background:linear-gradient(90deg,#54d2d5,#cfff68);box-shadow:0 0 12px #b7ff6a66;transition:width .2s ease-out}.mission-bottom{display:flex;align-items:center;gap:12px;margin-top:10px;padding-top:9px;border-top:1px solid #a8cfed12;justify-content:space-between}.conditions{display:flex;flex-wrap:wrap;gap:5px}.condition{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:650;padding:5px 7px;border:1px solid #52648666;border-radius:7px;color:#bfcee2;background:#0b18294d}.condition .icon{width:13px;height:13px;color:var(--gold)}.condition.met{border-color:#d3ff6845;color:var(--lime)}.condition.met .icon{color:var(--lime)}.counters{display:flex;gap:22px;flex-shrink:0}.counter{display:flex;align-items:center;gap:7px}.counter .icon{color:#7d9ebd;width:18px;height:18px}.counter small{display:block;font-size:8px;letter-spacing:1px;color:#9ab0c9;font-weight:750}.counter b{font-size:17px;line-height:1.2;font-variant-numeric:tabular-nums}.counter.reserve .icon{color:var(--lime)}.counter.reserve b{color:var(--lime)}
.stage{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;border-radius:21px;padding:5px;border:1px solid #466080;background:linear-gradient(140deg,#344a60,#142138 25%,#0c1528 70%,#385066);box-shadow:inset 0 1px #a2c8df36,inset 0 -2px #0008,0 10px 25px #0004,0 0 28px #48d8dd06}.stage-top,.stagefoot{flex:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;font-size:9px;color:#92adc9}.stage-top{font-weight:750;font-size:8px;letter-spacing:1.7px}.stage-top>span:last-child{letter-spacing:0;font-size:10px;font-weight:500;color:#bdcfdf}.status-light{display:inline-block;width:4px;height:4px;margin-right:5px;border-radius:50%;background:var(--cyan);box-shadow:0 0 5px var(--cyan)}.canvaswrap{flex:1;min-height:0;min-width:0;display:grid;place-items:center;overflow:hidden;border:1px solid #060e1c;border-radius:13px;background:#071221;box-shadow:inset 0 0 25px #0008}canvas{display:block;aspect-ratio:16/9;touch-action:none;-webkit-touch-callout:none}.stagefoot{padding:5px 10px 2px;color:#8ba5bf}.stagefoot>span:first-child:before{content:"✦";color:var(--cyan);margin-right:6px}.stagefoot>span:last-child{font-variant-numeric:tabular-nums}.actions{display:flex;align-items:stretch;gap:10px;flex:none}.primary{color:#18271a;background:linear-gradient(180deg,#ecffa5 0%,#d6ff6c 44%,#b7e54c 100%);border:1px solid #eaffbd;font-weight:850;letter-spacing:.9px;box-shadow:inset 0 2px #ffffff8a,0 4px 0 #648933,0 7px 20px #b3ec4826;text-shadow:0 1px #f7ffbd88;overflow:hidden}.primary:before{content:"";position:absolute;inset:1px 2px 50%;border-radius:inherit;background:linear-gradient(#ffffff30,#ffffff05);pointer-events:none}.primary:hover:not(:disabled){border-color:#fff;filter:brightness(1.04)}.primary:active:not(:disabled){box-shadow:inset 0 2px 5px #58792538,0 1px 0 #648933}.primary:disabled{background:linear-gradient(#64814b,#50683a);border-color:#7b9662;color:#cfddb9;box-shadow:inset 0 1px #ffffff20,0 3px 0 #22311b;text-shadow:none}.launch{flex:1;min-height:53px;font-size:15px;border-radius:13px}.launch .icon{width:22px;height:22px}.button-key{position:absolute;right:15px;font-size:8px;font-weight:850;border:1px solid #243d2440;padding:4px 6px;border-radius:4px;letter-spacing:1px;opacity:.6}.secondary{background:linear-gradient(#253c58,#182a43);font-weight:650}.rebuild{min-width:140px;font-size:12px;color:#b8cde0}.coach{flex:none;min-height:16px;padding:0 4px;font-size:11px;color:#bed2df;text-align:center;line-height:1.3}.coach:before{content:"✧ ";color:var(--gold)}
.campaign{grid-column:1;grid-row:2;min-width:0;display:flex;align-items:center;gap:15px}.campaign-heading{min-width:115px;max-width:115px}.campaign-heading h2{font-size:11px;margin-top:3px;letter-spacing:0;font-weight:500;color:#aabed2}#levels{display:flex;gap:6px;min-width:0;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#3c566e transparent;padding:3px 2px 5px;overscroll-behavior:contain}.level{display:flex;flex-direction:column;gap:2px;min-width:64px;width:64px;min-height:66px;flex:none;border-radius:13px;padding:6px 3px;background:linear-gradient(160deg,#1b2c43,#102037);border-color:#293e59;box-shadow:inset 0 1px #ffffff0b,0 3px 0 #030b16}.level-number{font-size:19px;font-weight:850;color:#9fb9d2;line-height:1}.level-name{font-size:7px;line-height:1.1;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;color:#bdcde0}.level-status{font-size:8px;letter-spacing:1px;color:var(--cyan);min-height:10px;display:flex;justify-content:center;align-items:center}.level-status .icon{width:9px;height:9px}.level:disabled .level-number,.level:disabled .level-name{opacity:.48}.level:disabled .level-status{color:#8192ac}.level.active{border-color:var(--lime);background:linear-gradient(150deg,#2e4539,#1c3434);box-shadow:0 0 15px #d3ff6812,inset 0 1px #e4ffa125,0 3px 0 #39572d}.level.active .level-number{color:var(--lime)}.level.complete .level-status{color:var(--gold)}.just-unlocked{animation:unlock .65s ease-out}
.workshop{grid-column:2;grid-row:1/3;overflow:auto;scrollbar-width:thin;scrollbar-color:#3c566e transparent;overscroll-behavior:contain;padding:18px 15px;background:linear-gradient(165deg,#1b2942,#111d31 55%,#15243b)}.workshop-heading .eyebrow{font-size:8px;letter-spacing:1.5px;color:#96aaca}.workshop-heading h2{font-size:19px;margin:5px 0 15px;display:flex;align-items:center;gap:8px}.workshop-heading h2 .icon{width:21px;color:var(--cyan)}.wallet{position:relative;display:flex;align-items:center;gap:9px;padding:12px 13px;border:1px solid #82704255;border-radius:12px;background:linear-gradient(110deg,#49391c38,#19273d);margin-bottom:18px}.wallet .icon{color:var(--gold);width:26px;height:26px}.wallet b{font-size:25px;line-height:1;font-variant-numeric:tabular-nums;color:#ffe29a;text-shadow:0 1px 8px #f5b83015}.wallet small{margin-left:auto;color:#af9e7e;font-size:8px;letter-spacing:1px;font-weight:800}.upgrade{width:100%;display:block;text-align:left;margin-bottom:10px;padding:13px 12px 10px;border:1px solid #42526d;border-radius:14px;background:linear-gradient(145deg,#283451,#1a2942);box-shadow:inset 0 1px #ffffff16,0 4px 0 #081223,0 6px 12px #0002}.upgrade-top{display:flex;align-items:center;gap:10px}.upgrade-icon{width:39px;height:39px;flex:none;display:grid;place-items:center;border-radius:12px;background:linear-gradient(145deg,#365c72,#203448);color:var(--cyan);border:1px solid #6bdce64d;box-shadow:inset 0 1px #ffffff22}.upgrade-icon .icon{width:23px;height:23px}.precision .upgrade-icon{color:var(--purple);background:linear-gradient(145deg,#50466a,#2c294a);border-color:#bf9bff55}.burst .upgrade-icon{color:var(--gold);background:linear-gradient(145deg,#655034,#3a3140);border-color:#ffcf6a55}.upgrade-copy{min-width:0}.upgrade strong{font-size:13px;display:block;color:#f1f5ff}.upgrade small{font-size:10px;line-height:1.35;color:#b6c4d7;display:block;margin-top:3px}.upgrade-dots{display:flex;gap:4px;margin:11px 0 8px}.upgrade-dots i{height:4px;flex:1;border-radius:4px;background:#080f21;box-shadow:inset 0 1px #0009}.upgrade-dots i.filled{background:var(--cyan);box-shadow:0 0 5px #69e9ef44}.precision .upgrade-dots i.filled{background:var(--purple)}.burst .upgrade-dots i.filled{background:var(--gold)}.upgrade .row{display:flex;align-items:center;justify-content:space-between;gap:4px}.upgrade .row>span{color:#8ca4c1;font-size:8px;font-weight:750;letter-spacing:1px}.upgrade .row b{display:flex;align-items:center;gap:5px;color:var(--gold);font-size:13px}.upgrade .row .icon{width:14px;height:14px}.upgrade:disabled{opacity:1;background:linear-gradient(145deg,#202b42,#17233a);border-color:#32435d;box-shadow:inset 0 1px #ffffff08,0 3px 0 #081223}.upgrade:disabled .upgrade-top{opacity:.68}.upgrade:disabled .row b{color:#92a2b8}.purchased{animation:upgrade-flash .55s ease-out}.workshop-note{font-size:10px;line-height:1.5;color:#a4b6ce;text-align:center;margin:13px 0 5px}.saved{font-size:9px;text-align:center;color:#7996b1}.field-guide{padding:18px 2px 10px;margin-top:15px;border-top:1px solid #83a7cb1c}.module-key{display:flex;align-items:center;gap:10px;margin-top:12px}.key{width:34px;height:28px;display:grid;place-items:center;border-radius:8px;font-weight:850;font-size:16px;box-shadow:inset 0 1px #ffffff55,0 3px 0 #040b16;color:#142937}.mint{background:#99e9d1}.purple{background:#bd9cff}.amber{background:#ffd385}.module-key b{font-size:11px;display:block}.module-key small{display:block;font-size:10px;color:#8fa8c2;margin-top:1px}.tip{font-size:11px;line-height:1.5;color:#b6c9dd;margin-top:17px;padding:10px;border:1px dashed #60799466;border-radius:9px}details{margin-top:13px;border-top:1px solid #54708b40;padding-top:10px}summary{cursor:pointer;min-height:36px;font-size:11px;color:#a9bed7;display:flex;align-items:center;gap:8px}summary:before{content:"+";color:var(--cyan);font-size:17px}details[open] summary:before{content:"−"}label{font-size:11px;display:block;margin:6px 0;color:#a9c3d7}input,select,textarea{max-width:100%;width:100%;color:#edfaff;background:#081527;border:1px solid #405c7c;border-radius:9px;padding:9px;min-height:44px}input,textarea{-webkit-user-select:text;user-select:text}.coords{display:grid;grid-template-columns:1fr 1fr;gap:8px}#apply{width:100%;margin:8px 0}details .muted{font-size:10px}
/* Celebration and recovery use the same cabinet materials and icon language. */
dialog{position:fixed;width:min(490px,calc(100vw - 28px));max-height:94dvh;margin:auto;overflow:auto;border:1px solid #526c8b;border-radius:27px;background:radial-gradient(ellipse at 50% 0,#38515b80,transparent 60%),linear-gradient(155deg,#1a2b47,#0f1c32);color:var(--ink);padding:30px;box-shadow:inset 0 1px #cce8ff2a,0 25px 90px #0009;overscroll-behavior:contain}dialog::backdrop{background:#030a18b8;backdrop-filter:blur(7px)}dialog[open]{animation:dialog-enter .26s ease-out}dialog .primary,dialog>.secondary{width:100%;min-height:49px;margin-top:10px}dialog h1{font-size:31px;margin:7px 0 12px}dialog p{line-height:1.6}dialog>.muted{margin:9px 0}.result-screen{text-align:center;padding-top:25px;isolation:isolate}.result-rays{position:absolute;inset:0 0 auto;height:280px;z-index:-1;opacity:.17;background:repeating-conic-gradient(from 10deg at 50% 29%,#d3ff68 0 8deg,transparent 8deg 27deg);mask-image:linear-gradient(#000,transparent);pointer-events:none}.result-dismiss{position:absolute;right:14px;top:14px;width:35px;height:35px;min-height:35px;border-radius:50%;padding:7px;background:#09182a80;border-color:#7b97ab44;box-shadow:none;color:#a1b8ce}.result-medal{display:grid;place-items:center;width:69px;height:69px;margin:0 auto 17px;border:1px solid #ffe5a677;border-radius:22px;transform:rotate(-6deg);color:#422e16;background:linear-gradient(145deg,#fff0b4,#ffcf6a 50%,#cb8a35);box-shadow:inset 0 2px #fff8,0 5px 0 #754b24,0 0 40px #ffd57726}.result-medal .icon{width:39px;height:39px}.result-screen .eyebrow{color:var(--gold);font-size:9px;letter-spacing:2px}.result-screen h1{font-size:35px;letter-spacing:-1.3px;margin:8px 0}.stars{display:flex;align-items:center;justify-content:center;gap:12px;margin:15px 0 18px}.star-item{color:#30445c;transform:rotate(-8deg)}.star-item .icon{width:46px;height:46px;filter:drop-shadow(0 3px #0004)}.star-item:nth-child(2){transform:translateY(-5px) scale(1.22) rotate(3deg)}.star-item:nth-child(3){transform:rotate(10deg)}.star-item.earned{color:var(--gold);filter:drop-shadow(0 0 10px #ffd36b44)}dialog[open] .star-item.earned{animation:star-pop .55s both;animation-delay:calc(.12s + var(--i)*.12s)}#resultreason{font-size:12px;color:#afc6dd;margin:7px auto 17px;max-width:350px}.reward{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--gold);background:linear-gradient(90deg,transparent,#ffcd6412,transparent);border-block:1px solid #ffd36b20;padding:11px;margin:0 -3px 15px}.reward>.icon{width:26px;height:26px}.reward>span{font-size:28px;font-weight:850;min-width:76px;text-align:left;font-variant-numeric:tabular-nums}.reward small{font-size:9px;letter-spacing:1px;color:#bdab83}.resultstats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.resultstats>div{display:grid;grid-template-columns:24px 1fr;align-items:center;text-align:left;gap:1px 8px;background:#08172a77;border:1px solid #7898bb22;border-radius:12px;padding:10px 13px}.resultstats .icon{grid-row:1/3;color:#7aa2c6;width:20px;height:20px}.resultstats b{font-size:20px;font-variant-numeric:tabular-nums}.resultstats small{font-size:8px;font-weight:700;color:#9bb4ce;letter-spacing:1px}.result-screen #resultmeta{font-size:10px;margin:12px 0 0}.result-screen #lossdetail{font-size:9px;margin:4px 0 7px;color:#7d9ebd}.result-screen>.secondary{background:transparent;border-color:#637b9c55;box-shadow:none;font-size:12px;color:#bdd0e3;min-height:43px}.result-screen[data-outcome=lost] .result-rays{display:none}.result-screen[data-outcome=lost] .stars{display:none}.result-screen[data-outcome=lost] .result-medal{color:#c0d4ef;border-color:#8bb4d36b;background:linear-gradient(145deg,#3c5573,#233750);box-shadow:inset 0 2px #ffffff22,0 4px 0 #0a1428}.result-screen[data-outcome=lost] .eyebrow{color:#aac8e7}.result-screen[data-outcome=lost] #resultreason{border:1px solid #ffb47733;border-radius:12px;padding:12px;color:#e4c9ae;background:#6d45141a}.result-screen[data-outcome=lost] #resultretry{background:linear-gradient(#e4ffa2,#c5f265);color:#203323;box-shadow:0 4px 0 #668938;border-color:#e4ffaf;font-weight:850;font-size:14px;min-height:49px}.dialogbuttons{display:flex;gap:8px;margin:10px 0}.dialogbuttons>button{flex:1;font-size:11px}.quiet{display:block;margin:12px auto;font-size:11px;min-height:36px;padding:7px 12px;background:transparent;border:0;box-shadow:none;color:#b3a9bd}.danger{color:#ffabb5}.help-mission{display:flex;gap:12px;align-items:center;background:#60cfdb0d;border:1px solid #60cfdb33;border-radius:12px;padding:12px;color:var(--cyan);margin:15px 0;font-size:13px}.help-mission .icon{width:28px;height:28px}.help-steps{counter-reset:steps;list-style:none;margin:20px 0;padding:0}.help-steps li{counter-increment:steps;padding:0 0 17px 38px;position:relative}.help-steps li:before{content:counter(steps);position:absolute;left:0;top:0;display:grid;place-items:center;width:26px;height:26px;border-radius:9px;background:#36514d;color:var(--lime);font-size:12px;font-weight:850}.help-steps b{display:block;font-size:13px;margin-bottom:3px}.help-steps span{display:block;color:#a8c0d8;font-size:12px;line-height:1.5}.toast{position:fixed;left:50%;bottom:22px;max-width:90vw;transform:translateX(-50%);padding:12px 18px;background:#d6ff84;color:#1c352a;z-index:10;border:1px solid #edffb8;border-radius:12px;box-shadow:0 8px 25px #0005;font-size:12px;opacity:0;pointer-events:none;transition:opacity .15s}textarea{height:230px;margin:12px 0;font:10px ui-monospace,monospace;resize:vertical}
@keyframes beacon{50%{box-shadow:0 0 8px currentColor}}@keyframes dialog-enter{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}@keyframes star-pop{0%{opacity:0;scale:.25}65%{scale:1.18}100%{opacity:1;scale:1}}@keyframes unlock{50%{box-shadow:0 0 25px #d3ff6866;filter:brightness(1.6)}}@keyframes upgrade-flash{50%{box-shadow:0 0 25px #69e9ef55}}
@media(max-width:1150px){.app{grid-template-columns:minmax(0,1fr) 240px;gap:12px;padding:12px 14px}.topbar{padding:0 18px;gap:18px}.brand{min-width:180px}.mission-bottom{gap:6px}.counters{gap:14px}.counter .icon{display:none}.campaign-heading{display:none}.workshop{padding:15px 12px}.mission h2{font-size:17px}.button-key{display:none}}
@media(orientation:portrait){.topbar{height:66px;padding:0 14px;gap:15px}.brand{min-width:0;gap:8px}.brand-mark{width:38px;height:38px;border-radius:12px}.brand-mark i:nth-child(2){width:16px;height:16px;right:5px;bottom:5px}.brand small{font-size:8px;letter-spacing:4px}.brand strong{font-size:18px}.brand strong span{font-size:12px}.level-identity{margin-left:auto;display:block;text-align:right}.level-identity>span{padding:0;border:0;background:none;font-size:8px;letter-spacing:1px}.level-identity h1{font-size:15px;margin-top:1px}.headbuttons{margin-left:0;gap:5px}.icon-button{width:42px;height:42px;padding:10px}.headbuttons .icon{width:20px;height:20px}#qa{display:none}.app{display:flex;flex-direction:column;gap:10px;padding:12px;max-width:900px}.play{order:0;flex:none;gap:9px}.mission{padding:11px 13px}.mission-symbol{width:40px;height:40px;border-radius:12px}.mission h2{font-size:18px}.mission-bottom{gap:8px}.counters{gap:20px}.counter .icon{display:none}.counter b{font-size:17px}.counter small{font-size:7px}.stage{flex:none;border-radius:18px}.canvaswrap{flex:none;width:100%;aspect-ratio:16/9}.stage-top{padding:5px 8px}.stage-top>span:first-child{font-size:7px;letter-spacing:1.2px}.stage-top>span:last-child{font-size:9px}.stagefoot{font-size:9px;padding:5px 7px 2px}.launch{min-height:51px;font-size:13px}.rebuild{min-width:100px;font-size:11px;padding:8px}.rebuild .icon{width:18px;height:18px}.coach{font-size:11px;min-height:15px}.campaign{order:1;flex:none;padding:0;min-height:68px}.campaign-heading{display:none}#levels{width:100%;gap:7px}.level{min-width:59px;width:59px;min-height:62px;padding:6px 2px}.level-number{font-size:18px}.workshop{order:2;flex:1;min-height:115px;padding:12px;overflow:auto;border-radius:17px}.workshopbody{display:flex;flex-wrap:wrap;gap:8px}.workshop-heading{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px}.workshop-heading .eyebrow{font-size:7px}.workshop-heading h2{font-size:15px;margin:3px 0 0;gap:6px}.workshop-heading h2 .icon{width:17px;height:17px}.wallet{margin:0;padding:7px 9px;gap:5px;border-radius:9px}.wallet b{font-size:21px}.wallet .icon{width:20px;height:20px}.wallet small{display:none}.upgrade-section{width:100%}#shop{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.upgrade{padding:9px 8px 7px;margin:0;border-radius:12px}.upgrade-top{display:block}.upgrade-icon{width:32px;height:32px;border-radius:9px;margin-bottom:7px}.upgrade-icon .icon{width:20px;height:20px}.upgrade strong{font-size:12px}.upgrade small{font-size:9px;min-height:25px;margin-top:2px}.upgrade-dots{margin:8px 0 6px;gap:3px}.upgrade .row>span{font-size:7px;letter-spacing:0}.upgrade .row b{font-size:12px;gap:3px}.upgrade .row .icon{width:12px;height:12px}.workshop-note{margin:10px 0 2px;font-size:9px}.saved{font-size:8px}.field-guide{display:none}details{width:100%;margin:4px 0 0}.mission-copy{min-width:0}.conditions{max-width:40%}.condition{font-size:9px;padding:4px 5px;gap:3px}.condition .icon{width:11px;height:11px}}
@media(max-width:600px) and (orientation:portrait){.topbar{height:64px;padding:0 10px;gap:8px}.brand-mark{display:none}.brand{gap:0;min-width:90px}.brand strong{font-size:16px;letter-spacing:-.5px}.brand strong span{display:none}.brand small{font-size:7px}.level-identity{flex:1;text-align:left;min-width:0}.level-identity h1{font-size:13px}.headbuttons{gap:4px}.headbuttons .icon-button{width:36px;height:40px;min-height:40px;border-radius:10px;padding:9px}.headbuttons .icon{width:18px;height:18px}.app{gap:8px;padding:8px}.play{gap:8px}.mission{padding:10px 11px;border-radius:16px}.mission-symbol{display:none}.mission h2{font-size:16px;margin:3px 0 5px}.mission .eyebrow{font-size:8px}.mission-progress{font-size:10px;gap:5px}.chip{font-size:8px}.mission-bottom{margin-top:8px;padding-top:7px;display:block}.conditions{max-width:none;margin-bottom:7px;min-height:0}.conditions:empty{display:none}.condition{padding:3px 6px;font-size:9px}.counters{justify-content:space-between;gap:8px}.counter b{font-size:16px}.counter small{font-size:7px;letter-spacing:.6px}.counter .icon{display:none}.progressbar{height:5px;margin-top:7px}.stage{border-radius:16px;padding:4px}.stage-top{padding:4px 6px}.stagefoot{font-size:8px;padding:4px 6px 1px}.stage-top>span:first-child{letter-spacing:.9px;font-size:6px}.stage-top>span:last-child{font-size:8px}.canvaswrap{border-radius:10px}.launch{min-height:49px;font-size:12px;letter-spacing:.5px;gap:7px}.launch .icon{width:19px;height:19px}.rebuild{min-width:92px;padding:8px;font-size:10px;gap:6px}.coach{font-size:10px;min-height:26px;line-height:1.35;padding:0 5px}.campaign{min-height:64px}#levels{gap:6px;padding-bottom:5px}.level{min-width:54px;width:54px;min-height:59px;border-radius:11px}.level-name{font-size:6px}.level-status{font-size:7px}.level-number{font-size:17px}.workshop{padding:10px;min-height:100px}.workshopbody{gap:9px}.workshop-heading .eyebrow{font-size:6px;letter-spacing:1px}.workshop-heading h2{font-size:14px}.upgrade small{display:none}.upgrade strong{font-size:10px;min-height:24px;line-height:1.2}.upgrade-icon{width:29px;height:29px;margin-bottom:5px}.upgrade-icon .icon{width:18px;height:18px}.upgrade .row{align-items:center}.upgrade .row>span{font-size:6px}.upgrade .row b{font-size:11px;gap:2px}.upgrade .row .icon{width:10px;height:10px}.upgrade{padding:8px 7px}.upgrade-dots{gap:2px;margin:5px 0 7px}.workshop-note{font-size:8px}.result-screen{padding:24px 22px}.result-screen h1{font-size:31px}.result-medal{width:60px;height:60px;margin-bottom:15px}.star-item .icon{width:40px;height:40px}.resultstats>div{padding:10px}.resultstats b{font-size:18px}.resultstats small{font-size:7px}.result-screen .eyebrow{font-size:8px}}
@media(max-height:700px) and (orientation:portrait){.topbar{height:55px}.app{padding:6px;gap:6px}.play{gap:6px}.mission{padding:7px 10px}.mission h2{font-size:15px}.mission-bottom{margin-top:6px;padding-top:6px}.mission-progress{font-size:9px}.coach{min-height:13px;font-size:9px}.campaign{min-height:54px}.level{min-height:50px;padding:4px}.level-name{display:none}.workshop{min-height:75px}.workshop-heading .eyebrow{display:none}.workshop-heading h2{font-size:12px}.stage-top{padding:3px 5px}.stagefoot{padding:3px 6px 1px}.launch{min-height:44px}.conditions{margin-bottom:5px}.counter b{font-size:14px}}
@media(max-width:1000px) and (orientation:landscape){.topbar{height:49px;gap:14px;padding:0 13px}.brand{min-width:140px}.brand-mark{width:32px;height:32px;border-radius:10px}.brand-mark i:nth-child(1){width:9px;height:9px;left:6px;top:5px}.brand-mark i:nth-child(2){width:14px;height:14px;right:4px;bottom:4px}.brand-mark i:nth-child(3){display:none}.brand strong{font-size:17px}.brand small{font-size:7px;letter-spacing:4px}.level-identity{gap:8px}.level-identity>span{font-size:8px;padding:6px}.level-identity h1{font-size:14px}.headbuttons{gap:5px}.headbuttons .icon-button{width:36px;height:36px;min-height:36px;padding:8px}.headbuttons .icon{width:19px;height:19px}#qa{font-size:7px}.app{padding:8px 10px;gap:8px;grid-template-columns:minmax(0,1fr) 190px;grid-template-rows:minmax(0,1fr) 54px}.play{gap:6px}.mission{padding:7px 10px;border-radius:14px}.mission-symbol{display:none}.mission h2{font-size:14px;margin:2px 0 4px}.mission-progress{font-size:9px}.mission .eyebrow{font-size:7px}.state{font-size:8px}.chip{font-size:8px}.progressbar{height:4px;margin-top:5px}.mission-bottom{padding-top:6px;margin-top:6px;gap:7px}.condition{font-size:8px;padding:3px 4px}.condition .icon{width:10px;height:10px}.counters{gap:12px}.counter small{font-size:6px;letter-spacing:.5px}.counter b{font-size:12px}.stage{padding:3px;border-radius:14px}.canvaswrap{border-radius:9px}.stage-top{padding:3px 7px;font-size:6px}.stage-top>span:last-child{font-size:8px}.stagefoot{font-size:7px;padding:2px 6px 0}.launch{min-height:41px;font-size:11px}.rebuild{min-width:95px;font-size:10px;padding:6px}.rebuild .icon{width:16px;height:16px}.coach{font-size:9px;min-height:12px}.level{min-width:44px;width:44px;min-height:46px;padding:4px;border-radius:9px}.level-name{display:none}.level-number{font-size:15px}.level-status{font-size:7px}.workshop{padding:11px 9px;border-radius:16px}.workshop-heading .eyebrow{font-size:6px}.workshop-heading h2{font-size:14px;margin:4px 0 10px}.wallet{padding:9px;margin-bottom:12px}.wallet b{font-size:21px}.wallet .icon{width:21px;height:21px}.wallet small{font-size:7px}.upgrade{padding:9px 8px;margin-bottom:9px}.upgrade-icon{width:29px;height:29px;border-radius:9px}.upgrade-icon .icon{width:18px;height:18px}.upgrade-top{gap:8px}.upgrade strong{font-size:10px}.upgrade small{font-size:8px}.upgrade-dots{margin:8px 0 6px}.upgrade .row>span{font-size:7px}.upgrade .row b{font-size:11px}.field-guide{display:none}.workshop-note{font-size:8px}.saved{font-size:8px}.campaign-heading{display:none}#levels{gap:5px}}
@media(max-height:480px) and (orientation:landscape){.app{grid-template-columns:minmax(0,1fr) 170px;grid-template-rows:minmax(0,1fr) 45px;gap:6px;padding:6px 8px}.topbar{height:44px}.play{gap:5px}.mission{padding:5px 8px}.mission-title .eyebrow{display:none}.mission h2{font-size:12px;margin:0 0 3px}.mission-progress{font-size:8px}.mission-bottom{margin-top:5px;padding-top:4px}.counters{gap:10px}.counter b{font-size:11px}.condition{font-size:7px;padding:2px 3px}.condition .icon{display:none}.progressbar{height:3px;margin-top:4px}.state{font-size:7px}.stage-top>span:first-child{display:none}.stage-top{justify-content:center;padding:2px}.stage-top>span:last-child{font-size:7px}.stagefoot{padding:1px 5px;font-size:6px}.actions{gap:6px}.launch{min-height:35px;font-size:10px}.launch .icon{width:16px;height:16px}.rebuild{min-width:90px;font-size:9px}.coach{font-size:8px;min-height:10px}.level{min-width:41px;width:41px;min-height:39px;padding:3px}.level-number{font-size:13px}.level-status{min-height:8px;font-size:6px}.level-status .icon{width:8px;height:8px}.workshop-heading h2{font-size:12px}.workshop-heading .eyebrow{display:none}dialog{max-height:94dvh;padding:20px}.result-screen .result-medal{display:none}.result-screen .stars{margin:8px 0}.result-screen .star-item .icon{width:30px;height:30px}.result-screen h1{font-size:25px}.resultstats>div{padding:6px 10px}.resultstats b{font-size:15px}.reward{padding:6px;margin-bottom:8px}.reward>span{font-size:22px}.result-screen #resultmeta,.result-screen #lossdetail{display:none}#resultreason{margin:5px auto 10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Screenshot review: the mission must not crowd the chamber. */
@media(min-width:1001px) and (orientation:landscape){.topbar{height:66px}.app{grid-template-rows:minmax(0,1fr) 62px}.mission{padding:10px 14px 8px}.mission-symbol{width:39px;height:39px;border-radius:12px}.mission-main{gap:11px}.mission-title>.eyebrow{display:none}.mission-title .state{position:absolute;top:14px;right:15px}.mission h2{font-size:18px;padding-right:88px;margin:0 0 3px}.mission-progress{font-size:10px}.progressbar{height:5px;margin-top:6px}.mission-bottom{margin-top:8px;padding-top:7px}.counter small{font-size:7px}.counter b{font-size:15px}.level{min-height:55px;padding:5px 3px}.level-number{font-size:17px}.level-name{font-size:7px}.campaign-heading h2{font-size:10px}}
@media(orientation:portrait){.mission-title>.eyebrow{display:none}.mission-title .state{position:absolute;top:13px;right:13px}.mission h2{padding-right:65px;margin:0 0 4px}.mission-progress{font-size:10px}.mission-bottom{display:flex;align-items:center;gap:9px}.conditions{max-width:30%;margin:0}.counters{flex:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.counter{min-width:0}.counter small{font-size:7px;letter-spacing:.4px}.counter b{font-size:16px}.headbuttons .icon-button{width:44px;height:44px;min-height:44px}.upgrade .row>span{font-size:8px}.upgrade .row b{font-size:12px}.upgrade .row .icon{width:12px;height:12px}.upgrade small{display:block;font-size:9px;min-height:13px}.upgrade strong{font-size:11px}.stage-top>span:first-child{display:none}.stage-top{justify-content:center}.stage-top>span:last-child{font-size:10px}}
@media(max-width:600px) and (orientation:portrait){.mission{padding:10px 11px 9px}.mission h2{font-size:15px}.mission .state{font-size:8px;right:12px;top:13px}.mission-bottom{margin-top:7px;padding-top:6px}.conditions{max-width:29%;gap:3px}.condition{font-size:8px;padding:3px 4px;gap:3px}.condition .icon{width:10px;height:10px}.counter small{font-size:7px}.counter b{font-size:15px}.stagefoot{font-size:9px}.headbuttons .icon-button{border-radius:11px}.upgrade strong{min-height:25px}.upgrade .row>span{font-size:8px}.upgrade .row b{font-size:12px}.app{padding-bottom:max(8px,env(safe-area-inset-bottom))}}
@media(max-width:1000px) and (orientation:landscape){.headbuttons .icon-button{width:44px;height:44px;min-height:44px}.level{min-height:44px}.launch{min-height:44px}.rebuild{min-height:44px}}
/* Short landscape: mission beside the playfield instead of above it. */
@media(max-height:480px) and (orientation:landscape){.app{display:grid;grid-template-columns:minmax(0,1fr) 200px;grid-template-rows:minmax(0,1fr) 44px 44px;gap:6px}.play{display:contents}.stage{grid-column:1;grid-row:1;min-height:0}.actions{grid-column:1;grid-row:2}.campaign{grid-column:1;grid-row:3;min-width:0}.coach{display:none}.mission{grid-column:2;grid-row:1;align-self:start;height:142px;overflow:auto;padding:8px 9px;border-radius:14px}.mission-copy{min-width:0}.mission-title .state{position:static;font-size:8px;margin-bottom:4px}.mission h2{padding:0;font-size:12px;line-height:1.3;margin:0 0 5px}.mission-progress{font-size:9px;display:block}.mission-progress .chip{display:block;margin-top:3px;font-size:7px}.mission-bottom{display:block;padding-top:6px;margin-top:6px}.conditions{max-width:none;gap:4px;margin-bottom:6px}.condition{font-size:7px;padding:3px 4px}.counters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.counter small{font-size:6px;letter-spacing:0}.counter b{font-size:11px}.workshop{grid-column:2;grid-row:1/4;margin-top:148px;min-height:0}.workshop-heading h2{font-size:13px}.stage-top{padding:4px 8px}.stage-top>span:last-child{font-size:9px;letter-spacing:0}.stagefoot{font-size:8px;padding:3px 7px 1px}.launch,.rebuild{min-height:44px}.level{min-height:44px;min-width:44px;width:44px}.level-number{font-size:15px}.level-status{font-size:7px}}
.result-dismiss{width:44px;height:44px;min-height:44px;padding:11px}.quiet{min-height:44px}summary{min-height:44px}.upgrade:disabled .upgrade-top{opacity:.82}
/* Circuit names live in the header/tooltips; avoid unreadable micro-labels. */
.level-name{display:none}.level{justify-content:center;gap:4px}.level-status{font-size:9px}
@media(max-width:600px) and (orientation:portrait){.condition{font-size:10px}.counter small{font-size:8px}.upgrade small{font-size:10px}.upgrade .row>span{font-size:8px}.level-status{font-size:9px}}
@media(max-height:480px) and (orientation:landscape){.level-status{font-size:8px}}
/* Let the sidebar mission size itself; complex goals must never be clipped. */
@media(max-height:480px) and (orientation:landscape){.app{grid-template-rows:max-content minmax(0,1fr) 44px 44px}.stage{grid-row:1/3}.actions{grid-row:3}.campaign{grid-row:4}.mission{height:auto;overflow:visible}.workshop{grid-row:2/5;margin-top:0}}
/* Game-feel pass: fewer labels, more readable essentials. */
.stage{border-color:var(--scene-edge,#466080)}.mission-symbol{color:var(--scene-accent,#69e9ef)}.field-guide{display:none}.help-screen .field-guide{display:block}.campaign-heading{min-width:56px;max-width:56px}.campaign-heading h2{font-size:14px;font-weight:750}.stage-top{justify-content:center}.stage-top>span:first-child{display:none}.stagefoot{justify-content:center}.stagefoot>span:first-child:before{display:none}.counter.reserve b{font-size:21px}.mission-progress{font-size:12px}.condition{font-size:11px}.workshop-heading{margin-bottom:10px}.workshop-note{font-size:11px}#devpanel{padding:10px;font:11px ui-monospace,monospace;background:#07101f;border-radius:10px}#devpanel p{margin:8px 0}#qa{font-size:11px}.result-screen #resultrequirements{text-align:left;margin:12px 0 8px;padding-top:0;border:0}.result-screen #resultrequirements summary{font-size:11px;justify-content:center}.result-screen[data-outcome=lost] #resultrequirements summary{display:none}.requirement{display:flex;align-items:center;gap:9px;padding:9px 10px;margin:5px 0;border:1px solid #57728f44;border-radius:10px;background:#0b1a2d}.requirement>.icon,.requirement>span>.icon{width:17px;height:17px}.requirement.complete>span{color:#a6d68a}.requirement>div{flex:1}.requirement b{display:block;font-size:12px}.requirement small{display:block;font-size:11px;color:#a7bfd5;margin-top:2px}.requirement em{font-style:normal;font-size:10px;color:#98b8a1}.requirement.incomplete{background:#50312f55;border-color:#ffad7255}.requirement.incomplete>span,.requirement.incomplete em{color:#ffc48c}.requirement.incomplete small{color:#ffd6ad;font-weight:750}.result-tip{text-align:left;font-size:12px;color:#c0d4e6;line-height:1.5;padding:10px 3px}.result-screen[data-outcome=lost] h1{font-size:28px}.result-screen[data-outcome=lost] #resultreason{font-size:16px;font-weight:750;color:#ffdcab;margin:12px 0}.result-screen[data-outcome=lost] #resultstats,.result-screen[data-outcome=lost] #resultmeta{display:none}.result-screen[data-outcome=lost] .result-medal{width:45px;height:45px;margin-bottom:13px}.result-screen[data-outcome=lost] .result-medal .icon{width:27px;height:27px}
@media(max-width:600px) and (orientation:portrait){.mission-progress{font-size:11px}.counter.reserve b{font-size:18px}.condition{font-size:11px}.result-screen[data-outcome=lost] h1{font-size:25px}.result-screen[data-outcome=lost] #resultreason{font-size:14px}.requirement b{font-size:11px}.requirement em{font-size:9px}.requirement small{font-size:11px}}
@media(max-height:480px) and (orientation:landscape){.counter.reserve b{font-size:13px}.mission-progress{font-size:9px}.condition{font-size:8px}.result-screen[data-outcome=lost] .result-medal{display:none}.result-screen[data-outcome=lost] #resultreason{font-size:13px;margin:7px 0}.requirement{padding:6px 8px;margin:4px 0}.requirement b,.requirement small{font-size:10px}.result-tip{font-size:10px}}
