:root{--ground:#070a18;--ground-2:#0b1024;--surface:#ffffff0b;--surface-hover:#ffffff13;--line:#ffffff1a;--line-strong:#ffffff2e;--text:#dce5f5;--text-dim:#8592b0;--text-faint:#56618097;--accent:#7fd4ff;--accent-deep:#1f6f96;--warn:#ffb865;--good:#6ee7a8;--bad:#ff8b8b;--gap:12px;--radius:10px;--label:600 10px/1.4 system-ui, -apple-system, "Segoe UI", sans-serif;--label-spacing:.14em}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--ground);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none;margin:0;font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(46% 32% at 22% 8%,#16b8f329,#0000 70%),radial-gradient(42% 34% at 82% 22%,#9f42f024,#0000 72%),radial-gradient(56% 40% at 52% 92%,#17d3ae17,#0000 74%);position:fixed;inset:-10%}#app{flex-direction:column;min-height:100vh;display:flex}.label{font:var(--label);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-dim)}.rule{align-items:center;gap:var(--gap);margin:22px 0 10px;display:flex}.rule:before,.rule:after{content:"";background:var(--line);flex:1;height:1px}.header{z-index:10;background:linear-gradient(var(--ground) 68%, transparent);padding:14px 16px 18px;position:sticky;top:0}.header-inner{grid-template-columns:repeat(auto-fit,minmax(110px,max-content));gap:10px 24px;width:100%;max-width:760px;margin:0 auto;display:grid}@media (max-width:520px){.header-inner{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}}.stat{flex-direction:column;gap:2px;display:flex}.stat-value{font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:19px}.stat-rate{color:var(--accent);font-variant-numeric:tabular-nums;min-height:16px;font-size:11px}.stat-funding .stat-value{color:var(--good)}.main{flex:1;width:100%;max-width:760px;margin:0 auto;padding:0 16px 40px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.dept-name{letter-spacing:.02em;margin:4px 0 2px;font-size:22px}.dept-blurb{color:var(--text-dim);max-width:58ch;margin:0 0 4px}.dept-role{font:var(--label);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--accent)}.stations{flex-wrap:wrap;gap:5px;margin:12px 0 8px;display:flex}.station{border:1px solid var(--line-strong);background:var(--surface);width:26px;height:26px;color:var(--text-faint);font-variant-numeric:tabular-nums;border-radius:6px;place-items:center;font-size:10px;display:grid}.station.is-active{border-color:var(--accent-deep);color:var(--accent);background:#7fd4ff24}.station.is-running{border-color:var(--accent);color:#eaf7ff;background:#7fd4ff42}.station.is-dark{background:0 0;border-style:dashed;border-color:#ffffff21}.constraint{color:var(--text-dim);flex-wrap:wrap;align-items:baseline;gap:8px;font-size:12.5px;display:flex}.constraint strong{color:var(--text);font-weight:600}.constraint.is-staff strong{color:var(--warn)}.constraint.is-stations strong{color:var(--accent)}.dials{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}@media (max-width:460px){.dial{padding:10px 8px}.dial-name{letter-spacing:.08em;font-size:9px}.dial-value{font-size:18px}.dial-note{min-height:27px;font-size:10px;line-height:1.35}.dials .buy{padding:8px 6px;font-size:11px}}.dial{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:3px;padding:12px;display:flex;overflow:hidden}.dial-name{font:var(--label);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-dim)}.dial-level{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:11px}.dial-value{font-variant-numeric:tabular-nums;margin-bottom:2px;font-size:20px}.dial-note{color:var(--text-faint);min-height:15px;margin-bottom:10px;font-size:11px}.buy{color:var(--accent);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;background:#25b9f417;border:1px solid #47c4f580;border-radius:999px;margin:10px 0 12px;padding:9px 12px;font-size:13px;transition:background .13s,border-color .13s,box-shadow .13s;box-shadow:0 0 12px #25b9f424,inset 0 0 10px #3dc1f50f}.buy:hover:not(:disabled){border-color:var(--accent);background:#25b9f433;box-shadow:0 0 18px #25b9f44d,inset 0 0 12px #3dc1f51a}.buy:disabled{border-color:var(--line);color:var(--text-faint);box-shadow:none;cursor:not-allowed;background:0 0}.output-row{justify-content:space-between;align-items:center;gap:var(--gap);flex-wrap:wrap;display:flex}.output-held{font-variant-numeric:tabular-nums;font-size:20px}.output-rate{color:var(--accent);font-variant-numeric:tabular-nums;font-size:12px}.apply{color:var(--good);font:inherit;cursor:pointer;font-variant-numeric:tabular-nums;white-space:nowrap;background:#6ee7a81a;border:1px solid #6ee7a873;border-radius:999px;padding:10px 20px;font-size:14px;transition:border-color .13s,background .13s,box-shadow .13s;box-shadow:0 0 14px #3cdd8c29}.apply:hover:not(:disabled){border-color:var(--good);background:#6ee7a833;box-shadow:0 0 20px #3cdd8c4d}.apply:disabled{color:var(--text-faint);border-color:var(--line);box-shadow:none;cursor:not-allowed;background:0 0}.hint{color:var(--text-faint);max-width:58ch;margin-top:8px;font-size:12px}.summary-backdrop{z-index:50;background:#04060fd1;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.summary{background:var(--ground-2);border:1px solid var(--line-strong);border-radius:14px;width:100%;max-width:380px;padding:22px}.summary h2{margin:6px 0 4px;font-size:19px;font-weight:500}.summary-lead{color:var(--text-dim);margin:0 0 16px}.summary-line{justify-content:space-between;gap:var(--gap);border-top:1px solid var(--line);font-variant-numeric:tabular-nums;padding:7px 0;display:flex}.summary-capped{color:var(--text-faint);margin:14px 0 0;font-size:12px}.summary button{border:1px solid var(--accent-deep);width:100%;color:var(--accent);font:inherit;cursor:pointer;background:#7fd4ff24;border-radius:999px;margin-top:18px;padding:11px}.summary button:hover{background:#7fd4ff3d}.panel-error{border:1px dashed var(--bad);border-radius:var(--radius);color:var(--bad);flex-direction:column;gap:4px;padding:14px;font-size:13px;display:flex}.notice{border-radius:var(--radius);border:1px solid var(--warn);color:var(--warn);background:#ffb86514;margin:0 0 12px;padding:10px 12px;font-size:12.5px}.plan{justify-content:center;margin:4px -8px 6px;display:flex}.plan-svg{width:100%;max-width:560px;height:auto;overflow:visible}.plan-svg text{pointer-events:none;-webkit-user-select:none;user-select:none;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-weight:600}.room,.plot-locked.is-affordable{cursor:pointer}.room{transition:opacity .14s}.room:hover .room-roof,.room:focus-visible .room-roof{filter:brightness(1.25)}.room:focus-visible,.plot-locked:focus-visible{outline:none}.room:focus-visible .room-roof,.plot-locked:focus-visible polygon{stroke-width:2.5px}.pip.is-running{animation:2.4s ease-in-out infinite pip-pulse}@keyframes pip-pulse{0%,to{opacity:.72}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.pip.is-running{opacity:1;animation:none}}.plot-locked.is-affordable polygon{animation:3.4s ease-in-out infinite plot-breathe}@keyframes plot-breathe{0%,to{opacity:.75}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.plot-locked.is-affordable polygon{animation:none}}.body{min-height:60vh}.plan{flex-direction:column;align-items:center}.stations-list{flex-direction:column;gap:6px;display:flex}.station-row{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px 11px}.station-row.is-dark{opacity:.5;border-style:dashed}.station-row-top{align-items:center;gap:10px;display:flex}.station-name{font:var(--label);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--text-dim);white-space:nowrap}.recipe-picker{min-width:0;color:var(--text);border:1px solid var(--line);font:inherit;cursor:pointer;background:#ffffff0a;border-radius:7px;flex:1;padding:6px 8px;font-size:12.5px}.recipe-picker:disabled{cursor:not-allowed;color:var(--text-faint)}.recipe-picker option{background:var(--ground-2);color:var(--text)}.station-timer{color:var(--text-faint);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;min-width:74px;font-size:11.5px}.station-bar{background:#ffffff12;border-radius:999px;height:3px;margin-top:9px;overflow:hidden}.station-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .12s linear;box-shadow:0 0 8px #3dc1f599}.nav{z-index:20;background:linear-gradient(transparent, var(--ground) 26%);padding:22px 16px calc(14px + env(safe-area-inset-bottom,0px));position:sticky;bottom:0}.nav-inner{gap:8px;max-width:760px;margin:0 auto;display:flex}.nav-button{border:1px solid var(--line);color:var(--text-dim);font:inherit;letter-spacing:.09em;text-transform:uppercase;cursor:pointer;background:#ffffff08;border-radius:999px;flex:1;padding:11px 14px;font-size:12px;font-weight:600;transition:color .13s,border-color .13s,background .13s,box-shadow .13s}.nav-button:hover{color:var(--text);border-color:var(--line-strong)}.nav-button.is-current{color:var(--accent);background:#25b9f41c;border-color:#47c4f58c;box-shadow:0 0 14px #25b9f42e}.main{padding-bottom:84px}.section-lead{color:var(--text-dim);max-width:60ch;margin:0 0 12px;font-size:12.5px}.resource-rows{flex-direction:column;gap:8px;display:flex}.resource-row .output-held{font-size:22px}.output-rate.is-idle{color:var(--text-faint)}.capability-list{grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:8px;display:grid}.capability{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:5px;padding:13px;display:flex}.capability-top{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.capability-name{margin:0;font-size:14.5px;font-weight:600}.capability-costs{flex-direction:column;gap:2px;margin:4px 0 2px;display:flex}.cost-row{font-variant-numeric:tabular-nums;color:var(--text-dim);justify-content:space-between;gap:12px;font-size:11.5px;display:flex}.cost-name{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);align-self:center;font-size:9.5px}.cost-value{color:var(--accent)}.cost-row.is-short .cost-value{color:var(--warn)}.capability-blurb{color:var(--text-dim);margin:0;font-size:12.5px;line-height:1.45}.capability-effect{color:var(--accent);opacity:.85;margin:0;font-size:11.5px}.capability-status{color:var(--text-faint);min-height:15px;font-size:11px}.capability.is-locked .capability-status{color:var(--bad)}.capability.is-ready{border-color:#47c4f566;box-shadow:0 0 16px #25b9f41a}.capability.is-owned{opacity:.5;border-style:dashed;flex-direction:row;justify-content:space-between;align-items:baseline;padding:9px 13px}.capability.is-owned .capability-top{flex:1}.capability.is-owned .capability-name{font-size:13px;font-weight:500}.capability.is-owned .capability-blurb,.capability.is-owned .capability-effect,.capability.is-owned .capability-cost{display:none}.capability.is-owned .capability-status{color:var(--good)}.capability-buy{margin:4px 0 0}.facility{cursor:pointer}.facility:hover .facility-roof,.facility:focus-visible .facility-roof{filter:brightness(1.3)}.facility:focus-visible{outline:none}.facility:focus-visible .facility-roof{stroke-width:2.5px}.resource-head{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:10px;padding:0;display:flex}.resource-head:hover .row-chevron{color:var(--text)}.resource-head>div:first-child{flex:1;min-width:0}.row-chevron{color:var(--text-faint);font-size:11px;transition:color .13s}.resource-row.is-open{border-color:var(--line-strong)}.resource-adjust{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.apply-slider{width:100%;accent-color:var(--good);cursor:pointer;margin:0 0 10px}.split{font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:12.5px;display:flex}.split-apply{color:var(--good)}.split-keep{color:var(--accent)}.capture-bar{background:#ffffff12;border-radius:3px;height:6px;margin:12px 0 6px;overflow:hidden}.capture-fill{background:linear-gradient(90deg, var(--accent-deep), var(--accent));border-radius:3px;width:0%;height:100%;transition:width .24s ease-out}.capture-fill.is-empty{background:var(--warn);opacity:.35}.capture-share{color:var(--text-dim);letter-spacing:.04em;text-transform:uppercase;margin-bottom:8px;font-size:12.5px}.service-offer{border-color:var(--accent-deep);background:linear-gradient(180deg, #7fd4ff0d, transparent 60%), var(--card,#ffffff05)}.service-offer .hint{margin:6px 0 12px}.buy-service{width:100%;padding:11px 14px;font-size:13px}.summary-referred{border-top:1px solid var(--line);margin-top:18px;padding-top:14px}.summary-line.is-referred strong{color:var(--warn);font-weight:600}.summary-referred .hint{color:var(--text-dim);margin-top:10px}.dials.is-lab{grid-template-columns:repeat(2,1fr)}@media (max-width:460px){.dials.is-lab{grid-template-columns:repeat(2,1fr)}}.dials.is-lab .dial{padding:10px}.dials.is-lab .dial-value{font-size:20px}.dials.is-lab .dial-note{font-size:11px}.dials.is-lab .buy{padding:7px 10px;font-size:12px}.capture-figures{flex-wrap:wrap;gap:28px;display:flex}.capture-figures .label{margin-bottom:2px}.capture-figure{font-variant-numeric:tabular-nums;color:var(--text);font-size:22px}.capture-figure.is-captured{color:var(--accent)}.capture-figure.is-zero{color:var(--text-faint)}.tabs{border-bottom:1px solid var(--line);align-items:flex-end;gap:3px;margin:18px 0 0;display:flex}.tab-button{border:1px solid var(--line);color:var(--text-dim);font:inherit;letter-spacing:.09em;text-transform:uppercase;cursor:pointer;background:#ffffff06;border-radius:9px 9px 0 0;flex:0 auto;margin-bottom:-1px;padding:9px 20px 10px;font-size:11px;font-weight:600;transition:color .13s,background .13s,border-color .13s;position:relative}.tab-button:not(.is-current){margin-top:4px;padding-bottom:8px}.tab-button:not(.is-current):hover{color:var(--text);background:#ffffff0d}.tab-button.is-current{border-color:var(--line-strong);color:var(--accent);background:#111834;border-bottom-color:#111834}.tab-button.is-current:before{content:"";background:var(--accent);border-radius:9px 9px 0 0;height:2px;position:absolute;inset:-1px -1px auto;box-shadow:0 0 10px #25b9f48c}.tabs+*{padding-top:4px}.derivation{color:var(--text-faint);margin:4px 0 0;font-size:12px}
