:root{color-scheme:light dark;--brand-primary: #1a1a2e;--brand-primary-strong: #12121f;--brand-accent: #2a78d6;--brand-accent-strong: #1f5fae;--brand-on-primary: #ffffff;--brand-on-accent: #ffffff;--surface-0: #f5f5f7;--surface-1: #fcfcfb;--surface-2: #ffffff;--text-primary: #0b0b0b;--text-secondary: #52514e;--text-muted: #898781;--text-on-brand: #ffffff;--border-hairline: rgba(11, 11, 11, .1);--border-strong: rgba(11, 11, 11, .22);--grid-line: #e1e0d9;--axis-line: #c3c2b7;--status-good: #0ca30c;--status-critical: #d03b3b;--status-good-bg: rgba(12, 163, 12, .12);--status-critical-bg: rgba(208, 59, 59, .12);--series-1: #2a78d6;--series-2: #eb6834;--series-3: #1baf7a;--series-4: #eda100;--series-5: #e87ba4;--series-6: #008300;--danger: #b3261e;--danger-strong: #8f1e18;--danger-bg: #fdecea;--focus-ring: #2a78d6;--focus-ring-offset: 2px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-pill: 999px;--font-family: system-ui, -apple-system, "Segoe UI", sans-serif;--font-size-xs: .75rem;--font-size-sm: .85rem;--font-size-md: .95rem;--font-size-lg: 1.25rem;--font-size-xl: 1.75rem;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .15);--shadow-md: 2px 0 16px rgba(0, 0, 0, .3);--transition-fast: .15s ease;--transition-base: .2s ease}@media(prefers-color-scheme:dark){:root{--surface-0: #131312;--surface-1: #1a1a19;--surface-2: #202020;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--border-hairline: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .24);--grid-line: #2c2c2a;--axis-line: #383835;--status-good-bg: rgba(12, 163, 12, .18);--status-critical-bg: rgba(208, 59, 59, .18);--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--series-4: #c98500;--series-5: #d55181;--series-6: #008300;--brand-accent: #3987e5;--brand-accent-strong: #5c9de8;--focus-ring: #3987e5;--danger: #ff6f66;--danger-strong: #ff8880;--danger-bg: rgba(179, 38, 30, .25)}}button,input,textarea,select{font-family:inherit}button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem .9rem;border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:500;line-height:1.2;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),opacity var(--transition-fast)}button:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-1)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.55;cursor:default}.btn-primary{border-color:var(--brand-accent);background:var(--brand-accent);color:var(--brand-on-accent)}.btn-primary:hover:not(:disabled){border-color:var(--brand-accent-strong);background:var(--brand-accent-strong)}.btn-danger{border-color:var(--danger);background:transparent;color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-bg);border-color:var(--danger-strong);color:var(--danger-strong)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover:not(:disabled){background:var(--surface-1)}input[type=text],input[type=email],input[type=password],input[type=search],input[type=tel],input[type=number],input[type=url],input:not([type]),textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:.5rem .65rem;border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text-primary);font-size:var(--font-size-sm);line-height:1.3;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}select{padding-right:1.75rem;background-image:linear-gradient(45deg,transparent 50%,var(--text-secondary) 50%),linear-gradient(135deg,var(--text-secondary) 50%,transparent 50%);background-position:calc(100% - 1.05rem) center,calc(100% - .75rem) center;background-size:5px 5px,5px 5px;background-repeat:no-repeat}textarea{font-family:inherit}input[type=text]:hover,input[type=email]:hover,input[type=password]:hover,input[type=search]:hover,input[type=tel]:hover,input[type=number]:hover,input[type=url]:hover,textarea:hover,select:hover{border-color:var(--border-strong)}input[type=text]:focus-visible,input[type=email]:focus-visible,input[type=password]:focus-visible,input[type=search]:focus-visible,input[type=tel]:focus-visible,input[type=number]:focus-visible,input[type=url]:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;border-color:var(--focus-ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus-ring) 25%,transparent)}input::placeholder,textarea::placeholder{color:var(--text-muted)}input[type=checkbox],input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;width:1.05rem;height:1.05rem;margin:0;border:1px solid var(--border-strong);background:var(--surface-2);cursor:pointer;display:inline-grid;place-content:center;transition:background var(--transition-fast),border-color var(--transition-fast)}input[type=checkbox]{border-radius:var(--radius-sm)}input[type=radio]{border-radius:50%}input[type=checkbox]:before{content:"";width:.6rem;height:.6rem;transform:scale(0);transition:transform var(--transition-fast);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,45% 62%);background:var(--brand-on-accent)}input[type=radio]:before{content:"";width:.5rem;height:.5rem;border-radius:50%;transform:scale(0);transition:transform var(--transition-fast);background:var(--brand-on-accent)}input[type=checkbox]:checked,input[type=radio]:checked{border-color:var(--brand-accent);background:var(--brand-accent)}input[type=checkbox]:checked:before,input[type=radio]:checked:before{transform:scale(1)}input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.55;cursor:default}a:focus-visible,button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}:root{font-family:var(--font-family)}*{box-sizing:border-box}body{margin:0;background:var(--surface-0);color:var(--text-primary)}.page-loading{display:flex;align-items:center;justify-content:center;height:100vh}.login-page{--surface-0: #f5f5f7;--surface-2: #ffffff;--text-primary: #0b0b0b;--text-secondary: #52514e;--text-muted: #898781;--border-hairline: rgba(11, 11, 11, .1);--border-strong: rgba(11, 11, 11, .22);--brand-accent: #2a78d6;--brand-accent-strong: #1f5fae;--focus-ring: #2a78d6;--danger: #b3261e;--danger-bg: #fdecea;display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem;background:var(--surface-0);color:var(--brand-primary);color-scheme:light}.login-form{display:flex;flex-direction:column;gap:var(--space-3);width:320px;max-width:100%;padding:var(--space-8);border-radius:var(--radius-lg);background:var(--surface-2);box-shadow:var(--shadow-sm)}.login-form h1{margin:0 0 var(--space-2);font-size:var(--font-size-lg);color:var(--brand-primary)}.login-form label{display:flex;flex-direction:column;gap:var(--space-1);font-size:.875rem;color:var(--brand-primary)}.login-form button[type=submit]{margin-top:var(--space-2);padding:.6rem;font-size:1rem;width:100%}.form-error{margin:0;padding:var(--space-2);border-radius:var(--radius-sm);background:var(--danger-bg);color:var(--danger);font-size:.875rem}.login-divider{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-1) 0;color:var(--text-muted);font-size:.8rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--border-hairline)}.login-form .btn-secondary{display:inline-flex;align-items:center;justify-content:center;padding:.6rem;width:100%;border:1px solid var(--border-hairline);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text-primary);font-size:1rem;font-weight:500;text-decoration:none;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.login-form .btn-secondary:hover{border-color:var(--border-strong);background:var(--surface-0)}.admin-shell{display:flex;height:100vh}.admin-nav{width:220px;flex-shrink:0;background:var(--brand-primary);color:var(--text-on-brand);display:flex;flex-direction:column}.nav-toggle{display:none;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:40px;height:40px;padding:0;border:none;border-radius:var(--radius-md);background:transparent;cursor:pointer}.nav-toggle-bar{display:block;width:20px;height:2px;background:var(--brand-primary);border-radius:1px}.admin-nav-backdrop{display:none}.admin-nav-header{padding:1.25rem 1rem;font-weight:600;font-size:1.1rem;border-bottom:1px solid rgba(255,255,255,.1)}.admin-nav nav{display:flex;flex-direction:column;padding:.5rem}.nav-link{padding:.6rem .75rem;border-radius:4px;color:#ffffffbf;text-decoration:none;font-size:.9rem}.nav-link:hover{background:#ffffff14;color:#fff}.nav-link.active{background:#ffffff26;color:#fff}.admin-main{flex:1;display:flex;flex-direction:column;min-width:0}.admin-shell,.admin-main{background:var(--surface-0)}.admin-topbar{display:flex;align-items:center;justify-content:flex-end;gap:1rem;padding:.75rem 1.5rem;border-bottom:1px solid var(--border-hairline)}.admin-user{font-size:.875rem;color:var(--text-secondary)}.admin-content{flex:1;padding:1.5rem;overflow:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dashboard{display:flex;flex-direction:column;gap:1.25rem}.dashboard-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.dashboard-header h1{margin:0;color:var(--text-primary)}.dashboard-filters{display:flex;gap:.25rem}.filter-pill{padding:.4rem .75rem;border:1px solid var(--border-hairline);border-radius:999px;background:var(--surface-1);color:var(--text-secondary);font-size:.8rem;cursor:pointer}.filter-pill.active{background:var(--brand-accent);border-color:var(--brand-accent);color:var(--brand-on-accent)}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem}.stat-tile{display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.25rem;border:1px solid var(--border-hairline);border-radius:8px;background:var(--surface-1)}.stat-label{font-size:.8rem;color:var(--text-secondary)}.stat-value{font-size:1.75rem;font-weight:600;color:var(--text-primary)}.stat-value-good{color:var(--status-good)}.stat-value-critical{color:var(--status-critical)}.chart-card{padding:1.25rem;border:1px solid var(--border-hairline);border-radius:8px;background:var(--surface-1)}.chart-title{margin:0 0 .75rem;font-size:.95rem;color:var(--text-primary)}.chart-empty{color:var(--text-muted);font-size:.875rem}.chart-wrap{position:relative}.chart-wrap svg{width:100%;height:auto;display:block;overflow:visible}.chart-axis-label{font-size:10px;fill:var(--text-muted)}.chart-row-label,.chart-row-total{font-size:11px;fill:var(--text-secondary)}.chart-tooltip{position:absolute;transform:translate(-50%,-130%);background:var(--text-primary);color:var(--surface-1);padding:.35rem .55rem;border-radius:4px;font-size:.75rem;display:flex;flex-direction:column;gap:.1rem;pointer-events:none;white-space:nowrap;z-index:1}.chart-tooltip strong{font-size:.85rem}.legend{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem}.legend-item{display:inline-flex;align-items:center;gap:.35rem;font-size:.75rem;color:var(--text-secondary)}.legend-swatch{width:10px;height:10px;border-radius:2px;display:inline-block}.data-table{width:100%;border-collapse:collapse;font-size:.8rem}.data-table th,.data-table td{text-align:right;padding:.5rem .6rem;border-bottom:1px solid var(--grid-line);font-variant-numeric:tabular-nums;color:var(--text-secondary)}.data-table th[scope=col]{color:var(--text-muted);font-weight:500}.data-table th[scope=row]{text-align:left;color:var(--text-primary);font-variant-numeric:normal}.data-table-left th,.data-table-left td{text-align:left;font-variant-numeric:normal}.info-note{margin:0;padding:.6rem .85rem;border:1px solid var(--border-hairline);border-radius:6px;background:var(--surface-1);color:var(--text-secondary);font-size:.85rem}.search-field input{width:100%;max-width:320px}.role-badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;background:var(--grid-line);color:var(--text-secondary);font-size:.75rem;font-weight:500}.role-badge.role-admin{background:var(--brand-accent);color:var(--brand-on-accent)}.table-action{padding:.35rem .65rem;border:1px solid var(--border-hairline);border-radius:6px;background:var(--surface-1);color:var(--text-primary);font-size:.8rem;cursor:pointer}.table-action:disabled{opacity:.6;cursor:default}.edit-panel{display:flex;flex-direction:column;gap:.75rem;padding:1rem;border:1px solid var(--border-hairline);border-radius:6px;background:var(--surface-1)}.edit-panel label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--text-secondary)}.edit-panel textarea{resize:vertical}.edit-panel fieldset{display:flex;flex-direction:column;gap:.4rem;padding:.6rem .75rem;border:1px solid var(--border-hairline);border-radius:6px}.edit-panel legend{padding:0 .35rem;font-size:.75rem;color:var(--text-muted)}.checkbox-field{flex-direction:row!important;align-items:center;gap:.4rem!important}.limit-row{display:flex;align-items:flex-end;gap:.75rem;flex-wrap:wrap}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.edit-panel{max-width:480px}@media(max-width:768px){.admin-shell{height:100dvh}.nav-toggle{display:inline-flex}.admin-topbar{justify-content:space-between;padding:.75rem 1rem}.admin-nav{position:fixed;inset:0 auto 0 0;z-index:20;width:260px;max-width:80vw;height:100dvh;transform:translate(-100%);transition:transform .2s ease;box-shadow:2px 0 16px #0000004d}.admin-nav.admin-nav-open{transform:translate(0)}.admin-nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:10}.nav-link{padding:.85rem .9rem;font-size:1rem}.admin-content{padding:1rem}.dashboard-header{flex-wrap:wrap;gap:.75rem}.dashboard-filters{flex-wrap:wrap}.filter-pill,.table-action,button{min-height:40px}.stat-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.chart-card{padding:1rem}.edit-panel{max-width:calc(100vw - 4rem)}}
