:root{--bg-main:#f3f3f9;--bg-subtle:#fff;--bg-card:#fff;--bg-card-hover:#fff;--bg-card-solid:#fff;--bg-table-header:#f3f6f9;--bg-hover-row:#f9fbfd;--border-subtle:#e9ebec;--border-active:#405189;--border-glow:#40518926;--text-primary:#495057;--text-heading:#212529;--text-secondary:#878a99;--text-muted:#9599ad;--text-inverse:#fff;--accent-blue:#405189;--accent-blue-hover:#364574;--accent-blue-subtle:#40518914;--accent-blue-glow:#40518933;--accent-secondary:#3577f1;--accent-secondary-subtle:#3577f114;--accent-emerald:#0ab39c;--accent-emerald-subtle:#0ab39c1a;--accent-emerald-glow:#0ab39c33;--accent-rose:#f06548;--accent-rose-subtle:#f065481a;--accent-amber:#f7b84b;--accent-amber-subtle:#f7b84b1a;--accent-purple:#6559cc;--accent-purple-subtle:#6559cc1a;--accent-cyan:#299cdb;--accent-cyan-subtle:#299cdb1a;--font-sans:"Inter", "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Menlo, Monaco, Consolas, monospace;--shadow-sm:0 1px 2px #38414a14;--shadow-md:0 1px 2px #38414a26;--shadow-lg:0 5px 10px #1e20251f;--shadow-card:0 1px 2px #38414a1a;--radius-xs:3px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-full:9999px}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:13px}body{font-family:var(--font-sans);background-color:var(--bg-main);color:var(--text-primary);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none;min-height:100vh;line-height:1.45;overflow-x:hidden}.layout-wrapper{background-color:var(--bg-main);min-height:100vh;display:flex}.app-sidebar{z-index:101;background:#111c38;border-right:1px solid #ffffff0f;flex-direction:column;flex-shrink:0;width:240px;height:100vh;transition:width .22s cubic-bezier(.4,0,.2,1),box-shadow .22s;display:flex;position:sticky;top:0;overflow-x:hidden}.app-sidebar.collapsed{width:70px}.app-sidebar.collapsed:hover{width:240px;box-shadow:0 10px 30px #0006}.sidebar-brand{white-space:nowrap;border-bottom:1px solid #ffffff0f;align-items:center;gap:.65rem;height:48px;padding:0 1rem;transition:all .2s;display:flex}.app-sidebar.collapsed:not(:hover) .sidebar-brand{justify-content:center;padding:0 1rem}.app-sidebar.collapsed:not(:hover) .sidebar-brand-text{opacity:0;visibility:hidden;width:0;display:none}.app-sidebar.collapsed:not(:hover) .sidebar-menu-title{opacity:0;visibility:hidden;height:0;margin:0;padding:0;display:none}.app-sidebar.collapsed:not(:hover) .nav-item-label{opacity:0;visibility:hidden;width:0;display:none}.app-sidebar.collapsed:not(:hover) .sidebar-badge{opacity:0;visibility:hidden;display:none}.app-sidebar.collapsed:not(:hover) .sidebar-submenu,.app-sidebar.collapsed:not(:hover) .nav-item-collapse-icon{display:none!important}.app-sidebar.collapsed:not(:hover) .sidebar-nav{padding:.4rem .3rem}.app-sidebar.collapsed:not(:hover) .sidebar-nav-item{border-left-width:0;justify-content:center;padding:.6rem 0}.sidebar-brand-logo{border-radius:var(--radius-sm);color:#fff;background:linear-gradient(135deg,#405189,#0ab39c);flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex;box-shadow:0 2px 5px #4051894d}.sidebar-brand-text .brand-title{letter-spacing:.05em;color:#fff;font-size:.88rem;font-weight:700}.sidebar-menu-wrapper{flex:1;padding-top:.35rem;overflow-y:auto}.sidebar-menu-title{color:#8392a5;text-transform:uppercase;letter-spacing:.05em;padding:.75rem 1rem .3rem;font-size:.65rem;font-weight:600}.sidebar-nav{flex-direction:column;gap:.15rem;padding:.2rem .65rem;display:flex}.sidebar-nav-item{border-radius:var(--radius-sm);color:#abb9e8;text-align:left;cursor:pointer;font-size:.81rem;font-weight:500;font-family:var(--font-sans);white-space:nowrap;background:0 0;border:none;border-left:3px solid #0000;align-items:center;gap:.65rem;width:100%;padding:.5rem .75rem;transition:all .15s;display:flex}.sidebar-nav-item:hover{color:#fff;background:#ffffff0d}.sidebar-nav-item.active{color:#fff;background:#ffffff17;border-left-color:#0ab39c;font-weight:600}.nav-item-icon{flex-shrink:0;justify-content:center;align-items:center;display:flex}.nav-item-label{flex:1}.sidebar-badge{border-radius:var(--radius-xs);font-size:.65rem;font-weight:600;font-family:var(--font-mono);padding:.1rem .45rem}.badge-master{color:#abb9e8;background:#40518973}.sidebar-submenu{flex-direction:column;gap:.15rem;margin-top:.15rem;margin-bottom:.25rem;padding-left:1.6rem;transition:all .2s ease-in-out;display:flex;overflow:hidden}.sidebar-sub-item{border-radius:var(--radius-sm);color:#8c9cd0;text-align:left;cursor:pointer;font-size:.77rem;font-weight:500;font-family:var(--font-sans);background:0 0;border:none;border-left:2px solid #ffffff1f;align-items:center;gap:.55rem;width:100%;padding:.38rem .65rem;transition:all .15s;display:flex}.sidebar-sub-item:hover{color:#fff;background:#ffffff0d;border-left-color:#abb9e8}.sidebar-sub-item.active{color:#fff;background:#ffffff14;border-left-color:#0ab39c;font-weight:600}.badge-target{color:#0ab39c;background:#0ab39c40}.sidebar-sub-badge{color:#8c9cd0;font-size:.65rem;font-weight:600;font-family:var(--font-mono);background:#ffffff14;border-radius:4px;margin-left:auto;padding:.05rem .35rem}.sidebar-sub-item.active .sidebar-sub-badge{color:#0ab39c;background:#0ab39c33}.topbar-hamburger-btn{color:#878a99;cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;margin-right:.35rem;padding:.45rem;transition:all .15s;display:flex}.topbar-hamburger-btn:hover{color:#405189;background:#f3f3f9}.topbar-hamburger-btn:active{transform:scale(.95)}.main-content{flex-direction:column;flex:1;min-width:0;min-height:100vh;display:flex}.app-topbar{border-bottom:1px solid var(--border-subtle);z-index:99;background:#fff;justify-content:space-between;align-items:center;height:46px;padding:0 1.25rem;display:flex;position:sticky;top:0;box-shadow:0 1px 2px #38414a0d}.topbar-left{align-items:center;gap:1rem;display:flex}.topbar-title{color:#212529;font-size:.98rem;font-weight:600}.topbar-breadcrumb{color:var(--text-secondary);align-items:center;gap:.35rem;font-size:.76rem;display:flex}.breadcrumb-separator{color:#ced4da}.breadcrumb-current{color:#495057;font-weight:500}.topbar-right{align-items:center;gap:.75rem;display:flex}.topbar-reset-btn{color:#f06548;border-radius:var(--radius-sm);background-color:#f065480f;border:1px solid #f0654840;padding:.32rem .7rem;font-size:.76rem;transition:all .15s}.topbar-reset-btn:hover{background-color:#f065481f;border-color:#f0654866}.page-content{flex-direction:column;flex:1;gap:.65rem;width:100%;max-width:1600px;padding:.75rem 1.25rem;display:flex}.nav-tabs{border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:#f3f3f9;gap:.2rem;padding:.2rem;display:flex}.nav-tab-btn{border-radius:var(--radius-sm);color:#495057;cursor:pointer;font-size:.8rem;font-weight:500;font-family:var(--font-sans);background:0 0;border:none;align-items:center;gap:.45rem;padding:.38rem .85rem;transition:all .18s;display:flex}.nav-tab-btn:hover{color:#405189;background:#ffffffbf}.nav-tab-btn.active{color:#fff;background:#405189;font-weight:600;box-shadow:0 2px 4px #40518940}.nav-tab-badge{border-radius:var(--radius-full);color:#fff;font-size:.65rem;font-family:var(--font-mono);background:#ffffff40;padding:.08rem .4rem}.nav-actions{align-items:center;gap:.6rem;display:flex}.status-pill{border-radius:var(--radius-sm);color:#0ab39c;background:#0ab39c1a;border:1px solid #0ab39c40;align-items:center;gap:.4rem;padding:.3rem .65rem;font-size:.72rem;font-weight:600;display:flex}.pulse-dot{background:#0ab39c;border-radius:50%;width:6px;height:6px;animation:2s infinite pulse;box-shadow:0 0 6px #0ab39c}@keyframes pulse{0%{opacity:.8;transform:scale(.95)}50%{opacity:1;transform:scale(1.3)}to{opacity:.8;transform:scale(.95)}}.main-wrapper{flex-direction:column;flex:1;gap:1rem;width:100%;max-width:1560px;margin:0 auto;padding:1.1rem 1.5rem;display:flex}.section-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.2rem;display:flex}.section-title{color:#212529;letter-spacing:-.01em;font-size:1.12rem;font-weight:600}.section-subtitle{color:var(--text-secondary);margin-top:2px;font-size:.78rem}.glass-card{border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-card);background:#fff;padding:.85rem 1.15rem;transition:box-shadow .2s;position:relative}.glass-card:hover{box-shadow:0 2px 6px #38414a1f}.metrics-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.65rem;display:grid}.metric-card{border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-card);background:#fff;flex-direction:column;gap:.35rem;padding:.7rem .85rem;transition:transform .18s,box-shadow .18s;display:flex;position:relative;overflow:hidden}.metric-card:hover{transform:translateY(-2px);box-shadow:0 4px 10px #38414a26}.metric-card:before{content:"";background:0 0;height:2.5px;position:absolute;top:0;left:0;right:0}.metric-card.blue:before{background:#405189}.metric-card.emerald:before{background:#0ab39c}.metric-card.rose:before{background:#f06548}.metric-card.amber:before{background:#f7b84b}.metric-card.cyan:before{background:#299cdb}.metric-card.purple:before{background:#6559cc}.metric-header{justify-content:space-between;align-items:center;display:flex}.metric-title{letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);font-size:.67rem;font-weight:600}.metric-icon-bubble{border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.metric-card.blue .metric-icon-bubble{color:#405189;background:#4051891a}.metric-card.emerald .metric-icon-bubble{color:#0ab39c;background:#0ab39c1a}.metric-card.rose .metric-icon-bubble{color:#f06548;background:#f065481a}.metric-card.amber .metric-icon-bubble{color:#d68b0c;background:#f7b84b1a}.metric-card.cyan .metric-icon-bubble{color:#299cdb;background:#299cdb1a}.metric-card.purple .metric-icon-bubble{color:#6559cc;background:#6559cc1a}.metric-value{color:#212529;letter-spacing:-.02em;font-size:1.35rem;font-weight:700}.metric-card.emerald .metric-value{color:#0ab39c}.metric-card.rose .metric-value{color:#f06548}.metric-card.amber .metric-value{color:#d68b0c}.metric-card.cyan .metric-value{color:#299cdb}.metric-card.purple .metric-value{color:#6559cc}.metric-footer{color:var(--text-secondary);font-size:.71rem;line-height:1.35}.dashboard-columns{grid-template-columns:1.15fr 1fr;gap:1rem;display:grid}@media (width<=1024px){.dashboard-columns{grid-template-columns:1fr}}.chart-bars-list{flex-direction:column;gap:.65rem;margin-top:.65rem;display:flex}.chart-bar-item{flex-direction:column;gap:.25rem;display:flex}.chart-bar-label-row{justify-content:space-between;align-items:center;font-size:.76rem;display:flex}.chart-bar-name{color:#495057;font-weight:600}.chart-bar-stats{font-family:var(--font-mono);color:var(--text-secondary);gap:.6rem;display:flex}.chart-bar-track{border-radius:var(--radius-full);background:#eff2f7;height:6px;display:flex;position:relative;overflow:hidden}.chart-bar-fill-matched{background:#0ab39c;height:100%;transition:width .5s}.chart-bar-fill-unmatched{background:#f06548;height:100%;transition:width .5s}.badge{border-radius:var(--radius-xs);white-space:nowrap;letter-spacing:.01em;align-items:center;gap:.25rem;padding:.12rem .42rem;font-size:.68rem;font-weight:600;display:inline-flex}.badge-match{color:#0ab39c;background-color:#0ab39c1a;border:1px solid #0ab39c33}.badge-diff{color:#f06548;background-color:#f065481a;border:1px solid #f0654833}.badge-level1{color:#405189;background-color:#4051891a;border:1px solid #40518933}.badge-level2{color:#d68b0c;background-color:#f7b84b1f;border:1px solid #f7b84b40}.badge-unmatched{color:#878a99;background-color:#f3f3f9;border:1px solid #e9ebec}.table-container{border-radius:var(--radius-md);border:1px solid var(--border-subtle);max-height:520px;box-shadow:var(--shadow-sm);background:#fff;position:relative;overflow-x:auto}.modern-table{border-collapse:collapse;text-align:left;letter-spacing:-.005em;width:100%;font-size:.74rem}.modern-table thead{z-index:10;background-color:#f3f6f9;position:sticky;top:0}.modern-table th{color:#6c757d;border-bottom:1px solid var(--border-subtle);white-space:nowrap;letter-spacing:.02em;text-transform:uppercase;background-color:#f3f6f9;padding:.42rem .65rem;font-size:.69rem;font-weight:600}.modern-table td{border-bottom:1px solid var(--border-subtle);color:#495057;white-space:nowrap;background-color:#fff;padding:.35rem .6rem;font-size:.74rem;line-height:1.35}.modern-table tbody tr{transition:background-color .12s}.modern-table tbody tr:hover{background-color:var(--bg-hover-row)}.modern-table tbody tr.row-matched{background-color:#0ab39c08}.modern-table tbody tr.row-unmatched{background-color:#f0654808}.code-cell{font-family:var(--font-mono);color:#405189;font-weight:600}.dropzone-container{border-radius:var(--radius-md);text-align:center;cursor:pointer;background:#f8f9fa;border:2px dashed #ced4da;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:2.25rem 1.5rem;transition:all .2s;display:flex}.dropzone-container:hover,.dropzone-container.drag-over{background:#40518908;border-color:#405189;box-shadow:0 0 10px #4051891a}.dropzone-icon{color:#405189;background:#4051891a;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.dropzone-title{color:#212529;font-size:1rem;font-weight:600}.dropzone-desc{color:var(--text-secondary);max-width:450px;font-size:.78rem}.btn{border-radius:var(--radius-sm);font-size:.76rem;font-weight:500;font-family:var(--font-sans);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.35rem;padding:.34rem .75rem;line-height:1.25;text-decoration:none;transition:all .15s;display:inline-flex}.btn-primary{color:#fff;background-color:#405189;border-color:#405189;box-shadow:0 1px 3px #40518933}.btn-primary:hover:not(:disabled){background-color:#364574;border-color:#364574;box-shadow:0 2px 6px #4051894d}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-success{color:#fff;background-color:#0ab39c;border-color:#0ab39c;box-shadow:0 1px 3px #0ab39c33}.btn-success:hover:not(:disabled){background-color:#099885;border-color:#099885}.btn-outline{color:#495057;border:1px solid var(--border-subtle);background-color:#fff}.btn-outline:hover{color:#212529;background-color:#f3f3f9;border-color:#ced4da}.btn-sm{border-radius:var(--radius-sm);padding:.22rem .55rem;font-size:.71rem}.progress-container{border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-card);background:#fff;flex-direction:column;gap:.55rem;padding:.9rem 1.2rem;display:flex}.progress-header{justify-content:space-between;align-items:center;display:flex}.progress-label{color:#405189;align-items:center;gap:.4rem;font-size:.82rem;font-weight:600;display:flex}.progress-pct{font-family:var(--font-mono);color:#405189;font-size:.95rem;font-weight:700}.progress-bar-bg{border-radius:var(--radius-full);background:#eff2f7;height:7px;position:relative;overflow:hidden}.progress-bar-inner{border-radius:var(--radius-full);background:linear-gradient(90deg,#405189,#0ab39c);height:100%;transition:width .2s linear;position:relative}.filter-toolbar{border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;padding:.55rem .85rem;display:flex}.filter-group{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.filter-select{color:#495057;border-radius:var(--radius-sm);font-size:.75rem;font-family:var(--font-sans);cursor:pointer;background:#fff;border:1px solid #ced4da;outline:none;height:30px;padding:.28rem .65rem;transition:border-color .15s}.filter-select:focus{border-color:#405189;box-shadow:0 0 0 2px #4051891f}.unified-select-box{border-radius:var(--radius-sm);box-sizing:border-box;white-space:nowrap;color:#495057;background:#fff;border:1px solid #ced4da;flex-shrink:0;align-items:center;gap:.35rem;height:30px;padding:0 .45rem 0 .5rem;transition:all .15s;display:inline-flex}.unified-select-box:hover{border-color:#adb5bd}.unified-select-box:focus-within{border-color:#405189;box-shadow:0 0 0 2px #4051891f}.unified-select-box select{font-size:.76rem;font-family:var(--font-sans);color:#405189;cursor:pointer;height:100%;font-weight:600;box-shadow:none!important;background:0 0!important;border:none!important;outline:none!important;margin:0!important;padding:0 .15rem 0 .1rem!important}.unified-select-box select:disabled{cursor:not-allowed;color:#878a99!important}.unified-select-box select option{color:#212529;background:#fff;font-weight:500}.search-input-wrapper{align-items:center;display:flex;position:relative}.search-input{color:#495057;border-radius:var(--radius-sm);background:#fff;border:1px solid #ced4da;outline:none;width:210px;height:30px;padding:.28rem .65rem .28rem 1.85rem;font-size:.75rem;transition:width .2s,border-color .15s}.search-input:focus{border-color:#405189;width:250px;box-shadow:0 0 0 2px #4051891f}.search-icon-pos{color:var(--text-muted);pointer-events:none;position:absolute;left:.65rem}.pagination-row{color:var(--text-secondary);justify-content:space-between;align-items:center;padding-top:.65rem;font-size:.75rem;display:flex}.pagination-controls{align-items:center;gap:.4rem;display:flex}.anomaly-table-row{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:#f8f9fa;justify-content:space-between;align-items:center;margin-bottom:.35rem;padding:.5rem .75rem;transition:background-color .15s;display:flex}.anomaly-table-row:hover{background:#f3f6f9}.anomaly-area-name{color:#212529;font-size:.78rem;font-weight:600}.anomaly-area-sub{color:var(--text-secondary);font-size:.7rem}.anomaly-count-pill{font-family:var(--font-mono);color:#f06548;border-radius:var(--radius-sm);background:#f065481a;padding:.15rem .5rem;font-size:.72rem;font-weight:600}.health-warning-banner{border-radius:var(--radius-md);color:#925807;background:#f7b84b1a;border:1px solid #f7b84b4d;align-items:flex-start;gap:.75rem;margin-bottom:.75rem;padding:.8rem 1rem;display:flex}.health-warning-banner.success{color:#07796a;background:#0ab39c1a;border-color:#0ab39c4d}.modern-table tbody tr{content-visibility:auto;contain-intrinsic-size:42px}.bni-map-container{z-index:1;border-radius:8px;position:relative;overflow:hidden}.bni-map-container .leaflet-container{width:100%;height:520px;font-family:var(--font-sans);background:#edf2f7}.bni-map-container .leaflet-control-zoom{overflow:hidden;border:1px solid #4051892e!important;border-radius:8px!important;margin:14px!important;box-shadow:0 4px 12px #0f172a24!important}.bni-map-container .leaflet-control-zoom a{font-weight:500;transition:background-color .15s,color .15s;color:#405189!important;background:#fffffff5!important;border:0!important;width:32px!important;height:32px!important;font-size:21px!important;line-height:30px!important}.bni-map-container .leaflet-control-zoom a:hover{color:#fff!important;background:#405189!important}.bni-map-container .leaflet-control-zoom a:first-child{border-bottom:1px solid #40518924!important}.leaflet-popup-content-wrapper{color:#212529!important;background:#fff!important;border:1px solid #e2e8f0!important;border-radius:8px!important;padding:0!important;box-shadow:0 10px 25px -5px #00000026,0 8px 10px -6px #0000001a!important}.leaflet-popup-content{margin:0!important;line-height:1.4!important}.leaflet-popup-tip{background:#fff!important;border:1px solid #e2e8f0!important}.bni-pin-icon{cursor:pointer;justify-content:center;align-items:center;transition:transform .2s cubic-bezier(.175,.885,.32,1.275);display:flex}.bni-pin-icon:hover{transform:scale(1.25)translateY(-4px);z-index:9999!important}.bni-map-fast-tooltip{color:#1e293b!important;background:#fffffffa!important;border:1px solid #cbd5e1!important;border-radius:6px!important;padding:4px 8px!important;box-shadow:0 4px 12px #0f172a1f!important}.bni-map-fast-tooltip:before{border-top-color:#fffffffa!important}@keyframes flowDash{to{stroke-dashoffset:-32px}}.bni-flow-arc{filter:drop-shadow(0 2px 4px #0ab39c66);stroke-dasharray:6 8!important;animation:1.2s linear infinite flowDash!important}.bni-origin-halo{animation:1.6s ease-out infinite flowPulse}@keyframes flowPulse{0%{opacity:1;transform:scale(.9)}70%{opacity:.2;transform:scale(1.6)}to{opacity:0;transform:scale(1.8)}}.bni-map-container .leaflet-container,.bni-map-container .leaflet-grab{cursor:default!important}.bni-map-container .leaflet-dragging .leaflet-grab,.bni-map-container .leaflet-dragging .leaflet-container{cursor:grabbing!important}.bni-map-container .leaflet-interactive,.bni-map-container path.leaflet-interactive,.bni-map-container circle.leaflet-interactive{cursor:pointer!important}.bni-map-container canvas{cursor:default}.bni-selected-halo{animation:1.8s ease-out infinite selectedHaloPulse}@keyframes selectedHaloPulse{0%,to{opacity:.55}50%{opacity:1}}
