:root{--font-sans:"Inter Tight","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--font-mono:"JetBrains Mono","IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;--fs-xxs:11.5px;--fs-xs:12.5px;--fs-sm:13.5px;--fs-md:14.5px;--fs-lg:16px;--fs-xl:19px;--fs-2xl:24px;--fs-3xl:30px;--fs-4xl:40px;--fs-5xl:58px;--bg:#fafafa;--bg-elev:#ffffff;--bg-sunken:#f4f4f3;--bg-hover:rgba(15,23,42,0.04);--bg-active:rgba(15,23,42,0.07);--border:rgba(15,23,42,0.08);--border-strong:rgba(15,23,42,0.14);--border-focus:var(--accent);--text:#0b1220;--text-soft:#3b4254;--text-muted:#6b7385;--text-faint:#9aa1b1;--text-on-accent:#ffffff;--accent:#2563eb;--accent-soft:rgba(37,99,235,0.10);--accent-strong:#1d4ed8;--ok:#15803d;--ok-soft:rgba(21,128,61,0.10);--warn:#b45309;--warn-soft:rgba(180,83,9,0.10);--danger:#b91c1c;--danger-soft:rgba(185,28,28,0.08);--map-bg:#eef1ee;--map-land:#e3e8e3;--map-water:#d6dee5;--map-line:rgba(15,23,42,0.10);--pin-active:#2563eb;--pin-warn:#d97706;--pin-blocked:#6b7385;--shadow-xs:0 1px 0 rgba(15,23,42,0.04);--shadow-sm:0 1px 2px rgba(15,23,42,0.06),0 0 0 0.5px rgba(15,23,42,0.04);--shadow-md:0 4px 12px rgba(15,23,42,0.06),0 1px 3px rgba(15,23,42,0.04);--shadow-lg:0 12px 32px rgba(15,23,42,0.10),0 2px 6px rgba(15,23,42,0.05);--r-xs:4px;--r-sm:6px;--r-md:8px;--r-lg:10px;--r-xl:14px;--r-2xl:18px;--r-pill:999px;--pad-x:18px;--pad-y:13px;--row-h:46px;--gap:18px;--gap-sm:12px}[data-theme=dark]{--bg:#0f1117;--bg-elev:#181e2c;--bg-sunken:#090c12;--bg-hover:rgba(255,255,255,0.06);--bg-active:rgba(255,255,255,0.10);--border:rgba(255,255,255,0.10);--border-strong:rgba(255,255,255,0.22);--text:#f0f4fb;--text-soft:#c2cbd9;--text-muted:#8892a6;--text-faint:#5c6678;--text-on-accent:#ffffff;--accent:#4d8ef8;--accent-soft:rgba(77,142,248,0.18);--accent-strong:#7ab0fc;--ok:#34d058;--ok-soft:rgba(52,208,88,0.15);--warn:#f59e0b;--warn-soft:rgba(245,158,11,0.16);--danger:#f87171;--danger-soft:rgba(248,113,113,0.16);--map-bg:#0a1628;--map-land:#0f1d2e;--map-water:#07111c;--map-line:rgba(255,255,255,0.06);--shadow-xs:0 1px 0 rgba(0,0,0,0.6);--shadow-sm:0 1px 3px rgba(0,0,0,0.55),0 0 0 0.5px rgba(255,255,255,0.06);--shadow-md:0 4px 16px rgba(0,0,0,0.6),0 1px 4px rgba(0,0,0,0.4);--shadow-lg:0 16px 48px rgba(0,0,0,0.7),0 4px 12px rgba(0,0,0,0.5)}[data-density=compact]{--pad-x:12px;--pad-y:8px;--row-h:36px;--gap:12px;--gap-sm:8px;--fs-md:13.5px;--fs-sm:12.5px}body,html{height:100%}body{margin:0;padding:0}.s-app,.s-app *{box-sizing:border-box}.s-app{font-family:var(--font-sans);font-feature-settings:"ss01","cv11";color:var(--text);background:var(--bg);font-size:var(--fs-md);line-height:1.45;letter-spacing:-.005em;width:100%;height:100%;position:relative;overflow:hidden}.s-app h1,.s-app h2,.s-app h3,.s-app h4,.s-app p{margin:0}.s-app button{font:inherit;cursor:pointer}.s-app input,.s-app select,.s-app textarea{font:inherit;color:inherit}.mono{font-family:var(--font-mono);font-feature-settings:"ss01"}.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.s-shell{display:grid;grid-template-columns:248px 1fr;width:100%;height:100%}[data-density=compact] .s-shell{grid-template-columns:220px 1fr}:root[data-sidebar=collapsed] .s-shell{grid-template-columns:1fr}:root[data-sidebar=collapsed] .s-topbar{padding-left:64px}.s-sidebar{background:var(--bg-elev);border-right:.5px solid var(--border);display:flex;flex-direction:column;padding:18px 14px;gap:4px;overflow:hidden}:root[data-sidebar=collapsed] .s-sidebar{position:fixed;top:0;left:0;bottom:0;width:min(264px,82vw);z-index:60;transform:translateX(-100%);transition:transform .22s ease;box-shadow:var(--shadow-lg)}:root[data-sidebar=collapsed] .s-sidebar.is-open{transform:translateX(0)}.s-kebab{position:fixed;top:12px;left:12px;z-index:55;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-elev);border:.5px solid var(--border);border-radius:var(--r-md);color:var(--text-soft);cursor:pointer;box-shadow:var(--shadow-sm)}.s-kebab:hover{background:var(--bg-hover);color:var(--text)}.s-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:59}.s-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:none;border-radius:var(--r-sm);color:var(--text-muted);cursor:pointer;transition:background .12s,color .12s}.s-icon-btn:hover{background:var(--bg-hover);color:var(--text)}.s-brand{display:flex;align-items:center;gap:8px;padding:4px 8px 14px}.s-brand-mark{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;position:relative;flex-shrink:0}.s-brand-mark>svg{width:100%;height:100%}.s-brand-name{font-weight:600;font-size:13.5px;letter-spacing:-.01em}.s-brand-tag{font-size:9px;font-weight:500;color:var(--text-muted);margin-top:1px}.s-brand-tag,.s-nav-section{letter-spacing:.08em;text-transform:uppercase}.s-nav-section{font-size:9.5px;font-weight:600;color:var(--text-faint);padding:14px 10px 6px}.s-nav-item{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:var(--r-md);color:var(--text-soft);font-weight:500;font-size:var(--fs-md);cursor:default;transition:background .12s;text-decoration:none;background:transparent;border:none}.s-nav-item:hover{background:var(--bg-hover)}.s-nav-item.is-active{background:var(--bg-active);color:var(--text)}.s-nav-item .ico{width:16px;height:16px;flex-shrink:0;opacity:.85}.s-nav-item.is-active .ico{opacity:1;color:var(--accent)}.s-nav-item .count{margin-left:auto;font-size:10.5px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-faint);background:var(--bg-sunken);padding:1px 6px;border-radius:999px}.s-main{display:flex;flex-direction:column;min-width:0;background:var(--bg);overflow:hidden}.s-topbar{height:62px;border-bottom:.5px solid var(--border);background:var(--bg-elev);display:flex;align-items:center;padding:0 24px;gap:14px;flex-shrink:0}.s-topbar-title{font-weight:600;font-size:var(--fs-lg);letter-spacing:-.01em}.s-topbar-sub{color:var(--text-muted);font-size:var(--fs-sm)}.s-topbar-spacer{flex:1 1}.s-topbar-titles{display:flex;flex-direction:column;gap:1px;min-width:0}@media (max-width:900px){.s-topbar-titles{display:none}}.s-content{flex:1 1;overflow:auto;padding:24px 28px;scrollbar-width:none}.s-content::-webkit-scrollbar{display:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 16px;border-radius:var(--r-md);border:.5px solid var(--border-strong);background:var(--bg-elev);color:var(--text);font-weight:500;font-size:var(--fs-md);white-space:nowrap;transition:background .12s,border-color .12s,transform .04s;cursor:default;letter-spacing:-.005em}.btn:hover{background:var(--bg-hover)}.btn:active{transform:translateY(.5px)}.btn .ico{width:14px;height:14px}.btn-primary{background:var(--text);color:var(--bg-elev);border-color:transparent}[data-theme=dark] .btn-primary{background:var(--text);color:#0f1117}.btn-primary:hover{background:var(--text);opacity:.88}.btn-console{background:linear-gradient(180deg,#0f2a48,#0a1c33);color:#fff;border-color:transparent}.btn-console:hover{background:linear-gradient(180deg,#12345a,#0c2440);opacity:1}.btn-accent{background:var(--accent);color:var(--text-on-accent);border-color:transparent}.btn-accent:hover{background:var(--accent-strong)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-soft)}.btn-ghost:hover{background:var(--bg-hover);color:var(--text)}.btn-danger{background:var(--danger);color:white;border-color:transparent}.btn-sm{height:32px;padding:0 12px;font-size:var(--fs-sm)}.btn-lg{height:46px;padding:0 22px;font-size:var(--fs-lg)}.btn-icon{width:36px;padding:0}.menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;background:none;border:none;border-radius:var(--r-sm,6px);cursor:pointer;font-size:var(--fs-sm);color:var(--text);text-align:left;transition:background .1s}.menu-item:hover{background:var(--bg-hover)}.menu-item-danger{color:var(--danger)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:var(--fs-sm);font-weight:500;color:var(--text-soft)}.field-hint{font-size:var(--fs-xs);color:var(--text-muted)}.input{height:40px;padding:0 14px;border-radius:var(--r-md);border:.5px solid var(--border-strong);background:var(--bg-elev);color:var(--text);font-size:var(--fs-md);outline:none;transition:border-color .12s,box-shadow .12s;width:100%}.input::placeholder{color:var(--text-faint)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input-search{width:100%;padding:10px 14px 10px 38px;border:1px solid #636466;border-radius:10px;font-size:14px;color:#1e293b;background-color:#f8fafc;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'><circle cx='11' cy='11' r='7'/><path d='M21 21l-4.3-4.3'/></svg>");background-repeat:no-repeat;background-position:12px;transition:all .2s ease}.card{background:var(--bg-elev);border:.5px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-sm)}.card-header{padding:18px 20px;border-bottom:.5px solid var(--border);display:flex;align-items:center;gap:12px}.card-title{font-weight:600;font-size:var(--fs-md);letter-spacing:-.005em}.card-sub{color:var(--text-muted);font-size:var(--fs-sm)}.card-body{padding:20px}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:500;letter-spacing:.005em;background:var(--bg-sunken);color:var(--text-soft);border:.5px solid var(--border);white-space:nowrap}.badge .dot{width:5px;height:5px;border-radius:50%;background:currentColor}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-ok,.badge-warn{border-color:transparent}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-danger{background:var(--danger-soft);color:var(--danger);border-color:transparent}.badge-accent{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent}.table{width:100%;border-collapse:collapse;font-size:var(--fs-md)}.table th{text-align:left;font-weight:500;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:13px 16px;background:var(--bg-sunken)}.table td,.table th{border-bottom:.5px solid var(--border)}.table td{padding:14px 16px;vertical-align:middle}[data-density=compact] .table td{padding:9px 14px}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:var(--bg-hover)}.spark{display:block}.hr{height:.5px;background:var(--border);margin:14px 0;border:0}.s-map-wrap{position:relative;width:100%;height:100%;background:var(--map-bg);overflow:hidden}.s-map-svg{width:100%;height:100%;display:block}.s-map-overlay-bl,.s-map-overlay-br,.s-map-overlay-tl,.s-map-overlay-tr{position:absolute;z-index:5}.s-map-overlay-tl{top:14px;left:14px}.s-map-overlay-tr{top:14px;right:14px}.s-map-overlay-bl{bottom:14px;left:14px}.s-map-overlay-br{bottom:14px;right:14px}.map-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;background:var(--bg-elev);border:.5px solid var(--border);border-radius:var(--r-pill);box-shadow:var(--shadow-md);font-size:var(--fs-sm);color:var(--text)}[data-theme=dark] .map-pill{background:rgba(17,22,31,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.pin{position:absolute;transform:translate(-50%,-100%)}.pin-dot{width:12px;height:12px;border-radius:50%;background:var(--pin-active);border:2px solid white;box-shadow:0 1px 4px rgba(0,0,0,.4);transform:translateY(50%)}[data-theme=dark] .pin-dot{border-color:rgba(255,255,255,.85)}.wordmark{font-family:var(--font-sans);font-weight:700;letter-spacing:-.02em;font-size:18px}.maplibregl-canvas:focus{outline:none}[data-theme=dark] .maplibregl-canvas{filter:invert(1) hue-rotate(195deg) saturate(.55) brightness(.75)}.maplibregl-ctrl-group{background:var(--bg-elev)!important;border:1px solid var(--border)!important;border-radius:var(--r-md)!important;box-shadow:var(--shadow-md)!important}.maplibregl-ctrl-group button{background-color:transparent!important;border:none!important;color:var(--text-soft)!important;width:32px!important;height:32px!important}.maplibregl-ctrl-group button:hover{background-color:var(--bg-hover)!important}.maplibregl-ctrl-group button+button{border-top:1px solid var(--border)!important}.maplibregl-ctrl-attrib{background:transparent!important;font-size:9px!important;color:var(--text-faint)!important}.maplibregl-ctrl-attrib-button{display:none!important}.maplibregl-popup-content{background:var(--bg-elev)!important;border:1px solid var(--border)!important;border-radius:var(--r-lg)!important;box-shadow:var(--shadow-lg)!important;padding:12px 14px!important;color:var(--text)!important}.maplibregl-popup-tip{display:none!important}.maplibregl-popup-close-button{color:var(--text-muted)!important;font-size:16px!important;padding:4px 8px!important}@keyframes occ-ping{0%{transform:scale(1);opacity:.7}80%,to{transform:scale(2.8);opacity:0}}.occ-ring{animation:occ-ping 2s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.25}}@keyframes lp-fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes lp-radar-sweep{to{transform:rotate(1turn)}}@keyframes lp-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes lp-ping{0%{transform:scale(.6);opacity:.55}70%,to{transform:scale(2.6);opacity:0}}.lp-scroll{height:100%;width:100%;overflow-y:auto;overflow-x:hidden;background:var(--bg);scrollbar-width:thin}.lp-reveal{animation:lp-fade-up .7s cubic-bezier(.16,1,.3,1) both}.lp-feature{background:var(--bg-elev);border:.5px solid var(--border);border-radius:var(--r-xl);padding:24px;box-shadow:var(--shadow-xs);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.lp-feature:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--border-strong)}.lp-feature-ico{width:40px;height:40px;display:grid;place-items:center;border-radius:var(--r-lg);background:var(--accent-soft);color:var(--accent);margin-bottom:16px}.lp-navlink{color:var(--text-soft);text-decoration:none;font-size:var(--fs-sm);font-weight:500;transition:color .12s}.lp-navlink:hover{color:var(--text)}@keyframes lp-marquee{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.lp-marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}.lp-marquee-track{display:flex;width:max-content;animation-name:lp-marquee;animation-timing-function:linear;animation-iteration-count:infinite}.lp-marquee:focus-within .lp-marquee-track,.lp-marquee:hover .lp-marquee-track{animation-play-state:paused}.lp-marquee-group{display:flex;align-items:center}.lp-marquee{--lp-logo-w:320px;--lp-logo-h:100px}.lp-partner{flex:0 0 auto;display:grid;place-items:center;height:calc(var(--lp-logo-h) + 16px);padding:0 clamp(22px,4vw,46px)}.lp-partner a{display:grid;place-items:center}.lp-partner img{width:var(--lp-logo-w);height:var(--lp-logo-h);object-fit:contain;object-position:center;filter:grayscale(1);opacity:.6;transition:filter .2s ease,opacity .2s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.lp-partner:hover img{filter:none;opacity:1}[data-theme=dark] .lp-partner img{filter:brightness(0) invert(1);opacity:.55}[data-theme=dark] .lp-partner:hover img{filter:brightness(0) invert(1);opacity:1}@media (prefers-reduced-motion:reduce){.lp-marquee-track{animation:none}.lp-marquee{overflow-x:auto;scrollbar-width:thin}}.blog-row{display:grid;grid-template-columns:1fr 3fr;grid-gap:28px;gap:28px;align-items:center}.blog-row+.blog-row{margin-top:28px}@media (max-width:640px){.blog-row{grid-template-columns:1fr;gap:16px}}