@font-face {
  font-family: 'JetBrains Mono';
  src: url('/fonts/JetBrainsMono-Regular.ttf') format('truetype');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'JetBrains Mono';
  src: url('/fonts/JetBrainsMono-Bold.ttf') format('truetype');
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans';
  src: url('/fonts/IBMPlexSans-Regular.ttf') format('truetype');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Sans';
  src: url('/fonts/IBMPlexSans-Bold.ttf') format('truetype');
  font-weight: 700; font-style: normal; font-display: swap;
}

:root {
  --bg-primary: #09090b; --bg-secondary: #0f1117; --bg-surface: #16181f;
  --bg-elevated: #1c1f2e; --bg-hover: #21253a;
  --border-subtle: #1e2235; --border-default: #272c42; --border-strong: #323854; --border-focus: #75fbcc;
  --accent-primary: #75fbcc; --accent-primary-h: #22c997;
  --accent-secondary: #10b981; --accent-danger: #ef4444; --accent-danger-h: #dc2626;
  --accent-warning: #f59e0b; --accent-info: #06b6d4;
  /* Compatibility aliases: bare names used inline across 20+ views for drill-down link
     color (--accent) and severity highlighting (--danger/--success/--warning). Previously
     undefined, so those colors silently failed — defining them lights up G4/G5 app-wide. */
  --accent: var(--accent-primary); --danger: var(--accent-danger); --success: var(--accent-secondary);
  --warning: var(--accent-warning); --border: var(--border-default); --bg-card: var(--bg-surface);
  --text-primary: #f1f5f9; --text-secondary: #94a3b8; --text-muted: #4b5675; --text-link: #75fbcc;
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.5); --shadow-md: 0 4px 16px rgba(0,0,0,0.6);
  --shadow-lg: 0 8px 40px rgba(0,0,0,0.7); --shadow-xl: 0 16px 64px rgba(0,0,0,0.8);
  --glow-blue: 0 0 20px rgba(117,251,204,0.15); --glow-green: 0 0 20px rgba(16,185,129,0.15);
  --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:.25rem;--radius:.5rem;--radius-md:.75rem;--radius-lg:1rem;--radius-xl:1.5rem;--radius-full:9999px;
  --font-mono:'JetBrains Mono','Fira Code',monospace;
  --font-body:'IBM Plex Sans','Inter',sans-serif;
  --transition-fast:150ms cubic-bezier(0.4,0,0.2,1);
  --transition-normal:250ms cubic-bezier(0.4,0,0.2,1);
  --transition-slow:400ms cubic-bezier(0.4,0,0.2,1);
  --sidebar-width:260px;--sidebar-collapsed-width:64px;--header-height:60px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;height:100%;}
body{background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-body);font-size:14px;line-height:1.6;min-height:100%;}
a{color:var(--text-link);text-decoration:none;}
a:hover{text-decoration:underline;}
img,svg{display:block;}

::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:var(--bg-primary);}
::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px;}
::-webkit-scrollbar-thumb:hover{background:var(--text-muted);}
html{scrollbar-width:thin;scrollbar-color:var(--border-strong) var(--bg-primary);}

::selection{background:rgba(117,251,204,0.3);color:var(--text-primary);}
:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;}

@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important;}}

/* App Shell */
.app-shell{display:flex;min-height:100vh;}
.sidebar{position:fixed;top:0;left:0;width:var(--sidebar-width);height:100vh;background:var(--bg-secondary);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;z-index:100;transition:width var(--transition-normal);}
.sidebar.collapsed{width:var(--sidebar-collapsed-width);}
.main-wrapper{margin-left:var(--sidebar-width);flex:1;display:flex;flex-direction:column;min-width:0;transition:margin-left var(--transition-normal);}
.sidebar.collapsed~.main-wrapper{margin-left:var(--sidebar-collapsed-width);}
.topbar{position:sticky;top:0;height:var(--header-height);background:var(--bg-secondary);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;padding:0 var(--space-8);z-index:50;gap:var(--space-4);}
.content-area{padding:var(--space-8);width:100%;}
/* Keep long-form prose readable even though the app is now full-width. */
.home-hero{max-width:1100px;}

/* Sidebar internals */
.sidebar-logo{padding:var(--space-5) var(--space-6);display:flex;align-items:flex-start;flex-direction:column;gap:var(--space-1);border-bottom:1px solid var(--border-subtle);}
.logo-full{height:60px;width:auto;display:block;flex-shrink:0;}
.logo-mark-img{width:28px;height:28px;object-fit:contain;display:none;flex-shrink:0;filter:brightness(0) invert(1) sepia(1) saturate(4) hue-rotate(100deg) brightness(1.2);}
.sidebar.collapsed .logo-full{display:none;}
.sidebar.collapsed .logo-mark-img{display:block;}
.logo-text{font-weight:600;font-size:10px;color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;overflow:hidden;padding-top:2px;}
.sidebar.collapsed .logo-text{display:none;}
.sidebar-nav{flex:1;padding:var(--space-3) var(--space-3) var(--space-2);overflow-y:auto;display:flex;flex-direction:column;gap:2px;scrollbar-width:thin;scrollbar-color:var(--border-subtle) transparent;}
.sidebar-nav::-webkit-scrollbar{width:8px;}
.sidebar-nav::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:var(--radius-full);border:2px solid transparent;background-clip:padding-box;}
.sidebar-nav::-webkit-scrollbar-thumb:hover{background:var(--border);}
.nav-section-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);padding:var(--space-4) var(--space-3) var(--space-1);white-space:nowrap;overflow:hidden;}
.nav-section-label:first-child{padding-top:var(--space-1);}
.sidebar.collapsed .nav-section-label{opacity:0;height:0;padding:0;margin:0;}
.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:9px var(--space-3);border-radius:var(--radius);color:var(--text-secondary);transition:color var(--transition-fast),background var(--transition-fast);position:relative;white-space:nowrap;}
.nav-item:hover{color:var(--text-primary);background:var(--bg-hover);text-decoration:none;}
.nav-item.active{color:var(--accent-primary);font-weight:600;background:color-mix(in srgb, var(--accent-primary) 13%, transparent);}
.nav-item svg{flex-shrink:0;width:18px;height:18px;color:var(--text-muted);transition:color var(--transition-fast);}
.nav-item:hover svg,.nav-item.active svg{color:currentColor;}
.nav-item span{overflow:hidden;text-overflow:ellipsis;}
.sidebar.collapsed .nav-item{justify-content:center;padding:9px 0;}
.sidebar.collapsed .nav-item span{display:none;}
.sidebar-user{padding:var(--space-4);border-top:1px solid var(--border-subtle);display:flex;align-items:center;gap:var(--space-3);}
.user-avatar{width:34px;height:34px;border-radius:var(--radius-full);background:var(--accent-primary);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#0b1220;flex-shrink:0;}
.user-info{flex:1;overflow:hidden;min-width:0;display:flex;flex-direction:column;gap:3px;}
.user-name{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sidebar.collapsed .user-info{display:none;}
.user-settings{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius);color:var(--text-muted);transition:color var(--transition-fast),background var(--transition-fast);}
.user-settings:hover{color:var(--text-primary);background:var(--bg-hover);text-decoration:none;}
.user-settings.active{color:var(--accent-primary);background:color-mix(in srgb, var(--accent-primary) 13%, transparent);}
.user-settings svg{width:18px;height:18px;}
.sidebar.collapsed .user-settings{display:none;}
.sidebar-collapse{padding:var(--space-2) var(--space-3) var(--space-3);border-top:1px solid var(--border-subtle);}
.collapse-btn{display:flex;align-items:center;gap:var(--space-3);width:100%;background:none;border:none;color:var(--text-muted);cursor:pointer;padding:9px var(--space-3);border-radius:var(--radius);transition:color var(--transition-fast),background var(--transition-fast);}
.collapse-btn:hover{color:var(--text-primary);background:var(--bg-hover);}
.sidebar.collapsed .collapse-btn{justify-content:center;padding:9px 0;}
.sidebar.collapsed .collapse-btn span{display:none;}

/* Topbar internals */
.topbar-left{flex:1;display:flex;align-items:center;}
.topbar-right{display:flex;align-items:center;gap:var(--space-4);}
.topbar-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:var(--space-2);border-radius:var(--radius);transition:color var(--transition-fast);}
.topbar-btn:hover{color:var(--text-primary);}
.topbar-separator{width:1px;height:24px;background:var(--border-subtle);}
.topbar-user{display:flex;align-items:center;gap:var(--space-2);font-size:13px;color:var(--text-secondary);}

/* Breadcrumb */
.breadcrumb{display:flex;align-items:center;gap:var(--space-2);font-size:13px;color:var(--text-muted);margin-bottom:var(--space-6);}
.breadcrumb a{color:var(--text-muted);}
.breadcrumb a:hover{color:var(--text-link);}
.breadcrumb-sep{color:var(--text-muted);}
.breadcrumb-current{color:var(--text-secondary);}

/* Cards */
.card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;}
.card-header{padding:var(--space-6);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;}
.card-title{font-size:16px;font-weight:600;color:var(--text-primary);}
.card-subtitle{font-size:13px;color:var(--text-secondary);margin-top:2px;}
.card-body{padding:var(--space-6);}
.card-footer{padding:var(--space-4) var(--space-6);border-top:1px solid var(--border-subtle);background:var(--bg-elevated);}

/* Stat Cards */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);margin-bottom:var(--space-8);}
.stat-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-6);}
.stat-value{font-size:32px;font-weight:700;color:var(--text-primary);font-family:var(--font-mono);}
.stat-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-top:var(--space-1);}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-body);font-size:14px;font-weight:500;padding:var(--space-2) var(--space-4);border-radius:var(--radius);border:1px solid transparent;cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast);white-space:nowrap;text-decoration:none;}
.btn:active{transform:scale(0.97);}
.btn:disabled{opacity:0.5;cursor:not-allowed;pointer-events:none;}
.btn-sm{padding:var(--space-1) var(--space-3);font-size:12px;}
.btn-lg{padding:var(--space-3) var(--space-6);font-size:16px;}
/* Darker green so the white label is legible (the bright mint --accent-primary stays for links/accents). */
.btn-primary{background:#047857;color:#fff;border-color:#047857;}
.btn-primary:hover{background:#059669;border-color:#059669;}
.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border-color:var(--border-default);}
.btn-secondary:hover{background:var(--bg-hover);}
.btn-danger{background:var(--accent-danger);color:#fff;border-color:var(--accent-danger);}
.btn-danger:hover{background:var(--accent-danger-h);}
.btn-ghost{background:transparent;color:var(--text-secondary);border-color:transparent;}
.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary);}
.btn-success{background:var(--accent-secondary);color:#fff;border-color:var(--accent-secondary);}
.btn-full{width:100%;}
.btn-loading{pointer-events:none;opacity:0.7;}
/* Admin-only CSV export affordances. The routes are admin-gated server-side; hide the
   buttons for non-admins so they don't dead-end in a 403 (scales to any .export-link). */
body:not([data-role="admin"]) .export-link{display:none;}

/* Badges */
.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-weight:700;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;}
.badge-admin{background:rgba(117,251,204,0.15);color:#75fbcc;border:1px solid rgba(117,251,204,0.3);}
.badge-user{background:rgba(16,185,129,0.15);color:#34d399;border:1px solid rgba(16,185,129,0.3);}
.badge-viewer{background:rgba(148,163,184,0.1);color:#94a3b8;border:1px solid rgba(148,163,184,0.2);}
.badge-active{background:rgba(16,185,129,0.15);color:#34d399;border:1px solid rgba(16,185,129,0.3);}
.badge-inactive{background:rgba(239,68,68,0.15);color:#f87171;border:1px solid rgba(239,68,68,0.3);}
.badge-warning{background:rgba(245,158,11,0.15);color:#fbbf24;border:1px solid rgba(245,158,11,0.3);}
.badge-info{background:rgba(6,182,212,0.15);color:#22d3ee;border:1px solid rgba(6,182,212,0.3);}
/* louder than badge-inactive — for CRITICAL findings (severity pills across reports) */
.badge-danger{background:rgba(239,68,68,0.28);color:#fecaca;border:1px solid rgba(239,68,68,0.6);font-weight:600;}
.badge-coming-soon{background:rgba(75,86,117,0.3);color:var(--text-muted);border:1px solid var(--border-subtle);}

/* Form controls */
.form-group{margin-bottom:var(--space-5);}
.form-label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:var(--space-2);}
.form-hint{font-size:12px;color:var(--text-muted);margin-top:var(--space-1);}
.form-error{font-size:12px;color:var(--accent-danger);margin-top:var(--space-1);}
.form-input,.form-select,.form-textarea{width:100%;background:var(--bg-primary);border:1px solid var(--border-default);border-radius:var(--radius);color:var(--text-primary);font-family:var(--font-body);font-size:14px;padding:var(--space-3) var(--space-4);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);}
.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px rgba(117,251,204,0.18);}
.form-input.error,.form-select.error{border-color:var(--accent-danger);}
.form-input::placeholder{color:var(--text-muted);}
.form-select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:var(--space-8);}
.input-wrapper{position:relative;}
.input-icon-right{position:absolute;right:var(--space-3);top:50%;transform:translateY(-50%);color:var(--text-muted);cursor:pointer;}

/* Password strength */
.strength-bar{display:flex;gap:3px;margin-top:var(--space-2);}
.strength-segment{height:4px;flex:1;border-radius:2px;background:var(--border-default);transition:background var(--transition-fast);}
.strength-label{font-size:12px;color:var(--text-muted);margin-top:4px;}

/* Tables */
.table-container{overflow-x:auto;}
table{width:100%;border-collapse:collapse;}
thead th{padding:var(--space-3) var(--space-4);text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid var(--border-subtle);white-space:nowrap;}
th.sortable{cursor:pointer;user-select:none;}
th.sortable:hover{color:var(--text-secondary);}
tbody tr{border-bottom:1px solid var(--border-subtle);transition:background var(--transition-fast);}
tbody tr:nth-child(even){background:var(--bg-elevated);}
tbody tr:hover{background:var(--bg-hover);}
tbody td{padding:var(--space-3) var(--space-4);color:var(--text-secondary);font-size:13px;}
.table-empty{text-align:center;padding:var(--space-16);color:var(--text-muted);}

/* Toolbar */
.toolbar{display:flex;gap:var(--space-3);align-items:center;margin-bottom:var(--space-4);flex-wrap:wrap;}
.toolbar-left{flex:1;display:flex;gap:var(--space-3);align-items:center;min-width:0;}
.toolbar-right{display:flex;gap:var(--space-3);align-items:center;}
.search-input{width:280px;}

/* Pagination */
.pagination{display:flex;gap:var(--space-2);align-items:center;justify-content:center;margin-top:var(--space-6);}
.page-btn{padding:var(--space-2) var(--space-3);border-radius:var(--radius);border:1px solid var(--border-default);background:var(--bg-elevated);color:var(--text-secondary);cursor:pointer;font-size:13px;transition:background var(--transition-fast);}
.page-btn:hover{background:var(--bg-hover);color:var(--text-primary);}
.page-btn.active{background:#047857;border-color:#047857;color:#fff;}
.page-info{font-size:13px;color:var(--text-muted);margin:0 var(--space-4);}

/* Alerts */
.alert{padding:var(--space-4);border-radius:var(--radius);border:1px solid;margin-bottom:var(--space-4);font-size:14px;}
.alert-error{background:rgba(239,68,68,0.1);border-color:rgba(239,68,68,0.3);color:#f87171;}
.alert-success{background:rgba(16,185,129,0.1);border-color:rgba(16,185,129,0.3);color:#34d399;}
.alert-warning{background:rgba(245,158,11,0.1);border-color:rgba(245,158,11,0.3);color:#fbbf24;}
.alert-info{background:rgba(6,182,212,0.1);border-color:rgba(6,182,212,0.3);color:#22d3ee;}

/* Tabs */
.tabs{display:flex;border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-6);}
.tab{padding:var(--space-3) var(--space-6);font-size:14px;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--transition-fast);}
.tab:hover{color:var(--text-secondary);}
.tab.active{color:var(--text-primary);border-bottom-color:var(--accent-primary);}

/* Dropdown */
.dropdown{position:relative;display:inline-block;}
.dropdown-menu{position:absolute;right:0;top:calc(100% + 4px);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-md);min-width:180px;z-index:200;box-shadow:var(--shadow-lg);overflow:hidden;display:none;}
.dropdown-menu.open{display:block;}
.dropdown-item{display:block;padding:var(--space-3) var(--space-4);font-size:13px;color:var(--text-secondary);cursor:pointer;transition:background var(--transition-fast);}
.dropdown-item:hover{background:var(--bg-hover);color:var(--text-primary);text-decoration:none;}
.dropdown-item.danger{color:var(--accent-danger);}
.dropdown-item.danger:hover{background:rgba(239,68,68,0.1);}
.dropdown-divider{height:1px;background:var(--border-subtle);margin:var(--space-1) 0;}

/* Stepper */
.stepper{display:flex;align-items:flex-start;margin-bottom:var(--space-8);}
.step{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;}
.step:not(:last-child)::after{content:'';position:absolute;top:16px;left:50%;width:100%;height:2px;background:var(--border-subtle);}
.step.completed::after,.step.active::after{background:var(--accent-primary);}
.step-circle{width:32px;height:32px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;position:relative;z-index:1;border:2px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-muted);}
.step.completed .step-circle{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff;}
.step.active .step-circle{border-color:var(--accent-primary);color:var(--accent-primary);}
.step-label{font-size:12px;color:var(--text-muted);margin-top:var(--space-2);text-align:center;}
.step.active .step-label{color:var(--text-secondary);}

/* Drawer */
.drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.7);z-index:300;opacity:0;pointer-events:none;transition:opacity var(--transition-normal);}
.drawer-overlay.open{opacity:1;pointer-events:all;}
.drawer{position:fixed;right:0;top:0;bottom:0;width:480px;background:var(--bg-secondary);border-left:1px solid var(--border-subtle);z-index:301;transform:translateX(100%);transition:transform var(--transition-normal);display:flex;flex-direction:column;max-width:100vw;}
.drawer.open{transform:translateX(0);}
.drawer-header{padding:var(--space-6);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;}
.drawer-title{font-size:18px;font-weight:600;color:var(--text-primary);}
.drawer-body{flex:1;overflow-y:auto;padding:var(--space-6);}
.drawer-footer{padding:var(--space-4) var(--space-6);border-top:1px solid var(--border-subtle);display:flex;gap:var(--space-3);justify-content:flex-end;}

/* Modal */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.8);z-index:400;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity var(--transition-fast);}
.modal-overlay.open{opacity:1;pointer-events:all;}
.modal{background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-xl);width:480px;max-width:90vw;box-shadow:var(--shadow-xl);overflow:hidden;}
.modal-header{padding:var(--space-6);border-bottom:1px solid var(--border-subtle);}
.modal-header.danger{background:rgba(239,68,68,0.08);border-bottom-color:rgba(239,68,68,0.2);}
.modal-title{font-size:18px;font-weight:600;color:var(--text-primary);}
.modal-body{padding:var(--space-6);color:var(--text-secondary);}
.modal-footer{padding:var(--space-4) var(--space-6);border-top:1px solid var(--border-subtle);display:flex;gap:var(--space-3);justify-content:flex-end;}

/* Toast container */
.toast-container{position:fixed;top:var(--space-4);right:var(--space-4);z-index:1000;display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none;}
.toast{display:flex;align-items:flex-start;gap:var(--space-3);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-4);min-width:320px;max-width:480px;box-shadow:var(--shadow-lg);pointer-events:all;transform:translateX(calc(100% + var(--space-4)));transition:transform var(--transition-normal);border-left:3px solid var(--border-default);position:relative;overflow:hidden;}
.toast.show{transform:translateX(0);}
.toast.success{border-left-color:var(--accent-secondary);}
.toast.error{border-left-color:var(--accent-danger);}
.toast.warning{border-left-color:var(--accent-warning);}
.toast.info{border-left-color:var(--accent-primary);}
.toast-message{flex:1;font-size:14px;color:var(--text-primary);}
.toast-close{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:0;line-height:1;}
.toast-close:hover{color:var(--text-primary);}
.toast-progress{position:absolute;bottom:0;left:0;height:2px;background:currentColor;animation:toast-progress 4s linear forwards;}
@keyframes toast-progress{from{width:100%}to{width:0}}
.toast.success .toast-progress{color:var(--accent-secondary);}
.toast.error .toast-progress{color:var(--accent-danger);}

/* TOTP digit input */
.totp-digits{display:flex;gap:var(--space-2);justify-content:center;}
.totp-digit{width:48px;height:60px;background:var(--bg-primary);border:2px solid var(--border-default);border-radius:var(--radius-md);text-align:center;font-family:var(--font-mono);font-size:24px;font-weight:700;color:var(--text-primary);transition:border-color var(--transition-fast);}
.totp-digit:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px rgba(59,130,246,0.15);}
.totp-digits:focus-within .totp-digit{border-color:var(--border-focus);}

/* Report cards */
.reports-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4);}
.report-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4);}
.report-card-title{font-size:16px;font-weight:600;color:var(--text-primary);}
.report-card-desc{font-size:13px;color:var(--text-secondary);flex:1;}

/* Responsive */
.mobile-nav-toggle{display:none;background:none;border:0;color:inherit;cursor:pointer;padding:6px;margin-right:8px;border-radius:var(--radius-sm,6px);}
.mobile-nav-toggle:hover{background:var(--bg-elevated);}
.nav-scrim{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:99;opacity:0;pointer-events:none;transition:opacity var(--transition-normal);}
.nav-scrim.show{opacity:1;pointer-events:auto;}
@media(max-width:1024px){
  .sidebar{transform:translateX(-100%);box-shadow:var(--shadow-lg);}
  .sidebar.mobile-open{transform:translateX(0);}
  .main-wrapper{margin-left:0;}
  .mobile-nav-toggle{display:inline-flex;align-items:center;}
}

.auth-logo-img{height:104px;width:auto;display:block;margin:0 auto;}

/* Report filter chips (generic; wired by table-enhance.js) */
.rf-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.rf-chip{cursor:pointer;border:1px solid var(--border-subtle);background:transparent;color:var(--text-secondary);border-radius:var(--radius-full);padding:5px 14px;font-size:12px;font-weight:600;font-family:inherit;}
.rf-chip:hover{border-color:var(--accent);}
.rf-chip.active{background:var(--accent);color:#fff;border-color:var(--accent);}

/* Print / PDF: drop the app chrome so a report prints as a clean evidence document. */
@media print{
  .sidebar,.topbar,.nav-scrim,.breadcrumb,.btn,.alert-bell,.mobile-nav-toggle{display:none!important;}
  .main-wrapper{margin-left:0!important;}
  .content,.main-content{padding:0!important;}
  .card{border:none!important;box-shadow:none!important;break-inside:avoid;}
  .table-container{overflow:visible!important;}
  table{font-size:11px!important;}
  a[href]{color:inherit!important;text-decoration:none!important;}
  body{background:#fff!important;color:#000!important;}
}
