*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--white: #ffffff;--off-white: #f8f8f6;--surface: #f2f2ef;--border: #e8e8e4;--text-primary: #111110;--text-secondary: #6b6b68;--text-muted: #a8a8a4;--accent: #2563eb;--accent-light: #eff6ff;--accent-muted: #bfdbfe;--success: #16a34a;--success-light: #f0fdf4;--warning: #d97706;--warning-light: #fffbeb;--danger: #dc2626;--danger-light: #fef2f2;--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.08), 0 2px 4px rgba(0,0,0,.04);--shadow-lg: 0 12px 32px rgba(0,0,0,.1), 0 4px 8px rgba(0,0,0,.04);--radius-sm: 10px;--radius-md: 16px;--radius-lg: 24px;--radius-full: 9999px;--nav-height: 72px;--font-sans: "DM Sans", system-ui, sans-serif;--font-serif: "DM Serif Display", Georgia, serif}:root[data-theme=dark]{--white: #16181d;--off-white: #0e1116;--surface: #1c222b;--border: #2b3440;--text-primary: #f3f4f6;--text-secondary: #c0c7d1;--text-muted: #8a94a3;--accent: #60a5fa;--accent-light: #172554;--accent-muted: #1d4ed8;--success: #4ade80;--success-light: #12301e;--warning: #fbbf24;--warning-light: #3a2a0a;--danger: #f87171;--danger-light: #3b1111;--shadow-sm: 0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.25);--shadow-md: 0 4px 12px rgba(0,0,0,.35), 0 2px 4px rgba(0,0,0,.25);--shadow-lg: 0 12px 32px rgba(0,0,0,.45), 0 4px 8px rgba(0,0,0,.3)}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);background:var(--off-white);color:var(--text-primary);line-height:1.5;min-height:100dvh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100dvh;display:flex;flex-direction:column}button{font-family:var(--font-sans);cursor:pointer;border:none;background:none;-webkit-tap-highlight-color:transparent}input,textarea{font-family:var(--font-sans)}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}@keyframes pulse-ring{0%{transform:scale(1);opacity:.6}to{transform:scale(1.5);opacity:0}}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes wave{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.fade-in{animation:fade-in .3s ease forwards}.slide-up{animation:slide-up .4s ease forwards}
