/* ===========================================================================
   EMAAR — motion.css
   The site's ONE scroll-motion layer. Driven by motion.js, nothing else.

   CONTENT APPEARS AS IT IS — Brand Growth direction, 2026-10-01
   -------------------------------------------------------------
   "Remove fading/blur effects appearance from the content sections,
   headings, paragraphs, images, while scroll across website."

   So this file no longer hides anything. Headings, paragraphs, cards and
   pictures are painted complete at their own position from the first frame:
   no opacity ramp, no rise, no blur, no picture curtain, no masthead
   cascade. The hooks every page carries are unchanged —

       [data-em-reveal]            a block of words
       [data-em-reveal="card"]     one card in a grid
       [data-em-reveal="media"]    a photograph, a figure, a film
       [data-em-stagger]           a group whose children cascade

   — and motion.js still classifies them (.is-in / .is-done are set at once),
   so a renderer that calls EmaarMotion.arm() keeps working. They simply
   carry no styling here. The earlier Marassi-derived language (rise + blur
   words, curtain + zoom pictures) is preserved in motion.css.pre-brandfb and
   MOTION-SYSTEM.md if it is ever wanted back.

   The gate is tools/motion/still-check.js: every page of the site, scrolled
   top to foot in real Chrome, with no content node faded or blurred on
   screen at any step.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   1 · The tokens. The house curves and durations, kept on :root so a
   component that wants the site's motion vocabulary (a panel, a hover, a
   menu) finds one source for it. Nothing here hides, raises or blurs
   content. The rise, blur, zoom and cascade tokens of the old reveal
   language went with it (motion.css.pre-brandfb).
   --------------------------------------------------------------------------- */
:root {
  --em-m-e:        var(--em-e-soft,  var(--em-ease-soft)); /* words, frames */
  --em-m-e-frame:  var(--em-e-panel, var(--em-ease-panel));   /* the curtain   */
  --em-m-e-image:  var(--em-e-image, var(--em-ease-image));  /* the settle    */

  --em-m-dur:       1.3s;
  --em-m-dur-frame: 1.15s;
  --em-m-dur-image: 1.8s;
  --em-m-dur-load:  .85s;
  --em-m-dur-in:    1.05s;
}

/* ---------------------------------------------------------------------------
   2 · The channels — intentionally empty.

   There is no hidden state, so there is nothing for reduced motion to undo
   and nothing a missing script can strand at opacity 0. motion.js no longer
   adds .em-armed, and no rule anywhere keys off it, off .is-in or off
   [data-em-load].
   --------------------------------------------------------------------------- */
