*,*:before,*:after{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}:root{--safe-bottom: env(safe-area-inset-bottom, 0px)}html,body{height:100%;overflow:hidden;background:#f0f4f8}#root{width:100%;max-width:420px;height:100vh;height:100dvh;max-height:900px;margin:0 auto;position:relative;overflow:hidden;font-family:Nunito,-apple-system,PingFang SC,Helvetica Neue,sans-serif;background:#f0f4f8}.app-shell{display:flex;flex-direction:column;min-height:0}.app-content{min-height:0;padding-bottom:calc(96px + var(--safe-bottom))}::-webkit-scrollbar{width:0}input{font-family:inherit}input::placeholder{color:#9aaec4}input:focus{outline:none}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}button{cursor:pointer;border:none;background:none;font-family:inherit}.scroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.logout-confirm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:max(24px,env(safe-area-inset-top)) 30px max(24px,env(safe-area-inset-bottom));background:#0d1f2d73;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);animation:logoutBackdropIn .18s ease-out both;overscroll-behavior:contain}.logout-confirm-dialog{transform-origin:center;animation:logoutDialogIn .26s cubic-bezier(.22,1,.36,1) both;box-shadow:0 20px 55px #0d1f2d3d}@keyframes logoutBackdropIn{0%{opacity:0}to{opacity:1}}@keyframes logoutDialogIn{0%{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion: reduce){.logout-confirm-backdrop,.logout-confirm-dialog{animation-duration:1ms}}.card{background:#fff;border-radius:20px;box-shadow:0 2px 14px #4a90d914,0 1px 4px #0000000a}.card-sm{background:#fff;border-radius:16px;box-shadow:0 1px 8px #4a90d912,0 1px 2px #00000008}.card-lift{box-shadow:0 6px 28px #4a90d924,0 2px 8px #0000000f}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes ticker{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes floatY{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes popIn{0%{transform:scale(.85);opacity:0}70%{transform:scale(1.04)}to{transform:scale(1);opacity:1}}@keyframes orbitSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes orbitSpinRev{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}@keyframes brandFloat{0%,to{transform:translate(0);opacity:var(--brand-op-min, .04)}50%{transform:translate(var(--brand-dx, 0px),var(--brand-dy, 0px));opacity:var(--brand-op-max, .48)}}@keyframes pulseDot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.3);opacity:.7}}@keyframes rewardFloat{0%{opacity:0;transform:translate(-50%,8px) scale(.85)}18%{opacity:1;transform:translate(-50%,-8px) scale(1.08)}to{opacity:0;transform:translate(-50%,-78px) scale(1)}}@keyframes numberBounce{0%,to{transform:scale(1)}35%{transform:scale(1.22);color:#e8902a}65%{transform:scale(.98)}}@keyframes ringExplode{0%{opacity:.7;transform:translate(-50%,-50%) scale(.4)}to{opacity:0;transform:translate(-50%,-50%) scale(2.2)}}@keyframes confetti{0%{opacity:1;transform:translate(0) rotate(0)}to{opacity:0;transform:translate(var(--cx,0px),var(--cy,-60px)) rotate(var(--cr,360deg))}}@keyframes giftShake{0%,to{transform:rotate(0) scale(1)}15%{transform:rotate(-6deg) scale(1.04)}30%{transform:rotate(6deg) scale(1.04)}45%{transform:rotate(-4deg) scale(1.02)}60%{transform:rotate(4deg) scale(1.02)}75%{transform:rotate(-2deg) scale(1)}}@keyframes giftLid{0%{transform:translate(-50%) rotate(0);opacity:1}to{transform:translate(-50%,-100px) rotate(-22deg);opacity:0}}@keyframes prizeReveal{0%{opacity:0;transform:scale(.4) translateY(20px)}60%{opacity:1;transform:scale(1.12) translateY(-6px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes luckySlide{0%{opacity:0;transform:translate(-50%) translateY(-30px) scale(.7)}18%{opacity:1;transform:translate(-50%) translateY(0) scale(1.08)}78%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-10px) scale(.9)}}@keyframes goldGlow{0%,to{box-shadow:0 4px 18px #e8902a8c,0 0 #e8902a99}50%{box-shadow:0 4px 28px #e8902ad9,0 0 0 14px #e8902a00}}@keyframes gridFlash{0%,to{background:var(--grid-bg, #fff);transform:scale(1)}50%{background:#ffe9bd;transform:scale(1.06)}}@keyframes modalIn{0%{opacity:0;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px)}to{opacity:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}}@keyframes pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:1}}@keyframes nudgeRight{0%,to{transform:translate(0);opacity:.55}50%{transform:translate(3px);opacity:1}}.fade-up{animation:fadeUp .32s cubic-bezier(.22,1,.36,1) both}.float{animation:floatY 3s ease-in-out infinite}.pop-in{animation:popIn .4s cubic-bezier(.34,1.56,.64,1) both}@keyframes badgeFloat{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.04)}}@keyframes badgeGlow{0%,to{opacity:.35;transform:translate(-50%,-50%) scale(.92)}50%{opacity:.7;transform:translate(-50%,-50%) scale(1.12)}}.badge-anim{animation:badgeFloat 3.2s ease-in-out infinite;will-change:transform}.badge-halo{position:relative;display:inline-block}.badge-halo:before{content:"";position:absolute;left:50%;top:50%;width:70%;height:70%;border-radius:50%;background:radial-gradient(circle,var(--halo, rgba(232,144,42,.55)) 0%,rgba(255,255,255,0) 70%);transform:translate(-50%,-50%);z-index:0;pointer-events:none;animation:badgeGlow 3.2s ease-in-out infinite}.badge-halo>*{position:relative;z-index:1}.ticker-row{overflow:hidden;white-space:nowrap}.ticker-inner{display:inline-flex;animation:ticker 32s linear infinite;-webkit-animation:ticker 32s linear infinite;transform:translateZ(0);-webkit-transform:translate3d(0,0,0);will-change:transform}@keyframes cardBadgeBreath{0%,to{opacity:.07;transform:scale(1)}50%{opacity:.3;transform:scale(1.07)}}
