:root{--bg:#101114;--panel:rgba(22,23,27,.94);--panel-solid:#17181c;--line:hsla(0,0%,100%,.09);--text:#f1f1f1;--muted:#a9abb3;--accent:#fc0;--ok:#2fd36f;--lock:#ff4d4f;--fault:#ffd23f;--rds:#3ddc97}body,html{background:var(--bg);color:var(--text);font-family:Titillium Web,system-ui,sans-serif;height:100%;margin:0;overflow:hidden;padding:0}#map-wrap{position:fixed}#map,#map-wrap{background:var(--bg);inset:0}#map{position:absolute}.leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.72) contrast(1.05) saturate(.5)}.leaflet-container{background:var(--bg);font-family:inherit}.overlay-top{background:linear-gradient(180deg,rgba(16,17,20,.85) 0,rgba(16,17,20,0));display:flex;justify-content:center;left:0;padding-bottom:40px;padding-top:max(18px,env(safe-area-inset-top));pointer-events:none;position:absolute;right:0;top:0;z-index:1000}.overlay-top img{filter:drop-shadow(0 4px 14px rgba(0,0,0,.7));height:88px;max-width:70vw;object-fit:contain}.overlay-bottom{bottom:0;left:0;padding-bottom:max(10px,env(safe-area-inset-bottom));pointer-events:none;position:absolute;right:0;z-index:1000}.overlay-bottom,.support{display:flex;justify-content:center}.support{background:var(--panel);border:1px solid var(--line);border-radius:999px;flex-wrap:wrap;font-size:.9rem;font-weight:600;gap:20px;padding:7px 18px;pointer-events:auto}.support a{align-items:center;color:var(--accent);display:inline-flex;gap:7px;text-decoration:none}.support a:hover{text-decoration:underline}.support a.mail{color:var(--text)}.support svg{flex:none;height:16px;width:16px}#status{background:var(--panel);border-radius:12px;color:var(--muted);font-weight:600;left:50%;padding:14px 22px;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1001}#status[hidden]{display:none}.overlay-notice{display:flex;justify-content:center;left:0;padding:0 16px;pointer-events:none;position:absolute;right:0;top:118px;z-index:1000}.overlay-notice[hidden]{display:none}.offline-notice{background:var(--panel);border:1px solid rgba(255,77,79,.45);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.5);max-width:560px;padding:12px 18px;pointer-events:auto;text-align:center}.offline-title{align-items:center;color:var(--lock);display:inline-flex;font-size:1.1rem;font-weight:700;gap:9px}.offline-dot{animation:offline-blink 1.6s ease-in-out infinite;background:var(--lock);border-radius:50%;box-shadow:0 0 10px rgba(255,77,79,.8);height:10px;width:10px}.offline-text{color:var(--muted);font-size:.9rem;line-height:1.4;margin-top:4px}.offline-text a{color:var(--accent);text-decoration:none}.offline-text a:hover{text-decoration:underline}@keyframes offline-blink{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.offline-dot{animation:none}}.srv-marker{background:transparent;border:0}.srv-marker.state-online{--dot:var(--ok);--dot-glow:rgba(47,211,111,.75)}.srv-marker.state-locked{--dot:var(--lock);--dot-glow:rgba(255,77,79,.75)}.srv-marker.state-fault{--dot:var(--fault);--dot-glow:rgba(255,210,63,.55)}.srv-dot{background:var(--dot,#888);border-radius:50%;box-shadow:0 0 0 3px rgba(16,17,20,.85),0 0 12px var(--dot-glow,transparent);box-sizing:border-box;height:16px;left:-8px;position:absolute;top:-8px;width:16px}.srv-marker.hidden-public .srv-dot{background:transparent;border:3px solid var(--dot,#888)}.srv-dot:after{animation:srv-pulse 2.6s ease-out infinite;border:2px solid var(--dot,#888);border-radius:50%;content:"";inset:-6px;opacity:0;position:absolute}.srv-marker.hidden-public .srv-dot:after{inset:-9px}.state-fault .srv-dot:after{animation:none}@keyframes srv-pulse{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(1.9)}}@media (prefers-reduced-motion:reduce){.srv-dot:after{animation:none}}.srv-label{color:#fff;font-size:.82rem;font-weight:700;left:0;line-height:1.2;pointer-events:none;position:absolute;text-shadow:0 0 3px #000,0 0 6px #000,0 1px 2px rgba(0,0,0,.9);top:11px;transform:translateX(-50%);white-space:nowrap}.srv-label.is-hidden{visibility:hidden}.leaflet-marker-icon:focus-visible{outline:none}.leaflet-marker-icon:focus-visible .srv-dot{box-shadow:0 0 0 3px rgba(16,17,20,.85),0 0 0 5px #fff}.modal{align-items:center;display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:2000}.modal[hidden]{display:none}.modal-backdrop{backdrop-filter:blur(2px);background:rgba(0,0,0,.6);inset:0;position:absolute}.modal-card{background:var(--panel-solid);border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.7);display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow-y:auto;padding:22px;position:relative;width:min(440px,100%)}.modal-close{background:hsla(0,0%,100%,.06);border:0;border-radius:50%;color:var(--muted);cursor:pointer;font-family:inherit;font-size:24px;height:36px;line-height:1;position:absolute;right:12px;top:12px;width:36px}.modal-close:hover{background:hsla(0,0%,100%,.12);color:#fff}.modal-close:focus-visible,.modal-go:focus-visible{outline:2px solid #fff;outline-offset:2px}.chip{align-items:center;align-self:flex-start;border-radius:999px;display:inline-flex;font-size:.78rem;font-weight:700;gap:7px;letter-spacing:.06em;padding:3px 10px;text-transform:uppercase}.chip:before{background:currentColor;border-radius:50%;content:"";height:8px;width:8px}.chip-online{background:rgba(47,211,111,.12);color:var(--ok)}.chip-locked{background:rgba(255,77,79,.12);color:var(--lock)}.chip-fault{background:rgba(255,210,63,.12);color:var(--fault)}.modal-name{color:var(--accent);font-size:1.6rem;font-weight:700;line-height:1.15;margin:0;padding-right:40px;text-wrap:balance}.modal-desc{color:var(--muted);font-size:.9rem;line-height:1.4}.modal-desc:empty{display:none}.modal-note{color:var(--muted);font-size:.88rem;line-height:1.4}.modal-badges{display:flex;flex-wrap:wrap;gap:6px}.modal-badges[hidden]{display:none}.badge{background:hsla(0,0%,100%,.08);border-radius:999px;color:var(--muted);font-size:.66rem;font-weight:700;letter-spacing:.05em;padding:2px 8px;text-transform:uppercase;white-space:nowrap}.rds{background:hsla(0,0%,100%,.04);border:1px solid hsla(0,0%,100%,.07);border-radius:12px;display:flex;flex-direction:column;gap:4px;padding:12px 14px}.rds-freq{font-size:1.05rem;font-variant-numeric:tabular-nums;font-weight:700}.rds-freq .pi{color:var(--muted);font-weight:600;margin-left:10px}.rds-empty{color:var(--muted);font-weight:400}.rds-ps{color:var(--rds);font-size:1.5rem;font-weight:500;min-height:1.3em;white-space:pre}.rds-ps,.rds-rt{font-family:Roboto Mono,monospace}.rds-rt{color:var(--muted);font-size:.78rem;min-height:1.2em;overflow-wrap:anywhere}.modal-meta{color:var(--muted);display:flex;font-size:.95rem;gap:22px}.modal-meta span{align-items:center;display:inline-flex;gap:7px}.modal-meta svg{flex:none;height:18px;width:18px}.modal-meta b{color:var(--text);font-variant-numeric:tabular-nums}.modal-go{background:var(--accent);border-radius:12px;color:#111;display:block;font-size:1.15rem;font-weight:700;margin-top:4px;padding:14px 16px;text-align:center;text-decoration:none}.modal-go:hover{color:#111;filter:brightness(1.08)}.modal-go.is-muted{background:#3a3b40;color:#c8c8c8}.leaflet-control-attribution{background:rgba(16,17,20,.7)!important;color:var(--muted)!important;font-size:10px}.leaflet-control-attribution a{color:var(--muted)!important}.leaflet-bar a{background:var(--panel)!important;border-bottom-color:var(--line)!important;color:var(--text)!important}.leaflet-bar a.leaflet-disabled{color:#555!important}