:root{--font-ui: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "IBM Plex Mono", "Fira Code", "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 24px;--nav-width: 260px;--header-height: 64px;--content-max-width: 1600px;--ease-out: cubic-bezier(.33, 1, .68, 1);--duration-fast: .15s;--duration-normal: .2s;--duration-slow: .3s;--z-nav: 100;--z-header: 200;--z-drawer: 300;--z-overlay: 400}:root,:root[data-theme=dark]{--c-bg: #0a0a0b;--c-bg-subtle: #0f0f11;--c-bg-muted: #0a0a0b;--c-bg-card: #141416;--c-bg-inner: #0f0f11;--c-border: #1e1e20;--c-border-strong: #27272a;--c-border-focus: #E5484D;--c-text-primary: #f5f5f7;--c-text-secondary: #a1a1aa;--c-text-tertiary: #71717a;--c-text-inverse: #0a0a0b;--c-accent: #E5484D;--c-accent-hover: #D03A3F;--c-accent-subtle: rgba(229, 72, 77, .1);--c-accent-bg: rgba(229, 72, 77, .12);--c-success: #22c55e;--c-success-bg: rgba(34, 197, 94, .12);--c-warning: #f59e0b;--c-warning-bg: rgba(245, 158, 11, .12);--c-error: #ef4444;--c-error-bg: rgba(239, 68, 68, .12);--c-audit-allowed: #22c55e;--c-audit-denied: #f59e0b;--c-audit-error: #ef4444;--c-provider-healthy: #22c55e;--c-provider-degraded: #f59e0b;--c-provider-down: #ef4444}:root[data-theme=light]{--c-bg: #ffffff;--c-bg-subtle: #fafafa;--c-bg-muted: #ffffff;--c-bg-card: #ffffff;--c-bg-inner: #f9fafb;--c-border: #e5e7eb;--c-border-strong: #d1d5db;--c-border-focus: #E5484D;--c-text-primary: #111827;--c-text-secondary: #6b7280;--c-text-tertiary: #9ca3af;--c-text-inverse: #ffffff;--c-accent: #E5484D;--c-accent-hover: #D03A3F;--c-accent-subtle: rgba(229, 72, 77, .06);--c-accent-bg: rgba(229, 72, 77, .08);--c-success: #16a34a;--c-success-bg: rgba(22, 163, 74, .08);--c-warning: #d97706;--c-warning-bg: rgba(217, 119, 6, .08);--c-error: #dc2626;--c-error-bg: rgba(220, 38, 38, .08);--c-audit-allowed: #16a34a;--c-audit-denied: #d97706;--c-audit-error: #dc2626;--c-provider-healthy: #16a34a;--c-provider-degraded: #d97706;--c-provider-down: #dc2626}*,*:before,*:after{box-sizing:border-box}html{font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;padding:0;font-family:var(--font-ui);font-size:var(--text-sm);line-height:1.5;color:var(--c-text-primary);background:var(--c-bg);overflow-x:hidden}.login-page{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-6);background:var(--c-bg);overflow:auto}.login-card{width:100%;max-width:440px;background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:var(--space-10);box-shadow:0 8px 32px #0006}.login-header{margin-bottom:var(--space-8)}.login-brand{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-4)}.brand-name{font-size:var(--text-2xl);font-weight:700;letter-spacing:.15em;color:var(--c-text-primary);text-transform:uppercase}.brand-subtitle{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--c-text-tertiary);letter-spacing:.1em;text-transform:uppercase}.login-description{display:block;font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.6}.login-error{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--c-error-bg);border:1px solid var(--c-error);border-radius:var(--radius-md);color:var(--c-error);margin-bottom:var(--space-5)}.login-error-icon{font-size:var(--text-lg)}.login-error-message{font-size:var(--text-sm)}.login-form{display:flex;flex-direction:column;gap:var(--space-5)}.login-input{background:var(--c-bg-inner);border:1px solid var(--c-border-strong);padding:var(--space-3) var(--space-4);font-size:var(--text-base);color:var(--c-text-primary)}.login-input::placeholder{color:var(--c-text-tertiary)}.login-input:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-bg)}.login-actions{display:flex;flex-direction:column;gap:var(--space-3)}.login-submit{width:100%;padding:var(--space-3) var(--space-4);font-size:var(--text-base);font-weight:600;background:var(--c-accent);color:var(--c-text-inverse);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-fast) ease}.login-submit:hover:not(:disabled){background:var(--c-accent-hover)}.login-submit:disabled{opacity:.6;cursor:not-allowed}.login-clear{width:100%;padding:var(--space-3) var(--space-4);font-size:var(--text-sm);background:transparent;color:var(--c-text-secondary);border:1px solid var(--c-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-fast) ease}.login-clear:hover:not(:disabled){background:var(--c-bg-inner);color:var(--c-text-primary);border-color:var(--c-border-strong)}.login-footer{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--c-border)}.login-footer-text{display:block;font-size:var(--text-xs);color:var(--c-text-tertiary);text-align:center;line-height:1.6}#app{display:flex;min-height:100vh}.sidebar{position:fixed;top:0;left:0;width:var(--nav-width);height:100vh;background:var(--c-bg);display:flex;flex-direction:column;z-index:var(--z-nav)}.sidebar-header{height:var(--header-height);display:flex;align-items:center;padding:0 var(--space-6)}.sidebar-brand{font-size:var(--text-base);font-weight:700;letter-spacing:.15em;color:var(--c-text-primary);text-transform:uppercase}.sidebar-brand .mono{font-family:var(--font-mono);font-weight:500;color:var(--c-accent)}.sidebar-nav{flex:1;padding:var(--space-4) var(--space-3);display:flex;flex-direction:column;gap:var(--space-1);overflow-y:auto}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-3);border-radius:var(--radius-md);color:var(--c-text-secondary);text-decoration:none;cursor:pointer;transition:all var(--duration-fast) ease;border:none;background:none;font:inherit;font-size:var(--text-sm);width:100%;text-align:left;font-weight:500}.nav-item:hover{background:var(--c-bg-inner);color:var(--c-text-primary)}.nav-item.active{background:var(--c-accent-bg);color:var(--c-accent);font-weight:600}.nav-item .nav-icon{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:var(--text-lg);opacity:.8}.nav-item .nav-icon svg{width:18px;height:18px}.nav-item.active .nav-icon{opacity:1}.main-content{flex:1;margin-left:var(--nav-width);display:flex;flex-direction:column;min-height:100vh;background:var(--c-bg)}.topbar{position:sticky;top:0;height:var(--header-height);background:var(--c-bg);display:flex;align-items:center;justify-content:flex-end;padding:0 var(--space-8);z-index:var(--z-header)}.topbar-right{display:flex;align-items:center;gap:var(--space-3)}.version-badge{padding:var(--space-1) var(--space-3);background:var(--c-bg-inner);border:1px solid var(--c-border);border-radius:999px;font-size:var(--text-xs);font-family:var(--font-mono);color:var(--c-text-secondary);font-weight:500}.session-status{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:999px;background:var(--c-success-bg);color:var(--c-success);font-size:var(--text-xs);font-weight:500}.session-status .status-icon{display:flex;align-items:center;justify-content:center}.session-status .status-icon svg{width:14px;height:14px}.session-status .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.refresh-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid var(--c-border);border-radius:var(--radius-md);background:var(--c-bg-inner);color:var(--c-text-secondary);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all var(--duration-fast) ease}.refresh-btn .refresh-icon{display:flex;align-items:center;justify-content:center}.refresh-btn .refresh-icon svg{width:14px;height:14px}.refresh-btn:hover{background:var(--c-bg-card);color:var(--c-text-primary);border-color:var(--c-border-strong)}.refresh-btn.loading{opacity:.6;pointer-events:none}.theme-toggle-btn{padding:0;border:1px solid var(--c-border);border-radius:var(--radius-md);background:var(--c-bg-inner);color:var(--c-text-secondary);cursor:pointer;transition:all var(--duration-fast) ease;display:flex;align-items:center;justify-content:center;width:36px;height:36px}.theme-toggle-btn svg{width:18px;height:18px}.theme-toggle-btn:hover{background:var(--c-bg-card);color:var(--c-text-primary);border-color:var(--c-border-strong)}.page{padding:var(--space-8) var(--space-8);max-width:var(--content-max-width);margin:0 auto;width:100%;animation:fadeIn var(--duration-slow) var(--ease-out)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-header{margin-bottom:var(--space-8)}.page-title{font-size:var(--text-2xl);font-weight:700;color:var(--c-text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}.page-subtitle{font-size:var(--text-sm);color:var(--c-text-secondary);margin:0}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4);margin-bottom:var(--space-8)}.kpi-card{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:0 1px 2px #0000000a}.kpi-label{font-size:var(--text-xs);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-3);font-weight:600}.kpi-value{font-size:var(--text-3xl);font-weight:700;color:var(--c-text-primary);font-family:var(--font-mono);letter-spacing:-.03em}.kpi-delta{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);margin-top:var(--space-3);font-weight:500}.kpi-delta.positive{color:var(--c-success)}.kpi-delta.negative{color:var(--c-error)}.kpi-delta.neutral{color:var(--c-text-tertiary)}.section{margin-bottom:var(--space-8)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5)}.section-title{font-size:var(--text-sm);font-weight:600;color:var(--c-text-primary);text-transform:uppercase;letter-spacing:.08em;margin:0}.table-container{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 1px 2px #0000000a}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table thead{background:var(--c-bg-inner);border-bottom:1px solid var(--c-border)}.data-table th{padding:var(--space-4) var(--space-5);text-align:left;font-size:var(--text-xs);font-weight:600;color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.05em}.data-table td{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--c-border);color:var(--c-text-primary)}.data-table tbody tr{transition:background var(--duration-fast) ease}.data-table tbody tr:hover{background:var(--c-bg-inner)}.data-table tbody tr.selected{background:var(--c-accent-bg)}.data-table tbody tr:last-child td{border-bottom:none}.data-table .mono{font-family:var(--font-mono);font-size:var(--text-xs)}.badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:6px;font-size:var(--text-xs);font-weight:600;font-family:var(--font-mono)}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge-active{background:var(--c-success-bg);color:var(--c-success)}.badge-revoked{background:var(--c-bg-inner);color:var(--c-text-tertiary)}.badge-allowed{background:var(--c-success-bg);color:var(--c-success)}.badge-denied{background:var(--c-warning-bg);color:var(--c-warning)}.badge-error{background:var(--c-error-bg);color:var(--c-error)}.badge-healthy{background:var(--c-success-bg);color:var(--c-success)}.badge-degraded{background:var(--c-warning-bg);color:var(--c-warning)}.badge-down{background:var(--c-error-bg);color:var(--c-error)}.form-group{margin-bottom:var(--space-4)}.form-label{display:block;font-size:var(--text-xs);font-weight:600;color:var(--c-text-secondary);margin-bottom:var(--space-2);text-transform:uppercase;letter-spacing:.05em}.form-input{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--c-border-strong);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font-ui);color:var(--c-text-primary);background:var(--c-bg-inner);transition:border-color var(--duration-fast) ease,box-shadow var(--duration-fast) ease}.form-input::placeholder{color:var(--c-text-tertiary)}.form-input:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-bg)}.form-input[type=number]{font-family:var(--font-mono)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:600;font-family:var(--font-ui);cursor:pointer;transition:all var(--duration-fast) ease;text-decoration:none}.btn-primary{background:var(--c-accent);color:var(--c-text-inverse)}.btn-primary:hover{background:var(--c-accent-hover)}.btn-secondary{background:var(--c-bg-card);color:var(--c-text-secondary);border-color:var(--c-border)}.btn-secondary:hover{background:var(--c-bg-inner);color:var(--c-text-primary);border-color:var(--c-border-strong)}.btn-danger{background:var(--c-error);color:var(--c-text-inverse)}.btn-danger:hover{background:#d03a3f}.btn-sm{padding:var(--space-2) var(--space-3);font-size:var(--text-xs)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.loading{pointer-events:none;opacity:.7}.drawer{position:fixed;top:0;right:0;bottom:0;width:480px;max-width:100vw;background:var(--c-bg-card);box-shadow:-8px 0 48px #00000040;z-index:var(--z-drawer);display:flex;flex-direction:column;transform:translate(100%);animation:slideIn var(--duration-normal) var(--ease-out) forwards}@keyframes slideIn{to{transform:translate(0)}}.drawer.closing{animation:slideOut var(--duration-normal) var(--ease-out) forwards}@keyframes slideOut{to{transform:translate(100%)}}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-6);border-bottom:1px solid var(--c-border);background:var(--c-bg-inner)}.drawer-title{font-size:var(--text-base);font-weight:600;color:var(--c-text-primary);margin:0}.drawer-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;background:none;cursor:pointer;color:var(--c-text-tertiary);font-size:var(--text-xl);transition:color var(--duration-fast) ease}.drawer-close:hover{color:var(--c-text-primary)}.drawer-content{flex:1;overflow-y:auto;padding:var(--space-6)}.drawer-footer{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-5) var(--space-6);border-top:1px solid var(--c-border);background:var(--c-bg-inner)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16) var(--space-8);text-align:center;color:var(--c-text-tertiary)}.empty-state-icon{font-size:var(--text-4xl);margin-bottom:var(--space-4);opacity:.5}.empty-state-title{font-size:var(--text-base);font-weight:600;color:var(--c-text-secondary);margin-bottom:var(--space-2)}.empty-state-desc{font-size:var(--text-sm);margin:0}.loading-state{display:flex;align-items:center;justify-content:center;padding:var(--space-12);color:var(--c-text-tertiary)}.spinner{width:24px;height:24px;border:2px solid var(--c-border);border-top-color:var(--c-accent);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--c-error-bg);border:1px solid var(--c-error);border-radius:var(--radius-md);color:var(--c-error);margin-bottom:var(--space-6)}.error-banner-icon{flex-shrink:0;font-size:var(--text-lg)}.error-banner-message{font-size:var(--text-sm);margin:0}.mono{font-family:var(--font-mono)}.text-muted{color:var(--c-text-tertiary)}.text-secondary{color:var(--c-text-secondary)}.text-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.mt-4{margin-top:var(--space-4)}.mb-4{margin-bottom:var(--space-4)}@media (max-width: 1024px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0}.kpi-grid{grid-template-columns:1fr}.page{padding:var(--space-4)}.topbar{padding:0 var(--space-4)}.drawer{width:100%;max-width:none}}.providers-layout{display:grid;grid-template-columns:1fr 400px;gap:var(--space-6)}.providers-list-section{min-width:0}.providers-detail-section{position:sticky;top:calc(var(--header-height) + var(--space-6));height:fit-content;max-height:calc(100vh - var(--header-height) - var(--space-12));overflow-y:auto}.providers-detail-placeholder{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:var(--space-10);text-align:center}.provider-detail-panel{background:var(--c-bg-card);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:var(--space-6)}.detail-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-4);border-bottom:1px solid var(--c-border);margin-bottom:var(--space-5)}.detail-title{font-size:var(--text-lg);font-weight:600;color:var(--c-text-primary);margin:0}.detail-section{margin-bottom:var(--space-5)}.detail-section:last-child{margin-bottom:0}.detail-section-title{font-size:var(--text-xs);font-weight:600;color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.08em;margin:0 0 var(--space-3)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.detail-item{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);background:var(--c-bg-inner);border-radius:var(--radius-sm)}.detail-label{font-size:var(--text-xs);color:var(--c-text-tertiary);text-transform:uppercase;letter-spacing:.05em}.detail-value{font-size:var(--text-sm);color:var(--c-text-primary);font-weight:500}.detail-value.mono{font-family:var(--font-mono)}@media (max-width: 1200px){.providers-layout{grid-template-columns:1fr}.providers-detail-section{position:static;max-height:none}}
