:root{--color-bg: #f4f6f9;--color-surface: #ffffff;--color-surface-sunken: #ebeef3;--color-border: #dce1e8;--color-border-strong: #b9c2ce;--color-text-primary: #151a21;--color-text-secondary: #4b5563;--color-text-tertiary: #8a94a3;--color-text-inverse: #ffffff;--color-accent: #2f6fed;--color-accent-hover: #2558c7;--color-accent-soft: #e8effe;--color-success-bg: #e4f5e9;--color-success-fg: #166534;--color-warning-bg: #fdf3db;--color-warning-fg: #7a5b02;--color-danger-bg: #fce8e8;--color-danger-fg: #991b1b;--color-neutral-bg: #ebeef3;--color-neutral-fg: #4b5563;--color-focus-ring: #2f6fed;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, Helvetica, Arial, sans-serif;--font-mono: "SF Mono", "Roboto Mono", Consolas, "Liberation Mono", monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1rem;--text-lg: 1.25rem;--text-xl: 1.75rem;--text-2xl: 2.125rem;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(16, 24, 36, .06);--shadow-md: 0 4px 12px rgba(16, 24, 36, .08);--shadow-modal: 0 12px 32px rgba(16, 24, 36, .18);--content-max: 1120px;--topbar-height: 64px;--sidebar-width: 240px;--sidebar-width-collapsed: 64px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--color-bg: #12161c;--color-surface: #1a2029;--color-surface-sunken: #222933;--color-border: #2e3743;--color-border-strong: #3d4855;--color-text-primary: #edf0f4;--color-text-secondary: #aeb8c4;--color-text-tertiary: #7e8a99;--color-accent: #5b8dfb;--color-accent-hover: #7ba4fc;--color-accent-soft: #1d2b45;--color-success-bg: #1b3a2a;--color-success-fg: #6fdb9a;--color-warning-bg: #3a2e0e;--color-warning-fg: #f0c64b;--color-danger-bg: #3a1717;--color-danger-fg: #f29b9b;--color-neutral-bg: #222933;--color-neutral-fg: #aeb8c4;--color-focus-ring: #7ba4fc;color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.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}.page{max-width:var(--content-max);margin:0 auto;padding:var(--space-8)}.page-header{margin-bottom:var(--space-6)}.page-header h1{font-size:var(--text-lg);font-weight:600}.page-header p{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--color-text-secondary)}.section{margin-bottom:var(--space-10)}.section-title{font-size:var(--text-md);font-weight:600;margin-bottom:var(--space-1)}.section-note{font-size:var(--text-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-4);max-width:62ch}.grid-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4)}.grid-metrics--two{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5)}.card--wide{padding:var(--space-6)}.metric-label{font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary);display:flex;align-items:center;gap:var(--space-2)}.metric-value{font-size:var(--text-xl);font-weight:700;margin-top:var(--space-2);font-variant-numeric:tabular-nums}.metric-value--unavailable{font-size:var(--text-lg);font-style:italic;color:var(--color-text-tertiary);font-weight:600}.metric-hint{font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-2)}.chip{display:inline-flex;align-items:center;gap:var(--space-1);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:600;white-space:nowrap}.chip--lg{font-size:var(--text-sm);padding:var(--space-2) var(--space-4)}.chip--success{background:var(--color-success-bg);color:var(--color-success-fg)}.chip--warning{background:var(--color-warning-bg);color:var(--color-warning-fg)}.chip--danger{background:var(--color-danger-bg);color:var(--color-danger-fg)}.chip--neutral{background:var(--color-neutral-bg);color:var(--color-neutral-fg)}.chip--accent{background:var(--color-accent-soft);color:var(--color-accent)}.notice{display:flex;gap:var(--space-3);align-items:flex-start;border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);margin-bottom:var(--space-4)}.notice strong{font-weight:600}.notice--success{background:var(--color-success-bg);color:var(--color-success-fg)}.notice--warning{background:var(--color-warning-bg);color:var(--color-warning-fg)}.notice--danger{background:var(--color-danger-bg);color:var(--color-danger-fg)}.notice--info{background:var(--color-accent-soft);color:var(--color-accent)}.field{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.field>label{font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary)}.field-hint{font-size:var(--text-xs);color:var(--color-text-tertiary)}.field-error{font-size:var(--text-xs);color:var(--color-danger-fg);font-weight:500}input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel],input[type=number],textarea,select{font:inherit;color:var(--color-text-primary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);width:100%}input[aria-invalid=true]{border-color:var(--color-danger-fg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font:inherit;font-weight:600;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-4);cursor:pointer;border:1px solid transparent}.btn--primary{background:var(--color-accent-hover);color:var(--color-text-inverse)}.btn--primary:hover{background:var(--color-accent)}.btn--secondary{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border-strong)}.btn--ghost{background:transparent;color:var(--color-text-primary);border:1px solid var(--color-border)}.btn--danger{background:var(--color-danger-bg);color:var(--color-danger-fg);border:1px solid var(--color-danger-fg)}.btn--block{width:100%}.btn:disabled{opacity:.55;cursor:not-allowed}.skeleton{background:var(--color-surface-sunken);border-radius:var(--radius-sm);height:76px;animation:skeleton-pulse 1.2s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.45}}.state-block{text-align:center;padding:var(--space-12) var(--space-6);border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg);background:var(--color-surface)}.state-block h2{font-size:var(--text-md);font-weight:600;margin-bottom:var(--space-2)}.state-block p{font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-4)}.chart-hbars{display:flex;flex-direction:column;gap:var(--space-2)}.chart-hbar-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) auto;gap:var(--space-2);align-items:center}.chart-hbar-label{font-size:var(--text-xs);color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart-hbar-track{background:var(--color-surface-sunken);border-radius:var(--radius-pill);height:var(--space-3);overflow:hidden}.chart-hbar-fill{display:block;height:100%;background:var(--color-accent);border-radius:var(--radius-pill)}.chart-hbar-value{font-size:var(--text-xs);font-weight:600;font-variant-numeric:tabular-nums;min-width:3ch;text-align:right}.chart-vbars,.chart-line{display:block;width:100%;height:auto}.chart-bar{fill:var(--color-accent)}.chart-area{fill:var(--color-accent-soft)}.chart-line-stroke{stroke:var(--color-accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.chart-dot{fill:var(--color-accent)}.chart-progress{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2);align-items:center}.chart-progress-track{background:var(--color-surface-sunken);border-radius:var(--radius-pill);height:var(--space-3);overflow:hidden}.chart-progress-fill{display:block;height:100%;border-radius:var(--radius-pill)}.chart-progress-fill--accent{background:var(--color-accent)}.chart-progress-fill--success{background:var(--color-success-fg)}.chart-progress-fill--warning{background:var(--color-warning-fg)}.chart-progress-fill--danger{background:var(--color-danger-fg)}.chart-progress-value{font-size:var(--text-xs);font-weight:600;font-variant-numeric:tabular-nums;min-width:3ch;text-align:right}.toast{position:fixed;bottom:var(--space-6);left:50%;transform:translate(-50%);border-radius:var(--radius-md);padding:var(--space-3) var(--space-5);font-size:var(--text-sm);box-shadow:var(--shadow-md);z-index:60}.modal-backdrop{position:fixed;inset:0;background:#10182473;display:flex;align-items:center;justify-content:center;z-index:50}.modal-backdrop--top{z-index:70}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);padding:var(--space-6);max-width:440px;width:calc(100% - var(--space-8))}.modal h2{font-size:var(--text-md);font-weight:600;margin-bottom:var(--space-2)}.modal p{font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-4)}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg);padding:var(--space-6)}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-8);width:100%;max-width:420px}.login-card .wordmark{font-size:var(--text-lg);font-weight:700;letter-spacing:-.01em}.login-sub{font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-1);margin-bottom:var(--space-6)}.auth-divider{display:flex;align-items:center;gap:var(--space-3);margin:var(--space-5) 0;color:var(--color-text-tertiary);font-size:var(--text-xs)}.auth-divider:before,.auth-divider:after{content:"";flex:1;border-top:1px solid var(--color-border)}.oauth-buttons{display:flex;flex-direction:column;gap:var(--space-3)}.oauth-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font:inherit;font-weight:600;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-4);cursor:pointer;background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border-strong)}.link-button{background:none;border:none;padding:0;font:inherit;color:var(--color-accent);text-decoration:underline;cursor:pointer}.enroll-secret{font-family:var(--font-mono);font-size:var(--text-sm);background:var(--color-surface-sunken);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);word-break:break-all;-webkit-user-select:all;user-select:all}.backup-codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2);font-family:var(--font-mono);font-size:var(--text-sm);background:var(--color-surface-sunken);border-radius:var(--radius-sm);padding:var(--space-3)}.qr-frame{display:inline-block;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4)}.shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh}.shell--collapsed{grid-template-columns:var(--sidebar-width-collapsed) minmax(0,1fr)}.topbar{position:sticky;top:0;z-index:40;height:var(--topbar-height);display:flex;align-items:center;gap:var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:0 var(--space-6)}.topbar-left{display:flex;align-items:center;gap:var(--space-3)}.wordmark{font-size:var(--text-md);font-weight:700;letter-spacing:-.01em;white-space:nowrap}.brand-logo{height:36px;width:auto;object-fit:contain}.brand-logo--lg{height:60px}.topbar-right{display:flex;align-items:center;gap:var(--space-3);margin-left:auto}.hamburger{display:none}.sidebar{position:sticky;top:var(--topbar-height);align-self:start;height:calc(100vh - var(--topbar-height));background:var(--color-surface);border-right:1px solid var(--color-border);overflow-y:auto;padding:var(--space-4) var(--space-3)}.sidebar-group-title{font-size:var(--text-xs);font-weight:600;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.04em;padding:var(--space-2) var(--space-3)}.sidebar-link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:500;text-decoration:none;width:100%}.sidebar-link:hover{background:var(--color-surface-sunken);color:var(--color-text-primary)}.sidebar-link.active{background:var(--color-accent-soft);color:var(--color-accent);font-weight:600}.sidebar-link .nav-label{flex:1}.sidebar-collapse{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border);font-size:var(--text-sm);cursor:pointer;margin-top:var(--space-4)}.shell--collapsed .sidebar-link{justify-content:center;padding:var(--space-2)}.shell--collapsed .nav-label,.shell--collapsed .sidebar-group-title,.shell--collapsed .sidebar-collapse span{display:none}.drawer-backdrop{position:fixed;inset:0;background:#10182473;z-index:45}.drawer{position:fixed;top:0;bottom:0;left:0;width:min(var(--sidebar-width),85vw);background:var(--color-surface);border-right:1px solid var(--color-border);box-shadow:var(--shadow-modal);z-index:46;overflow-y:auto;padding:var(--space-4) var(--space-3)}.drawer-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-4)}.drawer-close{background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);font-size:var(--text-sm);cursor:pointer;padding:var(--space-1) var(--space-3)}.menu{position:relative}.avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--color-accent-soft);color:var(--color-accent);font-size:var(--text-sm);font-weight:700;border:1px solid var(--color-border);cursor:pointer}.menu-panel{position:absolute;right:0;top:calc(100% + var(--space-2));min-width:240px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:45;padding:var(--space-3)}.menu-email{font-size:var(--text-sm);color:var(--color-text-secondary);word-break:break-all;padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.menu-item{display:block;width:100%;text-align:left;background:transparent;border:none;font:inherit;font-size:var(--text-sm);color:var(--color-danger-fg);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);cursor:pointer;margin-top:var(--space-2)}.menu-item:hover{background:var(--color-danger-bg)}.audit-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto auto;gap:var(--space-3);align-items:end;margin-bottom:var(--space-4)}.audit-filters .field{display:flex;flex-direction:column;gap:var(--space-1)}.audit-filters .field>span{font-size:var(--text-xs);color:var(--color-text-secondary)}.audit-filters input,.audit-filters select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-primary);font-size:var(--text-sm)}.audit-table{width:100%;border-collapse:collapse;background:var(--color-surface);font-size:var(--text-sm)}.audit-table th{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:2px solid var(--color-border);color:var(--color-text-secondary);font-weight:600}.audit-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);vertical-align:top}.audit-table code{font-size:var(--text-xs);background:var(--color-surface-sunken);padding:0 var(--space-1);border-radius:var(--radius-sm)}.audit-pagination{display:flex;gap:var(--space-2);margin-top:var(--space-4)}.bell-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border);cursor:pointer;text-decoration:none;position:relative}.bell-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 var(--space-1);border-radius:var(--radius-pill);background:var(--color-danger-bg);color:var(--color-danger-fg);font-size:var(--text-xs);font-weight:700;line-height:18px;text-align:center}.notification-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.notification-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4)}.notification-item--unread{border-left:3px solid var(--color-accent)}.notification-head{display:flex;align-items:center;gap:var(--space-2)}.notification-date{font-size:var(--text-xs);color:var(--color-text-tertiary);margin-left:auto}.notification-title{font-size:var(--text-md);font-weight:600;margin-top:var(--space-2)}.notification-body{font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-1)}.notification-actions{display:flex;gap:var(--space-2);margin-top:var(--space-3)}@media(max-width:1024px){.shell,.shell--collapsed{grid-template-columns:minmax(0,1fr)}.sidebar{display:none}.hamburger{display:inline-flex}.page{padding:var(--space-6)}.grid-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.page{padding:var(--space-4)}.grid-metrics,.grid-metrics--two{grid-template-columns:minmax(0,1fr)}.topbar{padding:0 var(--space-4)}.backup-codes{grid-template-columns:minmax(0,1fr)}}.table-wrap{overflow-x:auto}.cell-title{font-weight:600}.cell-sub{font-size:var(--text-xs);color:var(--color-text-tertiary)}.field-check{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);margin-bottom:var(--space-4);cursor:pointer}.field-check input[type=checkbox]{width:auto;height:auto}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-4)}.btn--sm{min-height:28px;padding:0 var(--space-2);font-size:var(--text-sm)}
