:root{--c-bg: oklch(.985 .005 90);--c-bg-alt: oklch(.97 .01 80);--c-ink: oklch(.16 .02 280);--c-ink-soft: oklch(.45 .02 280);--c-line: oklch(.9 .01 280);--c-primary: #FF2D87;--c-accent: #FF6B1A;--c-secondary: #00D4FF;--c-lime: #C6FF3D;--c-violet: #8B5CF6;--radius: 24px;--font-body: "General Sans", system-ui, sans-serif;--font-display: "Clash Display", "General Sans", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--c-bg);color:var(--c-ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}body{overflow-x:hidden}button,input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}.grain:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9999;background-image:url("data:image/svg+xml;utf8,<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/></svg>");opacity:.08;mix-blend-mode:multiply}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--c-ink);border-radius:999px}@keyframes marquee-x{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes spin-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pulse-ring{0%{transform:scale(.95);opacity:.8}to{transform:scale(1.4);opacity:0}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes blink{50%{opacity:.2}}@keyframes pop-in{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slide-up{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-from-top{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.reveal{opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1)}.reveal.in{opacity:1;transform:translateY(0)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--c-primary);outline-offset:3px}::selection{background:var(--c-primary);color:#fff}
