/* The JS controller owns entrances; decorative scenes retain their own motion. */
html.motion-ready #main :is(.post,.live-post,.stat,.stat strong,.fx-word,.chip.active,.feed-tab.active,.saved-button.saved svg){animation:none!important}
html.motion-ready #main .feed-tab.active:after{animation:none}
html.motion-ready #main :is(.post,.product-row,.settings-card,.live-account){transition:box-shadow .24s ease,border-color .24s ease}
html.motion-ready #modal:not(.shimgil-auth):not(.story-dialog)[open],
html.motion-ready #modal:not(.shimgil-auth):not(.story-dialog) :is(.modal-brand,.modal-cover,.coupon,.modal-body>.primary,.modal-body>form){animation:none!important}
html.motion-ready #modal:not(.shimgil-auth):not(.story-dialog)::backdrop{animation:shimgil-soft-backdrop .18s ease-out}
html.motion-ready #modal.story-dialog .story-full>img{animation:none}
html.motion-ready .toast{transition:none}
@keyframes shimgil-soft-backdrop{from{opacity:.55}to{opacity:1}}
/* Cancelling WAAPI restores normal styles; CSS effects stop at the same boundary. */
html.motion-suspended *,html.motion-suspended *::before,html.motion-suspended *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(prefers-reduced-motion:reduce){html.motion-ready *,html.motion-ready *::before,html.motion-ready *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
