:root{--bg:#F8FAFC;--surface:#FFFFFF;--surface-alt:#F1F5F9;--text:#0F172A;--text-muted:#64748B;--border:rgba(15,23,42,0.08);--brand-default:#6366F1;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--shadow-sm:0 2px 8px rgba(0,0,0,0.06);--shadow-md:0 4px 16px rgba(0,0,0,0.08);--shadow-lg:0 8px 24px rgba(0,0,0,0.12)}[data-theme=dark]{--bg:#111214;--surface:#1E1F22;--surface-alt:#2B2D31;--text:#F2F3F5;--text-muted:#949BA4;--border:rgba(255,255,255,0.08);--shadow-sm:0 4px 12px rgba(0,0,0,0.3);--shadow-md:0 8px 32px rgba(0,0,0,0.5)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#111214;--surface:#1E1F22;--surface-alt:#2B2D31;--text:#F2F3F5;--text-muted:#949BA4;--border:rgba(255,255,255,0.08);--shadow-sm:0 4px 12px rgba(0,0,0,0.3);--shadow-md:0 8px 32px rgba(0,0,0,0.5)}}*{box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased}body{background-color:var(--bg);color:var(--text);transition:background-color .3s ease,color .3s ease}input::placeholder,textarea::placeholder{color:#8888A0}::-webkit-scrollbar{width:0;background:transparent}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;appearance:textfield}@keyframes burst{0%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(0);opacity:0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes pop{0%{transform:scale(.7);opacity:0}50%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}@keyframes popIn{0%{transform:scale(0);opacity:0}60%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}@keyframes boxEnter{0%{opacity:0;transform:scale(.3) translateY(30px)}60%{transform:scale(1.08) translateY(-5px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes boxWiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}@keyframes boxShrink{0%{transform:scale(1);opacity:1}to{transform:scale(.5);opacity:0}}@keyframes expandGlow{0%{transform:scale(.5);opacity:.9}to{transform:scale(2.5);opacity:0}}@keyframes sparkOut{0%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(calc(-50% + var(--sx)),calc(-50% + var(--sy))) scale(0);opacity:0}}@keyframes cardMorph{0%{opacity:0;transform:scale(.2) rotateY(90deg);filter:blur(10px)}40%{opacity:1;transform:scale(1.06) rotateY(0);filter:blur(2px)}70%{transform:scale(.97);filter:blur(0)}to{transform:scale(1);filter:blur(0)}}@keyframes celebrateText{0%{transform:scale(.5) rotate(-3deg);opacity:0}50%{transform:scale(1.1) rotate(1deg)}to{transform:scale(1) rotate(0);opacity:1}}@keyframes floatY{0%{transform:translateY(0)}to{transform:translateY(-16px)}}@keyframes floatSlow{0%{transform:translateY(0) rotate(0deg)}to{transform:translateY(-8px) rotate(1deg)}}@keyframes waveHand{0%,to{transform:rotate(0)}15%{transform:rotate(14deg)}30%{transform:rotate(-8deg)}45%{transform:rotate(14deg)}60%{transform:rotate(-4deg)}75%{transform:rotate(10deg)}}@keyframes emojiDrop{0%{transform:translateY(0) rotate(0) scale(1);opacity:1}70%{opacity:1}to{transform:translateY(600px) rotate(2turn) scale(.3);opacity:0}}@keyframes progressShine{0%{left:-30%}to{left:130%}}@keyframes tapHint{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes pulseNext{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}@keyframes slideIn{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes stampBounce{0%{transform:scale(2.5) rotate(-15deg);opacity:0}40%{transform:scale(1) rotate(5deg);opacity:1}60%{transform:scale(1.2) rotate(-3deg)}to{transform:scale(1) rotate(0deg);opacity:1}}@keyframes stampImpact{0%{transform:scale(1)}50%{transform:scale(.97) translateY(2px)}to{transform:scale(1) translateY(0)}}@keyframes rippleOut{0%{transform:scale(.5);opacity:.8}to{transform:scale(3);opacity:0}}@keyframes shimmer{0%{transform:translateX(-150%)}to{transform:translateX(150%)}}@keyframes cardPulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes glow{0%{box-shadow:0 0 20px rgba(255,215,0,.5)}50%{box-shadow:0 0 50px rgba(255,215,0,.8)}to{box-shadow:0 0 20px rgba(255,215,0,.5)}}@keyframes unlockedText{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.2);opacity:1}to{transform:scale(1);opacity:1}}@keyframes drift{0%{transform:translate(0) rotate(0deg)}33%{transform:translate(15px,-10px) rotate(120deg)}66%{transform:translate(-10px,8px) rotate(240deg)}to{transform:translate(0) rotate(1turn)}}@keyframes confettiBurst{0%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(0);opacity:0}}@keyframes logoReveal{0%{stroke-dashoffset:200}to{stroke-dashoffset:0}}@keyframes stampPop{0%{transform:scale(0);opacity:0}50%{transform:scale(1.3)}to{transform:scale(1);opacity:1}}@keyframes toastIn{0%{transform:translateX(-50%) translateY(10px) scale(.95);opacity:0}to{transform:translateX(-50%) translateY(0) scale(1);opacity:1}}@keyframes giftShake{0%,to{transform:rotate(0deg) scale(1)}10%{transform:rotate(-12deg) scale(1.05)}20%{transform:rotate(12deg) scale(1.1)}30%{transform:rotate(-14deg) scale(1.12)}40%{transform:rotate(14deg) scale(1.14)}50%{transform:rotate(-10deg) scale(1.12)}60%{transform:rotate(10deg) scale(1.1)}70%{transform:rotate(-8deg) scale(1.05)}80%{transform:rotate(6deg) scale(1.02)}90%{transform:rotate(-3deg) scale(1)}}@keyframes giftGlow{0%,to{box-shadow:0 0 20px rgba(255,200,50,.3)}50%{box-shadow:0 0 40px rgba(255,200,50,.6),0 0 80px rgba(255,150,50,.3)}}@keyframes revealScale{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}@keyframes confettiFall{0%{transform:translateY(-20px) rotate(0deg);opacity:1}to{transform:translateY(60vh) rotate(2turn);opacity:0}}@keyframes tapHintPulse{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}