/* Short, composited interface motion. Game/result animations keep their timing. */
:root{--ui-ease:cubic-bezier(.2,.7,.2,1);--ui-fast:160ms;--ui-enter:220ms}
html{scroll-behavior:smooth}
#view-upgrade .skin,#view-upgrade .skin.sel,#view-upgrade .skin:not(.sel){animation:none;transition:border-color var(--ui-fast) ease,box-shadow var(--ui-fast) ease,transform var(--ui-fast) var(--ui-ease)}
#view-upgrade .skin .check{animation:ui-check-in 140ms var(--ui-ease) both}
.modal:not(#storeModal):not(.hidden){animation:ui-fade-in var(--ui-fast) ease both}
.modal:not(#storeModal):not(.hidden)>.mbox{animation:ui-sheet-in var(--ui-enter) var(--ui-ease) both}
body.unified-site dialog[open]{animation:ui-sheet-in var(--ui-enter) var(--ui-ease) both}
body.unified-site dialog[open]::backdrop{animation:ui-fade-in var(--ui-fast) ease both}
#storeModal:not(.store-closing) .store-window{animation:ui-sheet-in var(--ui-enter) var(--ui-ease) both}
#storeModal .store-selected-card,#storeCartPanel .cart-product{animation:ui-sheet-in 160ms var(--ui-ease) both}
#storeModal .store-window-heading,#storeModal .store-wallet,#storeModal .store-cart-toggle,#storeModal .store-window-footer{animation:none}
.top button,.mobile-nav button,.mobile-menu-grid button,.ref-page button,.profile-tabs button,.wallet-dialog button,.settings-tabs button{transition:background-color var(--ui-fast) ease,color var(--ui-fast) ease,border-color var(--ui-fast) ease,box-shadow var(--ui-fast) ease}
.mobile-upgrade-return:not([hidden]){animation:ui-sheet-in 180ms var(--ui-ease) both}
/* A moving full-screen background texture repaints even when nothing is used. */
body.unified-site::after,#giveawayDialog::after{animation:none!important}
.ambient-dust{animation:none!important}
#storeModal .store-cursor-light i{will-change:auto}
#storeModal .store-cursor-light.is-active i{will-change:transform}
.wheel.spinning #needle{will-change:transform}
body.mobile-overlay-open>.ambient-scene,body.mobile-overlay-open>.ambient-scene *,body.mobile-overlay-open>.ambient-scene::before,body.mobile-overlay-open>.ambient-scene::after,
body.ui-tab-hidden>.ambient-scene,body.ui-tab-hidden>.ambient-scene *,body.ui-tab-hidden>.ambient-scene::before,body.ui-tab-hidden>.ambient-scene::after{animation-play-state:paused!important}
body.mobile-overlay-open::before{transition:none}
/* Keep each entry short; do not animate layout or SVG stroke offsets twice. */
#gaugeArc,#gaugeArcAccent{transition:opacity var(--ui-fast) ease}
#storeCartPanel:not(.hidden) .cart-dialog{animation:ui-sheet-in var(--ui-enter) var(--ui-ease) both}
.notification-panel,.profile-content-panel>.grid:not(.hidden){animation:ui-sheet-in var(--ui-enter) var(--ui-ease) both}
.result{transition:color var(--ui-fast) ease,opacity var(--ui-fast) ease}
.bonus-wheel.is-spinning :is(.bonus-orbit,.bonus-slot-content){will-change:transform}
@supports(transition-behavior:allow-discrete){
 body.unified-site dialog{opacity:0;transition:opacity var(--ui-fast) ease,display var(--ui-fast) allow-discrete,overlay var(--ui-fast) allow-discrete}
 body.unified-site dialog[open]{opacity:1}
 body.unified-site dialog::backdrop{opacity:0;transition:opacity var(--ui-fast) ease,display var(--ui-fast) allow-discrete,overlay var(--ui-fast) allow-discrete}
 body.unified-site dialog[open]::backdrop{opacity:1}
 body.unified-site dialog:not([open]),body.unified-site dialog:not([open])::backdrop{pointer-events:none}
 .modal:not(#storeModal),.cart-modal{opacity:1;transition:opacity var(--ui-fast) ease,display var(--ui-fast) allow-discrete}
 .modal.hidden:not(#storeModal),.cart-modal.hidden{opacity:0;pointer-events:none}
}
body.ui-tab-hidden *,body.ui-tab-hidden *::before,body.ui-tab-hidden *::after{animation-play-state:paused!important}
body.mobile-overlay-open #appLayout *,body.mobile-overlay-open #appLayout *::before,body.mobile-overlay-open #appLayout *::after{animation-play-state:paused!important}
/* Static dashed lightning keeps the atmosphere without repainting SVG paths. */
#storeModal .store-bolt-run{animation:none;opacity:0}
@media(hover:hover) and (pointer:fine){
 .store-card,.profile-item,.ref-prize{transition:transform var(--ui-fast) var(--ui-ease),border-color var(--ui-fast) ease,background-color var(--ui-fast) ease}
}
@keyframes ui-fade-in{from{opacity:0}to{opacity:1}}
@keyframes ui-sheet-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes ui-check-in{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}
@media(hover:hover) and (pointer:fine){
 #view-upgrade .skin:hover{transform:translateY(-2px) scale(1)}
 #view-upgrade .skin:active{transform:translateY(0) scale(.985)}
}
@media(hover:none),(pointer:coarse){
 .ambient-scene::before,.ambient-orb,.ambient-beam{display:none}
 .ambient-scene::after{animation:none;transform:none}
 .top,.mobile-nav{backdrop-filter:none;-webkit-backdrop-filter:none}
 #storeModal,.modal:not(#storeModal),dialog::backdrop{backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
 .cart-modal{backdrop-filter:none;-webkit-backdrop-filter:none}
 #view-upgrade .skin:hover{transform:none}
 #view-upgrade .skin:active{transform:scale(.985)}
 .ref-prize-art img,.ref-stat-icon,.ref-card-heading>.ref-heading-icon{filter:none}
 .win-celebration,.loss-celebration{backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
 .win-celebration-item,.win-celebration-item *,.loss-shard,.loss-shard *{filter:none!important}
 .store-cursor-light,.store-atmosphere:after{display:none}
 .profile-item:hover,.store-card:hover,.ref-prize:hover{transform:none}
}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}
 .modal:not(#storeModal):not(.hidden),.modal:not(#storeModal):not(.hidden)>.mbox,dialog[open],dialog[open]::backdrop,
 #storeModal:not(.store-closing) .store-window,#storeModal .store-selected-card,#storeCartPanel .cart-product,
 .mobile-upgrade-return:not([hidden]),#view-upgrade .skin .check{animation:none!important}
 #view-upgrade .skin,.top button,.mobile-nav button,.mobile-menu-grid button,.ref-page button,.wallet-dialog button{transition:none!important}
 #view-upgrade .skin:active,#view-upgrade .skin:hover{transform:none}
 .win-celebration *,.loss-celebration *{animation:none!important;transition:none!important}
 .win-celebration,.loss-celebration{transition:none!important}
 .win-celebration.show :is(.win-celebration-item,.win-celebration-content>*,.crafted-prize,.scene-prize),
 .loss-celebration.show :is(.loss-object,.loss-fragments,.loss-shard,.loss-item-name){opacity:1;transform:none;filter:none}
 .notification-panel,.profile-content-panel>.grid:not(.hidden),#storeCartPanel:not(.hidden) .cart-dialog{animation:none!important}
 body.unified-site dialog,body.unified-site dialog::backdrop,.modal:not(#storeModal),.cart-modal{transition:none!important}
}
