.app{--bg-0:rgb(var(--txt-01-rgb));--bg-1:rgb(var(--txt-03-rgb));--bg-2:rgb(var(--txt-03-rgb));--panel:rgb(var(--txt-03-rgb)/0.92);--panel-border:rgb(var(--txt-04-rgb));--frost:rgb(var(--txt-55-rgb));--frost-dim:rgb(var(--txt-13-rgb));--ice:rgb(var(--txt-77-rgb));--warn:rgb(var(--txt-30-rgb));--danger:rgb(var(--txt-33-rgb));--text:rgb(var(--txt-74-rgb));--text-dim:rgb(var(--txt-16-rgb));--grid-line:rgb(var(--txt-37-rgb)/0.08);--mountain:#39434f;--water:#3f7da6;--ground:#12181f;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}[data-theme=light] .app{--txt-01-rgb:238 242 247;--txt-03-rgb:233 238 244;--surf-06-rgb:246 249 252;--surf-01-rgb:255 255 255;--surf-19-rgb:226 234 244;--surf-23-rgb:232 239 248;--txt-04-rgb:196 208 222;--line-01-rgb:205 214 226;--line-05-rgb:170 188 205;--line-50-rgb:120 170 205;--txt-13-rgb:59 108 136;--surf-68-rgb:0 130 190;--surf-49-rgb:0 120 200;--shd-09-rgb:0 130 190;--txt-37-rgb:40 70 100;--shd-01-rgb:120 140 165;--shd-05-rgb:178 0 32;--txt-48-rgb:0 120 20}.app *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}.app{margin:0;padding:0;height:100%;width:100%;overflow:hidden;overscroll-behavior:none;background:var(--bg-0);color:var(--text);font-family:JetBrains Mono,ui-monospace,monospace;touch-action:none;background:radial-gradient(ellipse at 20% 0,rgb(var(--txt-13-rgb)/.12),transparent 60%),radial-gradient(ellipse at 80% 100%,rgb(var(--txt-55-rgb)/.08),transparent 55%),linear-gradient(180deg,rgb(var(--txt-01-rgb)) 0,rgb(var(--txt-01-rgb)) 100%);-moz-user-select:none;user-select:none;-webkit-user-select:none;position:fixed;top:var(--bt-top,56px);left:0;right:0;bottom:0;height:auto;display:flex;flex-direction:column}.app .topbar{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:calc(10px + var(--safe-top)) calc(16px + var(--safe-right)) 10px calc(16px + var(--safe-left));border-bottom:1px solid var(--panel-border);background:linear-gradient(180deg,rgb(var(--surf-01-rgb)/.95),rgb(var(--surf-01-rgb)/.7));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20;gap:12px}.app .brand{display:flex;align-items:baseline;gap:14px;min-width:0}.app .brand .mark{font-family:Orbitron,sans-serif;font-weight:900;letter-spacing:.18em;font-size:16px;color:var(--ice);text-shadow:0 0 12px rgb(var(--shd-09-rgb)/.35);white-space:nowrap}.app .brand .mark em{font-style:normal;color:var(--frost)}.app .brand .sub{font-size:10px;letter-spacing:.3em;color:var(--text-dim);text-transform:uppercase;white-space:nowrap}.app .hud{display:flex;gap:10px;align-items:center;font-size:11px;letter-spacing:.12em;flex-shrink:0}.app .hud-chip{display:flex;flex-direction:column;gap:2px;padding:5px 10px;border:1px solid var(--panel-border);background:rgb(var(--surf-01-rgb)/.6);border-radius:2px;min-width:72px}.app .hud-chip .label{color:var(--text-dim);font-size:9px;letter-spacing:.25em;text-transform:uppercase}.app .hud-chip .val{color:var(--frost);font-weight:600;font-size:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app .hud-chip .val.layout-original{color:var(--frost)}.app .hud-chip .val.layout-optimized{color:rgb(var(--txt-48-rgb))}.app .hud-chip .val.layout-custom{color:rgb(var(--txt-40-rgb))}.app .hud-chip.moved-chip{display:none}.app.has-moves .hud-chip.moved-chip{display:flex}.app .hud-chip.moved-chip .val{color:rgb(var(--txt-40-rgb))}.app .main{position:relative;flex:1 1 auto;overflow:hidden}.app #viewport{position:absolute;inset:0;cursor:-webkit-grab;cursor:grab;touch-action:none}.app #viewport.panning{cursor:-webkit-grabbing;cursor:grabbing}.app #viewport.dragging{cursor:move}.app #mapCanvas{display:block;position:absolute;top:0;left:0}.app .tooltip{position:absolute;pointer-events:none;background:var(--panel);border:1px solid var(--panel-border);border-left:2px solid var(--frost);padding:8px 12px;font-size:11px;min-width:140px;max-width:min(260px,calc(100vw - 40px));opacity:0;transform:translate(10px,10px);transition:opacity .12s;z-index:40;box-shadow:0 6px 24px rgb(var(--shd-01-rgb)/.5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.app .tooltip.show{opacity:1}.app .tooltip .coord{font-family:JetBrains Mono,monospace;color:var(--frost);font-weight:600;font-size:13px;letter-spacing:.05em}.app .tooltip .obj{margin-top:4px;color:var(--ice);font-size:12px}.app .tooltip .obj.empty{color:var(--text-dim);font-style:italic}.app .tooltip .kind{font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim);margin-top:2px}.app .tooltip .stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));grid-gap:6px 10px;gap:6px 10px;margin-top:6px;border-top:1px solid rgb(var(--line-05-rgb)/.3);padding-top:6px}.app .tooltip .stat{display:flex;flex-direction:column;gap:2px}.app .tooltip .stat .lbl{font-size:8px;letter-spacing:.15em;color:var(--text-dim);text-transform:uppercase}.app .tooltip .stat .v{font-size:11px;color:var(--ice);font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app .fab-row{position:absolute;top:12px;right:12px;display:flex;gap:6px;z-index:30}.app .fab{background:var(--panel);border:1px solid var(--panel-border);color:var(--frost);font-family:Orbitron,sans-serif;font-size:10px;font-weight:700;letter-spacing:.2em;padding:8px 14px;cursor:pointer;transition:all .15s;min-height:36px;display:flex;align-items:center;gap:6px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app .fab.active,.app .fab:hover{border-color:var(--frost);color:var(--ice);background:linear-gradient(0deg,rgb(var(--surf-68-rgb)/.12),rgb(var(--surf-68-rgb)/.12)),var(--panel)}.app .fab:active{transform:translateY(1px)}.app .fab .dot{width:6px;height:6px;border-radius:50%;background:var(--frost-dim)}.app .fab.active .dot{background:var(--frost);box-shadow:0 0 8px var(--frost)}.app .drawer{position:absolute;background:var(--panel);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:35;font-size:11px;box-shadow:0 10px 40px rgb(var(--shd-01-rgb)/.5);transition:transform .28s cubic-bezier(.2,.9,.25,1),opacity .2s}.app .drawer-header{padding:10px 14px;border-bottom:1px solid var(--panel-border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.app .drawer-title{font-family:Orbitron,sans-serif;font-size:10px;letter-spacing:.3em;color:var(--ice)}.app .drawer-close{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:20px;padding:0;line-height:1;font-family:inherit;width:28px;height:28px;display:flex;align-items:center;justify-content:center}.app .drawer-close:hover{color:var(--frost)}.app .drawer-body{padding:4px 0;overflow-y:auto;flex:1 1 auto;min-height:0}.app .drawer.legend{left:14px;top:60px;width:270px;max-height:calc(100% - 80px);display:flex;flex-direction:column}.app .drawer.legend.hidden{transform:translateX(calc(-100% - 30px));opacity:0;pointer-events:none}.app .drawer.filters{right:14px;top:60px;width:230px;display:flex;flex-direction:column}.app .drawer.filters.hidden{transform:translateX(calc(100% + 30px));opacity:0;pointer-events:none}.app .drawer.layout-drawer{right:14px;top:60px;width:280px;max-height:calc(100% - 80px);display:flex;flex-direction:column}.app .drawer.layout-drawer.hidden{transform:translateX(calc(100% + 30px));opacity:0;pointer-events:none}.app .drawer.palette{right:14px;top:60px;width:300px;max-height:calc(100% - 80px);display:flex;flex-direction:column}.app .drawer.palette.hidden{transform:translateX(calc(100% + 30px));opacity:0;pointer-events:none}.app .palette-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:6px;gap:6px}.app .palette-item{background:rgb(var(--surf-06-rgb)/.55);border:1px solid var(--panel-border);border-radius:4px;padding:8px 6px;color:var(--text);font-size:10px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;transition:border-color .12s,background .12s,transform .08s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.app .palette-item .pi-swatch,.app .palette-item img{width:26px;height:26px;object-fit:contain;image-rendering:pixelated}.app .pi-swatch.mountain{background:linear-gradient(135deg,#4c586a,#232a33);border-radius:2px}.app .pi-swatch.water{background:linear-gradient(180deg,#3f7da6,#27536f);border-radius:2px}.app .pi-swatch.player{background:linear-gradient(135deg,#3fd96a,#155534);border-radius:2px}.app .pi-swatch.woodmill{background:linear-gradient(135deg,#7a5a2d,#3a2814);border-radius:2px}.app .pi-swatch:not(.mountain):not(.water):not(.player):not(.woodmill){background:linear-gradient(135deg,#5a6f80,#1b283c);border-radius:2px}.app .palette-item .pi-label{line-height:1.1;text-align:center}.app .palette-item .pi-size{font-size:8px;color:var(--text-dim);letter-spacing:.05em}.app .palette-item:hover{border-color:var(--frost);background:rgb(var(--surf-19-rgb)/.55)}.app .palette-item.active{border-color:var(--frost);background:rgb(var(--surf-49-rgb)/.18);box-shadow:0 0 0 1px var(--frost) inset,0 0 12px rgb(var(--shd-09-rgb)/.35)}.app .palette-tools{display:flex;gap:6px;flex-wrap:wrap}.app .palette-tool{flex:1 1 auto;background:rgb(var(--surf-06-rgb)/.55);border:1px solid var(--panel-border);border-radius:4px;padding:7px 9px;color:var(--text);font-size:10px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;display:flex;align-items:center;gap:6px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.app .palette-tool .ptool-ico{font-size:14px;color:var(--frost)}.app .palette-tool:hover:not(:disabled){border-color:var(--frost)}.app .palette-tool:disabled{opacity:.4;cursor:not-allowed}.app .palette-tool.active{border-color:var(--frost);background:rgb(var(--surf-49-rgb)/.18)}.app .legend-section{padding:10px 14px;border-bottom:1px solid rgb(var(--line-01-rgb)/.5)}.app .legend-section:last-child{border-bottom:none}.app .legend-section-title{font-size:9px;letter-spacing:.25em;text-transform:uppercase;color:var(--text-dim);margin-bottom:8px}.app .legend-row{display:flex;align-items:center;gap:10px;margin-bottom:6px;padding:3px 0}.app .legend-row:last-child{margin-bottom:0}.app .legend-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid rgb(var(--line-05-rgb)/.3);background:var(--bg-1)}.app .legend-icon img{max-width:100%;max-height:100%;display:block}.app .legend-swatch{width:28px;height:28px;flex-shrink:0;border:1px solid rgb(var(--line-05-rgb)/.4)}.app .legend-swatch.mountain{background:var(--mountain);background-image:linear-gradient(135deg,transparent 40%,rgb(var(--surf-01-rgb)/.3) 60%)}.app .legend-swatch.water{background:var(--water);background-image:linear-gradient(135deg,rgb(var(--surf-70-rgb)/.1) 40%,transparent 60%)}.app .legend-swatch.ground{background:var(--ground)}.app .legend-swatch.zone-nobuild{background:rgba(190,200,215,.14);border:1px solid rgba(190,200,215,.4)}.app .legend-swatch.zone-battle{background:rgba(255,77,109,.16);border:1px solid rgba(255,77,109,.5)}.app .state-mismatch{margin-left:8px;padding:1px 6px;border:1px solid rgba(255,150,90,.45);border-radius:3px;color:#ffb27a;font-size:9px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.app .terrain-style-row{justify-content:space-between}.app .terrain-style-btn{font:inherit;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--frost);background:rgba(127,209,255,.08);border:1px solid rgba(127,209,255,.35);border-radius:3px;padding:3px 10px;cursor:pointer}.app .terrain-style-btn:hover{background:rgba(127,209,255,.16)}.app .terrain-style-btn[data-style=classic]{color:var(--text-dim);border-color:rgba(120,140,160,.35);background:rgba(120,140,160,.08)}.app .legend-label{flex:1 1;color:var(--text);font-size:11px}.app .legend-label .ct{color:var(--text-dim);font-size:9px;margin-left:6px}.app .power-scale{display:flex;flex-direction:column;gap:4px}.app .ps-row{display:flex;align-items:center;gap:8px;font-size:10px;color:var(--text)}.app .ps-sw{width:20px;height:12px;border:1px solid rgb(var(--line-05-rgb)/.4);flex-shrink:0}.app .metric-toggle{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:4px;gap:4px;margin-bottom:8px}.app .metric-btn{background:rgb(var(--surf-01-rgb)/.7);border:1px solid var(--panel-border);color:var(--text);padding:6px 4px;cursor:pointer;font-family:inherit;text-align:center;transition:all .15s}.app .metric-btn:hover{border-color:var(--frost-dim)}.app .metric-btn.active{border-color:rgb(var(--line-44-rgb));background:rgb(var(--surf-62-rgb)/.1)}.app .metric-btn .mb-title{font-family:Orbitron,sans-serif;font-size:9px;letter-spacing:.15em;color:var(--ice);line-height:1.2}.app .metric-btn .mb-sub{font-size:8px;color:var(--text-dim);margin-top:2px;line-height:1.2}.app .metric-btn.active .mb-title{color:rgb(var(--txt-48-rgb))}.app .layout-modes{display:flex;flex-direction:column;gap:6px}.app .layout-mode{background:rgb(var(--surf-01-rgb)/.6);border:1px solid var(--panel-border);color:var(--text);padding:10px 12px;cursor:pointer;font-family:inherit;text-align:left;transition:all .15s;display:flex;flex-direction:column;gap:2px}.app .layout-mode:hover{border-color:var(--frost-dim)}.app .layout-mode.active{border-color:var(--frost);background:rgb(var(--surf-68-rgb)/.08)}.app .layout-mode[data-layout=optimized].active{border-color:rgb(var(--line-44-rgb));background:rgb(var(--surf-62-rgb)/.08)}.app .layout-mode[data-layout=custom].active{border-color:rgb(var(--line-41-rgb));background:rgb(var(--surf-59-rgb)/.08)}.app .layout-mode .lm-title{font-family:Orbitron,sans-serif;font-size:11px;letter-spacing:.2em;color:var(--ice)}.app .layout-mode .lm-sub{font-size:10px;color:var(--text-dim)}.app .layout-mode.disabled,.app .layout-mode[disabled]{opacity:.5;cursor:not-allowed}.app .layout-action{background:rgb(var(--surf-01-rgb)/.7);border:1px solid var(--panel-border);color:var(--frost);padding:10px 14px;font-family:Orbitron,sans-serif;font-size:10px;letter-spacing:.2em;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:10px;width:100%}.app .layout-action:hover{border-color:var(--frost);background:rgb(var(--surf-68-rgb)/.08)}.app .layout-action.danger{color:rgb(var(--txt-30-rgb))}.app .layout-action.danger:hover{border-color:rgb(var(--line-37-rgb));background:rgb(var(--surf-55-rgb)/.08)}.app .layout-action .btn-ico{font-family:monospace;font-size:15px;line-height:1}.app .chain-row{display:flex;align-items:center;gap:8px;padding:4px 0;color:var(--text)}.app .chain-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.app.move-mode #viewport{cursor:crosshair}.app .fab#moveModeBtn.active,.app.move-mode .fab#moveModeBtn{border-color:var(--frost);background:rgb(var(--surf-68-rgb)/.18);color:var(--ice)}.app.move-mode .fab#moveModeBtn .dot{background:var(--frost);box-shadow:0 0 10px var(--frost);animation:movePulse 1.3s ease-in-out infinite}@keyframes movePulse{0%,to{opacity:.6}50%{opacity:1}}.app .move-banner{position:absolute;left:50%;top:10px;transform:translate(-50%,-8px);background:rgb(var(--surf-06-rgb)/.95);border:1px solid var(--frost);color:var(--ice);padding:8px 16px;font-family:Orbitron,sans-serif;font-size:10px;letter-spacing:.25em;z-index:45;display:flex;align-items:center;gap:10px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s cubic-bezier(.2,.9,.25,1);box-shadow:0 6px 24px rgb(var(--shd-09-rgb)/.2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app.move-mode .move-banner{opacity:1;transform:translate(-50%);pointer-events:auto}.app .move-banner .mb-dot{width:8px;height:8px;border-radius:50%;background:var(--frost);animation:movePulse 1.3s ease-in-out infinite}.app .move-banner .mb-exit{background:none;border:1px solid var(--panel-border);color:var(--text-dim);padding:3px 8px;font-family:inherit;font-size:9px;letter-spacing:.2em;cursor:pointer;margin-left:6px}.app .move-banner .mb-exit:hover{color:var(--frost);border-color:var(--frost)}.app .move-banner.banner-invalid{border-color:var(--danger);color:var(--danger);animation:shake .4s;box-shadow:0 6px 24px rgb(var(--shd-05-rgb)/.3)}.app .move-banner.banner-invalid .mb-dot{background:var(--danger)}@keyframes shake{0%,to{transform:translate(-50%)}20%{transform:translate(calc(-50% - 6px))}40%{transform:translate(calc(-50% + 6px))}60%{transform:translate(calc(-50% - 4px))}80%{transform:translate(calc(-50% + 4px))}}.app .toast{position:fixed;left:50%;bottom:calc(80px + var(--safe-bottom));transform:translate(-50%,20px);background:var(--panel);border:1px solid var(--panel-border);border-left:3px solid var(--frost);padding:10px 16px;font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.05em;color:var(--text);z-index:60;opacity:0;pointer-events:none;transition:opacity .2s,transform .25s cubic-bezier(.2,.9,.25,1);box-shadow:0 8px 28px rgb(var(--shd-01-rgb)/.5);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);max-width:min(420px,calc(100vw - 40px))}.app .toast.show{opacity:1;transform:translate(-50%);pointer-events:auto}.app .toast.toast-success{border-left-color:rgb(var(--line-44-rgb))}.app .toast.toast-error{border-left-color:var(--danger);color:var(--danger)}.app .toast .toast-title{font-family:Orbitron,sans-serif;font-size:9px;letter-spacing:.25em;color:var(--text-dim);margin-bottom:3px;text-transform:uppercase}.app .toast.toast-success .toast-title{color:rgb(var(--txt-48-rgb))}.app .toast.toast-error .toast-title{color:var(--danger)}.app .modal-overlay{background:rgb(var(--surf-01-rgb)/.65);z-index:100}.app .modal{border-top:2px solid var(--frost);box-shadow:0 12px 48px rgb(var(--shd-01-rgb)/.7),0 0 24px rgb(var(--shd-09-rgb)/.12);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:22px 24px 18px;max-width:360px;transform:translateY(8px);transition:transform .2s cubic-bezier(.2,.9,.25,1)}.app .modal-overlay.show .modal{transform:translateY(0)}.app .modal-title{margin-bottom:4px}.app .modal-input{font-size:13px;letter-spacing:.05em;transition:border-color .15s}.app .modal-actions{margin-top:8px}.app .legend-note{font-size:10px;color:var(--text-dim);line-height:1.5;margin:6px 0 0}.app .mp-search{width:100%;background:rgb(var(--surf-01-rgb)/.85);border:1px solid var(--panel-border);color:var(--text);padding:8px 10px;font-family:JetBrains Mono,monospace;font-size:13px;outline:none;box-sizing:border-box;margin-bottom:8px}.app .mp-search:focus{border-color:var(--frost)}.app .mp-list{max-height:min(46vh,320px);overflow-y:auto;border:1px solid var(--panel-border);background:rgb(var(--surf-01-rgb)/.5)}.app .mp-item{display:flex;align-items:baseline;gap:8px;width:100%;background:none;border:0;border-bottom:1px solid rgb(var(--line-03-rgb));color:var(--text);text-align:left;cursor:pointer;padding:7px 10px;font-size:12px;font-family:inherit}.app .mp-item:last-child{border-bottom:0}.app .mp-item:focus-visible,.app .mp-item:hover{background:rgb(var(--surf-06-rgb));outline:none}.app .mp-rank{color:var(--ice);font-weight:700;min-width:22px;font-size:11px}.app .mp-name{flex:1 1 auto}.app .mp-meta{color:var(--text-dim);font-size:11px;white-space:nowrap}.app .mp-empty{padding:14px 10px;color:var(--text-dim);font-size:11.5px;line-height:1.5}.app .modal-btn{background:rgb(var(--surf-01-rgb)/.7);letter-spacing:.2em}.app .modal-btn:hover{border-color:var(--frost-dim)}.app .modal-btn-cancel{color:var(--text-dim)}.app .modal-btn-cancel:hover{color:var(--text)}.app .modal-btn-ok{background:rgb(var(--surf-68-rgb)/.08)}.app .modal-btn-ok:hover{background:rgb(var(--surf-68-rgb)/.18)}.app .modal.modal-wide{max-width:460px}.app .modal-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:10px 12px;gap:10px 12px;margin:6px 0 4px}.app .modal-form label{display:flex;flex-direction:column;min-width:0;gap:4px;font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim)}.app .modal-form input[type=text],.app .modal-form select{background:rgb(var(--surf-01-rgb)/.85);border:1px solid var(--panel-border);color:var(--text);padding:8px 10px;font-family:JetBrains Mono,monospace;font-size:12px;letter-spacing:.05em;outline:none;transition:border-color .15s;box-sizing:border-box;text-transform:none;width:100%;min-width:0}.app .modal-form input[type=text]:focus,.app .modal-form select:focus{border-color:var(--frost)}.app .modal-form select option{background:rgb(var(--surf-06-rgb));color:var(--text)}.app .modal-form label.pi-checkbox{flex-direction:row;align-items:center;gap:8px;text-transform:none;letter-spacing:normal;font-size:11px;color:var(--text);grid-column:span 2}.app .modal-form label.pi-checkbox input{accent-color:var(--frost)}.app .edit-banner .mb-info{background:rgb(var(--surf-68-rgb)/.15);border:1px solid rgb(var(--line-50-rgb)/.6);color:var(--frost);font-size:10px;padding:3px 9px;border-radius:3px;cursor:pointer;letter-spacing:.1em}.app .edit-banner .mb-info:hover{background:rgb(var(--surf-68-rgb)/.28);color:rgb(var(--txt-79-rgb))}.app .edit-banner .mb-info[hidden]{display:none}.app .modal-overlay{position:fixed;inset:0;background:rgb(var(--surf-01-rgb)/.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:80;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .18s ease;padding:20px}.app .modal-overlay.show{opacity:1;pointer-events:auto}.app .modal{background:rgb(var(--surf-06-rgb)/.96);border:1px solid var(--panel-border);border-left:3px solid var(--frost);padding:22px 22px 18px;width:100%;max-width:340px;box-shadow:0 18px 50px rgb(var(--shd-01-rgb)/.6),0 0 0 1px rgb(var(--shd-09-rgb)/.06);transform:translateY(-8px) scale(.98);transition:transform .22s cubic-bezier(.2,.9,.25,1)}.app .modal-overlay.show .modal{transform:translateY(0) scale(1)}.app .modal-title{font-family:Orbitron,sans-serif;font-size:12px;letter-spacing:.28em;color:var(--ice);margin-bottom:6px}.app .modal-sub{font-size:11px;color:var(--text-dim);line-height:1.5;margin-bottom:14px}.app .modal-input,.app .modal-sub{font-family:JetBrains Mono,monospace}.app .modal-input{width:100%;box-sizing:border-box;background:rgb(var(--surf-01-rgb)/.85);border:1px solid var(--panel-border);color:var(--text);font-size:14px;letter-spacing:.08em;padding:10px 12px;outline:none;transition:border-color .15s,box-shadow .15s}.app .modal-input:focus{border-color:var(--frost);box-shadow:0 0 0 1px var(--frost-dim)}.app .modal-err{color:var(--danger);font-family:JetBrains Mono,monospace;font-size:10px;min-height:14px;margin-top:6px}.app .modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.app .modal-btn{background:transparent;border:1px solid var(--panel-border);color:var(--text);padding:8px 16px;font-family:Orbitron,sans-serif;font-size:10px;letter-spacing:.22em;cursor:pointer;transition:all .15s}.app .modal-btn-cancel:hover{border-color:var(--text-dim);color:var(--text-dim)}.app .modal-btn-ok{border-color:var(--frost-dim);color:var(--frost)}.app .modal-btn-ok:hover{background:rgb(var(--surf-68-rgb)/.12);border-color:var(--frost)}.app .filters-list{padding:8px 10px;display:flex;flex-direction:column;gap:4px}.app .filter-pill{background:rgb(var(--surf-01-rgb)/.6);border:1px solid var(--panel-border);color:var(--text);padding:8px 10px;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.08em;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;transition:all .15s;min-height:36px}.app .filter-pill:hover{border-color:var(--frost-dim)}.app .filter-pill.active{border-color:var(--frost);background:rgb(var(--surf-68-rgb)/.1);color:var(--ice)}.app .filter-pill .left{display:flex;align-items:center;gap:8px}.app .filter-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--frost-dim);transition:all .15s}.app .filter-pill.active .dot{background:var(--frost);box-shadow:0 0 8px var(--frost)}.app .filter-pill .ct{color:var(--text-dim);font-size:9px}.app .filter-pill.active .ct{color:var(--frost-dim)}.app .controls{position:absolute;right:calc(12px + var(--safe-right));bottom:calc(48px + var(--safe-bottom));display:flex;flex-direction:column;gap:4px;z-index:30}.app .ctrl-btn{width:40px;height:40px;background:var(--panel);border:1px solid var(--panel-border);color:var(--frost);font-family:Orbitron,sans-serif;font-size:20px;font-weight:700;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app .ctrl-btn:hover{border-color:var(--frost);color:var(--ice);background:rgb(var(--surf-68-rgb)/.1)}.app .ctrl-btn:active{transform:translateY(1px)}.app .ctrl-btn.reset{font-size:9px;letter-spacing:.15em}.app .zoom-readout{background:var(--panel);border:1px solid var(--panel-border);color:var(--text-dim);font-size:9px;padding:3px 0;text-align:center;letter-spacing:.1em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app .edit-banner{position:absolute;top:calc(70px + var(--safe-top));left:50%;transform:translate(-50%,-60px);background:rgb(var(--surf-23-rgb)/.95);border:1px solid rgb(var(--line-50-rgb)/.6);color:var(--text);padding:9px 14px;border-radius:4px;font-size:11px;letter-spacing:.15em;text-transform:uppercase;z-index:100;display:flex;align-items:center;gap:10px;opacity:0;pointer-events:none;transition:transform .2s,opacity .2s;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.app.edit-mode .edit-banner{transform:translate(-50%);opacity:1;pointer-events:auto}.app .edit-banner .mb-dot{width:8px;height:8px;border-radius:50%;background:var(--frost);box-shadow:0 0 8px var(--frost);animation:pulse 1.4s ease-in-out infinite}.app .edit-banner .mb-exit{background:transparent;border:1px solid rgb(var(--line-50-rgb)/.45);color:var(--text-dim);font-size:10px;padding:3px 9px;border-radius:3px;cursor:pointer;letter-spacing:.1em}.app .edit-banner .mb-exit:hover{color:var(--frost);border-color:var(--frost)}.app .fab#fabEdit.active,.app.edit-mode .fab#fabEdit{border-color:var(--frost);color:var(--frost);box-shadow:0 0 14px rgb(var(--shd-09-rgb)/.5)}.app .fade-in{animation:fadeIn .5s ease-out backwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (max-width:720px){.app .topbar{padding:calc(6px + var(--safe-top)) 10px 6px;gap:6px}.app .brand{flex-direction:row;align-items:baseline;gap:8px}.app .brand .mark{font-size:11px;letter-spacing:.12em;display:none}.app .brand .sub{display:block;letter-spacing:.16em;font-size:9px}.app .brand .sub .sub-tail{display:none}.app .hud{gap:4px}.app .hud-chip{padding:2px 6px;min-width:0;border-radius:2px}.app .hud-chip .label{font-size:7px;letter-spacing:.14em}.app .hud-chip .val{font-size:10px}.app .hud-chip.alliance-chip{display:none}.app .fab-row{top:auto;right:10px;bottom:calc(220px + var(--safe-bottom));flex-direction:column;gap:6px}.app .fab{font-size:9px;padding:0;letter-spacing:.14em;height:40px;width:54px;justify-content:center}.app .fab .dot{display:none}.app .controls{right:10px;bottom:calc(16px + var(--safe-bottom));gap:2px}.app .ctrl-btn{width:54px;height:44px;font-size:22px}.app .ctrl-btn.reset{font-size:8px;letter-spacing:.1em}.app .zoom-readout{font-size:9px;padding:2px 0;height:18px;display:flex;align-items:center;justify-content:center}.app .tooltip{position:fixed;left:10px;right:10px;top:calc(var(--safe-top) + 46px);bottom:auto;max-width:none;min-width:0;width:auto;padding:9px 12px 10px;font-size:11px;border-left-width:3px;transform:translateY(-8px);transition:opacity .15s,transform .2s cubic-bezier(.2,.9,.25,1)}.app .tooltip.show{transform:translateY(0)}.app .tooltip .coord,.app .tooltip .obj{font-size:12px}.app .tooltip .stat-grid{margin-top:5px;padding-top:5px;gap:10px}.app .tooltip .stat .v{font-size:12px}.app .drawer.filters,.app .drawer.layout-drawer,.app .drawer.legend,.app .drawer.palette{left:0;right:0;top:auto;bottom:0;width:auto;max-height:70vh;border:none;border-top:1px solid var(--frost-dim);padding-bottom:var(--safe-bottom);display:flex;flex-direction:column}.app .drawer.filters.hidden,.app .drawer.layout-drawer.hidden,.app .drawer.legend.hidden,.app .drawer.palette.hidden{transform:translateY(calc(100% + 20px));opacity:1}.app .drawer-header{padding:14px 16px;position:relative}.app .drawer-header:before{content:"";position:absolute;top:5px;left:50%;transform:translateX(-50%);width:38px;height:3px;background:var(--frost-dim);border-radius:2px;opacity:.6}.app .drawer-title{font-size:11px}.app .drawer-close{width:36px;height:36px;font-size:24px}.app .legend-row{padding:6px 0}.app .legend-label{font-size:12px}.app .filter-pill{padding:12px 14px;font-size:12px;min-height:44px}.app .filter-pill .ct{font-size:10px}.app .filters-list{padding:10px 12px;gap:6px}.app .axis-hint{bottom:calc(16px + var(--safe-bottom));left:10px;font-size:8px;padding:5px 8px;letter-spacing:.08em}.app .axis-hint span{display:inline}}@media (max-width:380px){.app .brand .mark{font-size:10px}.app .axis-hint,.app .hud-chip.cursor-chip .label{display:none}}.app .drawer.import{left:14px;top:60px;width:min(560px,calc(100vw - 28px));max-height:calc(100% - 80px);display:flex;flex-direction:column}.app .import-body{padding:12px 14px;overflow-y:auto;flex:1 1 auto;min-height:0}.app .import-hint{color:var(--text-dim);line-height:1.6;margin:0 0 10px;font-size:10px}.app .import-btn{font:inherit;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--frost);background:rgba(127,209,255,.08);border:1px solid rgba(127,209,255,.35);border-radius:3px;padding:7px 14px;cursor:pointer}.app .import-btn:hover:not(:disabled){background:rgba(127,209,255,.16)}.app .import-btn:disabled{opacity:.5;cursor:default}.app .import-btn.primary{color:#081508;background:#3fd96a;border-color:#7ae89a;font-weight:600}.app .import-progress{margin-top:10px}.app .import-bar{height:4px;background:rgba(127,209,255,.12);border-radius:2px;overflow:hidden}.app .import-bar span{display:block;height:100%;background:var(--frost);transition:width .2s}.app .import-label{margin-top:5px;color:var(--text-dim);font-size:10px}.app .import-error,.app .import-warn{border:1px solid rgba(255,120,90,.45);color:#ffb27a;border-radius:3px}.app .import-error,.app .import-ok,.app .import-warn{margin-top:10px;padding:6px 9px;font-size:10px;line-height:1.5}.app .import-ok{border:1px solid rgba(63,217,106,.45);color:#7ae89a;border-radius:3px}.app .import-note{margin-top:10px;color:var(--text-dim);font-size:10px}.app .import-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:10px}.app .import-table th{text-align:left;color:var(--text-dim);font-weight:400;font-size:9px;letter-spacing:.18em;text-transform:uppercase;padding:4px;border-bottom:1px solid var(--panel-border)}.app .import-table td{padding:6px 4px;border-bottom:1px solid rgba(30,45,62,.6);vertical-align:top}.app .import-table tr.excluded{opacity:.42}.app .import-table input[type=number],.app .import-table input[type=text],.app .import-table select{font:inherit;font-size:10px;color:var(--text);background:var(--bg-2);border:1px solid var(--panel-border);border-radius:2px;padding:3px 4px;max-width:100%}.app .import-table input[type=number]{width:62px}.app .import-table select.sub{margin-top:4px;display:block}.app .import-name{display:block;color:var(--text)}.app .import-foot{display:block;color:var(--text-dim);font-size:9px;margin-top:2px}.app .import-rowwarn{display:block;color:#ffb27a;font-size:9px;margin-top:3px}.app .import-actions{display:flex;gap:8px;margin-top:12px;position:-webkit-sticky;position:sticky;bottom:0;padding:10px 0 2px;background:linear-gradient(to top,var(--panel) 72%,transparent)}.app .import-skipped{margin-top:10px;color:var(--text-dim);font-size:9px;line-height:1.6}@media (max-width:720px){.app .drawer.import{left:8px;right:8px;width:auto;top:54px}.app .save-fab{top:52px;font-size:10px;padding:8px 13px}}.app .map-unavailable{position:absolute;inset:0;display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;text-align:center;padding:24px;background:rgba(5,8,13,.82);z-index:10}.app .map-unavailable .mu-title{font-family:Orbitron,sans-serif;font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--ice)}.app .map-unavailable .mu-body{color:var(--text-dim);font-size:11px;line-height:1.7;max-width:40ch}.app .drawer.manage{right:14px;top:60px;width:min(420px,calc(100vw - 28px));max-height:calc(100% - 80px);display:flex;flex-direction:column}.app .manage-body{padding:10px 14px 16px;overflow-y:auto}.app .mg-section{margin-bottom:16px}.app .mg-section h4{margin:0 0 8px;font-family:Orbitron,sans-serif;font-size:9px;letter-spacing:.28em;text-transform:uppercase;color:var(--ice);font-weight:700}.app .mg-count{margin-left:6px;padding:1px 6px;border-radius:8px;background:rgba(255,150,90,.18);color:#ffb27a;font-size:9px}.app .mg-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 0;font-size:10px;color:var(--text)}.app .mg-row code{color:var(--frost);font-size:9px;word-break:break-all}.app .mg-who{flex:1 1;min-width:140px;color:var(--text)}.app .mg-unknown{color:var(--text-dim);font-style:italic}.app .mg-node{flex:1 1;min-width:120px;color:var(--text-dim)}.app .mg-badge{padding:1px 6px;border:1px solid rgba(127,209,255,.35);border-radius:3px;color:var(--frost);font-size:9px}.app .mg-hint{margin:6px 0 0;color:var(--text-dim);font-size:9px;line-height:1.6}.app .mg-error,.app .mg-note,.app .mg-ok{padding:6px 9px;margin-bottom:10px;border-radius:3px;font-size:10px;line-height:1.5}.app .mg-note{border:1px solid var(--panel-border);color:var(--text-dim)}.app .mg-error{border:1px solid rgba(255,120,90,.45);color:#ffb27a}.app .mg-ok{border:1px solid rgba(63,217,106,.45);color:#7ae89a}.app .mg-btn{font:inherit;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--frost);background:rgba(127,209,255,.08);border:1px solid rgba(127,209,255,.35);border-radius:3px;padding:5px 10px;cursor:pointer}.app .mg-btn:disabled{opacity:.45;cursor:default}.app .mg-btn.danger{color:var(--warn);background:rgba(255,150,90,.1);border-color:rgba(255,150,90,.45)}.app .mg-transfer{margin-top:6px}.app .manage-body select,.app .mg-input{font:inherit;font-size:10px;color:var(--text);background:var(--bg-2);border:1px solid var(--panel-border);border-radius:2px;padding:4px 6px}.app .mg-input{width:74px;text-transform:uppercase}.app .mg-input.wide{width:auto;flex:1 1;min-width:120px;text-transform:none}.app .mg-toggle{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:10px;color:var(--text);cursor:pointer}@media (max-width:720px){.app .drawer.manage{left:8px;right:8px;width:auto;top:54px}}.app .save-fab{position:absolute;z-index:30;top:60px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;font:inherit;font-family:Orbitron,sans-serif;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding:9px 16px;cursor:pointer;color:#ffb05a;background:rgb(var(--txt-03-rgb)/.96);border:1px solid rgba(255,176,90,.55);border-radius:4px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app .save-fab[hidden]{display:none}.app .save-fab .save-ico{font-size:13px;line-height:1}.app .save-fab .save-count{min-width:18px;padding:1px 5px;border-radius:9px;background:rgba(255,176,90,.18);border:1px solid rgba(255,176,90,.4);font-size:10px;letter-spacing:.04em}.app .save-fab:hover{background:rgba(255,176,90,.14)}.app .save-fab.armed{animation:save-pulse 2s ease-in-out infinite}@keyframes save-pulse{0%,to{box-shadow:0 0 0 0 rgba(255,176,90,.34)}50%{box-shadow:0 0 0 8px rgba(255,176,90,0)}}@media (prefers-reduced-motion:reduce){.app .save-fab.armed{animation:none;border-color:rgba(255,176,90,.9)}}@media (max-width:720px){.app .edit-banner,.app .move-banner{left:8px;right:8px;top:calc(50px + var(--safe-top));width:auto;max-width:none;transform:translateY(-8px);padding:6px 10px;font-size:9px;letter-spacing:.12em;gap:6px;border-radius:4px;white-space:nowrap;overflow:hidden}.app.edit-mode .edit-banner,.app.move-mode .move-banner{transform:translateY(0)}.app .edit-banner>span:not(.mb-dot),.app .move-banner>span:not(.mb-dot){overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1 1 auto}.app .edit-banner .mb-exit,.app .edit-banner .mb-info,.app .move-banner .mb-exit{flex:0 0 auto;margin-left:0;padding:3px 7px}.app .save-fab{top:calc(50px + var(--safe-top));left:auto;right:8px;transform:none;font-size:9px;padding:6px 10px;letter-spacing:.1em;gap:5px}.app .drawer.palette{max-height:52vh}.app .palette-grid{grid-template-columns:repeat(4,1fr);gap:4px}.app .palette-item{padding:5px 3px;font-size:8px;gap:2px;letter-spacing:.04em}.app .palette-item .pi-swatch,.app .palette-item img{width:20px;height:20px}.app .palette-item .pi-size{font-size:7px}.app .modal-overlay{z-index:200;padding:12px}.app .modal{padding:16px 16px 14px}.app .modal-form{gap:8px}}@media (max-width:720px){.app:has(.drawer:not(.hidden)) .controls,.app:has(.drawer:not(.hidden)) .fab-row{opacity:0;pointer-events:none;transition:opacity .15s ease}}.app .toolbar{position:absolute;z-index:36;left:8px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px;padding:5px;background:rgb(var(--surf-06-rgb)/.92);border:1px solid var(--panel-border);border-radius:8px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 28px rgb(var(--shd-01-rgb)/.45)}.app .tool{width:40px;height:40px;display:flex;align-items:center;justify-content:center;position:relative;background:none;border:1px solid transparent;border-radius:6px;color:var(--text-dim);cursor:pointer;padding:0;transition:background .12s,border-color .12s,color .12s}.app .tool svg{width:20px;height:20px}.app .tool .pi-swatch,.app .tool img{width:26px;height:26px;object-fit:contain;image-rendering:pixelated}.app .tool:hover:not(:disabled){background:rgb(var(--surf-19-rgb)/.5);color:var(--text)}.app .tool.active{border-color:var(--frost);background:rgb(var(--surf-19-rgb)/.6);color:var(--ice)}.app .tool:disabled{opacity:.3;cursor:default}.app .tool.has-more:after{content:"";position:absolute;right:3px;bottom:3px;border-width:0 0 5px 5px;border-style:solid;border-color:transparent transparent var(--text-dim) transparent}.app .tool.active.has-more:after{border-bottom-color:var(--frost)}.app .tool-sep{height:1px;width:100%;background:var(--panel-border);margin:2px 0}.app .tool-save.armed{color:#ffb05a;border-color:rgba(255,176,90,.5)}.app .tool-badge{position:absolute;top:-2px;right:-2px;min-width:15px;height:15px;padding:0 3px;border-radius:8px;background:#ffb05a;color:#1a1206;font-family:JetBrains Mono,monospace;font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center}.app .tool-flyout{position:fixed;z-index:120;display:flex;flex-direction:column;gap:2px;padding:5px;min-width:168px;background:rgb(var(--surf-06-rgb)/.97);border:1px solid var(--panel-border);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 12px 36px rgb(var(--shd-01-rgb)/.6)}.app .tool-flyout.hidden{display:none}.app .fly-item{display:flex;align-items:center;gap:9px;padding:6px 8px;background:none;border:1px solid transparent;border-radius:5px;color:var(--text);font-size:11px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;text-align:left}.app .fly-item:hover{background:rgb(var(--surf-19-rgb)/.55)}.app .fly-item.active{border-color:var(--frost);color:var(--ice)}.app .fly-ico{width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.app .fly-ico svg{width:18px;height:18px}.app .fly-ico .pi-swatch,.app .fly-ico img{width:22px;height:22px;object-fit:contain;image-rendering:pixelated}.app .fly-label{min-width:0;overflow:hidden;text-overflow:ellipsis}.app .edit-banner.idle{opacity:0!important;pointer-events:none!important;transform:translate(-50%,-60px)}.app .hud-menu-btn{display:flex;align-items:center;justify-content:center;width:34px;height:28px;background:rgb(var(--surf-06-rgb)/.7);border:1px solid var(--panel-border);border-radius:3px;cursor:pointer;color:var(--text-dim);padding:0}.app .hud-menu-btn.active,.app .hud-menu-btn:hover{color:var(--ice);border-color:var(--frost)}.app .hud-menu-btn .mb-bars,.app .hud-menu-btn .mb-bars:after,.app .hud-menu-btn .mb-bars:before{display:block;width:14px;height:1.5px;background:currentColor;position:relative}.app .hud-menu-btn .mb-bars:after,.app .hud-menu-btn .mb-bars:before{content:"";position:absolute;left:0}.app .hud-menu-btn .mb-bars:before{top:-5px}.app .hud-menu-btn .mb-bars:after{top:5px}.app .menu-panel{position:absolute;z-index:60;top:8px;right:12px;display:flex;flex-direction:column;gap:6px;padding:8px;background:rgb(var(--surf-06-rgb)/.97);border:1px solid var(--panel-border);border-radius:8px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 12px 36px rgb(var(--shd-01-rgb)/.55)}.app .menu-panel.hidden{display:none}.app .menu-panel .fab-row{position:static;inset:auto;flex-direction:column;gap:3px;transform:none;opacity:1}.app .menu-panel .fab{width:100%;justify-content:flex-start;height:auto;padding:8px 12px;font-size:10px}.app .menu-actions{display:flex;flex-direction:column;gap:3px;padding-top:6px}.app .menu-action{background:none;border:1px solid transparent;border-radius:4px;color:var(--text);font-family:Orbitron,sans-serif;font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:8px 12px;text-align:left;cursor:pointer}.app .menu-action:hover{background:rgb(var(--surf-19-rgb)/.5);border-color:var(--frost)}.app .menu-action.danger:hover{border-color:var(--danger)}@media (max-width:720px){.app .toolbar{left:8px;right:8px;top:auto;bottom:calc(10px + var(--safe-bottom));transform:none;flex-direction:row;justify-content:space-between;border-radius:10px;gap:2px;padding:4px}.app .tool{width:42px;height:42px;min-width:30px}.app .tool svg{width:18px;height:18px}.app .tool .pi-swatch,.app .tool img{width:24px;height:24px}.app .tool-sep{width:1px;height:24px;margin:0;align-self:center}.app .menu-panel{left:8px;right:8px;top:6px}.app:has(.drawer:not(.hidden)) .toolbar{opacity:0;pointer-events:none}}@media (min-width:721px) and (min-height:561px){.app #viewport{left:64px}.app .toolbar{left:6px}.app .drawer.legend{left:78px}}.app .fly-item,.app .palette-item,.app .tool{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:manipulation}.app .fly-ico img,.app .palette-item img,.app .tool img{pointer-events:none;-webkit-touch-callout:none;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.app .controls{display:none}.app .tool-fit{font-family:Orbitron,sans-serif;font-size:9px;letter-spacing:.1em}.app #toolZoomIn,.app #toolZoomOut{font-size:20px;line-height:1}.app .fab[hidden]{display:none}.app .save-fab{display:none!important}.app .tool-save.armed{animation:save-pulse 2s ease-in-out infinite;border-color:rgba(255,176,90,.55)}@media (prefers-reduced-motion:reduce){.app .tool-save.armed{animation:none;border-color:rgba(255,176,90,.9)}}.app .fly-ico .tool-face,.app .tool-face{position:relative;display:flex;align-items:center;justify-content:center}.app .tool-face .tf-badge{position:absolute;right:-3px;bottom:-3px;width:12px;height:12px;pointer-events:none}.app .fly-ico .tool-face .tf-badge{width:10px;height:10px}.app .menu-panel{width:190px;padding:5px;gap:2px}.app .menu-panel .fab-row{gap:0}.app .menu-action,.app .menu-panel .fab{width:100%;justify-content:flex-start;height:auto;padding:8px 10px;background:none;border:1px solid transparent;border-radius:4px;font-family:Orbitron,sans-serif;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text);text-align:left}.app .menu-panel .fab .dot{display:none}.app .menu-action:hover,.app .menu-panel .fab:hover{background:rgb(var(--surf-19-rgb)/.55);border-color:transparent;color:var(--ice)}.app .menu-panel .fab.active{background:none;color:var(--frost)}.app .menu-panel .fab.active:before{content:"";width:3px;height:12px;background:var(--frost);border-radius:2px;margin-right:7px;flex:0 0 auto}.app .menu-actions{border-top:1px solid var(--panel-border);padding-top:4px;margin-top:2px;gap:0}.app .menu-action.danger:hover{color:var(--danger);background:rgb(var(--surf-19-rgb)/.4)}@media (max-width:720px){.app .menu-panel{left:auto;right:8px;width:200px}}.app .menu-panel{max-height:calc(100% - 14px)}.app .menu-panel,.app .tool-flyout{overflow-y:auto;overscroll-behavior:contain}.app .tool-flyout{max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px)}@media (max-width:720px){.app .tool-flyout{max-height:calc(100vh - 92px);max-height:calc(100dvh - 92px)}}@media (min-width:721px) and (max-height:560px){.app .toolbar{left:8px;right:8px;top:auto;bottom:calc(8px + var(--safe-bottom));transform:none;flex-direction:row;justify-content:center;gap:3px;padding:4px;border-radius:10px}.app .tool{width:38px;height:38px;min-width:30px}.app .tool svg{width:18px;height:18px}.app .tool .pi-swatch,.app .tool img{width:24px;height:24px}.app .tool-sep{width:1px;height:22px;margin:0;align-self:center}.app .tool-flyout{max-height:calc(100vh - 76px);max-height:calc(100dvh - 76px)}.app #viewport{left:0}.app .drawer.legend{left:14px}}.app .sel-card{position:absolute;z-index:34;left:50%;transform:translateX(-50%);bottom:12px;width:232px;padding:10px 12px;background:rgb(var(--surf-06-rgb)/.94);border:1px solid var(--panel-border);border-left:2px solid var(--frost);border-radius:6px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 10px 30px rgb(var(--shd-01-rgb)/.5);max-height:calc(100% - 24px);overflow-y:auto;overscroll-behavior:contain}.app .sel-card.hidden{display:none}.app .sel-head{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.app .sel-title{font-family:Orbitron,sans-serif;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ice);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app .sel-sub{font-size:9px;letter-spacing:.1em}.app .sel-close,.app .sel-sub{color:var(--text-dim);flex:0 0 auto}.app .sel-close{margin-left:2px;background:none;border:none;cursor:pointer;font-size:16px;line-height:1;padding:0 2px}.app .sel-close:hover{color:var(--ice)}.app .sel-rows{display:grid;grid-template-columns:1fr;grid-gap:3px;gap:3px}.app .sel-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-family:JetBrains Mono,monospace;font-size:11px;min-width:0}.app .sel-row.wide{grid-column:1/-1}.app .sel-pick{background:var(--bg-2);color:var(--ice);border:1px solid var(--panel-border);border-radius:3px;font:inherit;padding:1px 4px;cursor:pointer}.app .sel-events,.app .sel-pick{font-family:JetBrains Mono,monospace;font-size:11px}.app .sel-events{margin-top:8px;padding-top:7px;border-top:1px solid var(--panel-border);display:flex;flex-direction:column;gap:3px}.app .sel-events>span{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}.app .sel-events a{color:var(--frost);text-decoration:none}.app .sel-events a:hover{text-decoration:underline}.app .sel-events em{color:var(--text-dim);font-style:normal}.app .sel-row b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app .sel-row span{color:var(--text-dim);font-size:9px;letter-spacing:.1em;text-transform:uppercase}.app .sel-row b{color:var(--text);font-weight:500;text-align:right}.app .sel-action{margin-left:auto;flex:0 0 auto;background:none;border:1px solid var(--panel-border);border-radius:4px;color:var(--frost);cursor:pointer;font-family:Orbitron,sans-serif;font-size:9px;letter-spacing:.14em;text-transform:uppercase;padding:4px 8px}.app .sel-action:hover{border-color:var(--frost);background:rgb(var(--surf-19-rgb)/.5)}@media (max-height:560px),(max-width:720px){.app .sel-card{left:8px;right:8px;width:auto;transform:none;bottom:calc(70px + var(--safe-bottom));max-height:34dvh;padding:8px 10px}.app .sel-head{margin-bottom:6px}.app .sel-rows{grid-template-columns:1fr 1fr;gap:2px 12px}}.app .hud-chip.alliance-pick select.val{background:none;border:none;color:var(--ice);font:inherit;font-family:JetBrains Mono,monospace;padding:0 14px 0 0;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 0),linear-gradient(135deg,currentColor 50%,transparent 0);background-position:right 4px center,right 0 center;background-size:4px 4px,4px 4px;background-repeat:no-repeat}.app .hud-chip.alliance-pick select.val:focus{outline:1px solid var(--frost);outline-offset:2px}.app .hud-chip.alliance-pick option{background:rgb(var(--surf-06-rgb));color:var(--text)}