@font-face{font-family:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/034d78ad42e9620c-s.woff2) format("woff2");unicode-range:u+0900-097f,u+1cd0-1cf4,u+1cf7-1cf9,u+200c-200d,u+20a8,u+20b9,u+20f0,u+25cc,u+a830-a839,u+a8e0-a8ff,u+11b00-11b0a}@font-face{font-family:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/fe0777f1195381cb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Poppins;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/eafabf029ad39a43-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/db911767852bc875-s.woff2) format("woff2");unicode-range:u+0900-097f,u+1cd0-1cf4,u+1cf7-1cf9,u+200c-200d,u+20a8,u+20b9,u+20f0,u+25cc,u+a830-a839,u+a8e0-a8ff,u+11b00-11b0a}@font-face{font-family:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/f10b8e9d91f3edcb-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Poppins;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/8888a3826f4a3af4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/29e7bbdce9332268-s.woff2) format("woff2");unicode-range:u+0900-097f,u+1cd0-1cf4,u+1cf7-1cf9,u+200c-200d,u+20a8,u+20b9,u+20f0,u+25cc,u+a830-a839,u+a8e0-a8ff,u+11b00-11b0a}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/c3bc380753a8436c-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/0484562807a97172-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Poppins Fallback;src:local("Arial");ascent-override:93.62%;descent-override:31.21%;line-gap-override:8.92%;size-adjust:112.16%}.__className_618a02{font-family:Poppins,Poppins Fallback;font-style:normal}.__variable_618a02{--font-poppins:"Poppins","Poppins Fallback"}:root{--blue:#4a7cba;--blue-dark:#1e3a76;--salmon:#ff6e61;--yellow:#ffb84d;--sky:#7cc7e4;--ink:#171717;--charcoal:#343a40;--muted:#6d7175;--line:#e6e8eb;--bg:#f8f8f8;--card:#ffffff;--ok:#2f9e6e;--warn:#e0a030;--bad:#e2574c;--none:#a3a8ad;--gradient:linear-gradient(90deg,#ff6e61 -7%,#ffb84d 96%);--radius:14px;--shadow:0 1px 2px rgba(23,23,23,0.04),0 4px 16px rgba(23,23,23,0.05);--topbar:64px}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{font-family:var(--font-poppins),"Segoe UI",system-ui,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{color:var(--charcoal);letter-spacing:-.02em;margin:0}h1{font-size:24px}h1,h2{font-weight:600}h2{font-size:17px}.topbar{height:var(--topbar);background:#fff;border-bottom:1px solid var(--line);gap:24px;padding:0 20px;position:-webkit-sticky;position:sticky;top:0;z-index:1000}.topbar,.topbar .brand{display:flex;align-items:center}.topbar .brand{gap:12px}.topbar .brand img{height:30px;width:auto;display:block}.topbar .brand span{font-weight:600;color:var(--charcoal);font-size:15px;padding-left:12px;border-left:1px solid var(--line)}.topbar nav{display:flex;gap:4px;flex:1 1;overflow-x:auto}.topbar nav a{color:var(--muted);padding:8px 14px;border-radius:999px;font-weight:500;white-space:nowrap}.topbar nav a:hover{text-decoration:none;color:var(--charcoal);background:var(--bg)}.topbar nav a.active{color:var(--blue-dark);background:#eaf1fa}.topbar .who{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:13px;white-space:nowrap}.topbar .who strong{color:var(--charcoal);font-weight:500}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;cursor:pointer;font:inherit;font-weight:600;padding:10px 22px;border-radius:30px;background:var(--gradient);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;transition:opacity .15s,box-shadow .15s}.btn:hover{box-shadow:0 3px 8px rgba(255,110,97,.25);text-decoration:none}.btn:disabled{opacity:.55;cursor:default;box-shadow:none}.btn.secondary{background:#fff;border:1px solid var(--line);color:var(--charcoal);font-weight:500}.btn.secondary:hover{box-shadow:none;background:var(--bg)}.btn.ghost{background:transparent;color:var(--muted);font-weight:500;padding:6px 10px}.btn.ghost:hover{box-shadow:none;color:var(--charcoal);background:var(--bg)}.btn.danger{background:#fff;border:1px solid #f3c9c5;color:var(--bad);font-weight:500}.btn.small{padding:6px 14px;font-size:13px}input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 12px;width:100%;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(74,124,186,.15)}input[type=checkbox]{width:auto;accent-color:var(--blue)}label.field{display:grid;grid-gap:6px;gap:6px;font-weight:500;color:var(--charcoal);font-size:13px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.grow{flex:1 1;min-width:160px}.page{max-width:1180px;margin:0 auto;padding:28px 20px 60px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head p{margin:4px 0 0;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card.pad{padding:20px}.stack{display:grid;grid-gap:16px;gap:16px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:500;background:#fbfbfb}tr:last-child td{border-bottom:0}td .sub{color:var(--muted);font-size:12px}td input,td select{padding:6px 10px;font-size:13px}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;padding:3px 10px;border-radius:999px;background:var(--bg);color:var(--charcoal);white-space:nowrap}.pill.blue{background:#eaf1fa;color:var(--blue-dark)}.pill.salmon{background:#fff0ee;color:#b8473d}.pill.gray{background:#f1f2f3;color:var(--muted)}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}.dot.online{background:var(--ok)}.dot.stale{background:var(--warn)}.dot.offline{background:var(--bad)}.dot.nofix{background:var(--none)}.notice{padding:12px 16px;border-radius:12px;font-size:13px}.notice.ok{background:#e9f6f0;color:#1d6b49}.notice.err{background:#fdecea;color:#a5382f}.notice.info{background:#eaf1fa;color:var(--blue-dark)}.empty{padding:48px 20px;text-align:center;color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.muted{color:var(--muted)}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(1200px 600px at 10% -10%,#eaf1fa 0,transparent 60%),radial-gradient(900px 500px at 110% 110%,#fff0ee 0,transparent 60%),var(--bg)}.auth-card{width:100%;max-width:400px;padding:36px 32px}.auth-card img.logo{height:38px;width:auto;display:block;margin-bottom:28px}.auth-card h1{margin-bottom:6px}.auth-card p.lead{color:var(--muted);margin:0 0 24px}.auth-card form{display:grid;grid-gap:16px;gap:16px}.auth-card .btn{width:100%;padding:12px 22px}.auth-foot{margin-top:20px;text-align:center;font-size:13px;color:var(--muted)}.dash{display:grid;grid-template-columns:340px 1fr;height:calc(100vh - var(--topbar))}.side{background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.side-head{padding:16px;border-bottom:1px solid var(--line);display:grid;grid-gap:10px;gap:10px}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:6px;gap:6px}.stat{border:1px solid var(--line);border-radius:10px;padding:6px 8px;cursor:pointer;background:#fff;font:inherit;text-align:left}.stat b{display:block;font-size:16px;color:var(--charcoal);font-weight:600}.stat span{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:5px}.stat.on{border-color:var(--blue);background:#f4f8fd}.list{overflow-y:auto;flex:1 1}.dev{display:grid;grid-template-columns:auto 1fr auto;grid-gap:10px;gap:10px;align-items:center;padding:12px 16px;border:0;border-bottom:1px solid var(--line);cursor:pointer;background:#fff;width:100%;text-align:left;font:inherit;border-left:3px solid transparent}.dev:hover{background:#fafbfc}.dev.sel{background:#f4f8fd;border-left-color:var(--blue)}.dev .nm{font-weight:500;color:var(--charcoal)}.dev .meta,.dev .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dev .meta{font-size:12px;color:var(--muted)}.dev .when{font-size:11px;color:var(--muted);text-align:right;white-space:nowrap}.mapwrap{position:relative;min-height:0}.mapwrap .leaflet-container{height:100%;width:100%;font-family:inherit;background:#eef0f2}.panel{position:absolute;top:16px;right:16px;width:340px;max-height:calc(100% - 32px);overflow-y:auto;z-index:500;padding:18px}.panel-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;margin-bottom:4px}.kv{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px 14px;gap:12px 14px;margin:14px 0}.kv>div>span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.kv>div>b{font-weight:500;color:var(--charcoal);font-size:13px}.kv .wide{grid-column:1/-1}.bar{height:6px;background:var(--bg);border-radius:99px;overflow:hidden;margin-top:6px}.bar i{display:block;height:100%;background:var(--gradient)}.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px;background:#fff}.seg button{border:0;background:transparent;font:inherit;font-size:12px;padding:5px 12px;border-radius:999px;cursor:pointer;color:var(--muted);font-weight:500}.seg button.on{background:#eaf1fa;color:var(--blue-dark)}.signal{display:inline-flex;gap:2px;align-items:flex-end;height:12px;margin-right:6px}.signal i{display:block;width:3px;background:#dfe2e5;border-radius:1px}.signal i.f{background:var(--blue)}.pin{width:18px;height:18px;border-radius:50%;border:3px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.35);transition:transform .15s}.pin.online{background:var(--ok)}.pin.stale{background:var(--warn)}.pin.offline{background:var(--bad)}.pin.sel{transform:scale(1.35);box-shadow:0 0 0 6px rgba(74,124,186,.25),0 1px 4px rgba(0,0,0,.35)}.leaflet-tooltip.pin-label{background:#fff;border:0;border-radius:8px;box-shadow:var(--shadow);font-family:inherit;font-weight:500;color:var(--charcoal);padding:3px 8px}.trail-dot{width:8px;height:8px;border-radius:50%;background:var(--blue-dark);border:2px solid #fff}.map-empty{position:absolute;inset:0;display:grid;place-items:center;z-index:400;pointer-events:none}.map-empty>div{pointer-events:auto;max-width:360px;text-align:center;padding:24px}.mobile-toggle{display:none}@media (max-width:860px){.topbar{gap:12px;padding:0 12px}.topbar .brand span,.topbar .who a{display:none}.topbar .brand img{height:22px}.topbar nav a{padding:6px 10px}.dash{grid-template-columns:1fr;grid-template-rows:1fr;position:relative}.side{position:absolute;inset:0;z-index:600;display:none}.side.open{display:flex}.mobile-toggle{display:inline-flex;position:absolute;left:12px;top:12px;z-index:550}.panel{left:12px;right:12px;top:auto;bottom:12px;width:auto;max-height:55%}.page{padding:20px 16px 48px}}