/* EGE motion.
   Every effect here is guarded by prefers-reduced-motion at the bottom of the file.
   Kept deliberately restrained: her guide asks for motion used sparingly, with speed
   and readability first. */

/* ---- scroll progress ---- */
.ege-progress{
  position:fixed; top:0; left:0; height:3px; width:100%;
  background:linear-gradient(90deg, var(--forest), var(--leaf));
  transform:scaleX(0); transform-origin:0 50%;
  z-index:1000; pointer-events:none;
  transition:transform .08s linear;
}

/* ---- header compacts on scroll ---- */
.ege-header{ transition:padding .28s ease, box-shadow .28s ease, background-color .28s ease; }
.ege-header.is-compact{ box-shadow:0 6px 24px rgba(9,72,56,.10); }
.ege-header.is-compact .ege-header__inner{ padding-top:.45rem; padding-bottom:.45rem; }
.ege-header__inner{ transition:padding .28s ease; }
.ege-header.is-compact .ege-brand__name{ font-size:1.16rem; }
.ege-brand__name{ transition:font-size .28s ease; }
.ege-header.is-compact .ege-brand__sub{ opacity:0; max-height:0; }
.ege-brand__sub{ transition:opacity .24s ease, max-height .24s ease; max-height:1.2em; }

/* ---- section reveals ---- */
.ege-reveal{
  opacity:0; transform:translateY(18px);
  transition:opacity .62s cubic-bezier(.22,.61,.36,1) var(--d,0ms),
             transform .62s cubic-bezier(.22,.61,.36,1) var(--d,0ms);
  will-change:opacity, transform;
}
.ege-reveal.is-in{ opacity:1; transform:none; }
/* Hand the compositor layer back once the element has arrived. The reveal list now covers
   every band, so leaving `will-change` on 30 or more elements per page would keep that many
   layers alive for the whole visit. */
.ege-reveal.is-in{ will-change:auto; }

/* ---- hero Ken Burns ----
   Capped at 1.05 with the origin low in the frame. At 1.08 the zoom pushed the
   youth out of shot on the approved hero crop. */
.ege-hero__media img{
  animation:ege-kenburns 22s ease-out forwards;
  transform-origin:50% 68%;
}
@keyframes ege-kenburns{
  from{ transform:scale(1.0); }
  to{   transform:scale(1.05); }
}

/* ---- card and photo hover ---- */
.ege-card{ transition:transform .28s ease, box-shadow .28s ease; }
.ege-card:hover{ transform:translateY(-4px); box-shadow:0 16px 36px rgba(9,72,56,.12); }

.ege-split img, .ege-photo{ overflow:hidden; }
.ege-photo{ border-radius:var(--radius-card); overflow:hidden; }
.ege-photo img{ transition:transform .7s cubic-bezier(.22,.61,.36,1); }
.ege-photo:hover img{ transform:scale(1.045); }

/* ---- hover on the band vocabulary ----
   `.ege-card` and `.ege-photocard` already lift. These are the card types the redesign added,
   which had no hover at all, so half the site felt dead under the pointer. Same distances and
   the same easing, so it reads as one system. */
.ege-person, .ege-product, .ege-result, .ege-partnercard{
  transition:transform .28s ease, box-shadow .28s ease;
}
.ege-person:hover, .ege-product:hover, .ege-result:hover, .ege-partnercard:hover{
  transform:translateY(-4px); box-shadow:0 16px 36px rgba(9,72,56,.12);
}

/* Photographs ease in when the card is hovered, not only when the image itself is. Media
   wrappers clip already, so the scale stays inside the rounded corner. */
.ege-person__media img, .ege-product__media img, .ege-feature__media img,
.ege-mosaic__cell img, .ege-rail__media img, .ege-aside__media img{
  transition:transform .7s cubic-bezier(.22,.61,.36,1);
}
.ege-person:hover .ege-person__media img,
.ege-product:hover .ege-product__media img,
.ege-mosaic__cell:hover img,
.ege-feature:hover .ege-feature__media img{ transform:scale(1.04); }

/* ---- links and anchors ---- */
html{ scroll-behavior:smooth; }
.ege-rail__stop{ transition:transform .28s ease; }
.ege-rail__stop:hover{ transform:translateY(-3px); }

/* ---- pillar underline on hover ---- */
.ege-pillar{ transition:border-color .3s ease; }
.ege-pillar:hover{ border-top-color:var(--green-mid); }

/* ---- buttons already lift in components.css ---- */

@media (prefers-reduced-motion:reduce){
  .ege-progress{ display:none; }
  .ege-reveal{ opacity:1 !important; transform:none !important; transition:none !important; }
  .ege-hero__media img{ animation:none !important; }
  .ege-card:hover, .ege-photo:hover img{ transform:none !important; }
  .ege-person:hover, .ege-product:hover, .ege-result:hover, .ege-partnercard:hover,
  .ege-rail__stop:hover{ transform:none !important; }
  .ege-person:hover .ege-person__media img, .ege-product:hover .ege-product__media img,
  .ege-mosaic__cell:hover img, .ege-feature:hover .ege-feature__media img{ transform:none !important; }
  html{ scroll-behavior:auto !important; }
  *{ scroll-behavior:auto !important; }
}
