:root{--bg:#07071a;--bg-2:#0f0f28;--panel:#1a0f38;--play:#1a1f3f;--play-dark:#05050f;--neon:#00f0ff;--hot:#ff2e9a;--gold:gold;--green:#35ff69;--red:#ff2e5a;--purple:#b855ff;--text:#f2f4ff;--dim:#6b72a8;--dim-2:#38406b}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:VT323,monospace;font-size:18px;overflow:hidden}body:after{content:"";pointer-events:none;z-index:9999;background:repeating-linear-gradient(0deg,#0000 0 2px,#00000038 2px 3px);position:fixed;top:0;bottom:0;left:0;right:0}body:before{content:"";pointer-events:none;z-index:9998;background:radial-gradient(#0000 40%,#00000073 100%);position:fixed;top:0;bottom:0;left:0;right:0}@keyframes blink-slow{50%{opacity:.35}}@keyframes blink-fast{50%{opacity:.4}}.app{grid-template-columns:320px 1fr;height:100vh;display:grid;position:relative}.sidebar{background:var(--bg-2);border-right:3px solid var(--neon);z-index:2;flex-direction:column;gap:18px;padding:22px 20px;display:flex;position:relative;overflow-y:auto;box-shadow:4px 0 24px #00f0ff26}.logo{border-bottom:2px dashed var(--dim-2);padding-bottom:14px}.logo-mark{grid-template-columns:repeat(4,14px);gap:2px;margin-bottom:10px;display:grid}.logo-mark .cell{width:14px;height:14px;position:relative}.logo-mark .cell.i{background:var(--neon);box-shadow:inset -2px -2px #00000080,inset 2px 2px #ffffff59,0 0 6px #00f0ffb3}.logo-mark .cell:nth-child(2){background:var(--hot);box-shadow:inset -2px -2px #00000080,inset 2px 2px #ffffff59,0 0 6px #ff2e9ab3}.logo-mark .cell:nth-child(3){background:var(--gold);box-shadow:inset -2px -2px #00000080,inset 2px 2px #ffffff59,0 0 6px #ffd700b3}.logo-mark .cell:nth-child(4){background:var(--green);box-shadow:inset -2px -2px #00000080,inset 2px 2px #ffffff59,0 0 6px #35ff69b3}.logo h1{color:var(--neon);text-shadow:0 0 6px var(--neon), 0 0 14px #00f0ff80, 3px 3px 0 var(--hot);letter-spacing:1px;font-family:VT323,monospace;font-size:22px;line-height:1.15}.logo h1 .dot{color:var(--hot);text-shadow:0 0 8px var(--hot);animation:1.2s steps(2,end) infinite blink-fast}.logo .subtitle{color:var(--gold);letter-spacing:1.5px;text-shadow:0 0 4px #ffd70099;margin-top:10px;font-family:VT323,monospace;font-size:14px;animation:2s steps(2,end) infinite blink-slow}.section-title{color:var(--gold);letter-spacing:1px;text-shadow:0 0 4px #ffd70080;align-items:center;gap:8px;margin-bottom:10px;font-family:VT323,monospace;font-size:14px;display:flex}.section-title:after{content:"";background:repeating-linear-gradient(90deg, var(--dim-2) 0, var(--dim-2) 3px, transparent 3px, transparent 6px);flex:1;height:2px}.mode-switch{background:var(--play-dark);border:2px solid var(--dim-2);grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.mode-btn{color:var(--dim);cursor:pointer;letter-spacing:.5px;background:0 0;border:none;place-items:center;min-height:42px;padding:10px 6px;font-family:VT323,monospace;font-size:14px;transition:all .1s;display:grid;position:relative}.mode-btn .mode-stage{color:currentColor;opacity:.7;font-family:VT323,monospace;font-size:14px;position:absolute;top:4px;left:6px}.mode-btn .mode-icon{place-items:center;width:24px;height:24px;display:grid}.mode-btn .mode-icon svg{width:22px;height:22px;display:block}.mode-btn:hover{color:var(--text)}.mode-btn.active{background:var(--neon);color:var(--bg);box-shadow:0 0 14px #00f0ffb3}.mode-btn.active .mode-stage{opacity:.9}.tool-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.icon-toolbar{grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:8px;display:grid}.icon-toolbar.compact{grid-template-columns:1fr 1fr}.icon-btn{background:var(--play-dark);border:2px solid var(--dim-2);color:var(--dim);letter-spacing:.5px;cursor:pointer;flex-direction:column;align-items:center;gap:4px;padding:7px 4px 6px;font-family:VT323,monospace;font-size:14px;transition:all 80ms;display:flex}.icon-btn .icon-slot{place-items:center;width:22px;height:22px;display:grid}.icon-btn .icon-slot svg{width:18px;height:18px;display:block}.icon-btn .icon-label{text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;line-height:1.1;overflow:hidden}.icon-btn:hover{border-color:var(--neon);color:var(--neon);text-shadow:0 0 5px var(--neon);transform:translateY(-1px);box-shadow:0 0 8px #00f0ff40}.icon-btn:active{transform:translateY(1px)}.icon-btn.active{background:var(--neon);color:var(--bg);border-color:var(--neon);text-shadow:none;box-shadow:0 0 14px #00f0ff99}.icon-btn.active:hover{color:var(--bg);text-shadow:none}.icon-btn.danger{color:var(--red);border-color:#ff2e5a99}.icon-btn.danger:hover{border-color:var(--red);color:var(--red);text-shadow:0 0 5px var(--red);box-shadow:0 0 10px #ff2e5a59}.btn.with-icon{justify-content:center;align-items:center;gap:7px;display:inline-flex}.btn-icon{place-items:center;width:14px;height:14px;display:grid}.btn-icon svg{width:12px;height:12px;display:block}.btn{background:var(--play-dark);border:2px solid var(--dim-2);color:var(--text);cursor:pointer;letter-spacing:.8px;padding:10px 8px;font-family:VT323,monospace;font-size:14px;transition:all 80ms;position:relative}.btn:hover{border-color:var(--neon);color:var(--neon);text-shadow:0 0 6px var(--neon);transform:translateY(-1px)}.btn:active{transform:translateY(1px)}.btn.active{background:var(--neon);color:var(--bg);border-color:var(--neon);box-shadow:0 0 14px #00f0ff99}.btn.danger{color:var(--red);border-color:#ff2e5a80}.btn.danger:hover{border-color:var(--red);color:var(--red);text-shadow:0 0 6px var(--red);box-shadow:0 0 12px #ff2e5a66}.btn.armed{background:var(--red);color:var(--bg);border-color:var(--red);text-shadow:none;animation:.4s steps(2,end) infinite blink-fast;box-shadow:0 0 16px #ff2e5ae6}.btn-full{grid-column:1/-1}.rooms-list{grid-template-columns:1fr 1fr;gap:6px;display:grid}.room-tile{background:var(--play-dark);border:2px solid var(--dim-2);cursor:pointer;text-align:left;color:var(--text);padding:8px 8px 6px;font-family:VT323,monospace;transition:all .1s;position:relative}.room-tile:hover{border-color:var(--neon);transform:translateY(-1px)}.room-tile.active{border-color:var(--hot);background:var(--panel);box-shadow:0 0 14px #ff2e9a8c}.room-tile .swatch{border:1px solid #00000059;width:100%;height:10px;margin-bottom:6px}.room-tile .name{letter-spacing:.4px;color:var(--text);margin-bottom:4px;font-family:VT323,monospace;font-size:14px;line-height:1.2}.room-tile .size{color:var(--gold);text-shadow:0 0 4px #ffd70066;font-family:VT323,monospace;font-size:15px;line-height:1}.stats{background:var(--play-dark);border:2px solid var(--gold);padding:16px 14px 14px;position:relative;box-shadow:0 0 14px #ffd70040,inset 0 0 20px #ffd7000f}.stats-badge{background:var(--bg-2);color:var(--gold);text-shadow:0 0 5px var(--gold);letter-spacing:1px;padding:1px 8px;font-family:VT323,monospace;font-size:14px;position:absolute;top:-9px;left:10px}.stat-row{justify-content:space-between;align-items:baseline;margin-bottom:7px;display:flex}.stat-row .label{color:var(--dim);letter-spacing:1px;font-family:VT323,monospace;font-size:14px}.stat-row .value{color:var(--gold);text-shadow:0 0 8px #ffd70099;font-family:VT323,monospace;font-size:22px;line-height:1}.stat-row.hero .value{color:var(--neon);text-shadow:0 0 10px var(--neon);font-size:28px}.progress{background:var(--play-dark);border:2px solid var(--dim-2);height:10px;margin-top:6px;padding:1px}.progress-bar{background:var(--green);height:100%;box-shadow:0 0 8px var(--green);transition:width .2s}.canvas-area{background:radial-gradient(ellipse at 30% 30%, #ff2e9a14, transparent 55%), radial-gradient(ellipse at 70% 70%, #00f0ff14, transparent 55%), var(--bg);justify-content:center;align-items:center;padding:36px;display:flex;position:relative;overflow:auto}.canvas-area:before{content:"";background-image:radial-gradient(1px 1px at 23% 18%, white, transparent 50%), radial-gradient(1px 1px at 77% 45%, var(--neon), transparent 50%), radial-gradient(1px 1px at 44% 73%, white, transparent 50%), radial-gradient(1px 1px at 12% 82%, var(--hot), transparent 50%), radial-gradient(1px 1px at 88% 12%, white, transparent 50%), radial-gradient(1px 1px at 58% 31%, var(--gold), transparent 50%);opacity:.55;pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.canvas-frame{background:var(--play-dark);border:3px solid var(--neon);z-index:2;padding:18px;position:relative;box-shadow:0 0 28px #00f0ff8c,inset 0 0 24px #00f0ff14}.canvas-frame .bolt{background:var(--hot);width:8px;height:8px;box-shadow:0 0 6px var(--hot);position:absolute}.bolt.tl{top:4px;left:4px}.bolt.tr{top:4px;right:4px}.bolt.bl{bottom:4px;left:4px}.bolt.br{bottom:4px;right:4px}.frame-title{background:var(--bg);color:var(--hot);text-shadow:0 0 6px #ff2e9ab3;letter-spacing:1px;z-index:3;padding:3px 10px;font-family:VT323,monospace;font-size:14px;position:absolute;top:-14px;left:22px}.frame-scale{background:var(--bg);color:var(--neon);text-shadow:0 0 4px var(--neon);letter-spacing:1px;z-index:3;padding:3px 10px;font-family:VT323,monospace;font-size:14px;position:absolute;bottom:-12px;right:22px}.grid-canvas{cursor:crosshair;z-index:1;display:block;position:relative}.grid-canvas.mode-rooms{cursor:cell}.grid-canvas.mode-land-move{cursor:grab}.grid-canvas.mode-land-move:active{cursor:grabbing}.grid-canvas.mode-iso{cursor:default}.grid-canvas.drop-hover{cursor:copy}.canvas-frame:after{content:"";pointer-events:none;z-index:2;background:repeating-linear-gradient(0deg,#0000 0 2px,#0000004d 2px 3px);position:absolute;top:18px;bottom:18px;left:18px;right:18px}.topbar{pointer-events:none;z-index:10;justify-content:space-between;gap:12px;display:flex;position:absolute;top:12px;left:12px;right:12px}.chip{background:var(--bg-2);border:2px solid var(--neon);color:var(--neon);text-shadow:0 0 6px var(--neon);pointer-events:auto;letter-spacing:1px;padding:8px 14px;font-family:VT323,monospace;font-size:14px;box-shadow:0 0 14px #00f0ff66}.chip.rooms{border-color:var(--hot);color:var(--hot);text-shadow:0 0 6px var(--hot);box-shadow:0 0 14px #ff2e9a66}.chip .dot{vertical-align:middle;background:currentColor;width:8px;height:8px;margin-right:8px;animation:1s steps(2,end) infinite blink-fast;display:inline-block;box-shadow:0 0 6px}.credits{background:var(--bg-2);border:2px solid var(--gold);color:var(--gold);text-shadow:0 0 4px var(--gold);letter-spacing:1px;text-align:right;pointer-events:auto;padding:6px 12px;font-family:VT323,monospace;font-size:14px;line-height:1.6;transition:all .12s;box-shadow:0 0 10px #ffd7004d}.credits a{color:inherit;text-decoration:none;transition:all .12s}.credits a.lit{color:var(--green);text-shadow:0 0 4px var(--green)}.credits a.lit:hover{text-shadow:0 0 8px var(--green)}.credits a.gh-link{vertical-align:middle;align-items:center;line-height:0;display:inline-flex}.credits a.gh-link svg{width:12px;height:12px;display:block}.credits a.gh-link:hover{color:var(--neon);filter:drop-shadow(0 0 6px var(--neon))}.hint{pointer-events:none;z-index:10;justify-content:center;display:flex;position:absolute;bottom:72px;left:14px;right:14px}.hint-inner{background:var(--bg-2);border:2px solid var(--gold);color:var(--gold);letter-spacing:1px;text-shadow:0 0 4px #ffd70080;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;max-width:820px;padding:10px 18px;font-family:VT323,monospace;font-size:14px;line-height:1.6;display:flex;box-shadow:0 0 14px #ffd70059}.hint-inner kbd{background:var(--gold);color:var(--bg);text-shadow:none;padding:3px 6px;font-family:VT323,monospace;font-size:14px;box-shadow:0 0 6px #ffd70099}.hint-divider{background:var(--dim-2);width:2px;height:12px}.hint-inner strong{color:var(--neon);text-shadow:0 0 4px var(--neon);font-weight:400}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--dim-2);border:2px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--neon)}.next-piece{background:var(--play-dark);border:2px solid var(--dim-2);grid-template-columns:112px 1fr;align-items:center;gap:10px;padding:10px 10px 12px;display:grid;position:relative}.next-piece-badge{background:var(--bg-2);color:var(--dim);letter-spacing:1px;padding:1px 6px;font-family:VT323,monospace;font-size:14px;position:absolute;top:-8px;right:10px}.next-piece.filled{border-color:var(--hot);box-shadow:0 0 14px #ff2e9a59,inset 0 0 14px #ff2e9a0f}.next-piece.filled .next-piece-badge{color:var(--hot);text-shadow:0 0 5px #ff2e9acc}.next-piece-frame{border:2px solid var(--dim-2);background:#05050f;justify-content:center;align-items:center;width:112px;height:100px;display:flex;position:relative;overflow:hidden}.next-piece-frame:after{content:"";pointer-events:none;background-image:linear-gradient(90deg,#00f0ff14 1px,#0000 1px),linear-gradient(#00f0ff14 1px,#0000 1px);background-size:8px 8px;position:absolute;top:0;bottom:0;left:0;right:0}.piece-grid{z-index:1;gap:0;display:grid;position:relative}.piece-cell{background:var(--piece-color);outline:1px solid #00000073;box-shadow:inset -2px -2px #00000073,inset 2px 2px #ffffff59}.piece-ghost{color:var(--dim-2);text-shadow:0 0 8px #6b72a866;font-family:VT323,monospace;font-size:28px;animation:1.5s steps(2,end) infinite blink-slow}.next-piece-meta{flex-direction:column;gap:6px;min-width:0;display:flex}.next-name{color:var(--neon);text-shadow:0 0 5px var(--neon);letter-spacing:.5px;word-break:break-word;font-family:VT323,monospace;font-size:14px}.next-name.dim{color:var(--dim);text-shadow:none}.next-size{color:var(--gold);text-shadow:0 0 5px #ffd70099;font-family:VT323,monospace;font-size:18px;line-height:1}.canvas-area:after{content:"";pointer-events:none;background:linear-gradient(var(--gold) 0 0) 0 0 / 14px 14px no-repeat, linear-gradient(var(--gold) 0 0) 14px 0 / 14px 14px no-repeat, linear-gradient(var(--gold) 0 0) 0 14px / 14px 14px no-repeat, linear-gradient(var(--gold) 0 0) 14px 14px / 14px 14px no-repeat;opacity:.18;filter:drop-shadow(0 0 4px #ffd70099);z-index:1;width:28px;height:28px;animation:4s steps(2,end) infinite blink-slow;position:absolute;top:48px;right:54px}.bottom-toggles{z-index:11;pointer-events:auto;gap:10px;display:flex;position:absolute;bottom:14px;left:14px}.toggle-group{background:var(--bg-2);border:2px solid var(--dim-2);flex-direction:column;gap:4px;padding:5px 7px 6px;display:flex;position:relative;box-shadow:0 0 10px #0006}.toggle-label{color:var(--dim);letter-spacing:1px;padding-left:1px;font-family:VT323,monospace;font-size:14px}.toggle-buttons{gap:3px;display:flex}.lang-btn,.unit-btn{background:var(--play-dark);border:2px solid var(--dim-2);color:var(--text);letter-spacing:.5px;cursor:pointer;padding:0;font-family:VT323,monospace;transition:all 80ms;position:relative}.lang-btn{flex-direction:column;justify-content:space-between;align-items:center;width:34px;height:30px;padding:4px 0 0;display:flex}.lang-code{color:var(--dim);text-shadow:0 0 4px #6b72a866;font-size:14px;transition:color 80ms}.lang-stripe{opacity:.75;width:100%;height:6px;transition:opacity 80ms;display:block}.lang-btn:hover{border-color:var(--neon);box-shadow:0 0 10px #00f0ff59}.lang-btn:hover .lang-code{color:var(--neon);text-shadow:0 0 6px var(--neon)}.lang-btn:hover .lang-stripe{opacity:1}.lang-btn.active{border-color:var(--neon);background:var(--bg-2);box-shadow:0 0 12px #00f0ff99}.lang-btn.active .lang-code{color:var(--neon);text-shadow:0 0 6px var(--neon)}.lang-btn.active .lang-stripe{opacity:1}.unit-btn{min-width:42px;height:30px;color:var(--dim);padding:0 10px;font-size:14px}.unit-btn:hover{border-color:var(--gold);color:var(--gold);text-shadow:0 0 6px #ffd70099;box-shadow:0 0 10px #ffd7004d}.unit-btn.active{border-color:var(--gold);background:var(--gold);color:var(--bg);text-shadow:none;box-shadow:0 0 12px #ffd700a6}
/*$vite$:1*/