:root{--ink-0: #ffffff;--ink-5: #fafaf9;--ink-10: #f4f3f1;--ink-20: #e9e7e3;--ink-30: #d9d6d1;--ink-40: #b8b3ac;--ink-50: #8b8680;--ink-60: #5e5a54;--ink-70: #3d3a35;--ink-80: #1f1d1a;--ink-90: #0f0e0c;--ink-100: #000000;--accent: #000000;--accent-fg: #ffffff;--signal-good: oklch(62% .14 155);--signal-warn: oklch(76% .14 75);--signal-bad: oklch(58% .18 25);--signal-info: oklch(60% .13 240);--bg: var(--ink-0);--bg-subtle: var(--ink-5);--bg-raised: var(--ink-0);--bg-sunken: var(--ink-10);--fg: var(--ink-90);--fg-muted: var(--ink-60);--fg-subtle: var(--ink-50);--border: var(--ink-20);--border-strong: var(--ink-30);--hairline: var(--ink-20);--font-display: "Instrument Serif", "Times New Roman", serif;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--r-xs: 2px;--r-sm: 4px;--r-md: 8px;--r-lg: 12px;--r-xl: 20px;--density: 1;--pad-1: calc(4px * var(--density));--pad-2: calc(8px * var(--density));--pad-3: calc(12px * var(--density));--pad-4: calc(16px * var(--density));--pad-5: calc(20px * var(--density));--pad-6: calc(24px * var(--density));--pad-8: calc(32px * var(--density));--shadow-sm: 0 1px 2px rgba(15, 14, 12, .04);--shadow-md: 0 4px 16px -4px rgba(15, 14, 12, .08), 0 1px 2px rgba(15, 14, 12, .04);--shadow-lg: 0 20px 40px -12px rgba(15, 14, 12, .12), 0 4px 8px -2px rgba(15, 14, 12, .04)}[data-theme=dark]{--ink-0: #0a0a09;--ink-5: #111110;--ink-10: #1a1a18;--ink-20: #26251f;--ink-30: #35332c;--ink-40: #4a4841;--ink-50: #6b6861;--ink-60: #8b8780;--ink-70: #b8b3ac;--ink-80: #d9d6d1;--ink-90: #f4f3f1;--ink-100: #ffffff;--bg: #0a0a09;--bg-subtle: #111110;--bg-raised: #141412;--bg-sunken: #050504;--fg: #f4f3f1;--fg-muted: #9a968f;--fg-subtle: #6b6861;--border: #26251f;--border-strong: #35332c;--hairline: #1f1e19;--accent: #ffffff;--accent-fg: #000000;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 16px -4px rgba(0, 0, 0, .5), 0 1px 2px rgba(0, 0, 0, .3);--shadow-lg: 0 20px 40px -12px rgba(0, 0, 0, .6), 0 4px 8px -2px rgba(0, 0, 0, .3)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"cv11","ss01","ss03"}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:none;padding:0;cursor:pointer}a{color:inherit;text-decoration:none}img,svg{display:block;max-width:100%}.display-xl{font-family:var(--font-display);font-size:clamp(64px,9vw,140px);line-height:.95;letter-spacing:-.03em;font-weight:400}.display-lg{font-family:var(--font-display);font-size:clamp(48px,6vw,88px);line-height:1;letter-spacing:-.025em;font-weight:400}.display-md{font-family:var(--font-display);font-size:clamp(36px,4vw,56px);line-height:1.05;letter-spacing:-.02em;font-weight:400}.display-sm{font-family:var(--font-display);font-size:clamp(28px,3vw,40px);line-height:1.1;letter-spacing:-.015em;font-weight:400}.heading-lg{font-size:24px;line-height:1.2;letter-spacing:-.01em;font-weight:500}.heading-md{font-size:18px;line-height:1.3;letter-spacing:-.005em;font-weight:500}.heading-sm{font-size:15px;line-height:1.35;font-weight:500}.body-base{font-size:14px;line-height:1.55}.body-lg{font-size:16px;line-height:1.6}.small{font-size:12px;line-height:1.4}.micro{font-family:var(--font-mono);font-size:11px;line-height:1.4;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);font-weight:500}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.fh-root{min-height:100vh;background:var(--bg);color:var(--fg)}.container{max-width:1360px;margin:0 auto;padding:0 var(--pad-6)}.container-wide{max-width:1520px;margin:0 auto;padding:0 var(--pad-6)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:calc(10px * var(--density)) calc(18px * var(--density));border-radius:var(--r-md);font-size:13px;font-weight:500;letter-spacing:-.005em;cursor:pointer;transition:all .15s ease;border:1px solid transparent;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn-primary{background:var(--fg);color:var(--bg)}.btn-primary:hover{background:var(--ink-80);transform:translateY(-1px)}.btn-secondary{background:var(--bg);color:var(--fg);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--bg-subtle);border-color:var(--fg-muted)}.btn-ghost{color:var(--fg)}.btn-ghost:hover{background:var(--bg-subtle)}.btn-accent{background:var(--accent);color:var(--accent-fg)}.btn-accent:hover{filter:brightness(1.1)}.btn-sm{padding:calc(6px * var(--density)) calc(12px * var(--density));font-size:12px}.btn-lg{padding:calc(14px * var(--density)) calc(24px * var(--density));font-size:14px}.btn-icon{width:32px;padding:0;height:32px}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.hairline{border-bottom:1px solid var(--hairline)}.hairline-top{border-top:1px solid var(--hairline)}.input,.select,.textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);padding:calc(10px * var(--density)) calc(12px * var(--density));font-size:14px;transition:border-color .15s,box-shadow .15s;color:var(--fg)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--fg);box-shadow:0 0 0 3px var(--bg-subtle)}.input::placeholder{color:var(--fg-subtle)}.label{font-size:12px;font-weight:500;color:var(--fg-muted);margin-bottom:6px;display:block}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:500;background:var(--bg-subtle);border:1px solid var(--border)}.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge-good{color:var(--signal-good);background:color-mix(in oklab,var(--signal-good) 10%,var(--bg));border-color:color-mix(in oklab,var(--signal-good) 25%,transparent)}.badge-warn{color:var(--signal-warn);background:color-mix(in oklab,var(--signal-warn) 10%,var(--bg));border-color:color-mix(in oklab,var(--signal-warn) 25%,transparent)}.badge-bad{color:var(--signal-bad);background:color-mix(in oklab,var(--signal-bad) 10%,var(--bg));border-color:color-mix(in oklab,var(--signal-bad) 25%,transparent)}.badge-info{color:var(--signal-info);background:color-mix(in oklab,var(--signal-info) 10%,var(--bg));border-color:color-mix(in oklab,var(--signal-info) 25%,transparent)}.logo-lockup{display:inline-flex;align-items:center;gap:10px}.logo-mark{width:26px;height:26px;background:var(--fg);-webkit-mask:url(/assets/logo-mark.png) center/contain no-repeat;mask:url(/assets/logo-mark.png) center/contain no-repeat}.logo-text{font-size:15px;font-weight:600;letter-spacing:-.015em}.logo-text .dev{color:var(--fg-muted);font-weight:400}.topbar{height:60px;padding:0 var(--pad-6);display:flex;align-items:center;gap:var(--pad-6);border-bottom:1px solid var(--hairline);background:var(--bg);position:sticky;top:0;z-index:10}.sidebar{width:240px;flex-shrink:0;border-right:1px solid var(--hairline);background:var(--bg-subtle);min-height:calc(100vh - 60px);padding:var(--pad-5);display:flex;flex-direction:column;gap:2px}.sidebar-section{margin-top:var(--pad-5)}.sidebar-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-subtle);padding:0 8px;margin-bottom:8px}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--r-sm);font-size:13px;color:var(--fg-muted);cursor:pointer;transition:all .12s;border:1px solid transparent}.nav-item:hover{background:var(--bg);color:var(--fg)}.nav-item.active{background:var(--bg);color:var(--fg);border-color:var(--border);font-weight:500}.nav-item svg{width:15px;height:15px;flex-shrink:0;opacity:.8}.ico{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}@keyframes ticker{0%{transform:translate(0)}to{transform:translate(-50%)}}.ticker{display:flex;width:max-content;animation:ticker 40s linear infinite}.ticker:hover{animation-play-state:paused}@keyframes blink{50%{opacity:0}}.row{display:flex;gap:var(--pad-4)}.col{display:flex;flex-direction:column;gap:var(--pad-4)}.between{justify-content:space-between}.center{align-items:center}.grow{flex:1}.muted{color:var(--fg-muted)}.subtle{color:var(--fg-subtle)}.mono{font-family:var(--font-mono)}.serif{font-family:var(--font-display)}.proto-shell{display:flex;flex-direction:column;min-height:100vh}.proto-body{flex:1}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg);font-size:12px;color:var(--fg-muted)}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--pad-4)}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--pad-4)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--pad-4)}@media(max-width:900px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}.progress{width:100%;height:4px;background:var(--bg-sunken);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--fg);transition:width .4s ease}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;padding:10px 12px;font-weight:500;color:var(--fg-muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--hairline)}.tbl td{padding:14px 12px;border-bottom:1px solid var(--hairline)}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr:hover{background:var(--bg-subtle)}.avatar{width:28px;height:28px;border-radius:50%;background:var(--fg);color:var(--bg);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;letter-spacing:-.02em;flex-shrink:0}.placeholder{background-image:repeating-linear-gradient(45deg,var(--bg-subtle),var(--bg-subtle) 12px,var(--bg-sunken) 12px,var(--bg-sunken) 13px);border:1px solid var(--hairline);border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:11px;color:var(--fg-subtle);text-transform:uppercase;letter-spacing:.08em}.seg{display:flex;border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden}.seg button{flex:1;padding:6px 8px;font-size:11px;color:var(--fg-muted)}.seg button.active{background:var(--fg);color:var(--bg)}@media(max-width:900px){.sidebar{display:none}}
