/* Premium motion layer — GPU-friendly and accessible */
body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(circle at 12% 18%,#4e72bc18 0 1px,transparent 2px),radial-gradient(circle at 78% 32%,#f4c64715 0 1px,transparent 2px),radial-gradient(circle at 45% 76%,#59d39b12 0 1px,transparent 2px);background-size:78px 78px,110px 110px,94px 94px;animation:starDrift 28s linear infinite}.view.active{animation:viewIn .38s cubic-bezier(.2,.75,.25,1) both}.hero{position:relative}.hero:after{content:"";position:absolute;left:-20%;top:-70%;width:290px;height:290px;border-radius:50%;background:#f4c6470c;filter:blur(35px);animation:heroGlow 6s ease-in-out infinite;pointer-events:none}.hero-title h1{background:linear-gradient(100deg,#fff 15%,#f4c647 48%,#fff 72%);background-size:230% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:titleShine 5s linear infinite}.live i{animation:livePulse 1.7s ease-out infinite}.card-item{isolation:isolate;transform:translateZ(0);transition:transform .25s ease,filter .25s ease}.card-item:before{content:"";position:absolute;z-index:2;inset:0 0 auto;height:calc(100% - 54px);border-radius:12px;pointer-events:none;background:linear-gradient(115deg,transparent 25%,#ffffff00 38%,#ffffff55 48%,#8edcff33 52%,transparent 64%);background-size:250% 100%;background-position:130% 0;mix-blend-mode:screen;transition:background-position .65s ease}.card-item:after{content:"";position:absolute;z-index:-1;inset:3px 5px 58px;border-radius:14px;background:linear-gradient(135deg,#5ca9ff44,#f4c64733,#e65cff30);filter:blur(14px);opacity:0;transition:opacity .3s}.card-item:hover,.card-item:active{transform:perspective(700px) rotateX(2deg) rotateY(-2deg) translateY(-5px) scale(1.015);filter:saturate(1.08)}.card-item:hover:before,.card-item:active:before{background-position:-40% 0}.card-item:hover:after,.card-item:active:after{opacity:.8}.card-item>img{transition:box-shadow .3s,filter .3s}.card-item:hover>img{box-shadow:0 20px 45px #0009,0 0 0 1px #ffffff2a}.set-tile,.set-list-item,.scan-cta,.tool-panel,.pokemon-wallet{transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}.set-tile:hover,.set-list-item:hover,.scan-cta:hover{transform:translateY(-3px);border-color:#f4c64766;box-shadow:0 14px 35px #05070c55}.primary-btn,.secondary-btn,.chip,.quick-tools button,.icon-btn{position:relative;overflow:hidden;transition:transform .18s ease,filter .18s ease,box-shadow .18s ease}.primary-btn:active,.secondary-btn:active,.chip:active,.quick-tools button:active,.icon-btn:active{transform:scale(.95)}.primary-btn:hover{box-shadow:0 8px 25px #f4c6473b;filter:brightness(1.06)}.brand-ball{animation:ballFloat 4s ease-in-out infinite;box-shadow:0 5px 16px #0006}.bottom-nav button.active span:not(.nav-scan span){filter:drop-shadow(0 0 7px #f4c647);animation:navPop .28s ease}.nav-scan span{animation:scanButtonGlow 2.8s ease-in-out infinite}.scan-frame i{filter:drop-shadow(0 0 5px #f4c647);animation:cornerPulse 1.8s ease-in-out infinite}.scan-frame i:nth-child(2){animation-delay:.2s}.scan-frame i:nth-child(3){animation-delay:.4s}.scan-frame i:nth-child(4){animation-delay:.6s}.level-orb,.coin{animation:badgeFloat 3.6s ease-in-out infinite}.league-badge>span{animation:badgeTurn 5s ease-in-out infinite;filter:drop-shadow(0 6px 8px #0006)}.achievement.unlocked{position:relative;overflow:hidden}.achievement.unlocked:after{content:"";position:absolute;inset:-80% -40%;background:linear-gradient(90deg,transparent,#f4c64726,transparent);transform:rotate(30deg);animation:achievementSweep 5s ease-in-out infinite}.chart-bar{transform-origin:bottom;animation:barGrow .65s cubic-bezier(.2,.8,.3,1) both}.toast.show{animation:toastBounce .35s cubic-bezier(.2,1.5,.5,1)}dialog[open]{animation:dialogIn .3s cubic-bezier(.2,.8,.3,1)}dialog[open]::backdrop{animation:fadeIn .25s ease}.detail-img{animation:imageReveal .4s ease}.set-symbol,.set-list-symbol{transition:transform .3s ease}.set-tile:hover .set-symbol,.set-list-item:hover .set-list-symbol{transform:rotate(-5deg) scale(1.08)}
@keyframes viewIn{from{opacity:0;transform:translateY(12px) scale(.992)}to{opacity:1;transform:none}}@keyframes starDrift{to{background-position:78px 78px,-110px 110px,94px -94px}}@keyframes heroGlow{50%{transform:translate(50px,30px) scale(1.2);opacity:.55}}@keyframes titleShine{to{background-position:-230% center}}@keyframes livePulse{0%{box-shadow:0 0 0 0 #59d39b99}70%{box-shadow:0 0 0 7px #59d39b00}100%{box-shadow:0 0 0 0 #59d39b00}}@keyframes ballFloat{50%{transform:translateY(-3px) rotate(5deg)}}@keyframes navPop{50%{transform:scale(1.2)}}@keyframes scanButtonGlow{50%{box-shadow:0 7px 32px #f4c64788;transform:translateY(-2px)}}@keyframes cornerPulse{50%{opacity:.45}}@keyframes badgeFloat{50%{transform:translateY(-3px)}}@keyframes badgeTurn{50%{transform:perspective(100px) rotateY(12deg) scale(1.04)}}@keyframes achievementSweep{0%,65%{transform:translateX(-100%) rotate(30deg)}100%{transform:translateX(100%) rotate(30deg)}}@keyframes barGrow{from{transform:scaleY(0)}}@keyframes toastBounce{from{transform:translate(-50%,12px) scale(.85)}}@keyframes dialogIn{from{opacity:0;transform:translateY(18px) scale(.96)}}@keyframes fadeIn{from{opacity:0}}@keyframes imageReveal{from{opacity:0;filter:blur(8px);transform:scale(.97)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.card-item:hover,.card-item:active{transform:none}}
