:root{--plum:#3d0b3b;--plum-hover:#4b1248;--coral:#ff6b6b;--peach:#ffa96c;--ivory:#fff9f4;--charcoal:#2e2e2e;--bg-page:#fffcfa;--bg-brand:#fff9f4;--surface:#fff;--surface-subtle:#fff9f4;--surface-selected:#fff0ee;--text-primary:#2e2e2e;--text-brand:#3d0b3b;--text-secondary:#74666f;--text-muted:#9c8e96;--text-inverse:#fff;--border-default:#e9e1de;--border-soft:#f2ebe8;--border-brand:#3d0b3b;--primary-bg:#3d0b3b;--primary-text:#fff;--primary-hover:#4b1248;--secondary-bg:#fff0ee;--secondary-text:#3d0b3b;--accent:#ff6b6b;--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;--radius-sm:10px;--radius-md:16px;--radius-lg:24px;--radius-pill:999px;--shadow-sm:0 1px 2px #2e2e2e0f;--shadow-md:0 6px 20px #3d0b3b14;--motion-fast:.14s;--motion-normal:.2s;--sidebar-width:232px;--content-max:1200px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg-page);color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:20px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}:focus-visible{outline:3px solid var(--border-brand);outline-offset:2px}h1,h2,h3{color:var(--text-brand);margin:0;font-weight:650}h1{font-size:24px;line-height:32px}h2{font-size:20px;line-height:28px}h3{font-size:18px;line-height:24px}p{margin:0 0 var(--space-3)}a{color:var(--text-brand);text-decoration:underline}code,pre{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:13px}pre{background:var(--surface-subtle);border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:var(--space-3);margin:0;overflow-x:auto}.app-shell{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);flex:0 0 var(--sidebar-width);background:var(--bg-brand);border-right:1px solid var(--border-default);padding:var(--space-5) var(--space-4);gap:var(--space-4);flex-direction:column;display:flex}.sidebar-brand{align-items:baseline;gap:var(--space-2);display:flex}.sidebar-brand-mark{color:var(--text-brand);letter-spacing:-.01em;font-size:20px;font-weight:700}.sidebar-brand-sub{color:var(--text-secondary);font-size:12px}.nav-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.nav-button{text-align:left;border-radius:var(--radius-sm);width:100%;padding:var(--space-2) var(--space-3);color:var(--text-secondary);cursor:pointer;transition:background var(--motion-fast) ease, color var(--motion-fast) ease;background:0 0;border:1px solid #0000;font-size:14px;font-weight:500}.nav-button:hover{background:var(--surface-selected);color:var(--text-brand)}.nav-button[aria-current=page]{background:var(--surface-selected);color:var(--text-brand);border-color:var(--border-brand);font-weight:600}.sidebar-footer{border-top:1px solid var(--border-default);padding-top:var(--space-3);gap:var(--space-2);flex-direction:column;margin-top:auto;display:flex}.session-summary{color:var(--text-secondary);font-size:12px}.session-name{color:var(--text-brand);font-weight:600}.main{min-width:0;padding:var(--space-6) var(--space-8) var(--space-12);flex:1}.page-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.page-header p{color:var(--text-secondary);margin:var(--space-1) 0 0;max-width:70ch}.card{background:var(--surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-sm)}.card+.card{margin-top:var(--space-4)}.card-title{color:var(--text-brand);margin:0 0 var(--space-2);font-size:16px;font-weight:600}.stack{gap:var(--space-4);flex-direction:column;display:flex}.row{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.grid-cards{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.metric{background:var(--surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-4)}.metric-label{color:var(--text-secondary);margin-bottom:var(--space-1);font-size:13px}.metric-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:32px;font-weight:700;line-height:40px}.metric-note{color:var(--text-secondary);margin-top:var(--space-1);font-size:12px}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:36px;padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--motion-fast) ease, border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease;border:1px solid #0000;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--primary-bg);color:var(--primary-text)}.btn-primary:hover:not(:disabled){background:var(--primary-hover);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--secondary-bg);color:var(--secondary-text);border-color:var(--border-brand)}.btn-secondary:hover:not(:disabled){background:var(--surface-selected)}.btn-quiet{color:var(--text-brand);border-color:var(--border-default);background:0 0}.btn-quiet:hover:not(:disabled){background:var(--surface-subtle);border-color:var(--border-brand)}.btn-danger{background:var(--surface);color:var(--text-brand);border-color:var(--border-brand)}.btn-danger:hover:not(:disabled){background:var(--surface-selected)}.btn:disabled,.btn[aria-disabled=true]{cursor:not-allowed;opacity:.6}.btn-sm{min-height:28px;padding:var(--space-1) var(--space-3);font-size:13px}.field{gap:var(--space-1);margin-bottom:var(--space-3);flex-direction:column;display:flex}.field label{color:var(--text-brand);font-size:13px;font-weight:600}.field-hint{color:var(--text-secondary);font-size:12px}input[type=text],input[type=password],input[type=number],select,textarea{font:inherit;color:var(--text-primary);background:var(--surface);border:1px solid var(--border-brand);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);min-height:36px}input[type=checkbox]{accent-color:var(--plum);width:16px;height:16px}textarea{resize:vertical;min-height:72px}.filters{gap:var(--space-3);flex-wrap:wrap;align-items:flex-end;display:flex}.filters .field{min-width:160px;margin-bottom:0}.table-wrap{border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:var(--space-3);border-bottom:1px solid var(--border-soft);vertical-align:top}th{background:var(--surface-subtle);color:var(--text-brand);white-space:nowrap;font-weight:600;position:sticky;top:0}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-subtle)}.numeric{font-variant-numeric:tabular-nums;white-space:nowrap}.badge{align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-pill);white-space:nowrap;border:1px solid #0000;font-size:12px;font-weight:600;display:inline-flex}.badge-neutral{background:var(--surface-subtle);color:var(--text-secondary);border-color:var(--border-default)}.badge-brand{background:var(--primary-bg);color:var(--text-inverse)}.badge-accent{background:var(--accent);color:var(--text-primary)}.badge-plum-on-coral{background:var(--accent);color:var(--text-brand)}.badge-soft{background:var(--surface-selected);color:var(--text-brand);border-color:var(--border-brand)}.badge-warn{background:var(--peach);color:var(--text-primary)}.badge-row{gap:var(--space-1);flex-wrap:wrap;display:flex}.alert{border-radius:var(--radius-sm);border:1px solid var(--border-brand);padding:var(--space-3);background:var(--surface-selected);color:var(--text-primary);margin-bottom:var(--space-3)}.alert-title{color:var(--text-brand);margin-bottom:var(--space-1);font-weight:700}.alert-plain{border-color:var(--border-default);background:var(--surface-subtle)}.notice{color:var(--text-secondary);font-size:13px}.empty-state{padding:var(--space-8);text-align:center;color:var(--text-secondary)}.empty-state strong{color:var(--text-brand);margin-bottom:var(--space-1);font-size:16px;display:block}.progress{background:var(--surface-selected);border-radius:var(--radius-pill);border:1px solid var(--border-default);height:8px;overflow:hidden}.progress-fill{background:var(--accent);height:100%}.detail-grid{gap:var(--space-2) var(--space-4);grid-template-columns:minmax(140px,200px) 1fr;font-size:13px;display:grid}.detail-grid dt{color:var(--text-secondary);font-weight:600}.detail-grid dd{color:var(--text-primary);overflow-wrap:anywhere;margin:0}.mono{overflow-wrap:anywhere;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px}.media-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.media-item{border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--surface-subtle);overflow:hidden}.media-item img{object-fit:cover;background:var(--surface-selected);width:100%;height:150px;display:block}.media-meta{padding:var(--space-2);color:var(--text-secondary);overflow-wrap:anywhere;font-size:12px}.media-missing{height:150px;padding:var(--space-3);text-align:center;color:var(--text-secondary);background:var(--surface-subtle);justify-content:center;align-items:center;font-size:12px;display:flex}.login-page{min-height:100vh;padding:var(--space-6);background:var(--bg-brand);justify-content:center;align-items:center;display:flex}.login-card{background:var(--surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);width:100%;max-width:380px;padding:var(--space-8);box-shadow:var(--shadow-md)}.login-card h1{margin-bottom:var(--space-1)}.login-sub{color:var(--text-secondary);margin-bottom:var(--space-5)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap;max-width:420px;overflow:hidden}.muted{color:var(--text-secondary)}.small{font-size:12px}.spacer{flex:1}.split{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(320px,1fr));display:grid}.two-col{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}
