/* MEV 2.0 — Partners / Partenaires motion witness — FR310 / EN312 — 2026-09-09.
 * Operational page: motion is limited to existing separators and responsibility/mode registers.
 * Form controls, CTA, copy and headings remain static. No vertical rail is introduced.
 */
body.mev-partners-motion{
  --mev-partners-red:#FD0600;
  --mev-partners-black:#000000;
  --mev-partners-d4-ms:1280ms;
}

html.mev-partners-js body.mev-partners-motion .mev-partners-hero-boundary,
html.mev-partners-js body.mev-partners-motion .mev-partners-hline{
  position:relative;
}

/* Hero→body threshold — MEV red, D4 centre→edges, 3px visual line. */
html.mev-partners-js body.mev-partners-motion .mev-partners-hero-boundary{
  border-bottom-color:transparent!important;
  overflow:visible;
}
html.mev-partners-js body.mev-partners-motion .mev-partners-hero-boundary::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:-1px;
  z-index:8;
  height:3px;
  background:var(--mev-partners-red);
  transform:scaleX(0);
  transform-origin:50% 50%;
  pointer-events:none;
}
html.mev-partners-js body.mev-partners-motion .mev-partners-hero-boundary.is-partners-d4-building::after{
  animation:mev-partners-d4-build var(--mev-partners-d4-ms) linear forwards;
}
html.mev-partners-js body.mev-partners-motion .mev-partners-hero-boundary.is-partners-d4-built::after{
  transform:scaleX(1)!important;
}

/* Existing standalone red separators become D4 centre→edges: 1px structural host + 3px kinetic visual threshold. */
html.mev-partners-js body.mev-partners-motion .mev-p18-separator.mev-partners-d4{
  position:relative;
  background:transparent!important;
  overflow:visible;
}
html.mev-partners-js body.mev-partners-motion .mev-p18-separator.mev-partners-d4::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  top:50%;
  height:3px;
  margin-top:-1.5px;
  z-index:8;
  background:var(--mev-partners-red);
  transform:scaleX(0);
  transform-origin:50% 50%;
  pointer-events:none;
  will-change:transform;
}
html.mev-partners-js body.mev-partners-motion .mev-p18-separator.mev-partners-d4.is-partners-d4-building::after{
  animation:mev-partners-d4-build var(--mev-partners-d4-ms) linear forwards;
}
html.mev-partners-js body.mev-partners-motion .mev-p18-separator.mev-partners-d4.is-partners-d4-built::after{
  transform:scaleX(1)!important;
}
@keyframes mev-partners-d4-build{
  0%{transform:scaleX(0)}
  20%{transform:scaleX(.08)}
  45%{transform:scaleX(.48)}
  70%{transform:scaleX(.80)}
  100%{transform:scaleX(1)}
}

/* Existing black/grey horizontal rules: preserve final geometry, only construct progressively. */
html.mev-partners-js body.mev-partners-motion .mev-partners-hline[data-mev-partners-edge="top"]{
  border-top-color:transparent!important;
}
html.mev-partners-js body.mev-partners-motion .mev-partners-hline[data-mev-partners-edge="bottom"]{
  border-bottom-color:transparent!important;
}
html.mev-partners-js body.mev-partners-motion .mev-partners-hline::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  z-index:5;
  height:1px;
  background:var(--mev-partners-line-color,var(--mev-partners-black));
  transform:scaleX(0);
  transition:transform var(--mev-partners-line-ms,1000ms) cubic-bezier(.18,.72,.22,1);
  pointer-events:none;
}
html.mev-partners-js body.mev-partners-motion .mev-partners-hline[data-mev-partners-edge="top"]::after{top:0}
html.mev-partners-js body.mev-partners-motion .mev-partners-hline[data-mev-partners-edge="bottom"]::after{bottom:0}
html.mev-partners-js body.mev-partners-motion .mev-partners-hline[data-mev-partners-dir="ltr"]::after{transform-origin:0 50%}
html.mev-partners-js body.mev-partners-motion .mev-partners-hline[data-mev-partners-dir="rtl"]::after{transform-origin:100% 50%}
html.mev-partners-js body.mev-partners-motion .mev-partners-hline.is-partners-built::after{transform:scaleX(1)}

/* Structured rows already use ::before for their numeric marker; the motion line therefore uses ::after only. */
html.mev-partners-js body.mev-partners-motion .mev-p18-structured-row.mev-partners-hline::after{z-index:2}

/* When the final structured-row bottom is delegated to its register container, suppress only the duplicate native bottom edge. */
html.mev-partners-js body.mev-partners-motion .mev-p18-structured-row:last-child.mev-partners-bottom-delegated{
  border-bottom-color:transparent!important;
}

/* Operational controls remain visually immediate and fully interactive. */
html.mev-partners-js body.mev-partners-motion .mev-p18-form-wrap,
html.mev-partners-js body.mev-partners-motion .mev-p18-hero-cta-wrap{
  transform:none!important;
  opacity:1!important;
}

@media(prefers-reduced-motion:reduce){
  html.mev-partners-js body.mev-partners-motion .mev-partners-hero-boundary::after{
    animation:none!important;
    transform:scaleX(1)!important;
  }
  html.mev-partners-js body.mev-partners-motion .mev-p18-separator.mev-partners-d4::after{
    animation:none!important;
    transform:scaleX(1)!important;
  }
  html.mev-partners-js body.mev-partners-motion .mev-partners-hline::after{
    transition:none!important;
    transform:scaleX(1)!important;
  }
}
