/* Scroll-triggered motion: transform/opacity only, no animation library. */
.reveal-ready{opacity:0;transform:translateY(18px);transition:opacity 1.6s ease,transform 1.6s cubic-bezier(.2,.7,.2,1)}
.reveal-ready.reveal-visible{opacity:1;transform:translateY(0)}
.reveal-ready em,.hero-badges.reveal-ready strong{position:relative;isolation:isolate}
.reveal-ready em::after,.hero-badges.reveal-ready strong::after{content:'';position:absolute;inset:-.22em -.3em;pointer-events:none;border-radius:.2em;background:radial-gradient(ellipse,#fff4a8 0%,#ffdc36b3 38%,#ffdc3640 62%,transparent 78%);opacity:0;z-index:-1}
.reveal-visible em::after,.hero-badges.reveal-visible strong::after{animation:headline-glow 2s ease-out .25s both}
@keyframes headline-glow{0%{opacity:0;transform:scale(.94)}30%,50%{opacity:1}100%{opacity:0;transform:scale(1.16)}}
@media(max-width:700px){.reveal-ready{transform:translateY(12px);transition-duration:1.6s}.reveal-ready.reveal-visible{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.reveal-ready{opacity:1!important;transform:none!important;transition:none!important}.reveal-ready em::after,.hero-badges.reveal-ready strong::after{animation:none!important;display:none}}
@media print{.reveal-ready{opacity:1!important;transform:none!important}}

/* Inline card headings can wrap: glow follows glyphs instead of a spanning box. */
.reason-body h3.reveal-ready em::after{display:none}
.reason-body h3.reveal-visible em{animation:card-text-glow 2s ease-out .25s both}
@keyframes card-text-glow{0%,100%{text-shadow:0 0 0 transparent}30%,50%{text-shadow:0 0 5px #ffe477,0 0 12px #ffdc36b3,0 0 20px #ffdc3659}}
@media(prefers-reduced-motion:reduce){.reason-body h3.reveal-visible em{animation:none;text-shadow:none}}
