@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@500;600;700&display=swap";:root{--space-2xs:2px;--space-xs:4px;--space-sm:6px;--space-md:8px;--space-lg:12px;--space-xl:16px;--space-2xl:20px;--space-3xl:24px;--font-micro:.625rem;--font-2xs:.6875rem;--font-xs:.75rem;--font-sm:.8125rem;--font-base:.875rem;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;--elevation-0:#f5f7fa;--elevation-1:#fffffff0;--elevation-2:#edf0f5d9;--elevation-3:#fff;--elevation-hover:#dfe4eccc;--acrylic-blur:blur(16px);--acrylic-saturate:saturate(180%);--border-subtle:#6b768740;--border-strong:#4a546466;--border-focus:#0b2a6b;--shadow-window:0 16px 36px -4px #0c0f1429, 0 0 0 1px #6b76872e;--shadow-window-active:0 20px 48px -4px #0b2a6b38, 0 0 0 1px #0b2a6b59;--status-active-bg:#17914f1f;--status-active-text:#0f6b3a;--status-active-border:#17914f4d;--status-planned-bg:#c07d0a1f;--status-planned-text:#8a5a13;--status-planned-border:#c07d0a4d;--status-faulty-bg:#cf3a371f;--status-faulty-text:#c22f2c;--status-faulty-border:#cf3a374d;--tech-5g-nr:#a53292;--tech-4g-lte:#2563c9;--tech-3g-umts:#1e8750;--tech-2g-gsm:#a36b17;--tech-wifi:#0c8299;--link-microwave:#2f6fe0;--link-unlicensed:#1f9d5c;--link-backhaul:#7c4dcc;--link-fiber:#d9622a;--link-fttx:#b0369c;--link-inactive:#6a788b;--layer-ran:#7c4dcc;--layer-distribution:#c2418e;--layer-core:#7b8698;--layer-site-db:#1a8fb8;--layer-map:#227a47;--layer-terrain:#8a7a63;--layer-microwave:#2f6fe0;--secondary-soft:#e07ab4;--layer-buildings:#97a1b2;--marker-pin:#d1365c;--marker-line:#0d8a9e;--marker-polygon:#7c4dcc;--marker-text:#2f6fe0;--marker-alert:#c07d0a;--marker-check:#1f9d5c;--marker-info:#1a8fb8;--site-marker:#d9622a;--site-marker-selected:#0d8a9e;--site-marker-link-start:#c07d0a;--signal-excellent:#1f9ae0;--signal-good:#1c9c57;--signal-fair:#b8891a;--signal-poor:#e0742a;--signal-weak:#cf3a37;--signal-edge:#7d1f1d;--terrain-ground-top:#c9a06b;--terrain-ground-bottom:#8f6a45;--terrain-building-top:#6b7687;--terrain-building-bottom:#363e4a;--terrain-veg-top:#2f9e63;--terrain-veg-bottom:#1a7a49;--terrain-building-stroke:#232932;--terrain-sky-top:#f5f7fa;--terrain-sky-bottom:#edf0f5;--profile-fresnel:#7c4dcc;--profile-los:#2f6fe0;--profile-clearance:#c07d0a;--profile-near-end:#cf3a37;--profile-far-end:#b0369c;--logo-grad-1:#0b2a6b;--logo-grad-2:#2f6fe0;--logo-grad-3:#0e9cb8;--logo-grad-alt-1:#2bb8cf;--logo-grad-alt-2:#4a77bd;--logo-accent:#2bb8cf;--logo-body:#151a20;--sector-1:#d94436;--sector-2:#2f9e5c;--sector-3:#2f74d8;--sector-4:#0e9cb8;--sector-5:#c99a15;--sector-6:#b950c4;--measure-line:#b394e4;--measure-line-active:#7c4dcc;--text-halo:#0c0f14;--layer-buildings-3d:#dfe4ec;--site-marker-3d:#d9622a;--site-marker-selected-3d:#0d8a9e;--tech-wifi-3d:#0c8299;--equipment-rru:#6b7687;--equipment-antenna:#f5f7fa;--beam-1:#d94436;--beam-2:#2f9e5c;--beam-3:#2f74d8;--beam-4:#0e9cb8;--beam-5:#c99a15;--beam-6:#b950c4;--fttx-pole:#7b8698;--fttx-odp:#1f9d5c;--fttx-odc:#2f6fe0;--fttx-odf:#c07d0a;--fttx-onu:#c2418e;--fttx-joint:#7c4dcc;--tower-red:#cf3a37;--tower-white:#f5f7fa;--tower-steel:#6b7687;--tower-sel:#0d8a9e;--tower-sel-light:#7adcea;--tower-sel-steel:#2bb8cf;--kpi-good:#15874a;--kpi-warn:#a26a17;--kpi-bad:#b03330;--kpi-na:#6b7687;--chart-alt-1:#7c4dcc;--chart-alt-2:#1f9d5c;--chart-alt-3:#c07d0a;--chart-alt-4:#c2418e;--chart-alt-5:#0d8a9e;--info-light:#e8f0fd;--violet-light:#f0eafa;--orange-light:#fdf0e6;--rose-light:#fbe9ee;--accent-light:#e0f4f8;--accent-deep:#095f6d;--error-soft:#e88a88;--error-lightest:#fdeceb;--error-deep:#a52926;--success-deep:#0c5c32;--warning-border:#f0dca8;--warning-amber:#8f5c07;--link-fiber-hover:#b34e1c;--violet-deepest:#4a2a86;--neutral-panel:#f5f7fa;--success-tint:#dcf3e6;--map-bg:#e8edf2;--surface-inverted-deep:#0f131a;--surface-inverted-void:#060809;--compass-north:#e8524d;--success-mint:#3fc47f;--surface-inverted:#151a20;--surface-inverted-raised:#232932;--surface-inverted-hover:#363e4a;--border-inverted:#363e4a;--text-on-inverted:#f5f7fa;--text-on-inverted-muted:#97a1b2;--text-on-inverted-dim:#6b7687;--on-accent:#fff;--on-fill:#fff;--on-signal:#0c0f14;--milestone-on-air:#1a8fb8;--milestone-basic-test:#b8791a;--milestone-dt-ongoing:#e0742a;--milestone-dt-done:#c99a15;--milestone-ssv:#1f9d5c;--milestone-isdp:#2f6fe0;--milestone-final:#7c4dcc;--chart-1:#d94436;--chart-2:#2f9e5c;--chart-3:#2f74d8;--chart-4:#0e9cb8;--chart-5:#c99a15;--chart-6:#b950c4;--border-light:#dfe4ec;--primary-rgb:11, 42, 107;--accent-rgb:12, 130, 148;--accent-soft-rgb:43, 184, 207;--success-rgb:21, 135, 74;--warning-rgb:163, 106, 8;--error-rgb:207, 58, 55;--info-rgb:47, 111, 224;--violet-rgb:124, 77, 204;--fiber-rgb:217, 98, 42;--text-light-rgb:98, 109, 126;--bg-rgb:245, 247, 250;--scrim-rgb:12, 15, 20;--panel-dark-rgb:21, 26, 32}:root[data-theme=dark]{--elevation-0:#06080b;--elevation-1:#151a20eb;--elevation-2:#232932b3;--elevation-3:#232932;--elevation-hover:#363e4ad9;--border-subtle:#ffffff1f;--border-strong:#fff3;--shadow-window:0 20px 45px -5px #000000b3, 0 0 0 1px #ffffff1f;--shadow-window-active:0 24px 50px -5px #9dc0f54d, 0 0 0 1px #9dc0f561;--status-active-bg:#3fc47f2e;--status-active-text:#38ad70;--status-active-border:#3fc47f59;--status-planned-bg:#e8a33c2e;--status-planned-text:#d99b33;--status-planned-border:#e8a33c59;--status-faulty-bg:#ef6b682e;--status-faulty-text:#ed7f7c;--status-faulty-border:#ef6b6859;--layer-core:#97a1b2;--layer-buildings:#6b7687;--terrain-building-top:#4a5464;--terrain-building-bottom:#232932;--signal-edge:#a52926;--text-halo:#000;--layer-buildings-3d:#363e4a;--equipment-antenna:#dfe4ec;--terrain-building-stroke:#0c0f14;--terrain-sky-top:#151a20;--terrain-sky-bottom:#0c0f14;--logo-body:#f5f7fa;--info-light:#2f6fe026;--violet-light:#7c4dcc26;--orange-light:#e0742a26;--rose-light:#d1365c26;--accent-light:#2fb6cc26;--accent-deep:#7adcea;--error-lightest:#ef6b681f;--neutral-panel:#232932;--success-tint:#3fc47f2e;--map-bg:#0a0d12;--kpi-good:#38ad70;--kpi-warn:#d99b33;--kpi-bad:#ed7f7c;--kpi-na:#97a1b2;--warning-amber:#be7b16;--border-light:#ffffff1a;--accent:#2796a8;--beam-1:#ef6b68;--beam-2:#43c98a;--beam-3:#6098f5;--beam-4:#3cc0da;--beam-5:#e8bf3c;--beam-6:#d972c5;--border-focus:#9dc0f5;--chart-1:#ef6b68;--chart-2:#43c98a;--chart-3:#6098f5;--chart-4:#3cc0da;--chart-5:#e8bf3c;--chart-6:#d972c5;--equipment-rru:#97a1b2;--error:#ed5551;--error-deep:#ef6b68;--error-soft:#f29e9c;--layer-distribution:#e07ab4;--layer-map:#43c98a;--layer-microwave:#6098f5;--layer-ran:#a889e0;--layer-site-db:#3cc0da;--layer-terrain:#b5a68c;--link-backhaul:#a889e0;--link-fiber:#f0954f;--link-fiber-hover:#f0954f;--link-fttx:#e274cf;--link-inactive:#6b7687;--link-microwave:#6098f5;--link-unlicensed:#43c98a;--primary:#9dc0f5;--primary-hover:#bcd5f9;--sector-1:#ef6b68;--sector-2:#43c98a;--sector-3:#6098f5;--sector-4:#3cc0da;--sector-5:#e8bf3c;--sector-6:#d972c5;--signal-excellent:#3cb8f0;--signal-fair:#e8bf3c;--signal-good:#309b63;--signal-poor:#da6913;--signal-weak:#ef6b68;--site-marker:#f0954f;--site-marker-3d:#f0954f;--site-marker-link-start:#e8a33c;--site-marker-selected:#2fb6cc;--site-marker-selected-3d:#2fb6cc;--success:#309b63;--success-deep:#3fc47f;--success-mint:#4bbd80;--tech-2g-gsm:#e8a33c;--tech-3g-umts:#43c98a;--tech-4g-lte:#6098f5;--tech-5g-nr:#e274cf;--tech-wifi:#3cc0da;--tech-wifi-3d:#3cc0da;--warning:#be7b16;--warning-border:#e8a33c59;--on-fill:#0c0f14;--primary-rgb:157, 192, 245;--accent-rgb:39, 150, 168;--accent-soft-rgb:122, 220, 234;--success-rgb:48, 155, 99;--warning-rgb:190, 123, 22;--error-rgb:237, 85, 81;--info-rgb:69, 135, 243;--violet-rgb:168, 137, 224;--fiber-rgb:240, 149, 79;--text-light-rgb:151, 161, 178;--bg-rgb:12, 15, 20}.gpu-layer{backface-visibility:hidden;perspective:1000px;transform:translateZ(0)}.contain-paint{contain:paint layout}.contain-strict{contain:strict}:root{--primary:#0b2a6b;--primary-hover:#081f52;--primary-light:#0b2a6b1a;--primary-soft:#4a77bd;--secondary:#c2418e;--accent:#0c8294;--accent-hover:#095f6d;--accent-soft:#2bb8cf;--info:#2f6fe0;--info-soft:#7aa8f0;--success-bright:#1c9c57;--success-soft:#6cd6a3;--warning-soft:#e8b44a;--violet:#7c4dcc;--violet-soft:#b394e4;--violet-deep:#5f37a8;--magenta:#b0369c;--rose:#d1365c;--orange:#e0742a;--orange-soft:#efa670;--orange-deep:#c25a17;--teal:#0d8a9e;--cyan:#0e9cb8;--success:#15874a;--warning:#a36a08;--error:#cf3a37;--success-light:#17914f1a;--warning-light:#c07d0a1a;--error-light:#cf3a371a;--warning-dark:#7a4e05;--success-dark:#0c5c32;--error-dark:#8a1f1d;--bg:#f5f7fa;--surface:#fff;--surface-hover:#edf0f5;--sidebar-bg:#fff;--text:#151a20;--text-muted:#363e4a;--text-light:#626d7e;--border:#c7cfdb;--shadow-sm:0 1px 3px #0c0f141a;--shadow-md:0 4px 12px #0c0f1414;--shadow-lg:0 10px 25px #0c0f141a;--panel-bg:#ffffffeb;--panel-border:#ffffff8c;--glass-blur:blur(10px) saturate(160%);--r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:20px;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,sans-serif;line-height:1.5;transition:background-color .2s,color .1s}:root[data-theme=dark]{--bg:#0c0f14;--surface:#151a20;--surface-hover:#232932;--sidebar-bg:#0c0f14;--text:#f5f7fa;--text-muted:#c7cfdb;--text-light:#97a1b2;--border:#363e4a;--primary-light:#9dc0f533;--primary-soft:#c9dcfa;--accent-hover:#3fb0c2;--accent-soft:#5cc6d6;--info:#4587f3;--info-soft:#9dbcf8;--success-bright:#38ad70;--success-soft:#86e3b8;--warning-soft:#d99b33;--violet:#a889e0;--violet-soft:#c4aeeb;--violet-deep:#a889e0;--magenta:#e879f9;--rose:#fb7185;--orange:#f0954f;--orange-soft:#f5bd93;--orange-deep:#f0954f;--teal:#2dd4bf;--cyan:#22d3ee;--success-light:#3fc47f33;--warning-light:#e8a33c33;--error-light:#ef6b6833;--warning-dark:#f2c76b;--success-dark:#4fd48d;--error-dark:#f29e9c;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 10px 25px #00000080;--panel-bg:#151a20db;--panel-border:#ffffff14}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;overflow:hidden}h1,h2,h3,h4,h5,h6{color:var(--text);font-family:Outfit,sans-serif;font-weight:600;line-height:1.25}button{cursor:pointer;border:none;outline:none;font-family:inherit;transition:all .18s}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}.leaflet-container{background:var(--map-bg)}.leaflet-control-attribution{background:var(--panel-bg)!important;color:var(--text-light)!important}.leaflet-control-attribution a{color:var(--text-muted)!important}.leaflet-popup-content-wrapper{background:var(--surface)!important;color:var(--text)!important;border:1px solid var(--border)!important;border-radius:var(--r-lg)!important;box-shadow:var(--shadow-lg)!important;padding:0!important}.leaflet-popup-tip{background:var(--surface)!important}.leaflet-popup-content{margin:0!important}.leaflet-container a.leaflet-popup-close-button{color:var(--text-muted)!important;top:10px!important;right:10px!important}.leaflet-container a.leaflet-popup-close-button:hover{color:var(--text)!important}.leaflet-div-icon{background:0 0!important;border:none!important;overflow:visible!important}.wf-section{background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-sm);border:1px solid var(--border);margin-bottom:.5rem;padding:1.5rem}.wf-header{justify-content:space-between;align-items:flex-start;margin-bottom:1.25rem;display:flex}.wf-title{color:var(--text);margin-bottom:2px;font-size:1.1rem;font-weight:700}.wf-subtitle{color:var(--text-muted);font-size:.8125rem}.wf-grid{grid-template-columns:repeat(3,1fr);gap:1.25rem;margin-top:1.5rem;display:grid}@media (width<=1100px){.wf-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){.wf-grid{grid-template-columns:1fr}}.wf-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-sm);flex-direction:column;gap:1.25rem;height:100%;padding:1.5rem;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex}.wf-card:hover{border-color:var(--primary-light);box-shadow:var(--shadow-md);transform:translateY(-2px)}.wf-card-hdr{align-items:center;gap:.875rem;display:flex}.wf-num{background:var(--primary-light);width:32px;height:32px;color:var(--primary);border:1px solid #0000;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8125rem;font-weight:800;display:flex}.wf-num.done{background:var(--success-light);color:var(--success);border-color:var(--success)}.wf-card-meta{flex-direction:column;flex:1;gap:2px;display:flex}.wf-card-title{color:var(--text);font-size:.9375rem;font-weight:800;line-height:1}.wf-card-desc{color:var(--text-muted);font-size:.75rem}.import-zone{border:2px dashed var(--border);border-radius:var(--r-lg);background:var(--bg);cursor:pointer;justify-content:center;align-items:center;width:100%;min-height:120px;padding:1.25rem;transition:all .2s;display:flex}.import-zone:hover,.import-zone.drag{border-color:var(--primary);background:var(--primary-light)}.import-zone.err{border-color:var(--error);background:var(--error-light)}.iz-content{align-items:center;gap:1rem;width:100%;display:flex}.iz-icon{background:var(--primary-light);width:44px;height:44px;color:var(--primary);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.iz-text{flex-direction:column;flex:1;gap:2px;display:flex}.iz-text strong{color:var(--text);font-size:.8125rem;font-weight:700}.iz-text span{color:var(--text-muted);font-size:.7rem;line-height:1.3}.iz-text code{background:#0000000d;border-radius:4px;padding:1px 4px}.wf-card-footer{border-top:1px solid #0000;justify-content:flex-end;align-items:center;gap:10px;margin-top:auto;padding-top:10px;display:flex}.wf-card-actions{align-items:center;gap:6px;display:flex}.wf-status-pill{color:var(--success);background:var(--success-light);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:.7rem;font-weight:700;display:flex}.wf-btn{background:var(--surface-hover);border:1px solid var(--border);color:var(--text-muted);border-radius:6px;align-items:center;gap:4px;padding:4px 10px;font-size:.6875rem;font-weight:700;transition:all .2s;display:flex}.wf-btn:hover{background:var(--primary-light);color:var(--primary);border-color:var(--primary)}.wf-btn.danger:hover{background:var(--error-light);color:var(--error);border-color:var(--error)}.iz-spin{border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite iz-spin}@keyframes iz-spin{to{transform:rotate(360deg)}}.wf-badge{white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:.6875rem;font-weight:700}.wf-badge.ok{background:var(--success-tint);color:var(--kpi-good)}.glass-morphism{background:var(--panel-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border)}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.3s ease-out both fadeUp}.leaflet-tooltip.sector-tooltip{pointer-events:none;background:var(--on-accent)!important;color:var(--on-signal)!important;border:1px solid #00000017!important;border-radius:8px!important;padding:7px 11px!important;font-family:Inter,sans-serif!important;font-size:12px!important;line-height:1.55!important;box-shadow:0 4px 16px #0000001a!important}.leaflet-tooltip.sector-tooltip:before{display:none!important}.fp-glass{transition:color .2s,background-color .2s}[data-theme=dark] .fp-glass{text-shadow:none}[data-theme=dark] .kpi-period{background:var(--surface-hover)!important;color:var(--text)!important}[data-theme=dark] .kpi-section-hdr{color:var(--text-light)!important}[data-theme=dark] .kpi-num-tile{background:var(--surface-hover)!important;border-color:var(--border-inverted)!important}[data-theme=dark] .kpi-no-data{background:var(--surface)!important;border-color:var(--border)!important}@keyframes marker-pulse{0%{box-shadow:0 0 0 0 rgba(var(--primary-rgb), .7)}70%{box-shadow:0 0 0 15px rgba(var(--primary-rgb), 0)}to{box-shadow:0 0 0 0 rgba(var(--primary-rgb), 0)}}.tools-menu{background:var(--surface);border:1px solid var(--border);width:230px;box-shadow:var(--shadow-xl);z-index:5000;border-radius:12px;padding:6px;animation:.2s cubic-bezier(.17,.67,.83,.67) toolsPop;position:absolute;top:calc(100% + 8px);right:0}.tools-menu.left-align{left:0;right:auto}@keyframes toolsPop{0%{opacity:0;transform:translateY(-10px)scale(.95)}}.tools-menu-hdr{color:var(--text-muted);text-transform:uppercase;opacity:.6;padding:8px 10px;font-size:.6rem;font-weight:800}.tool-item{cursor:pointer;width:100%;color:var(--text);text-align:left;background:0 0;border:none;border-radius:8px;align-items:flex-start;gap:12px;padding:10px;transition:all .2s;display:flex}.tool-item:hover{background:var(--surface-hover)}.tool-item.active{background:var(--primary-light);color:var(--primary)}.tool-meta{flex-direction:column;gap:2px;display:flex}.tool-title{color:var(--text);font-size:.75rem;font-weight:700}.tool-sub{color:var(--text-muted);opacity:.8;font-size:.6rem}
