:root{--ink:#173b40;--muted:#657c7b;--cream:#f3f4ec;--line:#d8e1d7;--accent:#e9b967;--green:#2d7066;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--cream);color-scheme:light}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:600 13px/1.3 Arial,sans-serif;color:var(--ink);border:1px solid #b9cbc2;border-radius:8px;background:#fffdf6;padding:11px 15px;min-height:44px;cursor:pointer;touch-action:manipulation}button:hover:not(:disabled){background:#e2eadc;border-color:#547c6e}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid #ca6e25;outline-offset:3px}.factory-shell{width:min(1320px,calc(100% - 72px));margin:auto}.game-heading{display:flex;align-items:center;justify-content:space-between;padding:30px 0 25px;gap:20px}.eyebrow{font:700 10px/1.5 'Courier New',monospace;letter-spacing:2px;color:#597668;margin:0 0 10px}h1{font-size:clamp(34px,4vw,53px);letter-spacing:-2px;line-height:1.1;margin:0}h1 em{font-family:Georgia,serif;font-weight:400;color:#457e68}.subheading{color:var(--muted);margin:9px 0 0;font-size:14px}.top-controls{display:flex;gap:8px;flex-wrap:wrap}.dashboard{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:22px;background:#fffdf7}.dashboard>div{padding:15px 20px;border-right:1px solid var(--line)}.dashboard>div:last-child{border:0}.dashboard span,.panel-heading>span,.cell-caption,.game-footer{font:700 9px/1.5 'Courier New',monospace;letter-spacing:1px}.dashboard span{display:block;color:var(--muted)}.dashboard strong{display:block;font-size:29px;letter-spacing:-1px;margin-top:5px;font-variant-numeric:tabular-nums}.dashboard small{font-size:13px;color:var(--muted);font-weight:400}.main-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(250px,1fr);gap:22px}.production,.orders-panel,.recipe-panel,.dispatch-panel{background:#fffdf7;border:1px solid var(--line);border-radius:12px;overflow:hidden;min-width:0}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:17px 20px;border-bottom:1px solid var(--line)}.panel-heading h2{font-size:14px;margin:0;letter-spacing:-.2px}.panel-heading>span{font-size:8px;color:var(--muted);text-align:right}.cell-view{background:radial-gradient(ellipse at 50% 30%,#204d50,#102b31);position:relative;padding-top:5px}.cell-art{display:block;width:100%;height:auto;max-height:290px}.cell-caption{display:flex;align-items:center;gap:7px;color:#b4d4bd;padding:0 20px 14px;font-size:8px}.cell-caption>span:last-child{margin-left:auto;color:#81a7a0}.live-dot{display:inline-block;width:6px;height:6px;background:#b9d59a;border-radius:50%}.stations{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line)}.station{padding:14px 12px;border-right:1px solid var(--line);min-width:0}.station:last-child{border-right:0}.station h3{font-size:12px;margin:0 0 5px}.station-meta{font-size:10px;color:var(--muted);line-height:1.6}.station-progress{height:4px;background:#e6eadf;border-radius:10px;overflow:hidden;margin:9px 0}.station-progress i{display:block;height:100%;background:#579e80;transition:width .15s}.station small{display:block;font-size:10px;min-height:14px;color:#4e7465}.station small.warning{color:#ad4e30}.station button{font-size:10px;padding:8px 6px;width:100%;min-height:37px;margin-top:9px}.factory-actions{display:flex;gap:10px;padding:14px 18px 0}.factory-actions button{flex:1;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:8px}.factory-actions small{font-weight:400;font-size:10px}.feedback{font-size:12px;color:#567267;padding:0 18px;min-height:32px;line-height:1.5}.orders-panel .panel-note{padding:0 20px}.panel-note{font-size:12px;line-height:1.6;color:var(--muted);margin:12px 0}.order{padding:16px 20px;border-bottom:1px solid var(--line);border-left:3px solid transparent}.order.membrane{border-left-color:#748fa8}.order.lysosome{border-left-color:#b190b2}.order.secretion{border-left-color:#d5a353}.order-title{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}.order-title strong{font-size:20px}.order p{font-size:11px;color:var(--muted);margin:5px 0 0;line-height:1.6}.order .demand-track{height:4px;background:#e9ebdf;margin:10px 0 0}.demand-track i{display:block;height:100%;background:#79a993}.energy-note{display:flex;gap:10px;padding:17px 20px}.energy-note>span{font-size:23px}.energy-note p{margin:0;font-size:11px;color:var(--muted);line-height:1.7}.energy-note strong{display:block;color:var(--ink)}.control-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:22px}.control-grid .panel-note{padding:0 20px}.recipe-buttons,.destination-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;padding:0 20px 18px}.recipe-buttons button,.destination-buttons button{padding:13px 8px;font-size:12px;min-height:57px}.recipe-buttons small{display:block;font-size:10px;color:var(--muted);font-weight:400;margin-top:4px}.recipe-buttons button:nth-child(1){background:#e8eef1}.recipe-buttons button:nth-child(2){background:#f0e8f0}.recipe-buttons button:nth-child(3){background:#f6ecd5}.destination-buttons{padding-bottom:0}.cargo{margin:16px 20px;color:var(--muted);font-size:13px;min-height:20px}.cargo.ready{color:#37644c;font-weight:700}.game-footer{display:flex;justify-content:space-between;gap:15px;padding:24px 0;color:var(--muted);font-size:9px}.game-footer b{color:var(--ink);font-size:12px;margin-left:6px}dialog{width:min(650px,calc(100% - 24px));max-height:calc(100dvh - 28px);overflow:auto;border:1px solid #bed0c0;border-radius:17px;color:var(--ink);background:#f7f8ee;padding:28px;box-shadow:0 25px 90px #05191966}dialog::backdrop{background:#0b262ab3;backdrop-filter:blur(5px)}dialog h2{font-size:38px;line-height:1.1;letter-spacing:-1.5px;margin:10px 0 20px;font-family:Georgia,serif;font-weight:400}dialog h3{font-size:16px;margin-top:22px}dialog p,dialog li{font-size:13px;line-height:1.7}dialog ul,dialog ol{padding-left:19px}.primary{background:#285d4c;color:#fff;border-color:#285d4c;display:flex;justify-content:space-between;align-items:center;width:100%;min-height:48px;margin-top:20px}.primary:hover:not(:disabled){background:#1e493d;color:#fff}.text-button{display:block;border:0;background:transparent;font-size:12px;margin:10px auto 0;text-decoration:underline}.close{position:absolute;right:12px;top:5px;border:0;background:transparent;font-size:22px;padding:2px 9px}.fine-print{color:var(--muted);font-size:11px!important;border-top:1px solid var(--line);padding-top:13px}.welcome-dialog{width:min(940px,calc(100% - 24px));padding:0}.welcome-dialog[open]{display:grid;grid-template-columns:1fr 1fr}.welcome-art{position:relative;min-height:460px;background:#123437}.welcome-art img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover}.welcome-art>span{position:absolute;bottom:20px;left:20px;right:15px;font:700 9px/1.4 'Courier New',monospace;letter-spacing:1.4px;color:#fff;text-shadow:0 1px 10px #000}.welcome-copy{padding:32px}.welcome-copy h2{font-size:43px}.welcome-copy ol{color:var(--muted);font-size:12px}.welcome-copy li{margin:7px 0}.welcome-dialog>.marsnut-dialog-nav{grid-column:1/-1;margin:12px}.result-score{font-size:64px;letter-spacing:-3px;display:block;color:#2f7156}.result-line{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 0;font-size:13px}.result-line b{font-variant-numeric:tabular-nums}
@media(max-width:1050px){.factory-shell{width:calc(100% - 40px)}.main-grid{grid-template-columns:minmax(0,1fr) 235px;gap:15px}.dashboard>div{padding:14px}.panel-heading{padding:15px}.factory-actions{flex-wrap:wrap}.factory-actions button{min-width:180px}.station{padding:12px 8px}.control-grid{gap:15px}.recipe-buttons,.destination-buttons{padding-left:14px;padding-right:14px}.game-heading{align-items:flex-start}.top-controls{justify-content:flex-end;max-width:250px}}
@media(max-width:760px){.main-grid{grid-template-columns:1fr}.orders-panel #orders{display:grid;grid-template-columns:repeat(3,1fr)}.order{padding:12px;border-bottom:0}.order-title{flex-direction:column;align-items:flex-start;font-size:11px}.energy-note{border-top:1px solid var(--line)}.control-grid{grid-template-columns:1fr}.dashboard{grid-template-columns:repeat(3,1fr)}.dashboard>div{border-bottom:1px solid var(--line)}.dashboard>div:nth-child(3){border-right:0}.dashboard>div:nth-child(n+4){border-bottom:0}.dashboard strong{font-size:25px}.wave{grid-column:2/4}.game-heading{flex-direction:column;gap:18px}.top-controls{max-width:none;justify-content:flex-start}.cell-caption{font-size:7px}.game-footer{font-size:8px}.welcome-dialog[open]{grid-template-columns:1fr}.welcome-art{min-height:185px;max-height:185px}.welcome-art img{object-position:center 45%}.welcome-copy{padding:24px}.welcome-copy h2{font-size:35px}.welcome-copy ol{margin-bottom:12px}.welcome-dialog>.marsnut-dialog-nav{margin:9px}dialog{padding:20px}dialog h2{font-size:32px}}
@media(max-width:420px){.factory-shell{width:calc(100% - 24px)}.dashboard span{font-size:8px;letter-spacing:.5px}.dashboard>div{padding:12px 10px}.stations{grid-template-columns:repeat(2,minmax(0,1fr))}.station:nth-child(-n+2){border-bottom:1px solid var(--line)}.station:nth-child(2){border-right:0}.cell-caption>span:last-child{display:none}.cell-view{padding-top:14px}.cell-art{min-height:125px}.panel-heading h2{font-size:13px}.panel-heading>span{font-size:7px}.recipe-buttons,.destination-buttons{gap:6px;padding-left:10px;padding-right:10px}.recipe-buttons button,.destination-buttons button{font-size:11px}.factory-actions{padding-left:12px;padding-right:12px}.order{padding:10px 8px}.game-footer{flex-direction:column;gap:5px}.welcome-copy{padding:20px}.welcome-copy h2{font-size:32px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media(max-width:760px){.factory-shell{display:flex;flex-direction:column}.game-heading{order:0}.dashboard{order:1}.control-grid{order:2;margin-top:0;margin-bottom:18px}.main-grid{order:3}.game-footer{order:4}}
/* Activity stays tied to live processing slots; paused shifts freeze in place. */
.organelle{transform-box:fill-box;transform-origin:center;--activity-color:#b3db9b}
.activity-halo{fill:none;stroke:var(--activity-color);stroke-width:1.5;stroke-dasharray:4 7;opacity:0;pointer-events:none}
.organelle.is-processing .activity-halo,.organelle.is-ready .activity-halo{opacity:.55}
.organelle.is-blocked .activity-halo{opacity:.55;stroke:#e7b96e;stroke-dasharray:2 6}
.organelle.has-fault .activity-halo{opacity:.85;stroke:#f1a177;stroke-width:2;stroke-dasharray:none}
#organelle-nucleus.is-processing{animation:nucleus-breathe 2.2s ease-in-out infinite}
#organelle-ribosome.is-processing{animation:ribosome-work .62s ease-in-out infinite}
#organelle-er.is-processing{animation:er-fold 1.5s ease-in-out infinite}
#organelle-golgi.is-processing{animation:golgi-pack 1.8s ease-in-out infinite}
#organelle-vesicle.is-ready{animation:vesicle-float 2.4s ease-in-out infinite}
.cell-art.is-paused .organelle{animation-play-state:paused!important}
.organelle-statuses{font:700 8px Arial,sans-serif;letter-spacing:.7px;fill:#87aaa2}
.organelle-statuses text[data-state="processing"],.organelle-statuses text[data-state="ready"]{fill:#c0e4a9}
.organelle-statuses text[data-state="blocked"],.organelle-statuses text[data-state="fault"]{fill:#f1bb86}
@keyframes nucleus-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.035)}}
@keyframes ribosome-work{0%,100%{transform:translate(0,0) rotate(0)}25%{transform:translate(-1.5px,-1px) rotate(-1.2deg)}75%{transform:translate(1.5px,1px) rotate(1.2deg)}}
@keyframes er-fold{0%,100%{transform:scale(1,1)}50%{transform:scale(1.025,.97) translateY(1px)}}
@keyframes golgi-pack{0%,100%{transform:translateY(0) scaleY(1)}50%{transform:translateY(-2px) scaleY(.97)}}
@keyframes vesicle-float{0%,100%{transform:translate(0,0)}50%{transform:translate(2px,-4px)}}
@media(prefers-reduced-motion:reduce){.cell-art .organelle{animation:none!important;transform:none!important}}
