:root{--color-bg:#fafaf7;--color-surface:#fff;--color-surface-muted:#f5f5f0;--color-surface-elevated:#fff;--color-border:#e5e7eb;--color-border-strong:#d1d5db;--color-text:#1b1f14;--color-text-muted:#6b7280;--color-text-subtle:#9ca3af;--color-text-inverted:#fff;--color-primary:#2ba84a;--color-primary-hover:#239139;--color-primary-active:#1b7a2e;--color-primary-fg:#fff;--color-primary-soft:#e8f6ec;--color-primary-soft-fg:#1f8838;--color-creator-accent:#7c3aed;--color-creator-accent-hover:#6d28d9;--color-creator-accent-soft:#ede9fe;--color-creator-accent-soft-fg:#5b21b6;--color-accent:#f4b400;--color-accent-soft:#fef3c7;--color-success-soft-bg:#d1fae5;--color-success-soft-fg:#065f46;--color-warning-soft-bg:#fef3c7;--color-warning-soft-fg:#92400e;--color-error-soft-bg:#fee2e2;--color-error-soft-fg:#b91c1c;--color-info-soft-bg:#dbeafe;--color-info-soft-fg:#1e40af;--color-focus:#7c3aed;--color-backdrop:rgba(27,31,20,.55);--shadow-xs:0 1px 2px 0 rgba(27,31,20,.04);--shadow-sm:0 1px 3px 0 rgba(27,31,20,.08),0 1px 2px 0 rgba(27,31,20,.04);--shadow-md:0 4px 6px -1px rgba(27,31,20,.08),0 2px 4px -2px rgba(27,31,20,.06);--shadow-lg:0 10px 15px -3px rgba(27,31,20,.1),0 4px 6px -4px rgba(27,31,20,.08)}*{box-sizing:border-box}*,body,html{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:14px}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:6px;border:3px solid var(--color-bg)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-subtle)}@keyframes ts-spin{to{transform:rotate(1turn)}}@keyframes ts-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ts-scale-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}