:root{
  --bg:#070b07; --panel:#0c120c; --line:#2a4a2a; --green:#7CFF6B; --amber:#ffb000;
  --dim:#4f7a4f; --red:#ff4d3d; --text:#b9f5b0;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--text);font:14px/1.4 "Share Tech Mono",ui-monospace,Menlo,monospace;display:flex;flex-direction:column;overflow:hidden}
.scan{position:fixed;inset:0;pointer-events:none;z-index:9999;
  background:repeating-linear-gradient(to bottom,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.18) 3px);mix-blend-mode:multiply}
.dim{color:var(--dim)} .hidden{display:none!important}
header{display:flex;align-items:center;gap:16px;padding:8px 14px;border-bottom:1px solid var(--line);background:#0a100a;flex-wrap:wrap}
.brand{font:700 20px Rajdhani,sans-serif;letter-spacing:.2em;color:var(--green);text-shadow:0 0 8px rgba(124,255,107,.5)}
.blink{animation:b 1.2s steps(2) infinite;color:var(--amber)} @keyframes b{50%{opacity:0}}
nav{display:flex;gap:4px;flex-wrap:wrap;flex:1}
nav button{background:transparent;border:1px solid var(--line);color:var(--dim);font:inherit;padding:4px 10px;cursor:pointer;text-transform:uppercase;letter-spacing:.1em}
nav button:hover{color:var(--green);border-color:var(--green)}
nav button.on{color:#000;background:var(--green);border-color:var(--green);box-shadow:0 0 10px rgba(124,255,107,.5)}
.status{display:flex;gap:14px;font-size:12px}
main{flex:1;display:flex;min-height:0}
.panel{background:var(--panel);border:1px solid var(--line);position:relative}
aside{width:290px;display:flex;flex-direction:column;border-width:0 1px 0 0;padding:10px;gap:8px;overflow:hidden}
.panel-h{color:var(--amber);letter-spacing:.15em;font-size:12px;border-bottom:1px dashed var(--line);padding-bottom:3px}
#filters{display:flex;flex-wrap:wrap;gap:4px}
.chip{border:1px solid var(--line);padding:2px 7px;cursor:pointer;font-size:12px;color:var(--dim);user-select:none}
.chip.on{color:var(--c);border-color:var(--c)}
#list{list-style:none;margin:0;padding:0;overflow:auto;flex:1}
#list li{padding:6px 4px;border-bottom:1px solid #16261a;cursor:pointer;display:flex;gap:8px;align-items:flex-start}
#list li:hover{background:#122012}
#list .dot{width:10px;height:10px;margin-top:4px;flex:none;border-radius:50%;background:var(--c);box-shadow:0 0 6px var(--c)}
#list small{display:block;color:var(--dim)}
.help{font-size:11px;border-top:1px dashed var(--line);padding-top:6px}
#mapwrap{flex:1;position:relative;min-width:0;background:#000}
#map{position:absolute;inset:0;background:#030603}
.leaflet-container{background:#030603;font-family:inherit}
.leaflet-container img.leaflet-image-layer{filter:saturate(.55) sepia(.25) hue-rotate(60deg) brightness(.85) contrast(1.1)}
.hud{position:absolute;width:26px;height:26px;border:2px solid var(--green);pointer-events:none;z-index:500;opacity:.8}
.hud.tl{top:8px;left:8px;border-right:0;border-bottom:0}.hud.tr{top:8px;right:8px;border-left:0;border-bottom:0}
.hud.bl{bottom:8px;left:8px;border-right:0;border-top:0}.hud.br{bottom:8px;right:8px;border-left:0;border-top:0}
.coords{position:absolute;left:44px;bottom:12px;z-index:500;color:var(--green);background:rgba(0,0,0,.6);padding:2px 8px;border:1px solid var(--line);font-size:12px;pointer-events:none}
.pin{width:22px;height:22px;border:2px solid var(--c);background:rgba(0,0,0,.65);border-radius:50%;display:grid;place-items:center;
  color:var(--c);font-size:11px;box-shadow:0 0 10px var(--c);position:relative}
.pin::after{content:"";position:absolute;inset:-8px;border:1px solid var(--c);border-radius:50%;opacity:.5;animation:ping 2.2s ease-out infinite}
@keyframes ping{from{transform:scale(.5);opacity:.8}to{transform:scale(1.3);opacity:0}}
.pin-label{position:absolute;left:26px;top:2px;white-space:nowrap;color:var(--c);text-shadow:0 0 3px #000,0 0 3px #000;font-size:12px;letter-spacing:.05em}
.leaflet-div-icon{background:none;border:0}
.leaflet-tooltip{background:#0c120c;color:var(--text);border:1px solid var(--line);font-family:inherit;box-shadow:none}
.leaflet-tooltip:before{display:none}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.8);display:grid;place-items:center;z-index:2000}
.login-box,.editor-box{width:min(380px,92vw);padding:18px;display:flex;flex-direction:column;gap:10px;box-shadow:0 0 30px rgba(124,255,107,.15)}
.title{font:700 18px Rajdhani,sans-serif;letter-spacing:.2em;color:var(--amber)}
label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--dim);letter-spacing:.15em}
input,select,textarea{background:#050805;border:1px solid var(--line);color:var(--green);font:inherit;padding:6px 8px;outline:0}
input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 6px rgba(124,255,107,.4)}
.btn{background:transparent;border:1px solid var(--line);color:var(--text);font:inherit;padding:6px 14px;cursor:pointer;letter-spacing:.1em}
.btn:hover{border-color:var(--green);color:var(--green)}
.btn.primary{background:var(--green);color:#000;border-color:var(--green)}
.btn.danger{color:var(--red);border-color:#5a2a25}.btn.danger:hover{border-color:var(--red)}
.row{display:flex;gap:8px;align-items:center}.grow{flex:1}
.err{color:var(--red);min-height:1em;font-size:12px}
@media(max-width:760px){
  main{flex-direction:column-reverse}
  aside{width:100%;height:36%;border-width:1px 0 0 0}
  .help{display:none}
}

.lbl{font-size:11px;letter-spacing:.15em;margin-bottom:-4px}
.pin-display{display:flex;justify-content:center;gap:12px;min-height:34px;align-items:center;border:1px solid var(--line);background:#050805;padding:6px;font-size:22px;color:var(--green);letter-spacing:.3em}
.pin-display.shake{animation:shake .35s;border-color:var(--red)}
@keyframes shake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.keypad button{background:#0a140a;border:1px solid var(--line);color:var(--green);font:inherit;padding:8px 0 6px;cursor:pointer;display:flex;flex-direction:column;align-items:center;line-height:1.1;min-height:56px;justify-content:center}
.keypad button b{font:700 22px Rajdhani,sans-serif}
.keypad button small{font-size:10px;letter-spacing:.2em;color:var(--dim);min-height:11px}
.keypad button:hover,.keypad button:active{border-color:var(--green);box-shadow:0 0 8px rgba(124,255,107,.4)}
.keypad button.act{font-size:12px;letter-spacing:.1em;color:var(--dim)}
.keypad button.go{background:var(--green);color:#000;border-color:var(--green)}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:3000;background:#0c120c;border:1px solid var(--green);color:var(--green);padding:8px 16px;letter-spacing:.1em}
.toast.bad{border-color:var(--red);color:var(--red)}
.pin{width:26px;height:26px;font-size:13px}
