/* Appearance animations. Each effect sets its starting state; html.hps-reveal-ready (set in <head>, never with
   reduced motion) holds blocks there until appearance.js reveals them. Stagger animates the block's items instead. */
[data-reveal] { --hps-reveal-duration: .8s; --hps-reveal-ease: cubic-bezier(.22,1,.36,1); --hps-reveal-step: 90ms; }
[data-reveal-speed="fast"] { --hps-reveal-duration: .45s; --hps-reveal-step: 60ms; }
[data-reveal-speed="slow"] { --hps-reveal-duration: 1.3s; --hps-reveal-step: 140ms; }
[data-reveal="fade"] { --hps-reveal-from-opacity: 0; }
[data-reveal="slide"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-transform: translate3d(0, 40px, 0); }
[data-reveal="slide-down"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-transform: translate3d(0, -40px, 0); }
[data-reveal="slide-left"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-transform: translate3d(56px, 0, 0); }
[data-reveal="slide-right"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-transform: translate3d(-56px, 0, 0); }
[data-reveal="zoom"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-transform: scale(.88); }
[data-reveal="zoom-out"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-transform: scale(1.12); }
[data-reveal="blur"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-filter: blur(18px); }
[data-reveal="tilt"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-transform: perspective(900px) translate3d(0, 48px, 0) rotateX(22deg); }
[data-reveal="pop"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-transform: scale(.6); --hps-reveal-ease: cubic-bezier(.34,1.56,.64,1); }
[data-reveal="spin"] { --hps-reveal-from-opacity: 0; --hps-reveal-from-transform: rotate(-10deg) scale(.86); }
[data-reveal="wipe"] { --hps-reveal-from-clip: inset(100% 0 0 0); }
[data-reveal="wipe-side"] { --hps-reveal-from-clip: inset(0 100% 0 0); }
[data-reveal="open"] { --hps-reveal-from-clip: inset(18% 12% round 24px); --hps-reveal-duration: 1.1s; }

.hps-reveal-ready [data-reveal]:not([data-reveal="none"],[data-reveal="cinematic"],[data-reveal-stagger],.hps-reveal-visible),
.hps-reveal-ready [data-reveal][data-reveal-stagger]:not(.hps-reveal-visible) .hps-reveal-item {
    opacity: var(--hps-reveal-from-opacity, 1);
    transform: var(--hps-reveal-from-transform, none);
    filter: var(--hps-reveal-from-filter, none);
    clip-path: var(--hps-reveal-from-clip, none);
}
/* Transitions apply only while revealing, so blocks keep their own hover transitions afterwards. */
[data-reveal].hps-reveal-armed:not([data-reveal-stagger]),
[data-reveal][data-reveal-stagger].hps-reveal-armed .hps-reveal-item {
    transition-property: opacity, transform, filter, clip-path;
    transition-duration: var(--hps-reveal-duration);
    transition-timing-function: var(--hps-reveal-ease);
    transition-delay: calc(var(--hps-reveal-delay, 0ms) + var(--hps-reveal-index, 0) * var(--hps-reveal-step));
}
[data-reveal="tilt"]:not([data-reveal-stagger]), [data-reveal="tilt"] .hps-reveal-item { transform-origin: 50% 100%; }
/* If the script never runs, show everything after a moment rather than leaving it hidden. */
.hps-reveal-ready [data-reveal]:not(.hps-reveal-armed,.hps-reveal-visible) { animation: hps-reveal-failsafe 0s 3s forwards; }
@keyframes hps-reveal-failsafe { to { opacity: 1; transform: none; filter: none; clip-path: none; } }
