:root{color-scheme:dark;--bg:#0a120d;--panel:#121d16;--soft:#1a291e;--line:#3c5142;--text:#f1f2df;--muted:#c0ceb9;--dim:#90a28f;--amber:#f1b75f;--green:#a4df82;--blue:#83dcff;--sans:'DM Sans',system-ui,sans-serif;--mono:'DM Mono',ui-monospace,monospace}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0}body{overflow:hidden;background:var(--bg);color:var(--text);font:14px var(--sans)}button,input{color:inherit;font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--amber);outline-offset:2px}[hidden]{display:none!important}
.topbar{position:relative;z-index:5;display:flex;height:54px;align-items:center;gap:18px;padding:0 16px;border-bottom:1px solid #ffffff17;background:#0d1711}.back,.quiet{border:0;background:none;color:var(--muted);text-decoration:none;font-size:11px}.back:hover,.quiet:hover{color:#fff}.brand{display:flex;align-items:center;gap:8px;text-decoration:none}.brand .mark{width:11px;height:11px;transform:rotate(45deg);background:var(--amber);box-shadow:0 0 12px #f1b75f88}.brand b{font:600 13px var(--mono);letter-spacing:.14em}.brand small{margin-left:1px;color:var(--dim);font:8px var(--mono);letter-spacing:.13em}.seed-control{display:grid;gap:2px;margin-left:auto;color:var(--dim);font:8px var(--mono);letter-spacing:.1em}.seed-control input{width:96px;min-height:27px;padding:3px 7px;border:1px solid var(--line);border-radius:5px;background:var(--panel);font:11px var(--mono)}.quiet{min-height:32px;padding:0 9px;border-radius:6px}
.app-shell{display:grid;width:100%;height:calc(100dvh - 54px);grid-template-rows:auto minmax(0,1fr) auto}.dashboard{position:relative;z-index:2;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:8px 11px;border-bottom:1px solid #ffffff16;background:#101914}.resource{position:relative;display:grid;min-width:0;min-height:57px;grid-template-columns:19px minmax(0,1fr);grid-template-rows:auto auto;align-content:center;gap:0 8px;padding:5px 9px;overflow:hidden;border:1px solid #ffffff13;border-radius:8px;background:#142018}.resource-icon{position:relative;display:grid;grid-column:1;grid-row:1/3;flex:0 0 19px;width:19px;height:19px;place-items:center;color:var(--blue);font-size:20px;line-height:1}.power-icon{font-size:23px;color:#8be3ff}.fuel-icon{color:var(--amber)}.log-icon:before{position:absolute;top:7px;left:2px;width:15px;height:7px;background:#d8a45c;content:''}.bot-icon:before{position:absolute;top:3px;left:3px;width:12px;height:12px;background:#e7efda;content:''}.bot-icon:after{position:absolute;top:1px;right:1px;width:4px;height:4px;background:var(--blue);content:''}.clock-icon:before{position:absolute;inset:2px;border:2px solid var(--text);border-radius:50%;content:''}.clock-icon:after{position:absolute;top:5px;left:9px;width:2px;height:6px;background:var(--amber);content:''}.resource-copy{min-width:0;grid-column:2;grid-row:1}.resource-copy small{display:block;color:var(--muted);font:8px var(--mono);letter-spacing:.075em;white-space:nowrap}.resource-copy strong{display:block;margin-top:3px;overflow:hidden;font:500 14px var(--mono);text-overflow:ellipsis;white-space:nowrap}.resource-note{max-width:none;grid-column:2;grid-row:2;overflow:hidden;color:var(--muted);font-size:8px;line-height:1.25;text-align:left;text-overflow:ellipsis;white-space:nowrap}.fuel-resource{padding-bottom:10px}.meter{position:absolute;right:9px;bottom:4px;left:38px;height:2px;background:#ffffff20}.meter i{display:block;width:40%;height:100%;background:var(--amber);transition:width .2s}.inventory-details{margin:10px 0;border:1px solid #ffffff17;border-radius:7px;background:#111a14}.inventory-details summary{padding:8px 10px;color:var(--muted);font-size:10px;cursor:pointer}.inventory-breakdown{display:grid;gap:6px;padding:0 10px 10px}.inventory-breakdown div{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:9px}.inventory-breakdown b{color:var(--text);font:10px var(--mono);text-align:right}
.workspace{display:grid;min-width:0;min-height:0;grid-template-areas:'upgrades map buildings';grid-template-columns:minmax(250px,290px) minmax(360px,1fr) minmax(260px,300px);gap:10px;padding:10px 11px}.side-panel{min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;border:1px solid #ffffff18;border-radius:10px;background:#121b15;scrollbar-color:#66735d #111710;scrollbar-width:thin}.upgrade-panel{grid-area:upgrades;padding:11px}.buildings-panel{grid-area:buildings;padding:11px}.panel-header{position:sticky;z-index:2;top:-11px;display:flex;min-height:47px;align-items:center;justify-content:space-between;gap:8px;margin:-11px -11px 9px;padding:9px 11px;border-bottom:1px solid #ffffff15;background:#121b15f7}.panel-header h2{margin:3px 0 0;font-size:16px;letter-spacing:-.01em}.kicker{color:#b5c69f;font:500 8px var(--mono);letter-spacing:.14em}.tiny-badge{display:inline-block;padding:4px 7px;border:1px solid #ffffff1c;border-radius:99px;background:#ffffff09;color:var(--muted);font:8px var(--mono);white-space:nowrap}.panel-intro{margin:0 0 9px;color:var(--muted);font-size:10px;line-height:1.4}.upgrade-tree{display:grid;gap:6px}.upgrade-node{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 7px;padding:8px;border:1px solid #ffffff13;border-left:3px solid #536c53;border-radius:7px;background:#19251c}.upgrade-node b{grid-column:1;font-size:10px;line-height:1.25}.upgrade-node p{grid-column:1;margin:0;color:var(--muted);font-size:9px;line-height:1.3}.upgrade-node small{grid-column:1;color:#e8c997;font-size:8px;line-height:1.25}.upgrade-node.installed{border-left-color:var(--green);background:#1b2b1d}.upgrade-buy{grid-column:2;grid-row:1/4;align-self:center;min-width:70px;min-height:33px;padding:5px 6px;font-size:9px}.primary,.secondary,.danger,.speed button{min-height:33px;padding:6px 9px;border:1px solid var(--line);border-radius:6px;font-size:10px;font-weight:650}.primary{border-color:#e4a74f;background:var(--amber);color:#241910}.primary:hover:not(:disabled){background:#ffd083}.secondary{background:var(--soft);color:var(--text)}.secondary:hover:not(:disabled){border-color:#8aa287;background:#263a2b}button:disabled{cursor:default;opacity:.45}
.robot-production{display:grid;gap:6px;margin-bottom:12px}#robot-production-content{display:grid;gap:7px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:7px}.section-heading h3{margin:0;font-size:11px}.robot-build-choice{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;border:1px solid #ffffff16;border-radius:8px;background:#1a281d}.robot-build-copy{display:grid;gap:3px;min-width:0}.robot-build-copy>b{font-size:10px}.robot-build-copy p{margin:0;color:var(--muted);font-size:9px;line-height:1.3}.robot-build-copy small{color:#e8c997;font-size:8px;line-height:1.3}.robot-build-choice button{min-width:72px;min-height:36px;padding:5px 6px;font-size:9px}.buildings-panel-content{display:grid;gap:8px}.empty-project,.project-card{padding:10px;border:1px solid #ffffff16;border-radius:8px;background:#172219}.empty-project h3,.project-card h3{margin:3px 0 0;font-size:12px}.order-actions{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.cancel-order{min-height:24px;padding:2px 6px;font-size:8px}.empty-project p,.project-card>p{margin:6px 0;color:var(--muted);font-size:10px;line-height:1.45}.building-mark{display:grid;width:30px;height:30px;place-items:center;border:1px solid #9bdfff66;border-radius:50%;background:#8bdfff12;color:#a3e7ff;font-size:17px}.active-card{border-color:#71826e88;background:#19271d}.card-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:7px}.project-progress,.coverage-meter{height:5px;overflow:hidden;border-radius:99px;background:#ffffff20}.project-progress i,.coverage-meter span{display:block;width:0;height:100%;background:#91dfff;transition:width .16s linear}.network-status{display:flex;align-items:center;gap:9px;padding:9px;border:1px solid #ffffff16;border-radius:8px;background:#172219}.network-status>div{display:grid;gap:3px}.network-status b,.lamp-row b{font-size:10px}.network-status small,.lamp-row small{color:var(--muted);font-size:8px}.coverage-meter{height:7px}.coverage-meter span{background:linear-gradient(90deg,#5db7e5,#bcf1ff)}.network-copy{margin:0;color:var(--muted);font-size:9px;line-height:1.4}.lamp-row{display:flex;align-items:center;gap:8px;padding:7px;border:1px solid #ffffff12;border-radius:7px;background:#172219}.lamp-row>div{display:grid;flex:1;gap:3px}.lamp-dot{width:9px;height:9px;border-radius:50%;background:#536068}.lamp-dot.on{background:#a8eaff;box-shadow:0 0 10px #80d9ff}
.play-area{position:relative;min-width:0;min-height:0;grid-area:map;overflow:hidden;border:1px solid #ffffff19;border-radius:10px;background:#142019}.map-heading{position:absolute;z-index:2;top:9px;right:9px;left:9px;display:flex;align-items:center;justify-content:space-between;gap:9px;padding:8px 10px;border:1px solid #ffffff17;border-radius:7px;background:#101914e8;pointer-events:none}.map-heading>div{display:grid;gap:3px}.map-heading b{font-size:11px}.map-heading b small{margin-left:5px;color:var(--dim);font:8px var(--mono)}.map-heading button{min-height:29px;padding:5px 8px;font-size:9px;pointer-events:auto}.board-wrap{position:absolute;inset:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-x pan-y;scrollbar-width:thin;scrollbar-color:#68745b #111710}.board-wrap:active{cursor:grabbing}#board{position:relative;display:block;max-width:none;border:0;cursor:grab;touch-action:pan-x pan-y}.map-legend{position:absolute;z-index:3;bottom:9px;left:9px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 11px;max-width:min(80%,520px);padding:7px 9px;border:1px solid #ffffff18;border-radius:7px;background:#101914e8;color:var(--muted);font-size:8px;pointer-events:none}.map-legend span{display:flex;align-items:center;gap:4px}.map-legend i{width:8px;height:8px;background:var(--blue)}.legend-tree{background:#9bc478!important}.legend-generator{background:var(--amber)!important}.legend-lamp{border-radius:50%;background:#b7f0ff!important;box-shadow:0 0 7px #83dcff}.legend-move{border-radius:3px;background:#ecf2df!important}.map-legend .legend-wire-powered,.map-legend .legend-wire-dark{width:12px;height:0;background:none;border-top:2px dashed #70cbeea6}.map-legend .legend-wire-dark{border-color:#8290878c}.pan-hint{color:#e8c98f}
.simulation-controls{display:flex;min-height:50px;align-items:center;gap:7px;padding:7px 11px;border-top:1px solid #ffffff16;background:#101914}.controls-label{margin-right:4px;color:var(--dim);font:8px var(--mono);letter-spacing:.12em}.simulation-controls .primary,.simulation-controls .secondary{min-height:32px}.speed{display:flex;flex:0 0 auto;gap:2px;padding:2px;border:1px solid var(--line);border-radius:7px;background:#101713}.speed button{min-width:34px;min-height:26px;padding:3px 6px;border:0;background:none;color:var(--muted);font:9px var(--mono)}.speed button.selected{background:#364436;color:var(--text)}footer{margin-left:auto;color:#aebaa9;font-size:8px;opacity:.72}footer a{pointer-events:auto}.help-dialog{position:fixed;inset:0;width:min(500px,calc(100vw - 24px));max-width:500px;max-height:min(90dvh,800px);margin:auto;padding:22px;overflow:auto;border:1px solid #697d69;border-radius:13px;background:#101914;color:var(--text);box-shadow:0 18px 60px #0009}.help-dialog::backdrop{background:#050906a8;backdrop-filter:blur(2px)}.help-dialog form{position:relative}.close{position:absolute;top:-8px;right:-8px;display:grid;width:36px;height:36px;place-items:center;border:1px solid #ffffff23;border-radius:8px;background:#202c23;color:var(--text);font-size:22px}.help-dialog h2{margin:3px 0 0;font-size:20px}.help-dialog p:not(.kicker){color:var(--muted);font-size:11px;line-height:1.55}.shortcut-note{display:flex;flex-wrap:wrap;align-items:center;gap:7px}kbd{padding:3px 6px;border:1px solid #ffffff25;border-radius:5px;background:#ffffff0c;color:var(--text);font:600 9px var(--mono)}.full{width:100%;min-height:40px}
@media(max-width:1120px){body{height:auto;min-height:100%;overflow:auto}.app-shell{height:auto;min-height:calc(100dvh - 54px);grid-template-rows:auto auto auto}.dashboard{grid-template-columns:repeat(3,minmax(0,1fr))}.workspace{grid-template-areas:'map map' 'upgrades buildings';grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.play-area{height:min(62dvh,680px);min-height:430px}.side-panel{min-height:0;max-height:none;overflow:visible}.simulation-controls{position:static;flex-wrap:wrap}footer{flex-basis:100%;margin:0}}
@media(max-width:700px){.topbar{height:auto;min-height:52px;gap:8px;padding:6px 8px}.back{font-size:9px}.brand{gap:6px}.brand b{font-size:11px}.brand small{font-size:7px}.seed-control input{width:72px}.dashboard{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:7px}.resource{min-height:53px;gap:6px;padding:6px}.resource-copy small{font-size:7px}.resource-copy strong{font-size:12px}.resource-note{max-width:none;font-size:8px}.workspace{grid-template-areas:'map' 'upgrades' 'buildings';grid-template-columns:minmax(0,1fr);gap:9px;padding:8px}.play-area{height:min(60dvh,600px);min-height:400px}.side-panel{padding:10px}.panel-header{top:-10px;margin:-10px -10px 9px;padding:9px 10px}.upgrade-tree{gap:7px}.upgrade-node{padding:9px}.upgrade-buy{min-width:82px;min-height:37px;font-size:9px}.robot-build-choice{padding:9px}.robot-build-choice button{min-width:85px;min-height:40px}.map-legend{max-width:calc(100% - 18px)}.simulation-controls{justify-content:flex-start;gap:6px;padding:8px}.controls-label{flex-basis:100%}.simulation-controls footer{font-size:8px}}
@media(max-width:400px){.topbar{gap:5px;padding-right:5px;padding-left:5px}.back{font-size:8px}.brand small{display:none}.quiet{padding:0 5px;font-size:9px}.map-heading{right:7px;left:7px;padding:7px}.map-heading button{padding:5px 7px;font-size:8px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
#power-state[data-state="shortage"]{color:#ff9a83;font-weight:700}
#power-state[data-state="outage"]{color:#ffd17c;font-weight:700}#power-state[data-state="critical"],#power-state[data-state="blackout"]{color:#ff8e7b;font-weight:700}
.emergency-card{display:grid;gap:8px;margin:0 0 10px;padding:11px;border:1px solid #b8785066;border-radius:9px;background:linear-gradient(145deg,#30231b,#1b211b)}.emergency-card[data-state="critical"]{border-color:#ef8f7780;box-shadow:inset 0 0 24px #da614513}.emergency-title{display:flex;align-items:center;gap:9px}.emergency-title .building-mark{color:#9fe4ff}.emergency-title b,.emergency-title small{display:block}.emergency-title b{font-size:11px}.emergency-title small{margin-top:3px;color:var(--muted);font:9px var(--mono)}.emergency-card p{margin:0;color:#d4c6b2;font-size:10px;line-height:1.45}.sacrifice-note{color:#ffc27a;font-size:9px;line-height:1.4}.sacrifice-actions{display:grid;grid-template-columns:1fr;gap:5px}.sacrifice-button{display:flex;justify-content:space-between;align-items:center;min-height:33px;padding:6px 8px;border-color:#956643;color:#ffddb0;font-size:9px;text-align:left}.sacrifice-button small{color:#ffe9c9;font:9px var(--mono)}.end-state{position:absolute;z-index:4;top:50%;left:50%;width:min(420px,calc(100% - 30px));transform:translate(-50%,-50%);padding:20px;border:1px solid #d8866a99;border-radius:12px;background:#151b18f2;box-shadow:0 14px 60px #000c;backdrop-filter:blur(9px)}.end-state h2{margin:5px 0 8px;font-size:20px}.end-state p{margin:0 0 14px;color:#d8c7b7;font-size:11px;line-height:1.5}.end-state>div{display:flex;gap:8px}.end-state button{min-height:38px;flex:1}
.end-state[data-outcome="victory"]{border-color:#a4df82aa;background:linear-gradient(145deg,#1b3022f5,#151b18f7);box-shadow:0 14px 70px #9dda6730}.end-state[data-outcome="victory"] .kicker{color:#c8f39d}.end-state[data-outcome="victory"] h2{color:#f0f6d8}.end-state .end-stats{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 0 14px}.end-state .end-stats div{display:flex;align-items:center;justify-content:space-between;gap:7px;padding:7px 8px;border:1px solid #ffffff17;border-radius:6px;background:#ffffff08;color:var(--muted);font-size:9px}.end-state .end-stats b{color:var(--text);font:10px var(--mono);text-align:right}.end-state .end-actions{display:flex;gap:8px}.end-state .end-actions button{min-width:0;flex:1}
.clock-resource{padding-bottom:10px}.objective-meter{position:absolute;right:9px;bottom:4px;left:38px;height:3px;overflow:hidden;border-radius:99px;background:#ffffff24}.objective-meter i{display:block;width:0;height:100%;background:linear-gradient(90deg,#6fc9f3,#b8f3ff);transition:width .25s ease}.upgrade-node.installed{grid-template-columns:minmax(0,1fr);gap:2px 7px;padding:6px 8px}.upgrade-node.installed p{font-size:8px}.upgrade-node.installed small{font-size:7px}
@media(max-width:1120px){.clock-resource .resource-copy small{font-size:7px;letter-spacing:.06em}}

/* Immersive map layout */
html,body{width:100%;height:100%;min-height:0;overscroll-behavior:none}
body{height:100dvh;overflow:hidden;background:#07100b}
.app-shell{position:fixed;z-index:0;inset:0;display:block;width:100%;height:100dvh;min-height:0;overflow:hidden}
.topbar{position:absolute;z-index:12;top:max(8px,env(safe-area-inset-top));right:12px;left:12px;height:42px;gap:14px;padding:0 10px;border:1px solid #ffffff24;border-radius:10px;background:#0b130fd9;box-shadow:0 8px 28px #0004;backdrop-filter:blur(16px) saturate(1.15);pointer-events:none}
.topbar>*{pointer-events:auto}
.topbar .back,.topbar .brand,.topbar .seed-control,.topbar #help-toggle{pointer-events:auto}
.save-status{max-width:190px;overflow:hidden;color:#c0ceb9;font:8px var(--mono);text-overflow:ellipsis;white-space:nowrap}
.save-status[data-state="saved"]{color:#a4df82}
.save-status[data-state="warning"]{color:#ffd17c}
.save-status[data-state="saving"]{color:#b6d9e8}
.simulation-time{display:flex;flex:0 0 auto;min-height:30px;align-items:center;padding:0 10px;color:#d3dfd1;border-right:1px solid #ffffff22;font:9px var(--mono);font-variant-numeric:tabular-nums;letter-spacing:.02em;white-space:nowrap}
.mobile-panel-actions{display:none}
.topbar .brand{gap:7px}
.topbar .seed-control{margin-left:auto}
.topbar .seed-control input{min-height:30px}
.dashboard{position:absolute;z-index:11;top:60px;left:50%;width:min(990px,calc(100vw - 470px));transform:translateX(-50%);grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;padding:0;border:0;background:transparent;pointer-events:none}
.resource{min-height:48px;padding:5px 8px;border:1px solid #e8f6e71d;border-radius:9px;background:#0c1712dc;box-shadow:0 8px 24px #0004;backdrop-filter:blur(16px) saturate(1.15)}
.resource-icon{width:16px;height:16px;flex-basis:16px}
.resource-copy small{font-size:7px;letter-spacing:.045em}
.resource-copy strong{font-size:13px}
.resource-note{font-size:8px}
.workspace{position:absolute;z-index:1;inset:0;display:block;min-width:0;min-height:0;padding:0}
.play-area{position:absolute;z-index:0;inset:0;width:100%;height:100%;min-height:0;overflow:hidden;border:0;border-radius:0;background:#07100b}
.board-wrap{position:absolute;inset:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-x pan-y;scrollbar-width:none}
.board-wrap::-webkit-scrollbar{display:none}
#board{cursor:grab;touch-action:pan-x pan-y}
#board:active{cursor:grabbing}
.map-heading{z-index:9;top:114px;right:auto;left:50%;width:max-content;max-width:calc(100vw - 24px);min-height:42px;transform:translateX(-50%);gap:16px;padding:5px 7px 5px 11px;border:1px solid #e8f6e724;border-radius:9px;background:#0b1510df;box-shadow:0 8px 24px #0005;backdrop-filter:blur(16px);pointer-events:none}
.map-heading button{min-height:34px;padding:6px 10px;border-color:#ffffff22;border-radius:7px;font-size:10px}
.map-heading b small{color:#c5d2c5}
.side-panel{position:absolute;z-index:7;top:164px;right:auto;bottom:auto;left:auto;width:min(286px,calc(25vw - 14px));height:fit-content;max-height:calc(100dvh - 230px);overflow:auto;padding:10px;border:1px solid #e5f1e51f;border-radius:12px;background:#0c1712df;box-shadow:0 16px 42px #0006;backdrop-filter:blur(18px) saturate(1.12);scrollbar-color:#75846d66 transparent;scrollbar-width:thin;overscroll-behavior:contain;touch-action:pan-y}
.upgrade-panel{right:auto;left:12px}
.buildings-panel{right:12px;left:auto}
.panel-header{top:-10px;margin:-10px -10px 8px;padding:8px 10px;border-bottom:1px solid #ffffff20;background:#0c1712f5;backdrop-filter:blur(18px)}
.panel-header h2{font-size:15px}
.panel-intro{font-size:10px}
.upgrade-node,.robot-build-choice,.project-card,.empty-project,.network-status{border-color:#ffffff20;background:#122019e8}
.upgrade-node{padding:8px}
.upgrade-node p,.robot-build-copy p,.empty-project p,.project-card>p{font-size:9px;line-height:1.4}
.upgrade-node small,.robot-build-copy small{font-size:8px}
.upgrade-buy,.robot-build-choice button{min-height:38px}
.buildings-panel-content{gap:7px}
.network-status{padding:8px}
.network-copy{font-size:9px;line-height:1.4}
.network-project{margin-top:1px}
.network-project .project-progress{height:5px}
.lamp-row{display:none}
.simulation-controls{position:absolute;z-index:14;bottom:max(10px,env(safe-area-inset-bottom));left:50%;display:flex;width:max-content;max-width:calc(100vw - 24px);min-height:48px;transform:translateX(-50%);align-items:center;gap:6px;padding:6px 8px;border:1px solid #e5f1e524;border-radius:11px;background:#0b1510e8;box-shadow:0 10px 34px #0008;backdrop-filter:blur(18px) saturate(1.1)}
.controls-label,.simulation-controls footer{display:none}
.simulation-controls .primary,.simulation-controls .secondary{min-height:36px;padding:6px 10px;border-radius:7px;font-size:10px}
.speed{gap:2px;background:#08100c}
.speed button{min-width:35px;min-height:32px;font-size:10px}
.map-legend{z-index:4;bottom:68px;left:50%;max-width:calc(100vw - 32px);transform:translateX(-50%);padding:7px 10px;border-color:#ffffff23;border-radius:9px;background:#0b1510df;box-shadow:0 8px 24px #0005;backdrop-filter:blur(14px);font-size:9px}
.end-state{z-index:20;max-height:calc(100dvh - 32px);overflow:auto}
.help-dialog{z-index:30;backdrop-filter:blur(18px)}
.empty-project,.project-card,.emergency-card{backdrop-filter:blur(8px)}
@media(max-width:1100px){
  .dashboard{left:12px;width:calc(100vw - 24px);transform:none}
  .side-panel{width:min(270px,calc(30vw - 14px))}
  .upgrade-panel{left:10px}
  .buildings-panel{right:10px}
}
@media(max-width:760px){
  .topbar{top:max(6px,env(safe-area-inset-top));right:8px;left:8px;height:44px;gap:7px;padding:0 7px;border-radius:9px}
  .simulation-time{min-height:28px;padding:0 6px 0 2px;font-size:8px}
  .back{font-size:9px}
  .brand{gap:5px}
  .brand b{font-size:11px}
  .brand small{font-size:7px}
  .seed-control{font-size:7px}
  .seed-control input{width:66px;min-height:29px;font-size:10px}
  .topbar .quiet{min-height:44px;padding:0 6px;font-size:9px}
  .topbar .back,.topbar .brand{min-height:44px;align-items:center}
  .dashboard{top:58px;left:8px;width:calc(100vw - 16px);grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
  .clock-resource{grid-column:span 2}
  .resource{min-height:46px;padding:4px 6px;grid-template-columns:15px minmax(0,1fr);gap:0 5px;border-radius:8px}
  .resource-icon{width:15px;height:15px;flex-basis:15px}
  .resource-copy small{font-size:8.5px;letter-spacing:0}
  .resource-copy strong{margin-top:2px;font-size:11px}
  .resource-note{display:none}
  .power-resource .resource-note,.clock-resource .resource-note{display:block;font-size:8px}
  .fuel-resource,.clock-resource{padding-bottom:8px}
  .meter,.objective-meter{right:6px;bottom:3px;left:26px}
  .map-heading{top:163px;gap:8px;padding:4px 5px 4px 8px}
  .map-heading .kicker{font-size:7px}
  .map-heading b{font-size:10px}
  .map-heading b small{font-size:7px}
  .map-heading button{min-height:44px;padding:6px 8px;font-size:9px}
  .side-panel{top:auto;bottom:calc(126px + env(safe-area-inset-bottom));width:calc(50vw - 12px);max-height:min(33dvh,330px);padding:8px;border-radius:10px;touch-action:pan-y}
  .upgrade-panel{left:7px}
  .buildings-panel{right:7px}
  .panel-header{top:-8px;margin:-8px -8px 7px;padding:7px 8px;gap:4px}
  .panel-header h2{font-size:13px}
  .kicker{font-size:8px;letter-spacing:.08em}
  .tiny-badge{padding:3px 5px;font-size:8px}
  .panel-intro{font-size:9px;line-height:1.35}
  .section-heading h3{font-size:10px}
  .upgrade-node{grid-template-columns:minmax(0,1fr) auto;gap:3px 5px;padding:7px}
  .upgrade-node b,.robot-build-copy>b,.network-status b{font-size:10px}
  .upgrade-node p,.robot-build-copy p,.empty-project p,.project-card>p,.emergency-card p{font-size:9px;line-height:1.35}
  .upgrade-node small,.robot-build-copy small{font-size:8.5px;line-height:1.3}
  .upgrade-buy,.robot-build-choice button{min-width:58px;min-height:44px;padding:4px;font-size:9px}
  .cancel-order,.sacrifice-button{min-height:44px;padding:6px 8px}
  .robot-build-choice{grid-template-columns:minmax(0,1fr);gap:5px;padding:7px}
  .robot-build-choice button{width:100%;font-size:9px}
  .robot-production{margin-bottom:9px}
  .empty-project,.project-card{padding:8px}
  .network-status{gap:6px;padding:7px}
  .network-status small{font-size:8.5px}
  .building-mark{width:26px;height:26px;flex:0 0 26px;font-size:14px}
  .network-copy{font-size:8.5px;line-height:1.35}
  .network-project h3{font-size:10px}
  .map-legend{display:none}
  .simulation-controls{bottom:max(7px,env(safe-area-inset-bottom));display:grid;width:calc(100vw - 16px);max-width:none;grid-template-columns:auto auto minmax(0,1fr);grid-template-areas:'run step speed' 'restart newseed newseed';gap:4px;padding:6px;border-radius:10px}
  #run{grid-area:run}
  #step{grid-area:step}
  #restart{grid-area:restart}
  #new-seed{grid-area:newseed}
  .simulation-controls .primary,.simulation-controls .secondary{min-width:0;min-height:44px;padding:7px 8px;font-size:10px}
  .speed{grid-area:speed;display:flex;min-width:0;justify-content:stretch}
  .speed button{flex:1;min-width:30px;min-height:44px;padding:4px 3px;font-size:10px}
  .end-state{width:min(420px,calc(100vw - 24px));max-height:calc(100dvh - 28px);padding:15px}
  .end-state h2{font-size:18px}
  .end-state button,.close{min-height:44px}
  .close{width:44px;height:44px}
}
@media(max-width:400px){
  .back{font-size:8px}
  .brand small{display:none}
  .topbar{gap:5px}
  .topbar .quiet{font-size:8px}
  .resource-copy small{font-size:8px}
  .resource-copy strong{font-size:10.5px}
  .side-panel{width:calc(50vw - 10px)}
  .upgrade-buy{min-width:52px}
  .map-heading{top:162px}
}

/* The large map stays in a viewport-sized canvas; camera movement never allocates a map-sized bitmap. */
.board-wrap{overflow:hidden;touch-action:none;cursor:grab;scrollbar-width:none}
.board-wrap:active{cursor:grabbing}
.board-wrap::-webkit-scrollbar{display:none}
#board{position:absolute;top:0;left:0;width:100%;height:100%;max-width:none;touch-action:none;cursor:grab}
#board:active{cursor:grabbing}
.map-heading{flex-wrap:wrap;gap:8px}
.map-nav{display:flex;align-items:center;gap:4px;pointer-events:auto}
.map-nav button{display:grid;min-width:36px;min-height:34px;place-items:center;padding:4px 8px;pointer-events:auto}
.map-nav #return-camp{min-width:92px}
.map-nav span{min-width:34px;color:#dce8d8;font:9px var(--mono);text-align:center}
@media(max-width:760px){
  .map-heading{gap:5px}
  .map-nav{gap:3px}
  .map-nav button{min-width:44px;min-height:44px;padding:5px}
  .map-nav #return-camp{min-width:72px;padding:5px 6px;font-size:9px}
}
@media(max-width:400px){
  .map-heading b small{display:none}
  .map-nav #return-camp{min-width:58px}
}

/* Compact pass: keep investment choices legible while giving the forest more room. */
.dashboard{width:min(780px,calc(100vw - 520px));gap:5px}
.resource{min-height:43px;padding:4px 7px;border-color:#e8f6e716;border-radius:8px;box-shadow:0 5px 16px #0003}
.resource-copy strong{font-size:12px}
.resource-note{font-size:7px}
.side-panel{width:min(252px,calc(24vw - 12px));padding:8px;border-radius:10px;background:#0c1712e8;box-shadow:0 12px 32px #0005}
.panel-header{top:-8px;margin:-8px -8px 6px;padding:7px 8px;min-height:39px}
.panel-header h2{font-size:14px}
.panel-intro{margin:0 0 6px;font-size:9px}
.robot-production{gap:5px;margin-bottom:8px}
#robot-production-content{gap:5px}
.section-heading h3{font-size:10px}
.robot-build-choice{grid-template-columns:minmax(0,1fr) auto;gap:6px;padding:6px;border-radius:7px}
.robot-build-copy{gap:2px}
.robot-build-copy>b{font-size:9px}
.robot-build-copy p{display:none}
.robot-build-copy small{font-size:8px}
.robot-build-choice button{min-width:66px;min-height:32px;padding:4px 6px;font-size:8px}
.upgrade-tree{gap:4px}
.upgrade-node{gap:2px 6px;padding:6px;border-radius:6px}
.upgrade-node b{font-size:9px}
.upgrade-node p{font-size:8px;line-height:1.2}
.upgrade-node small{font-size:7px;line-height:1.2}
.upgrade-buy{min-width:62px;min-height:30px;padding:4px;font-size:8px}
.installed-upgrades{margin-top:6px;border-top:1px solid #ffffff18}
.installed-upgrades summary{display:flex;min-height:32px;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:9px;cursor:pointer;list-style:none}
.installed-upgrades summary::-webkit-details-marker{display:none}
.installed-upgrades summary::after{color:var(--dim);content:'+';font:14px var(--mono)}
.installed-upgrades[open] summary::after{content:'−'}
#installed-upgrade-list{display:grid;gap:3px;padding:2px 0 5px}
.installed-upgrade{display:flex;justify-content:space-between;gap:8px;padding:4px 0;color:var(--text);font-size:8px}
.installed-upgrade small{color:var(--muted);font-size:7px;text-align:right}
.buildings-panel-content{gap:5px}
.empty-project,.project-card{padding:8px;border-radius:7px}
.empty-project h3,.project-card h3{font-size:10px}
.empty-project p,.project-card>p{margin:4px 0;font-size:8px;line-height:1.3}
.network-status{display:grid;gap:5px;padding:7px;border-radius:7px}
.network-heading{display:flex;min-width:0;align-items:center;gap:7px}
.network-heading>div{display:grid;min-width:0;flex:1;gap:2px}
.network-heading b{font-size:9px}
.network-heading small{color:var(--muted);font-size:7px}
.network-heading>strong{color:#c5f1ff;font:500 12px var(--mono)}
.network-copy{display:-webkit-box;overflow:hidden;font-size:8px;line-height:1.3;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.project-progress,.coverage-meter{height:4px}
.emergency-card{gap:6px;margin-bottom:5px;padding:8px;border-radius:8px}
.emergency-title{gap:6px}
.emergency-card p{font-size:8px;line-height:1.3}
.sacrifice-note{font-size:8px}
.sacrifice-button{min-height:32px;padding:5px 7px;font-size:8px}

@media(max-width:1100px){
  .dashboard{width:calc(100vw - 32px)}
  .side-panel{width:min(252px,calc(28vw - 12px))}
}
@media(max-width:760px){
  .dashboard{width:calc(100vw - 16px)}
  .resource{min-height:44px}
  .side-panel{width:calc(50vw - 12px);max-height:min(36dvh,330px);padding:7px}
  .upgrade-panel{left:7px}
  .buildings-panel{right:7px}
  .panel-header{top:-7px;margin:-7px -7px 5px;padding:6px 7px}
  .upgrade-node{padding:6px}
  .upgrade-node b{font-size:8.5px}
  .upgrade-node p{font-size:7.5px}
  .upgrade-node small{font-size:7px}
  .upgrade-buy,.robot-build-choice button{min-height:44px}
  .robot-build-choice{grid-template-columns:minmax(0,1fr);gap:4px}
  .robot-build-choice button{width:100%}
  .network-heading b{font-size:8px}
  .building-mark{width:23px;height:23px;flex-basis:23px}
}

.playtest-export{display:grid;gap:8px;margin:16px 0;padding:12px;border:1px solid #ffffff1c;border-radius:8px;background:#0c1510}
.playtest-export>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.playtest-export h3{margin:0;color:var(--text);font-size:12px}
.playtest-export small,.playtest-export label{color:var(--muted);font-size:9px}
.playtest-export-actions{display:flex;align-items:center;gap:8px}
.playtest-export select{min-width:0;flex:1;min-height:36px;padding:6px 8px;border:1px solid #ffffff25;border-radius:6px;background:#16221a;color:var(--text);font:10px var(--mono)}
.playtest-export button{flex:0 0 auto;min-height:36px;padding:6px 10px;font-size:10px}
#export-status{margin:0;color:#b7d8bd;font-size:9px;line-height:1.4}
#export-status:empty{display:none}

.legend-station{border-radius:2px;background:#78c89e!important;transform:rotate(45deg)}
.satellite-status{border-color:#79c79a66;background:#13241be8}
.satellite-status .building-mark{border-color:#79c79a88;background:#78c89e14;color:#a5e8bd}
.satellite-status .coverage-meter span{background:linear-gradient(90deg,#519c72,#a9efbf)}
.satellite-project .project-progress i{background:linear-gradient(90deg,#5ea97b,#b5ebc3)}
.satellite-investment button{margin-top:7px}

@media(max-width:760px){
  .top-actions .top-action-collapsible{display:none}
  .mobile-panel-actions{display:grid;gap:3px}
}

/* Minimalist desktop interface: keep the map open and reveal tools on demand. */
@media(min-width:1121px){
  .topbar{right:14px;left:14px;height:48px;gap:18px;padding:0 13px;border-radius:12px}
  .brand b{font-size:14px}
  .save-status{max-width:180px;font-size:9px}
  .top-actions{display:flex;height:100%;align-items:center;gap:5px;margin-left:auto}
  .top-action,.more-menu>summary{display:flex;min-height:34px;align-items:center;justify-content:center;gap:8px;padding:0 11px;border:1px solid transparent;border-radius:7px;background:transparent;color:#e4ebdf;font-size:11px;font-weight:650;cursor:pointer;list-style:none}
  .top-action:hover,.top-action[aria-expanded="true"],.more-menu[open]>summary{border-color:#ffffff20;background:#ffffff0b}
  .top-action:focus-visible,.more-menu>summary:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
  .action-count{color:#a9bbac;font:8px var(--mono)}
  .more-menu{position:relative}
  .more-menu>summary::-webkit-details-marker{display:none}
  .more-menu>summary::after{margin-left:2px;color:#a9bbac;content:'⌄';font-size:13px}
  .more-popover{position:absolute;z-index:40;top:calc(100% + 7px);right:0;display:grid;width:190px;gap:3px;padding:6px;border:1px solid #ffffff24;border-radius:10px;background:#101913f5;box-shadow:0 14px 36px #0009;backdrop-filter:blur(18px)}
  .more-popover button{display:flex;min-height:35px;align-items:center;justify-content:space-between;padding:6px 9px;border:0;border-radius:6px;background:transparent;color:var(--text);font-size:10px;text-align:left}
  .more-popover button:hover{background:#ffffff12}
  .more-popover hr{width:100%;margin:3px 0;border:0;border-top:1px solid #ffffff19}
  .dashboard{top:67px;left:50%;width:min(600px,calc(100vw - 600px));grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;transform:translateX(-50%)}
  .resource{min-height:47px;grid-template-columns:16px minmax(0,1fr);gap:0 7px;padding:5px 8px;border-radius:9px;background:#0b1510e8}
  .resource-icon{width:16px;height:16px;flex-basis:16px}
  .resource-copy strong{font-size:12px}
  .resource-copy small{font-size:7px}
  .resource-note{display:none}
  .clock-resource{padding-bottom:7px}
  .objective-meter{right:8px;bottom:3px;left:31px;height:2px}
  .map-heading{top:126px;left:50%;min-height:28px;gap:0;padding:4px 10px;transform:translateX(-50%);border-color:#ffffff1a;border-radius:99px;background:#0b1510d9;box-shadow:0 5px 18px #0005;color:#d3dfd1;font:9px var(--mono)}
  .simulation-controls{bottom:14px;gap:7px;padding:6px 8px;border-radius:10px}
  .simulation-controls .primary,.simulation-controls .secondary{min-height:34px}
  .speed button{min-width:36px;min-height:29px}
  .map-nav button{min-width:33px;min-height:32px}
  .map-nav #return-camp{min-width:78px}
}
.floating-panel{position:fixed;z-index:60;top:122px;right:14px;left:auto;bottom:auto;width:min(360px,calc(100vw - 28px));max-width:none;max-height:min(72dvh,calc(100dvh - 210px));margin:0;padding:0;overflow:hidden;border:1px solid #607665;border-radius:12px;background:#101a13;color:var(--text);box-shadow:0 14px 38px #0009}
.floating-panel::backdrop{background:transparent}
.floating-panel .side-panel{position:relative;inset:auto;width:100%;height:auto;max-height:min(72dvh,calc(100dvh - 210px));min-height:0;overflow:auto;padding:12px 14px 15px;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;scrollbar-color:#75846d #111710;scrollbar-width:thin;overscroll-behavior:contain;touch-action:pan-y}
.floating-panel .panel-header{position:sticky;top:-12px;min-height:44px;margin:-12px -14px 10px;padding:8px 14px;border-bottom:1px solid #ffffff17;background:#101a13}
.floating-panel .panel-header h2{font-size:16px}
.panel-header-actions{display:flex;align-items:center;gap:8px}
.panel-header .close{position:static;width:34px;height:34px;font-size:21px}
.power-resource[data-state="shortage"],.power-resource[data-state="critical"],.power-resource[data-state="outage"],.power-resource[data-state="blackout"]{border-color:#df9a6077;background:#211d16}
.power-resource[data-state="shortage"] .power-icon,.power-resource[data-state="critical"] .power-icon,.power-resource[data-state="outage"] .power-icon,.power-resource[data-state="blackout"] .power-icon{color:#ffca7b}
.power-warning{position:absolute;top:50%;right:6px;transform:translateY(-15%);color:#ffd294;font:700 7px var(--mono);letter-spacing:.04em}
.power-resource[data-state="shortage"] .resource-copy strong{padding-right:39px}
.power-resource{grid-template-columns:16px minmax(0,1fr)}
.power-warning{position:absolute;top:5px;right:7px;grid-column:auto;grid-row:auto;align-self:auto;max-width:none;transform:none;padding:2px 4px;border:1px solid #d59d5d88;border-radius:4px;background:#49351e;color:#ffe2ab;font-size:7px;letter-spacing:.025em;white-space:nowrap}
.power-resource[data-state="shortage"] .resource-copy strong{padding-right:0}
.power-warning[data-cause="capacity"]{border-color:#edbd6d;background:#674622;color:#fff0c8}
.colony-management-summary{display:grid;gap:6px;margin:0 0 10px;padding:9px;border:1px solid #a9c69b35;border-radius:8px;background:linear-gradient(135deg,#1b2a1e,#142019)}
.colony-management-summary .section-heading h3{font-size:11px}
.workforce-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:9px}
.workforce-summary b{color:#ead6b3;font:600 9px var(--mono)}
.colony-management-summary .equipment-investment-next,.colony-management-summary .equipment-investment-status,.colony-management-summary .workforce-status,.colony-management-summary .generator-management-message{margin:0;font-size:9px;line-height:1.4}
.colony-management-summary .equipment-investment-next,.colony-management-summary .generator-management-capacity{color:var(--muted)}
.colony-management-summary .equipment-investment-status,.colony-management-summary .workforce-status,.colony-management-summary .generator-management-message{color:#d2d9cf}
.colony-management-summary .generator-management-capacity b{color:#ead6b3;font:600 9px var(--mono)}
.advanced-automation{margin:0 0 11px;padding:7px 9px;border:1px solid #ffffff18;border-radius:7px;background:#111a14}
.advanced-automation summary{color:#aebead;font-size:9px;font-weight:650;cursor:pointer}
.advanced-automation summary:focus-visible{outline:2px solid #e6c58a;outline-offset:3px}
.advanced-automation>p{margin:7px 0;color:var(--muted);font-size:8px;line-height:1.4}
.advanced-automation .equipment-strategy-label{margin:6px 0 2px}
.advanced-automation .generator-automation-toggle,.advanced-automation .research-automation-toggle{font-size:9px}
.generator-management{display:grid;gap:7px;margin:0 0 12px;padding:9px;border:1px solid #ffffff18;border-radius:8px;background:#172219}
.generator-management .section-heading h3{font-size:11px}
.generator-automation-toggle{display:flex;align-items:center;gap:8px;min-height:27px;color:#e2eadf;font-size:10px;font-weight:650;cursor:pointer}
.generator-automation-toggle input{width:15px;height:15px;margin:0;accent-color:#ddb06a}
.generator-automation-toggle input:focus-visible{outline:2px solid #e6c58a;outline-offset:2px}
.generator-management-capacity,.generator-management-message{margin:0;color:var(--muted);font-size:9px;line-height:1.4}
.generator-management-capacity b{color:#ead6b3;font:600 9px var(--mono)}
.generator-management-message{color:#d2d9cf}
.generator-management-state[data-state="saving_upgrade"],.generator-management-state[data-state="saving_storage"],.generator-management-state[data-state="cooldown"]{border-color:#c5a16c77;color:#e8c891}
.generator-management-state[data-state="upgrade_ready"],.generator-management-state[data-state="storage_ready"]{border-color:#a9d4a577;color:#c6e3bd}
.generator-management-state[data-state="disabled"]{color:#aeb7ad}
.workforce-management{display:grid;gap:7px;margin:0 0 12px;padding:9px;border:1px solid #ffffff18;border-radius:8px;background:#172219}
.workforce-management .section-heading h3{font-size:11px}
.workforce-population{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:9px}
.workforce-population b,.workforce-next b{color:#ead6b3;font:600 9px var(--mono)}
.workforce-target-label{display:grid;gap:4px;color:#d2d9cf;font-size:9px}
.workforce-target{width:100%;height:18px;margin:0;accent-color:#ddb06a;cursor:pointer}
.workforce-target:focus-visible{outline:2px solid #e6c58a;outline-offset:2px}
.workforce-next,.workforce-status{margin:0;color:var(--muted);font-size:9px;line-height:1.4}
.workforce-status{color:#d2d9cf}
.workforce-management-state[data-state="saving"],.workforce-management-state[data-state="waiting_fuel"],.workforce-management-state[data-state="waiting_capacity"],.workforce-management-state[data-state="waiting_storage"]{border-color:#c5a16c77;color:#e8c891}
.workforce-management-state[data-state="target_reached"],.workforce-management-state[data-state="working"]{border-color:#a9d4a577;color:#c6e3bd}
.workforce-management-state[data-state="sufficient"]{border-color:#a9d4a577;color:#c6e3bd}
.workforce-management-state[data-state="disabled"]{color:#aeb7ad}
.equipment-investment{display:grid;gap:7px;margin:0 0 10px;padding:9px;border:1px solid #ffffff18;border-radius:8px;background:#172219}
.equipment-investment .section-heading h3{font-size:11px}
.equipment-strategy-label{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;color:#d2d9cf;font-size:9px}
.equipment-strategy-label select{min-width:0;min-height:30px;padding:4px 7px;border:1px solid #70817266;border-radius:6px;background:#142019;color:#e2eadf;font:600 9px var(--sans);}
.equipment-strategy-label select:focus-visible{outline:2px solid #e6c58a;outline-offset:2px}
.equipment-investment-next,.equipment-investment-status{margin:0;color:var(--muted);font-size:9px;line-height:1.4}
.equipment-investment-next b{color:#ead6b3;font:600 9px var(--mono)}
.equipment-investment-status{color:#d2d9cf}
.equipment-investment-state[data-state="saving"],.equipment-investment-state[data-state^="waiting_"]{border-color:#c5a16c77;color:#e8c891}
.equipment-investment-state[data-state="ready"],.equipment-investment-state[data-state="completed"]{border-color:#a9d4a577;color:#c6e3bd}
.equipment-investment-state[data-state="manual"],.equipment-investment-state[data-state="stopped"]{color:#aeb7ad}
@media(max-width:760px){
  .power-resource{grid-template-columns:15px minmax(0,1fr)}
  .power-warning{padding:2px 3px;font-size:6px;letter-spacing:0}
  .generator-management{padding:7px}
  .workforce-management{padding:7px}
  .equipment-investment{padding:7px}
}
.operating-policy{display:grid;gap:6px;margin:0 0 11px;padding:0;border:0}
.operating-policy legend{margin-bottom:5px;color:#dce6d8;font-size:11px;font-weight:700}
.operating-policy-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.operating-policy-options label{position:relative;display:flex;min-width:0;cursor:pointer}
.operating-policy-options input{position:absolute;width:1px;height:1px;opacity:0}
.operating-policy-options span{display:grid;width:100%;min-height:32px;place-items:center;padding:5px 4px;border:1px solid #70817266;border-radius:6px;background:#142019;color:#bac7b6;font-size:10px;font-weight:650;text-align:center}
.operating-policy-options input:checked+span{border-color:#9bd5a7;background:#243829;color:#e4f8e4}
.operating-policy-options input:focus-visible+span{outline:2px solid #c8e9a7;outline-offset:2px}
#operating-policy-description{margin:0;color:#a9bbac;font-size:9px;line-height:1.35}
.power-priority{display:grid;gap:6px;margin:0 0 11px;padding:0;border:0}
.power-priority legend{margin-bottom:5px;color:#dce6d8;font-size:11px;font-weight:700}
.power-priority-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
.power-priority-options label{position:relative;display:flex;min-width:0;cursor:pointer}
.power-priority-options input{position:absolute;width:1px;height:1px;opacity:0}
.power-priority-options span{display:grid;width:100%;min-height:32px;place-items:center;padding:5px 4px;border:1px solid #70817266;border-radius:6px;background:#142019;color:#bac7b6;font-size:10px;font-weight:650;text-align:center}
.power-priority-options input:checked+span{border-color:#9bd5a7;background:#243829;color:#e4f8e4}
.power-priority-options input:focus-visible+span{outline:2px solid #c8e9a7;outline-offset:2px}
#power-priority-description{margin:0;color:#a9bbac;font-size:9px;line-height:1.35}
.floating-panel .upgrade-node,.floating-panel .robot-build-choice,.floating-panel .project-card,.floating-panel .empty-project,.floating-panel .network-status{border-color:#ffffff1c;background:#142019}
.floating-panel .upgrade-node{grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;padding:9px}
.floating-panel .upgrade-node b{font-size:11px}
.floating-panel .upgrade-node p{font-size:10px;line-height:1.4}
.floating-panel .upgrade-node small{font-size:9px}
.floating-panel .upgrade-buy,.floating-panel .robot-build-choice button{min-width:88px;min-height:38px;font-size:10px}
.floating-panel .section-heading h3{font-size:12px}
.floating-panel .tiny-badge{font-size:9px}
.floating-panel .buildings-panel-content{gap:9px}
.floating-panel .network-heading b,.floating-panel .empty-project h3,.floating-panel .project-card h3{font-size:11px}
.floating-panel .network-heading small{font-size:9px}
.floating-panel .network-copy,.floating-panel .empty-project p,.floating-panel .project-card>p,.floating-panel .emergency-card p{font-size:10px;line-height:1.4}
.floating-panel .sacrifice-button{min-height:36px;font-size:9px}
.detail-panel{display:grid;align-content:start;gap:0}
.detail-section{display:grid;gap:7px;padding:12px 0;border-bottom:1px solid #ffffff16}
.detail-section:first-of-type{padding-top:3px}
.detail-section .section-heading h3{font-size:11px}
.detail-copy{margin:0;color:#b9c9bb;font-size:10px;line-height:1.45}
.detail-number{color:#eef1df;font:500 13px var(--mono);text-align:right}
.detail-section .meter{position:static;height:4px;margin-top:1px;border-radius:99px}
.detail-section .meter i{border-radius:99px}
.robot-detail-list{display:grid;gap:5px}
.robot-detail-list>div{display:flex;justify-content:space-between;gap:12px;color:#c7d2c5;font-size:9px}
.robot-detail-list b{color:#eef1df;font:9px var(--mono)}
.diagnostic-list{display:grid;gap:7px}
.diagnostic-list article{padding:8px 9px;border:1px solid #ffffff16;border-radius:7px;background:#ffffff06}
.diagnostic-list b{font-size:10px}
.diagnostic-list p{margin:4px 0 0;color:#b9c9bb;font-size:9px;line-height:1.4}
.diagnostic-list>p{margin:0;color:#a9bbac;font-size:10px}
.floating-panel .installed-upgrades{margin-top:9px;border-top:1px solid #ffffff19}
.floating-panel .installed-upgrades summary{min-height:38px;font-size:10px}
.floating-panel .installed-upgrade{font-size:9px}
.floating-panel .installed-upgrade small{font-size:8px}
.research-overlay{position:fixed;z-index:90;inset:clamp(8px,1.6vw,24px);width:auto;height:auto;max-width:none;max-height:none;margin:0;padding:0;overflow:hidden;border:1px solid #71836d66;border-radius:18px;background:transparent;color:var(--text);box-shadow:0 30px 100px #000c}
.research-overlay::backdrop{background:#030906d9;backdrop-filter:blur(8px)}
.research-shell{display:grid;width:100%;height:100%;min-height:0;grid-template-rows:auto minmax(0,1fr);overflow:hidden;background:radial-gradient(ellipse at 32% 42%,#263c2c 0,#142219 43%,#0b140f 100%);backdrop-filter:blur(24px) saturate(1.15)}
.research-header{display:flex;min-width:0;align-items:center;gap:24px;padding:clamp(16px,2.1vw,28px) clamp(18px,2.6vw,36px);border-bottom:1px solid #d9ebd019;background:#0c1711a8}
.research-heading{min-width:0}
.research-heading h2{margin:4px 0 3px;font-size:clamp(23px,2.2vw,31px);font-weight:600;letter-spacing:-.04em}
.research-heading p{margin:0;color:#b8c8b6;font-size:12px;line-height:1.45}
.research-automation{flex:1 1 280px;min-width:220px;max-width:360px;padding:8px 10px;border:1px solid #a9c69b2d;border-radius:8px;background:#101b15b8}
.research-automation-toggle{display:flex;align-items:center;gap:8px;min-height:25px;color:#e2eadf;font-size:10px;font-weight:650;cursor:pointer}
.research-automation-toggle input{width:15px;height:15px;margin:0;accent-color:#ddb06a}
.research-automation-toggle input:focus-visible{outline:2px solid #e6c58a;outline-offset:2px}
.research-automation>p{margin:4px 0 0;color:#aebead;font-size:9px;line-height:1.4}
.research-header>.close{position:static;flex:0 0 40px;width:40px;height:40px;margin-left:auto;border-color:#dce9d72e;background:#142219;color:#e5ebd8;font-size:23px}
.research-affiliation{max-width:390px;margin:0 4px 0 auto;padding:9px 12px;border:1px solid #e7b46155;border-radius:8px;background:#302417b8;color:#efd4a2;font-size:11px;line-height:1.4}
.research-view{display:grid;min-width:0;min-height:0;grid-template-columns:minmax(0,1fr) minmax(300px,350px);gap:clamp(12px,2vw,28px);padding:clamp(12px,1.8vw,24px)}
.research-map-scroll{min-width:0;min-height:0;overflow:auto;padding:4px 9px 18px;overscroll-behavior:contain;scrollbar-color:#657b61 #101a14;scrollbar-width:thin}
.research-map{position:relative;display:grid;min-width:750px;min-height:100%;grid-template-rows:auto auto;align-content:start;gap:clamp(22px,3vh,38px);padding:12px 4px 20px}
.research-connections{position:absolute;z-index:0;inset:0;overflow:visible;pointer-events:none}
.research-connections defs marker path{fill:#6d876e}
.research-link{fill:none;stroke:#6a806a88;stroke-width:1.5;transition:stroke .2s,stroke-width .2s}
.research-link.satisfied{stroke:#afd395c9;stroke-width:2}
.research-foundations,.research-disciplines{position:relative;z-index:1}
.research-foundations{display:grid;justify-items:center;gap:13px}
.research-stage-heading{display:grid;justify-items:center;gap:4px;text-align:center}
.research-stage-heading>span,.research-lane-heading>span{color:#8fa58c;font:9px var(--mono);letter-spacing:.16em;text-transform:uppercase}
.research-stage-heading h3{margin:0;color:#e5ebd9;font-size:15px;font-weight:600;letter-spacing:.02em}
.research-foundation-chain{display:grid;justify-items:center;gap:17px}
.research-disciplines{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:clamp(9px,1.3vw,18px);padding-top:7px}
.research-lane{--lane-accent:#b2d99a;display:grid;min-width:0;align-content:start;gap:14px}
.lane-power{--lane-accent:#9ed3c2}.lane-swarm{--lane-accent:#b5dc8e}.lane-industrial{--lane-accent:#d8b779}.lane-network{--lane-accent:#96c6da}
.research-lane-heading{display:grid;min-height:44px;align-content:start;gap:4px;padding:0 0 10px 10px;border-bottom:1px solid color-mix(in srgb,var(--lane-accent) 35%,transparent);border-left:2px solid color-mix(in srgb,var(--lane-accent) 65%,transparent)}
.research-lane-heading h3{margin:0;color:#e2e9d9;font-size:clamp(11px,1.05vw,14px);font-weight:600;line-height:1.2}
.research-lane-chain{display:grid;gap:22px}
.technology-node{position:relative;display:grid;width:min(100%,340px);min-height:106px;grid-template-rows:auto 1fr auto 4px;gap:9px;padding:13px 13px 11px;overflow:hidden;border:1px solid #c5d7b622;border-left:2px solid color-mix(in srgb,var(--lane-accent,#9ab28f) 62%,transparent);border-radius:10px;background:linear-gradient(145deg,#1a2b20f5,#101b15f5);color:#edf0df;text-align:left;box-shadow:0 8px 24px #03090638;transition:border-color .16s,background .16s,box-shadow .16s,transform .16s}
.research-foundation-chain .technology-node{width:min(100%,390px);min-height:88px;grid-template-rows:auto auto auto 3px;gap:7px;padding:11px 15px}
.technology-node:hover{transform:translateY(-1px);border-color:#e0efd052;background:linear-gradient(145deg,#203629,#142219)}
.technology-node:focus-visible{z-index:2;outline:2px solid #e8bc70;outline-offset:3px}
.technology-node.selected{border-color:color-mix(in srgb,var(--lane-accent,#9ab28f) 86%,white);box-shadow:0 0 0 1px color-mix(in srgb,var(--lane-accent,#9ab28f) 36%,transparent),0 10px 30px #03090688,0 0 25px color-mix(in srgb,var(--lane-accent,#9ab28f) 13%,transparent)}
.technology-node[data-state="researched"]{background:linear-gradient(145deg,#203522f5,#132117f8)}
.technology-node[data-state="available"]{border-color:#a9df82a8;box-shadow:0 0 21px #a9df8218}
.technology-node[data-state="excluded"]{border-color:#bd928d55;background:linear-gradient(145deg,#281f1d,#161817);color:#b8b6aa}
.technology-node-top{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:7px}
.technology-node-tier{overflow:hidden;color:#94a992;font:8px var(--mono);letter-spacing:.08em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}
.technology-node-status{flex:0 0 auto;color:var(--lane-accent,#afc89b);font:8px var(--mono);letter-spacing:.07em;text-transform:uppercase}
.technology-node[data-state="researched"] .technology-node-status{color:#c8edaa}
.technology-node[data-state="excluded"] .technology-node-status{color:#d6a9a1}
.technology-node-name{align-self:center;color:#f0f1e3;font-size:clamp(12px,1.12vw,15px);font-weight:650;line-height:1.24;overflow-wrap:anywhere}
.technology-node-milestone{color:#adbcaa;font:9px var(--mono);line-height:1.3}
.technology-node-meter{display:block;height:3px;overflow:hidden;border-radius:99px;background:#ffffff18}
.technology-node-meter i{display:block;width:0;height:100%;border-radius:inherit;background:var(--lane-accent,#afc89b);transition:width .2s}
.technology-node[data-state="researched"] .technology-node-meter i{background:#c3e99d}
.research-detail-panel{display:grid;min-width:0;min-height:0;align-content:start;gap:16px;overflow:auto;padding:21px;border:1px solid #b5ceb32b;border-radius:13px;background:linear-gradient(155deg,#17251cf5,#101914f7);box-shadow:0 18px 48px #03090638;scrollbar-color:#647660 #121a14;scrollbar-width:thin}
.detail-panel-heading{display:grid;gap:6px;padding-bottom:14px;border-bottom:1px solid #ffffff18}
.detail-panel-heading h3{margin:0;color:#f2f0df;font-size:22px;font-weight:600;letter-spacing:-.03em;line-height:1.18;overflow-wrap:anywhere}
.research-detail-status{width:max-content;max-width:100%;padding:4px 7px;border:1px solid #91ae7c45;border-radius:99px;background:#21301f;color:#c7e8a9;font:8px var(--mono);letter-spacing:.09em;text-transform:uppercase}
.technology-detail-section{display:grid;gap:7px;min-width:0}
.technology-detail-section h4{margin:0;color:#91a78f;font:9px var(--mono);letter-spacing:.13em;text-transform:uppercase}
.technology-detail-section p{margin:0;color:#c5d0be;font-size:12px;line-height:1.55;overflow-wrap:anywhere}
.technology-detail-section .technology-effect{color:#dce7cf}
.milestone-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.milestone-heading h4{flex:0 0 auto}
.milestone-heading b{color:#e4e9d8;font:10px var(--mono);text-align:right}
.milestone-meter{height:5px;overflow:hidden;border-radius:99px;background:#ffffff18}
.milestone-meter i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#8ebd78,#d9bf7e);transition:width .2s}
.requirements-section{padding-top:1px}
.research-requirements{display:grid;gap:7px;margin:0;padding:0;list-style:none}
.research-requirements li{display:grid;min-width:0;grid-template-columns:15px minmax(0,1fr) auto;align-items:center;gap:6px;color:#c5d0be;font-size:10px;line-height:1.35}
.requirement-marker{color:#d1e9b5;font-size:12px;text-align:center}
.requirement-missing .requirement-marker,.requirement-missing .requirement-state{color:#e7c27d}
.requirement-copy{min-width:0;overflow-wrap:anywhere}
.requirement-state{color:#9eaf9b;font:8px var(--mono);text-align:right}
.no-prerequisites{grid-template-columns:1fr!important;color:#aebbab!important}
.specialization-warning{margin:0;padding:10px 11px;border:1px solid #d7a95c62;border-left:2px solid var(--amber);border-radius:7px;background:#2a2116;color:#f0d8aa;font-size:10px;line-height:1.45}
.research-detail-action-wrap{display:grid;gap:7px;margin-top:1px}
.research-detail-action{min-height:43px;padding:10px 14px;font-size:12px}
.research-detail-action-wrap>p{margin:0;color:#99aa98;font-size:9px;line-height:1.4;text-align:center}
.research-choice-dialog{position:fixed;z-index:100;width:min(470px,calc(100vw - 30px));max-width:none;max-height:calc(100dvh - 30px);margin:auto;padding:0;overflow:hidden;border:1px solid #d8ad6b77;border-radius:13px;background:#121c15;color:var(--text);box-shadow:0 24px 80px #000c}
.research-choice-dialog::backdrop{background:#030705b5;backdrop-filter:blur(4px)}
.choice-dialog-content{display:grid;gap:12px;padding:24px}
.choice-dialog-content h2{margin:0;color:#f4eedb;font-size:21px;letter-spacing:-.025em}
.choice-dialog-content>p{margin:0;color:#c5cfbd;font-size:12px;line-height:1.55}
.choice-dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:5px}
.choice-dialog-actions button{min-height:39px;padding:8px 12px}
@media(max-height:760px){
  .research-header{padding:12px clamp(18px,2.6vw,36px)}
  .research-heading h2{margin:2px 0;font-size:23px}
  .research-heading p{font-size:10px}
  .research-view{gap:14px;padding:10px 14px}
  .research-map{gap:14px;padding:3px 4px 8px}
  .research-foundations{gap:7px}
  .research-stage-heading{gap:2px}
  .research-stage-heading h3{font-size:13px}
  .research-foundation-chain{gap:9px}
  .research-foundation-chain .technology-node{min-height:67px;gap:5px;padding:8px 13px}
  .research-disciplines{gap:10px;padding-top:2px}
  .research-lane{gap:8px}
  .research-lane-heading{min-height:36px;gap:3px;padding:0 0 6px 8px}
  .research-lane-heading h3{font-size:12px}
  .research-lane-chain{gap:11px}
  .technology-node{min-height:86px;gap:6px;padding:9px 10px}
  .technology-node-name{font-size:12px}
  .research-detail-panel{gap:11px;padding:15px}
  .detail-panel-heading{gap:5px;padding-bottom:10px}
  .detail-panel-heading h3{font-size:19px}
  .technology-detail-section{gap:5px}
  .technology-detail-section p{font-size:11px;line-height:1.42}
  .research-requirements{gap:5px}
}
.detail-disclosure{margin-top:10px;border-top:1px solid #ffffff18}
.detail-disclosure>summary{display:flex;min-height:36px;align-items:center;justify-content:space-between;gap:8px;color:#dce6d8;font-size:10px;font-weight:650;cursor:pointer;list-style:none}
.detail-disclosure>summary::-webkit-details-marker{display:none}
.detail-disclosure>summary::after{color:#9caf9b;content:'+';font:14px var(--mono)}
.detail-disclosure[open]>summary::after{content:'−'}
.detail-disclosure>summary span{margin-left:auto;color:var(--muted);font:8px var(--mono)}
.compact-dialog,.help-dialog{position:fixed;z-index:70;inset:0;width:min(420px,calc(100vw - 32px));max-width:420px;max-height:calc(100dvh - 36px);margin:auto;padding:22px;border:1px solid #ffffff2a;border-radius:13px;background:#101913f7;color:var(--text);box-shadow:0 20px 70px #000a;backdrop-filter:blur(22px)}
.compact-dialog::backdrop,.help-dialog::backdrop{background:#02060494;backdrop-filter:blur(3px)}
.compact-dialog form{position:relative}
.compact-dialog .close{position:absolute;top:-8px;right:-8px}
.compact-dialog h2{margin:3px 38px 7px 0;font-size:19px}
.compact-dialog .dialog-copy{margin:0 0 16px;color:#c0ceb9;font-size:11px;line-height:1.5}
.compact-dialog .dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.compact-dialog .dialog-actions button{min-height:38px;padding:7px 12px}
.danger{border-color:#9b5d4d;background:#713c31;color:#fff0e9}
.danger:hover{background:#85493a}
.compact-dialog .seed-control{margin:0;color:#b9c9bb;font-size:9px}
.compact-dialog .seed-control input{width:100%;min-height:38px;font-size:12px}
.map-key-list{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin:18px 0}
.map-key-list span{display:flex;align-items:center;gap:9px;color:#d3dfd1;font-size:10px}
.map-key-list i{display:block;width:12px;height:12px;flex:0 0 12px;border-radius:2px;background:#c1d5bb}
.map-key-list .legend-tree{background:#9bc478!important}
.map-key-list .legend-generator{background:var(--amber)!important}
.map-key-list .legend-lamp{border-radius:50%;background:#b7f0ff!important;box-shadow:0 0 7px #83dcff}
.map-key-list .legend-move{border-radius:3px;background:#ecf2df!important}
.map-key-list .legend-lamp-buffer{border:2px dashed #d0e8df;border-radius:50%;background:#31574d!important}
.map-key-list .legend-lamp-dark{border:2px solid #c0ccc3;border-radius:2px;background:linear-gradient(135deg,transparent 43%,#c0ccc3 45% 53%,transparent 55%)!important}
.map-key-list .legend-wire-powered,.map-key-list .legend-wire-dark,.map-key-list .legend-wire-intertie{height:0;border-radius:0;background:none}
.map-key-list .legend-wire-powered{border-top:2px solid #70cbeea6}
.map-key-list .legend-wire-dark{border-top:2px dashed #a0ada4}
.map-key-list .legend-wire-intertie{height:2px;border-top:1px dashed #79c9b4;border-bottom:1px dashed #79c9b4}
.help-dialog{z-index:80;width:min(540px,calc(100vw - 32px));max-width:540px;max-height:calc(100dvh - 36px);padding:24px;overflow:auto}
.help-dialog .close{position:absolute}
.info-dialog{inset:62px 14px auto auto;width:min(420px,calc(100vw - 28px));max-width:420px;max-height:calc(100dvh - 76px);margin:0;overflow:auto;backdrop-filter:none}
.info-dialog::backdrop{background:transparent;backdrop-filter:none}
#map-key-dialog.info-dialog{width:min(390px,calc(100vw - 28px));max-width:390px}
#help.info-dialog{width:min(540px,calc(100vw - 28px));max-width:540px;max-height:calc(100dvh - 76px);padding:22px}
.end-state{z-index:50}
@media(max-width:1120px){
  .top-actions{display:flex;min-width:0;gap:3px;margin-left:auto}
  .top-action,.more-menu>summary{display:flex;min-height:32px;align-items:center;gap:5px;padding:0 7px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text);font-size:9px;cursor:pointer;list-style:none}
  .action-count{display:none}
  .floating-panel{top:122px;right:10px;width:min(360px,calc(100vw - 20px));max-height:min(70dvh,calc(100dvh - 208px))}
  .floating-panel .side-panel{max-height:min(70dvh,calc(100dvh - 208px))}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
@media(min-width:1121px){
  .action-count{font-size:9px}
  .resource-copy small{font-size:8px}
  .resource-copy strong{font-size:13px}
  .map-heading{font-size:10px}
  .detail-copy{font-size:11px}
  .floating-panel .network-heading small,.floating-panel .empty-project p,.floating-panel .project-card>p,.floating-panel .emergency-card p{font-size:11px}
}
.clock-resource .coverage-goal{display:block;font-size:8px;line-height:1.15}
.network-doctrine-choice{display:grid;gap:7px;margin:0;padding:9px;border:1px solid #8bb7d044;border-radius:8px;background:#15211c}
.network-doctrine-choice legend{padding:0 4px;font-size:10px;font-weight:700}
.network-doctrine-note{margin:0;color:var(--muted);font-size:9px;line-height:1.4}
.network-doctrine-options{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.network-doctrine-options label{display:flex;align-items:flex-start;gap:7px;min-width:0;padding:8px;border:1px solid #ffffff16;border-radius:6px;background:#ffffff05;cursor:pointer}
.network-doctrine-options input{flex:0 0 auto;margin:2px 0 0;accent-color:#a8d7ff}
.network-doctrine-options span{display:grid;gap:4px;min-width:0}
.network-doctrine-options b,.network-doctrine-status b{font-size:10px}
.network-doctrine-options small,.network-doctrine-status p{margin:0;color:var(--muted);font-size:9px;line-height:1.4}
.network-doctrine-choice>[data-commit-network-doctrine]{width:100%;min-height:32px}
.network-doctrine-status{display:grid;gap:5px;padding:9px;border:1px solid #8bb7d044;border-radius:8px;background:#15211c}
.network-doctrine-status>div{display:flex;align-items:center;justify-content:space-between;gap:6px}

.notification{position:absolute;z-index:15;top:164px;left:50%;display:grid;width:fit-content;max-width:min(560px,calc(100vw - 24px));min-width:0;transform:translateX(-50%);grid-template-columns:minmax(0,1fr);align-items:center;padding:8px 12px;border:1px solid #ffffff24;border-radius:10px;background:#0b1510ed;color:#eef3e8;box-shadow:0 10px 28px #0007;backdrop-filter:blur(14px);text-align:center}
.notification-message{min-width:0;overflow-wrap:anywhere;font-size:10px;line-height:1.4}
@media(max-width:760px){
  .notification{top:212px;max-width:min(560px,calc(100vw - 16px));padding:7px 9px}
  .notification-message{font-size:9px}
}
