:root{--bg-base:#0a111c;--bg-card:#101b2b;--bg-card-hover:#152338;--bg-card-elevated:#17273e;--bg-input:#0c1421;--border-subtle:#1c2e46;--border-focus:#f26522;--border-strong:#274267;--orange:#f26522;--orange-hover:#d9531e;--orange-bg:#f265221f;--orange-border:#f2652259;--primary:#f26522;--primary-hover:#d9531e;--emerald:#10b981;--emerald-hover:#059669;--emerald-bg:#10b9811f;--emerald-border:#10b98159;--crimson:#ef4444;--crimson-hover:#dc2626;--crimson-bg:#ef44441f;--crimson-border:#ef444459;--amber:#f59e0b;--amber-hover:#d97706;--amber-bg:#f59e0b1f;--amber-border:#f59e0b59;--yellow:#eab308;--yellow-hover:#ca8a04;--yellow-bg:#eab3081f;--yellow-border:#eab30859;--violet:#a855f7;--violet-hover:#9333ea;--violet-bg:#a855f71f;--violet-border:#a855f759;--slate:#64748b;--slate-bg:#64748b24;--slate-border:#64748b59;--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--font-main:"Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", "Courier New", monospace;--shadow-sm:0 1px 3px #00000040;--shadow-md:0 4px 12px #00000059;--shadow-lg:0 12px 32px #00000080;--transition-fast:.15s ease;--transition-normal:.2s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-main);background-color:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:linear-gradient(#0d1624 0%,#090e18 100%);background-attachment:fixed;min-height:100vh;line-height:1.5}.app-container{flex-direction:column;gap:1.25rem;max-width:1480px;margin:0 auto;padding:1.25rem 2rem 2.5rem;display:flex}.app-header{background:var(--bg-card);border:1px solid var(--border-subtle);border-top:3px solid var(--orange);box-shadow:var(--shadow-sm);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.25rem;padding:1rem 1.5rem;display:flex}.header-brand{align-items:center;gap:1.25rem;display:flex}.brand-logo-link{transition:var(--transition-fast);align-items:center;text-decoration:none;display:flex}.brand-logo-link:hover{opacity:.9}.fiberquil-logo{object-fit:contain;width:auto;height:42px}.brand-divider{background:var(--border-subtle);width:1px;height:38px}.brand-info{flex-direction:column;gap:.15rem;display:flex}.brand-title{letter-spacing:-.01em;color:#fff;font-size:1.25rem;font-weight:700}.brand-title-badge{color:var(--orange);font-weight:700}.brand-subtitle{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.8rem;font-weight:400;display:flex}.brand-badge{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);letter-spacing:.03em;border-radius:4px;align-items:center;padding:.1rem .45rem;font-size:.7rem;font-weight:600;display:inline-flex}.header-telemetry{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.telemetry-badge{transition:var(--transition-fast);border:1px solid #0000;border-radius:6px;align-items:center;gap:.5rem;padding:.4rem .85rem;font-size:.8rem;font-weight:600;display:inline-flex}.telemetry-badge.mode-mock{color:#f59e0b;background:#f59e0b1f;border-color:#f59e0b59}.telemetry-badge.mode-live{background:var(--emerald-bg);color:#10b981;border-color:var(--emerald-border)}.pulse-indicator{background-color:currentColor;border-radius:50%;width:8px;height:8px;animation:2s cubic-bezier(.4,0,.6,1) infinite pulseDot}@keyframes pulseDot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.85)}}.telemetry-sync-box{border-left:1px solid var(--border-subtle);border-right:1px solid var(--border-subtle);flex-direction:column;gap:.2rem;padding:.25rem .85rem;display:flex}.sync-row{align-items:center;gap:.4rem;font-size:.8rem;display:flex}.sync-label{color:var(--text-muted)}.sync-value{color:var(--text-secondary);font-family:var(--font-mono);font-weight:500}.sync-timer-badge{font-family:var(--font-mono);color:var(--orange);background:var(--orange-bg);border:1px solid var(--orange-border);border-radius:4px;padding:.1rem .45rem;font-size:.82rem;font-weight:600}.header-actions{align-items:center;gap:.6rem;display:flex}.header-divider{background:var(--border-subtle);width:1px;height:58px}.header-obra-card{transition:var(--transition-fast);-webkit-user-select:none;user-select:none;background:linear-gradient(135deg,#0d1726f2 0%,#122035f2 100%);border:1px solid #ffffff1f;border-radius:12px;align-items:center;gap:1rem;padding:.6rem 1.35rem .6rem .65rem;display:flex;box-shadow:0 4px 14px #00000040}.header-obra-card:hover{border-color:var(--orange-border);background:linear-gradient(135deg,#122035fa 0%,#182a44fa 100%);transform:translateY(-1px);box-shadow:0 6px 20px #00000059,0 0 0 1px #f9731633}.obra-thumb-wrapper{border:1.5px solid #ffffff2e;border-radius:10px;flex-shrink:0;width:64px;height:64px;overflow:hidden;box-shadow:0 2px 8px #00000059}.obra-thumb-img{object-fit:cover;width:100%;height:100%;display:block}.obra-text-wrapper{flex-direction:column;gap:.25rem;display:flex}.obra-name{color:#fff;white-space:nowrap;letter-spacing:-.01em;font-size:1.15rem;font-weight:700;line-height:1.2}.obra-meta{color:#94a3b8;white-space:nowrap;font-size:.85rem;font-weight:500;line-height:1.2}.btn{font-family:var(--font-main);cursor:pointer;transition:var(--transition-fast);white-space:nowrap;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;padding:.55rem 1rem;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--orange);color:#fff;border-color:var(--orange-hover);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--orange-hover);box-shadow:var(--shadow-md);border-color:#c24614;transform:translateY(-1px)}.btn-secondary{color:var(--text-primary);border-color:var(--border-subtle);background:#142133}.btn-secondary:hover{border-color:var(--border-strong);background:#192a40;transform:translateY(-1px)}.btn.icon-only{border-radius:8px;padding:.55rem}.btn-icon,.mini-icon{flex-shrink:0;width:18px;height:18px}.btn-icon.spinning{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.badge-wrapper{display:flex;position:relative}.counter-badge{background:var(--crimson);color:#fff;border:2px solid var(--bg-base);border-radius:9999px;padding:.1rem .35rem;font-size:.65rem;font-weight:700;position:absolute;top:-7px;right:-8px}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem;display:grid}.kpi-card{background:var(--bg-card);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);transition:var(--transition-normal);border-radius:12px;flex-direction:column;gap:.85rem;padding:1.25rem;display:flex;position:relative;overflow:hidden}.kpi-card:before{content:"";background:var(--border-strong);height:3px;position:absolute;top:0;left:0;right:0}.kpi-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}#kpiTotalCard:before{background:var(--orange)}#kpiTotalCard .kpi-value-row{margin-top:auto;margin-bottom:auto;padding:.15rem 0}.kpi-card-active:before{background:var(--emerald)}.kpi-card-active:hover{border-color:var(--emerald-border)}.kpi-card-inactive:before{background:var(--crimson)}.kpi-card-inactive:hover{border-color:var(--crimson-border)}#kpiRxCard:before{background:#3b82f6}.kpi-header{justify-content:space-between;align-items:center;display:flex}.kpi-title{color:var(--text-secondary);font-size:.85rem;font-weight:500}.kpi-icon-wrap{border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.kpi-icon-wrap svg{width:20px;height:20px}.icon-orange{background:var(--orange-bg);color:var(--orange)}.icon-emerald{background:var(--emerald-bg);color:var(--emerald)}.icon-crimson{background:var(--crimson-bg);color:var(--crimson)}.icon-fiberquil{color:var(--text-primary);border:1px solid var(--border-subtle);background:#14253c}.kpi-value-row{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.kpi-number{letter-spacing:-.03em;font-size:2.1rem;font-weight:700;font-family:var(--font-main);line-height:1}#kpiTotalVal,#kpiTotalCard .kpi-number{letter-spacing:-.04em;font-size:3.25rem;font-weight:800;line-height:1}.text-emerald{color:#10b981}.text-crimson{color:#ef4444}.text-orange{color:var(--orange)}.text-fiberquil{color:#f8fafc}.kpi-tag{color:var(--orange);text-transform:uppercase;letter-spacing:.05em;background:var(--orange-bg);border:1px solid var(--orange-border);border-radius:4px;padding:.15rem .45rem;font-size:.72rem;font-weight:600}.kpi-badge{border-radius:6px;padding:.2rem .55rem;font-size:.8rem;font-weight:600}.badge-emerald{background:var(--emerald-bg);color:#10b981;border:1px solid var(--emerald-border)}.badge-crimson{background:var(--crimson-bg);color:#ef4444;border:1px solid var(--crimson-border)}.badge-fiberquil{color:#cbd5e1;border:1px solid var(--border-strong);background:#16263b}.kpi-subtext{color:var(--text-muted);font-size:.78rem}.progress-track{background:#ffffff0f;border-radius:9999px;width:100%;height:6px;overflow:hidden}.progress-fill{border-radius:9999px;height:100%;transition:width .6s cubic-bezier(.4,0,.2,1)}.bar-emerald{background:#10b981}.bar-crimson{background:#ef4444}.telemetry-overview-panel{grid-template-columns:1.15fr .85fr;align-items:stretch;gap:1.25rem;display:grid}@media (width<=1024px){.telemetry-overview-panel{grid-template-columns:1fr}}.overview-block{background:var(--bg-card);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;justify-content:space-between;gap:1rem;padding:1.35rem 1.6rem;display:flex}.block-title{color:var(--text-primary);align-items:center;gap:.65rem;font-size:1.25rem;font-weight:700;display:flex}.block-title .mini-icon{width:24px;height:24px}.ports-pills-row{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.85rem;display:grid}.port-pill{cursor:pointer;transition:var(--transition-fast);background:#132237;border:1px solid #1f3654;border-radius:10px;flex-direction:column;gap:.4rem;padding:.85rem 1.15rem;display:flex}.port-pill:hover,.port-pill.active{border-color:var(--orange);background:#f265221f;transform:translateY(-1px);box-shadow:0 2px 8px #0000004d}.port-pill-header{color:#fff;justify-content:space-between;align-items:center;font-size:1.12rem;font-weight:700;display:flex}.port-pill-stats{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:.35rem;font-size:.95rem;font-weight:600;display:flex}.health-breakdown-bar{border:1px solid var(--border-subtle);background:#ffffff0a;border-radius:6px;height:22px;display:flex;overflow:hidden}.health-segment{cursor:pointer;height:100%;transition:width .3s}.segment-good{background:#10b981}.segment-excessive{background:#a855f7}.segment-warning{background:#eab308}.segment-critical{background:#f97316}.segment-offline{background:#ef4444}.health-segment:hover{filter:brightness(1.2)}.health-legend{flex-wrap:wrap;align-items:center;gap:.65rem 1.15rem;margin-top:.15rem;display:flex}.health-legend-item{cursor:help;background:#ffffff06;border:1px solid #ffffff0d;border-radius:6px;align-items:center;gap:.45rem;padding:.25rem .6rem;font-size:.82rem;transition:all .18s;display:flex;position:relative}.health-legend-item:hover{background:#ffffff12;border-color:#ffffff26;transform:translateY(-1px)}.health-legend-item[data-tooltip]:before{content:attr(data-tooltip);color:#f1f5f9;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;z-index:100;background:#0b1523;border:1px solid #223754;border-radius:6px;padding:.32rem .65rem;font-size:.73rem;font-weight:500;transition:opacity .18s,transform .18s,visibility .18s;position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%)translateY(4px);box-shadow:0 4px 16px #0000008c}.health-legend-item[data-tooltip]:after{content:"";pointer-events:none;opacity:0;visibility:hidden;z-index:101;border:5px solid #0000;border-top-color:#223754;border-bottom-width:0;transition:opacity .18s,transform .18s,visibility .18s;position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%)translateY(4px)}.health-legend-item[data-tooltip]:hover:before,.health-legend-item[data-tooltip]:hover:after{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}.health-legend-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.health-legend-label{color:var(--text-primary);font-weight:600}.health-legend-range{display:none}.health-legend-count{font-family:var(--font-mono);color:#fff;border:1px solid var(--border-subtle);background:#192a40;border-radius:4px;padding:.05rem .45rem;font-size:.78rem;font-weight:700}.controls-toolbar{background:var(--bg-card);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.25rem;display:flex}.controls-toolbar.stats-active{justify-content:flex-start;padding:.6rem 1.25rem}.search-box{flex:1;min-width:280px;position:relative}.search-icon{width:18px;height:18px;color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:.85rem;transform:translateY(-50%)}.search-box input{background:var(--bg-input);border:1px solid var(--border-subtle);width:100%;color:var(--text-primary);font-family:var(--font-main);transition:var(--transition-fast);border-radius:8px;outline:none;padding:.6rem 2.2rem .6rem 2.4rem;font-size:.88rem}.search-box input:focus{border-color:var(--orange);box-shadow:0 0 0 2px #f2652233}.btn-clear{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:1.2rem;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.filter-group{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.segmented-control{border:1px solid var(--border-subtle);background:#0d1624;border-radius:8px;padding:3px;display:flex}.seg-btn{color:var(--text-secondary);font-family:var(--font-main);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;border-radius:6px;padding:.45rem .8rem;font-size:.8rem;font-weight:500}.seg-btn:hover{color:var(--text-primary)}.seg-btn.active{background:var(--orange);color:#fff;border:1px solid var(--orange-hover);font-weight:600}.custom-select{background:var(--bg-input);border:1px solid var(--border-subtle);color:var(--text-primary);font-family:var(--font-main);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23f26522' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;background-size:14px;border-radius:8px;outline:none;padding:.55rem 2rem .55rem .85rem;font-size:.82rem;font-weight:500}.custom-select:focus{border-color:var(--orange)}.dropdown-wrapper{position:relative}.dropdown-menu{background:var(--bg-card-elevated);border:1px solid var(--border-strong);min-width:200px;box-shadow:var(--shadow-md);z-index:50;border-radius:10px;padding:.4rem;position:absolute;top:calc(100% + 6px);right:0}.export-dropdown-menu{min-width:280px}.dropdown-section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:.4rem .75rem .2rem;font-size:.67rem;font-weight:700}.dropdown-divider{background:var(--border-subtle);height:1px;margin:.35rem 0}.dropdown-item{color:var(--text-primary);transition:var(--transition-fast);border-radius:6px;align-items:center;gap:.5rem;padding:.6rem .85rem;font-size:.82rem;font-weight:500;text-decoration:none;display:flex}.dropdown-item-rich{align-items:flex-start;gap:.65rem;padding:.6rem .75rem;display:flex}.dropdown-item-info{flex-direction:column;flex:1;gap:.15rem;display:flex}.dropdown-item-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.dropdown-item-main{color:var(--text-primary);font-size:.82rem;font-weight:500}.dropdown-item:hover .dropdown-item-main{color:var(--orange)}.dropdown-item-desc{color:var(--text-muted);font-size:.7rem;line-height:1.2}.dropdown-item:hover{background:var(--orange-bg);color:var(--orange)}.badge-pill-danger{color:#ef4444;background:#ef444426;border:1px solid #ef444459;border-radius:999px;padding:1px 7px;font-size:.68rem;font-weight:700}.badge-pill-neutral{background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:999px;padding:1px 7px;font-size:.68rem;font-weight:600}.kpi-action-btn{color:#f87171;cursor:pointer;background:#ef44441f;border:1px solid #ef444459;border-radius:6px;align-items:center;gap:.35rem;padding:.22rem .55rem;font-size:.72rem;font-weight:600;text-decoration:none;transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-flex}.kpi-action-btn:hover{color:#fca5a5;background:#ef444440;border-color:#ef444499;transform:translateY(-1px);box-shadow:0 2px 8px #ef44444d}.kpi-action-btn .mini-icon{width:12px;height:12px}.btn-crimson{color:#f87171;transition:var(--transition-fast);cursor:pointer;background:#dc262626;border:1px solid #dc262666;border-radius:6px;align-items:center;gap:.35rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-crimson:hover{color:#fff;background:#dc262647;border-color:#dc2626b3;transform:translateY(-1px);box-shadow:0 2px 8px #dc262659}.text-sky{color:#38bdf8}.table-card{background:var(--bg-card);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;gap:1rem;padding:1.25rem;display:flex}.table-header-info{border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-bottom:.5rem;display:flex}.table-title-row{align-items:center;gap:.85rem;display:flex}.table-title{letter-spacing:-.01em;color:#fff;font-size:1.15rem;font-weight:700}.results-counter{color:var(--text-muted);border:1px solid var(--border-subtle);background:#142236;border-radius:6px;padding:.2rem .6rem;font-size:.8rem}.legend-row{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:1rem;font-size:.75rem;display:flex}.legend-item{align-items:center;gap:.4rem;display:flex}.legend-dot{border-radius:50%;width:8px;height:8px}.dot-good{background:#10b981}.dot-excessive{background:#a855f7}.dot-warning{background:#eab308}.dot-critical{background:#f97316}.dot-offline{background:#ef4444}.table-responsive{width:100%;overflow-x:auto}.onu-table{border-collapse:collapse;text-align:left;width:100%;font-size:.88rem}.onu-table th{text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle);-webkit-user-select:none;user-select:none;background:#0d1624;padding:.85rem 1rem;font-size:.78rem;font-weight:600}.onu-table th.sortable{cursor:pointer;transition:var(--transition-fast)}.onu-table th.sortable:hover{color:var(--orange)}.sort-arrow{opacity:.6;font-size:.75rem}.onu-table td{border-bottom:1px solid var(--border-subtle);vertical-align:middle;transition:var(--transition-fast);padding:.85rem 1rem}.onu-table tbody tr{transition:var(--transition-fast)}.onu-table tbody tr:hover{background:#f265220a}.badge-port{font-family:var(--font-mono);background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);border-radius:4px;padding:.2rem .55rem;font-size:.78rem;font-weight:600}.onu-id-cell{font-family:var(--font-mono);color:var(--text-primary);font-weight:600}.status-badge{border-radius:6px;align-items:center;gap:.45rem;padding:.25rem .65rem;font-size:.78rem;font-weight:600;display:inline-flex}.status-badge.status-active{background:var(--emerald-bg);color:#10b981;border:1px solid var(--emerald-border)}.status-badge.status-inactive{background:var(--crimson-bg);color:#ef4444;border:1px solid var(--crimson-border)}.status-badge.status-inactive .pulse-indicator{background-color:#ef4444;box-shadow:0 0 6px #ef4444b3}.serial-cell{font-family:var(--font-mono);color:#e2e8f0;align-items:center;gap:.5rem;font-size:.84rem;display:inline-flex}.btn-copy-serial{color:var(--text-muted);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;border-radius:4px;padding:2px 4px}.btn-copy-serial:hover{color:var(--orange);background:#ffffff14}.rx-power-cell{align-items:center;gap:.75rem;display:flex}.rx-val{font-family:var(--font-mono);min-width:80px;font-size:.85rem;font-weight:600}.rx-bar-wrap{background:#ffffff14;border-radius:9999px;flex:1;max-width:90px;height:6px;overflow:hidden}.rx-bar-inner{border-radius:9999px;height:100%}.badge-profile{color:#cbd5e1;background:#18283e;border:1px solid #284163;border-radius:4px;padding:.2rem .55rem;font-size:.78rem;font-weight:500}.btn-action-view{border:1px solid var(--border-subtle);color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);background:#142236;border-radius:6px;padding:.35rem .65rem;font-size:.78rem}.btn-action-view:hover{background:var(--orange-bg);color:var(--orange);border-color:var(--orange-border)}.btn-action-map{border:1px solid var(--border-subtle);color:var(--orange);cursor:pointer;transition:var(--transition-fast);background:#142236;border-radius:6px;justify-content:center;align-items:center;gap:.35rem;padding:.35rem .65rem;font-size:.78rem;font-weight:500;line-height:1;display:inline-flex}.btn-action-map:hover{background:var(--orange);color:#fff;border-color:var(--orange);box-shadow:0 2px 8px #f2652259}.btn-action-map svg{stroke:currentColor;flex-shrink:0;width:13px;height:13px;display:inline-block}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:.85rem;padding:3.5rem 1.5rem;display:flex}.empty-icon{width:48px;height:48px;color:var(--text-muted)}.empty-state h3{font-size:1.1rem;font-weight:600}.empty-state p{color:var(--text-muted);font-size:.88rem}.modal-overlay{-webkit-backdrop-filter:blur(8px);z-index:2500;background:#03070ec7;justify-content:center;align-items:center;width:100vw;height:100vh;padding:1.5rem;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-dialog{border:1px solid var(--border-strong);width:100%;max-width:600px;max-height:90vh;box-shadow:var(--shadow-lg);background:#0f1929;border-radius:12px;flex-direction:column;animation:.2s cubic-bezier(.16,1,.3,1) scaleUp;display:flex;overflow:hidden}.modal-dialog.modal-lg{max-width:850px}@keyframes scaleUp{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.modal-header{border-bottom:1px solid var(--border-subtle);background:#132238;justify-content:space-between;align-items:center;padding:1.1rem 1.5rem;display:flex}.modal-title-wrap{align-items:center;gap:.75rem;display:flex}.terminal-dots{gap:6px;display:flex}.t-dot{border-radius:50%;width:10px;height:10px}.dot-red{background:#ef4444}.dot-yellow{background:#f59e0b}.dot-green{background:#10b981}.modal-title{color:#fff;font-size:1.05rem;font-weight:700}.modal-close{color:var(--text-muted);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;font-size:1.5rem;line-height:1}.modal-close:hover{color:var(--text-primary)}.modal-body{flex-direction:column;gap:1rem;padding:1.5rem;display:flex;overflow-y:auto}.modal-footer{border-top:1px solid var(--border-subtle);background:#0d1624;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;display:flex}.terminal-banner{border:1px solid var(--orange-border);color:#fed7aa;background:#f2652214;border-radius:8px;padding:.75rem 1rem;font-size:.8rem}.terminal-container{border:1px solid var(--border-subtle);max-height:420px;font-family:var(--font-mono);background:#080e18;border-radius:8px;padding:1rem;font-size:.82rem;line-height:1.6;overflow-y:auto}.terminal-line{gap:.65rem;margin-bottom:.35rem;display:flex}.t-time{color:var(--text-muted);flex-shrink:0;font-size:.75rem}.t-step{color:var(--orange);flex-shrink:0;font-weight:600}.t-msg{color:#e2e8f0;word-break:break-all}.t-msg.step-msg{color:#10b981;font-weight:500}.t-msg.warn-msg{color:#f59e0b}.t-msg.err-msg{color:#ef4444;font-weight:600}.form-row{gap:1rem;display:flex}.flex-1{flex:1}.flex-2{flex:2}.form-group{flex-direction:column;gap:.4rem;margin-bottom:.85rem;display:flex}.form-group label{color:var(--text-secondary);font-size:.82rem;font-weight:600}.form-control{background:var(--bg-input);border:1px solid var(--border-subtle);color:var(--text-primary);font-family:var(--font-main);transition:var(--transition-fast);border-radius:8px;outline:none;padding:.65rem .85rem;font-size:.88rem}.form-control:focus{border-color:var(--orange);box-shadow:0 0 0 2px #f2652233}.form-help{color:var(--text-muted);font-size:.72rem}.form-divider{border:none;border-top:1px solid var(--border-subtle);margin:.5rem 0 1rem}.form-group-switch{border:1px solid var(--border-subtle);background:#132238;border-radius:8px;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.switch-label{cursor:pointer;font-size:.88rem;font-weight:600}.switch-desc{color:var(--text-muted);font-size:.75rem}.toggle-switch{flex-shrink:0;width:46px;height:24px;display:inline-block;position:relative}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{cursor:pointer;background-color:#263852;border-radius:24px;transition:all .25s;position:absolute;inset:0}.toggle-slider:before{content:"";background-color:#fff;border-radius:50%;width:18px;height:18px;transition:all .25s;position:absolute;bottom:3px;left:3px}input:checked+.toggle-slider{background-color:var(--primary)}input:checked+.toggle-slider:before{transform:translate(22px)}.alert-box{border-radius:8px;margin-top:.5rem;padding:.75rem 1rem;font-size:.82rem}.alert-box.alert-success{background:var(--emerald-bg);color:#10b981;border:1px solid var(--emerald-border)}.alert-box.alert-danger{background:var(--crimson-bg);color:#ef4444;border:1px solid var(--crimson-border)}.events-list{flex-direction:column;gap:.65rem;max-height:400px;display:flex;overflow-y:auto}.event-item{border:1px solid var(--border-subtle);background:#142236;border-radius:8px;flex-direction:column;gap:.25rem;padding:.75rem 1rem;display:flex}.event-header{justify-content:space-between;align-items:center;font-size:.75rem;display:flex}.event-time{color:var(--text-muted)}.event-msg{color:var(--text-primary);font-size:.84rem}.toast-container{z-index:20005;animation:.25s slideUpToast;position:fixed;bottom:2rem;right:2rem}@keyframes slideUpToast{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.toast-card{border:1px solid var(--orange);color:#fff;box-shadow:var(--shadow-lg);background:#132238;border-radius:8px;align-items:center;gap:.75rem;padding:.85rem 1.25rem;font-size:.88rem;font-weight:500;display:flex}.app-footer{color:var(--text-muted);border-top:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem .5rem 0;font-size:.8rem;display:flex}.footer-left{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.footer-brand{color:var(--orange);letter-spacing:.02em;font-weight:700}.footer-right{align-items:center;gap:.5rem;display:flex}.footer-link{color:var(--text-secondary);transition:var(--transition-fast);text-decoration:none}.footer-link:hover{color:var(--orange);text-decoration:underline}@media (width<=900px){.app-header{flex-direction:column;align-items:stretch;gap:1rem}.header-telemetry{justify-content:space-between;width:100%}.telemetry-overview-panel{grid-template-columns:1fr}}@media (width<=768px){.app-container{gap:.85rem;padding:.85rem}.app-header{gap:.85rem;padding:.85rem 1rem}.header-divider{display:none}.header-telemetry{flex-direction:column;align-items:stretch;gap:.75rem}.telemetry-sync-box{border:1px solid var(--border-subtle);background:#0c1523;border-radius:8px;flex-direction:row;justify-content:space-between;align-items:center;width:100%;padding:.45rem .85rem;display:flex}.header-actions{flex-wrap:wrap;gap:.5rem;width:100%;display:flex}#btnSyncNow{flex:2 170px;justify-content:center}#btnOpenLogs{flex:2 140px;justify-content:center}#btnOpenEvents,#btnOpenSettings{flex:44px;justify-content:center;min-width:44px}.header-obra-card{justify-content:flex-start;width:100%}.kpi-grid{grid-template-columns:repeat(2,1fr);gap:.65rem}.kpi-card{gap:.45rem;padding:.85rem .75rem}.kpi-title{font-size:.78rem;line-height:1.25}.kpi-number{font-size:1.6rem}#kpiTotalVal,#kpiTotalCard .kpi-number{font-size:2.4rem}.kpi-badge{padding:.15rem .4rem;font-size:.72rem}.kpi-subtext{font-size:.72rem}.controls-toolbar{flex-direction:column;align-items:stretch;gap:.75rem;padding:.85rem}.search-box{width:100%;min-width:0}.filter-group{flex-direction:column;align-items:stretch;gap:.65rem;width:100%}.segmented-control{grid-template-columns:repeat(2,1fr);gap:3px;width:100%;padding:3px;display:grid}.seg-btn{text-align:center;justify-content:center;padding:.45rem .4rem;font-size:.78rem}.custom-select,.dropdown-wrapper{width:100%}#btnExportMenu{justify-content:center;width:100%}.dropdown-menu{width:100%;left:0;right:0}.table-card{gap:.75rem;padding:.85rem}.table-header-info{flex-direction:column;align-items:stretch;gap:.6rem}.table-title-row{justify-content:space-between;width:100%}.legend-row{grid-template-columns:1fr 1fr;gap:.35rem .5rem;font-size:.72rem;display:grid}.table-responsive{border:1px solid var(--border-subtle);-webkit-overflow-scrolling:touch;border-radius:8px}.onu-table{min-width:660px}.onu-table th,.onu-table td{white-space:nowrap;padding:.65rem .75rem;font-size:.82rem}.modal-dialog{width:100%;max-width:calc(100vw - 1.5rem);max-height:92vh;margin:.75rem}.modal-header,.modal-body{padding:.85rem 1rem}.modal-footer{flex-wrap:wrap;padding:.75rem 1rem}.modal-footer .btn{flex:auto;justify-content:center}.form-row{flex-direction:column;gap:0}.form-group{margin-bottom:.75rem}.test-conn-row #btnTestConnection{justify-content:center;width:100%}.toast-container{bottom:1rem;left:1rem;right:1rem}.toast-card{justify-content:center;width:100%;padding:.75rem 1rem;font-size:.82rem}.app-footer{flex-direction:column;align-items:flex-start;gap:.6rem;padding:1rem .25rem .5rem}.footer-left,.footer-right{flex-direction:column;align-items:flex-start;gap:.25rem}}@media (width<=480px){.app-container{gap:.75rem;padding:.65rem}.app-header{gap:.75rem;padding:.75rem .85rem}.brand-logo-link{gap:.75rem}.fiberquil-logo{height:34px}.brand-title{font-size:1.05rem}.brand-subtitle{font-size:.72rem}.telemetry-badge{justify-content:center;width:100%;padding:.35rem .5rem;font-size:.76rem}.sync-row{font-size:.75rem}.sync-timer-badge{padding:.05rem .35rem;font-size:.76rem}.overview-block{border-radius:10px;gap:.75rem;padding:.85rem}.block-title{font-size:1.08rem}.ports-pills-row{grid-template-columns:repeat(3,1fr);gap:.4rem}.port-pill{text-align:center;border-radius:8px;gap:.2rem;padding:.55rem .35rem}.port-pill-header{justify-content:center;font-size:.92rem}.port-pill-stats{flex-direction:column;align-items:center;gap:.05rem;font-size:.78rem}.health-breakdown-bar{height:16px}.health-legend{grid-template-columns:1fr 1fr;gap:.35rem .5rem;display:grid}.health-legend-item{gap:.3rem;font-size:.72rem}.health-legend-range{display:none}.kpi-grid{gap:.5rem}.kpi-card{padding:.75rem .6rem}.kpi-title{min-height:1.8rem;font-size:.74rem}.kpi-number{font-size:1.4rem}#kpiTotalVal,#kpiTotalCard .kpi-number{font-size:2.1rem}.kpi-badge{padding:.1rem .3rem;font-size:.68rem}.kpi-subtext{font-size:.68rem}.seg-btn{padding:.4rem .25rem;font-size:.74rem}.table-title{font-size:.98rem}.results-counter{font-size:.72rem}.legend-row{font-size:.66rem}.modal-dialog{max-width:calc(100vw - 1rem);max-height:94vh;margin:.5rem}.modal-footer{flex-direction:column-reverse}.modal-footer .btn{width:100%}.terminal-container{max-height:280px;font-size:.72rem}}@media (width<=360px){.kpi-number{font-size:1.25rem}#kpiTotalVal,#kpiTotalCard .kpi-number{font-size:1.85rem}.ports-pills-row{gap:.25rem}.port-pill{padding:.45rem .2rem}.port-pill-header{font-size:.82rem}.port-pill-stats{font-size:.72rem}}.view-mode-selector-wrap{justify-content:flex-start;align-items:center;margin-top:-.25rem;display:flex}.view-mode-toggle{background:var(--bg-input);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);border-radius:8px;flex-shrink:0;gap:3px;padding:3px;display:inline-flex}.view-tab-btn{color:var(--text-secondary);font-family:var(--font-main);cursor:pointer;transition:var(--transition-normal);background:0 0;border:1px solid #0000;border-radius:7px;align-items:center;gap:.5rem;padding:.45rem 1.1rem;font-size:.85rem;font-weight:600;display:inline-flex}.view-tab-btn:hover{color:var(--text-primary);background:#ffffff0d}.view-tab-btn.active{background:var(--orange);color:#fff;border-color:#ffffff26;box-shadow:0 2px 8px #f2652259}.view-tab-btn .mini-icon{width:16px;height:16px}.map-card{background:var(--bg-card);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;gap:1rem;padding:1.25rem 1.5rem 1.5rem;display:flex;position:relative}.map-card-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.map-title-wrap{align-items:flex-start;gap:.85rem;display:flex}.map-header-icon{flex-shrink:0;width:26px;height:26px;margin-top:2px}.map-title{color:#fff;letter-spacing:-.01em;font-size:1.15rem;font-weight:700}.map-subtitle{color:var(--text-muted);margin-top:.15rem;font-size:.8rem}.map-actions-row{align-items:center;gap:.5rem;display:flex}.btn-sm{border-radius:6px;padding:.35rem .75rem;font-size:.78rem}.map-calibrate-bar{border:1px dashed var(--orange);background:#f2652214;border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem 1rem;animation:.2s fadeIn;display:flex}.calibrate-instructions{color:var(--text-primary);align-items:center;gap:.6rem;font-size:.82rem;display:flex}.coords-preview-badge{background:var(--bg-base);border:1px solid var(--border-subtle);font-family:var(--font-mono);color:var(--orange);border-radius:4px;padding:.2rem .5rem;font-size:.75rem}.calibrate-actions{align-items:center;gap:.5rem;display:flex}.map-viewport{border:1px solid var(--border-subtle);-webkit-user-select:none;user-select:none;cursor:grab;background:#080e18;border-radius:10px;width:100%;height:620px;min-height:440px;position:relative;overflow:hidden;box-shadow:inset 0 2px 10px #00000080}.map-viewport:active{cursor:grabbing}:-webkit-any(.map-card:fullscreen,.map-card:-webkit-full-screen,.map-card.is-fullscreen){background:var(--bg-card);box-sizing:border-box;z-index:9999;border:none;border-radius:0;flex-direction:column;gap:.75rem;width:100vw;max-width:100vw;height:100vh;max-height:100vh;margin:0;padding:.85rem 1.25rem 1.25rem;display:flex;overflow:hidden}:is(.map-card:fullscreen,.map-card:fullscreen,.map-card.is-fullscreen){background:var(--bg-card);box-sizing:border-box;z-index:9999;border:none;border-radius:0;flex-direction:column;gap:.75rem;width:100vw;max-width:100vw;height:100vh;max-height:100vh;margin:0;padding:.85rem 1.25rem 1.25rem;display:flex;overflow:hidden}:-webkit-any(.map-card:fullscreen .map-card-header,.map-card:-webkit-full-screen .map-card-header,.map-card.is-fullscreen .map-card-header){flex-shrink:0}:is(.map-card:fullscreen .map-card-header,.map-card:fullscreen .map-card-header,.map-card.is-fullscreen .map-card-header){flex-shrink:0}:-webkit-any(.map-card:fullscreen .map-viewport,.map-card:-webkit-full-screen .map-viewport,.map-card.is-fullscreen .map-viewport){border-radius:8px;flex:1;width:100%;height:100%;min-height:0;max-height:none}:is(.map-card:fullscreen .map-viewport,.map-card:fullscreen .map-viewport,.map-card.is-fullscreen .map-viewport){border-radius:8px;flex:1;width:100%;height:100%;min-height:0;max-height:none}.map-viewport.theme-blueprint{background:#070d17}.map-viewport.theme-blueprint .map-base-image{filter:invert()hue-rotate(185deg)brightness(.88)contrast(1.35);opacity:.92}.map-viewport.theme-original{background:#f8fafc}.map-viewport.theme-original .map-base-image{filter:none;opacity:1}.enre-iframe{z-index:25;background:#fff;border:none;width:100%;height:100%;position:absolute;top:0;left:0}.enre-loading{width:100%;height:100%;color:var(--text-secondary,#94a3b8);z-index:26;pointer-events:none;background:#0d1623f2;flex-direction:column;justify-content:center;align-items:center;gap:14px;font-family:inherit;font-size:.95rem;font-weight:500;display:flex;position:absolute;top:0;left:0}.enre-spinner{border:3px solid #f2652233;border-top-color:var(--orange,#f26522);border-radius:50%;width:34px;height:34px;animation:.8s linear infinite enreSpin}@keyframes enreSpin{to{transform:rotate(360deg)}}.btn#btnToggleEnre.active{border-color:var(--orange);color:#fff;background:#f2652233}.map-transform-layer{transform-origin:0 0;will-change:transform;width:1866px;height:1050px;position:absolute;top:0;left:0}.map-base-image{aspect-ratio:7775/4375;object-fit:contain;width:100%;height:100%;image-rendering:high-quality;image-rendering:-webkit-optimize-contrast;pointer-events:none;-webkit-user-select:none;user-select:none;transition:filter .3s,opacity .3s;display:block}.map-markers-layer{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.onu-map-marker{transform:translate(-50%, -50%) scale(var(--marker-scale,1));cursor:pointer;z-index:10;pointer-events:auto;transform-origin:50%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;transition:transform .15s cubic-bezier(.34,1.56,.64,1),opacity .2s;display:flex;position:absolute;background:0 0!important;border:none!important;outline:none!important}.onu-map-marker:focus,.onu-map-marker:focus-visible,.onu-map-marker:active{box-shadow:none!important;outline:none!important}.onu-map-marker:hover{transform:translate(-50%, -50%) scale(calc(var(--marker-scale,1) * 1.35));z-index:25}.onu-map-marker.is-selected{transform:translate(-50%, -50%) scale(calc(var(--marker-scale,1) * 1.45));z-index:30}.onu-map-marker.is-dimmed{opacity:.15;filter:grayscale(.8);pointer-events:none}.onu-map-marker.is-editable{cursor:move!important}.onu-map-marker.is-editable .marker-dot{outline:none!important;box-shadow:0 0 0 3px #fff,0 0 8px #fffc!important}.marker-dot{border:2px solid #0a111c;width:14px;height:14px;transition:all .2s;display:block;position:relative;box-shadow:0 1px 5px #00000080;border-radius:50%!important;outline:none!important}.marker-center-point{display:none!important}.marker-pulse-ring{pointer-events:none;opacity:0;position:absolute;inset:-5px;border-radius:50%!important}.onu-map-marker.dot-good .marker-dot{background-color:var(--emerald);box-shadow:0 0 8px #10b981b3}.onu-map-marker.dot-good .marker-pulse-ring{display:none}.onu-map-marker.dot-excessive .marker-dot{background-color:var(--violet,#a855f7);box-shadow:0 0 8px #a855f7b3}.onu-map-marker.dot-excessive .marker-pulse-ring{display:none}.onu-map-marker.dot-warning .marker-dot{background-color:var(--yellow,#eab308);box-shadow:0 0 8px #eab308b3}.onu-map-marker.dot-warning .marker-pulse-ring{display:none}.onu-map-marker.dot-critical .marker-dot{background-color:var(--orange,#f97316);box-shadow:0 0 8px #f97316d9}.onu-map-marker.dot-critical .marker-pulse-ring{display:none}.onu-map-marker.dot-offline .marker-dot{background-color:var(--crimson);border-color:#0a111c;box-shadow:0 0 14px #ef4444f2}.onu-map-marker.dot-offline .marker-center-point{background:#fff}.onu-map-marker.dot-offline .marker-pulse-ring{border:2px solid var(--crimson);animation:1.3s cubic-bezier(.25,0,.2,1) infinite markerPulse;display:block}@keyframes markerPulse{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(2.2)}}.marker-badge{display:none!important}.map-hud-controls{z-index:35;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-subtle);box-shadow:var(--shadow-md);background:#101b2be0;border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:4px;display:flex;position:absolute;bottom:14px;right:14px}.hud-btn{width:32px;height:32px;color:var(--text-primary);cursor:pointer;transition:var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;display:flex}.hud-btn:hover{color:#fff;background:#ffffff1a}.hud-btn svg{width:18px;height:18px}.hud-zoom-badge{font-family:var(--font-mono);color:var(--text-secondary);padding:2px 4px;font-size:.68rem}.map-hud-legend{z-index:35;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-subtle);box-shadow:var(--shadow-md);background:#101b2be0;border-radius:8px;flex-direction:column;gap:6px;padding:8px 12px;display:flex;position:absolute;bottom:14px;left:14px}.hud-legend-title{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:.7rem;font-weight:700}.hud-legend-items{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.hud-legend-chip{color:var(--text-primary);align-items:center;gap:.35rem;font-size:.74rem;display:inline-flex}.hud-legend-chip strong{font-family:var(--font-mono);font-size:.76rem}.map-popover-card{z-index:45;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--border-strong);border-top:3px solid var(--orange);pointer-events:auto;background:#101b2bf2;border-radius:10px;width:290px;margin-top:-12px;padding:12px 14px;animation:.15s cubic-bezier(.16,1,.3,1) popIn;position:absolute;transform:translate(-50%,-100%);box-shadow:0 12px 30px #000000a6}.map-popover-card.pop-below{margin-top:12px;transform:translate(-50%)}.map-popover-card:after{content:"";bottom:-6px;left:var(--arrow-left,50%);background:var(--bg-card);border-right:1px solid var(--border-strong);border-bottom:1px solid var(--border-strong);width:12px;height:12px;position:absolute;transform:translate(-50%)rotate(45deg)}.map-popover-card.pop-below:after{border-bottom:none;border-right:none;border-left:1px solid var(--border-strong);border-top:1px solid var(--border-strong);top:-6px;bottom:auto}@keyframes popIn{0%{opacity:0;transform:translate(-50%,-90%)scale(.95)}to{opacity:1;transform:translate(-50%,-100%)scale(1)}}.map-popover-card.pop-below{animation:.15s cubic-bezier(.16,1,.3,1) popInBelow}@keyframes popInBelow{0%{opacity:0;transform:translate(-50%,10%)scale(.95)}to{opacity:1;transform:translate(-50%)scale(1)}}.popover-close-btn{color:var(--text-muted);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:1.25rem;line-height:1;position:absolute;top:8px;right:8px}.popover-close-btn:hover{color:var(--text-primary);background:#ffffff1a}.popover-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;margin-bottom:.6rem;padding-bottom:.5rem;padding-right:1.5rem;display:flex}.popover-title{color:#fff;font-size:.92rem;font-weight:700}.popover-body{flex-direction:column;gap:.35rem;font-size:.78rem;display:flex}.pop-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.pop-label{color:var(--text-muted);font-size:.74rem}.pop-val{color:var(--text-primary);text-align:right;font-weight:500}.pop-rx-section{border:1px solid var(--border-subtle);background:#00000040;border-radius:6px;margin-top:.35rem;padding:.45rem .6rem}.pop-rx-row{justify-content:space-between;align-items:center;margin-bottom:.3rem;display:flex}.pop-rx-number{font-size:.85rem;font-weight:700}.pop-rx-track{background:#ffffff1a;border-radius:3px;width:100%;height:6px;overflow:hidden}.pop-rx-fill{border-radius:3px;height:100%;transition:width .3s}.popover-footer{border-top:1px solid var(--border-subtle);gap:.5rem;margin-top:.75rem;padding-top:.5rem;display:flex}.popover-footer .btn{flex:1;justify-content:center;padding:.35rem .5rem;font-size:.74rem}.row-highlighted{animation:2.5s highlightRow}@keyframes highlightRow{0%{background-color:#f2652259}to{background-color:#0000}}@media (width<=900px){.map-viewport{height:480px}.map-title{font-size:1.05rem}.map-subtitle{font-size:.74rem}.hud-legend-items{gap:.5rem}}@media (width<=640px){.map-viewport{height:400px}.map-card{padding:1rem}.view-tab-btn{padding:.4rem .7rem;font-size:.78rem}.map-actions-row{justify-content:flex-start;width:100%}.hud-legend-chip span:nth-child(2){display:none}}.stats-card{background:var(--bg-card);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;gap:1.25rem;padding:1.25rem 1.5rem 1.5rem;animation:.3s ease-out fadeIn;display:flex;position:relative}.stats-header{border-bottom:1px solid #ffffff0d;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-bottom:1rem;display:flex}.stats-title-block,.stats-title-row{align-items:center;gap:.85rem;display:flex}.stats-icon-badge{width:40px;height:40px;color:var(--emerald);background:#10b9811f;border:1px solid #10b98147;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.stats-icon-badge svg{width:20px;height:20px}.stats-title{color:var(--text-primary);margin:0;font-size:1.2rem;font-weight:700}.stats-subtitle{color:var(--text-secondary);margin:.2rem 0 0;font-size:.82rem}.stats-controls-row{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.chart-mode-toggle{background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:8px;gap:3px;padding:3px;display:inline-flex}.mode-btn{color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.8rem;font-weight:600;display:inline-flex}.mode-btn:hover{color:var(--text-primary);background:#ffffff0a}.mode-btn.active{background:var(--border-strong);color:#fff;box-shadow:0 1px 4px #0000004d}.stats-port-select-wrapper{align-items:center;animation:.2s cubic-bezier(.16,1,.3,1) fadeInPortSelect;display:inline-flex}@keyframes fadeInPortSelect{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.stats-port-select{background-color:var(--bg-input);border:1px solid var(--border-subtle);height:31px;color:var(--orange);cursor:pointer;transition:var(--transition-fast);border-radius:8px;padding:.35rem 1.85rem .35rem .75rem;font-size:.8rem;font-weight:600;line-height:1}.stats-port-select:hover,.stats-port-select:focus{border-color:var(--orange);outline:none;box-shadow:0 0 0 2px #f265222e}.range-pills-group{background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:8px;gap:3px;padding:3px;display:inline-flex}.range-pill{color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;border-radius:6px;padding:.35rem .65rem;font-size:.78rem;font-weight:600}.range-pill:hover{color:var(--text-primary)}.range-pill.active{background:var(--orange);color:#fff;box-shadow:0 1px 4px #f265224d}.availability-chip{background:var(--bg-input);border:1px solid var(--border-subtle);white-space:nowrap;border-radius:8px;align-items:center;gap:.45rem;padding:.35rem .8rem;font-size:.82rem;display:inline-flex}.availability-label{color:var(--text-secondary);font-weight:500}.availability-val{font-weight:700;font-family:var(--font-mono,monospace)}.chart-wrapper-card{background:var(--bg-base);border:1px solid var(--border-subtle);border-radius:12px;flex-direction:column;gap:.85rem;padding:1.15rem 1.25rem;display:flex;position:relative;overflow:hidden}.chart-legend-bar{border-bottom:1px solid #ffffff0d;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding-bottom:.5rem;display:flex}.chart-legend-items{flex-wrap:wrap;align-items:center;gap:1.25rem;display:flex}.chart-legend-item{color:var(--text-secondary);align-items:center;gap:.45rem;font-size:.8rem;font-weight:600;display:flex}.legend-color-box{border-radius:3px;flex-shrink:0;width:10px;height:10px}.legend-color-box.bg-emerald{background:#10b981}.legend-color-box.bg-orange{background:#f26522}.legend-color-box.bg-sky{background:#38bdf8}.chart-sub-indicator{color:var(--text-muted);font-size:.74rem}.chart-svg-container{-webkit-user-select:none;user-select:none;width:100%;position:relative}.chart-svg{cursor:crosshair;width:100%;height:auto;display:block;overflow:visible}.chart-grid-line{stroke:#ffffff0f;stroke-dasharray:4 4;stroke-width:1px}.chart-axis-text{fill:var(--text-muted);font-size:11px;font-family:var(--font-mono,monospace);font-weight:500}.chart-axis-text-x{fill:var(--text-secondary);font-size:11px;font-family:var(--font-mono,monospace);font-weight:500}.chart-line-path{transition:stroke .3s}.chart-area-path{transition:opacity .3s}.chart-crosshair-line{stroke:#f8fafc59;stroke-width:1.5px;stroke-dasharray:3 3}.chart-active-dot{filter:drop-shadow(0 0 6px #10b981cc)}.chart-pulse-ring{animation:1.6s ease-out infinite pulseRing}@keyframes pulseRing{0%{r:7;opacity:.9}to{r:16;opacity:0}}.chart-tooltip-floating{pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-strong);z-index:50;background:#101b2bf2;border-radius:8px;min-width:195px;padding:.65rem .85rem;transition:left 50ms ease-out,top 50ms ease-out;position:absolute;transform:translate(-50%,-115%);box-shadow:0 8px 24px #00000080}.tooltip-time-header{color:var(--text-secondary);align-items:center;gap:.35rem;font-size:.74rem;font-weight:600;display:flex}.tooltip-divider{background:#ffffff14;height:1px;margin:.35rem 0}.tooltip-metric-row{justify-content:space-between;align-items:center;margin:.2rem 0;font-size:.78rem;display:flex}.tooltip-metric-label{color:var(--text-muted)}.tooltip-metric-value{font-family:var(--font-mono,monospace)}.tooltip-ports-summary{flex-wrap:wrap;gap:.35rem;margin-top:.3rem;display:flex}.tooltip-port-chip{font-size:.7rem;font-family:var(--font-mono,monospace);background:#ffffff0d;border-radius:4px;gap:.25rem;padding:.15rem .4rem;display:flex}.tooltip-port-title{color:var(--text-secondary)}.tooltip-port-val{color:#fff;font-weight:600}.chart-empty-state{text-align:center;-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:center;align-items:center;padding:3.5rem 1.5rem;display:flex}.chart-empty-icon{width:46px;height:46px;color:var(--text-muted);opacity:.5;margin-bottom:.85rem}.chart-empty-title{color:var(--text-primary);margin:0 0 .35rem;font-size:1.05rem;font-weight:700}.chart-empty-desc{color:var(--text-muted);max-width:460px;margin:0;font-size:.85rem;line-height:1.5}@media (width<=640px){.stats-header{flex-direction:column;align-items:flex-start}.stats-controls-row{justify-content:flex-start;width:100%}}.login-screen-wrapper{z-index:1000;background:radial-gradient(circle at 50% 20%,#0e1e36 0%,#060b13 70%,#03070c 100%);justify-content:center;align-items:center;min-height:100vh;padding:1.25rem;display:flex;position:fixed;inset:0;overflow-y:auto}.login-ambient-glow{filter:blur(120px);pointer-events:none;opacity:.25;border-radius:50%;width:500px;height:500px;position:absolute}.login-glow-1{background:#f2652273;top:-100px;left:20%}.login-glow-2{background:#10b98159;bottom:-100px;right:20%}.login-card{-webkit-backdrop-filter:blur(20px);z-index:10;background:#0d1626e0;border:1px solid #ffffff1a;border-radius:16px;width:100%;max-width:420px;margin:auto;padding:2.25rem 2rem;animation:.35s cubic-bezier(.16,1,.3,1) loginSlideUp;position:relative;box-shadow:0 20px 50px #000000a6,0 0 0 1px #ffffff0d}@keyframes loginSlideUp{0%{opacity:0;transform:translateY(24px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.login-header{text-align:center;flex-direction:column;align-items:center;margin-bottom:1.75rem;display:flex}.login-logo-box{background:#ffffff0a;border:1px solid #ffffff1f;border-radius:14px;justify-content:center;align-items:center;width:72px;height:72px;margin-bottom:1rem;padding:10px;display:flex;box-shadow:0 6px 16px #0000004d}.login-logo-img{object-fit:contain;width:100%;height:100%}.login-title{color:#fff;letter-spacing:-.02em;margin:0;font-size:1.55rem;font-weight:800}.login-title-badge{color:var(--orange);font-weight:900}.login-subtitle{color:var(--text-secondary);margin:.35rem 0 0;font-size:.82rem}.login-error-banner{color:#fca5a5;background:#ef44441f;border:1px solid #ef444459;border-radius:8px;align-items:center;gap:.65rem;margin-bottom:1.25rem;padding:.65rem .85rem;font-size:.82rem;animation:.2s fadeIn;display:flex}.login-error-icon{width:18px;height:18px;color:var(--crimson);flex-shrink:0}.login-form{flex-direction:column;gap:1.15rem;display:flex}.login-field-group{flex-direction:column;gap:.4rem;display:flex}.login-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:.78rem;font-weight:600}.login-input-wrapper{align-items:center;display:flex;position:relative}.login-field-icon{width:18px;height:18px;color:var(--text-muted);pointer-events:none;position:absolute;left:12px}.login-input{border:1px solid var(--border-subtle);color:#fff;width:100%;transition:var(--transition-fast);background:#060c16a6;border-radius:8px;outline:none;padding:.7rem 2.6rem .7rem 2.45rem;font-size:.9rem}.login-input:focus{border-color:var(--orange);background:#060c16e6;box-shadow:0 0 0 3px #f2652233}.login-password-toggle{color:var(--text-muted);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:6px;display:flex;position:absolute;right:8px}.login-password-toggle:hover{color:var(--text-primary);background:#ffffff14}.login-submit-btn{justify-content:center;align-items:center;gap:.5rem;width:100%;margin-top:.5rem;padding:.78rem 1rem;font-size:.92rem;font-weight:600;display:flex}.login-footer{text-align:center;color:var(--text-muted);margin-top:1.5rem;font-size:.72rem}@media (width<=480px){.login-screen-wrapper{padding:.85rem}.login-card{border-radius:12px;padding:1.5rem 1.15rem}.login-logo-box{width:58px;height:58px;margin-bottom:.75rem}.login-title{font-size:1.35rem}.login-subtitle{font-size:.76rem}.login-input{padding:.65rem 2.4rem .65rem 2.3rem;font-size:.86rem}.login-submit-btn{padding:.7rem 1rem;font-size:.88rem}}.header-user-profile{align-items:center;gap:.5rem;display:flex}.user-badge-pill{border:1px solid var(--border-subtle);-webkit-user-select:none;user-select:none;color:var(--text-primary);background:#142133;border-radius:8px;align-items:center;gap:.45rem;padding:.35rem .65rem;font-size:.78rem;line-height:1.2;display:inline-flex}.user-badge-pill.pill-admin{border-color:var(--emerald-border);color:#a7f3d0;background:#142133}.user-badge-pill.pill-admin .user-pill-icon{color:var(--emerald)}.user-badge-pill.pill-user{border-color:var(--border-subtle);color:var(--text-primary);background:#142133}.user-badge-pill.pill-user .user-pill-icon{color:var(--orange)}.user-pill-icon{flex-shrink:0;width:15px;height:15px}.user-pill-name{font-weight:700;font-family:var(--font-mono);color:#fff;letter-spacing:-.01em}.user-pill-role{text-transform:uppercase;letter-spacing:.03em;border-radius:4px;padding:.12rem .45rem;font-size:.68rem;font-weight:600}.user-pill-role.role-admin{background:var(--emerald-bg);color:var(--emerald);border:1px solid var(--emerald-border)}.user-pill-role.role-user{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border)}.btn-logout{color:var(--text-muted)}.btn-logout:hover{color:var(--crimson);background:#ef44441a;border-color:#ef444466}.user-badge-pill.pill-elevate-trigger{cursor:pointer;border:1px solid var(--border-subtle);color:var(--text-primary);transition:var(--transition-fast);background:#142133;align-items:center;gap:.45rem;font-family:inherit;display:inline-flex}.user-badge-pill.pill-elevate-trigger:hover{border-color:var(--orange-border);background:#192a40;transform:translateY(-1px);box-shadow:0 2px 8px #f2652240}.user-pill-action{color:var(--text-secondary);border:1px solid var(--border-subtle);text-transform:uppercase;letter-spacing:.03em;transition:var(--transition-fast);background:#ffffff0f;border-radius:4px;margin-left:.15rem;padding:.12rem .45rem;font-size:.68rem;font-weight:600}.user-badge-pill.pill-elevate-trigger:hover .user-pill-action{background:var(--orange);color:#fff;border-color:var(--orange-hover)}.elevate-modal-overlay{z-index:20000}.elevate-modal-dialog{background:linear-gradient(#101c2e 0%,#0c1524 100%);border:1px solid #f2652259;border-radius:14px;max-width:450px;box-shadow:0 16px 40px #000000a6,0 0 0 1px #f2652226}.elevate-modal-form{flex-direction:column;width:100%;display:flex}.elevate-header-shield{width:28px;height:28px;color:var(--orange);background:#f2652226;border:1px solid #f2652259;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.elevate-header-shield svg{width:16px;height:16px}.elevate-modal-body{flex-direction:column;gap:1.15rem;padding:1.5rem;display:flex}.elevate-notice-box{border:1px solid var(--border-subtle);border-left:3px solid var(--orange);background:#0e1a2ca6;border-radius:8px;align-items:flex-start;gap:.85rem;padding:.85rem 1rem;display:flex}.elevate-notice-icon{width:20px;height:20px;color:var(--orange);flex-shrink:0;margin-top:1px}.elevate-notice-content{flex-direction:column;gap:.3rem;display:flex}.elevate-notice-text{color:var(--text-primary);margin:0;font-size:.85rem;line-height:1.45}.elevate-notice-text strong{color:#fff}.elevate-notice-subtext{color:var(--text-muted);font-size:.75rem;line-height:1.35}.elevate-modal-footer{border-top:1px solid var(--border-subtle);background:#09101c;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;display:flex}
