:root{--bg: #070b10;--surface: #0b1218;--surface-2: #101a22;--surface-3: #14222c;--border: rgba(123, 177, 204, .2);--border-strong: rgba(132, 194, 222, .38);--text: #8da6b6;--text-h: #e8f6fc;--accent: #59d8ff;--accent-rgb: 89, 216, 255;--accent-dim: rgba(89, 216, 255, .11);--team-a: #38bdf8;--team-b: #ef4444;--bounds-wall: #c084fc;--wall: var(--bounds-wall);--half-wall: #22c55e;--float-wall: #fbbf24;--warning: #fbbf24;--danger: #f87171;--sans: Inter, system-ui, "Segoe UI", Roboto, sans-serif;--display: Oxanium, "Arial Narrow", "Roboto Condensed", var(--sans);color-scheme:dark;font:14px/1.45 var(--sans);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizeLegibility}*,*:before,*:after{box-sizing:border-box}html,body,#app{margin:0;height:100%}body{background:linear-gradient(rgba(var(--accent-rgb),.018) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--accent-rgb),.018) 1px,transparent 1px),radial-gradient(ellipse 70% 50% at 50% -10%,rgba(var(--accent-rgb),.08),transparent),var(--bg);background-size:32px 32px,32px 32px,auto,auto}.app{display:grid;grid-template-columns:280px 1fr 240px;height:100%;min-height:0}@media(max-width:960px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}}.panel{position:relative;display:flex;flex-direction:column;gap:14px;padding:16px;background:#0b1218f7;border-right:1px solid var(--border);overflow:auto;min-height:0;scrollbar-width:thin;scrollbar-color:rgba(var(--accent-rgb),.36) rgba(var(--accent-rgb),.05)}.panel:before{content:"";position:absolute;z-index:2;top:0;left:16px;width:72px;height:2px;background:var(--accent);box-shadow:0 0 9px rgba(var(--accent-rgb),.3);pointer-events:none}.panel--right{border-right:none;border-left:1px solid var(--border)}.panel--right:before{right:16px;left:auto;width:48px}.file-section--right{margin-top:auto;padding-top:12px;border-top:1px solid var(--border)}.file-section--right .btn-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.file-section--right .btn-row button{width:100%;padding-inline:6px;gap:3px;font-size:.8rem}.file-section--right .button-icon{width:13px;height:13px}.brand{position:relative;margin:0;padding:4px 0 12px;border-bottom:1px solid var(--border)}.brand-kicker{margin:0 0 7px;font-family:var(--display);font-size:.52rem;font-weight:650;letter-spacing:.22em;text-transform:uppercase;color:var(--accent)}.brand-title-row{display:flex;align-items:center;gap:9px}.brand-signal{width:7px;height:7px;flex:0 0 auto;background:var(--accent);box-shadow:0 0 8px rgba(var(--accent-rgb),.65);clip-path:polygon(2px 0,100% 0,100% calc(100% - 2px),calc(100% - 2px) 100%,0 100%,0 2px)}.brand-title{margin:0;font-family:var(--display);font-size:1.24rem;font-weight:650;line-height:1;letter-spacing:.09em;text-transform:uppercase;color:var(--text-h)}.section{display:flex;flex-direction:column;gap:8px}.section-title{display:flex;align-items:center;gap:7px;margin:0;font-family:var(--display);font-size:.57rem;font-weight:650;letter-spacing:.17em;text-transform:uppercase;color:var(--text)}.section-title:before{content:"";width:14px;height:1px;flex:0 0 auto;background:var(--accent);box-shadow:0 0 6px rgba(var(--accent-rgb),.32)}.section-title:after{content:"";height:1px;flex:1 1 auto;background:var(--border)}label.field{display:flex;flex-direction:column;gap:4px;font-family:var(--display);font-size:.61rem;font-weight:620;letter-spacing:.09em;text-transform:uppercase}label.field span{color:var(--text)}.field--description{margin-bottom:0}.robo-divider{display:block;height:5px;margin-block:1px}.robo-divider:after{content:"";display:block;width:100%;height:1px;background:linear-gradient(90deg,var(--border-strong),var(--border) 72%,transparent)}.field-label{display:inline-flex;align-items:center;gap:5px}.field-label .button-icon{width:14px;height:14px;color:var(--accent)}input[type=text],input[type=number],select,textarea{width:100%;padding:8px 10px;font:500 .86rem/1.35 var(--sans);color:var(--text-h);background:#050a0fd6;border:1px solid var(--border);border-left:2px solid rgba(132,194,222,.25);border-radius:0;outline:none;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px);transition:border-color .12s ease,background .12s ease}textarea{min-height:4.5rem;resize:vertical;line-height:1.4}input:focus,select:focus,textarea:focus{border-color:var(--accent);background:#091921e6;box-shadow:none}select:disabled{opacity:.65;cursor:not-allowed}.mirror-mode-field{margin-top:4px}.hint.mirror-lock-hint--required{color:var(--danger)}.hint.mirror-lock-hint--locked{color:var(--warning)}select.mirror-mode-select--flash{animation:mirror-mode-required-flash .7s ease-out}@keyframes mirror-mode-required-flash{0%,to{border-color:var(--border);box-shadow:none}25%,70%{border-color:var(--danger);box-shadow:0 0 0 5px #f8717147;background:#7f1d1d38}}.row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.btn-row{display:flex;flex-wrap:wrap;gap:8px}button,.btn{font:650 .68rem/1 var(--display);letter-spacing:.075em;text-transform:uppercase;cursor:pointer;border-radius:0;border:1px solid var(--border);border-left:2px solid rgba(132,194,222,.3);background:var(--surface-2);color:var(--text-h);padding:8px 12px;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px);transition:border-color .12s ease,background .12s ease,transform .12s ease}button:hover,.btn:hover{border-color:rgba(var(--accent-rgb),.48);border-left-color:var(--accent);background:color-mix(in srgb,var(--surface-2) 88%,var(--accent) 12%)}button.primary{background:var(--accent);border-color:#9be9ff;color:#061016}button.primary:hover{background:#8be4ff;border-left-color:#d2f6ff}button.danger{color:#fecaca;border-color:#f8717166}button.active{border-color:var(--accent);border-left-color:var(--accent);background:var(--accent-dim);color:#c9f3ff;box-shadow:inset 3px 0 rgba(var(--accent-rgb),.22)}button:focus-visible,.btn:focus-visible{outline:1px solid var(--accent);outline-offset:3px}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}.button-with-icon{display:inline-flex;align-items:center;justify-content:center;gap:6px}.button-icon{width:16px;height:16px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.icon-button{display:inline-grid;place-items:center;flex:0 0 auto;padding:4px}.icon-button .button-icon{width:14px;height:14px}.wall-budget{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-radius:0;background:#050a0fc7;border:1px solid var(--border);border-left:2px solid rgba(var(--accent-rgb),.38);clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}.wall-budget-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;font-family:var(--display);font-size:.59rem;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--text)}.wall-budget-count{font-variant-numeric:tabular-nums;font-weight:700;color:var(--text-h)}.wall-budget-track{height:5px;border-radius:0;background:var(--surface-2);border:1px solid var(--border);overflow:hidden}.wall-budget-fill{height:100%;width:0%;border-radius:0;background:linear-gradient(90deg,#087fa7,var(--accent));box-shadow:0 0 8px rgba(var(--accent-rgb),.34);transition:width .15s ease,background .15s ease}.wall-budget--warn .wall-budget-fill{background:linear-gradient(90deg,#d97706,#fbbf24)}.wall-budget--warn .wall-budget-count{color:#fbbf24}.wall-budget--full .wall-budget-fill{background:linear-gradient(90deg,#dc2626,var(--danger))}.wall-budget--full .wall-budget-count{color:var(--danger)}.wall-budget--full{border-color:#f8717173}.tools{display:grid;grid-template-columns:1fr 1fr;gap:8px}#wallTools .wall-tool-primary,#wallTools #clearWalls,.tools--hints #clearHints{grid-column:1 / -1}.tools button{width:100%}.tool-separator{grid-column:1 / -1;height:1px;margin:4px 0 0;background:var(--border-strong)}#wallTools [data-tool=wall] .button-icon{color:var(--wall)}#wallTools [data-tool=halfwall] .button-icon{color:var(--half-wall)}#wallTools [data-tool=floatwall] .button-icon{color:var(--float-wall)}#wallTools [data-tool=erase] .button-icon,#hintTools [data-hint-tool=erase] .button-icon{color:var(--danger)}.hint{margin:0;font-size:.8rem;line-height:1.45;color:var(--text)}.hint code{font-size:.85em;color:var(--accent);background:var(--accent-dim);padding:1px 5px;border-radius:0;clip-path:polygon(3px 0,100% 0,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%,0 3px)}.legend{display:flex;flex-direction:column;gap:6px;font-size:.76rem}.legend-item{display:flex;align-items:center;gap:8px}.swatch{width:12px;height:12px;border-radius:0;flex-shrink:0;clip-path:polygon(3px 0,100% 0,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%,0 3px)}.swatch--a{background:var(--team-a)}.swatch--b{background:var(--team-b)}.swatch--door{background:linear-gradient(90deg,var(--team-a) 0 50%,var(--team-b) 50% 100%)}.swatch--wall{background:var(--wall)}.swatch--halfwall{background:transparent;border:2px dashed var(--half-wall)}.swatch--floatwall{background:transparent;border:2px dashed var(--float-wall)}.swatch--bounds{background:transparent;border:2px solid var(--bounds-wall)}.swatch--closed{background:#0f1420e6;border:1px solid rgba(148,163,184,.35)}.wall-kind{display:inline-block;min-width:1.1em;margin-right:4px;font-style:normal;font-weight:700;font-size:.75rem;opacity:.85}.wall-kind--full{color:var(--wall)}.wall-kind--half{color:var(--half-wall)}.wall-kind--float{color:var(--float-wall)}.canvas-wrap{position:relative;min-height:0;display:flex;flex-direction:column;background:#060a0f}.center-mode-tabs{position:relative;display:flex;align-items:center;justify-content:center;gap:4px;padding:9px 12px;border-bottom:1px solid var(--border);background:#0b1218fa}.center-mode-tabs:before,.center-mode-tabs:after{content:"";position:absolute;top:50%;width:clamp(24px,8vw,96px);height:1px;background:linear-gradient(90deg,transparent,rgba(var(--accent-rgb),.3))}.center-mode-tabs:before{right:calc(50% + 106px)}.center-mode-tabs:after{left:calc(50% + 106px);transform:rotate(180deg)}.center-mode-tabs button{min-width:92px;padding:7px 18px}.center-mode-panel{flex:1;min-height:0;position:relative}.center-mode-panel--build{display:flex;flex-direction:column}.center-mode-panel--play{overflow:hidden;background:#07090e}.center-mode-panel--play[hidden],.center-mode-panel--build[hidden]{display:none}#playtestFrame{display:block;width:100%;height:100%;border:0;background:#07090e}.playtest-status{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:grid;place-items:center;padding:24px 32px;color:var(--text-h);background:#07090e;pointer-events:none;text-align:center}.playtest-status--error{pointer-events:auto;color:var(--danger);line-height:1.5}.playtest-status[hidden]{display:none}.canvas-host{flex:1;min-height:0;position:relative;cursor:crosshair;box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.035)}.canvas-host.tool-erase{cursor:cell}.canvas-host.tool-select{cursor:pointer}.canvas-host.tool-resize{cursor:grab}.canvas-host.tool-resize-active{cursor:grabbing}body.tab-setup .canvas-host{cursor:default}canvas#map{display:block;width:100%;height:100%}.errors{margin:0;padding:10px 12px;border-radius:0;background:#f871711a;border:1px solid rgba(248,113,113,.35);color:#fecaca;font-size:.8rem;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}.wall-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:220px;overflow:auto}.wall-inventory,.hint-inventory{margin-top:4px;padding-top:10px;border-top:1px solid var(--border)}.wall-list li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border-radius:0;background:#050a0fc7;border:1px solid var(--border);border-left:2px solid transparent;font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--text);cursor:pointer;clip-path:polygon(5px 0,100% 0,100% calc(100% - 5px),calc(100% - 5px) 100%,0 100%,0 5px)}.wall-list li.selected,.wall-list li:hover{border-color:var(--accent);border-left-color:var(--accent);background:var(--accent-dim);color:var(--text-h)}.wall-list button{padding:3px;font-size:.7rem}.muted{color:var(--text);font-size:.8rem;margin:0}.tabs{display:grid;grid-template-columns:.9fr .9fr 1.2fr;gap:6px}.tabs button{width:100%;min-height:38px;padding:6px 5px;font-size:.61rem;font-weight:650;letter-spacing:.08em;white-space:nowrap}.tab-panel[hidden],.tab-panel--setup[hidden],.tab-panel--walls[hidden],.tab-panel--hints[hidden]{display:none!important}.tools--hints{grid-template-columns:1fr 1fr}.hint-filters{margin-top:12px;padding:10px 12px;border-radius:0;background:#050a0fc7;border:1px solid var(--border);border-left:2px solid rgba(var(--accent-rgb),.25);clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}.hint-filters-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-family:var(--display);font-size:.6rem;font-weight:650;letter-spacing:.11em;text-transform:uppercase;color:var(--text-h)}.hint-filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px}.hint-filter{display:flex;align-items:center;gap:6px;font-size:.74rem;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}.hint-filter input{accent-color:var(--accent);border-radius:0}button.linkish{background:transparent;border:none;color:var(--accent);padding:0 4px;font-size:.58rem;font-weight:650;cursor:pointer;letter-spacing:.08em;text-decoration:none;clip-path:none}button.linkish.button-with-icon{gap:3px}button.linkish .button-icon{width:13px;height:13px}button.linkish:hover{color:var(--text-h)}.warnings{margin-top:8px;font-size:.78rem;color:#fbbf24;min-height:0}.warnings:empty{display:none}.errors:empty{display:none}.hint-kind{font-style:normal;font-weight:700;margin-right:4px}.hint-kind--nudge{color:#a78bfa}.hint-kind--camp{color:#ef4444}.hint-kind--sprint{color:#22c55e}.hint-kind--spawn{color:#38bdf8}.hint-kind--stuck{color:#e879f9}.team-tag{display:inline-block;font-size:.65rem;font-weight:800;padding:0 5px;border-radius:0;margin-right:4px;vertical-align:middle;clip-path:polygon(3px 0,100% 0,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%,0 3px)}.team-tag--A{color:#0c4a6e;background:var(--team-a)}.team-tag--B{color:#831843;background:var(--team-b)}.swatch--hint-nudge{background:#a78bfa3d;border:2px solid #a78bfa}.swatch--hint-camp{background:transparent;border:2px solid #ef4444;position:relative}.swatch--hint-sprint{background:#22c55e59;border:1.5px dashed #22c55e}.swatch--hint-stuck{background:#e879f94d;border:1.5px solid #e879f9;border-radius:50%}
