:root{--paper: oklch(99% .002 250);--paper-2: oklch(97.5% .004 250);--paper-3: oklch(95.5% .005 250);--line: oklch(91% .006 250);--line-2: oklch(87% .008 250);--ink: oklch(18% .015 260);--ink-2: oklch(35% .012 260);--ink-3: oklch(52% .01 260);--ink-4: oklch(68% .008 260);--accent: oklch(58% .19 258);--accent-hover: oklch(52% .2 258);--accent-soft: oklch(95% .03 258);--accent-ink: oklch(30% .15 258);--ok: oklch(62% .14 155);--ok-soft: oklch(95% .04 155);--warn: oklch(72% .14 75);--warn-soft: oklch(96% .05 75);--bad: oklch(58% .2 25);--bad-soft: oklch(95% .04 25);--dark: oklch(16% .012 260);--dark-2: oklch(22% .014 260);--dark-line: oklch(28% .015 260);--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-xl: 20px;--shadow-sm: 0 1px 2px oklch(20% .02 260 / .04), 0 1px 1px oklch(20% .02 260 / .03);--shadow-md: 0 4px 12px oklch(20% .02 260 / .06), 0 1px 3px oklch(20% .02 260 / .04);--shadow-lg: 0 24px 48px oklch(20% .02 260 / .1), 0 8px 16px oklch(20% .02 260 / .06);--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-display: "Inter Display", "Inter", ui-sans-serif, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"cv11","ss01","ss03"}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit}.btn{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:var(--r-md);font-size:14px;font-weight:500;line-height:1;border:1px solid transparent;transition:all .15s ease;letter-spacing:-.005em;white-space:nowrap}.btn-primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn-primary:hover{background:var(--ink-2);border-color:var(--ink-2)}.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 1px #fff3 inset,0 1px 2px #00439533;box-shadow:0 1px #fff3 inset,0 1px 2px oklch(40% .15 258 / .2)}.btn-accent:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-2)}.btn-ghost:hover{background:var(--paper-2);border-color:var(--ink-4)}.btn-sm{padding:6px 10px;font-size:13px}.btn-lg{padding:12px 20px;font-size:15px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:500;line-height:18px;border:1px solid var(--line-2);background:var(--paper-2);color:var(--ink-2)}.badge-ok{background:var(--ok-soft);color:#00502b;color:oklch(38% .12 155);border-color:#b0dabd}.badge-warn{background:var(--warn-soft);color:#694500;color:oklch(42% .11 75);border-color:#f0ca96}.badge-bad{background:var(--bad-soft);color:#90101a;border-color:#f3bfba}.badge-accent{background:var(--accent-soft);color:var(--accent-ink);border-color:#c8d9f2}.dot{width:6px;height:6px;border-radius:50%;background:currentColor}.kbd{display:inline-flex;align-items:center;justify-content:center;min-width:18px;padding:1px 5px;border-radius:4px;font-family:var(--font-mono);font-size:11px;background:var(--paper-3);color:var(--ink-3);border:1px solid var(--line-2);box-shadow:0 1px 0 var(--line)}.input{width:100%;padding:9px 12px;border-radius:var(--r-md);border:1px solid var(--line-2);background:var(--paper);font-size:14px;color:var(--ink);outline:none;transition:all .15s ease}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #96c0fe40}.mono{font-family:var(--font-mono)}.display{font-family:var(--font-display);letter-spacing:-.02em}::selection{background:#b0d0ff;background:oklch(85% .1 258);color:var(--ink)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:6px;border:2px solid var(--paper)}::-webkit-scrollbar-thumb:hover{background:var(--ink-4)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}#root{min-height:100vh}
