/* KKB — motion pre-hide layer (front page only). Loads AFTER components.css.

   Reveal "from" states apply ONLY under html.kkb-anim, which the head guard adds
   solely when JS is on AND prefers-reduced-motion is OFF. So with no JS, or under
   reduced motion, or if this file fails to load, every element is fully visible and
   correctly laid out — the animation is pure enhancement, never a gate on content.
   A head watchdog also removes .kkb-anim if motion.js never marks itself ready.

   will-change is set/cleared per-tween in motion.js (never parked on many nodes here). */

.kkb-anim [data-reveal],
.kkb-anim [data-reveal-group] > * { opacity: 0; }

.kkb-anim [data-reveal]            { transform: translateY(24px); }
.kkb-anim [data-reveal="fade"]     { transform: none; }
.kkb-anim [data-reveal="scale"]    { transform: scale(0.96); }
.kkb-anim [data-reveal="left"]     { transform: translateX(-16px); }
.kkb-anim [data-reveal="right"]    { transform: translateX(16px); }
.kkb-anim [data-reveal-group] > *  { transform: translateY(20px); }
