.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{--bg: #f1f5f9;--panel: #ffffff;--text: #0f172a;--muted: #64748b;--border: #e2e8f0;--brand: #2563eb}:root[data-theme=dark]{--bg: #0f172a;--panel: #1e293b;--text: #e2e8f0;--muted: #94a3b8;--border: #334155;--brand: #60a5fa}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text)}.app{display:flex;height:100vh;overflow:hidden}.sidebar{width:220px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);padding:16px 12px;overflow-y:auto;transition:width .18s ease-out,padding .18s ease-out;position:relative}.sidebar[data-rail=true]{width:60px;padding:16px 6px}.sidebar[data-rail=true] .nav-item{justify-content:center;padding:8px 4px}.sidebar[data-rail=true] .nav-label,.sidebar[data-rail=true] .nav-group-title,.sidebar[data-rail=true] .brand-sub,.sidebar[data-rail=true] .nav-fav-btn,.sidebar[data-rail=true] .nav-group-caret{display:none}.sidebar[data-rail=true] .brand{font-size:14px;text-align:center}.sidebar[data-rail=true] .nav-num,.sidebar[data-rail=true] .nav-icon{margin:0 auto}.sidebar[data-rail=true] .nav-item{position:relative}.sidebar[data-rail=true] .nav-item:hover:after{content:attr(data-tooltip);position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);background:#111827;color:#fff;padding:4px 10px;border-radius:6px;font-size:12px;white-space:nowrap;z-index:100;box-shadow:0 4px 12px #00000026;pointer-events:none}.sidebar-toggle{position:absolute;top:12px;right:8px;width:24px;height:24px;padding:0;border:1px solid var(--border);background:var(--panel);border-radius:4px;cursor:pointer;font-size:11px;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;z-index:2}.sidebar-toggle:hover{background:var(--bg);color:var(--text)}.sidebar[data-rail=true] .sidebar-toggle{right:50%;transform:translate(50%);top:6px}.nav-group-header{display:flex;align-items:center;gap:6px;cursor:pointer;padding:4px 0;-webkit-user-select:none;user-select:none}.nav-group-header:hover .nav-group-title{color:var(--text)}.nav-group-caret{font-size:10px;color:var(--muted);transition:transform .15s ease-out}.nav-group[data-collapsed=true] .nav-group-caret{transform:rotate(-90deg)}.nav-group[data-collapsed=true] .nav-group-items{display:none}.nav-fav-btn{margin-left:auto;padding:0;border:none;background:transparent;cursor:pointer;font-size:12px;color:transparent;transition:color .1s;flex-shrink:0}.nav-item:hover .nav-fav-btn{color:var(--muted)}.nav-fav-btn[data-pinned=true]{color:#f59e0b}.nav-fav-btn:hover{color:#f59e0b!important}.nav-item.active .nav-fav-btn{color:#fff9}.nav-item.active .nav-fav-btn[data-pinned=true]{color:#fbbf24}.brand{font-size:22px;font-weight:800;color:var(--brand)}.brand-sub{font-size:11px;color:var(--muted);margin-bottom:16px}.nav-group{margin-bottom:18px}.nav-group-title{font-size:11px;color:var(--muted);letter-spacing:.5px;margin-bottom:6px}.nav-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;color:var(--text);text-decoration:none;font-size:14px}.nav-item:hover{background:var(--bg)}.nav-item.active{background:var(--brand);color:#fff}.nav-num{flex-shrink:0;width:18px;height:18px;border-radius:50%;background:var(--bg);color:var(--muted);font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.nav-icon{flex-shrink:0;width:18px;font-size:14px;line-height:1;text-align:center}.nav-item.active .nav-num{background:#ffffff40;color:#fff}.main{flex:1;display:flex;flex-direction:column;min-width:0}.content{flex:1;overflow:auto;padding:16px}.header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--panel)}.header-title{font-size:16px;font-weight:700}.header-actions{display:flex;gap:8px}.nav-toggle,.nav-backdrop{display:none}@media (max-width: 768px){.nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:auto;padding:5px 10px;font-size:18px;line-height:1;margin-right:2px;flex-shrink:0}.sidebar,.sidebar[data-rail=true]{position:fixed;top:0;left:0;bottom:0;width:min(82vw,300px);padding:16px 12px;z-index:300;transform:translate(-100%);transition:transform .22s ease;box-shadow:2px 0 20px #00000040;padding-top:max(16px,env(safe-area-inset-top))}.app[data-nav-open=true] .sidebar{transform:translate(0)}.sidebar[data-rail=true] .nav-label,.sidebar[data-rail=true] .nav-group-title,.sidebar[data-rail=true] .brand-sub,.sidebar[data-rail=true] .nav-fav-btn,.sidebar[data-rail=true] .nav-group-caret{display:revert}.sidebar-toggle{display:none}.app[data-nav-open=true] .nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:250;background:#00000073;animation:navFade .15s ease}.header{padding:8px 12px;padding-left:max(12px,env(safe-area-inset-left))}.header-title{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-actions{gap:4px}.header-actions kbd{display:none}.hide-mobile{display:none!important}.content{padding:12px;padding-bottom:max(12px,env(safe-area-inset-bottom))}.statusbar{padding:4px 10px;padding-bottom:max(4px,env(safe-area-inset-bottom));overflow-x:auto}}@keyframes navFade{0%{opacity:0}to{opacity:1}}@media (max-width: 768px){.modal-panel{width:100vw!important;max-width:100vw!important;height:100vh;height:100dvh;max-height:100vh!important;max-height:100dvh!important;border-radius:0!important}.drawer{width:100vw}.ehw-backdrop{padding:0}.ehw-window{width:100vw;border-radius:0;border:none;max-height:100vh;max-height:100dvh;height:100dvh}.ehw-body{flex-direction:column;overflow:auto}.ehw-side{width:100%;flex-shrink:0;border-right:none;border-bottom:1px solid var(--border);max-height:44vh}.ehw-charts{padding:12px}.table{font-size:12px}.table th,.table td{padding:6px 8px}.btn,.input{min-height:36px}}.m-app{display:flex;flex-direction:column;height:100vh;height:100dvh;background:var(--bg);color:var(--text)}.m-topbar{display:flex;align-items:center;gap:8px;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10;flex-shrink:0}.m-topbar h1{font-size:16px;font-weight:800;margin:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-iconbtn{width:38px;height:38px;border:none;background:transparent;color:var(--text);font-size:18px;border-radius:10px;cursor:pointer;flex-shrink:0}.m-iconbtn:active{background:var(--bg)}.m-badge{position:absolute;top:2px;right:2px;background:#dc2626;color:#fff;border-radius:9px;min-width:16px;height:16px;font-size:9px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;padding:0 3px}.m-content{flex:1;overflow-y:auto;padding:14px;padding-bottom:calc(74px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}.m-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;background:var(--panel);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.m-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 9px;background:none;border:none;color:var(--muted);font-size:10px;font-weight:600;cursor:pointer;text-decoration:none}.m-tab .ico{font-size:21px;line-height:1}.m-tab.active{color:var(--brand)}.m-tab.center .ico{transform:translateY(-6px);background:var(--brand);color:#fff;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;box-shadow:0 4px 12px #2563eb66}.m-tab.center{color:var(--brand)}.m-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:14px;margin-bottom:12px;box-shadow:0 1px 2px #0000000a}.m-card.tap{width:100%;cursor:pointer}.m-card.tap:active{transform:scale(.99)}.m-card-title{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-hi{font-size:20px;font-weight:800}.m-section-title{font-size:13px;font-weight:700;color:var(--muted);margin:16px 2px 8px;display:flex;align-items:center;gap:6px}.m-empty{text-align:center;color:var(--muted);font-size:13px;padding:22px}.m-statgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.m-stat{border:1px solid var(--border);background:var(--panel);border-radius:14px;padding:16px 14px;text-align:left;cursor:pointer}.m-stat.crit{border-color:#fca5a5;background:color-mix(in srgb,#fee2e2 40%,var(--panel))}.m-stat.warn{border-color:#fcd34d;background:color-mix(in srgb,#fef3c7 40%,var(--panel))}.m-stat-num{font-size:30px;font-weight:800;line-height:1}.m-stat-lbl{font-size:12px;color:var(--muted);margin-top:6px}.m-stat-sub{font-size:11px;font-weight:700;margin-top:2px;color:var(--muted)}.m-scan-cta{width:100%;display:flex;align-items:center;gap:12px;padding:16px;border:none;border-radius:16px;background:linear-gradient(135deg,#2563eb,#1e40af);color:#fff;cursor:pointer;margin-bottom:4px}.m-scan-cta:active{transform:scale(.99)}.m-alarm{display:flex;align-items:center;gap:10px}.m-sev{width:8px;height:42px;border-radius:4px;flex-shrink:0}.m-sev.critical{background:#dc2626}.m-sev.warning{background:#f59e0b}.m-sev.normal{background:#22c55e}.m-pill{flex-shrink:0;font-size:10px;font-weight:800;padding:2px 7px;border-radius:8px;background:var(--bg);color:var(--muted)}.m-status{font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap}.m-segrow{display:flex;gap:6px;margin-bottom:12px}.m-seg{flex:1;padding:8px;border:1px solid var(--border);background:var(--panel);color:var(--muted);font-weight:700;font-size:13px;border-radius:10px;cursor:pointer}.m-seg.active{background:var(--brand);border-color:var(--brand);color:#fff}.m-btn{min-height:40px;padding:8px 14px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-weight:700;font-size:13px;border-radius:10px;cursor:pointer}.m-btn:active{transform:scale(.98)}.m-btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.m-btn.lg{min-height:48px;font-size:15px}.m-btn:disabled{opacity:.5}.m-input{width:100%;min-height:42px;padding:8px 12px;border:1px solid var(--border);border-radius:10px;background:var(--panel);color:var(--text);font-size:14px}.m-step{width:100%;display:flex;align-items:center;gap:10px;padding:10px 4px;border:none;border-bottom:1px solid var(--border);background:none;color:var(--text);font-size:14px;cursor:pointer}.m-step:last-child{border-bottom:none}.m-check{width:24px;height:24px;border-radius:7px;border:2px solid var(--border);display:grid;place-items:center;color:transparent;font-weight:800;flex-shrink:0}.m-check.on{background:#16a34a;border-color:#16a34a;color:#fff}.m-scanbox{position:relative;width:100%;aspect-ratio:3 / 4;max-height:46vh;background:#0b1220;border-radius:16px;overflow:hidden;margin-bottom:12px;display:flex;align-items:center;justify-content:center}.m-scan-ph{text-align:center;color:#cbd5e1;padding:20px}.m-scan-frame{position:absolute;top:18%;right:14%;bottom:18%;left:14%;border:3px solid rgba(255,255,255,.85);border-radius:16px;box-shadow:0 0 0 100vmax #00000059}.m-actiongrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.m-action{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:14px;font-size:12px;font-weight:700;cursor:pointer}.m-action:active{transform:scale(.98)}.m-action:disabled{opacity:.5}.m-row{width:100%;display:flex;align-items:center;gap:12px;padding:14px;margin-bottom:8px;border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:12px;font-size:14px;font-weight:600;cursor:pointer}.m-row:active{background:var(--bg)}.m-row.danger{color:#dc2626}.statusbar{display:flex;align-items:center;gap:10px;padding:4px 14px;border-top:1px solid var(--border);background:var(--panel);font-size:12px;color:var(--muted);flex-shrink:0}.status-item{display:inline-flex;align-items:center;gap:5px}.status-sep{width:1px;height:13px;background:var(--border)}.state-box{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:44px 20px;text-align:center}.state-icon{font-size:34px;opacity:.55}.state-title{font-weight:600;color:var(--muted)}.spinner{width:24px;height:24px;border:3px solid var(--border);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast-container{position:fixed;right:18px;bottom:46px;display:flex;flex-direction:column;gap:8px;z-index:200}.toast{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:10px;font-size:13px;font-weight:600;color:#fff;box-shadow:0 4px 16px #0003;cursor:pointer;min-width:200px;animation:toast-in .18s ease}.toast-success{background:#16a34a}.toast-error{background:#dc2626}.toast-info{background:#334155}.toast-icon{font-weight:800}.toast-action{margin-left:auto;padding:3px 10px;border:1px solid rgba(255,255,255,.45);border-radius:999px;background:#ffffff1f;color:#fff;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;flex-shrink:0}.toast-action:hover{background:#ffffff42}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.btn{padding:6px 12px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text);cursor:pointer;font-size:13px;white-space:nowrap;flex-shrink:0}.btn:hover{background:var(--bg)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:disabled:hover{background:var(--panel)}.btn.primary:disabled:hover{background:var(--brand)}.btn.primary{background:var(--brand);color:#fff;border-color:var(--brand);padding:10px}.btn.block{width:100%}.btn.outline{background:var(--panel);color:var(--brand);border-color:var(--brand);font-weight:600}.btn.outline:hover{background:var(--bg)}.input{padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text)}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px}.modal-body{scrollbar-gutter:stable}.modal-body::-webkit-scrollbar{width:12px}.modal-body::-webkit-scrollbar-track{background:color-mix(in srgb,var(--muted) 12%,transparent);border-radius:6px;margin:2px 0}.modal-body::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--muted) 60%,transparent);border-radius:6px;border:2px solid transparent;background-clip:padding-box}.modal-body::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--muted) 85%,transparent);background-clip:padding-box}.card.fill{display:flex;flex-direction:column;min-height:0}.card.clickable{cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s,transform .08s}.card.clickable:hover{background:#f9fafb;border-color:#94a3b8;box-shadow:0 1px 3px #0000000f}.card.clickable:active{transform:scale(.995)}@media (prefers-color-scheme: dark){.card.clickable:hover{background:#26324a;border-color:#64748b}}.table tbody tr[style*="cursor: pointer"]:hover,.table tbody tr[style*="cursor:pointer"]:hover{background:#eff6ff}.card-title{font-weight:700;margin-bottom:10px}.muted{color:var(--muted)}.small{font-size:12px}.grow{flex:1}.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.selector-card{background:var(--panel);border:1.5px solid var(--border);border-radius:12px;padding:12px 16px;margin-bottom:14px}.selector-card.incomplete{border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b26}.selector-card.complete{border-color:#16a34a}.selector-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.selector-title{font-weight:700;font-size:15px}.selector-title .step{color:var(--brand);font-size:11px;font-weight:800;margin-right:8px;background:var(--bg);padding:2px 8px;border-radius:999px}.selector-status{font-size:13px;font-weight:700;color:#d97706}.selector-status.ok{color:#16a34a}.selector-fields{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.selector-field{display:flex;flex-direction:column;gap:4px}.selector-field>span{font-size:12px;color:var(--muted);font-weight:600}.selector-field .input{min-width:180px;padding:9px 11px}.selector-arrow{color:var(--muted);align-self:flex-end;padding-bottom:9px}.selector-hint{margin-top:10px;font-size:13px;color:#b45309;font-weight:600}.step-header{display:flex;align-items:center;gap:8px;margin:26px 0 12px}.step-badge{color:var(--brand);font-size:11px;font-weight:800;background:var(--bg);padding:2px 8px;border-radius:999px}.step-title{font-weight:700;font-size:15px}.step-section{background:var(--panel);border:1.5px solid var(--border);border-radius:12px;padding:12px 14px;margin-top:18px;transition:border-color .2s,box-shadow .2s}.step-section.active{border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b1f}.step-section.done{border-color:#16a34a}.step-section.locked{opacity:.55}.step-section-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.step-section-head .step-title{margin-right:auto}.step-section-actions{display:flex;gap:8px;align-items:center}.step-section-head .step-status{font-size:13px;font-weight:700}.step-section.active .step-status{color:#d97706}.step-section.done .step-status{color:#16a34a}.step-section.locked .step-status{color:var(--muted)}.step-section-body .card{background:var(--bg)}.callout{border:1px solid var(--border);border-left:4px solid var(--brand);border-radius:10px;padding:12px 14px;background:#2563eb0d}.callout-success{border-left-color:#16a34a;background:#16a34a14}.callout-head{display:flex;align-items:center;gap:8px;font-size:15px;margin-bottom:4px}.callout-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#16a34a;color:#fff;font-size:13px;font-weight:800;flex-shrink:0}.callout-body{color:var(--muted);font-size:13px;margin-bottom:12px}.callout-actions{display:flex;gap:8px;flex-wrap:wrap}.dashboard{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.dashboard>.toolbar,.dashboard>.summary-row{flex-shrink:0}.summary-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:10px}.dashboard>.summary-row{grid-template-columns:.82fr 1.2fr 1.2fr .82fr .82fr}.summary-card{display:flex;align-items:center;gap:10px;padding:9px 12px;position:relative}.summary-body{min-width:0}.summary-icon{font-size:21px;flex-shrink:0}.summary-label{font-size:12px;color:var(--muted)}.summary-value{font-size:21px;font-weight:800;line-height:1.1}.summary-card.active-card{outline:2px solid var(--brand);outline-offset:-1px}.summary-card.tone-alert{border-width:2px;box-shadow:0 1px 6px #0000000f}.summary-card.tone-alert .summary-value{font-size:28px}.summary-card.tone-alert .summary-label{font-weight:700;color:var(--text)}.summary-card.tone-minor .summary-value{font-size:18px}.summary-card.tone-minor .summary-icon{font-size:18px;opacity:.75}.summary-trend-wrap{margin-left:auto;align-self:flex-start}.summary-trend{font-size:12px;font-weight:800;white-space:nowrap}.dashboard-grid{display:grid;grid-template-columns:300px minmax(0,1fr) 360px;gap:12px;flex:1;min-height:0}.list{overflow-y:auto;display:flex;flex-direction:column;gap:4px}.list-row{display:flex;align-items:center;gap:8px;padding:8px;border-radius:8px;cursor:pointer}.list-row:hover{background:var(--bg)}.list-row.selected{background:var(--brand);color:#fff}.dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.badge{font-size:12px;font-weight:700;white-space:nowrap;display:inline-block}.matrix-scroll{overflow-y:auto}.matrix-unit{margin-bottom:14px}.matrix-unit-name{font-size:13px;font-weight:700;margin-bottom:6px;color:var(--muted)}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.tile{border:2px solid;border-radius:10px;padding:8px 10px;cursor:pointer;background:var(--panel)}.tile:hover{filter:brightness(.97)}.tile.abn.s-warning{background:color-mix(in srgb,#d97706 8%,var(--panel))}.tile.abn.s-critical{background:color-mix(in srgb,#dc2626 9%,var(--panel))}.tile.abn .tile-name{font-weight:800}.tile.calm{opacity:.9}.tile.calm .tile-name{font-weight:600}.tile-name{font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-hi{font-size:12px;white-space:nowrap;margin-top:3px}.abn-toggle{flex-shrink:0}.alert-row{display:flex;align-items:center;gap:8px;padding:8px;border-bottom:1px solid var(--border)}.alert-title{font-size:13px}.alarm-unack-badge{font-size:11px;font-weight:800;color:#fff;background:#dc2626;border-radius:999px;padding:1px 8px;line-height:1.5}.alarm-toolbar{display:flex;align-items:center;gap:6px;margin-bottom:8px}.alarm-rate{font-size:12px;font-weight:700;color:var(--muted)}.alarm-rate.flood{color:#dc2626}.alert-row.unacked{border-left:3px solid transparent;padding-left:7px;background:color-mix(in srgb,var(--muted) 5%,transparent)}.alert-row.unacked .alert-title{font-weight:700}.alert-row.acked{opacity:.5}.alarm-ack-btn{padding:3px 9px;font-size:12px;flex-shrink:0}.alarm-ack-done{color:#16a34a;font-weight:800;flex-shrink:0;width:26px;text-align:center}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;justify-content:flex-end;z-index:50}.drawer{width:360px;background:var(--panel);height:100%;box-shadow:-4px 0 16px #00000026;display:flex;flex-direction:column}.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;padding:16px;border-bottom:1px solid var(--border)}.drawer-title{font-size:18px;font-weight:800}.drawer-body{padding:16px;overflow-y:auto}.signin-wrap{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.signin-card{width:340px;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:28px}.field{display:block;margin-bottom:12px}.field span{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}.field .input{width:100%}.error{color:#dc2626;font-size:13px;margin-bottom:10px}.mock-note{background:#fef3c7;color:#92400e;font-size:12px;padding:8px;border-radius:8px;margin-bottom:14px;text-align:center}.placeholder{max-width:640px;margin:40px auto;text-align:center}.placeholder-badge{display:inline-block;background:#fde68a;color:#92400e;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:700;margin-bottom:12px}.table{width:100%;border-collapse:collapse;font-size:13px}.table-scroll{overflow-x:auto}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap}.table-fixed{table-layout:fixed}.table-fixed td,.table-fixed th{overflow:hidden;text-overflow:ellipsis}.table-fixed td.cell-visible,.table-fixed th.cell-visible{overflow:visible}.table th{color:var(--muted);font-weight:600}.table thead th{position:sticky;top:0;background:var(--panel);z-index:1}.table-actions-sticky th:last-child,.table-actions-sticky td:last-child{position:sticky;right:0;background:var(--panel);box-shadow:-6px 0 6px -4px #0000001f}.table-actions-sticky thead th:last-child{z-index:2}.table-actions-sticky tbody tr:nth-child(2n) td:last-child{background:color-mix(in srgb,var(--muted) 6%,var(--panel))}.table-actions-sticky tbody tr:hover td:last-child{background:var(--bg)}.table tbody tr:nth-child(2n){background:#8080800f}.table tbody tr:last-child:nth-child(2n):not(:hover){background:transparent}.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}.btn:focus-visible,.nav-item:focus-visible,.input:focus-visible,.list-row:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.table tbody tr:hover{background:var(--bg)}.table tbody tr.row-selected,.table-actions-sticky tbody tr.row-selected td:last-child{background:#eff6ff}.table tbody tr.row-pulse,.table-actions-sticky tbody tr.row-pulse td:last-child{background:#fef3c7;transition:background .5s}.table tbody tr.row-pulse>td{box-shadow:inset 0 2px #f59e0b,inset 0 -2px #f59e0b}.table tbody tr.row-pulse>td:first-child{box-shadow:inset 2px 2px #f59e0b,inset 0 -2px #f59e0b}.table tbody tr.row-pulse>td:last-child{box-shadow:inset -2px 2px #f59e0b,inset 0 -2px #f59e0b}.radio{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}.heatmap{border-collapse:collapse}.heatmap th{padding:4px 6px;color:var(--muted);font-weight:600}.heatmap td{border:1px solid var(--panel)}.ehw-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0206178c;display:flex;align-items:center;justify-content:center;padding:24px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.ehw-window{width:min(1180px,96vw);max-height:92vh;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:14px;box-shadow:0 24px 64px #0006;display:flex;flex-direction:column;overflow:hidden}.ehw-titlebar{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);background:var(--bg)}.ehw-title-left{display:flex;align-items:center;gap:12px}.ehw-unit{font-size:12px;color:var(--muted)}.ehw-equip{font-size:19px;font-weight:800;line-height:1.15}.ehw-title-right{display:flex;align-items:center;gap:8px}.ehw-dot{width:12px;height:12px;border-radius:50%;display:inline-block}.ehw-dot.sm{width:9px;height:9px}.ehw-chip{font-size:12px;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:3px 10px;white-space:nowrap}.ehw-live{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:3px 10px}.ehw-live.on{color:#16a34a;border-color:#16a34a55}.ehw-live-dot{width:8px;height:8px;border-radius:50%;background:currentColor}.ehw-loading{padding:48px;text-align:center;color:var(--muted)}.ehw-page{height:100vh;display:flex;flex-direction:column;overflow:hidden;background:var(--panel)}.ehw-body{flex:1;display:flex;gap:0;min-height:0;overflow:hidden}.ehw-side{width:300px;flex-shrink:0;border-right:1px solid var(--border);padding:16px;overflow-y:auto;display:flex;flex-direction:column}.ehw-gauge-wrap{text-align:center;margin-bottom:8px}.ehw-gauge{position:relative;display:inline-block}.ehw-gauge-num{position:absolute;left:0;right:0;bottom:2px;font-size:34px;font-weight:800;font-variant-numeric:tabular-nums}.ehw-gauge-unit{font-size:16px;font-weight:700;margin-left:2px}.ehw-gauge-caption{margin-top:2px}.ehw-gauge-status{font-size:15px;font-weight:800}.ehw-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0 6px}.ehw-metric{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:10px}.ehw-metric-top{display:flex;align-items:center;gap:6px;min-height:22px}.ehw-metric-val{font-size:18px;font-weight:800;font-variant-numeric:tabular-nums;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ehw-metric-badge{flex-shrink:0;font-size:11px;font-weight:800;line-height:1;padding:3px 8px;border-radius:999px;background:var(--panel);border:1px solid var(--border)}.ehw-metric-label{font-size:11px;color:var(--muted);margin-top:4px}.ehw-rail-title{font-size:13px;font-weight:700;margin:12px 0 6px}.ehw-rail{display:flex;flex-direction:column;gap:2px}.ehw-rail-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text);cursor:pointer;text-align:left;width:100%}.ehw-rail-row:hover{background:var(--bg)}.ehw-rail-row.active{background:var(--bg);border-color:var(--brand)}.ehw-rail-name{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ehw-rail-score{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}.ehw-charts{flex:1;min-width:0;padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.ehw-chart-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 14px}.ehw-chart-head{display:flex;align-items:baseline;gap:10px;margin-bottom:6px;flex-wrap:wrap}.ehw-chart-title{font-size:14px;font-weight:800}.ehw-chart-sub{flex:1;min-width:0}.ehw-chart-yaxis{margin-left:auto;white-space:nowrap;font-size:11px}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg-btn{padding:7px 14px;font-size:13px;font-weight:600;background:var(--panel);color:var(--muted);border:none;border-right:1px solid var(--border);cursor:pointer}.seg-btn:last-child{border-right:none}.seg-btn:hover{background:var(--bg)}.seg-btn.active{background:var(--brand);color:#fff}.matrix-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}.matrix-head-left{display:flex;align-items:center;gap:8px;min-width:0}.scope-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--brand);background:color-mix(in srgb,var(--brand) 12%,transparent);border:1px solid color-mix(in srgb,var(--brand) 40%,transparent);border-radius:999px;padding:2px 4px 2px 10px}.scope-clear{border:none;background:transparent;color:inherit;cursor:pointer;font-size:12px;line-height:1;padding:2px 4px;border-radius:999px}.scope-clear:hover{background:color-mix(in srgb,var(--brand) 20%,transparent)}.filter-chips{display:inline-flex;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;color:var(--muted);background:var(--panel);border:1px solid var(--border);border-radius:999px;cursor:pointer}.chip:hover{background:var(--bg)}.chip.active{background:color-mix(in srgb,var(--brand) 12%,var(--panel));border-color:var(--brand);color:var(--brand)}.chip-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.chip-count{font-variant-numeric:tabular-nums;font-weight:800;background:var(--bg);border-radius:999px;padding:0 6px;min-width:18px;text-align:center}.chip.active .chip-count{background:color-mix(in srgb,currentColor 15%,transparent)}.util-summary{margin-bottom:14px}.util-bar{height:14px;border-radius:999px;overflow:hidden;background:color-mix(in srgb,#64748b 22%,transparent)}.util-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#16a34a,#22c55e);transition:width .4s ease}.util-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;font-size:13px;font-weight:600}.util-legend>span{display:inline-flex;align-items:center;gap:5px}.util-rate{font-weight:800}.util-sep{color:var(--border)}.op-group-head{display:flex;align-items:center;gap:8px;margin:4px 0 8px}.op-group-title{display:inline-flex;align-items:center;gap:6px;font-weight:800;font-size:14px}.op-group-count{font-variant-numeric:tabular-nums;font-weight:800;font-size:12px;background:var(--bg);border:1px solid var(--border);border-radius:999px;padding:1px 9px}.tile-unit{line-height:1.2;margin-bottom:2px}.tile.dim{opacity:.72;border-style:dashed;background:color-mix(in srgb,var(--muted) 6%,var(--panel))}.tile.dim:hover{opacity:1}.chip.disabled{opacity:.45;cursor:not-allowed}.chip.disabled:hover{background:var(--panel)}.ehw-metric-val.sm{font-size:14px;line-height:1.3}.cmp-builder{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.cmp-field{display:flex;flex-direction:column;gap:4px}.cmp-field>span{font-size:12px;color:var(--muted);font-weight:600}.cmp-field .input{width:100%}.cmp-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer;border:1px solid transparent}.cmp-item:hover{background:var(--bg)}.cmp-item.focused{background:var(--bg);border-color:var(--brand)}.cmp-item.focused .cmp-item-eq{color:var(--brand)}.cmp-item-txt{flex:1;min-width:0}.cmp-item-eq{font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cmp-item-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cmp-item>.ehw-dot,.cmp-item>.scope-clear{flex-shrink:0}.cmp-actions{display:inline-flex;gap:4px;flex-shrink:0;width:0;overflow:hidden;opacity:0;pointer-events:none;transition:width .12s ease,opacity .12s ease}.cmp-item:hover .cmp-actions{width:74px;opacity:1;pointer-events:auto}.cmp-item:focus-visible .cmp-actions{width:74px;opacity:1;pointer-events:auto}.cmp-item:has(:focus-visible) .cmp-actions{width:74px;opacity:1;pointer-events:auto}.cmp-go{flex-shrink:0;width:22px;height:22px;padding:0;border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;font-size:12px;line-height:1;opacity:.75;transition:opacity .12s,background .12s,border-color .12s}.cmp-go:hover,.cmp-go:focus-visible{opacity:1;background:var(--panel);border-color:var(--border)}.matrix-search{display:flex;align-items:center;gap:6px;margin-bottom:10px}.matrix-search .input{flex:1;min-width:0;padding:6px 10px}.matrix-search-icon{font-size:13px;opacity:.7}.matrix-search-count{flex-shrink:0;white-space:nowrap}.matrix-unit{content-visibility:auto;contain-intrinsic-size:auto 120px}.tile{content-visibility:auto;contain-intrinsic-size:auto 58px}.seg.sm .seg-btn{padding:3px 9px;font-size:11px}.ehw-rail-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:12px 0 6px}.ehw-rail-head .ehw-rail-title{margin:0}.ehw-rail-search{display:flex;align-items:center;gap:4px;margin-bottom:6px}.ehw-rail-search .input{flex:1;min-width:0;padding:5px 9px;font-size:13px}.ehw-rail{max-height:260px;overflow-y:auto}.combo{position:relative}.combo .input{width:100%;padding-right:30px}.combo-caret{position:absolute;top:0;right:0;height:100%;width:30px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;padding:0;margin:0;cursor:pointer}.combo-caret:after{content:"";width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--muted);transition:transform .15s ease}.combo-caret.open:after{transform:rotate(180deg)}.combo-caret:disabled{cursor:not-allowed;opacity:.5}.combo-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;max-height:240px;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000002e}.combo-opt{display:flex;align-items:center;gap:8px;padding:7px 10px;font-size:13px;cursor:pointer}.combo-opt .combo-opt-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.combo-opt:hover{background:var(--bg)}.combo-opt.sel{background:color-mix(in srgb,var(--brand) 14%,transparent);font-weight:700}.combo-opt.disabled{color:var(--muted);opacity:.55;cursor:not-allowed}.combo-opt.disabled:hover{background:transparent}.combo-opt-added{flex-shrink:0;font-size:10px;font-weight:700;color:var(--muted);border:1px solid var(--border);border-radius:8px;padding:1px 6px}.combo-empty{padding:8px 10px}.cmp-cat{color:var(--brand);font-style:normal;font-weight:700;font-size:11px}.cmp-note{font-size:12px;font-weight:700;text-align:center;padding:6px 8px;border-radius:8px;background:var(--bg);color:var(--muted)}.cmp-note.warn{color:#b45309;background:color-mix(in srgb,#f59e0b 16%,transparent);border:1px solid color-mix(in srgb,#f59e0b 45%,transparent)}.cmp-pick{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer}.cmp-pick:hover{background:var(--bg)}.cmp-pick input{cursor:pointer;flex-shrink:0}.cmp-pick.done{opacity:.55;cursor:default}.cmp-pick.blocked{opacity:.5;cursor:not-allowed}.cmp-pick.blocked:hover{background:transparent}@keyframes prism-pulse{0%,to{opacity:1}50%{opacity:.35}}input.no-spin::-webkit-outer-spin-button,input.no-spin::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input.no-spin{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}
