/* ==========================================================================
   Yeppy — landing page
   Brand: #de166a (Yeppy pink) · Charcoal #2b292e · Ink #111114
   No build step, no dependencies. Plain CSS.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root {
  --pink: #de166a;
  --pink-dark: #b80f55;
  --ink: #111114;
  --charcoal: #2b292e;
  --charcoal-light: #353239;
  --muted: #666168;
  --line: #e8e1e5;
  --wash: #faf6f8;
  --white: #fff;
}

/* --------------------------------------------------------------------------
   2. Reset / base
   -------------------------------------------------------------------------- */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  border: 0 solid;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  color: var(--ink);
  background: #fff;
  font-family: Arial, Helvetica, sans-serif;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
  font-size: inherit;
  font-weight: inherit;
}

b, strong { font-weight: bolder; }
small { font-size: 80%; }
ul { list-style: none; }

a {
  color: inherit;
  text-decoration: none;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}

:focus-visible {
  outline: 2px solid var(--pink);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  * { transition: none !important; animation: none !important; }
}

/* --------------------------------------------------------------------------
   3. Header / navigation
   -------------------------------------------------------------------------- */
.nav {
  z-index: 10;
  border-bottom: 1px solid #11111414;
  justify-content: space-between;
  align-items: center;
  height: 84px;
  padding: 0 5vw;
  display: flex;
  position: absolute;
  inset: 0 0 auto;
}

.brand,
.footer-brand {
  flex-direction: column;
  gap: 3px;
  display: flex;
}

.brand img,
footer img {
  width: 106px;
  height: auto;
}

.brand span,
.footer-brand span {
  letter-spacing: .1em;
  color: var(--muted);
  font-size: 8px;
}

.nav nav {
  gap: 32px;
  font-size: 13px;
  font-weight: 700;
  display: flex;
}

.nav nav a:hover { color: var(--pink); }

/* --------------------------------------------------------------------------
   4. Buttons & links
   -------------------------------------------------------------------------- */
.button {
  background: var(--pink);
  color: #fff;
  border: 1px solid var(--pink);
  border-radius: 2px;
  cursor: pointer;
  justify-content: center;
  align-items: center;
  gap: 24px;
  min-height: 54px;
  padding: 0 24px;
  font-size: 13px;
  font-weight: 800;
  transition: all .25s;
  display: inline-flex;
}

.button:hover {
  background: var(--pink-dark);
  border-color: var(--pink-dark);
  transform: translateY(-2px);
}

.button-small {
  min-height: 43px;
  padding: 0 18px;
}

.button-light {
  color: var(--ink);
  background: #fff;
  border-color: #fff;
  margin-top: 24px;
}

.button-light:hover {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}

.text-link {
  gap: 15px;
  font-size: 13px;
  font-weight: 800;
  display: flex;
}

.text-link:hover { color: var(--pink); }

/* --------------------------------------------------------------------------
   5. Shared type
   -------------------------------------------------------------------------- */
.eyebrow,
.section-label {
  color: var(--pink);
  letter-spacing: .18em;
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
}

.eyebrow {
  align-items: center;
  gap: 12px;
  display: flex;
}

.eyebrow span {
  background: var(--pink);
  width: 26px;
  height: 2px;
}

.section-label.light {
  color: #fff;
  opacity: .78;
}

h1 {
  letter-spacing: -.06em;
  max-width: 800px;
  margin: 26px 0;
  font-size: clamp(54px, 6.1vw, 92px);
  line-height: .98;
}

h1 em,
h2 em {
  color: var(--pink);
  font-style: normal;
}

.intro h2,
.section-heading h2,
.journey h2,
.proposal h2,
.value h2 {
  letter-spacing: -.045em;
  margin: 22px 0;
  font-size: clamp(40px, 4.7vw, 69px);
  line-height: 1.07;
}

.section-heading {
  grid-template-columns: 1.3fr .7fr;
  align-items: end;
  gap: 9vw;
  max-width: 1400px;
  margin: 0 auto 65px;
  display: grid;
}

.section-heading h2 { margin-bottom: 0; }

.section-heading > p {
  color: #b8b2b7;
  font-size: 16px;
  line-height: 1.7;
}

/* Same block on a light background needs a darker tone for contrast. */
.solutions .section-heading > p { color: var(--muted); }

/* --------------------------------------------------------------------------
   6. Hero
   -------------------------------------------------------------------------- */
.hero {
  background:
    linear-gradient(90deg, #fffffffc 0%, #fffffff5 35%, #ffffff80 58%, #ffffff14 100%),
    url(assets/hero-ecosystem.jpg) 50% / cover no-repeat;
  min-height: 790px;
  padding: 144px 5vw 42px;
  position: relative;
  overflow: hidden;
}

.hero::before {
  content: "";
  border: 1px solid #de166a1a;
  border-radius: 50%;
  width: 560px;
  height: 560px;
  position: absolute;
  top: 30px;
  right: -150px;
}

.hero-grid {
  grid-template-columns: 1.08fr .92fr;
  align-items: center;
  gap: 6vw;
  max-width: 1400px;
  min-height: 575px;
  margin: auto;
  display: grid;
}

.hero-lead {
  max-width: 660px;
  color: var(--muted);
  font-size: 19px;
  line-height: 1.7;
}

.hero-actions {
  align-items: center;
  gap: 34px;
  margin-top: 38px;
  display: flex;
}

.hero-proof {
  border-top: 1px solid var(--line);
  align-items: center;
  gap: 36px;
  margin-top: 54px;
  padding-top: 18px;
  display: flex;
}

.hero-proof p {
  text-transform: uppercase;
  letter-spacing: .13em;
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
}

.hero-proof div {
  gap: 19px;
  font-size: 11px;
  font-weight: 700;
  display: flex;
}

.hero-proof span::before {
  content: "\25CF";
  color: var(--pink);
  margin-right: 7px;
  font-size: 7px;
}

.scroll-label {
  letter-spacing: .17em;
  color: #8e888d;
  max-width: 1400px;
  margin: 34px auto 0;
  font-size: 9px;
  font-weight: 900;
  text-transform: uppercase;
}

/* --------------------------------------------------------------------------
   7. Hero ecosystem diagram
   -------------------------------------------------------------------------- */
.ecosystem-visual {
  height: 520px;
  position: relative;
}

.data-ring {
  border: 1px solid #de166a3d;
  border-radius: 50%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.ring-one { width: 350px; height: 350px; }

.ring-two {
  border-style: dashed;
  width: 500px;
  height: 500px;
}

.ecosystem-core {
  background: var(--charcoal);
  color: #fff;
  border-radius: 50%;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 210px;
  height: 210px;
  display: flex;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  box-shadow: 0 28px 70px #26081538;
}

.ecosystem-core img {
  filter: brightness(0) invert();
  width: 90px;
  margin-bottom: 18px;
}

.ecosystem-core strong { font-size: 14px; }

.ecosystem-core small {
  color: #c5c0c4;
  text-transform: uppercase;
  letter-spacing: .11em;
  margin-top: 7px;
  font-size: 9px;
}

.orbit-card {
  border: 1px solid var(--line);
  background: #fff;
  flex-direction: column;
  justify-content: center;
  width: 138px;
  height: 92px;
  padding: 18px;
  display: flex;
  position: absolute;
  box-shadow: 0 16px 45px #2c0c1b17;
}

.orbit-card b {
  color: var(--pink);
  font-size: 18px;
}

.orbit-card span {
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--muted);
  margin-top: 7px;
  font-size: 9px;
}

.orbit-yssc { top: 11%; left: -2%; }
.orbit-iw   { top: 20%; right: -1%; }
.orbit-tam  { bottom: 7%; right: 5%; }

.data-chip {
  background: var(--pink);
  color: #fff;
  text-transform: uppercase;
  letter-spacing: .1em;
  padding: 10px 13px;
  font-size: 8px;
  font-weight: 800;
  position: absolute;
}

.chip-one { bottom: 18%; left: 0; }
.chip-two { top: 2%; right: 17%; }

/* --------------------------------------------------------------------------
   8. The integrated model (three platforms)
   -------------------------------------------------------------------------- */
.intro,
.solutions,
.journey {
  padding: 110px 6vw;
}

.intro {
  max-width: 1500px;
  margin: auto;
}

.intro-copy {
  max-width: 820px;
  color: var(--muted);
  font-size: 17px;
  line-height: 1.7;
}

.platform-grid {
  border-left: 1px solid var(--line);
  border-top: 1px solid var(--line);
  grid-template-columns: repeat(3, 1fr);
  margin-top: 70px;
  display: grid;
}

.platform-grid article {
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  flex-direction: column;
  min-height: 590px;
  padding: 0 30px 30px;
  display: flex;
  position: relative;
}

/* Bleeds 30px past the card padding on both sides — needs max-width:none to
   escape the global img cap. */
.platform-image {
  object-fit: cover;
  filter: saturate(.88);
  width: calc(100% + 60px);
  max-width: none;
  height: 205px;
  margin: 0 -30px 25px;
  transition: all .35s;
}

.platform-grid article:hover .platform-image {
  filter: saturate(1);
  transform: scale(1.015);
}

.platform-top {
  color: var(--pink);
  justify-content: space-between;
  font-size: 11px;
  display: flex;
}

.platform-top b { font-size: 20px; }

.platform-grid article > small {
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--muted);
  margin-top: 28px;
  font-size: 9px;
  font-weight: 900;
}

.platform-grid h3 {
  letter-spacing: -.04em;
  margin: 15px 0;
  font-size: 34px;
}

.platform-grid p {
  color: var(--muted);
  font-size: 14px;
  line-height: 1.7;
}

.platform-grid ul { margin: auto 0 0; }

.platform-grid li {
  border-top: 1px solid var(--line);
  padding: 12px 0;
  font-size: 11px;
  font-weight: 800;
}

.platform-grid li::before {
  content: "\25CF";
  color: var(--pink);
  margin-right: 9px;
  font-size: 6px;
}

.flow-arrow {
  z-index: 2;
  background: var(--pink);
  color: #fff;
  border-radius: 50%;
  place-items: center;
  width: 38px;
  height: 38px;
  font-style: normal;
  display: grid;
  position: absolute;
  top: 50%;
  right: -19px;
}

.data-layer {
  background: var(--charcoal);
  color: #fff;
  grid-template-columns: .35fr 1.65fr;
  align-items: center;
  gap: 0 30px;
  padding: 25px 30px;
  display: grid;
}

.data-layer span {
  color: var(--pink);
  letter-spacing: .12em;
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
}

.data-layer p {
  color: #d0cbd0;
  font-size: 10px;
  line-height: 1.7;
}

/* --------------------------------------------------------------------------
   9. One Yeppy solution (dark)
   -------------------------------------------------------------------------- */
.advantages {
  background: var(--charcoal);
  color: #fff;
  padding: 110px 6vw;
}

.advantage-grid {
  border-top: 1px solid #4b474e;
  border-left: 1px solid #4b474e;
  grid-template-columns: repeat(4, 1fr);
  max-width: 1400px;
  margin: auto;
  display: grid;
}

/* isolation:isolate creates a stacking context so the negative-z-index image
   and scrim sit behind the copy but above the section background. */
.advantage-grid article {
  border-bottom: 1px solid #4b474e;
  border-right: 1px solid #4b474e;
  min-height: 320px;
  padding: 28px;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  transition: border-color .35s;
}

.advantage-image {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  opacity: 0;
  transform: scale(1.06);
  transition: opacity .45s ease, transform .8s ease;
}

/* Scrim that keeps the copy legible over the photo. Levels are measured, not
   eyeballed: 58% at the top (where the small pink index sits) ramping to 78%
   behind the body copy. Worst case across the four images is 6.1:1 for the
   #d0cbd0 body text — AA with headroom. The source images are pre-cropped to
   their subjects, which is what allows the scrim to stay this light; if you
   swap an image for a brighter one, re-check the contrast before shipping. */
.advantage-grid article::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, #201e2494 0%, #201e24ad 45%, #201e24c7 100%);
  opacity: 0;
  transition: opacity .45s ease;
}

.advantage-grid article:hover,
.advantage-grid article:focus-within { border-color: var(--pink); }

.advantage-grid article:hover .advantage-image,
.advantage-grid article:focus-within .advantage-image {
  opacity: 1;
  transform: scale(1);
}

.advantage-grid article:hover::before,
.advantage-grid article:focus-within::before { opacity: 1; }

.advantage-grid span {
  color: var(--pink);
  font-size: 11px;
  position: relative;
}

.advantage-grid h3 {
  margin: 60px 0 18px;
  font-size: 25px;
  line-height: 1.15;
}

/* Brighter than the other dark-section body copy because it sits over a photo
   once the card image is showing — see the scrim note above. */
.advantage-grid p {
  color: #d0cbd0;
  font-size: 13px;
  line-height: 1.7;
}

/* --------------------------------------------------------------------------
   10. Integrated customer solutions
   -------------------------------------------------------------------------- */
.solutions { background: var(--wash); }

.solution-grid {
  border-left: 1px solid var(--line);
  border-top: 1px solid var(--line);
  grid-template-columns: 1fr 1fr;
  max-width: 1400px;
  margin: auto;
  display: grid;
}

.solution-grid article {
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: #fff;
  grid-template-columns: 48px 1fr 24px;
  gap: 20px;
  min-height: 210px;
  padding: 30px;
  display: grid;
}

.solution-grid > article > span,
.solution-grid > article > b {
  color: var(--pink);
  font-size: 11px;
}

.solution-grid > article > b {
  text-align: right;
  font-size: 18px;
}

.solution-grid h3 {
  margin: 0 0 14px;
  font-size: 25px;
}

.solution-grid p {
  color: var(--muted);
  font-size: 14px;
  line-height: 1.7;
}

/* --------------------------------------------------------------------------
   11. Customer journey
   -------------------------------------------------------------------------- */
.journey {
  max-width: 1500px;
  margin: auto;
}

.journey > h2 { max-width: 850px; }

.journey-track {
  grid-template-columns: repeat(4, 1fr);
  margin-top: 65px;
  display: grid;
  position: relative;
}

.journey-track::before {
  content: "";
  background: linear-gradient(90deg, var(--pink), #de166a26);
  height: 1px;
  position: absolute;
  top: 27px;
  left: 4%;
  right: 4%;
}

.journey-track article {
  padding-right: 30px;
  position: relative;
}

.journey-track article > b {
  z-index: 2;
  border: 1px solid var(--pink);
  width: 54px;
  height: 54px;
  color: var(--pink);
  background: #fff;
  border-radius: 50%;
  place-items: center;
  font-size: 10px;
  display: grid;
  position: relative;
}

.journey-track h3 {
  margin: 24px 0 10px;
  font-size: 22px;
}

.journey-track p {
  color: var(--muted);
  min-height: 42px;
  font-size: 13px;
  line-height: 1.6;
}

.journey-track span {
  text-transform: uppercase;
  letter-spacing: .1em;
  font-size: 9px;
  font-weight: 900;
}

/* --------------------------------------------------------------------------
   12. Strategic value + executive control tower
   -------------------------------------------------------------------------- */
.value {
  background: var(--pink);
  color: #fff;
  grid-template-columns: 1fr 1fr;
  gap: 7vw;
  padding: 110px 6vw;
  display: grid;
}

.value-copy,
.control-panel { max-width: 680px; }

.value-points { margin-top: 34px; }

.value-points p {
  color: #ffffffc2;
  border-top: 1px solid #ffffff59;
  padding: 17px 0;
  font-size: 13px;
  line-height: 1.6;
}

.value-points b {
  color: #fff;
  text-transform: uppercase;
  letter-spacing: .11em;
  margin-bottom: 5px;
  font-size: 9px;
  display: block;
}

.control-panel {
  background: var(--charcoal-light);
  align-self: center;
  padding: 28px;
}

.panel-head {
  color: #fff;
  letter-spacing: .12em;
  border-bottom: 1px solid #555159;
  justify-content: space-between;
  padding-bottom: 20px;
  font-size: 9px;
  font-weight: 900;
  text-transform: uppercase;
  display: flex;
}

.panel-head i {
  background: var(--pink);
  border-radius: 50%;
  width: 7px;
  height: 7px;
  margin-right: 8px;
  display: inline-block;
  box-shadow: 0 0 0 5px #de166a24;
}

.panel-head b { color: var(--pink); }

.kpi-grid {
  grid-template-columns: repeat(4, 1fr);
  display: grid;
}

.kpi-grid div {
  border-bottom: 1px solid #514d54;
  border-right: 1px solid #514d54;
  padding: 25px 12px;
}

.kpi-grid small {
  color: var(--pink);
  font-size: 8px;
}

.kpi-grid strong {
  margin: 16px 0 6px;
  font-size: 15px;
  display: block;
}

.kpi-grid span {
  color: #b3adb2;
  text-transform: uppercase;
  letter-spacing: .07em;
  font-size: 8px;
}

/* --------------------------------------------------------------------------
   13. Contact section & form
   -------------------------------------------------------------------------- */
.proposal {
  background: var(--charcoal);
  color: #fff;
  grid-template-columns: .85fr 1.15fr;
  gap: 10vw;
  padding: 110px 7vw;
  display: grid;
}

.proposal-intro > p:last-child {
  color: #c2bcc1;
  max-width: 530px;
  line-height: 1.7;
}

.form-shell { max-width: 700px; }

.field-row {
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  display: grid;
}

label {
  text-transform: uppercase;
  letter-spacing: .12em;
  color: #ded9dd;
  flex-direction: column;
  gap: 9px;
  margin-bottom: 20px;
  font-size: 10px;
  font-weight: 800;
  display: flex;
}

input,
select,
textarea {
  background: var(--charcoal-light);
  color: #fff;
  width: 100%;
  letter-spacing: 0;
  text-transform: none;
  border: 1px solid #565159;
  border-radius: 0;
  outline: none;
  padding: 17px 15px;
  font-size: 13px;
}

input:focus,
select:focus,
textarea:focus { border-color: var(--pink); }

input:user-invalid,
textarea:user-invalid { border-color: #ff5e7d; }

textarea {
  resize: vertical;
  min-height: 105px;
}

form > small {
  color: #aaa4a9;
  margin-top: 14px;
  font-size: 9px;
  display: block;
}

.submit {
  width: 100%;
  margin-top: 2px;
}

.submit[aria-busy="true"] {
  opacity: .65;
  pointer-events: none;
}

.form-error {
  color: #ff8fa4;
  margin-top: 12px;
  font-size: 11px;
  font-weight: 700;
}

/* Secondary CTA — submit your interest */
.secondary-cta {
  color: #b8b2b7;
  border-top: 1px solid #4b474e;
  margin-top: 26px;
  padding-top: 20px;
  font-size: 12px;
  line-height: 1.7;
}

.secondary-cta a {
  color: #fff;
  font-weight: 800;
  border-bottom: 1px solid var(--pink);
  padding-bottom: 2px;
}

.secondary-cta a:hover { color: var(--pink); }

/* Success state (shown after submit) */
.success {
  background: var(--charcoal-light);
  text-align: center;
  border: 1px solid #565159;
  padding: 60px;
}

.success > span {
  background: var(--pink);
  border-radius: 50%;
  place-items: center;
  width: 52px;
  height: 52px;
  margin: auto;
  font-size: 22px;
  display: grid;
}

.success h3 {
  margin: 24px 0 10px;
  font-size: 30px;
}

.success p { color: #c0b9bf; }

/* --------------------------------------------------------------------------
   14. Footer
   -------------------------------------------------------------------------- */
footer {
  color: var(--muted);
  grid-template-columns: repeat(4, 1fr);
  align-items: center;
  gap: 25px;
  padding: 34px 5vw;
  font-size: 10px;
  display: grid;
}

footer p {
  text-transform: uppercase;
  letter-spacing: .12em;
  font-weight: 900;
}

footer > div:nth-child(3) {
  justify-content: center;
  gap: 22px;
  font-weight: 700;
  display: flex;
}

footer > div:nth-child(3) a:hover { color: var(--pink); }

footer > span { text-align: right; }

/* --------------------------------------------------------------------------
   15. Responsive — tablet (<= 960px)
   -------------------------------------------------------------------------- */
@media (max-width: 960px) {
  .nav nav { display: none; }

  .hero {
    background:
      linear-gradient(#fffffffc 0%, #fffffff2 48%, #ffffff2e 78%, #ffffff0a 100%),
      url(assets/hero-ecosystem.jpg) 66% / cover no-repeat;
    min-height: auto;
    padding-top: 120px;
  }

  .hero-grid,
  .section-heading,
  .value,
  .proposal { grid-template-columns: 1fr; }

  .ecosystem-visual { height: 500px; }

  .hero-proof {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }

  .platform-grid { grid-template-columns: 1fr; }
  .platform-grid article { min-height: 560px; }

  .flow-arrow {
    top: auto;
    bottom: -19px;
    right: 50%;
    transform: translate(50%) rotate(90deg);
  }

  .data-layer {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .advantage-grid { grid-template-columns: 1fr 1fr; }

  /* Narrow screens are touch — there is no hover, so each card shows its own
     image permanently, behind the same scrim the hover state uses. */
  .advantage-grid article { min-height: 340px; }
  .advantage-image { opacity: 1; transform: none; }
  .advantage-grid article::before { opacity: 1; }

  .journey-track {
    grid-template-columns: 1fr 1fr;
    gap: 45px;
  }

  .journey-track::before { display: none; }

  .value-copy,
  .control-panel,
  .form-shell { max-width: none; }

  footer { grid-template-columns: 1fr 1fr; }
  footer > div:nth-child(3) { justify-content: flex-end; }
  footer > span { text-align: left; }
}

/* Any touch device, whatever its width — covers wide tablets that skip the
   960px breakpoint but still have no hover. */
@media (hover: none) {
  .advantage-image { opacity: 1; transform: none; }
  .advantage-grid article::before { opacity: 1; }
}

/* --------------------------------------------------------------------------
   16. Responsive — mobile (<= 600px)
   -------------------------------------------------------------------------- */
@media (max-width: 600px) {
  .nav { padding: 0 22px; }

  .nav .button {
    min-width: 44px;
    padding: 0;
    font-size: 0;
  }

  .nav .button::after {
    content: "\2197";
    font-size: 17px;
  }

  .hero,
  .intro,
  .advantages,
  .solutions,
  .journey,
  .value,
  .proposal {
    padding-left: 22px;
    padding-right: 22px;
  }

  h1 { font-size: 48px; }

  .hero-actions {
    flex-direction: column;
    align-items: flex-start;
    gap: 22px;
  }

  .hero-proof div {
    grid-template-columns: 1fr 1fr;
    display: grid;
  }

  /* Scale the whole diagram down so the rings and orbit cards stay inside
     the viewport, and claw back the vertical space the transform leaves behind
     (520px box × (1 - .68) = 166px). */
  .ecosystem-visual {
    height: 520px;
    margin: 10px 0 -166px;
    transform: scale(.68);
    transform-origin: top center;
  }

  .solution-grid,
  .advantage-grid,
  .journey-track { grid-template-columns: 1fr; }

  .kpi-grid { grid-template-columns: 1fr 1fr; }

  .field-row {
    grid-template-columns: 1fr;
    gap: 0;
  }

  .success { padding: 40px 24px; }

  footer {
    text-align: left;
    grid-template-columns: 1fr;
  }

  footer > div:nth-child(3) { justify-content: flex-start; }
  footer > span { text-align: left; }
}
