:root{--paper-0: #f3f4f7;--paper-1: #ffffff;--paper-2: #fbfcfd;--sunken: #eceff3;--ink-900: #181f2e;--ink-700: #2c3548;--ink-500: #5a6577;--ink-400: #8b94a4;--line-100: #eef0f4;--line-200: #e1e4ea;--line-300: #cdd2dc;--indigo-100: #e3e7f8;--indigo-200: #c7cef0;--indigo-600: #3d4fb5;--indigo-700: #323f94;--indigo-800: #28336f;--green-text: #1b7a4d;--green-fill: #e4f2ea;--green-border: #c0e3d0;--amber-text: #97670f;--amber-fill: #fbf0d8;--amber-border: #f0dba6;--red-text: #b5281c;--red-fill: #fbe9e6;--red-border: #f2c9c2;--sky-text: #1f6fa6;--sky-fill: #e5f0f8;--sky-border: #c2ddef;--neutral-text: #5a6577;--neutral-fill: #eef0f4;--neutral-border: #dde1e8;--background: var(--paper-0);--surface: var(--paper-1);--surface-hover: var(--paper-2);--surface-sunken: var(--sunken);--border: var(--line-200);--border-strong: var(--line-300);--divider: var(--line-100);--text: var(--ink-700);--text-strong: var(--ink-900);--text-muted: var(--ink-500);--text-subtle: var(--ink-400);--text-on-primary: #ffffff;--primary: var(--indigo-600);--primary-hover: var(--indigo-700);--primary-active: var(--indigo-800);--primary-subtle: var(--indigo-100);--primary-disabled: var(--indigo-200);--focus-ring: var(--indigo-600);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--radius-sm: 5px;--radius-md: 7px;--radius-lg: 10px;--radius-pill: 999px;--control-h-sm: 30px;--control-h-md: 38px;--page-max: 1200px;--page-gutter: var(--space-6);--topbar-h: 56px;--border-width: 1px;--focus-ring-width: 2px;--font-sans: system-ui, -apple-system, "Segoe UI", "IBM Plex Sans", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", "Menlo", "IBM Plex Mono", monospace;--weight-medium: 500;--weight-semibold: 600;--text-h1-size: 1.5rem;--text-h2-size: 1.1875rem;--text-body-size: .9375rem;--text-sm-size: .8125rem;--text-xs-size: .75rem;--text-mono-size: .875rem;--tracking-wide: .04em;--numeric-features: "tnum" 1, "lnum" 1}*{box-sizing:border-box}body{margin:0;background:var(--background);color:var(--text);font-family:var(--font-sans);font-size:var(--text-body-size);line-height:1.5}a{color:var(--primary)}h1{font-size:var(--text-h1-size);color:var(--text-strong);margin:0 0 var(--space-4)}h2{font-size:var(--text-h2-size);color:var(--text-strong);margin:0 0 var(--space-3)}:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:2px}code,.mono{font-family:var(--font-mono);font-size:var(--text-mono-size)}.muted{color:var(--text-muted)}.small{font-size:var(--text-sm-size)}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:var(--numeric-features);text-align:right}.topbar{height:var(--topbar-h);background:var(--surface);border-bottom:var(--border-width) solid var(--border);display:flex;align-items:center;gap:var(--space-4);padding:0 var(--page-gutter)}.topbar .brand{font-weight:var(--weight-semibold);color:var(--text-strong);letter-spacing:var(--tracking-wide);text-transform:uppercase;font-size:var(--text-xs-size)}.topbar nav{display:flex;gap:var(--space-1);flex:1}.topbar nav a{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--text-muted);text-decoration:none;font-size:var(--text-sm-size)}.topbar nav a:hover{background:var(--surface-hover);color:var(--text)}.topbar nav a.active{background:var(--primary-subtle);color:var(--primary-active);font-weight:var(--weight-medium)}.page{max-width:var(--page-max);margin:0 auto;padding:var(--space-6) var(--page-gutter) var(--space-8)}.card{background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-5)}.row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:var(--space-2)}.spread{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4)}.grid-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-4)}.stat .label{display:block;font-size:var(--text-xs-size);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--tracking-wide)}.stat .value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-h2-size);color:var(--text-strong)}.table-wrap{overflow-x:auto}table.pt{width:100%;border-collapse:collapse;font-size:var(--text-sm-size)}table.pt th{text-align:left;font-weight:var(--weight-semibold);color:var(--text-muted);font-size:var(--text-xs-size);text-transform:uppercase;letter-spacing:var(--tracking-wide);padding:var(--space-2) var(--space-3);border-bottom:var(--border-width) solid var(--border-strong);white-space:nowrap}table.pt td{padding:var(--space-2) var(--space-3);border-bottom:var(--border-width) solid var(--divider);vertical-align:top}table.pt tbody tr.clickable{cursor:pointer}table.pt tbody tr.clickable:hover{background:var(--surface-hover)}table.pt tfoot td{font-weight:var(--weight-semibold);border-top:var(--border-width) solid var(--border-strong);border-bottom:none;background:var(--surface-sunken)}.desc{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:52ch}.nowrap{white-space:nowrap}.empty{color:var(--text-subtle);padding:var(--space-4);text-align:center}button.btn{height:var(--control-h-md);padding:0 var(--space-4);border-radius:var(--radius-md);border:var(--border-width) solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-sm-size);cursor:pointer}button.btn:hover:not(:disabled){background:var(--surface-hover)}button.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--text-on-primary);font-weight:var(--weight-medium)}button.btn.primary:hover:not(:disabled){background:var(--primary-hover)}button.btn.small{height:var(--control-h-sm);padding:0 var(--space-3);font-size:var(--text-xs-size)}button.btn:disabled{opacity:.55;cursor:not-allowed}input.inp,select.inp{height:var(--control-h-md);padding:0 var(--space-3);border-radius:var(--radius-md);border:var(--border-width) solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-sm-size);min-width:0}label.field{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-xs-size);color:var(--text-muted)}.badge{display:inline-block;padding:1px var(--space-2);border-radius:var(--radius-pill);font-size:var(--text-xs-size);border:var(--border-width) solid var(--neutral-border);background:var(--neutral-fill);color:var(--neutral-text);white-space:nowrap}.badge.ok{background:var(--green-fill);border-color:var(--green-border);color:var(--green-text)}.badge.warn{background:var(--amber-fill);border-color:var(--amber-border);color:var(--amber-text)}.badge.bad{background:var(--red-fill);border-color:var(--red-border);color:var(--red-text)}.badge.info{background:var(--sky-fill);border-color:var(--sky-border);color:var(--sky-text)}.banner{border-radius:var(--radius-md);border:var(--border-width) solid var(--sky-border);background:var(--sky-fill);color:var(--sky-text);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-sm-size)}.banner.error{border-color:var(--red-border);background:var(--red-fill);color:var(--red-text)}.banner.success{border-color:var(--green-border);background:var(--green-fill);color:var(--green-text)}.banner.warn{border-color:var(--amber-border);background:var(--amber-fill);color:var(--amber-text)}.login{max-width:360px;margin:12vh auto;padding:0 var(--space-4)}.login form{display:flex;flex-direction:column;gap:var(--space-3)}.login .inp{width:100%}
