/* =========================================================
   ELEMENTOR RESET — loaded AFTER Elementor and BEFORE the prototype CSS.

   Every Container in these pages mirrors one <div>/<section> of the
   prototype and carries the class `ms-raw`. Elementor makes each container a
   full-width flex column; the prototype's divs are plain block boxes. This
   puts them back, at a specificity (0,2,0) that:
     - beats Elementor's base rules  (.e-con, .e-con.e-flex …)
     - loses to the prototype's scoped rules, which load later at the same
       specificity — so `.core-grid{display:grid}` still wins
     - loses to anything set in the Elementor panel for that element
       (.elementor-N .elementor-element.elementor-element-xyz …)

   Everything is written as the CSS variables Elementor itself reads, not as
   the properties, wherever Elementor offers one; that is what keeps the panel
   in charge when someone does change a value there.
========================================================= */
.ms-site .ms-raw{
  --display:block;
  --width:auto;
  --padding-top:0px;
  --padding-right:0px;
  --padding-bottom:0px;
  --padding-left:0px;
  --gap:0px;
  --row-gap:0px;
  --column-gap:0px;
  /* Elementor defaults every flex container to a column; CSS defaults to row,
     and that is what the prototype's `display:flex` boxes were written for. */
  --flex-direction:row;
  --flex-wrap:nowrap;
  --position:static;
  /* Elementor also writes `--display:flex` into every container's own
     generated CSS (at higher specificity), so display is set directly. This
     means Container Type in the panel does nothing on an ms-raw container —
     remove the ms-raw class to hand the layout over to Elementor. */
  display:block;
  min-width:auto;
  transition:none;
}
/* Elementor's own `.e-con{position:var(--position)}` — the prototype only
   says `position:relative` where it means it, so static is the faithful
   default. Sections always were relative in the prototype (`section{…}`). */
.ms-site section.ms-raw{--position:relative;}

/* Elementor uses every container's ::before as its background overlay
   (absolute, full size, with its own radius/border/opacity). The prototype
   draws its own ::before on several of these boxes (glows, step badges), so
   start them from the browser default; its rules load later and win. */
.ms-site .ms-raw::before{
  display:inline;position:static;top:auto;left:auto;width:auto;height:auto;
  opacity:1;border:0;border-radius:0;mix-blend-mode:normal;transition:none;
}

/* A Button whose look comes from a prototype class (`btn btn-dark` …):
   take away Elementor's grey box so only the prototype's styles show.
   :where() keeps this at (0,2,0) — below the prototype's own .btn rules. */
.ms-site :where(.elementor-button).ms-x{
  display:inline;padding:0;border-radius:0;background:none;color:inherit;fill:currentColor;
  font-size:inherit;line-height:inherit;text-align:inherit;transition:none;
}
.ms-site :where(.elementor-button.ms-x) .elementor-button-content-wrapper{display:contents;}

/* Widgets are neutral wrappers: the prototype class sits on the element
   inside (see the "Prototype class" control), so the wrapper must not add
   size or spacing of its own. */
.ms-site .e-con > .elementor-widget{--container-widget-width:auto;}
/* :where() keeps these at (0,2,0) so a width or position set on the widget
   in the panel (.elementor-widget__width-*, .elementor-absolute) still wins.
   position:static matters: Elementor makes every widget a positioning
   context, which traps the prototype's absolutely-placed pieces (the hero
   canvas, overlays) inside a zero-height wrapper. */
.ms-site .ms-raw > :where(.elementor-widget){width:auto;max-width:none;position:static;}
.ms-site .elementor-widget-html:has(> script:only-child){display:none;}
