:root{--bg:#0b0e14;--panel:#141a22;--panel-2:#1b232d;--line:#26303c;--text:#e6edf3;--muted:#8695a7;--accent:#56d4a0;--warn:#f0b429;--cell-size:46px;--rarity-common:#8695a7;--rarity-uncommon:#4cc38a;--rarity-rare:#c08cff;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1100px 520px at 18% -12%, #16202b, var(--bg));color:var(--text);font:14px/1.5 ui-sans-serif,system-ui,Segoe UI,sans-serif}button{font:inherit;color:inherit}.app{grid-template-rows:auto minmax(0,1fr);height:100%;display:grid}.boot{height:100%;color:var(--muted);place-items:center;display:grid}.topbar{border-bottom:1px solid var(--line);backdrop-filter:blur(10px);background:#141a22b8;align-items:center;gap:18px;padding:10px 16px;display:flex}.brand{letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:700}.runbar{align-items:center;gap:8px;display:flex}.speeds{border:1px solid var(--line);border-radius:9px;display:flex;overflow:hidden}.speed{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:6px 10px}.speed.is-active{background:var(--panel-2);color:var(--text)}.ticks{background:var(--panel);border:1px solid var(--line);color:var(--muted);font-variant-numeric:tabular-nums;border-radius:8px;padding:4px 10px}.primary-button,.ghost-button{cursor:pointer;border:1px solid var(--line);border-radius:9px;padding:7px 14px}.primary-button{background:var(--accent);color:#06231a;border-color:#0000;font-weight:600}.ghost-button{background:var(--panel);color:var(--text)}.ghost-button:hover,.speed:hover{border-color:var(--accent)}.notice{border:1px solid var(--warn);max-width:46ch;color:var(--warn);cursor:pointer;text-align:left;background:#f0b4291f;border-radius:8px;margin-left:auto;padding:6px 12px}.columns{grid-template-columns:272px minmax(0,1fr) 336px;gap:14px;min-height:0;padding:14px;display:grid}.column{flex-direction:column;gap:14px;min-height:0;display:flex;overflow:auto}.panel{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:12px 14px}.panel-scroll{flex-direction:column;min-height:0;display:flex;overflow:auto}.panel-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.panel-head h2{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0;font-size:12px}.muted{color:var(--muted);font-size:12px}.hint{color:var(--muted);margin:8px 0 0;font-size:12px}.goal-text{margin:0 0 8px;font-size:15px}.bar{background:var(--panel-2);border-radius:999px;height:8px;overflow:hidden}.bar-fill{background:linear-gradient(90deg, #2f8f6b, var(--accent));border-radius:999px;height:100%;transition:width .2s}.palette{gap:4px;margin:0;padding:0;list-style:none;display:grid}.palette-row{background:var(--panel-2);cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:space-between;align-items:center;width:100%;padding:7px 10px;display:flex}.palette-row:hover:not(:disabled){border-color:var(--accent)}.palette-row.is-selected{border-color:var(--accent);background:#56d4a01f}.palette-row:disabled{opacity:.38;cursor:not-allowed}.palette-count{color:var(--muted);font-variant-numeric:tabular-nums}.relics{gap:6px;margin:0;padding:0;list-style:none;display:grid}.relic{justify-content:space-between;gap:8px;display:flex}.stats{gap:6px;margin:0;display:grid}.stat{justify-content:space-between;gap:8px;display:flex}.stat dt{color:var(--muted)}.stat dd{font-variant-numeric:tabular-nums;margin:0}.grid-scroll{border:1px solid var(--line);background:#0d131a;border-radius:12px;justify-content:center;align-items:flex-start;min-height:0;padding:18px;display:flex;overflow:auto}.grid{gap:4px;display:grid}.cell{width:var(--cell-size);height:var(--cell-size);border:1px solid var(--line);cursor:pointer;background:#101720;border-radius:9px;padding:0;position:relative}.cell-empty{background:#0b1017;border-style:dashed}.cell-filled{--tint:var(--muted);background:color-mix(in srgb, var(--tint) 16%, #101720);border-color:color-mix(in srgb, var(--tint) 45%, var(--line))}.cell-filled[data-kind=Generator]{--tint:#d09a2e}.cell-filled[data-kind=Belt]{--tint:#4d8fa8}.cell-filled[data-kind=Mixer]{--tint:#9a76e8}.cell-filled[data-kind=Inbound]{--tint:#4a7fd4}.cell-filled[data-kind=Outbound]{--tint:#3fa8c0}.cell-filled[data-kind=Distributor]{--tint:#d268a8}.cell-filled[data-kind=Overflow]{--tint:#d4713f}.cell-filled[data-kind=Sell]{--tint:#47b06a}.cell-glyph{color:color-mix(in srgb, var(--tint,var(--muted)) 62%, white);place-items:center;font-size:15px;font-weight:700;display:grid;position:absolute;inset:0}.cell-arrow{color:color-mix(in srgb, var(--tint,var(--muted)) 70%, white);font-size:11px;transition:transform .15s;position:absolute;top:1px;right:4px}.cell-item{color:#08121a;border-radius:50%;place-items:center;width:17px;height:17px;font-size:9px;font-weight:700;display:grid;position:absolute;bottom:3px;left:3px}.cell-slots{gap:2px;display:flex;position:absolute;bottom:4px;right:3px}.cell-slot{border-radius:2px;width:7px;height:7px}.cell-slot-empty{background:#24323f}.cell-badge{color:var(--warn);font-variant-numeric:tabular-nums;font-size:10px;position:absolute;top:1px;left:4px}.cell-ghost{opacity:0;transition:opacity .12s;position:absolute;inset:0}.cell-empty:hover .cell-ghost{opacity:.4}.overlay{z-index:10;backdrop-filter:blur(4px);background:#06090dbd;place-items:center;display:grid;position:fixed;inset:0}.overlay-card{border:1px solid var(--line);background:var(--panel);border-radius:16px;width:min(760px,92vw);max-height:88vh;padding:22px;overflow:auto;box-shadow:0 24px 60px #0000008c}.overlay-card h2{margin:0 0 6px}.offers{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:16px 0 0;padding:0;list-style:none;display:grid}.offer{text-align:left;border:1px solid var(--line);background:var(--panel-2);cursor:pointer;border-radius:12px;gap:6px;width:100%;padding:14px;display:grid}.offer:hover{transform:translateY(-2px)}.offer[data-rarity=Common]{border-color:var(--rarity-common)}.offer[data-rarity=Uncommon]{border-color:var(--rarity-uncommon);box-shadow:inset 0 0 22px #4cc38a1a}.offer[data-rarity=Rare]{border-color:var(--rarity-rare);box-shadow:inset 0 0 26px #c08cff24}.offer-rarity{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:11px}.offer-name{font-size:16px;font-weight:600}.offer-text{color:var(--muted)}.form{gap:10px;width:min(480px,92vw);display:grid}.field{grid-template-columns:1fr 120px;align-items:center;gap:12px;display:grid}.field span{color:var(--muted)}.field input{border:1px solid var(--line);background:var(--panel-2);color:var(--text);font:inherit;border-radius:8px;padding:7px 10px}.form-actions{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}
