:root{--bg:#03060a;--bg-2:#070d16;--panel:rgba(10,18,30,0.72);--panel-edge:rgba(120,200,255,0.18);--ink:#dbeaff;--dim:#6b87a8;--cyan:#00e5ff;--ice:#7ff7ff;--gold:#ffd166;--hot:#ff5b3d;--good:#6ef0a5;--green:#6cffb0;--violet:#b388ff;--grid:rgba(80,180,255,0.06)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Rajdhani,system-ui,sans-serif;min-height:100vh;overflow-x:hidden}a{color:var(--ice);text-decoration:none;transition:color .15s ease}a:hover{color:var(--cyan)}.cats .tlink{display:flex;align-items:center;gap:12px;padding:10px 8px;border-radius:7px;text-decoration:none;color:var(--ink);font-family:Rajdhani,sans-serif;font-weight:600;font-size:16px;letter-spacing:.01em;transition:background .14s ease,color .14s ease}.cats .tlink:focus-visible,.cats .tlink:hover{outline:none;background:rgba(0,229,255,.08);color:var(--ice)}.cats .tlink.gold:focus-visible,.cats .tlink.gold:hover{background:rgba(255,209,102,.1);color:var(--gold)}.cats .tlink .ic{width:22px;height:22px;flex:none;display:flex;opacity:.92;transition:transform .14s ease}.cats .tlink.cyan .ic{color:var(--ice)}.cats .tlink.gold .ic{color:var(--gold)}.cats .tlink .ic svg{width:100%;height:100%;filter:drop-shadow(0 0 6px currentColor)}.cats .tlink .tname{flex:1 1}.cats .tlink .arrow{flex:none;color:var(--dim);font-size:14px;opacity:0;transform:translateX(-4px);transition:opacity .14s ease,transform .14s ease,color .14s ease}.cats .tlink:focus-visible .arrow,.cats .tlink:hover .arrow{opacity:1;transform:translateX(0);color:currentColor}.cats .tlink:hover .ic{transform:scale(1.08)}body:before{background:radial-gradient(ellipse 80% 50% at 20% 0,rgba(0,140,200,.18),transparent 60%),radial-gradient(ellipse 60% 50% at 90% 100%,rgba(255,91,61,.08),transparent 60%),linear-gradient(180deg,var(--bg) 0,var(--bg-2) 100%)}body:after,body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0}body:after{opacity:.35;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(ellipse 70% 70% at 50% 30%,#000 30%,transparent 80%);mask-image:radial-gradient(ellipse 70% 70% at 50% 30%,#000 30%,transparent 80%)}.app{--bg-0:#05080d;--bg-1:#0a1018;--bg-2:#101821;--panel:rgba(14,22,32,0.92);--panel-border:#1e2d3e;--frost:#7fd1ff;--frost-dim:#4a8aab;--ice:#d9f2ff;--warn:#ff8a4c;--danger:#ff4d6d;--text:#cfe3f0;--text-dim:#7a8c9a;--grid-line:rgba(120,180,220,0.08);--mountain:#3d4652;--water:#4a7fa8;--ground:#121a22;--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)}.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,rgba(80,140,180,.12),transparent 60%),radial-gradient(ellipse at 80% 100%,rgba(120,200,240,.08),transparent 55%),linear-gradient(180deg,#05080d,#020406);-moz-user-select:none;user-select:none;-webkit-user-select:none;position:fixed;top:var(--bt-top,56px);left:0;right:0;bottom:0;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,rgba(10,16,24,.95),rgba(5,8,13,.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 rgba(127,209,255,.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:rgba(10,16,24,.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:#6aff7a}.app .hud-chip .val.layout-custom{color:#ffb05a}.app .hud-chip.moved-chip{display:none}.app.has-moves .hud-chip.moved-chip{display:flex}.app .hud-chip.moved-chip .val{color:#ffb05a}.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 rgba(0,0,0,.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 rgba(60,80,100,.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:rgba(127,209,255,.12)}.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 rgba(0,0,0,.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}.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:rgba(20,30,44,.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 .palette-item .pi-swatch.mountain{background:linear-gradient(135deg,#4a5561,#20272f);border-radius:2px}.app .palette-item .pi-swatch.water{background:linear-gradient(180deg,#5a95c0,#305a7a);border-radius:2px}.app .palette-item .pi-swatch.player{background:linear-gradient(135deg,#3fd96a,#155534);border-radius:2px}.app .palette-item .pi-swatch.woodmill{background:linear-gradient(135deg,#7a5a2d,#3a2814);border-radius:2px}.app .palette-item .pi-swatch:not(.mountain):not(.water):not(.player):not(.woodmill){background:linear-gradient(135deg,#5a6f80,#202b3b);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:rgba(40,60,90,.55)}.app .palette-item.active{border-color:var(--frost);background:rgba(80,150,220,.18);box-shadow:0 0 0 1px var(--frost) inset,0 0 12px rgba(127,209,255,.35)}.app .palette-tools{display:flex;gap:6px;flex-wrap:wrap}.app .palette-tool{flex:1 1 auto;background:rgba(20,30,44,.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:rgba(80,150,220,.18)}.app .legend-section{padding:10px 14px;border-bottom:1px solid rgba(30,45,62,.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 rgba(60,80,100,.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 rgba(60,80,100,.4)}.app .legend-swatch.mountain{background:var(--mountain);background-image:linear-gradient(135deg,transparent 40%,rgba(0,0,0,.3) 60%)}.app .legend-swatch.water{background:var(--water);background-image:linear-gradient(135deg,rgba(255,255,255,.1) 40%,transparent 60%)}.app .legend-swatch.ground{background:var(--ground)}.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 rgba(60,80,100,.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:rgba(10,16,24,.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:#6aff7a;background:rgba(106,255,122,.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:#6aff7a}.app .layout-modes{display:flex;flex-direction:column;gap:6px}.app .layout-mode{background:rgba(10,16,24,.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:rgba(127,209,255,.08)}.app .layout-mode[data-layout=optimized].active{border-color:#6aff7a;background:rgba(106,255,122,.08)}.app .layout-mode[data-layout=custom].active{border-color:#ffb05a;background:rgba(255,176,90,.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:rgba(10,16,24,.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:rgba(127,209,255,.08)}.app .layout-action.danger{color:#ff8a4c}.app .layout-action.danger:hover{border-color:#ff8a4c;background:rgba(255,138,76,.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:rgba(127,209,255,.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:rgba(14,22,32,.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 rgba(127,209,255,.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 rgba(255,77,109,.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 rgba(0,0,0,.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:#6aff7a}.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:#6aff7a}.app .toast.toast-error .toast-title{color:var(--danger)}.app .modal-overlay{background:rgba(2,4,6,.65);z-index:100}.app .modal{border-top:2px solid var(--frost);box-shadow:0 12px 48px rgba(0,0,0,.7),0 0 24px rgba(127,209,255,.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{background:rgba(5,8,13,.85);font-size:13px;letter-spacing:.05em;transition:border-color .15s}.app .modal-actions{margin-top:8px}.app .modal-btn{background:rgba(10,16,24,.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:rgba(127,209,255,.08)}.app .modal-btn-ok:hover{background:rgba(127,209,255,.18)}.app .modal.modal-wide{max-width:460px}.app .modal-form{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px 12px;gap:10px 12px;margin:6px 0 4px}.app .modal-form label{display:flex;flex-direction:column;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:rgba(5,8,13,.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}.app .modal-form input[type=text]:focus,.app .modal-form select:focus{border-color:var(--frost)}.app .modal-form select option{background:#0d141e;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:rgba(127,209,255,.15);border:1px solid rgba(127,209,255,.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:rgba(127,209,255,.28);color:#fff}.app .edit-banner .mb-info[hidden]{display:none}.app .modal-overlay{position:fixed;inset:0;background:rgba(2,5,9,.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:rgba(14,22,32,.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 rgba(0,0,0,.6),0 0 0 1px rgba(127,209,255,.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:rgba(5,10,15,.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:rgba(127,209,255,.12);border-color:var(--frost)}.app .filters-list{padding:8px 10px;display:flex;flex-direction:column;gap:4px}.app .filter-pill{background:rgba(10,16,24,.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:rgba(127,209,255,.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:rgba(127,209,255,.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:rgba(40,70,110,.95);border:1px solid rgba(127,209,255,.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 rgba(127,209,255,.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 rgba(127,209,255,.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}.app .brand .sub{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{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{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 .brand .mark em{display:none}.app .brand .mark:after{content:"TRAP";color:var(--frost);margin-left:4px}.app .axis-hint,.app .hud-chip.cursor-chip .label{display:none}}