/*
 * ss-reveal: the site's only scroll-reveal (replaces AOS, 2026-09-27). Spec measured on highervisibility.com:
 * no content reveal at all, only a short opacity fade; UI transitions 150 ms. Policy (README-CS2.md
 * "Reveal/animation policy"): nothing is hidden by CSS alone. assets/js/ss-reveal.js adds .ss-rv only to elements
 * that are below the fold when it first looks, and adds .ss-rv-in when they enter the viewport: 180 ms opacity,
 * no translate, stagger 40 ms for at most 3 items. Above the fold never animates; no JS = everything visible.
 * This file is also inlined in <head> (assets/css/critical/aos-core.css is a copy - keep them identical).
 */
/* .01, not 0: Chrome stops tracking an opacity:0 element for layout-shift, so revealing it (after scrolling) reported
   its stale pre-scroll rect as a shift - CLS 0.02-0.08 on case pages. .01 is invisible and keeps it tracked. */
.ss-rv{opacity:.01}
.ss-rv.ss-rv-in{opacity:1;transition:opacity .18s cubic-bezier(.2,0,0,1)}
/* legacy AOS attributes carry no hidden state and no transform any more */
[data-aos][data-aos]{transform:none}
/* UI micro-transitions: quick, like the reference (button hovers were .5s) */
.btn{transition-duration:.15s}
/* "Book Meeting" side tab (footer.php): present in its final spot on load - it used to rotate/slide in over .5s
   (transition:all .5s picked up the rotate(-90deg) when the stylesheet applied). Mike 2026-09-27. */
.sticky-side.sidePop{transition:none}
@media (prefers-reduced-motion:reduce){.ss-rv{opacity:1!important;transition:none!important}}
@media print{.ss-rv{opacity:1!important}}
