:root{--pcb-deep: #0b2117;--pcb: #123524;--pcb-light: #1d6b45;--copper: #c87533;--copper-dim: #9a5520;--silk: #e8e3d5;--silk-dim: #b9b2a0;--amber: #ffb454;--solder: #aab2bb;--danger: #ff5a4e;--cell: #16432c;--cell-edge: #0e2c1d;--font-disp: "Chakra Petch", sans-serif;--font-mono: "IBM Plex Mono", monospace}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%}body{background:radial-gradient(1200px 600px at 70% -10%,rgba(29,107,69,.35),transparent 60%),var(--pcb-deep);color:var(--silk);font-family:var(--font-disp);overflow-x:hidden;user-select:none;-webkit-user-select:none}#root{min-height:100%}.app{max-width:1100px;margin:0 auto;padding:10px 12px 90px}.hud{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 14px;background:linear-gradient(180deg,#123524e6,#0b2117e6);border:1px solid var(--cell-edge);border-bottom:2px solid var(--copper-dim);border-radius:10px;position:sticky;top:8px;z-index:30;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.logo{font-weight:700;letter-spacing:.12em;font-size:18px;color:var(--silk)}.logo .fab{color:var(--copper)}.logo small{display:block;font-size:9px;letter-spacing:.3em;color:var(--silk-dim);font-weight:500}.lvlbox{flex:1;min-width:160px}.lvlrow{display:flex;justify-content:space-between;font-size:12px;color:var(--silk-dim);font-family:var(--font-mono)}.lvlrow b{color:var(--amber);font-size:13px}.xpbar{height:8px;border-radius:4px;background:var(--pcb-deep);border:1px solid var(--cell-edge);overflow:hidden;margin-top:3px}.xpfill{height:100%;background:linear-gradient(90deg,var(--copper),var(--amber));transition:width .25s}.stat{font-family:var(--font-mono);font-size:15px;display:flex;align-items:center;gap:6px}.stat.clickable{cursor:pointer;padding:4px 8px;border:1px solid transparent;border-radius:8px}.stat.clickable:hover{border-color:var(--cell-edge);background:#69e0ff14}.stat .ico{font-size:16px}.coin{color:var(--amber)}.patent{color:#69e0ff}.btn{font-family:var(--font-disp);font-weight:700;font-size:13px;color:var(--silk);background:var(--pcb-light);border:1px solid var(--copper-dim);border-bottom-width:3px;border-radius:8px;padding:8px 14px;cursor:pointer;letter-spacing:.05em;transition:transform .06s,filter .15s}.btn:active{transform:translateY(2px);border-bottom-width:1px}.btn:disabled{opacity:.45;cursor:default}.btn.copper{background:linear-gradient(180deg,#d98a45,var(--copper));color:#2a1607;border-color:var(--copper-dim)}.btn.ghost{background:transparent;border-color:var(--cell-edge);color:var(--silk-dim)}.btn.danger{background:#6b2a24;border-color:#4a1c18}.btn.small{font-size:11px;padding:5px 9px}.main{display:flex;gap:14px;margin-top:12px;align-items:flex-start}.boardwrap{flex:1;min-width:0}.side{width:320px;flex-shrink:0;display:flex;flex-direction:column;gap:12px}@media (max-width: 860px){.main{flex-direction:column}.side{width:100%}}.board{position:relative;display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:4px;padding:12px;background:linear-gradient(135deg,rgba(200,117,51,.06) 0%,transparent 40%),var(--pcb);border:2px solid var(--cell-edge);border-radius:14px;touch-action:none;background-image:linear-gradient(135deg,rgba(200,117,51,.05) 0%,transparent 40%),repeating-linear-gradient(0deg,transparent 0 22px,rgba(200,117,51,.07) 22px 24px),repeating-linear-gradient(90deg,transparent 0 22px,rgba(200,117,51,.07) 22px 24px)}.cell{aspect-ratio:1;border-radius:8px;background:var(--cell);border:1px solid var(--cell-edge);box-shadow:inset 0 2px 4px #00000059;position:relative;display:flex;align-items:center;justify-content:center}.cell:after{content:"";position:absolute;right:3px;bottom:3px;width:4px;height:4px;border-radius:50%;background:var(--pcb-deep);border:1px solid rgba(200,117,51,.4)}.cell.locked{background:repeating-linear-gradient(45deg,#0d281b 0,#0d281b 6px,#0a2015 6px,#0a2015 12px);border-style:dashed;border-color:#c8753340;box-shadow:none;overflow:hidden}.cell.locked:after{display:none}.cell.buyable{cursor:pointer}.cell.buyable:hover{border-color:var(--copper)}.locklabel{font-family:var(--font-mono);font-size:9px;text-align:center;color:var(--silk-dim);line-height:1.3;pointer-events:none}.locklabel b{color:var(--amber);font-size:10px}.locklabel.toolow,.locklabel.toolow b{color:#6e6a5d}.cell.selected{outline:2px solid var(--amber);outline-offset:1px}.cell.droptarget{outline:2px dashed var(--copper);outline-offset:1px}.cell.willmerge{outline:2px solid var(--amber);outline-offset:-2px}.cell.willmerge .piece{filter:brightness(1.3)}.mergecount{position:absolute;top:-7px;right:-7px;z-index:8;background:var(--amber);color:#2a1607;font-family:var(--font-mono);font-size:11px;font-weight:700;padding:1px 6px;border-radius:9px;pointer-events:none;box-shadow:0 2px 6px #00000080}.cell .piece{width:88%;height:88%;cursor:grab;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 3px 3px rgba(0,0,0,.45));position:relative}.cell .piece.dragging-src{opacity:.25}.cell .piece svg{width:100%;height:100%}.tierdot{position:absolute;left:-2px;top:-2px;font-family:var(--font-mono);font-size:9px;font-weight:600;color:var(--pcb-deep);background:var(--solder);border-radius:4px;padding:0 3px;line-height:1.4;pointer-events:none}.tierdot.max{background:var(--amber)}.genstock{position:absolute;left:2px;right:2px;bottom:-1px;height:5px;border-radius:3px;background:#00000080;overflow:hidden;pointer-events:none}.genstock i{display:block;height:100%;background:var(--amber)}.genbadge{position:absolute;right:-3px;top:-5px;font-family:var(--font-mono);font-size:10px;font-weight:600;background:var(--copper);color:#2a1607;border-radius:8px;padding:0 5px;line-height:1.5;pointer-events:none}.genbadge.empty{background:#4a5560;color:#c8cfd6}.cell .piece.gen{cursor:pointer}.dragghost{position:fixed;z-index:100;pointer-events:none;width:56px;height:56px;transform:translate(-50%,-60%);filter:drop-shadow(0 6px 8px rgba(0,0,0,.5))}@keyframes sparkpop{0%{transform:scale(.4);opacity:1}to{transform:scale(1.9);opacity:0}}.spark{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5;display:flex;align-items:center;justify-content:center}.spark svg{animation:sparkpop .5s ease-out forwards}@keyframes floatxp{0%{transform:translateY(0);opacity:1}to{transform:translateY(-34px);opacity:0}}.floatxp{position:absolute;top:-6px;left:50%;transform:translate(-50%);font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--amber);pointer-events:none;z-index:6;animation:floatxp .9s ease-out forwards;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.8)}.panel{background:linear-gradient(180deg,#123524b3,#0b2117d9);border:1px solid var(--cell-edge);border-radius:12px;padding:12px 14px}.panel h3{margin:0 0 8px;font-size:11px;letter-spacing:.25em;color:var(--copper);font-weight:700;border-bottom:1px solid rgba(200,117,51,.25);padding-bottom:6px}.iteminfo{display:flex;gap:12px;align-items:center}.iteminfo .name{font-weight:700;font-size:15px}.iteminfo .meta{font-family:var(--font-mono);font-size:12px;color:var(--silk-dim);margin-top:2px}.iteminfo .meta b{color:var(--amber)}.hint{font-size:12px;color:var(--silk-dim);line-height:1.7}.shoprow{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 0;border-bottom:1px dashed rgba(232,227,213,.12);font-size:13px}.shoprow:last-child{border-bottom:none}.shoprow .lbl{line-height:1.35}.shoprow .lbl small{display:block;font-family:var(--font-mono);font-size:10px;color:var(--silk-dim)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#050e0ac7;display:flex;align-items:center;justify-content:center;z-index:60;padding:16px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{background:var(--pcb);border:2px solid var(--copper-dim);border-radius:14px;padding:20px;max-width:560px;width:100%;max-height:86vh;overflow-y:auto;box-shadow:0 20px 60px #0009}.modal h2{margin:0 0 4px;font-size:18px;letter-spacing:.08em}.modal h2 span{color:var(--amber)}.modal .sub{font-size:12px;color:var(--silk-dim);margin-bottom:14px}.perkgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media (max-width: 560px){.perkgrid{grid-template-columns:1fr}}.perkcard{background:var(--pcb-deep);border:1px solid var(--cell-edge);border-radius:10px;padding:12px;cursor:pointer;text-align:left;color:var(--silk);font-family:var(--font-disp);transition:border-color .15s,transform .1s}.perkcard:hover{border-color:var(--amber);transform:translateY(-2px)}.perkcard .pname{font-weight:700;font-size:14px;color:var(--amber)}.perkcard .pdesc{font-size:12px;color:var(--silk);margin-top:5px;line-height:1.5}.perkcard .plv{font-family:var(--font-mono);font-size:10px;color:var(--silk-dim);margin-top:7px}.dexgrid{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}@media (max-width: 560px){.dexgrid{grid-template-columns:repeat(4,1fr)}}.dexcell{aspect-ratio:1;border-radius:8px;background:var(--pcb-deep);border:1px solid var(--cell-edge);display:flex;align-items:center;justify-content:center}.dexcell.unknown{filter:grayscale(1) brightness(.4)}.dexlabel{font-size:11px;letter-spacing:.2em;color:var(--copper);margin:10px 0 5px;font-weight:700}.achrow{display:flex;gap:10px;align-items:center;padding:6px 0;font-size:13px;border-bottom:1px dashed rgba(232,227,213,.1)}.achrow .led{width:10px;height:10px;border-radius:50%;background:#3a4048;flex-shrink:0}.achrow.done .led{background:var(--amber);box-shadow:0 0 8px var(--amber)}.achrow small{color:var(--silk-dim);display:block;font-size:11px}.achrow.done .achname{color:var(--amber)}.toasts{position:fixed;bottom:14px;left:50%;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none}@keyframes toastin{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast{background:#0b2117f2;border:1px solid var(--copper-dim);color:var(--silk);border-radius:8px;padding:8px 16px;font-size:13px;animation:toastin .2s ease-out;font-family:var(--font-mono);max-width:90vw}.toast.gold{border-color:var(--amber);color:var(--amber)}.offline-list{font-family:var(--font-mono);font-size:14px;line-height:2}.offline-list b{color:var(--amber)}.footer{text-align:center;margin-top:14px;font-size:10px;color:#e8e3d559;font-family:var(--font-mono);letter-spacing:.1em}
