/* Hidden "before" states are applied only when JS + motion are available (html.js:not(.no-motion)).
   Without JS, or with prefers-reduced-motion, everything is simply visible. */
html.js:not(.no-motion) .img-reveal{clip-path:inset(0 0 100% 0)}
html.js:not(.no-motion) .img-reveal[data-dir=left]{clip-path:inset(0 100% 0 0)}
html.js:not(.no-motion) .img-reveal[data-dir=right]{clip-path:inset(0 0 0 100%)}
html.js:not(.no-motion) .line>span{opacity:0}
html.js:not(.no-motion) [data-fade]{opacity:0}
html.js:not(.no-motion) .orn::before,html.js:not(.no-motion) .orn::after{transform:scaleX(0)}
html.js:not(.no-motion) .orn.is-in::before,html.js:not(.no-motion) .orn.is-in::after{transform:none;transition:transform 1.4s var(--ease)}
html.js:not(.no-motion) .img-reveal.is-in{clip-path:none}
html.js:not(.no-motion) .hero__media{clip-path:inset(0 0 100% 0)}
.img-reveal{will-change:clip-path}
.sw-wrap{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.1em;margin-bottom:-.1em}
.sw-wrap>span{display:inline-block}
html.js:not(.no-motion) .sw-wrap>span{opacity:0}
.wish-btn.pop svg{animation:pop .5s var(--ease)}
@keyframes pop{40%{transform:scale(1.35)}100%{transform:scale(1)}}
.shake{animation:shake .4s}
@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.no-motion .announce__track{animation:none}
@media (prefers-reduced-motion:reduce){
  .announce__track{animation:none}
  *{scroll-behavior:auto!important}
  .p-card__media img,.cat img,.btn::before{transition-duration:.01ms!important}
}
html.js:not(.no-motion) .hero__media.is-in{clip-path:none}
