:root{--color-surface:#fff;--color-surface-sunken:#f6f7f8;--color-surface-raised:#fff;--color-surface-accent:#eef2f6;--color-border:#dfe3e8;--color-border-strong:#b9c0c8;--color-text:#1b1f23;--color-text-muted:#6b7480;--color-text-inverse:#fff;--color-accent:#2f5d8a;--color-accent-text:#fff;--color-danger:#9b2c2c;--color-warning:#8a6100;--color-warning-bg:#fdf6e3;--color-ok:#2f6b46;--space-0:0;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-md:.9375rem;--text-lg:1.125rem;--text-xl:1.5rem;--weight-normal:400;--weight-medium:500;--weight-bold:600;--leading-tight:1.25;--leading-normal:1.5;--radius-sm:2px;--radius-md:4px;--border-width:1px;--content-max:100%;--control-height:2rem}*,:before,:after{box-sizing:border-box}html{font-size:100%}body{margin:var(--space-0);background:var(--color-surface-sunken);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--leading-normal)}h1,h2,h3{margin:var(--space-0) var(--space-0) var(--space-3);line-height:var(--leading-tight);font-weight:var(--weight-bold)}h1{font-size:var(--text-xl)}h2{font-size:var(--text-lg)}h3{font-size:var(--text-md)}p{margin:var(--space-0) var(--space-0) var(--space-3)}a{color:var(--color-accent)}table{border-collapse:collapse;background:var(--color-surface-raised);width:100%;font-size:var(--text-sm)}caption{text-align:left;padding:var(--space-2) var(--space-0);color:var(--color-text-muted);font-size:var(--text-sm)}th,td{padding:var(--space-2) var(--space-3);border-bottom:var(--border-width) solid var(--color-border);text-align:left;vertical-align:top}thead th{top:var(--space-0);background:var(--color-surface-accent);border-bottom:var(--border-width) solid var(--color-border-strong);font-weight:var(--weight-bold);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;position:sticky}td[data-numeric],th[data-numeric]{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}[data-empty]:after{content:"—";color:var(--color-text-muted)}form{margin:var(--space-0)}fieldset{margin:var(--space-0);padding:var(--space-0);border:none}legend{padding:var(--space-0);color:var(--color-text-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em}label{margin-bottom:var(--space-1);color:var(--color-text-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;display:block}input,select{height:var(--control-height);padding:var(--space-0) var(--space-2);border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-family:inherit;font-size:var(--text-sm)}input:focus-visible,select:focus-visible,button:focus-visible{outline:var(--border-width) solid var(--color-accent);outline-offset:var(--space-1)}button{height:var(--control-height);padding:var(--space-0) var(--space-4);border:var(--border-width) solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-accent);color:var(--color-accent-text);font-family:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer}button[type=button]{border-color:var(--color-border-strong);background:var(--color-surface);color:var(--color-text)}button:disabled{opacity:.5;cursor:default}.summary{gap:var(--space-6);margin:var(--space-0) var(--space-0) var(--space-5);padding:var(--space-4);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);flex-wrap:wrap;display:flex}.summary div{margin:var(--space-0)}.summary dt{color:var(--color-text-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em}.summary dd{margin:var(--space-1) var(--space-0) var(--space-0);font-size:var(--text-lg);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}.summary dd small{max-width:22ch;color:var(--color-text-muted);font-size:var(--text-xs);font-weight:var(--weight-normal);line-height:var(--leading-tight);display:block}.filters{margin-bottom:var(--space-4)}.filters-row{align-items:end;gap:var(--space-4);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.table-scroll{border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);max-height:70vh;overflow:auto}.table-scroll td small{color:var(--color-text-muted);font-size:var(--text-xs);line-height:var(--leading-tight);display:block}.filters-check{align-items:center;gap:var(--space-2);display:flex}.filters-check input{height:auto}.filters-check label{margin:var(--space-0);text-transform:none;letter-spacing:normal;font-size:var(--text-sm)}.app-header{align-items:center;gap:var(--space-6);padding:var(--space-3) var(--space-5);border-bottom:var(--border-width) solid var(--color-border);background:var(--color-surface-raised);display:flex}.app-header nav{gap:var(--space-4);display:flex}.app-header nav a{padding:var(--space-1) var(--space-0);border-bottom:var(--border-width) solid transparent;color:var(--color-text-muted);font-size:var(--text-sm);text-decoration:none}.app-header nav a[aria-current=page]{border-bottom-color:var(--color-accent);color:var(--color-text);font-weight:var(--weight-medium)}.app-header-user{align-items:center;gap:var(--space-3);color:var(--color-text-muted);font-size:var(--text-sm);margin-left:auto;display:flex}.app-main{max-width:var(--content-max);padding:var(--space-5)}.app-loading{padding:var(--space-6);color:var(--color-text-muted)}.login{padding:var(--space-7) var(--space-4);justify-content:center;display:flex}.login form{gap:var(--space-4);width:22rem;max-width:100%;padding:var(--space-5);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);flex-direction:column;display:flex}.login input{width:100%}.login [role=alert]{margin:var(--space-0);color:var(--color-danger);font-size:var(--text-sm)}
