*,:before,:after{box-sizing:border-box}body{color:#1a202c;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f7f8fa;margin:0;font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}#root{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3,h4{color:#1a202c;margin:0;font-weight:600;line-height:1.3}p{margin:0}button{font-family:inherit}.theme-light{--bg:#f7f8fa;--surface:#fff;--surface-hover:#f7fafc;--border:#e2e8f0;--border-strong:#cbd5e0;--text:#1a202c;--text-secondary:#4a5568;--text-muted:#718096;--text-faint:#a0aec0;--icon-bg:#f7fafc;--topbar-bg:#fff;--topbar-border:#e2e8f0;--table-header-bg:#f1f5f9;--table-row-hover:#eef2f7;--table-row-border:#f0f4f8;--input-bg:#f7fafc;--input-border:#e2e8f0;--input-text:#2d3748;--input-focus-border:#90cdf4;--filter-btn-bg:#f1f5f9;--filter-btn-text:#4a5568;--filter-btn-hover-bg:#e2e8f0;--filter-btn-hover-text:#1a202c;--filter-btn-hover-border:#cbd5e0;--filter-btn-active-bg:#1a202c;--filter-btn-active-text:#fff;--filter-btn-active-border:#1a202c;--filter-btn-active-shadow:#1a202c2e;--info-neutral:#2d3748;--scrollbar-track:#f1f5f9;--scrollbar-thumb:#cbd5e0;--scrollbar-thumb-hover:#a0aec0}.theme-dark{--bg:#0b0f1a;--surface:#111c2d;--surface-hover:#1a2640;--border:#243044;--border-strong:#3a4f6a;--text:#dce5f0;--text-secondary:#9aaabf;--text-muted:#7a8fa8;--text-faint:#536070;--icon-bg:#1b2d44;--topbar-bg:#111c2d;--topbar-border:#243044;--table-header-bg:#0e1724;--table-row-hover:#1a2640;--table-row-border:#1e2d42;--input-bg:#0c1525;--input-border:#2c4060;--input-text:#dce5f0;--input-focus-border:#4a90d9;--filter-btn-bg:#1b2d44;--filter-btn-text:#9aaabf;--filter-btn-hover-bg:#243454;--filter-btn-hover-text:#dce5f0;--filter-btn-hover-border:#3a4f6a;--filter-btn-active-bg:#1a3a5c;--filter-btn-active-text:#93c5fd;--filter-btn-active-border:#3b82f6;--filter-btn-active-shadow:#3b82f640;--info-neutral:#dce5f0;--scrollbar-track:#0c1525;--scrollbar-thumb:#2a3f5c;--scrollbar-thumb-hover:#3a5070}.app-shell{min-height:100vh;display:flex}.sidebar{background:#0f1117;border-right:1px solid #1e2230;flex-direction:column;flex-shrink:0;width:220px;display:flex}.sidebar-brand{border-bottom:1px solid #1e2230;align-items:center;gap:10px;padding:20px 18px;display:flex}.brand-icon{color:#e53e3e;font-size:18px;line-height:1}.brand-name{color:#f0f0f0;letter-spacing:.3px;font-size:13px;font-weight:600;line-height:1.3}.sidebar-nav{flex-direction:column;flex:1;padding:12px 0;display:flex}.nav-item{all:unset;cursor:pointer;color:#9ca3af;border-left:3px solid #0000;padding:10px 20px;font-size:14px;transition:background .15s,color .15s,border-color .15s;display:block}.nav-item:hover{color:#e2e8f0;background:#1a1d27}.nav-item--active{color:#fff;background:#1a1d27;border-left-color:#e53e3e;font-weight:600}.main-wrapper{background:var(--bg);flex-direction:column;flex:1;min-width:0;transition:background .2s;display:flex}.topbar{background:var(--topbar-bg);border-bottom:1px solid var(--topbar-border);flex-shrink:0;justify-content:space-between;align-items:center;height:56px;padding:0 28px;transition:background .2s,border-color .2s;display:flex}.topbar-title{color:var(--text);font-size:15px;font-weight:600}.topbar-badge{letter-spacing:.6px;text-transform:uppercase;color:#e53e3e;background:#fff5f5;border:1px solid #feb2b2;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.main-content{flex:1;padding:32px 28px}.topbar-right{align-items:center;gap:12px;display:flex}.topbar-user{color:var(--text-secondary);font-size:13px}.btn-logout{all:unset;cursor:pointer;letter-spacing:.4px;color:#e53e3e;background:#fff5f5;border:1px solid #feb2b2;border-radius:4px;padding:4px 12px;font-size:12px;font-weight:600;transition:background .15s,color .15s}.btn-logout:hover{color:#c53030;background:#fed7d7}.theme-toggle-btn{all:unset;cursor:pointer;background:var(--filter-btn-bg);border:1px solid var(--border);width:32px;height:32px;color:var(--text-secondary);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;transition:background .15s,border-color .15s,color .15s;display:flex}.theme-toggle-btn:hover{background:var(--surface-hover);border-color:var(--border-strong);color:var(--text)}.login-page{background:#0f1117;justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:#1a1d27;border:1px solid #1e2230;border-radius:10px;width:100%;max-width:380px;padding:40px 36px}.login-header{text-align:center;margin-bottom:28px}.login-brand-icon{display:block}.login-title{color:#f0f0f0;margin:0 0 4px;font-size:18px;font-weight:700}.login-subtitle{color:#6b7280;text-transform:uppercase;letter-spacing:.6px;margin:0;font-size:13px}.login-form{flex-direction:column;gap:16px;display:flex}.form-field{flex-direction:column;gap:6px;display:flex}.form-field label{color:#9ca3af;letter-spacing:.3px;text-transform:uppercase;font-size:12px;font-weight:600}.form-field input{color:#e2e8f0;background:#0f1117;border:1px solid #2d3244;border-radius:6px;outline:none;padding:10px 12px;font-size:14px;transition:border-color .15s}.form-field input::placeholder{color:#4b5563}.form-field input:focus{border-color:#4a5568}.form-field input:disabled{opacity:.5;cursor:not-allowed}.login-error{color:#fc8181;background:#2d1515;border:1px solid #742a2a;border-radius:6px;margin:0;padding:10px 12px;font-size:13px}.btn-login{all:unset;cursor:pointer;box-sizing:border-box;text-align:center;color:#fff;background:#e53e3e;border-radius:6px;width:100%;margin-top:4px;padding:11px 0;font-size:14px;font-weight:600;transition:background .15s;display:block}.btn-login:hover:not(:disabled){background:#c53030}.btn-login:disabled{opacity:.55;cursor:not-allowed}.form-field-helper{color:#6b7280;margin:0;font-size:11px;line-height:1.4}.form-field-error{color:#fc8181;margin:0;font-size:11px;line-height:1.4}.form-field-optional{color:#4b5563;text-transform:none;letter-spacing:0;margin-left:3px;font-size:10px;font-weight:400}.register-card{max-width:400px}.auth-nav{text-align:center;margin-top:18px}.auth-nav-text{color:#4b5563;font-size:13px}.auth-nav-link{all:unset;cursor:pointer;color:#9ca3af;font-size:13px;transition:color .15s}.auth-nav-link:hover{color:#e2e8f0}.dashboard-page{flex-direction:column;gap:24px;display:flex}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}@media (width<=900px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=520px){.kpi-grid{grid-template-columns:1fr}}.kpi-card{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--border);border-radius:10px;flex-direction:column;gap:0;padding:18px 20px 16px;transition:box-shadow .15s,background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000d}.kpi-card:hover{box-shadow:0 4px 14px #00000014}.kpi-card--alert{border-top-color:#e53e3e}.kpi-card-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.kpi-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.kpi-icon{background:var(--icon-bg);border:1px solid var(--border);width:28px;height:28px;color:var(--text-muted);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.kpi-card--alert .kpi-icon{color:#e53e3e;background:#fff5f5;border-color:#fed7d7}.kpi-value{color:var(--text);font-size:30px;font-weight:700;line-height:1.1}.kpi-card--alert .kpi-value{color:#e53e3e}.kpi-sub{color:var(--text-secondary);margin-top:3px;font-size:12px;font-weight:500;line-height:1.4}.kpi-desc{color:var(--text-faint);margin-top:8px;font-size:12px}.dashboard-row2{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}@media (width<=900px){.dashboard-row2{grid-template-columns:1fr}}.info-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:0;padding:18px 20px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000a}.info-panel-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px;font-size:11px;font-weight:600}.info-panel-value{font-size:18px;font-weight:700;line-height:1.2}.info-panel-value--ok{color:#276749}.info-panel-value--warn{color:#744210}.info-panel-value--alert{color:#c53030}.info-panel-value--neutral{color:var(--info-neutral)}.info-panel-desc{color:var(--text-faint);margin-top:5px;font-size:12px}.section-placeholder{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:10px;max-width:560px;padding:48px 40px;transition:background .2s,border-color .2s;display:flex}.section-placeholder-icon{color:var(--border-strong);margin-bottom:2px;font-size:20px;line-height:1}.section-placeholder-heading{color:var(--text);font-size:18px;font-weight:600}.section-placeholder-desc{color:var(--text-muted);max-width:440px;font-size:14px;line-height:1.6}.section-placeholder-badge{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);background:var(--icon-bg);border:1px solid var(--border);border-radius:4px;align-self:flex-start;margin-top:6px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.devices-page{flex-direction:column;gap:16px;display:flex}.devices-page-hdr{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.devices-page-hdr-body{flex-direction:column;gap:4px;display:flex}.devices-page-title{color:var(--text);margin:0;font-size:20px;font-weight:700;line-height:1.2}.devices-page-subtitle{color:var(--text-muted);margin:0;font-size:13px}.devices-fleet-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}@media (width<=900px){.devices-fleet-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=520px){.devices-fleet-grid{grid-template-columns:1fr 1fr}}.devices-fleet-card{background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--border);border-radius:10px;flex-direction:column;gap:3px;padding:16px 18px;transition:background .2s,border-color .2s,box-shadow .15s;display:flex;box-shadow:0 1px 4px #0000000d}.devices-fleet-card:hover{box-shadow:0 4px 12px #00000014}.devices-fleet-card--online{border-top-color:#38a169}.devices-fleet-card--offline{border-top-color:#e53e3e}.devices-fleet-card-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px;font-size:11px;font-weight:600}.devices-fleet-card-value{color:var(--text);font-size:28px;font-weight:700;line-height:1.1}.devices-fleet-val--online{color:#276749}.devices-fleet-val--offline{color:#c53030}.devices-fleet-card-desc{color:var(--text-faint);margin-top:2px;font-size:12px}.devices-health-panel{background:var(--surface);border:1px solid var(--border);border-left:4px solid #2b6cb0;border-radius:10px;flex-direction:column;gap:12px;padding:16px 22px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000d}.devices-health-hdr{align-items:center;gap:10px;display:flex}.devices-health-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.devices-health-body{flex-wrap:wrap;align-items:flex-start;gap:0;display:flex}.devices-health-field{flex-direction:column;gap:6px;padding-right:28px;display:flex}.devices-health-field-label{letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:600}.devices-health-field-value{color:var(--text);font-size:13px;font-weight:600}.devices-health-field-value--mono{color:var(--text-secondary);font-family:monospace;font-size:12px;font-weight:400}.devices-health-divider{background:var(--border);flex-shrink:0;align-self:center;width:1px;height:40px;margin:0 20px 0 0}.devices-health-status-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.devices-health-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.devices-health-dot--online{background:#38a169}.devices-health-dot--degraded{background:#d69e2e}.devices-health-dot--offline{background:#e53e3e}.devices-health-status-text{color:var(--text-secondary);font-size:13px}.devices-ops-toolbar{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 20px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000a}.devices-ops-toolbar-body{flex-direction:column;gap:2px;min-width:0;display:flex}.devices-ops-toolbar-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.devices-ops-toolbar-hint{color:var(--text-faint);font-size:12px;line-height:1.4}.devices-ops-toolbar-actions{flex-shrink:0;align-items:center;gap:12px;display:flex}.devices-toolbar{align-items:center;gap:14px;display:flex}.btn-refresh{all:unset;cursor:pointer;color:#2b6cb0;background:#ebf8ff;border:1px solid #bee3f8;border-radius:5px;padding:6px 16px;font-size:13px;font-weight:600;transition:background .15s,color .15s}.btn-refresh:hover:not(:disabled){color:#2c5282;background:#bee3f8}.btn-refresh:disabled{opacity:.5;cursor:not-allowed}.refresh-msg{font-size:13px}.refresh-msg--ok{color:#276749}.refresh-msg--err{color:#c53030}.devices-loading,.devices-empty{color:var(--text-muted);margin:0;font-size:14px}.devices-error{color:#c53030;background:#fff5f5;border:1px solid #feb2b2;border-radius:6px;margin:0;padding:10px 14px;font-size:13px}.devices-table-wrap{background:var(--surface);border:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);border-radius:10px;transition:background .2s,border-color .2s;overflow-x:auto;box-shadow:0 1px 6px #0000000f}.devices-table{border-collapse:collapse;width:100%;font-size:13px}.devices-table th{text-align:left;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);background:var(--table-header-bg);border-bottom:2px solid var(--border);white-space:nowrap;padding:12px 16px;font-size:11px;font-weight:600}.devices-table td{color:var(--text);border-bottom:1px solid var(--table-row-border);white-space:nowrap;padding:13px 16px}.devices-table tbody tr:last-child td{border-bottom:none}.devices-table tbody tr:hover td{background:var(--table-row-hover)}.devices-col-id{color:var(--text-secondary);font-family:monospace;font-size:12px}.devices-col-ts{color:var(--text-muted);font-size:12px}.device-status-badge{letter-spacing:.3px;text-transform:uppercase;border-radius:999px;align-items:center;padding:3px 10px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.device-status-badge--online{color:#276749;background:#f0fff4;border:1px solid #9ae6b4}.device-status-badge--degraded{color:#744210;background:#fffaf0;border:1px solid #fbd38d}.device-status-badge--offline{color:#742a2a;background:#fff5f5;border:1px solid #feb2b2}.events-page{flex-direction:column;gap:16px;display:flex}.events-toolbar{align-items:center;gap:8px;display:flex}.filter-btn{all:unset;cursor:pointer;letter-spacing:.3px;text-transform:uppercase;color:var(--filter-btn-text);background:var(--filter-btn-bg);border:1px solid var(--border);border-radius:999px;padding:5px 18px;font-size:12px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.filter-btn:hover{background:var(--filter-btn-hover-bg);color:var(--filter-btn-hover-text);border-color:var(--filter-btn-hover-border)}.filter-btn--active{background:var(--filter-btn-active-bg);color:var(--filter-btn-active-text);border-color:var(--filter-btn-active-border);box-shadow:0 1px 4px var(--filter-btn-active-shadow)}.events-loading,.events-empty{color:var(--text-muted);margin:0;font-size:14px}.events-error{color:#c53030;background:#fff5f5;border:1px solid #feb2b2;border-radius:6px;margin:0;padding:10px 14px;font-size:13px}.events-table-wrap{background:var(--surface);border:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);border-radius:10px;transition:background .2s,border-color .2s;overflow-x:auto;box-shadow:0 1px 6px #0000000f}.events-table{border-collapse:collapse;width:100%;font-size:13px}.events-table th{text-align:left;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);background:var(--table-header-bg);border-bottom:2px solid var(--border);white-space:nowrap;padding:12px 16px;font-size:11px;font-weight:600}.events-table td{color:var(--text);border-bottom:1px solid var(--table-row-border);white-space:nowrap;padding:13px 16px}.events-table tbody tr:last-child td{border-bottom:none}.events-table tbody tr:hover td{background:var(--table-row-hover)}.events-col-id{color:var(--text-secondary);font-family:monospace;font-size:12px}.events-col-msg{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.events-col-ts{color:var(--text-muted);font-size:12px}.severity-badge{letter-spacing:.3px;text-transform:uppercase;border-radius:999px;align-items:center;padding:3px 10px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.severity-badge--info{color:#2b6cb0;background:#ebf8ff;border:1px solid #bee3f8}.severity-badge--warning{color:#744210;background:#fffaf0;border:1px solid #fbd38d}.severity-badge--critical{color:#742a2a;background:#fff5f5;border:1px solid #feb2b2}.events-page-hdr{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.events-page-hdr-body{flex-direction:column;gap:4px;display:flex}.events-page-title{color:var(--text);margin:0;font-size:20px;font-weight:700;line-height:1.2}.events-page-subtitle{color:var(--text-muted);margin:0;font-size:13px}.events-summary-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}@media (width<=900px){.events-summary-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=520px){.events-summary-grid{grid-template-columns:1fr 1fr}}.events-summary-card{background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--border);border-radius:10px;flex-direction:column;gap:3px;padding:16px 18px;transition:background .2s,border-color .2s,box-shadow .15s;display:flex;box-shadow:0 1px 4px #0000000d}.events-summary-card:hover{box-shadow:0 4px 12px #00000014}.events-summary-card--critical{border-top-color:#e53e3e}.events-summary-card--warning{border-top-color:#d69e2e}.events-summary-card--info{border-top-color:#2b6cb0}.events-summary-card-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px;font-size:11px;font-weight:600}.events-summary-card-value{color:var(--text);font-size:28px;font-weight:700;line-height:1.1}.events-summary-val--critical{color:#c53030}.events-summary-val--warning{color:#744210}.events-summary-val--info{color:#2b6cb0}.events-summary-card-desc{color:var(--text-faint);margin-top:2px;font-size:12px}.events-analysis-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=700px){.events-analysis-row{grid-template-columns:1fr}}.events-dist-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:12px;padding:16px 20px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000a}.events-dist-panel-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.events-dist-rows{flex-direction:column;gap:10px;display:flex}.events-dist-row{align-items:center;gap:10px;display:flex}.events-dist-label{color:var(--text-secondary);flex-shrink:0;width:58px;font-size:12px;font-weight:600}.events-dist-bar-track{background:var(--border);border-radius:999px;flex:1;height:6px;overflow:hidden}.events-dist-bar-fill{border-radius:999px;min-width:2px;height:100%;transition:width .35s}.events-dist-bar--critical{background:#e53e3e}.events-dist-bar--warning{background:#d69e2e}.events-dist-bar--info{background:#2b6cb0}.events-dist-count{color:var(--text-secondary);text-align:right;flex-shrink:0;width:28px;font-size:12px;font-weight:600}.events-dist-footer{color:var(--text-faint);border-top:1px solid var(--border);padding-top:6px;font-size:11px}.events-incident-panel{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--border-strong);border-radius:10px;flex-direction:column;gap:14px;padding:16px 20px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000a}.events-incident-panel--critical{border-left-color:#e53e3e}.events-incident-panel--warning{border-left-color:#d69e2e}.events-incident-panel--info{border-left-color:#2b6cb0}.events-incident-panel-hdr{justify-content:space-between;align-items:center;gap:10px;display:flex}.events-incident-panel-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.events-incident-fields{grid-template-columns:1fr 1fr;gap:12px 16px;display:grid}.events-incident-field{flex-direction:column;gap:4px;display:flex}.events-incident-field-label{letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:600}.events-incident-field-value{color:var(--text);font-size:13px;font-weight:600}.events-incident-field-value--mono{color:var(--text-secondary);font-family:monospace;font-size:12px;font-weight:400}.access-logs-page{flex-direction:column;gap:16px;display:flex}.access-logs-toolbar{align-items:center;gap:8px;display:flex}.access-logs-loading,.access-logs-empty{color:var(--text-muted);margin:0;font-size:14px}.access-logs-error{color:#c53030;background:#fff5f5;border:1px solid #feb2b2;border-radius:6px;margin:0;padding:10px 14px;font-size:13px}.access-logs-table-wrap{background:var(--surface);border:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);border-radius:10px;transition:background .2s,border-color .2s;overflow-x:auto;box-shadow:0 1px 6px #0000000f}.access-logs-table{border-collapse:collapse;width:100%;font-size:13px}.access-logs-table th{text-align:left;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);background:var(--table-header-bg);border-bottom:2px solid var(--border);white-space:nowrap;padding:12px 16px;font-size:11px;font-weight:600}.access-logs-table td{color:var(--text);border-bottom:1px solid var(--table-row-border);white-space:nowrap;padding:13px 16px}.access-logs-table tbody tr:last-child td{border-bottom:none}.access-logs-table tbody tr:hover td{background:var(--table-row-hover)}.access-logs-col-id{color:var(--text-secondary);font-family:monospace;font-size:12px}.access-logs-col-ts{color:var(--text-muted);font-size:12px}.result-badge{letter-spacing:.3px;text-transform:uppercase;border-radius:999px;align-items:center;padding:3px 10px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.result-badge--granted{color:#276749;background:#f0fff4;border:1px solid #9ae6b4}.result-badge--denied{color:#742a2a;background:#fff5f5;border:1px solid #feb2b2}.result-badge--unknown{color:var(--text-muted);background:var(--icon-bg);border:1px solid var(--border)}.access-page-hdr{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.access-page-hdr-body{flex-direction:column;gap:4px;display:flex}.access-page-title{color:var(--text);margin:0;font-size:20px;font-weight:700;line-height:1.2}.access-page-subtitle{color:var(--text-muted);margin:0;font-size:13px}.access-summary-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}@media (width<=900px){.access-summary-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=520px){.access-summary-grid{grid-template-columns:1fr 1fr}}.access-summary-card{background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--border);border-radius:10px;flex-direction:column;gap:3px;padding:16px 18px;transition:background .2s,border-color .2s,box-shadow .15s;display:flex;box-shadow:0 1px 4px #0000000d}.access-summary-card:hover{box-shadow:0 4px 12px #00000014}.access-summary-card--granted{border-top-color:#38a169}.access-summary-card--denied{border-top-color:#e53e3e}.access-summary-card-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px;font-size:11px;font-weight:600}.access-summary-card-value{color:var(--text);font-size:28px;font-weight:700;line-height:1.1}.access-summary-val--granted{color:#276749}.access-summary-val--denied{color:#c53030}.access-summary-val--warn{color:#744210}.access-summary-card-desc{color:var(--text-faint);margin-top:2px;font-size:12px}.access-analysis-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=700px){.access-analysis-row{grid-template-columns:1fr}}.access-dist-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:12px;padding:16px 20px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000a}.access-dist-panel-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.access-dist-rows{flex-direction:column;gap:10px;display:flex}.access-dist-row{align-items:center;gap:10px;display:flex}.access-dist-label{color:var(--text-secondary);flex-shrink:0;width:58px;font-size:12px;font-weight:600}.access-dist-bar-track{background:var(--border);border-radius:999px;flex:1;height:6px;overflow:hidden}.access-dist-bar-fill{border-radius:999px;min-width:2px;height:100%;transition:width .35s}.access-dist-bar--granted{background:#38a169}.access-dist-bar--denied{background:#e53e3e}.access-dist-count{color:var(--text-secondary);text-align:right;flex-shrink:0;width:28px;font-size:12px;font-weight:600}.access-dist-footer{color:var(--text-faint);border-top:1px solid var(--border);padding-top:6px;font-size:11px}.access-latest-panel{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--border-strong);border-radius:10px;flex-direction:column;gap:14px;padding:16px 20px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000a}.access-latest-panel--granted{border-left-color:#38a169}.access-latest-panel--denied{border-left-color:#e53e3e}.access-latest-panel--neutral{border-left-color:var(--border-strong)}.access-latest-panel-hdr{justify-content:space-between;align-items:center;gap:10px;display:flex}.access-latest-panel-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.access-latest-fields{grid-template-columns:1fr 1fr;gap:12px 16px;display:grid}.access-latest-field{flex-direction:column;gap:4px;display:flex}.access-latest-field--wide{grid-column:1/-1}.access-latest-field-label{letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:600}.access-latest-field-value{color:var(--text);font-size:13px;font-weight:600}.access-latest-field-value--mono{color:var(--text-secondary);font-family:monospace;font-size:12px;font-weight:400}.telemetry-page{flex-direction:column;gap:20px;display:flex}.telemetry-loading,.telemetry-empty{color:var(--text-muted);margin:0;font-size:14px}.telemetry-error{color:#c53030;background:#fff5f5;border:1px solid #feb2b2;border-radius:6px;margin:0;padding:10px 14px;font-size:13px}.telemetry-latest-card{background:var(--surface);border:1px solid var(--border);border-top:3px solid #2b6cb0;border-radius:8px;flex-direction:column;gap:10px;padding:18px 22px;transition:background .2s,border-color .2s;display:flex}.telemetry-latest-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.telemetry-latest-body{color:var(--text);flex-wrap:wrap;gap:16px;font-size:13px;display:flex}.telemetry-latest-empty{color:var(--text-faint);margin:0;font-size:13px}.telemetry-table-wrap{background:var(--surface);border:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);border-radius:10px;transition:background .2s,border-color .2s;overflow-x:auto;box-shadow:0 1px 6px #0000000f}.telemetry-table{border-collapse:collapse;width:100%;font-size:13px}.telemetry-table th{text-align:left;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);background:var(--table-header-bg);border-bottom:2px solid var(--border);white-space:nowrap;padding:12px 16px;font-size:11px;font-weight:600}.telemetry-table td{color:var(--text);border-bottom:1px solid var(--table-row-border);white-space:nowrap;padding:13px 16px}.telemetry-table tbody tr:last-child td{border-bottom:none}.telemetry-table tbody tr:hover td{background:var(--table-row-hover)}.telemetry-col-id{color:var(--text-secondary);font-family:monospace;font-size:12px}.telemetry-col-ts{color:var(--text-muted);font-size:12px}.telemetry-page-hdr{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.telemetry-page-hdr-body{flex-direction:column;gap:4px;display:flex}.telemetry-page-title{color:var(--text);margin:0;font-size:20px;font-weight:700;line-height:1.2}.telemetry-page-subtitle{color:var(--text-muted);margin:0;font-size:13px}.telemetry-summary-chips{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.telemetry-chip{background:var(--icon-bg);border:1px solid var(--border);border-radius:7px;flex-direction:column;gap:3px;padding:7px 13px;transition:background .2s,border-color .2s;display:inline-flex}.telemetry-chip--alert{background:#fff5f5;border-color:#feb2b2}.telemetry-chip-label{letter-spacing:.4px;text-transform:uppercase;color:var(--text-faint);font-size:10px;font-weight:600;line-height:1}.telemetry-chip-value{color:var(--text);font-size:13px;font-weight:700;line-height:1.2}.telemetry-chip--alert .telemetry-chip-value{color:#c53030}.telemetry-reading-panel{background:var(--surface);border:1px solid var(--border);border-left:4px solid #2b6cb0;border-radius:10px;flex-direction:column;gap:16px;padding:20px 24px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000d}.telemetry-reading-hdr{justify-content:space-between;align-items:center;gap:16px;display:flex}.telemetry-reading-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.telemetry-reading-ts{color:var(--text-faint);font-family:monospace;font-size:12px}.telemetry-reading-grid{grid-template-columns:repeat(4,1fr);gap:16px 20px;display:grid}@media (width<=800px){.telemetry-reading-grid{grid-template-columns:repeat(2,1fr)}}.telemetry-reading-field{flex-direction:column;gap:4px;display:flex}.telemetry-reading-field-label{letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);font-size:10px;font-weight:600}.telemetry-reading-field-value{color:var(--text);font-size:14px;font-weight:600}.telemetry-reading-field-value--mono{color:var(--text-secondary);font-family:monospace;font-size:13px;font-weight:400}.telemetry-val--ok{color:#276749}.telemetry-val--alert{color:#c53030}.telemetry-records-hdr{align-items:center;gap:10px;display:flex}.telemetry-records-title{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.telemetry-records-count{color:var(--text-secondary);background:var(--icon-bg);border:1px solid var(--border);border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.overrides-page{flex-direction:column;gap:16px;display:flex}.overrides-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.overrides-loading,.overrides-empty{color:var(--text-muted);margin:0;font-size:14px}.overrides-error{color:#c53030;background:#fff5f5;border:1px solid #feb2b2;border-radius:6px;margin:0;padding:10px 14px;font-size:13px}.overrides-table-wrap{background:var(--surface);border:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);border-radius:10px;transition:background .2s,border-color .2s;overflow-x:auto;box-shadow:0 1px 6px #0000000f}.overrides-table{border-collapse:collapse;width:100%;font-size:13px}.overrides-table th{text-align:left;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);background:var(--table-header-bg);border-bottom:2px solid var(--border);white-space:nowrap;padding:12px 16px;font-size:11px;font-weight:600}.overrides-table td{color:var(--text);border-bottom:1px solid var(--table-row-border);white-space:nowrap;padding:13px 16px}.overrides-table tbody tr:last-child td{border-bottom:none}.overrides-table tbody tr:hover td{background:var(--table-row-hover)}.overrides-col-id{color:var(--text-secondary);font-family:monospace;font-size:12px}.overrides-col-reason{text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.overrides-col-ts{color:var(--text-muted);font-size:12px}.override-status-badge{letter-spacing:.3px;text-transform:uppercase;border-radius:999px;align-items:center;padding:3px 10px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.override-status-badge--requested{color:#2b6cb0;background:#ebf8ff;border:1px solid #bee3f8}.override-status-badge--executed{color:#276749;background:#f0fff4;border:1px solid #9ae6b4}.override-status-badge--failed{color:#742a2a;background:#fff5f5;border:1px solid #feb2b2}.override-status-badge--blocked{color:#744210;background:#fffaf0;border:1px solid #fbd38d}.override-form-card{background:var(--surface);border:1px solid var(--border);border-top:3px solid #2b6cb0;border-radius:8px;max-width:560px;padding:20px 24px 22px;transition:background .2s,border-color .2s}.override-form-heading{color:var(--text);margin:0 0 16px;font-size:14px;font-weight:600}.override-form{flex-direction:column;gap:12px;display:flex}.override-form-row{flex-direction:column;gap:5px;display:flex}.override-form-label{letter-spacing:.3px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.override-form-input,.override-form-select{background:var(--input-bg);border:1px solid var(--input-border);color:var(--input-text);box-sizing:border-box;border-radius:5px;outline:none;width:100%;padding:8px 10px;font-size:13px;transition:border-color .15s,background .2s}.override-form-input:focus,.override-form-select:focus{border-color:var(--input-focus-border)}.override-form-input:disabled,.override-form-select:disabled{opacity:.55;cursor:not-allowed}.override-form-footer{flex-wrap:wrap;align-items:center;gap:14px;margin-top:4px;display:flex}.btn-override-submit{all:unset;cursor:pointer;color:#fff;white-space:nowrap;background:#2b6cb0;border-radius:5px;padding:8px 20px;font-size:13px;font-weight:600;transition:background .15s}.btn-override-submit:hover:not(:disabled){background:#2c5282}.btn-override-submit:disabled{opacity:.5;cursor:not-allowed}.override-submit-msg{font-size:13px}.override-submit-msg--ok{color:#276749}.override-submit-msg--err{color:#c53030}.avatar-menu{position:relative}.avatar-btn{all:unset;cursor:pointer;color:#fff;-webkit-user-select:none;user-select:none;background:#e53e3e;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;transition:background .15s;display:flex}.avatar-btn:hover{background:#c53030}.avatar-dropdown{background:var(--surface);border:1px solid var(--border);z-index:100;border-radius:8px;min-width:220px;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 4px 16px #00000024}.avatar-dropdown-email{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:500;overflow:hidden}.avatar-dropdown-item{all:unset;cursor:pointer;box-sizing:border-box;width:100%;color:var(--text);align-items:center;gap:8px;padding:10px 16px;font-size:13px;transition:background .12s;display:flex}.avatar-dropdown-item:hover{background:var(--surface-hover)}.avatar-dropdown-item--danger{color:#e53e3e}.avatar-dropdown-item--danger:hover{background:#fff5f5}.profile-page{flex-direction:column;gap:24px;display:flex}.profile-card{background:var(--surface);border:1px solid var(--border);border-left:4px solid #2b6cb0;border-radius:8px;flex-direction:column;align-items:flex-start;gap:20px;max-width:560px;padding:28px;transition:background .2s,border-color .2s;display:flex}.profile-avatar-lg{color:#fff;background:#e53e3e;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;font-size:22px;font-weight:700;display:flex}.profile-fields{flex-direction:column;gap:16px;width:100%;display:flex}.profile-field{flex-direction:column;gap:4px;display:flex}.profile-field-label{letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.profile-field-value{color:var(--text);font-size:14px}.profile-field-value--mono{color:var(--text-secondary);font-family:monospace;font-size:13px}.devices-table-wrap::-webkit-scrollbar{height:6px}.events-table-wrap::-webkit-scrollbar{height:6px}.access-logs-table-wrap::-webkit-scrollbar{height:6px}.telemetry-table-wrap::-webkit-scrollbar{height:6px}.overrides-table-wrap::-webkit-scrollbar{height:6px}.devices-table-wrap::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:0 0 10px 10px}.events-table-wrap::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:0 0 10px 10px}.access-logs-table-wrap::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:0 0 10px 10px}.telemetry-table-wrap::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:0 0 10px 10px}.overrides-table-wrap::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:0 0 10px 10px}.devices-table-wrap::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px}.events-table-wrap::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px}.access-logs-table-wrap::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px}.telemetry-table-wrap::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px}.overrides-table-wrap::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px}.devices-table-wrap::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.events-table-wrap::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.access-logs-table-wrap::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.telemetry-table-wrap::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.overrides-table-wrap::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.theme-dark .topbar-badge{color:#fca5a5;background:#7f1d1d4d;border-color:#7f1d1d}.theme-dark .btn-logout{color:#fca5a5;background:#7f1d1d40;border-color:#7f1d1d}.theme-dark .btn-logout:hover{color:#fca5a5;background:#7f1d1d73}.theme-dark .btn-refresh{color:#93c5fd;background:#1e3a8a40;border-color:#1d4ed8}.theme-dark .btn-refresh:hover:not(:disabled){color:#bfdbfe;background:#1e3a8a73}.theme-dark .kpi-card--alert .kpi-icon{color:#fca5a5;background:#7f1d1d4d;border-color:#7f1d1d}.theme-dark .info-panel-value--ok{color:#4ade80}.theme-dark .info-panel-value--warn{color:#fbbf24}.theme-dark .info-panel-value--alert{color:#f87171}.theme-dark .refresh-msg--ok{color:#4ade80}.theme-dark .refresh-msg--err{color:#f87171}.theme-dark .override-submit-msg--ok{color:#4ade80}.theme-dark .override-submit-msg--err{color:#f87171}.theme-dark .device-status-badge--online{color:#6ee7b7;background:#064e3b4d;border-color:#065f46}.theme-dark .device-status-badge--degraded{color:#fcd34d;background:#78350f4d;border-color:#92400e}.theme-dark .device-status-badge--offline{color:#fca5a5;background:#7f1d1d4d;border-color:#991b1b}.theme-dark .severity-badge--info{color:#93c5fd;background:#1e3a8a4d;border-color:#1d4ed8}.theme-dark .severity-badge--warning{color:#fcd34d;background:#78350f4d;border-color:#92400e}.theme-dark .severity-badge--critical{color:#fca5a5;background:#7f1d1d4d;border-color:#991b1b}.theme-dark .result-badge--granted{color:#6ee7b7;background:#064e3b4d;border-color:#065f46}.theme-dark .result-badge--denied{color:#fca5a5;background:#7f1d1d4d;border-color:#991b1b}.theme-dark .override-status-badge--requested{color:#93c5fd;background:#1e3a8a4d;border-color:#1d4ed8}.theme-dark .override-status-badge--executed{color:#6ee7b7;background:#064e3b4d;border-color:#065f46}.theme-dark .override-status-badge--failed{color:#fca5a5;background:#7f1d1d4d;border-color:#991b1b}.theme-dark .override-status-badge--blocked{color:#fcd34d;background:#78350f4d;border-color:#92400e}.theme-dark .telemetry-chip--alert{background:#7f1d1d2e;border-color:#991b1b}.theme-dark .telemetry-chip--alert .telemetry-chip-value{color:#fca5a5}.theme-dark .telemetry-reading-panel{border-left-color:#3b82f6}.theme-dark .telemetry-val--ok{color:#4ade80}.theme-dark .telemetry-val--alert{color:#f87171}.theme-dark .devices-error,.theme-dark .events-error,.theme-dark .access-logs-error,.theme-dark .telemetry-error,.theme-dark .overrides-error{color:#fca5a5;background:#7f1d1d40;border-color:#7f1d1d}.theme-dark .avatar-dropdown-item--danger:hover{background:#7f1d1d4d}.dashboard-status{color:var(--text-muted);margin:0;font-size:14px}.dashboard-error{color:#c53030;background:#fff5f5;border:1px solid #feb2b2;border-radius:6px;margin:0;padding:10px 14px;font-size:13px}.theme-dark .dashboard-error{color:#fca5a5;background:#7f1d1d40;border-color:#7f1d1d}.sec-banner{border:1px solid;border-left-width:4px;border-radius:10px;align-items:center;gap:14px;padding:14px 20px;display:flex}.sec-banner--ok{background:#f0fff4;border-color:#9ae6b4 #9ae6b4 #9ae6b4 #38a169}.sec-banner--warn{background:#fffaf0;border-color:#fbd38d #fbd38d #fbd38d #d69e2e}.sec-banner--alert{background:#fff5f5;border-color:#feb2b2 #feb2b2 #feb2b2 #e53e3e}.sec-banner-icon{flex-shrink:0;justify-content:center;align-items:center;display:flex}.sec-banner--ok .sec-banner-icon{color:#38a169}.sec-banner--warn .sec-banner-icon{color:#d69e2e}.sec-banner--alert .sec-banner-icon{color:#e53e3e}.sec-banner-body{flex-direction:column;flex:1;gap:2px;display:flex}.sec-banner-title{font-size:14px;font-weight:700}.sec-banner--ok .sec-banner-title{color:#276749}.sec-banner--warn .sec-banner-title{color:#744210}.sec-banner--alert .sec-banner-title{color:#c53030}.sec-banner-desc{color:var(--text-muted);font-size:12px}.sec-banner-tag{letter-spacing:.6px;text-transform:uppercase;color:var(--text-muted);background:var(--icon-bg);border:1px solid var(--border);border-radius:4px;flex-shrink:0;padding:3px 10px;font-size:10px;font-weight:600}.dashboard-mid{grid-template-columns:1fr 290px;gap:16px;display:grid}@media (width<=900px){.dashboard-mid{grid-template-columns:1fr}}.dash-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;padding:18px 20px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000a}.dash-panel-hdr{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.dash-panel-title{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.dash-panel-badge{color:var(--text-secondary);background:var(--icon-bg);border:1px solid var(--border);border-radius:4px;padding:2px 8px;font-size:11px;font-weight:500}.dash-panel-sub{color:var(--text-faint);margin-top:6px;font-size:12px}.sensor-tile-grid{grid-template-columns:repeat(5,1fr);gap:10px;display:grid}@media (width<=700px){.sensor-tile-grid{grid-template-columns:repeat(3,1fr)}}.sensor-tile{border:1px solid var(--border);background:var(--icon-bg);border-radius:8px;flex-direction:column;align-items:center;gap:5px;padding:14px 8px 12px;transition:background .2s,border-color .2s;display:flex}.sensor-tile-icon{color:var(--text-muted);justify-content:center;align-items:center;margin-bottom:2px;display:flex}.sensor-tile-value{color:var(--text);font-size:15px;font-weight:700;line-height:1}.sensor-tile-label{letter-spacing:.4px;text-transform:uppercase;color:var(--text-faint);font-size:10px;font-weight:600}.sensor-tile--ok{background:#f0fff4;border-color:#9ae6b4}.sensor-tile--ok .sensor-tile-icon{color:#38a169}.sensor-tile--ok .sensor-tile-value{color:#276749}.sensor-tile--warn{background:#fffaf0;border-color:#fbd38d}.sensor-tile--warn .sensor-tile-icon{color:#d69e2e}.sensor-tile--warn .sensor-tile-value{color:#744210}.sensor-tile--alert{background:#fff5f5;border-color:#feb2b2}.sensor-tile--alert .sensor-tile-icon{color:#e53e3e}.sensor-tile--alert .sensor-tile-value{color:#c53030}.env-snapshot-footer{border-top:1px solid var(--border);flex-direction:column;gap:3px;margin-top:12px;padding-top:10px;display:flex}.env-snapshot-signal{color:var(--text-secondary);font-size:12px;line-height:1.4}.env-snapshot-reading{color:var(--text-faint);font-size:12px;line-height:1.4}.dash-side-stack{flex-direction:column;gap:16px;display:flex}.dash-big-value{color:var(--text);font-size:36px;font-weight:700;line-height:1}.dash-big-value--ok{color:#276749}.connectivity-status-row{align-items:center;gap:8px;margin-top:10px;display:flex}.connectivity-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.connectivity-dot--ok{background:#38a169}.connectivity-dot--neutral{background:var(--text-faint)}.connectivity-status-text{color:var(--text-muted);font-size:12px}.risk-value{font-size:22px;font-weight:700;line-height:1.1}.risk-value--ok{color:#276749}.risk-value--warn{color:#744210}.risk-value--alert{color:#c53030}.risk-value--neutral{color:var(--text)}.risk-bar-track{background:var(--border);border-radius:999px;height:5px;margin-top:10px;overflow:hidden}.risk-bar-fill{border-radius:999px;height:100%;transition:width .4s}.risk-bar-fill--ok{background:#38a169}.risk-bar-fill--warn{background:#d69e2e}.risk-bar-fill--alert{background:#e53e3e}.risk-bar-fill--neutral{background:var(--border-strong)}.info-panel--accented{border-left:3px solid var(--border-strong)}.theme-dark .sec-banner--ok{background:#064e3b2e;border-color:#065f46 #065f46 #065f46 #34d399}.theme-dark .sec-banner--ok .sec-banner-icon{color:#34d399}.theme-dark .sec-banner--ok .sec-banner-title{color:#6ee7b7}.theme-dark .sec-banner--warn{background:#78350f2e;border-color:#92400e #92400e #92400e #fbbf24}.theme-dark .sec-banner--warn .sec-banner-icon{color:#fbbf24}.theme-dark .sec-banner--warn .sec-banner-title{color:#fcd34d}.theme-dark .sec-banner--alert{background:#7f1d1d2e;border-color:#991b1b #991b1b #991b1b #f87171}.theme-dark .sec-banner--alert .sec-banner-icon{color:#f87171}.theme-dark .sec-banner--alert .sec-banner-title{color:#fca5a5}.theme-dark .sensor-tile--ok{background:#064e3b2e;border-color:#065f46}.theme-dark .sensor-tile--ok .sensor-tile-icon{color:#34d399}.theme-dark .sensor-tile--ok .sensor-tile-value{color:#6ee7b7}.theme-dark .sensor-tile--warn{background:#78350f2e;border-color:#92400e}.theme-dark .sensor-tile--warn .sensor-tile-icon{color:#fbbf24}.theme-dark .sensor-tile--warn .sensor-tile-value{color:#fcd34d}.theme-dark .sensor-tile--alert{background:#7f1d1d2e;border-color:#991b1b}.theme-dark .sensor-tile--alert .sensor-tile-icon{color:#f87171}.theme-dark .sensor-tile--alert .sensor-tile-value{color:#fca5a5}.theme-dark .dash-big-value--ok{color:#4ade80}.theme-dark .connectivity-dot--ok{background:#4ade80}.theme-dark .risk-value--ok{color:#4ade80}.theme-dark .risk-value--warn{color:#fbbf24}.theme-dark .risk-value--alert{color:#f87171}.theme-dark .risk-bar-fill--ok{background:#4ade80}.theme-dark .risk-bar-fill--warn{background:#fbbf24}.theme-dark .risk-bar-fill--alert{background:#f87171}.env-snapshot-room{letter-spacing:.3px;text-transform:uppercase;color:var(--text-muted);margin-top:2px;font-size:11px;font-weight:600}.ops-header{background:var(--surface);border:1px solid var(--border);border-left:4px solid #2b6cb0;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;padding:18px 22px;transition:background .2s,border-color .2s;display:flex;box-shadow:0 1px 4px #0000000d}.ops-header-body{flex-direction:column;gap:4px;min-width:0;display:flex}.ops-header-title{color:var(--text);margin:0;font-size:17px;font-weight:700;line-height:1.2}.ops-header-subtitle{color:var(--text-muted);margin:0;font-size:12px;line-height:1.5}.ops-stats-row{background:var(--icon-bg);border:1px solid var(--border);border-radius:8px;flex-shrink:0;align-items:center;transition:background .2s,border-color .2s;display:flex;overflow:hidden}.ops-stat{flex-direction:column;align-items:center;gap:4px;padding:10px 22px;display:flex}.ops-stat-divider{background:var(--border);flex-shrink:0;width:1px;height:36px}.ops-stat-value{color:var(--text);font-size:22px;font-weight:700;line-height:1}.ops-stat-value--blue{color:#2b6cb0}.ops-stat-value--green{color:#276749}.ops-stat-value--red{color:#c53030}.ops-stat-label{letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;font-size:10px;font-weight:600}.cmd-panel{grid-template-columns:210px 1fr;align-items:start;gap:16px;display:grid}@media (width<=700px){.cmd-panel{grid-template-columns:1fr}}.cmd-quick-section{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:18px;transition:background .2s,border-color .2s;display:flex}.cmd-section-label{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.cmd-quick-hint{color:var(--text-faint);margin:0;font-size:11px;line-height:1.5}.cmd-quick-grid{flex-direction:column;gap:8px;display:flex}.cmd-quick-btn{all:unset;cursor:pointer;text-align:left;color:var(--text-secondary);background:var(--icon-bg);border:1px solid var(--border);box-sizing:border-box;border-radius:6px;padding:9px 14px;font-size:12px;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:block}.cmd-quick-btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong);color:var(--text)}.cmd-quick-btn:disabled{opacity:.5;cursor:not-allowed}.cmd-form-card{background:var(--surface);border:1px solid var(--border);border-top:3px solid #2b6cb0;border-radius:10px;padding:20px 24px 22px;transition:background .2s,border-color .2s}.cmd-form-hdr{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.cmd-form-title{color:var(--text);font-size:14px;font-weight:700}.cmd-form-badge{letter-spacing:.5px;text-transform:uppercase;color:#2b6cb0;background:#ebf8ff;border:1px solid #bee3f8;border-radius:4px;padding:2px 8px;font-size:10px;font-weight:600}.cmd-form-helper{color:var(--text-muted);margin:0 0 16px;font-size:12px;line-height:1.5}.cmd-form{flex-direction:column;gap:14px;display:flex}.cmd-form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=600px){.cmd-form-grid{grid-template-columns:1fr}}.cmd-form-field{flex-direction:column;gap:5px;display:flex}.cmd-form-label{letter-spacing:.3px;text-transform:uppercase;color:var(--text-muted);font-size:11px;font-weight:600}.cmd-form-footer{flex-wrap:wrap;align-items:center;gap:14px;margin-top:4px;display:flex}.theme-dark .ops-header{border-left-color:#3b82f6}.theme-dark .ops-stat-value--blue{color:#93c5fd}.theme-dark .ops-stat-value--green{color:#4ade80}.theme-dark .ops-stat-value--red{color:#f87171}.theme-dark .cmd-form-badge{color:#93c5fd;background:#1e3a8a4d;border-color:#1d4ed8}.theme-dark .devices-fleet-card--online{border-top-color:#34d399}.theme-dark .devices-fleet-card--offline{border-top-color:#f87171}.theme-dark .devices-fleet-val--online{color:#4ade80}.theme-dark .devices-fleet-val--offline{color:#f87171}.theme-dark .devices-health-panel{border-left-color:#3b82f6}.theme-dark .devices-health-dot--online{background:#34d399}.theme-dark .devices-health-dot--degraded{background:#fbbf24}.theme-dark .devices-health-dot--offline{background:#f87171}.theme-dark .events-summary-card--critical{border-top-color:#f87171}.theme-dark .events-summary-card--warning{border-top-color:#fbbf24}.theme-dark .events-summary-card--info{border-top-color:#60a5fa}.theme-dark .events-summary-val--critical{color:#f87171}.theme-dark .events-summary-val--warning{color:#fcd34d}.theme-dark .events-summary-val--info{color:#93c5fd}.theme-dark .events-dist-bar--critical{background:#f87171}.theme-dark .events-dist-bar--warning{background:#fbbf24}.theme-dark .events-dist-bar--info{background:#60a5fa}.theme-dark .events-incident-panel--critical{border-left-color:#f87171}.theme-dark .events-incident-panel--warning{border-left-color:#fbbf24}.theme-dark .events-incident-panel--info{border-left-color:#60a5fa}.theme-dark .access-summary-card--granted{border-top-color:#34d399}.theme-dark .access-summary-card--denied{border-top-color:#f87171}.theme-dark .access-summary-val--granted{color:#4ade80}.theme-dark .access-summary-val--denied{color:#f87171}.theme-dark .access-summary-val--warn{color:#fbbf24}.theme-dark .access-dist-bar--granted{background:#34d399}.theme-dark .access-dist-bar--denied{background:#f87171}.theme-dark .access-latest-panel--granted{border-left-color:#34d399}.theme-dark .access-latest-panel--denied{border-left-color:#f87171}.login-page{background-image:linear-gradient(#ffffff04 1px,#0000 1px),linear-gradient(90deg,#ffffff04 1px,#0000 1px);background-size:48px 48px}.login-brand-wrap{background:#e53e3e1a;border:1px solid #e53e3e38;border-radius:12px;justify-content:center;align-items:center;width:52px;height:52px;margin:0 auto 14px;display:flex}.profile-page-hdr{flex-direction:column;gap:4px;display:flex}.profile-page-title{color:var(--text);margin:0;font-size:20px;font-weight:700;line-height:1.2}.profile-page-subtitle{color:var(--text-muted);margin:0;font-size:13px}.profile-card-top{border-bottom:1px solid var(--border);align-items:center;gap:16px;width:100%;padding-bottom:20px;display:flex}.profile-card-top-body{flex-direction:column;gap:6px;min-width:0;display:flex}.profile-display-email{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:600;overflow:hidden}.profile-role-badge{letter-spacing:.6px;text-transform:uppercase;color:#2b6cb0;background:#ebf8ff;border:1px solid #bee3f8;border-radius:4px;align-self:flex-start;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.profile-fields--grid{grid-template-columns:1fr 1fr;gap:16px 24px;width:100%;display:grid}.profile-field--full{grid-column:1/-1}.profile-status-badge{letter-spacing:.3px;text-transform:uppercase;border-radius:999px;margin-top:2px;padding:3px 10px;font-size:11px;font-weight:600;line-height:1;display:inline-block}.profile-status-badge--active{color:#276749;background:#f0fff4;border:1px solid #9ae6b4}.avatar-dropdown-header{border-bottom:1px solid var(--border);flex-direction:column;gap:3px;padding:12px 16px 11px;display:flex}.avatar-dropdown-role{letter-spacing:.5px;text-transform:uppercase;color:var(--text-faint);font-size:10px;font-weight:600}.avatar-dropdown-body{padding:6px 0}.avatar-dropdown-divider{background:var(--border);height:1px;margin:4px 12px}.topbar-left{align-items:center;gap:10px;display:flex}.topbar-session-tag{letter-spacing:.5px;text-transform:uppercase;color:var(--text-faint);background:var(--icon-bg);border:1px solid var(--border);border-radius:4px;padding:2px 8px;font-size:10px;font-weight:600}.theme-dark .profile-card{border-left-color:#3b82f6}.theme-dark .profile-role-badge{color:#93c5fd;background:#1e3a8a38;border-color:#1d4ed8}.theme-dark .profile-status-badge--active{color:#6ee7b7;background:#064e3b38;border-color:#065f46}.users-page{flex-direction:column;gap:16px;display:flex}.users-loading,.users-error,.users-empty{text-align:center;color:var(--text-muted,#6b7280);padding:32px;font-size:.9rem}.users-error{color:#dc2626}.users-table-wrap{border:1px solid var(--border-color,#e5e7eb);background:var(--card-bg,#fff);border-radius:8px;overflow-x:auto}.users-table-wrap::-webkit-scrollbar{height:6px}.users-table-wrap::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.users-table{border-collapse:collapse;width:100%;font-size:.85rem}.users-table th{background:var(--table-head-bg,#f9fafb);color:var(--text-muted,#6b7280);text-transform:uppercase;letter-spacing:.05em;text-align:left;border-bottom:1px solid var(--border-color,#e5e7eb);white-space:nowrap;padding:10px 14px;font-size:.75rem;font-weight:600}.users-table td{border-bottom:1px solid var(--border-color,#f3f4f6);color:var(--text-main,#111827);vertical-align:middle;padding:11px 14px}.users-table tr:last-child td{border-bottom:none}.users-table tr:hover td{background:var(--row-hover,#f9fafb)}.users-col-name{min-width:140px;font-weight:500}.users-col-email{min-width:180px;color:var(--text-muted,#6b7280)}.users-col-ts{white-space:nowrap;color:var(--text-muted,#6b7280);font-size:.8rem}.user-role-badge{border:1px solid #0000;border-radius:12px;padding:2px 9px;font-size:.75rem;font-weight:600;display:inline-block}.user-role-badge--admin{color:#7c3aed;background:#ede9fe;border-color:#c4b5fd}.user-role-badge--resident{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.user-active-badge{border:1px solid #0000;border-radius:12px;padding:2px 9px;font-size:.75rem;font-weight:600;display:inline-block}.user-active-badge--active{color:#065f46;background:#d1fae5;border-color:#6ee7b7}.user-active-badge--inactive{color:#92400e;background:#fef3c7;border-color:#fcd34d}.btn-promote{color:#7c3aed;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #7c3aed;border-radius:6px;padding:4px 12px;font-size:.8rem;font-weight:500;transition:background .15s,color .15s}.btn-promote:hover:not(:disabled){color:#fff;background:#7c3aed}.btn-promote:disabled{opacity:.5;cursor:not-allowed}.users-promote-msg{border-radius:6px;margin:0;padding:10px 16px;font-size:.875rem;font-weight:500}.users-promote-msg--ok{color:#065f46;background:#d1fae5;border:1px solid #6ee7b7}.users-promote-msg--err{color:#991b1b;background:#fee2e2;border:1px solid #fca5a5}.users-action-none{color:var(--text-muted,#9ca3af);font-size:.85rem}.theme-dark .users-loading,.theme-dark .users-empty{color:#9ca3af}.theme-dark .users-error{color:#f87171}.theme-dark .users-table-wrap{background:#1f2937;border-color:#374151}.theme-dark .users-table-wrap::-webkit-scrollbar-thumb{background:#4b5563}.theme-dark .users-table th{color:#9ca3af;background:#111827;border-bottom-color:#374151}.theme-dark .users-table td{color:#f3f4f6;border-bottom-color:#374151}.theme-dark .users-table tr:hover td{background:#374151}.theme-dark .users-col-email,.theme-dark .users-col-ts{color:#9ca3af}.theme-dark .user-role-badge--admin{color:#c4b5fd;background:#7c3aed2e;border-color:#7c3aed}.theme-dark .user-role-badge--resident{color:#93c5fd;background:#1d4ed82e;border-color:#1d4ed8}.theme-dark .user-active-badge--active{color:#6ee7b7;background:#064e3b38;border-color:#065f46}.theme-dark .user-active-badge--inactive{color:#fcd34d;background:#78350f38;border-color:#92400e}.theme-dark .btn-promote{color:#a78bfa;border-color:#a78bfa}.theme-dark .btn-promote:hover:not(:disabled){color:#1f2937;background:#a78bfa}.theme-dark .users-promote-msg--ok{color:#6ee7b7;background:#064e3b38;border-color:#065f46}.theme-dark .users-promote-msg--err{color:#fca5a5;background:#991b1b38;border-color:#991b1b}.theme-dark .users-action-none{color:#6b7280}
