:root{--bg-0: #07080a;--bg-1: #0d0f12;--bg-2: #14171c;--bg-3: #1c2026;--bg-4: #262b33;--line: #1d2128;--line-2: #2a2f38;--text-1: #e7eaef;--text-2: #a3a9b3;--text-3: #6b717b;--text-4: #4a4f58;--acc: oklch(.86 .2 130);--acc-ink: #0a0c0a;--acc-dim: oklch(.86 .2 130 / .18);--acc-line: oklch(.86 .2 130 / .42);--ok: oklch(.82 .16 145);--warn: oklch(.84 .14 80);--err: oklch(.72 .18 25);--info: oklch(.78 .1 230);--diff-easy: oklch(.82 .14 145);--diff-med: oklch(.84 .14 80);--diff-hard: oklch(.72 .18 25);--font-sans: "Inter", "Pretendard", -apple-system, system-ui, sans-serif;--font-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, Menlo, monospace;--r-sm: 4px;--r-md: 6px;--r-lg: 10px;--sh-1: 0 1px 0 rgba(255,255,255,.02) inset, 0 1px 2px rgba(0,0,0,.4)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font-sans);color:var(--text-1);background:var(--bg-0);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}.mono{font-family:var(--font-mono);font-feature-settings:"zero","ss01"}.text-mute{color:var(--text-2)}.text-faint{color:var(--text-3)}.text-acc{color:var(--acc)}.tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;padding:2px 7px;border:1px solid var(--line-2);border-radius:3px;color:var(--text-2);background:var(--bg-1);text-transform:uppercase}.tag.acc{color:var(--acc);border-color:var(--acc-line);background:var(--acc-dim)}.tag.easy{color:var(--diff-easy);border-color:color-mix(in oklch,var(--diff-easy) 35%,transparent)}.tag.med{color:var(--diff-med);border-color:color-mix(in oklch,var(--diff-med) 35%,transparent)}.tag.hard{color:var(--diff-hard);border-color:color-mix(in oklch,var(--diff-hard) 35%,transparent)}.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-sans);font-size:13px;font-weight:500;padding:8px 14px;border-radius:var(--r-md);border:1px solid var(--line-2);background:var(--bg-2);color:var(--text-1);cursor:pointer;transition:background 80ms ease,border-color 80ms ease,transform 80ms ease;-webkit-user-select:none;user-select:none}.btn:hover{background:var(--bg-3);border-color:#353a44}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--acc);color:var(--acc-ink);border-color:var(--acc);font-weight:600}.btn.primary:hover{filter:brightness(1.05)}.btn.ghost{background:transparent;border-color:var(--line)}.btn.ghost:hover{background:var(--bg-2)}.btn.sm{font-size:12px;padding:5px 10px}.btn.xs{font-size:11px;padding:3px 8px}.btn.icon{padding:6px;width:28px;height:28px;justify-content:center}.btn:disabled{opacity:.4;cursor:not-allowed}.card{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-lg)}.divider{height:1px;background:var(--line)}.kbd{font-family:var(--font-mono);font-size:10.5px;padding:1px 5px;background:var(--bg-2);border:1px solid var(--line-2);border-bottom-width:2px;border-radius:3px;color:var(--text-2)}.bg-grid{background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:40px 40px;background-position:-1px -1px}.scroll::-webkit-scrollbar{width:8px;height:8px}.scroll::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:4px}.scroll::-webkit-scrollbar-thumb:hover{background:var(--bg-4)}.scroll::-webkit-scrollbar-track{background:transparent}.code{font-family:var(--font-mono);font-size:12.5px;line-height:1.6;color:var(--text-1);background:#0a0c0f;border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;overflow-x:auto;white-space:pre}.code .k{color:#a9afff;color:oklch(.78 .12 280)}.code .s{color:#fac053}.code .c{color:var(--text-3);font-style:italic}.code .n{color:#76e2e7}.code .p{color:var(--text-2)}.code .f{color:var(--acc)}@keyframes blink{50%{opacity:0}}.caret{display:inline-block;width:8px;height:1em;background:var(--acc);vertical-align:-2px;animation:blink 1s steps(1) infinite;margin-left:2px}.dot{width:7px;height:7px;border-radius:50%;display:inline-block}.dot.live{background:var(--acc);box-shadow:0 0 0 3px color-mix(in oklch,var(--acc) 25%,transparent)}.dot.run{background:var(--warn)}.dot.idle{background:var(--text-4)}.dot.ok{background:var(--ok)}.dot.err{background:var(--err)}.frame{width:100%;height:100vh;background:var(--bg-0);color:var(--text-1);display:flex;flex-direction:column;overflow:hidden}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(80%)}}button,textarea,input{font-family:inherit}
