/* ==========================================================================
   FinCheck Expertise Widgets
   Black & white system, ported section-for-section from the static pages.

   Every colour resolves through a small token set so the light/dark tone
   switch and the Section Colour Scheme presets only have to override tokens.
   Scoped resets use :where() so they never out-specify component rules.
   ========================================================================== */

.fcex{
  /* Palette */
  --fcex-ink:        #0a0a0a;
  --fcex-ink-soft:   #131313;
  --fcex-paper:      #ffffff;
  --fcex-grey-05:    #f4f4f4;
  --fcex-grey-15:    #e2e2e2;
  --fcex-grey-40:    #9a9a9a;
  --fcex-grey-60:    #5c5c5c;
  --fcex-line-dark:  rgba(255,255,255,.16);

  /* Type */
  --fcex-display:    'FCEX Archivo', 'Archivo', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --fcex-body:       'FCEX Inter', 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --fcex-mono:       'FCEX Plex Mono', 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  /* Geometry */
  --fcex-container:  1240px;
  --fcex-gutter:     24px;
  --fcex-radius:     2px;
  --fcex-ease:       cubic-bezier(.22,.61,.36,1);
  --fcex-ease-out:   cubic-bezier(.16,1,.3,1);

  /* Resolved tokens — light tone */
  --fcex-bg:         var(--fcex-paper);
  --fcex-fg:         var(--fcex-ink);
  --fcex-muted:      var(--fcex-grey-60);
  --fcex-dim:        var(--fcex-grey-40);
  --fcex-lede:       var(--fcex-grey-60);
  --fcex-line:       var(--fcex-grey-15);
  --fcex-soft-bg:    var(--fcex-grey-05);
  --fcex-frame-bg:   var(--fcex-grey-05);
  --fcex-card-fill:  var(--fcex-ink);
  --fcex-card-hover: #bdbdbd;
  --fcex-road-fill:  var(--fcex-ink);
  --fcex-tick:       #ffffff;
  --fcex-tick-size:  24px;
  --fcex-marker-w:   12px;
  --fcex-road-numw:  120px;
  --fcex-grid-line:  rgba(255,255,255,.045);
  --fcex-grid-size:  72px;
  --fcex-ticker-line: rgba(255,255,255,.16);

  font-family: var(--fcex-body);
  font-size: 16px;
  line-height: 1.65;
  color: var(--fcex-fg);
}

/* Dark-tone token overrides. The dark-by-nature bands (hero, sub-nav,
   expertise band, CTA) carry the same set. */
.fcex-sec--dark,
.fcex-phero,
.fcex-subnav,
.fcex-expertise,
.fcex-cta{
  --fcex-bg:        var(--fcex-ink);
  --fcex-fg:        var(--fcex-paper);
  --fcex-muted:     var(--fcex-grey-40);
  --fcex-dim:       var(--fcex-grey-40);
  --fcex-lede:      #c2c2c2;
  --fcex-line:      var(--fcex-line-dark);
  --fcex-soft-bg:   rgba(255,255,255,.05);
  --fcex-frame-bg:  rgba(255,255,255,.03);
  --fcex-card-fill: var(--fcex-paper);
  --fcex-card-hover: var(--fcex-grey-60);
  --fcex-road-fill: rgba(255,255,255,.06);
}

/* Quiet resets, scoped and de-specified with :where() so a single-class
   component rule always wins. */
:where(.fcex) *,
:where(.fcex) *::before,
:where(.fcex) *::after{ box-sizing: border-box; }
:where(.fcex) p,
:where(.fcex) ul,
:where(.fcex) li,
:where(.fcex) h1,
:where(.fcex) h2,
:where(.fcex) h3,
:where(.fcex) h4,
:where(.fcex) h5,
:where(.fcex) h6{ margin: 0; padding: 0; }
:where(.fcex) ul{ list-style: none; }
:where(.fcex) a{ color: inherit; text-decoration: none; }
:where(.fcex) img{ max-width: 100%; display: block; }

.fcex a:focus-visible,
.fcex button:focus-visible{
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

.fcex-container{
  max-width: var(--fcex-container);
  margin-inline: auto;
  padding-inline: var(--fcex-gutter);
  width: 100%;
}

/* ==========================================================================
   Section shells
   ========================================================================== */
.fcex-sec{
  padding: clamp(64px, 8vw, 110px) 0;
  background: var(--fcex-bg);
  color: var(--fcex-fg);
}
.fcex-sec--dark{ border-top: 1px solid var(--fcex-line-dark); }

.fcex-band-gap{ height: 28px; }

/* ==========================================================================
   Section head
   ========================================================================== */
.fcex-section-head{
  display: flex;
  align-items: baseline;
  gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 48px;
}
.fcex-index{
  font-family: var(--fcex-mono);
  font-size: 13px;
  letter-spacing: .12em;
  color: var(--fcex-dim);
  border: 1px solid currentColor;
  padding: 3px 9px;
  border-radius: var(--fcex-radius);
  line-height: 1.4;
}
.fcex-section-title{
  font-family: var(--fcex-display);
  font-weight: 800;
  font-size: clamp(28px, 4vw, 46px);
  letter-spacing: -.01em;
  text-transform: uppercase;
  line-height: 1.1;
  color: var(--fcex-fg);
}
.fcex-section-sub{
  flex-basis: 100%;
  font-size: 15px;
  line-height: 1.7;
  color: var(--fcex-muted);
  margin-top: 6px;
}

/* ==========================================================================
   Buttons
   ========================================================================== */
.fcex-btn{
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--fcex-display);
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: 18px 34px;
  font-size: 14px;
  border: 1px solid var(--fcex-paper);
  border-radius: var(--fcex-radius);
  position: relative;
  cursor: pointer;
  transition: color .35s var(--fcex-ease), background .35s var(--fcex-ease),
              border-color .35s var(--fcex-ease), transform .35s var(--fcex-ease);
  will-change: transform;
}
.fcex-phero .fcex-btn{ font-size: 15px; }
.fcex-btn__arrow{ transition: transform .3s var(--fcex-ease); }
.fcex-btn:hover .fcex-btn__arrow{ transform: translateX(6px); }

.fcex-btn--solid{
  background: var(--fcex-paper);
  color: var(--fcex-ink);
  border-color: var(--fcex-paper);
}
.fcex-btn--solid:hover{ background: transparent; color: var(--fcex-paper); }

.fcex-btn--outline{
  background: transparent;
  color: var(--fcex-paper);
  border-color: var(--fcex-paper);
}
.fcex-btn--outline:hover{ background: var(--fcex-paper); color: var(--fcex-ink); }

/* On a light-tone section the buttons flip so they stay legible. */
.fcex-sec:not(.fcex-sec--dark) .fcex-btn--solid{
  background: var(--fcex-ink);
  color: var(--fcex-paper);
  border-color: var(--fcex-ink);
}
.fcex-sec:not(.fcex-sec--dark) .fcex-btn--solid:hover{
  background: transparent;
  color: var(--fcex-ink);
}
.fcex-sec:not(.fcex-sec--dark) .fcex-btn--outline{
  color: var(--fcex-ink);
  border-color: var(--fcex-ink);
}
.fcex-sec:not(.fcex-sec--dark) .fcex-btn--outline:hover{
  background: var(--fcex-ink);
  color: var(--fcex-paper);
}

/* ==========================================================================
   Page hero
   ========================================================================== */
.fcex-phero{
  position: relative;
  overflow: hidden;
  background: var(--fcex-bg);
  color: var(--fcex-fg);
  padding: clamp(64px, 9vw, 124px) 0 clamp(56px, 7vw, 96px);
  border-bottom: 1px solid var(--fcex-line-dark);
  --fcex-lede: #c9c9c9;
}
.fcex-phero::before{
  content: "";
  position: absolute;
  inset: -160px 0 0 0;
  background-image:
    linear-gradient(var(--fcex-grid-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--fcex-grid-line) 1px, transparent 1px);
  background-size: var(--fcex-grid-size) var(--fcex-grid-size);
  pointer-events: none;
  transform: translateY(calc(var(--fcex-parallax, 0) * 1px));
  will-change: transform;
}
.fcex-phero--nogrid::before{ display: none; }
.fcex-phero::after{
  content: "";
  position: absolute;
  top: -30%;
  right: -10%;
  width: 60vw;
  height: 60vw;
  max-width: 820px;
  max-height: 820px;
  background: radial-gradient(circle, rgba(255,255,255,.09) 0%, rgba(255,255,255,0) 62%);
  pointer-events: none;
  animation: fcex-breathe 9s ease-in-out infinite alternate;
}
.fcex-phero--noglow::after{ display: none; }
@keyframes fcex-breathe{
  from{ transform: scale(.9); opacity: .7; }
  to{ transform: scale(1.08); opacity: 1; }
}
.fcex-phero > .fcex-container{ position: relative; z-index: 1; }

.fcex-crumbs{
  font-family: var(--fcex-mono);
  font-size: 12px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--fcex-dim);
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 26px;
  flex-wrap: wrap;
}
.fcex-crumbs a{ transition: color .25s var(--fcex-ease); }
.fcex-crumbs a:hover{ color: var(--fcex-fg); }
.fcex-crumbs__current{ color: var(--fcex-fg); }

.fcex-eyebrow{
  font-family: var(--fcex-mono);
  font-size: 13px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--fcex-dim);
  display: inline-flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 28px;
}
.fcex-eyebrow::before{
  content: "";
  width: 44px;
  height: 1px;
  background: var(--fcex-dim);
  flex: none;
}
.fcex-eyebrow--norule::before{ display: none; }

.fcex-phero__title{
  font-family: var(--fcex-display);
  font-weight: 800;
  font-size: clamp(36px, 6.2vw, 82px);
  line-height: 1.03;
  letter-spacing: -.02em;
  text-transform: uppercase;
  max-width: min(1100px, 100%);
  color: var(--fcex-fg);
}
.fcex-phero__title em{
  font-style: normal;
  -webkit-text-stroke: 2px var(--fcex-fg);
  -webkit-text-fill-color: transparent;
  transition: -webkit-text-fill-color .5s var(--fcex-ease);
}
.fcex-phero__title:hover em{ -webkit-text-fill-color: currentColor; }

.fcex-line{
  display: block;
  overflow: hidden;
  padding-bottom: .08em;
  margin-bottom: -.08em;
}
.fcex-line__inner{
  display: block;
  transform: translateY(112%);
  animation: fcex-line-up .95s var(--fcex-ease-out) forwards;
  animation-delay: calc(var(--fcex-line-i, 0) * .14s);
}
@keyframes fcex-line-up{
  to{ transform: translateY(0); }
}

.fcex-phero__row{
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 48px;
  flex-wrap: wrap;
  margin-top: 36px;
}
.fcex-phero__copywrap{ flex: 0 1 auto; min-width: 0; }
.fcex-phero__copy{
  max-width: 660px;
  font-size: 17px;
  line-height: 1.7;
  color: var(--fcex-lede);
}
.fcex-phero__copy + .fcex-phero__copy{ margin-top: 16px; }
.fcex-phero__actions{ display: flex; gap: 14px; flex-wrap: wrap; }

/* Metric ticker */
.fcex-ticker{
  position: relative;
  z-index: 1;
  margin-top: clamp(40px, 5vw, 68px);
  border-top: 1px solid var(--fcex-ticker-line);
}
.fcex-ticker__grid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.fcex-ticker__item{
  padding: 30px 28px;
  border-right: 1px solid var(--fcex-ticker-line);
  transition: background .35s var(--fcex-ease);
}
.fcex-ticker__item:first-child{ padding-left: var(--fcex-gutter); }
.fcex-ticker__item:last-child{ border-right: none; }
.fcex-ticker__item:hover{ background: rgba(255,255,255,.05); }
.fcex-ticker__num{
  display: block;
  font-family: var(--fcex-display);
  font-weight: 800;
  font-size: clamp(30px, 3.4vw, 44px);
  line-height: 1;
  color: var(--fcex-fg);
}
.fcex-ticker__label{
  display: block;
  margin-top: 8px;
  font-family: var(--fcex-mono);
  font-size: 11.5px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--fcex-dim);
}

/* ==========================================================================
   Sticky section sub-nav
   ========================================================================== */
.fcex-subnav{
  background: rgba(10,10,10,.94);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--fcex-line-dark);
  z-index: 900;
}
.fcex-subnav--sticky{
  position: sticky;
  top: 84px;
}
.fcex-subnav__inner{
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px var(--fcex-gutter);
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.fcex-subnav__inner::-webkit-scrollbar{ display: none; }
.fcex-subnav__label{
  font-family: var(--fcex-mono);
  font-size: 10.5px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--fcex-grey-60);
  padding-right: 8px;
  white-space: nowrap;
  flex: none;
}
.fcex-subnav a{
  font-family: var(--fcex-mono);
  font-size: 11.5px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--fcex-grey-40);
  padding: 8px 15px;
  border: 1px solid transparent;
  border-radius: 100px;
  white-space: nowrap;
  flex: none;
  transition: color .25s var(--fcex-ease), border-color .25s var(--fcex-ease),
              background .25s var(--fcex-ease);
}
.fcex-subnav a:hover{ color: var(--fcex-paper); border-color: var(--fcex-line-dark); }
.fcex-subnav a.is-current{
  background: var(--fcex-paper);
  color: var(--fcex-ink);
  border-color: var(--fcex-paper);
}

/* ==========================================================================
   Typography helpers
   ========================================================================== */
.fcex-h3{
  font-family: var(--fcex-display);
  font-weight: 700;
  font-size: clamp(18px, 1.9vw, 22px);
  line-height: 1.25;
  letter-spacing: -.005em;
  color: var(--fcex-fg);
}
.fcex-lede{
  font-size: 16px;
  line-height: 1.75;
  color: var(--fcex-lede);
  max-width: 60ch;
  margin-top: 16px;
}
.fcex-note{
  margin-top: 22px;
  padding: 14px 18px;
  border-left: 3px solid currentColor;
  font-family: var(--fcex-display);
  font-weight: 600;
  font-size: 15px;
  line-height: 1.6;
  background: var(--fcex-soft-bg);
  color: var(--fcex-fg);
}

/* ==========================================================================
   Split block
   ========================================================================== */
.fcex-split{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(28px, 4.2vw, 64px);
  align-items: center;
}
.fcex-split__body{ min-width: 0; }
.fcex-split__media{
  position: relative;
  overflow: hidden;
  border: 1px solid var(--fcex-line);
  background: var(--fcex-frame-bg);
  min-width: 0;
}
.fcex-split__media img,
.fcex-media img{
  width: 100%;
  height: auto;
  display: block;
  filter: none;
  transition: transform .9s var(--fcex-ease-out);
}
.fcex-split__media:hover img{ transform: scale(1.035); }
.fcex-media--nozoom:hover img{ transform: none !important; }

/* Hairline corner ticks */
.fcex-split__media::before,
.fcex-split__media::after{
  content: "";
  position: absolute;
  width: 18px;
  height: 18px;
  pointer-events: none;
  z-index: 2;
  border-color: var(--fcex-tick);
  opacity: .85;
  transition: width .45s var(--fcex-ease-out), height .45s var(--fcex-ease-out);
}
.fcex-split__media::before{
  top: 10px; left: 10px;
  border-top: 2px solid; border-left: 2px solid;
}
.fcex-split__media::after{
  bottom: 10px; right: 10px;
  border-bottom: 2px solid; border-right: 2px solid;
}
.fcex-split__media:hover::before,
.fcex-split__media:hover::after{ width: 30px; height: 30px; }
.fcex-media--noticks::before,
.fcex-media--noticks::after{ display: none; }

/* Full-width framed media band */
.fcex-media{
  position: relative;
  overflow: hidden;
  border: 1px solid var(--fcex-line);
  background: var(--fcex-frame-bg);
}
.fcex-media:hover img{ transform: scale(1.025); }
.fcex-media__cap{
  position: absolute;
  left: 0;
  bottom: 0;
  z-index: 2;
  background: var(--fcex-ink);
  color: var(--fcex-paper);
  font-family: var(--fcex-mono);
  font-size: 10.5px;
  letter-spacing: .16em;
  text-transform: uppercase;
  padding: 8px 14px;
}

/* ==========================================================================
   Tick checklist
   ========================================================================== */
.fcex-check{
  margin-top: 28px;
  border-top: 1px solid var(--fcex-line);
}
.fcex-check li{
  display: grid;
  grid-template-columns: calc(var(--fcex-tick-size) + 2px) 1fr;
  gap: 16px;
  align-items: start;
  padding: 16px 4px;
  border-bottom: 1px solid var(--fcex-line);
  transition: padding-left .35s var(--fcex-ease-out), background .35s var(--fcex-ease);
}
.fcex-check li:hover{ padding-left: 14px; background: var(--fcex-soft-bg); }
.fcex-check__tick{
  width: var(--fcex-tick-size);
  height: var(--fcex-tick-size);
  border: 1px solid currentColor;
  border-radius: 50%;
  display: grid;
  place-items: center;
  margin-top: 1px;
  color: var(--fcex-fg);
  transition: background .3s var(--fcex-ease), color .3s var(--fcex-ease),
              transform .4s var(--fcex-ease-out);
}
.fcex-check__tick svg{ width: 50%; height: 50%; }
.fcex-check li:hover .fcex-check__tick{ transform: rotate(-8deg) scale(1.08); }
.fcex-check__body{ min-width: 0; }
.fcex-check strong{
  display: block;
  font-family: var(--fcex-display);
  font-weight: 700;
  font-size: 15.5px;
  line-height: 1.35;
  letter-spacing: -.005em;
  margin-bottom: 3px;
  color: var(--fcex-fg);
}
.fcex-check__desc{
  display: block;
  font-size: 14.5px;
  line-height: 1.65;
  color: var(--fcex-muted);
}

/* ==========================================================================
   Card grid — ink-swipe hover
   ========================================================================== */
.fcex-cards{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  background: var(--fcex-line);
  border: 1px solid var(--fcex-line);
}
.fcex-card{
  position: relative;
  overflow: hidden;
  background: var(--fcex-bg);
  color: var(--fcex-fg);
  padding: 32px 28px 30px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
  transition: color .4s var(--fcex-ease);
}
.fcex-card::before{
  content: "";
  position: absolute;
  inset: 0;
  background: var(--fcex-card-fill);
  transform: scaleY(0);
  transform-origin: 50% 100%;
  transition: transform .45s var(--fcex-ease-out);
  z-index: 0;
}
.fcex-card > *{ position: relative; z-index: 1; }
.fcex-card__no{
  font-family: var(--fcex-mono);
  font-size: 12px;
  letter-spacing: .14em;
  color: var(--fcex-dim);
  transition: color .4s var(--fcex-ease);
}
.fcex-card__title{
  font-family: var(--fcex-display);
  font-weight: 700;
  font-size: 18.5px;
  line-height: 1.25;
  letter-spacing: -.005em;
  color: inherit;
}
.fcex-card p{
  font-size: 14.5px;
  line-height: 1.7;
  color: var(--fcex-muted);
  transition: color .4s var(--fcex-ease);
}
.fcex-card:hover::before{ transform: scaleY(1); transform-origin: 50% 0%; }
.fcex-card:hover{ color: var(--fcex-bg); }
.fcex-card:hover p{ color: var(--fcex-card-hover); }
.fcex-card:hover .fcex-card__no{ color: var(--fcex-card-hover); }

.fcex-cards--nohover .fcex-card::before{ display: none; }
.fcex-cards--nohover .fcex-card:hover{ color: var(--fcex-fg); }
.fcex-cards--nohover .fcex-card:hover p{ color: var(--fcex-muted); }
.fcex-cards--nohover .fcex-card:hover .fcex-card__no{ color: var(--fcex-dim); }

/* ==========================================================================
   Roadmap
   ========================================================================== */
.fcex-road{ border-top: 1px solid var(--fcex-line); }
.fcex-road__item{
  display: grid;
  grid-template-columns: var(--fcex-road-numw) 1fr;
  gap: clamp(20px, 3vw, 44px);
  align-items: start;
  padding: 30px 6px;
  border-bottom: 1px solid var(--fcex-line);
  position: relative;
  overflow: hidden;
  transition: padding-left .4s var(--fcex-ease-out), color .4s var(--fcex-ease);
}
.fcex-road__item::before{
  content: "";
  position: absolute;
  inset: 0;
  background: var(--fcex-road-fill);
  transform: scaleY(0);
  transform-origin: 50% 100%;
  transition: transform .45s var(--fcex-ease-out);
  z-index: 0;
}
.fcex-road__item > *{ position: relative; z-index: 1; }
.fcex-road__copy{ min-width: 0; }
.fcex-road__no{
  font-family: var(--fcex-display);
  font-weight: 800;
  font-size: clamp(34px, 4.6vw, 60px);
  line-height: .9;
  letter-spacing: -.02em;
  color: var(--fcex-fg);
  /* Blank the glyph fill only — the stroke is painted in currentColor, so
     colour:transparent would blank the outline too and the numeral would
     disappear entirely instead of reading as an outline. */
  -webkit-text-fill-color: transparent;
  -webkit-text-stroke: 1.5px currentColor;
  transition: -webkit-text-fill-color .45s var(--fcex-ease);
}
.fcex-road--solidnum .fcex-road__no{
  -webkit-text-fill-color: currentColor;
  -webkit-text-stroke-width: 0;
}
.fcex-road__title{
  font-family: var(--fcex-display);
  font-weight: 700;
  font-size: clamp(17px, 1.9vw, 21px);
  letter-spacing: -.005em;
  margin-bottom: 8px;
  color: inherit;
}
.fcex-road__item p{
  font-size: 15px;
  line-height: 1.7;
  color: var(--fcex-muted);
  max-width: 72ch;
  transition: color .4s var(--fcex-ease);
}
.fcex-road__item:hover{ padding-left: 18px; }
.fcex-road__item:hover::before{ transform: scaleY(1); transform-origin: 50% 0%; }
.fcex-road__item:hover .fcex-road__no{ -webkit-text-fill-color: currentColor; }
.fcex-sec:not(.fcex-sec--dark) .fcex-road__item:hover{ color: var(--fcex-paper); }
.fcex-sec:not(.fcex-sec--dark) .fcex-road__item:hover p{ color: #bdbdbd; }

.fcex-road--nohover .fcex-road__item::before{ display: none; }
.fcex-road--nohover .fcex-road__item:hover{ padding-left: 6px; color: var(--fcex-fg); }
.fcex-road--nohover .fcex-road__item:hover p{ color: var(--fcex-muted); }

/* ==========================================================================
   Outcome pills
   ========================================================================== */
.fcex-pills{
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 26px;
}
.fcex-pill{
  display: inline-flex;
  align-items: center;
  gap: 11px;
  font-family: var(--fcex-display);
  font-weight: 600;
  font-size: 14.5px;
  line-height: 1.3;
  letter-spacing: -.005em;
  padding: 13px 22px;
  border: 1px solid var(--fcex-line);
  border-radius: 100px;
  color: var(--fcex-fg);
  transition: background .3s var(--fcex-ease), color .3s var(--fcex-ease),
              border-color .3s var(--fcex-ease), transform .35s var(--fcex-ease-out);
}
.fcex-pill svg{ width: 15px; height: 15px; flex: none; }
.fcex-pill:hover{
  background: var(--fcex-fg);
  color: var(--fcex-bg);
  border-color: var(--fcex-fg);
  transform: translateY(-3px);
}

/* ==========================================================================
   Bullet list
   ========================================================================== */
.fcex-bullets{ margin-top: 22px; }
.fcex-bullets li{
  position: relative;
  padding: 11px 0 11px calc(var(--fcex-marker-w) + 16px);
  font-size: 15px;
  line-height: 1.7;
  color: var(--fcex-muted);
  border-bottom: 1px solid var(--fcex-line);
  transition: padding-left .3s var(--fcex-ease-out), color .3s var(--fcex-ease);
}
.fcex-bullets li::before{
  content: "";
  position: absolute;
  left: 4px;
  top: 21px;
  width: var(--fcex-marker-w);
  height: 1px;
  background: currentColor;
  transition: width .3s var(--fcex-ease-out);
}
.fcex-bullets li:hover{
  padding-left: calc(var(--fcex-marker-w) + 24px);
  color: var(--fcex-fg);
}
.fcex-bullets li:hover::before{ width: calc(var(--fcex-marker-w) + 8px); }
.fcex-bullets strong{ color: var(--fcex-fg); font-weight: 700; }

/* ==========================================================================
   Other industries band
   ========================================================================== */
.fcex-expertise{
  background: var(--fcex-bg);
  color: var(--fcex-fg);
  padding: clamp(72px, 8vw, 110px) 0;
}
.fcex-expertise__grid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  background: var(--fcex-line);
  border: 1px solid var(--fcex-line);
  perspective: 1200px;
}
.fcex-exp-card{
  background: var(--fcex-bg);
  padding: 44px 32px 36px;
  display: flex;
  flex-direction: column;
  gap: 56px;
  position: relative;
  min-width: 0;
  transform-style: preserve-3d;
  transition: background .35s var(--fcex-ease), color .35s var(--fcex-ease), transform .2s linear;
  will-change: transform;
}
.fcex-exp-card__no{
  font-family: var(--fcex-mono);
  font-size: 13px;
  letter-spacing: .12em;
  color: var(--fcex-dim);
  transition: color .35s var(--fcex-ease);
}
.fcex-exp-card__title{
  font-family: var(--fcex-display);
  font-weight: 700;
  font-size: clamp(20px, 2vw, 26px);
  line-height: 1.2;
  letter-spacing: -.01em;
  max-width: 14ch;
  color: inherit;
  transform: translateZ(24px);
}
.fcex-exp-card__arrow{
  position: absolute;
  right: 28px;
  bottom: 28px;
  font-size: 22px;
  line-height: 1;
  opacity: 0;
  transform: translateX(-10px);
  transition: opacity .35s var(--fcex-ease), transform .35s var(--fcex-ease);
}
.fcex-exp-card:hover{
  background: var(--fcex-fg);
  color: var(--fcex-bg);
  z-index: 2;
}
.fcex-exp-card:hover .fcex-exp-card__no{ color: var(--fcex-grey-60); }
.fcex-exp-card:hover .fcex-exp-card__arrow{ opacity: 1; transform: translateX(0); }

/* ==========================================================================
   CTA band
   ========================================================================== */
.fcex-cta{
  background: var(--fcex-bg);
  color: var(--fcex-fg);
  border-top: 1px solid var(--fcex-line-dark);
  padding: clamp(72px, 9vw, 130px) 0;
  --fcex-lede: #c3c3c3;
}
.fcex-cta__inner{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 48px;
  flex-wrap: wrap;
}
.fcex-cta__copywrap{ flex: 0 1 auto; min-width: 0; }
.fcex-cta__title{
  font-family: var(--fcex-display);
  font-weight: 800;
  font-size: clamp(32px, 5vw, 60px);
  line-height: 1.08;
  letter-spacing: -.015em;
  text-transform: uppercase;
  color: var(--fcex-fg);
}
.fcex-cta__copy{
  margin-top: 18px;
  font-size: 16px;
  line-height: 1.75;
  color: var(--fcex-lede);
  max-width: 640px;
}
.fcex-cta__actions{ display: flex; gap: 16px; flex-wrap: wrap; }

/* ==========================================================================
   Reveal on scroll
   ========================================================================== */
.fcex-reveal{
  opacity: 0;
  transform: translateY(30px);
  transition: opacity .8s var(--fcex-ease-out), transform .8s var(--fcex-ease-out);
  transition-delay: var(--fcex-delay, 0s);
}
.fcex-reveal.is-visible{
  opacity: 1;
  transform: translateY(0);
}
/* Never leave content invisible inside the Elementor editor canvas. */
.elementor-editor-active .fcex-reveal,
.elementor-editor-preview .fcex-reveal{
  opacity: 1;
  transform: none;
}

/* ==========================================================================
   Section Colour Scheme presets
   Applied via prefix_class on the widget wrapper. !important is needed so a
   preset reliably beats the per-control colours regardless of the order in
   which Elementor prints its generated CSS.
   ========================================================================== */
.fcex-scheme-light .fcex,
.fcex-scheme-light.elementor-widget .fcex{
  --fcex-bg: #ffffff; --fcex-fg: #0a0a0a; --fcex-muted: #5c5c5c; --fcex-dim: #9a9a9a;
  --fcex-lede: #5c5c5c; --fcex-line: #e2e2e2; --fcex-soft-bg: #f4f4f4;
  --fcex-frame-bg: #f4f4f4; --fcex-card-fill: #0a0a0a; --fcex-card-hover: #bdbdbd;
  --fcex-road-fill: #0a0a0a;
}
.fcex-scheme-dark .fcex{
  --fcex-bg: #0a0a0a; --fcex-fg: #ffffff; --fcex-muted: #9a9a9a; --fcex-dim: #9a9a9a;
  --fcex-lede: #c2c2c2; --fcex-line: rgba(255,255,255,.16); --fcex-soft-bg: rgba(255,255,255,.05);
  --fcex-frame-bg: rgba(255,255,255,.03); --fcex-card-fill: #ffffff; --fcex-card-hover: #5c5c5c;
  --fcex-road-fill: rgba(255,255,255,.06);
}
.fcex-scheme-soft-dark .fcex{
  --fcex-bg: #131313; --fcex-fg: #ffffff; --fcex-muted: #9a9a9a; --fcex-dim: #9a9a9a;
  --fcex-lede: #c2c2c2; --fcex-line: rgba(255,255,255,.16); --fcex-soft-bg: rgba(255,255,255,.05);
  --fcex-frame-bg: rgba(255,255,255,.03); --fcex-card-fill: #ffffff; --fcex-card-hover: #5c5c5c;
  --fcex-road-fill: rgba(255,255,255,.06);
}
.fcex-scheme-grey .fcex{
  --fcex-bg: #f4f4f4; --fcex-fg: #0a0a0a; --fcex-muted: #5c5c5c; --fcex-dim: #7a7a7a;
  --fcex-lede: #5c5c5c; --fcex-line: #d8d8d8; --fcex-soft-bg: #eaeaea;
  --fcex-frame-bg: #eaeaea; --fcex-card-fill: #0a0a0a; --fcex-card-hover: #bdbdbd;
  --fcex-road-fill: #0a0a0a;
}
.fcex-scheme-paper-ink .fcex{
  --fcex-bg: #ffffff; --fcex-fg: #0a0a0a; --fcex-muted: #6d6d6d; --fcex-dim: #9a9a9a;
  --fcex-lede: #6d6d6d; --fcex-line: #e2e2e2; --fcex-soft-bg: #f4f4f4;
  --fcex-frame-bg: #f4f4f4; --fcex-card-fill: #0a0a0a; --fcex-card-hover: #bdbdbd;
  --fcex-road-fill: #0a0a0a;
}
.fcex-scheme-ink-paper .fcex{
  --fcex-bg: #0a0a0a; --fcex-fg: #ffffff; --fcex-muted: #a8a8a8; --fcex-dim: #9a9a9a;
  --fcex-lede: #c9c9c9; --fcex-line: rgba(255,255,255,.16); --fcex-soft-bg: rgba(255,255,255,.05);
  --fcex-frame-bg: rgba(255,255,255,.03); --fcex-card-fill: #ffffff; --fcex-card-hover: #5c5c5c;
  --fcex-road-fill: rgba(255,255,255,.06);
}
.fcex-scheme-grey-ink .fcex{
  --fcex-bg: #f4f4f4; --fcex-fg: #0a0a0a; --fcex-muted: #6d6d6d; --fcex-dim: #8a8a8a;
  --fcex-lede: #6d6d6d; --fcex-line: #d8d8d8; --fcex-soft-bg: #e6e6e6;
  --fcex-frame-bg: #e6e6e6; --fcex-card-fill: #0a0a0a; --fcex-card-hover: #bdbdbd;
  --fcex-road-fill: #0a0a0a;
}
.fcex-scheme-outline-light .fcex{
  --fcex-bg: #ffffff; --fcex-fg: #0a0a0a; --fcex-muted: #5c5c5c; --fcex-dim: #9a9a9a;
  --fcex-lede: #5c5c5c; --fcex-line: #0a0a0a; --fcex-soft-bg: #f4f4f4;
  --fcex-frame-bg: #ffffff; --fcex-card-fill: #0a0a0a; --fcex-card-hover: #bdbdbd;
  --fcex-road-fill: #0a0a0a;
}
.fcex-scheme-outline-dark .fcex{
  --fcex-bg: #0a0a0a; --fcex-fg: #ffffff; --fcex-muted: #9a9a9a; --fcex-dim: #9a9a9a;
  --fcex-lede: #c2c2c2; --fcex-line: rgba(255,255,255,.42); --fcex-soft-bg: rgba(255,255,255,.05);
  --fcex-frame-bg: #0a0a0a; --fcex-card-fill: #ffffff; --fcex-card-hover: #5c5c5c;
  --fcex-road-fill: rgba(255,255,255,.06);
}

/* Presets also drive the section background itself. */
.fcex-scheme-light .fcex-sec,
.fcex-scheme-light .fcex-phero,
.fcex-scheme-light .fcex-expertise,
.fcex-scheme-light .fcex-cta,
.fcex-scheme-dark .fcex-sec,
.fcex-scheme-dark .fcex-phero,
.fcex-scheme-dark .fcex-expertise,
.fcex-scheme-dark .fcex-cta,
.fcex-scheme-soft-dark .fcex-sec,
.fcex-scheme-soft-dark .fcex-phero,
.fcex-scheme-soft-dark .fcex-expertise,
.fcex-scheme-soft-dark .fcex-cta,
.fcex-scheme-grey .fcex-sec,
.fcex-scheme-grey .fcex-phero,
.fcex-scheme-grey .fcex-expertise,
.fcex-scheme-grey .fcex-cta,
.fcex-scheme-paper-ink .fcex-sec,
.fcex-scheme-paper-ink .fcex-phero,
.fcex-scheme-paper-ink .fcex-expertise,
.fcex-scheme-paper-ink .fcex-cta,
.fcex-scheme-ink-paper .fcex-sec,
.fcex-scheme-ink-paper .fcex-phero,
.fcex-scheme-ink-paper .fcex-expertise,
.fcex-scheme-ink-paper .fcex-cta,
.fcex-scheme-grey-ink .fcex-sec,
.fcex-scheme-grey-ink .fcex-phero,
.fcex-scheme-grey-ink .fcex-expertise,
.fcex-scheme-grey-ink .fcex-cta,
.fcex-scheme-outline-light .fcex-sec,
.fcex-scheme-outline-light .fcex-phero,
.fcex-scheme-outline-light .fcex-expertise,
.fcex-scheme-outline-light .fcex-cta,
.fcex-scheme-outline-dark .fcex-sec,
.fcex-scheme-outline-dark .fcex-phero,
.fcex-scheme-outline-dark .fcex-expertise,
.fcex-scheme-outline-dark .fcex-cta{
  background: var(--fcex-bg) !important;
  color: var(--fcex-fg) !important;
}

/* On a light preset the hero grid/glow would be invisible white-on-white. */
.fcex-scheme-light .fcex-phero,
.fcex-scheme-grey .fcex-phero,
.fcex-scheme-paper-ink .fcex-phero,
.fcex-scheme-grey-ink .fcex-phero,
.fcex-scheme-outline-light .fcex-phero{
  --fcex-grid-line: rgba(0,0,0,.06);
  --fcex-ticker-line: rgba(0,0,0,.14);
}
.fcex-scheme-light .fcex-phero::after,
.fcex-scheme-grey .fcex-phero::after,
.fcex-scheme-paper-ink .fcex-phero::after,
.fcex-scheme-grey-ink .fcex-phero::after,
.fcex-scheme-outline-light .fcex-phero::after{ display: none; }
.fcex-scheme-light .fcex-split__media,
.fcex-scheme-grey .fcex-split__media,
.fcex-scheme-paper-ink .fcex-split__media,
.fcex-scheme-grey-ink .fcex-split__media,
.fcex-scheme-outline-light .fcex-split__media{ --fcex-tick: #0a0a0a; }

/* Light presets also need the buttons to flip. */
.fcex-scheme-light .fcex-btn--solid,
.fcex-scheme-grey .fcex-btn--solid,
.fcex-scheme-paper-ink .fcex-btn--solid,
.fcex-scheme-grey-ink .fcex-btn--solid,
.fcex-scheme-outline-light .fcex-btn--solid{
  background: var(--fcex-fg) !important;
  color: var(--fcex-bg) !important;
  border-color: var(--fcex-fg) !important;
}
.fcex-scheme-light .fcex-btn--solid:hover,
.fcex-scheme-grey .fcex-btn--solid:hover,
.fcex-scheme-paper-ink .fcex-btn--solid:hover,
.fcex-scheme-grey-ink .fcex-btn--solid:hover,
.fcex-scheme-outline-light .fcex-btn--solid:hover{
  background: transparent !important;
  color: var(--fcex-fg) !important;
}
.fcex-scheme-light .fcex-btn--outline,
.fcex-scheme-grey .fcex-btn--outline,
.fcex-scheme-paper-ink .fcex-btn--outline,
.fcex-scheme-grey-ink .fcex-btn--outline,
.fcex-scheme-outline-light .fcex-btn--outline{
  color: var(--fcex-fg) !important;
  border-color: var(--fcex-fg) !important;
}
.fcex-scheme-light .fcex-btn--outline:hover,
.fcex-scheme-grey .fcex-btn--outline:hover,
.fcex-scheme-paper-ink .fcex-btn--outline:hover,
.fcex-scheme-grey-ink .fcex-btn--outline:hover,
.fcex-scheme-outline-light .fcex-btn--outline:hover{
  background: var(--fcex-fg) !important;
  color: var(--fcex-bg) !important;
}

.fcex-scheme-light .fcex-subnav,
.fcex-scheme-grey .fcex-subnav,
.fcex-scheme-paper-ink .fcex-subnav,
.fcex-scheme-grey-ink .fcex-subnav,
.fcex-scheme-outline-light .fcex-subnav{
  background: rgba(255,255,255,.94) !important;
  border-bottom-color: #e2e2e2;
}
.fcex-scheme-light .fcex-subnav a,
.fcex-scheme-grey .fcex-subnav a,
.fcex-scheme-paper-ink .fcex-subnav a,
.fcex-scheme-grey-ink .fcex-subnav a,
.fcex-scheme-outline-light .fcex-subnav a{ color: #5c5c5c; }
.fcex-scheme-light .fcex-subnav a:hover,
.fcex-scheme-grey .fcex-subnav a:hover,
.fcex-scheme-paper-ink .fcex-subnav a:hover,
.fcex-scheme-grey-ink .fcex-subnav a:hover,
.fcex-scheme-outline-light .fcex-subnav a:hover{ color: #0a0a0a; border-color: #d8d8d8; }
.fcex-scheme-light .fcex-subnav a.is-current,
.fcex-scheme-grey .fcex-subnav a.is-current,
.fcex-scheme-paper-ink .fcex-subnav a.is-current,
.fcex-scheme-grey-ink .fcex-subnav a.is-current,
.fcex-scheme-outline-light .fcex-subnav a.is-current{
  background: #0a0a0a; color: #ffffff; border-color: #0a0a0a;
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1080px){
  .fcex-cards{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fcex-expertise__grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 991px){
  .fcex-split{ grid-template-columns: 1fr !important; }
  .fcex-split__media{ order: 0 !important; }
  .fcex-phero__row{ flex-direction: column; align-items: flex-start; gap: 28px; }
  .fcex-road__item{ grid-template-columns: 80px 1fr; }
  .fcex-cta__inner{ align-items: flex-start; }
}

@media (max-width: 640px){
  .fcex{ --fcex-gutter: 18px; }
  .fcex-cards{ grid-template-columns: 1fr !important; }
  .fcex-expertise__grid{ grid-template-columns: 1fr !important; }
  .fcex-exp-card{ gap: 36px; padding: 32px 24px 28px; }
  .fcex-ticker__grid{ grid-template-columns: 1fr !important; }
  .fcex-ticker__item{
    border-right: none;
    border-bottom: 1px solid var(--fcex-ticker-line);
    padding: 22px var(--fcex-gutter);
  }
  .fcex-ticker__item:last-child{ border-bottom: none; }
  .fcex-road__item{ grid-template-columns: 1fr !important; gap: 10px; padding: 24px 4px; }
  .fcex-road__item:hover{ padding-left: 10px; }
  .fcex-check li{ grid-template-columns: calc(var(--fcex-tick-size) - 2px) 1fr; gap: 12px; }
  .fcex-btn{ padding: 15px 24px; font-size: 14px; }
}

/* ==========================================================================
   Reduced motion
   ========================================================================== */
@media (prefers-reduced-motion: reduce){
  .fcex-reveal{ opacity: 1; transform: none; transition: none; }
  .fcex-line__inner{ animation: none; transform: none; }
  .fcex-phero::after{ animation: none; }
  .fcex *{ transition-duration: .01ms !important; animation-duration: .01ms !important; }
}
