:root{--color-primary: #1e3a5f;--color-primary-hover: #16304f;--color-primary-light: #dbeafe;--color-primary-text: #1d4ed8;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-border-subtle: #f1f5f9;--color-muted: #64748b;--color-muted-light: #94a3b8;--color-text: #1e293b;--color-text-secondary: #374151;--color-sidebar: #1e293b;--color-sidebar-border: #334155;--color-sidebar-active: #334155;--color-sidebar-accent: var(--color-primary);--color-sidebar-text: #cbd5e1;--color-sidebar-text-active: #ffffff;--color-success-bg: #dcfce7;--color-success-text: #166534;--color-success: #16a34a;--color-warning-bg: #fef3c7;--color-warning-text: #92400e;--color-warning: #f59e0b;--color-danger-bg: #fee2e2;--color-danger-text: #991b1b;--color-danger: #dc2626;--color-info-bg: #dbeafe;--color-info-text: #1d4ed8;--color-neutral-bg: #f1f5f9;--color-neutral-text: #475569;--color-phi-bg: #991b1b;--color-phi-text: #ffffff;--color-role-sysadmin: #7c3aed;--color-role-platform-admin: #1e3a5f;--color-role-org-admin: #059669;--color-role-org-readonly: #64748b;--color-role-unauthenticated:#dc2626;--color-role-unknown: #94a3b8;--font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "SF Mono", "Cascadia Code", "Fira Code", Consolas, monospace;--text-xs: 11px;--text-sm: 13px;--text-base: 14px;--text-md: 16px;--text-lg: 18px;--text-xl: 24px;--text-2xl: 30px;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-heavy: 800;--leading-tight: 1.2;--leading-normal: 1.5;--tracking-tight: -.5px;--tracking-normal: 0;--tracking-wide: .5px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--sidebar-width: 240px;--transition-fast: .15s ease}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-family);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--color-sidebar);display:flex;flex-direction:column;border-right:1px solid var(--color-sidebar-border)}.sidebar-brand{padding:var(--space-5) var(--space-4);border-bottom:1px solid var(--color-sidebar-border)}.sidebar-brand h1{font-size:var(--text-lg);font-weight:var(--weight-heavy);color:#fff;margin:0;letter-spacing:var(--tracking-tight)}.sidebar-brand p{font-size:var(--text-xs);color:var(--color-muted-light);margin:var(--space-1) 0 0;font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);text-transform:uppercase}.sidebar-nav{padding:var(--space-3) 0;flex:1}.nav-item{display:flex;align-items:center;width:100%;padding:var(--space-3) var(--space-5);border:none;text-align:left;cursor:pointer;font-size:var(--text-base);font-family:inherit;font-weight:var(--weight-medium);background:transparent;color:var(--color-sidebar-text);transition:background var(--transition-fast),color var(--transition-fast);position:relative}.nav-item:hover{background:#ffffff0d;color:var(--color-sidebar-text-active)}.nav-item.active{background:var(--color-sidebar-active);color:var(--color-sidebar-text-active)}.nav-item.active:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--color-sidebar-accent)}.sidebar-footer{margin-top:auto;padding:var(--space-4);border-top:1px solid var(--color-sidebar-border)}.sidebar-user-name{font-size:var(--text-sm);color:#fff;font-weight:var(--weight-medium);margin:0 0 2px}.sidebar-user-role{font-size:var(--text-xs);color:var(--color-muted);margin:0 0 var(--space-1)}.sidebar-last-login{font-size:var(--text-xs);color:var(--color-muted);margin:0 0 var(--space-2)}.sidebar-session{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-success);margin-bottom:var(--space-2)}.sidebar-session:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--color-success)}.sidebar-session.expired{color:var(--color-danger)}.sidebar-session.expired:before{background:var(--color-danger)}.btn-logout{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-sidebar-border);border-radius:var(--radius-sm);background:transparent;color:var(--color-muted-light);cursor:pointer;font-size:var(--text-sm);font-family:inherit;transition:background var(--transition-fast),color var(--transition-fast)}.btn-logout:hover{background:#ffffff0d;color:#fff}.main-wrapper{flex:1;display:flex;flex-direction:column}.main-content{flex:1;padding:var(--space-8) var(--space-10);background:var(--color-bg)}.phi-banner{background:var(--color-phi-bg);padding:var(--space-2) var(--space-10);font-size:var(--text-xs);color:var(--color-phi-text);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);display:flex;align-items:center;gap:var(--space-2)}.phi-banner:before{content:"🛡";font-size:14px}.app-footer{padding:var(--space-2) var(--space-10);font-size:var(--text-xs);color:var(--color-muted-light);border-top:1px solid var(--color-border);background:var(--color-bg)}.login-page{max-width:420px;margin:100px auto;text-align:center;padding:0 var(--space-5)}.login-page h1{font-size:var(--text-2xl);font-weight:var(--weight-heavy);color:var(--color-text);letter-spacing:var(--tracking-tight);margin:0 0 var(--space-2)}.login-page .login-subtitle{color:var(--color-muted);margin:0 0 var(--space-8);font-size:var(--text-sm)}.login-page .login-error{color:var(--color-danger);margin-bottom:var(--space-4)}.btn-login{padding:var(--space-3) var(--space-6);border:none;border-radius:var(--radius-md);background:var(--color-primary);color:#fff;cursor:pointer;font-size:15px;font-weight:var(--weight-medium);font-family:inherit;transition:background var(--transition-fast)}.btn-login:hover{background:var(--color-primary-hover)}.page-title{font-size:var(--text-2xl);font-weight:var(--weight-heavy);color:var(--color-text);margin:0;letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}.section-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-text);margin:0;letter-spacing:var(--tracking-normal)}.section-label{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-muted);text-transform:uppercase;letter-spacing:var(--tracking-wide);margin-bottom:var(--space-1)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);box-shadow:var(--shadow-sm)}.card-compact{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5)}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);box-shadow:var(--shadow-sm)}.stat-card .stat-label{font-size:var(--text-sm);color:var(--color-muted);margin:0;font-weight:var(--weight-medium)}.stat-card .stat-value{font-size:var(--text-xl);font-weight:var(--weight-bold);margin:var(--space-2) 0 0}.table-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th{text-align:left;padding:var(--space-3) var(--space-4);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-muted);background:var(--color-bg);border-bottom:2px solid var(--color-border);text-transform:uppercase;letter-spacing:var(--tracking-wide)}.table td{padding:var(--space-3) var(--space-4);font-size:var(--text-base);border-bottom:1px solid var(--color-border-subtle)}.table tbody tr{transition:background var(--transition-fast)}.table tbody tr:hover{background:var(--color-bg)}.table tbody tr.clickable{cursor:pointer}.table tbody tr.row-danger{background:var(--color-danger-bg)}.table-footer{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border);font-size:var(--text-sm)}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:none;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:var(--weight-medium);cursor:pointer;transition:background var(--transition-fast),opacity var(--transition-fast);font-family:inherit}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover:not(:disabled){background:#15803d}.btn-ghost{background:transparent;color:var(--color-muted);border:1px solid var(--color-border)}.btn-ghost:hover:not(:disabled){background:var(--color-bg);color:var(--color-text)}.btn-link{background:none;border:none;color:var(--color-primary);cursor:pointer;padding:0;font-size:var(--text-base);font-family:inherit}.btn-link:hover{text-decoration:underline}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-sm);border-radius:var(--radius-sm)}.btn-page{padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;font-size:var(--text-sm);font-family:inherit}.btn-page:disabled{opacity:.5;cursor:not-allowed}.form-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm)}.form-title{margin:0 0 var(--space-4);font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--color-text)}.form-label{display:block;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.form-input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-base);font-family:inherit;box-sizing:border-box;transition:border-color var(--transition-fast)}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #1e3a5f26}.form-select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-base);font-family:inherit;background:var(--color-surface)}.form-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #1e3a5f26}.form-row{margin-bottom:var(--space-3)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.form-error{color:var(--color-danger);font-size:var(--text-base);margin:0 0 var(--space-3)}.form-hint{font-size:var(--text-xs);color:var(--color-muted);margin-top:var(--space-2)}.badge{display:inline-block;padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.4}.badge-success{background:var(--color-success-bg);color:var(--color-success-text)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning-text)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger-text)}.badge-info{background:var(--color-info-bg);color:var(--color-info-text)}.badge-neutral{background:var(--color-neutral-bg);color:var(--color-neutral-text)}.badge-role{display:inline-block;padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--weight-medium);color:#fff}.alert{border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);font-size:var(--text-sm)}.alert-warning{background:var(--color-warning-bg);border:1px solid #fde68a}.text-muted{color:var(--color-muted)}.text-danger{color:var(--color-danger)}.text-mono{font-family:var(--font-mono)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-emphasis{font-weight:var(--weight-semibold)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-5{margin-top:var(--space-5)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.flex{display:flex}.flex-between{display:flex;justify-content:space-between;align-items:center}.flex-center{display:flex;align-items:center}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-5)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4)}.detail-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-3);font-size:var(--text-xs)}.detail-expanded{padding:var(--space-3) var(--space-4);background:var(--color-bg);border-bottom:2px solid var(--color-border)}.detail-pre{margin:var(--space-1) 0 0;font-size:var(--text-xs);color:var(--color-neutral-text);background:var(--color-border-subtle);padding:var(--space-2);border-radius:var(--radius-sm);overflow:auto;font-family:var(--font-mono)}.field-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-subtle)}.filter-bar{display:flex;gap:var(--space-3);align-items:center}.filter-select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--color-surface);font-family:inherit}.tenant-selector{display:flex;gap:var(--space-3);align-items:center;margin-top:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.tenant-selector label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text-secondary);white-space:nowrap}.tenant-selector select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-base);background:var(--color-surface);min-width:200px;font-family:inherit}.empty-state{color:var(--color-muted);margin-top:var(--space-5);font-size:var(--text-base)}
