/* ──────────────────────────────────────────────────────────────
   Generic scroll-reveal for content pages (added 2026-06-09)

   A subtle fade + slide-up as content blocks enter the viewport,
   matching the motion already used on the service/home pages.

   Scoping & safety:
   - Gated on `html.js.bmb-autoreveal`. The `js` class is set by the
     existing head flag; `bmb-autoreveal` is added (in <head>, before
     paint) ONLY on the content pages that had no animation. Service
     and home pages never get the class, so their own motion is
     untouched, and no-JS users see everything (classes never added).
   - Hide-before-paint via structural selectors → no FOUC flash.
   - Honours prefers-reduced-motion (everything shown, no transition).
   - The JS fails open (reveals all) on any error, so content can
     never get stuck hidden.
   ────────────────────────────────────────────────────────────── */

html.js.bmb-autoreveal main > *,
html.js.bmb-autoreveal main section > *,
html.js.bmb-autoreveal main article > *,
html.js.bmb-autoreveal main [class*="-grid"] > *,
html.js.bmb-autoreveal main .product-card,
html.js.bmb-autoreveal main .bmb-product-card{
  opacity:0;
  transform:translateY(20px);
  will-change:opacity, transform;
}

html.js.bmb-autoreveal main .is-revealed{
  opacity:1 !important;
  transform:none !important;
  transition:opacity .6s cubic-bezier(.2,.6,.2,1),
             transform .6s cubic-bezier(.2,.6,.2,1);
}

@media (prefers-reduced-motion: reduce){
  html.js.bmb-autoreveal main > *,
  html.js.bmb-autoreveal main section > *,
  html.js.bmb-autoreveal main article > *,
  html.js.bmb-autoreveal main [class*="-grid"] > *,
  html.js.bmb-autoreveal main .product-card,
  html.js.bmb-autoreveal main .bmb-product-card{
    opacity:1 !important;
    transform:none !important;
    transition:none !important;
  }
}
