:root {
  --ct-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --ct-ok: #3f7024;
}

.page-main {
  min-height: 100vh;
  padding-top: calc(var(--banner-h) + var(--nav-h));
  background: var(--epx-dark);
}

.ct-sr-only {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.page-hero {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: minmax(0, 58fr) minmax(0, 42fr);
  align-items: stretch;
  min-height: min(720px, 84vh);
  border-bottom: 1px solid rgba(255,255,255,0.07);
  overflow: hidden;
}
@supports (height: 100svh) {
  .page-hero { min-height: min(720px, 84svh); }}

.ct-hero-figure {
  position: relative;
  margin: 0;
  overflow: hidden;
  background: #0d0d0d;
}
.ct-hero-figure img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 54% 50%;
  display: block;
  transform: scale(1.06);
  will-change: transform;
}
.ct-hero-figure::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  background:
    linear-gradient(to top,
      var(--epx-dark) 0%,
      rgba(17,17,17,0.62) 18%,
      rgba(17,17,17,0.10) 52%,
      rgba(17,17,17,0) 100%),
    linear-gradient(90deg,
      rgba(17,17,17,0.30) 0%,
      rgba(17,17,17,0) 26%,
      rgba(17,17,17,0) 72%,
      rgba(17,17,17,0.75) 100%);
}

.ct-hero-grid {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    repeating-linear-gradient(90deg, rgba(255,255,255,0.055) 0 1px, transparent 1px 84px),
    repeating-linear-gradient(180deg, rgba(255,255,255,0.045) 0 1px, transparent 1px 84px);
  -webkit-mask-image: radial-gradient(120% 90% at 45% 40%, #000 20%, transparent 78%);
  mask-image: radial-gradient(120% 90% at 45% 40%, #000 20%, transparent 78%);
}
.page-hero-inner {
  position: relative;
  display: flex;
  align-items: flex-start;
  padding: clamp(64px, 9vh, 116px) clamp(32px, 4.4vw, 72px) clamp(48px, 7vh, 88px)
           clamp(32px, 3.6vw, 60px);
}
.page-hero-text {
  position: relative;
  max-width: 560px;
  padding-left: 26px;
}
.page-hero-text::before {
  content: "";
  position: absolute;
  left: 0;
  top: 4px;
  bottom: 4px;
  width: 2px;
  border-radius: 2px;
  background: linear-gradient(180deg,
    var(--epx-red) 0%,
    rgba(225,31,38,0.55) 42%,
    rgba(255,255,255,0.08) 100%);
  transform-origin: top;
}
.ct-motion .page-hero-text::before {
  animation: ct-stripe-draw 1000ms var(--ct-expo) 320ms both;
}
@keyframes ct-stripe-draw {
  from { transform: scaleY(0); }
  to   { transform: scaleY(1); }}

.page-eyebrow {
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--epx-red);
  margin-bottom: 26px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.page-eyebrow::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--epx-red);
  flex-shrink: 0;
}
.page-title {
  font-size: clamp(38px, 3.8vw, 60px);
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.02;
  color: #fff;
  margin-bottom: 30px;
  text-wrap: balance;
}
.page-title em {
  font-style: italic;
  font-weight: 500;
  letter-spacing: -0.005em;
  color: #fff;
  text-shadow: 0 6px 44px rgba(225,31,38,0.5);
}
.page-blurb {
  font-size: clamp(15.5px, 1.05vw, 16.5px);
  font-weight: 400;
  color: rgba(255,255,255,0.66);
  max-width: 58ch;
  line-height: 1.55;
  margin: 0;
  text-wrap: pretty;
}

.page-hero-actions {
  margin-top: 40px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.page-hero-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 24px;
  background: var(--epx-red);
  color: #fff;
  border: 1px solid transparent;
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  transition: background-color 240ms var(--ease), border-color 240ms var(--ease),
              box-shadow 240ms var(--ease), transform 240ms var(--ease);
}
.page-hero-cta:hover {
  background: #c41a20;
  box-shadow: 0 12px 32px -10px rgba(225,31,38,0.55);
  transform: translateY(-2px);
}
.page-hero-cta:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.page-hero-cta svg { transition: transform 260ms var(--ease); }
.page-hero-cta:hover svg { transform: translateX(4px); }

.page-hero-cta--ghost {
  background: none;
  border-color: rgba(255,255,255,0.22);
  color: rgba(255,255,255,0.86);
}
.page-hero-cta--ghost:hover {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.42);
  box-shadow: none;
  color: #fff;
}

.ct-inner {
  position: relative;
  max-width: 1440px;
  margin: 0 auto;
  padding: 0 64px;
}
.ct-head {
  margin-bottom: 64px;
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 40px 80px;
  align-items: end;
}
.ct-eyebrow {
  grid-column: 1 / -1;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--epx-red);
  margin-bottom: -8px;
}
.ct-eyebrow .dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--epx-red);
  box-shadow: 0 0 0 0 rgba(225,31,38,0.5);
  animation: stat-pulse 1.6s ease-out infinite;
}
.ct-title {
  font-size: clamp(38px, 4.8vw, 64px);
  font-weight: 600;
  line-height: 1.04;
  letter-spacing: -0.02em;
  margin: 0;
  color: var(--epx-dark);
  text-wrap: balance;
}
.ct-title em { font-style: italic; font-weight: 400; color: rgba(17,17,17,0.52); }
.ct-blurb {
  font-size: 16px;
  line-height: 1.6;
  color: rgba(17,17,17,0.62);
  max-width: 46ch;
  margin: 0;
  padding-bottom: 8px;
  text-wrap: pretty;
}
.ct-head--dark .ct-title { color: #fff; }
.ct-head--dark .ct-title em { color: rgba(255,255,255,0.45); }
.ct-head--dark .ct-blurb { color: rgba(255,255,255,0.62); }

.ct-trust {
  position: relative;
  background: #fff;
  color: var(--epx-dark);
  padding: 150px 0 150px;
  overflow: hidden;
}
.ct-trust::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle at 1px 1px, rgba(17,17,17,0.09) 1px, transparent 0);
  background-size: 26px 26px;
  -webkit-mask-image: radial-gradient(58% 52% at 50% 62%, #000 0%, transparent 78%);
  mask-image: radial-gradient(58% 52% at 50% 62%, #000 0%, transparent 78%);
}
.ct-trust-intro {
  max-width: 58ch;
  margin: -28px 0 54px;
  font-size: 16px;
  line-height: 1.62;
  color: rgba(17,17,17,0.62);
  text-wrap: pretty;
}

.ct-net { position: relative; }
.ct-net-stage {
  position: relative;
  width: 100%;
  max-width: 1180px;
  margin: 0 auto;
  aspect-ratio: 1000 / 620;
}
.ct-net-web {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.ct-net-line {
  fill: none;
  stroke-width: 1;
  transition: stroke 300ms var(--ease), stroke-width 300ms var(--ease);
}
.ct-net-line--sponsor { stroke: rgba(225,31,38,0.24); }
.ct-net-line--research { stroke: rgba(110,175,71,0.26); }
.ct-net-line.is-hot { stroke-width: 2; }
.ct-net-line--sponsor.is-hot { stroke: rgba(225,31,38,0.9); }
.ct-net-line--research.is-hot { stroke: rgba(110,175,71,0.95); }
.ct-net-flow {
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-dasharray: 0.06 0.94;
  stroke-dashoffset: 1;
  opacity: 0;
}
.ct-net-flow--sponsor { stroke: #e11f26; }
.ct-net-flow--research { stroke: #6eaf47; }

.ct-net-hub {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 3;
  width: 132px; height: 132px;
  margin: -66px 0 0 -66px;
  display: grid;
  place-items: center;
}
.ct-net-hub-disc {
  position: relative;
  z-index: 2;
  width: 116px; height: 116px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  padding: 26px;
  background: #fff;
  border: 1px solid rgba(17,17,17,0.10);
  box-shadow: 0 18px 44px -20px rgba(17,17,17,0.35), 0 0 0 10px rgba(225,31,38,0.05);
  transition: box-shadow 360ms var(--ease), transform 420ms var(--ct-expo);
}
.ct-net-hub-disc img {
  width: 100%;
  height: auto;
  object-fit: contain;
  display: block;
}
.ct-net-hub-ring {
  position: absolute;
  width: 116px; height: 116px;
  border-radius: 50%;
  border: 1px solid rgba(225,31,38,0.4);
  opacity: 0;
  pointer-events: none;
}
.ct-net-hub:hover .ct-net-hub-disc {
  transform: scale(1.04);
  box-shadow: 0 22px 54px -20px rgba(17,17,17,0.42), 0 0 0 14px rgba(225,31,38,0.08);
}

.ct-net-label {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 8px 16px;
  border-radius: 999px;
  border: 1px solid rgba(17,17,17,0.10);
  background: #fff;
  font-size: 10.5px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 600;
  color: rgba(17,17,17,0.6);
  white-space: nowrap;
}
.ct-net-group--sponsor .ct-net-label { top: -14px; }
.ct-net-group--research .ct-net-label { bottom: -14px; }
.ct-net-label-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  flex: none;
}
.ct-net-group--sponsor .ct-net-label-dot { background: var(--epx-red); }
.ct-net-group--research .ct-net-label-dot { background: var(--ct-ok); }

.ct-net-list { list-style: none; margin: 0; padding: 0; }
.ct-net-node {
  position: absolute;
  left: var(--x);
  top: var(--y);
  z-index: 2;
  width: 124px;
  height: 58px;
  margin: -29px 0 0 -62px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 10px 14px;
  border-radius: 12px;
  border: 1px solid rgba(17,17,17,0.08);
  background: #fff;
  box-shadow: 0 8px 22px -14px rgba(17,17,17,0.35);
  transition: transform 340ms var(--ct-expo), box-shadow 340ms var(--ease),
              border-color 300ms var(--ease), opacity 300ms var(--ease);
}
.ct-net-node img {
  max-width: 100%;
  max-height: 34px;
  width: auto;
  object-fit: contain;
  filter: grayscale(1);
  opacity: 0.62;
  transition: filter 320ms var(--ease), opacity 320ms var(--ease);
}
.ct-net-node:hover {
  transform: scale(1.07);
  z-index: 4;
  box-shadow: 0 16px 34px -16px rgba(17,17,17,0.42);
}
.ct-net-group--sponsor .ct-net-node:hover { border-color: rgba(225,31,38,0.42); }
.ct-net-group--research .ct-net-node:hover { border-color: rgba(110,175,71,0.5); }
.ct-net-node:hover img { filter: grayscale(0); opacity: 1; }
.ct-net.is-focused .ct-net-node { opacity: 0.34; }
.ct-net.is-focused .ct-net-node:hover { opacity: 1; }
.ct-net.is-all .ct-net-node { opacity: 1; }
.ct-net.is-all .ct-net-node img { filter: grayscale(0); opacity: 1; }

.ct-net-tip {
  position: absolute;
  top: calc(100% + 9px);
  left: 50%;
  transform: translate(-50%, 4px);
  z-index: 5;
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 9px 13px;
  border-radius: 10px;
  background: var(--epx-dark);
  color: rgba(255,255,255,0.62);
  font-size: 9.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  line-height: 1.3;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 240ms var(--ease), transform 300ms var(--ct-expo);
}
.ct-net-tip strong {
  font-size: 12px;
  letter-spacing: -0.005em;
  text-transform: none;
  color: #fff;
}
.ct-net-node:hover .ct-net-tip { opacity: 1; transform: translate(-50%, 0); }

.ct-net-group--research .ct-net-tip {
  top: auto;
  bottom: calc(100% + 9px);
  transform: translate(-50%, -4px);
}
.ct-net-group--research .ct-net-node:hover .ct-net-tip { transform: translate(-50%, 0); }

.ct-advantage {
  position: relative;
  background: var(--epx-dark);
  color: #fff;
  padding: 150px 0 130px;
  overflow: hidden;
}
.ct-advantage::before {
  content: "";
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 50% 60% at 88% 10%, rgba(225,31,38,0.09) 0%, transparent 60%),
    radial-gradient(ellipse 60% 50% at 6% 90%, rgba(110,175,71,0.06) 0%, transparent 60%);
  pointer-events: none;
}
.ct-advantage .ct-title em {
  color: #fff;
  font-weight: 500;
  text-shadow: 0 6px 40px rgba(225,31,38,0.45);
}

.ct-pillars {
  position: relative;
  display: grid;
  grid-template-columns: 1fr minmax(76px, 104px) 1fr;
  align-items: stretch;
  gap: 0;
}
.ct-pillar {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  gap: 18px;
  padding: 34px 32px 30px;
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 22px;
}
.ct-pillar > * { position: relative; z-index: 1; }

.ct-pillar--infra { background: rgba(255,255,255,0.045); }
.ct-pillar--infra::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
  pointer-events: none;
  background:
    radial-gradient(110% 80% at 0% 0%, rgba(255,255,255,0.07) 0%, transparent 58%),
    repeating-linear-gradient(135deg, rgba(255,255,255,0.03) 0 1px, transparent 1px 13px);
  -webkit-mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,0.25) 62%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 0%, rgba(0,0,0,0.25) 62%, transparent 100%);
}

.ct-pillar--people {
  background: rgba(0,0,0,0.30);
  border-color: rgba(225,31,38,0.24);
}

.ct-pillar-media {
  position: relative;
  aspect-ratio: 16 / 9;
  border-radius: 14px;
  overflow: hidden;
  margin-bottom: 2px;
}
.ct-pillar-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ct-pillar-veil {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(225,31,38,0.20) 0%, rgba(225,31,38,0.04) 38%, rgba(17,17,17,0.10) 55%, rgba(17,17,17,0.86) 100%);
}
.ct-pillar-stats {
  position: absolute;
  left: 14px; right: 14px; bottom: 13px;
  z-index: 2;
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.ct-pillar-stats li {
  padding: 7px 12px;
  border: 1px solid rgba(255,255,255,0.22);
  border-radius: 999px;
  background: rgba(17,17,17,0.5);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: rgba(255,255,255,0.9);
}
.ct-pillar-stats li:first-child { border-color: rgba(225,31,38,0.5); }

.ct-pillar-hd { display: flex; align-items: center; gap: 16px; }
.ct-pillar-icon {
  width: 58px; height: 58px;
  border-radius: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.14);
  color: rgba(255,255,255,0.85);
  flex-shrink: 0;
}
.ct-pillar--people .ct-pillar-icon {
  background: rgba(225,31,38,0.14);
  border-color: rgba(225,31,38,0.4);
  color: #ff5a60;
}
.ct-pillar-icon svg { width: 27px; height: 27px; }
.ct-pillar-kicker {
  display: block;
  font-size: 10px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 600;
  color: rgba(255,255,255,0.42);
  margin-bottom: 7px;
}
.ct-pillar--people .ct-pillar-kicker { color: rgba(255,143,147,0.72); }
.ct-pillar-title {
  font-size: 21px;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: #fff;
  margin: 0;
  text-wrap: balance;
}
.ct-pillar-text {
  font-size: 14.5px;
  line-height: 1.6;
  color: rgba(255,255,255,0.62);
  margin: 0;
  text-wrap: pretty;
}

.ct-pillar-list {
  list-style: none;
  margin: auto 0 0;
  padding: 18px 0 0;
  border-top: 1px solid rgba(255,255,255,0.12);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ct-pillar-list li {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 9px 10px;
  margin: 0 -10px;
  border-radius: 11px;
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: rgba(255,255,255,0.72);
  transition: color 240ms var(--ease), background-color 240ms var(--ease);
}
.ct-pillar-list li:hover { background: rgba(255,255,255,0.05); color: #fff; }
.ct-pillar-badge {
  width: 32px; height: 32px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(255,255,255,0.04);
  color: rgba(255,255,255,0.68);
  transition: color 240ms var(--ease), border-color 240ms var(--ease),
              background-color 240ms var(--ease), transform 320ms var(--ct-expo);
}
.ct-pillar-badge svg { width: 17px; height: 17px; }
.ct-pillar-list li:hover .ct-pillar-badge {
  border-color: rgba(225,31,38,0.45);
  background: rgba(225,31,38,0.15);
  color: #ff5a60;
  transform: translateY(-1px);
}

.ct-pillar-join {
  display: flex;
  align-items: center;
  justify-content: center;
}
.ct-join-line {
  flex: 1;
  height: 1px;
  min-width: 8px;
  background: rgba(225,31,38,0.42);
}
.ct-join-plus {
  flex: none;
  width: 54px; height: 54px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(225,31,38,0.45);
  background: rgba(225,31,38,0.14);
  color: #ff5a60;
}
.ct-join-plus svg { width: 22px; height: 22px; }

.ct-junction {
  position: relative;
  height: 84px;
  margin-top: 4px;
}
.ct-junction-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.ct-junction-path {
  fill: none;
  stroke: rgba(225,31,38,0.55);
  stroke-width: 1;
}
.ct-junction-node {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translate(-50%, 50%);
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--epx-red);
  box-shadow: 0 0 0 7px rgba(225,31,38,0.12);
}
.ct-junction-label {
  text-align: center;
  margin: 26px 0 0;
  font-size: 12px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 600;
  color: #ff8f93;
}

.ct-points {
  --cp-surface: #f5f5f3;
  position: relative;
  background: var(--cp-surface);
  color: var(--epx-dark);
  padding: 140px 0 160px;
  overflow: hidden;
}
.ct-points::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.85) 0%, rgba(255,255,255,0) 42%),
    radial-gradient(circle at 1px 1px, rgba(17,17,17,0.055) 1px, transparent 0);
  background-size: auto, 28px 28px;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 76%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 0%, #000 76%, transparent 100%);
}

.ct-cp-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.ct-cp-row:nth-child(1) { --seg: #e11f26; }
.ct-cp-row:nth-child(2) { --seg: #d8442c; }
.ct-cp-row:nth-child(3) { --seg: #c96530; }
.ct-cp-row:nth-child(4) { --seg: #b3833a; }
.ct-cp-row:nth-child(5) { --seg: #969c41; }
.ct-cp-row:nth-child(6) { --seg: #7fa946; }
.ct-cp-row:nth-child(7) { --seg: #6eaf47; }

.ct-cp-row {
  position: relative;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  column-gap: 26px;
  padding-bottom: 34px;
}
.ct-cp-row:last-child { padding-bottom: 0; }

.ct-cp-row::before {
  content: "";
  position: absolute;
  left: 22px;
  top: 0;
  bottom: 0;
  width: 2px;
  background: rgba(17,17,17,0.11);
}

.ct-cp-row::after {
  content: "";
  position: absolute;
  left: 22px;
  top: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(180deg, var(--seg), var(--seg));
  transform: scaleY(0);
  transform-origin: top;
  transition: transform 620ms var(--ct-expo);
}
.ct-cp-row.is-lit::after { transform: scaleY(1); }

.ct-cp-row:first-child::before,
.ct-cp-row:first-child::after { top: 23px; }
.ct-cp-row:last-child::before,
.ct-cp-row:last-child::after { bottom: auto; height: 23px; }

.ct-cp-phase {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 11px;
  margin: 0 0 22px;
  font-size: 10.5px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 600;
  color: rgba(17,17,17,0.5);
}
.ct-cp-row:not(:first-child) .ct-cp-phase { margin-top: 22px; }
.ct-cp-phase-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--seg);
  flex: none;
  margin-left: 19px;
  box-shadow: 0 0 0 4px var(--cp-surface);
}

.ct-cp-node {
  position: relative;
  z-index: 2;
  grid-column: 1;
  align-self: start;
  width: 46px; height: 46px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 2px solid rgba(17,17,17,0.14);
  background: #fff;
  transition: border-color 320ms var(--ease), background-color 320ms var(--ease),
              box-shadow 320ms var(--ease);
}
.ct-cp-node-num {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  font-variant-numeric: tabular-nums;
  color: rgba(17,17,17,0.42);
  transition: color 320ms var(--ease);
}
.ct-cp-row.is-lit .ct-cp-node {
  border-color: var(--seg);
  background: var(--seg);
}
.ct-cp-row.is-lit .ct-cp-node-num { color: #fff; }

.ct-cp-row.is-current .ct-cp-node {
  box-shadow: 0 0 0 6px color-mix(in srgb, var(--seg) 18%, transparent);
}

.ct-cp-node-flag {
  position: absolute;
  right: -5px;
  bottom: -5px;
  width: 20px; height: 20px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  color: var(--seg);
  box-shadow: 0 0 0 2px var(--cp-surface), 0 2px 6px -2px rgba(17,17,17,0.4);
  opacity: 0;
  transform: scale(0.3);
  transition: opacity 260ms var(--ease), transform 420ms var(--ct-expo);
}
.ct-cp-node-flag svg { width: 11px; height: 11px; }
.ct-cp-row.is-lit .ct-cp-node-flag {
  opacity: 1;
  transform: none;
  transition-delay: 260ms;
}

.ct-cp-card {
  grid-column: 2;
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
  align-items: stretch;
  border: 1px solid rgba(17,17,17,0.07);
  border-radius: 22px;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 2px 4px -2px rgba(17,17,17,0.06), 0 12px 30px -22px rgba(17,17,17,0.35);
  transition: transform 360ms var(--ct-expo), border-color 300ms var(--ease),
              box-shadow 360ms var(--ease);
}
.ct-cp-row:nth-child(even) .ct-cp-media { order: 2; }
.ct-cp-card:hover {
  transform: translateY(-4px);
  border-color: rgba(17,17,17,0.12);
  box-shadow: 0 4px 8px -4px rgba(17,17,17,0.08), 0 30px 56px -28px rgba(17,17,17,0.45);
}

.ct-cp-media { position: relative; min-height: 300px; overflow: hidden; }
.ct-cp-media img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 900ms var(--ct-expo), filter 500ms var(--ease);
}
.ct-cp-card:hover .ct-cp-media img { transform: scale(1.045); filter: brightness(1.06); }

.ct-cp-veil {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(17,17,17,0.34) 0%, rgba(17,17,17,0) 36%);
}
.ct-cp-badge {
  position: absolute;
  top: 16px;
  left: 16px;
  z-index: 2;
  padding: 7px 12px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.28);
  background: rgba(17,17,17,0.45);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.16em;
  font-variant-numeric: tabular-nums;
  color: #fff;
  transition: border-color 300ms var(--ease), background-color 300ms var(--ease);
}
.ct-cp-row:nth-child(even) .ct-cp-badge { left: auto; right: 16px; }
.ct-cp-card:hover .ct-cp-badge {
  border-color: color-mix(in srgb, var(--seg) 60%, transparent);
  background: color-mix(in srgb, var(--seg) 78%, rgba(17,17,17,0.4));
}

.ct-cp-body {
  padding: 34px 32px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border-left: 1px solid rgba(17,17,17,0.07);
}
.ct-cp-row:nth-child(even) .ct-cp-body {
  border-left: none;
  border-right: 1px solid rgba(17,17,17,0.07);
}
.ct-cp-hd {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 14px;
}
.ct-cp-step {
  flex: none;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-variant-numeric: tabular-nums;
  color: var(--seg);
}
.ct-cp-rule {
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--seg) 45%, transparent), rgba(17,17,17,0.08));
}
.ct-cp-chev {
  flex: none;
  width: 17px; height: 17px;
  color: var(--seg);
  opacity: 0;
  transform: translateX(-6px);
  transition: opacity 300ms var(--ease), transform 380ms var(--ct-expo);
}
.ct-cp-card:hover .ct-cp-chev { opacity: 1; transform: none; }
.ct-cp-name {
  margin: 0 0 11px;
  font-size: 23px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--epx-dark);
}
.ct-cp-text {
  font-size: 15px;
  line-height: 1.66;
  color: rgba(17,17,17,0.66);
  margin: 0;
  max-width: 46ch;
  text-wrap: pretty;
}

.ct-cp-data {
  margin: 24px 0 0;
  padding-top: 20px;
  border-top: 1px solid rgba(17,17,17,0.08);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.ct-cp-data dt {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 600;
  color: rgba(17,17,17,0.48);
  margin-bottom: 9px;
  transition: color 260ms var(--ease);
}
.ct-cp-data-icon {
  display: inline-flex;
  width: 24px; height: 24px;
  border-radius: 8px;
  align-items: center;
  justify-content: center;
  flex: none;
  border: 1px solid rgba(17,17,17,0.11);
  background: rgba(17,17,17,0.03);
  color: rgba(17,17,17,0.5);
  transition: color 260ms var(--ease), border-color 260ms var(--ease),
              background-color 260ms var(--ease);
}
.ct-cp-data-icon svg { width: 13px; height: 13px; }
.ct-cp-data dd {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.42;
  color: var(--epx-dark);
  font-variant-numeric: tabular-nums;
}
.ct-cp-card:hover .ct-cp-data dt { color: rgba(17,17,17,0.68); }
.ct-cp-card:hover .ct-cp-data-icon {
  color: var(--seg);
  border-color: color-mix(in srgb, var(--seg) 40%, transparent);
  background: color-mix(in srgb, var(--seg) 10%, transparent);
}

.ct-quality {
  position: relative;
  background: var(--epx-dark);
  color: #fff;
  padding: 150px 0 160px;
  overflow: hidden;
}

.ct-quality::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse 44% 38% at 50% 30%, rgba(110,175,71,0.11) 0%, transparent 64%),
    radial-gradient(circle at 1px 1px, rgba(255,255,255,0.05) 1px, transparent 0);
  background-size: auto, 32px 32px;
  -webkit-mask-image: radial-gradient(78% 62% at 50% 32%, #000 0%, transparent 82%);
  mask-image: radial-gradient(78% 62% at 50% 32%, #000 0%, transparent 82%);
}

.ct-qa { position: relative; }

.ct-qa-hub {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.ct-qa-node {
  position: relative;
  z-index: 2;
  width: 78px; height: 78px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(110,175,71,0.5);
  background:
    radial-gradient(circle at 50% 34%, rgba(110,175,71,0.30) 0%, rgba(110,175,71,0.10) 62%),
    rgba(17,17,17,0.9);
  color: #8ecb66;
  box-shadow: 0 0 44px -8px rgba(110,175,71,0.45);
  transition: box-shadow 320ms var(--ease), border-color 320ms var(--ease);
}
.ct-qa-node svg { width: 34px; height: 34px; }

.ct-qa-rings {
  position: absolute;
  top: 39px;
  left: 50%;
  width: 78px; height: 78px;
  margin: -39px 0 0 -39px;
  border-radius: 50%;
  border: 1px solid rgba(110,175,71,0.4);
  opacity: 0;
  pointer-events: none;
}
.ct-qa-hub-label {
  font-size: 12px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 600;
  color: #8ecb66;
}
.ct-qa-hub:hover .ct-qa-node {
  border-color: rgba(142,203,102,0.85);
  box-shadow: 0 0 60px -6px rgba(110,175,71,0.6);
}

.ct-qa-web {
  display: block;
  width: calc(100% - (100% - 40px) / 3);
  margin: 0 auto;
  height: 96px;
  overflow: visible;
}
.ct-qa-path {
  fill: none;
  stroke: rgba(110,175,71,0.42);
  stroke-width: 1;
  transition: stroke 320ms var(--ease);
}
.ct-qa-flow {
  fill: none;
  stroke: #a9e082;
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-dasharray: 0.05 0.95;
  stroke-dashoffset: 1;
  opacity: 0;
}
.ct-qa-hub:hover ~ .ct-qa-web .ct-qa-path { stroke: rgba(142,203,102,0.85); }

.ct-qa-branches {
  list-style: none;
  margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.ct-qa-branch {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 15px;
  padding: 34px 28px 28px;
  border: 1px solid rgba(255,255,255,0.09);
  border-top: 2px solid rgba(110,175,71,0.5);
  border-radius: 0 0 18px 18px;
  background: rgba(255,255,255,0.025);
  transition: transform 320ms var(--ct-expo), border-color 280ms var(--ease),
              background-color 280ms var(--ease), box-shadow 320ms var(--ease),
              opacity 280ms var(--ease);
}

.ct-qa-dot {
  position: absolute;
  top: -2px;
  left: 50%;
  width: 10px; height: 10px;
  margin-left: -5px;
  margin-top: -5px;
  border-radius: 50%;
  background: #8ecb66;
  box-shadow: 0 0 0 5px rgba(110,175,71,0.16);
  transition: box-shadow 280ms var(--ease);
}
.ct-qa-branch:hover {
  transform: translateY(-5px);
  border-color: rgba(255,255,255,0.14);
  border-top-color: rgba(142,203,102,0.9);
  background: rgba(255,255,255,0.05);
  box-shadow: 0 26px 54px -30px rgba(0,0,0,0.9), 0 0 34px -14px rgba(110,175,71,0.5);
}
.ct-qa-branch:hover .ct-qa-dot { box-shadow: 0 0 0 8px rgba(110,175,71,0.22); }

.ct-qa-branches:hover > .ct-qa-branch:not(:hover) { opacity: 0.5; }
.ct-qa-hub:hover ~ .ct-qa-branches .ct-qa-branch { border-top-color: rgba(142,203,102,0.85); }

.ct-qa-icon {
  width: 52px; height: 52px;
  border-radius: 15px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(110,175,71,0.28);
  background: rgba(110,175,71,0.10);
  color: #8ecb66;
  transition: transform 320ms var(--ct-expo), background-color 280ms var(--ease),
              border-color 280ms var(--ease);
}
.ct-qa-icon svg { width: 25px; height: 25px; }
.ct-qa-branch:hover .ct-qa-icon {
  transform: translateY(-2px) scale(1.04);
  border-color: rgba(110,175,71,0.5);
  background: rgba(110,175,71,0.16);
}
.ct-qa-title {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.018em;
  line-height: 1.22;
  color: #fff;
  margin: -3px 0 0;
  text-wrap: balance;
}
.ct-qa-text {
  font-size: 14px;
  line-height: 1.62;
  color: rgba(255,255,255,0.62);
  margin: 0;
  text-wrap: pretty;
}
.ct-qa-tokens {
  list-style: none;
  margin: auto 0 0;
  padding: 18px 0 0;
  border-top: 1px solid rgba(255,255,255,0.12);
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.ct-qa-tokens li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 600;
  color: rgba(142,203,102,0.9);
  padding: 6px 11px;
  border: 1px solid rgba(110,175,71,0.3);
  border-radius: 999px;
  cursor: default;
  transition: color 240ms var(--ease), border-color 240ms var(--ease),
              background-color 240ms var(--ease), transform 280ms var(--ct-expo);
}
.ct-qa-tick {
  display: inline-flex;
  flex: none;
  width: 11px;
  opacity: 0;
  transform: scale(0.55);
  transition: opacity 220ms var(--ease), transform 300ms var(--ct-expo);
}
.ct-qa-tick svg { width: 11px; height: 11px; flex: none; }
.ct-qa-tokens li:hover {
  transform: translateY(-1px);
  color: #cdf0b2;
  border-color: rgba(142,203,102,0.75);
  background: rgba(110,175,71,0.14);
}
.ct-qa-tokens li:hover .ct-qa-tick { opacity: 1; transform: none; }

.ct-qa-tokens li.is-key {
  color: #0f1a09;
  background: #8ecb66;
  border-color: #8ecb66;
}
.ct-qa-tokens li.is-key:hover {
  color: #0f1a09;
  background: #a9e082;
  border-color: #a9e082;
}

.ct-network {
  background: #fff;
  color: var(--epx-dark);
  padding: 150px 0 160px;
}

.ct-pin {
  --vh: 100vh;
  --stick-top: calc(var(--banner-h) + var(--nav-h));
  --stage-h: calc(var(--vh) - var(--stick-top));
  --step-h: 78vh;
  --travel: calc(3 * var(--step-h));
  position: relative;

  height: calc(var(--stage-h) + var(--travel));
}

@supports (height: 100svh) {
  .ct-pin { --vh: 100svh; }}

.ct-pin-stage {
  position: sticky;
  top: var(--stick-top);
  height: var(--stage-h);
  box-sizing: border-box;
  padding: 20px 0 24px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.ct-pin-stage .ct-head {
  margin-bottom: 0;
  flex-shrink: 0;
  gap: 14px 56px;
}
.ct-pin-stage .ct-title { font-size: clamp(28px, 3vw, 42px); }
.ct-pin-stage .ct-blurb { font-size: 14.5px; padding-bottom: 2px; }

.ct-pin-grid {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: center;
}

.ct-globe-frame {
  position: relative;
  width: min(100%, 54vh);
  aspect-ratio: 1 / 1;
  justify-self: center;
  align-self: center;
}
.ct-globe-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }

.ct-pin-track {
  position: absolute;
  left: 0; right: 0;
  top: calc(var(--vh) / 2 - var(--stick-top));
  height: var(--travel);
  pointer-events: none;
}
.ct-pin-step { display: block; height: 25%; }

.ct-pin-foot { display: flex; flex-direction: column; gap: 12px; flex-shrink: 0; }
.ct-pin-progress {
  position: relative;
  height: 2px;
  background: rgba(17,17,17,0.10);
  overflow: hidden;
}
.ct-pin-progress-fill {
  position: absolute;
  inset: 0;
  background: var(--epx-red);
  transform-origin: left center;
  transform: scaleX(0.25);
  transition: transform 520ms var(--ct-expo);
}

.ct-globe-switch {
  list-style: none;
  margin: 0; padding: 18px 0 0;
  border-top: 1px solid rgba(17,17,17,0.12);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 4px;
}
.ct-globe-btn {
  font: inherit;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 9px;
  padding: 10px 8px 12px 0;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  -webkit-tap-highlight-color: transparent;
}
.ct-globe-btn-i {
  font-size: 10px;
  letter-spacing: 0.2em;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: rgba(17,17,17,0.45);
  transition: color 300ms var(--ct-expo);
}
.ct-globe-btn-node {
  width: 9px; height: 9px;
  border-radius: 50%;
  background: rgba(17,17,17,0.28);
  transition: background-color 300ms var(--ct-expo), box-shadow 300ms var(--ct-expo);
}
.ct-globe-btn-t {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.3;
  color: rgba(17,17,17,0.62);
  transition: color 300ms var(--ct-expo);
}
.ct-globe-btn:hover .ct-globe-btn-t { color: var(--epx-dark); }
.ct-globe-btn.is-active .ct-globe-btn-i,
.ct-globe-btn.is-active .ct-globe-btn-t { color: var(--epx-red); }
.ct-globe-btn.is-active .ct-globe-btn-node {
  background: var(--epx-red);
  box-shadow: 0 0 0 4px rgba(225,31,38,0.14);
}
.ct-globe-btn--planned .ct-globe-btn-node {
  background: transparent;
  box-shadow: inset 0 0 0 1.5px rgba(17,17,17,0.4);
}
.ct-globe-btn--planned.is-active .ct-globe-btn-node {
  background: transparent;
  box-shadow: inset 0 0 0 1.5px var(--epx-red), 0 0 0 4px rgba(225,31,38,0.14);
}
.ct-globe-btn:focus-visible { outline: 2px solid var(--epx-red); outline-offset: 3px; }

.ct-markets { list-style: none; margin: 0; padding: 0; }
.ct-market {
  padding: 13px 0;
  border-top: 1px solid rgba(17,17,17,0.10);
  opacity: 0.4;
  transition: opacity 420ms var(--ct-expo);
  cursor: pointer;
}
.ct-market:first-child { border-top: none; }
.ct-market.is-active { opacity: 1; cursor: default; }
.ct-market:not(.is-active):hover { opacity: 0.7; }

.ct-market-pick {
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
  background: none;
  border: 0;
  padding: 0;
  margin: 0;
  text-align: left;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.ct-market-pick:focus-visible { outline: 2px solid var(--epx-red); outline-offset: 4px; }

.ct-market-hd { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.ct-market-idx {
  font-size: 10px;
  letter-spacing: 0.2em;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: rgba(17,17,17,0.42);
  transition: color 380ms var(--ct-expo);
}
.ct-market.is-active .ct-market-idx { color: var(--epx-red); }
.ct-market-flag {
  width: 26px; height: 18px;
  object-fit: cover;
  border-radius: 3px;
  display: block;
  box-shadow: 0 0 0 1px rgba(17,17,17,0.12);
  flex-shrink: 0;
}
.ct-market-name {
  font-size: 21px;
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.05;
  color: var(--epx-dark);
  margin: 0;

  transition: color 380ms var(--ct-expo);
}
.ct-market.is-active .ct-market-name { color: var(--epx-red); font-size: 32px; }

.ct-market-mini,
.ct-market-more {
  display: grid;
  transition: grid-template-rows 440ms var(--ct-expo), opacity 340ms var(--ct-expo);
}
.ct-market-mini { grid-template-rows: 1fr; opacity: 1; }
.ct-market-more { grid-template-rows: 0fr; opacity: 0; }
.ct-market.is-active .ct-market-mini { grid-template-rows: 0fr; opacity: 0; }
.ct-market.is-active .ct-market-more { grid-template-rows: 1fr; opacity: 1; }
.ct-market-mini-in,
.ct-market-more-in { overflow: hidden; min-height: 0; }
.ct-market-mini-in p {
  margin: 6px 0 0;
  font-size: 12.5px;
  letter-spacing: 0.02em;
  color: rgba(17,17,17,0.6);
}

.ct-market-status {
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--ct-ok);
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.ct-market-status::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor;
}
.ct-market-status--planned { color: rgba(17,17,17,0.62); }
.ct-market-status--planned::before { background: transparent; box-shadow: inset 0 0 0 1.5px currentColor; }
.ct-market.is-planned .ct-market-name { color: rgba(17,17,17,0.55); }
.ct-market.is-planned.is-active .ct-market-name { color: var(--epx-red); }
.ct-market.is-planned .ct-market-flag { filter: grayscale(0.6); opacity: 0.85; }

.ct-market-figures {
  list-style: none;
  margin: 10px 0 2px;
  padding: 14px 0 0;
  border-top: 1px solid rgba(17,17,17,0.12);
  display: flex;
  flex-wrap: wrap;
  gap: 12px 32px;
  width: 100%;
}
.ct-market-figures > li { display: flex; flex-direction: column; gap: 5px; }
.ct-market-fig {
  font-size: 30px;
  font-weight: 600;
  letter-spacing: -0.035em;
  line-height: 0.9;
  color: var(--epx-dark);
  font-variant-numeric: tabular-nums;
}
.ct-market-fig--word { font-size: 19px; letter-spacing: -0.018em; line-height: 1.15; }
.ct-market-figlabel {
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 600;
  color: rgba(17,17,17,0.6);
}
.ct-market-text {
  font-size: 14.5px;
  line-height: 1.6;
  color: rgba(17,17,17,0.68);
  margin: 4px 0 0;
  max-width: 44ch;
  text-wrap: pretty;
}
.ct-market-text strong { color: var(--epx-dark); font-weight: 600; }

@media (max-width: 1080px) {
  .ct-pin { height: auto; }
  .ct-pin-stage {
    position: static;
    height: auto;
    padding: 0;
    gap: 0;
  }
  .ct-pin-grid { display: block; }
  .ct-globe-frame { display: none; }
  .ct-pin-track { display: none; }

  .ct-pin-stage .ct-head { order: -2; margin-bottom: 40px; }
  .ct-pin-stage .ct-title { font-size: clamp(38px, 4.8vw, 64px); }
  .ct-pin-stage .ct-blurb { font-size: 16px; }

  .ct-pin-foot {
    order: -1;
    position: sticky;
    top: calc(var(--banner-h) + var(--nav-h));
    z-index: 3;
    background: #fff;
    padding: 12px 0 14px;
    margin-bottom: 8px;
    border-bottom: 1px solid rgba(17,17,17,0.08);
    transition: top 480ms var(--ease);
  }
  /* The nav is not a fixed-height obstacle. It slides away on scroll-down and
     collapses to a flush pill on scroll-up, so a constant offset parks this bar
     below where the nav no longer is and opens a strip of bare page above it.
     480ms matches the nav's own transition so the two travel together. */
  body:has(.nav.nav-hidden) .ct-pin-foot { top: var(--banner-h); }
  .ct-globe-switch { padding-top: 0; border-top: none; gap: 2px; }
  .ct-globe-btn { padding: 10px 4px; gap: 7px; min-height: 44px; }

  .ct-market { opacity: 1; padding: 26px 0; }
  .ct-market-name,
  .ct-market.is-active .ct-market-name { font-size: clamp(26px, 7vw, 34px); }
  .ct-market-mini,
  .ct-market.is-active .ct-market-mini { grid-template-rows: 0fr; opacity: 0; }
  .ct-market-more,
  .ct-market.is-active .ct-market-more { grid-template-rows: 1fr; opacity: 1; }
  .ct-market-fig { font-size: 34px; }
  .ct-market-fig--word { font-size: 21px; }
  .ct-market-figures { gap: 14px 30px; padding-top: 16px; }
  .ct-market-text { font-size: 15px; }}

@media (max-width: 768px) {
  .ct-globe-btn-t { font-size: 11px; }
  .ct-globe-btn-i { font-size: 9px; letter-spacing: 0.16em; }
  .ct-market { padding: 24px 0; }
  body:has(.nav.is-floating) .ct-pin-foot { top: var(--nav-h); }
  body:has(.nav.nav-hidden) .ct-pin-foot { top: var(--banner-h); }}

@media (max-width: 359px) {
  .ct-globe-switch { grid-template-columns: repeat(2, 1fr); gap: 8px 4px; }
  .ct-market-figures { gap: 12px 22px; }}

@media (min-width: 1081px) and (max-height: 820px) {
  .ct-globe-frame { width: min(100%, 40vh); }
  .ct-market { padding: 8px 0; }
  .ct-market.is-active .ct-market-name { font-size: 26px; }
  .ct-market-fig { font-size: 24px; }
  .ct-market-figures { padding-top: 10px; gap: 8px 24px; }
  .ct-pin-stage { padding: 14px 0 18px; gap: 14px; }
  .ct-pin-stage .ct-title { font-size: clamp(24px, 2.4vw, 32px); }
  .ct-pin-stage .ct-blurb { font-size: 13.5px; }
  .ct-pin-stage .ct-head { gap: 10px 40px; }}

@media (prefers-reduced-motion: reduce) {
  .ct-market,
  .ct-market-name,
  .ct-market-idx,
  .ct-market-mini,
  .ct-market-more,
  .ct-pin-progress-fill,
  .ct-globe-btn-i,
  .ct-globe-btn-t,
  .ct-globe-btn-node { transition: none; }}

.ct-cta {
  background: #fff;
  padding: 30px 0 120px;
}
.ct-cta-panel {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border-radius: 26px;
  background: var(--epx-dark);
  color: #fff;
  padding: 54px 56px 56px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 36px 56px;
}
.ct-cta-panel::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background: radial-gradient(ellipse 48% 130% at 90% 50%, rgba(225,31,38,0.22), transparent 68%);
}
.ct-cta-title {
  font-size: clamp(26px, 2.7vw, 38px);
  font-weight: 700;
  letter-spacing: -0.022em;
  line-height: 1.12;
  color: #fff;
  margin: 14px 0 12px;
  text-wrap: balance;
}
.ct-cta-title em { font-style: italic; font-weight: 400; color: rgba(255,255,255,0.5); }
.ct-cta-sub {
  font-size: 15px;
  line-height: 1.6;
  color: rgba(255,255,255,0.6);
  max-width: 44ch;
  margin: 0;
}
.ct-cta-btn {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 12px 12px 12px 26px;
  border-radius: 999px;
  background: var(--epx-red);
  color: #fff;
  font-size: 15.5px;
  font-weight: 600;
  white-space: nowrap;
  transition: background-color 240ms var(--ease), box-shadow 240ms var(--ease), transform 240ms var(--ease);
}
.ct-cta-btn-icon {
  width: 38px; height: 38px;
  border-radius: 50%;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.18);
  transition: background-color 240ms var(--ease), transform 300ms var(--ease);
}
.ct-cta-btn:hover {
  background: #c41a20;
  transform: translateY(-2px);
  box-shadow: 0 16px 34px -14px rgba(225,31,38,0.6);
}
.ct-cta-btn:hover .ct-cta-btn-icon { background: rgba(255,255,255,0.3); transform: translateX(3px); }
.ct-cta-btn:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.ct-cta-btn:active { transform: scale(0.99); }

.ct-motion [data-reveal] {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 560ms var(--ct-expo), transform 560ms var(--ct-expo);
}
.ct-motion [data-reveal].is-revealed { opacity: 1; transform: none; }
.ct-motion [data-reveal-group] > * {
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 500ms var(--ct-expo), transform 500ms var(--ct-expo);
  transition-delay: calc(var(--i, 0) * 70ms);
}
.ct-motion [data-reveal-group].is-revealed > * { opacity: 1; transform: none; }

.ct-motion .ct-pillars,
.ct-motion .ct-junction { opacity: 1; transform: none; transition: none; }

.ct-motion .ct-pillar {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 560ms var(--ct-expo), transform 560ms var(--ct-expo);
}
.ct-motion .ct-pillars.is-revealed .ct-pillar { opacity: 1; transform: none; }
.ct-motion .ct-pillars.is-revealed .ct-pillar--people { transition-delay: 150ms; }

.ct-motion .ct-pillar-icon {
  opacity: 0;
  transform: scale(0.72) rotate(-10deg);
  transition: opacity 460ms var(--ct-expo), transform 620ms var(--ct-expo);
}
.ct-motion .ct-pillars.is-revealed .ct-pillar-icon {
  opacity: 1;
  transform: none;
  transition-delay: 260ms;
}
.ct-motion .ct-pillars.is-revealed .ct-pillar--people .ct-pillar-icon { transition-delay: 400ms; }

.ct-motion .ct-join-line { transform: scaleX(0); transition: transform 620ms var(--ct-expo) 380ms; }
.ct-motion .ct-join-line--l { transform-origin: right; }
.ct-motion .ct-join-line--r { transform-origin: left; }
.ct-motion .ct-pillars.is-revealed .ct-join-line { transform: scaleX(1); }

.ct-motion .ct-join-plus {
  opacity: 0;
  transform: scale(0.3);
  transition: opacity 380ms var(--ct-expo) 300ms, transform 640ms var(--ct-expo) 300ms;
}
.ct-motion .ct-pillars.is-revealed .ct-join-plus {
  opacity: 1;
  transform: none;
  animation: ct-join-pulse 2.8s ease-out 1.1s infinite;
}
@keyframes ct-join-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(225,31,38,0.4); }
  70%  { box-shadow: 0 0 0 16px rgba(225,31,38,0); }
  100% { box-shadow: 0 0 0 0 rgba(225,31,38,0); }}

.ct-motion .ct-junction-path {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  transition: stroke-dashoffset 900ms var(--ct-expo) 120ms;
}
.ct-motion .ct-junction.is-revealed .ct-junction-path { stroke-dashoffset: 0; }
.ct-motion .ct-junction-node {
  opacity: 0;
  transform: translate(-50%, 50%) scale(0.4);
  transition: opacity 340ms var(--ct-expo) 820ms, transform 520ms var(--ct-expo) 820ms;
}
.ct-motion .ct-junction.is-revealed .ct-junction-node {
  opacity: 1;
  transform: translate(-50%, 50%) scale(1);
}

.ct-motion .ct-net { opacity: 1; transform: none; transition: none; }

.ct-motion .ct-net-hub-disc {
  opacity: 0;
  transform: scale(0.6);
  transition: opacity 420ms var(--ct-expo), transform 640ms var(--ct-expo),
              box-shadow 360ms var(--ease);
}
.ct-motion .ct-net.is-revealed .ct-net-hub-disc { opacity: 1; transform: none; }
.ct-motion .ct-net.is-revealed .ct-net-hub:hover .ct-net-hub-disc { transform: scale(1.04); }
.ct-motion .ct-net.is-revealed .ct-net-hub-ring {
  animation: ct-net-ring 3.6s ease-out 900ms infinite;
}
@keyframes ct-net-ring {
  0%   { opacity: 0.5; transform: scale(1); }
  72%  { opacity: 0; transform: scale(1.7); }
  100% { opacity: 0; transform: scale(1.7); }}

.ct-motion .ct-net-line {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  transition: stroke-dashoffset 620ms var(--ct-expo), stroke 300ms var(--ease),
              stroke-width 300ms var(--ease);
}
.ct-motion .ct-net.is-revealed .ct-net-line { stroke-dashoffset: 0; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(1) { transition-delay: 120ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(2) { transition-delay: 154ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(3) { transition-delay: 188ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(4) { transition-delay: 222ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(5) { transition-delay: 256ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(6) { transition-delay: 290ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(7) { transition-delay: 324ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(8) { transition-delay: 358ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(9) { transition-delay: 392ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(10) { transition-delay: 426ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(11) { transition-delay: 460ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(12) { transition-delay: 494ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(13) { transition-delay: 528ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(14) { transition-delay: 562ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(15) { transition-delay: 596ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(16) { transition-delay: 630ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(17) { transition-delay: 664ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(18) { transition-delay: 698ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(19) { transition-delay: 732ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(20) { transition-delay: 766ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(21) { transition-delay: 800ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(22) { transition-delay: 834ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(23) { transition-delay: 868ms; }
.ct-motion .ct-net.is-revealed .ct-net-line:nth-of-type(24) { transition-delay: 902ms; }

.ct-motion .ct-net.is-revealed .ct-net-flow {
  animation: ct-net-traffic 4.6s linear infinite;
}
.ct-motion .ct-net.is-revealed .ct-net-flow:nth-of-type(26) { animation-delay: 600ms; }
.ct-motion .ct-net.is-revealed .ct-net-flow:nth-of-type(27) { animation-delay: 1200ms; }
.ct-motion .ct-net.is-revealed .ct-net-flow:nth-of-type(28) { animation-delay: 1800ms; }
.ct-motion .ct-net.is-revealed .ct-net-flow:nth-of-type(29) { animation-delay: 2400ms; }
.ct-motion .ct-net.is-revealed .ct-net-flow:nth-of-type(30) { animation-delay: 3000ms; }
.ct-motion .ct-net.is-revealed .ct-net-flow:nth-of-type(31) { animation-delay: 3600ms; }
.ct-motion .ct-net.is-revealed .ct-net-flow:nth-of-type(32) { animation-delay: 4200ms; }
@keyframes ct-net-traffic {
  0%   { stroke-dashoffset: 1; opacity: 0; }
  14%  { opacity: 0.85; }
  76%  { opacity: 0.85; }
  100% { stroke-dashoffset: 0; opacity: 0; }}

.ct-motion .ct-net-node {
  opacity: 0;
  transform: scale(0.86);
  transition: opacity 420ms var(--ct-expo), transform 520ms var(--ct-expo),
              box-shadow 340ms var(--ease), border-color 300ms var(--ease);
}
.ct-motion .ct-net.is-revealed .ct-net-node { opacity: 1; transform: none; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(1),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(1) { transition-delay: 380ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(2),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(2) { transition-delay: 426ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(3),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(3) { transition-delay: 472ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(4),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(4) { transition-delay: 518ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(5),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(5) { transition-delay: 564ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(6),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(6) { transition-delay: 610ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(7),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(7) { transition-delay: 656ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(8),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(8) { transition-delay: 702ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(9),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(9) { transition-delay: 748ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(10),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(10) { transition-delay: 794ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(11),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(11) { transition-delay: 840ms; }
.ct-motion .ct-net.is-revealed .ct-net-group--sponsor .ct-net-node:nth-child(12),
.ct-motion .ct-net.is-revealed .ct-net-group--research .ct-net-node:nth-child(12) { transition-delay: 886ms; }

.ct-motion .ct-net.is-revealed .ct-net-node:hover { transform: scale(1.07); transition-delay: 0ms; }
.ct-motion .ct-net.is-revealed.is-focused .ct-net-node { opacity: 0.34; transition-delay: 0ms; }
.ct-motion .ct-net.is-revealed.is-focused .ct-net-node:hover { opacity: 1; }
.ct-motion .ct-net.is-revealed.is-all .ct-net-node { opacity: 1; transition-delay: 0ms; }

.ct-motion .ct-qa { opacity: 1; transform: none; transition: none; }

.ct-motion .ct-qa-node {
  opacity: 0;
  transform: scale(0.55);
  transition: opacity 420ms var(--ct-expo), transform 680ms var(--ct-expo),
              box-shadow 320ms var(--ease), border-color 320ms var(--ease);
}
.ct-motion .ct-qa-hub-label {
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 420ms var(--ct-expo) 220ms, transform 420ms var(--ct-expo) 220ms;
}
.ct-motion .ct-qa.is-revealed .ct-qa-node { opacity: 1; transform: none; }
.ct-motion .ct-qa.is-revealed .ct-qa-hub-label { opacity: 1; transform: none; }
.ct-motion .ct-qa.is-revealed .ct-qa-rings { animation: ct-qa-ring 3.4s ease-out 900ms infinite; }
@keyframes ct-qa-ring {
  0%   { opacity: 0.55; transform: scale(1); }
  70%  { opacity: 0; transform: scale(1.85); }
  100% { opacity: 0; transform: scale(1.85); }}

.ct-motion .ct-qa-path {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  transition: stroke-dashoffset 760ms var(--ct-expo) 340ms, stroke 320ms var(--ease);
}
.ct-motion .ct-qa.is-revealed .ct-qa-path { stroke-dashoffset: 0; }
.ct-motion .ct-qa.is-revealed .ct-qa-flow {
  animation: ct-qa-flow 3.6s linear 1500ms infinite;
}
.ct-motion .ct-qa.is-revealed .ct-qa-flow:nth-of-type(5) { animation-delay: 1900ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-flow:nth-of-type(6) { animation-delay: 2300ms; }
@keyframes ct-qa-flow {
  0%   { stroke-dashoffset: 1; opacity: 0; }
  12%  { opacity: 0.9; }
  72%  { opacity: 0.9; }
  100% { stroke-dashoffset: 0; opacity: 0; }}

.ct-motion .ct-qa-branch {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 460ms var(--ct-expo), transform 460ms var(--ct-expo);
}
.ct-motion .ct-qa.is-revealed .ct-qa-branch { opacity: 1; transform: none; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(1) { transition-delay: 820ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(2) { transition-delay: 940ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(3) { transition-delay: 1060ms; }

.ct-motion .ct-qa-branches:hover > .ct-qa-branch { transition-delay: 0ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:hover { transform: translateY(-5px); }
.ct-motion .ct-qa.is-revealed .ct-qa-branches:hover > .ct-qa-branch:not(:hover) { opacity: 0.5; }

.ct-motion .ct-qa-tokens li {
  opacity: 0;
  transform: translateY(6px) scale(0.94);
}
.ct-motion .ct-qa.is-revealed .ct-qa-tokens li {
  opacity: 1;
  transform: none;
  transition: opacity 320ms var(--ct-expo), transform 380ms var(--ct-expo),
              color 240ms var(--ease), border-color 240ms var(--ease),
              background-color 240ms var(--ease);
}
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(1) .ct-qa-tokens li:nth-child(1) { transition-delay: 1120ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(1) .ct-qa-tokens li:nth-child(2) { transition-delay: 1190ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(1) .ct-qa-tokens li:nth-child(3) { transition-delay: 1260ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(2) .ct-qa-tokens li:nth-child(1) { transition-delay: 1240ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(2) .ct-qa-tokens li:nth-child(2) { transition-delay: 1310ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(2) .ct-qa-tokens li:nth-child(3) { transition-delay: 1380ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(3) .ct-qa-tokens li:nth-child(1) { transition-delay: 1360ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(3) .ct-qa-tokens li:nth-child(2) { transition-delay: 1430ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(3) .ct-qa-tokens li:nth-child(3) { transition-delay: 1500ms; }
.ct-motion .ct-qa.is-revealed .ct-qa-tokens li:hover { transform: translateY(-1px); transition-delay: 0ms; }

@media (max-width: 1180px) {
  .page-hero { grid-template-columns: minmax(0, 52fr) minmax(0, 48fr); }
  .ct-cp-card { grid-template-columns: minmax(0, 1fr) minmax(0, 0.92fr); }
  .ct-cp-media { min-height: 280px; }
  .ct-cp-body { padding: 30px 28px; }}

@media (max-width: 1080px) {
  .page-hero {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: min(600px, 76vh);
    padding: 0;
  }
  .ct-inner { padding: 0 32px; }
  .ct-hero-figure {
    position: absolute;
    inset: 0;
    z-index: 0;
  }
  .ct-hero-figure img { object-position: 56% 46%; }
  .ct-hero-figure::after {
    background:
      linear-gradient(180deg,
        rgba(17,17,17,0.88) 0%,
        rgba(17,17,17,0.70) 40%,
        rgba(17,17,17,0.80) 100%),
      linear-gradient(to top, var(--epx-dark) 0%, rgba(17,17,17,0) 40%);
  }
  .page-hero-inner {
    z-index: 5;
    width: 100%;
    padding: clamp(64px, 9vh, 104px) 32px clamp(52px, 8vh, 88px);
  }
  .page-hero-text { max-width: 640px; }
  .ct-head { grid-template-columns: 1fr; gap: 24px; margin-bottom: 52px; }

  .ct-trust,
.ct-advantage,
.ct-points,
.ct-quality,
.ct-network,
.ct-cta { padding: 110px 0 120px; }

  .ct-net-stage {
    aspect-ratio: auto;
    display: flex;
    flex-direction: column;
    gap: 44px;
  }
  .ct-net-web { display: none; }
  .ct-net-hub {
    position: static;
    width: auto; height: auto;
    margin: 0;
    justify-items: center;
  }
  .ct-net-hub-disc { width: 96px; height: 96px; padding: 22px; }
  .ct-net-hub-ring { width: 96px; height: 96px; }
  .ct-net-group { position: relative; padding-top: 30px; }
  .ct-net-group::before {
    content: "";
    position: absolute;
    left: 50%;
    top: -30px;
    width: 1px;
    height: 30px;
    background: linear-gradient(180deg, rgba(17,17,17,0.06), rgba(17,17,17,0.2));
  }
  .ct-net-label {
    position: static;
    transform: none;
    display: inline-flex;
    margin: 0 0 22px;
  }
  .ct-net-group--sponsor .ct-net-label,
  .ct-net-group--research .ct-net-label { top: auto; bottom: auto; }
  .ct-net-list {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
  }
  .ct-net-node {
    position: static;
    width: auto;
    height: 66px;
    margin: 0;
  }

  .ct-net-tip { display: none; }

  .ct-pillars { grid-template-columns: 1fr; gap: 0; }
  .ct-pillar-join { flex-direction: column; height: 92px; }
  .ct-join-line { flex: 1; height: auto; width: 1px; min-width: 0; min-height: 8px; }
  .ct-motion .ct-join-line { transform: scaleY(0); }
  .ct-motion .ct-join-line--l { transform-origin: bottom; }
  .ct-motion .ct-join-line--r { transform-origin: top; }
  .ct-motion .ct-pillars.is-revealed .ct-join-line { transform: scaleY(1); }

  .ct-junction { height: 62px; }
  .ct-junction-svg { display: none; }
  .ct-junction::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 0; bottom: 0;
    width: 1px;
    background: linear-gradient(180deg, rgba(255,255,255,0.10), rgba(225,31,38,0.6));
    transform-origin: top;
  }
  .ct-motion .ct-junction::before { transform: scaleY(0); transition: transform 640ms var(--ct-expo) 120ms; }
  .ct-motion .ct-junction.is-revealed::before { transform: scaleY(1); }
  .ct-junction-label { margin-top: 26px; }

  .ct-cp-row { grid-template-columns: 38px minmax(0, 1fr); column-gap: 18px; padding-bottom: 28px; }
  .ct-cp-row::before,
  .ct-cp-row::after { left: 18px; }
  .ct-cp-row:first-child::before,
  .ct-cp-row:first-child::after { top: 19px; }
  .ct-cp-row:last-child::before,
  .ct-cp-row:last-child::after { height: 19px; }
  .ct-cp-node { width: 38px; height: 38px; }
  .ct-cp-node-num { font-size: 11px; }
  .ct-cp-node-flag { width: 17px; height: 17px; right: -3px; bottom: -3px; }
  .ct-cp-phase-dot { margin-left: 15px; }
  .ct-cp-card { border-radius: 20px; }
  .ct-cp-media { min-height: 250px; }
  .ct-cp-body { padding: 26px 24px; }
  .ct-cp-name { font-size: 21px; }
  .ct-cp-data { margin-top: 20px; padding-top: 17px; gap: 14px; }

  .ct-qa-branches { grid-template-columns: 1fr; gap: 34px; }
  .ct-qa-branch { border-radius: 18px; }
  .ct-qa-web {
    height: 44px;
    width: 100%;
    margin: 0;
    background: linear-gradient(180deg, rgba(110,175,71,0.6), rgba(110,175,71,0.22)) center / 1px 100% no-repeat;
  }
  .ct-qa-web .ct-qa-path,
  .ct-qa-web .ct-qa-flow { display: none; }

  .ct-qa-branch + .ct-qa-branch::after {
    content: "";
    position: absolute;
    left: 50%;
    width: 1px;
    bottom: 100%;
    height: 34px;
    background: linear-gradient(180deg, rgba(110,175,71,0.18), rgba(110,175,71,0.6));
    transform-origin: top;
  }
  .ct-motion .ct-qa-branch + .ct-qa-branch::after { transform: scaleY(0); transition: transform 460ms var(--ct-expo); }
  .ct-motion .ct-qa.is-revealed .ct-qa-branch + .ct-qa-branch::after { transform: scaleY(1); }
  .ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(2)::after { transition-delay: 880ms; }
  .ct-motion .ct-qa.is-revealed .ct-qa-branch:nth-child(3)::after { transition-delay: 1000ms; }}

@media (max-width: 768px) {
  .page-hero {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    min-height: 0;
    padding: 0 0 8px;
  }
  .ct-inner { padding: 0 24px; }
  .ct-hero-figure {
    position: relative;
    inset: auto;
    order: 1;
    width: auto;
    height: clamp(230px, 52vw, 320px);
  }
  .ct-hero-figure img { object-position: 54% 48%; }
  .ct-hero-figure::after {
    background:
      linear-gradient(to top,
        var(--epx-dark) 0%,
        rgba(17,17,17,0.45) 26%,
        rgba(17,17,17,0.05) 62%,
        rgba(17,17,17,0) 100%);
  }
  .page-hero-inner {
    order: 2;
    justify-content: center;
    padding: 34px 24px 0;
  }
  .page-hero-text {
    max-width: none;
    padding-left: 0;
    text-align: center;
  }
  .page-hero-text::before { display: none; }
  .page-eyebrow { justify-content: center; margin-bottom: 18px; letter-spacing: 0.2em; }
  .page-title { font-size: clamp(33px, 8.6vw, 44px); line-height: 1.08; margin-bottom: 20px; }
  .page-title br { display: none; }
  .page-title em { text-shadow: 0 4px 30px rgba(225,31,38,0.45); }
  .page-blurb { font-size: 15.5px; max-width: 54ch; margin-inline: auto; }
  .page-hero-actions {
    margin-top: 30px;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .page-hero-cta { width: 100%; justify-content: center; min-height: 52px; }
  .ct-title { font-size: clamp(30px, 7.6vw, 40px); }
  .ct-title br { display: none; }
  .ct-blurb { font-size: 15px; }

  .ct-trust,
.ct-advantage,
.ct-points,
.ct-quality,
.ct-network,
.ct-cta { padding: 78px 0 88px; }

  .ct-trust-intro { margin: -18px 0 40px; font-size: 15px; }
  .ct-net-stage { gap: 34px; }
  .ct-net-hub-disc { width: 82px; height: 82px; padding: 18px; }
  .ct-net-hub-ring { width: 82px; height: 82px; }
  .ct-net-list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .ct-net-node { height: 58px; padding: 8px 10px; border-radius: 10px; }
  .ct-net-node img { max-height: 28px; }
  .ct-net-label { font-size: 9.5px; letter-spacing: 0.16em; padding: 7px 13px; white-space: normal; }

  .ct-pillar { padding: 26px 22px 26px; border-radius: 18px; }
  .ct-pillar-hd { gap: 13px; }
  .ct-pillar-icon { width: 50px; height: 50px; border-radius: 14px; }
  .ct-pillar-icon svg { width: 23px; height: 23px; }
  .ct-pillar-title { font-size: 19px; }
  .ct-pillar-join { height: 74px; }
  .ct-join-plus { width: 46px; height: 46px; }
  .ct-join-plus svg { width: 19px; height: 19px; }
  .ct-pillar-stats { left: 11px; right: 11px; bottom: 11px; gap: 6px; }
  .ct-pillar-stats li { padding: 6px 10px; font-size: 9.5px; letter-spacing: 0.12em; }
  .ct-pillar-list li { font-size: 13px; gap: 11px; }
  .ct-junction { height: 52px; }

  .ct-cp-row { grid-template-columns: 32px minmax(0, 1fr); column-gap: 14px; padding-bottom: 24px; }
  .ct-cp-row::before,
  .ct-cp-row::after { left: 15px; }
  .ct-cp-row:first-child::before,
  .ct-cp-row:first-child::after { top: 16px; }
  .ct-cp-row:last-child::before,
  .ct-cp-row:last-child::after { height: 16px; }
  .ct-cp-node { width: 32px; height: 32px; border-width: 2px; }
  .ct-cp-node-num { font-size: 10px; letter-spacing: 0.04em; }
  .ct-cp-node-flag { width: 15px; height: 15px; right: -3px; bottom: -3px; }
  .ct-cp-node-flag svg { width: 9px; height: 9px; }
  .ct-cp-phase { margin-bottom: 16px; font-size: 9.5px; letter-spacing: 0.2em; gap: 9px; }
  .ct-cp-row:not(:first-child) .ct-cp-phase { margin-top: 14px; }
  .ct-cp-phase-dot { margin-left: 13px; }

  .ct-cp-card { grid-template-columns: 1fr; border-radius: 16px; }
  .ct-cp-row:nth-child(even) .ct-cp-media { order: 0; }
  .ct-cp-media { min-height: 0; aspect-ratio: 16 / 10; }
  .ct-cp-veil,
  .ct-cp-row:nth-child(even) .ct-cp-veil {
    background: linear-gradient(180deg, rgba(17,17,17,0) 52%, rgba(17,17,17,0.42) 100%);
  }
  .ct-cp-badge,
  .ct-cp-row:nth-child(even) .ct-cp-badge {
    top: 12px; left: 12px; right: auto;
    padding: 6px 10px;
    font-size: 10px;
  }
  .ct-cp-body,
  .ct-cp-row:nth-child(even) .ct-cp-body {
    padding: 20px 18px 18px;
    border-left: none;
    border-right: none;
    border-top: 1px solid rgba(17,17,17,0.07);
  }
  .ct-cp-hd { margin-bottom: 11px; gap: 11px; }
  .ct-cp-step { font-size: 9.5px; letter-spacing: 0.16em; }
  .ct-cp-name { font-size: 19px; margin-bottom: 9px; }
  .ct-cp-text { font-size: 14.5px; max-width: none; }

  .ct-cp-data {
    margin-top: 18px;
    padding-top: 15px;
    grid-template-columns: 1fr;
    gap: 13px;
  }
  .ct-cp-data dt { margin-bottom: 7px; }
  .ct-cp-data dd { font-size: 13.5px; }

  .ct-qa-branch { padding: 26px 20px 22px; }
  .ct-qa-branches { gap: 28px; }
  .ct-qa-title { font-size: 18px; }
  .ct-qa-icon { width: 46px; height: 46px; border-radius: 13px; }
  .ct-qa-icon svg { width: 22px; height: 22px; }
  .ct-qa-node { width: 66px; height: 66px; }
  .ct-qa-node svg { width: 29px; height: 29px; }
  .ct-qa-rings { width: 66px; height: 66px; top: 33px; margin: -33px 0 0 -33px; }
  .ct-qa-hub-label { font-size: 11px; letter-spacing: 0.2em; }
  .ct-qa-web { height: 36px; }
  .ct-qa-branch + .ct-qa-branch::after { height: 28px; }

  .ct-cta-panel {
    grid-template-columns: 1fr;
    padding: 34px 24px 30px;
    border-radius: 20px;
  }
  .ct-cta-panel::before {
    background: radial-gradient(ellipse 90% 60% at 50% 100%, rgba(225,31,38,0.22), transparent 70%);
  }
  .ct-cta-title { font-size: clamp(25px, 6.6vw, 32px); }
  .ct-cta-title br { display: none; }
  .ct-cta-sub { font-size: 14.5px; }
  .ct-cta-btn { justify-content: space-between; padding: 10px 10px 10px 22px; font-size: 15px; }}

@media (max-width: 359px) {
  .ct-inner { padding: 0 18px; }
  .page-hero-inner { padding-left: 18px; padding-right: 18px; }
  .ct-net-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ct-cp-row { grid-template-columns: 26px minmax(0, 1fr); column-gap: 11px; }
  .ct-cp-row::before,
  .ct-cp-row::after { left: 12px; }
  .ct-cp-row:first-child::before,
  .ct-cp-row:first-child::after { top: 13px; }
  .ct-cp-row:last-child::before,
  .ct-cp-row:last-child::after { height: 13px; }
  .ct-cp-node { width: 26px; height: 26px; }
  .ct-cp-node-num { font-size: 9px; }
  .ct-cp-node-flag { width: 13px; height: 13px; }
  .ct-cp-phase-dot { margin-left: 10px; }}

@media (prefers-reduced-motion: reduce) {
  .ct-motion [data-reveal],
.ct-motion [data-reveal-group] > *,
.ct-motion .ct-qa-branch,
.ct-motion .ct-pillar,
.ct-motion .ct-pillar-icon,
.ct-motion .ct-join-line,
.ct-motion .ct-join-plus {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .ct-motion .ct-qa-node,
  .ct-motion .ct-qa-hub-label,
  .ct-motion .ct-qa-tokens li {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .ct-motion .ct-qa-rings { animation: none; opacity: 0; }
  .ct-motion .ct-qa-flow { animation: none; opacity: 0; }
  .ct-motion .ct-qa-path { stroke-dashoffset: 0 !important; transition: none !important; }
  .ct-motion .ct-qa-branch + .ct-qa-branch::after { transform: none !important; transition: none !important; }
  .ct-motion .ct-net-hub-disc,
  .ct-motion .ct-net-node {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .ct-motion .ct-net-line { stroke-dashoffset: 0 !important; transition: none !important; }
  .ct-motion .ct-net-flow { animation: none; opacity: 0; }
  .ct-motion .ct-net-hub-ring { animation: none; opacity: 0; }
  .ct-net-node:hover { transform: none; }
  .ct-cp-row::after { transition: none !important; }
  .ct-cp-node-flag { transition: none !important; }
  .ct-cp-media img { transition: none !important; }
  .ct-cp-card:hover { transform: none; }
  .ct-cp-card:hover .ct-cp-media img { transform: none; }
  .ct-motion .ct-junction::before { transform: none !important; transition: none !important; }
  .ct-motion .ct-junction-path { stroke-dashoffset: 0 !important; transition: none !important; }
  .ct-motion .ct-junction-node {
    opacity: 1 !important;
    transform: translate(-50%, 50%) !important;
    transition: none !important;
  }
  .ct-motion .ct-pillars.is-revealed .ct-join-plus { animation: none; }
  .ct-eyebrow .dot { animation: none; }
  .page-hero-cta:hover { transform: none; }
  .page-hero-cta:hover svg { transform: none; }
  .ct-cta-btn:hover { transform: none; }
  .ct-cta-btn:hover .ct-cta-btn-icon { transform: none; }}

@media print {
  .ct-motion [data-reveal],
  .ct-motion [data-reveal-group] > * { opacity: 1 !important; transform: none !important; }
  .ct-cp-row { page-break-inside: avoid; }
  .ct-globe-frame { display: none !important; }

  .ct-pin { height: auto !important; }
  .ct-pin-stage { position: static !important; height: auto !important; }
  .ct-pin-track { display: none !important; }
  .ct-market { opacity: 1 !important; }
  .ct-market-more { grid-template-rows: 1fr !important; opacity: 1 !important; }
  .ct-market-mini { display: none !important; }}
