:root{--surface-0:#fafaf7;--surface-1:#fff;--surface-2:#f4f3ee;--surface-3:#1a1a1a;--ink-900:#171717;--ink-700:#404040;--ink-500:#737373;--ink-300:#d4d4d4;--ink-inverse:#fafaf7;--border:#e5e5e0;--border-strong:#a3a3a3;--accent:#ff6b35;--accent-hover:#e55a2b;--accent-soft:#ffe5d9;--accent-ink:#1a1a2e;--success:#0e7c3a;--success-soft:#dcfce7;--success-hover:#0a6630;--warning:#b45309;--warning-soft:#fef3c7;--warning-hover:#93420a;--danger:#b91c1c;--danger-soft:#fee2e2;--danger-hover:#991313;--info:#1e40af;--info-soft:#dbeafe;--info-hover:#173296;--font-body:var(--font-display);--font-sans:var(--font-body);--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--text-4xl:3rem;--leading-tight:1.15;--leading-snug:1.35;--leading-normal:1.5;--leading-loose:1.7;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-full:9999px;--radius:var(--radius-sm);--shadow-sm:0 1px 2px #0000000a, 0 1px 1px #00000005;--shadow-md:0 2px 4px #0000000a, 0 4px 8px #0000000a;--shadow-lg:0 4px 8px #0000000a, 0 12px 24px #0000000f;--duration-fast:.12s;--duration-base:.22s;--duration-slow:.4s;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--transition:var(--duration-fast) var(--ease-out);--z-dropdown:100;--z-sticky:200;--z-modal-backdrop:300;--z-modal:400;--z-toast:500;--z-tooltip:600;--max-content:1200px;--max-reading:720px;--max-form:640px;--side-pad:clamp(16px, 4vw, 48px)}[data-theme=dark]{--surface-0:#1a1a1a;--surface-1:#2a2a2a;--surface-2:#1f1f1f;--ink-900:#fafaf7;--ink-700:#d4d4d4;--ink-500:#a3a3a3;--border:#404040;--accent-ink:#fafaf7}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{font-family:var(--font-body);background:var(--surface-0);color:var(--ink-900);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}img,svg,video{max-width:100%;height:auto;display:block}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--ink-700);letter-spacing:.01em;font-size:13px;font-weight:600}.form-input{border:1.5px solid var(--border);border-radius:var(--radius);font-family:var(--font-body);color:var(--ink-900);background:var(--surface-1);transition:border-color var(--transition), box-shadow var(--transition);outline:none;padding:10px 14px;font-size:15px}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-input::placeholder{color:var(--ink-300)}.form-input-grow{field-sizing:content;align-self:flex-start;min-width:120px;max-width:100%}.form-error{color:var(--danger);align-items:center;gap:4px;font-size:12px;display:flex}.btn{border-radius:var(--radius);font-family:var(--font-body);cursor:pointer;transition:background var(--transition), transform 80ms ease, box-shadow var(--transition);border:none;outline:none;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:15px;font-weight:600;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-ghost{color:var(--ink-700);border:1.5px solid var(--border);background:0 0}.btn-ghost:hover{background:var(--surface-2)}.alert{border-radius:var(--radius);border:1px solid #0000;padding:12px 16px;font-size:14px}.alert-error{background:var(--danger-soft);color:var(--danger);border-color:#fecaca}.alert-success{background:var(--success-soft);color:var(--success);border-color:#a7f3d0}.divider{color:var(--ink-500);align-items:center;gap:16px;font-size:13px;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}