/* =========================================================
   Ampliqore Medical — home page
   ========================================================= */

:root{
  --cream:        #F5F2EB;
  --cream-2:      #EFEBE1;
  --cream-3:      #E7E2D6;
  --navy:         #0C1A2A;
  --navy-2:       #12243A;
  --navy-3:       #1B3049;
  --gold:         #B08D57;
  --gold-2:       #C6A778;
  --gold-3:       #E0C79B;
  --ink:          #16232F;
  --ink-soft:     #3C4A57;
  --muted:        #6E7A86;
  --muted-light:  rgba(255,255,255,.62);
  --line:         rgba(22,35,47,.14);
  --line-light:   rgba(255,255,255,.14);

  --font-serif: "EB Garamond", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --font-sans:  "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  --gutter: 40px;
  --maxw: 1240px;
  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{ box-sizing:border-box; }

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

body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:15px;
  line-height:1.65;
  font-weight:300;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img,svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
ul,ol{ margin:0; padding:0; list-style:none; }
p{ margin:0; }
h1,h2,h3{ margin:0; font-weight:400; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }

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

/* ---------- shared type ---------- */

.eyebrow{
  font-size:10.5px;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--gold);
  font-weight:400;
}

.display{
  font-family:var(--font-serif);
  font-weight:400;
  color:var(--ink);
  letter-spacing:-.005em;
  line-height:1.06;
  font-size:clamp(38px,5.1vw,66px);
}
/* accented word in headlines — upright, not italic */
.display em{
  font-style:normal;
  color:var(--gold);
}
.display--md{ font-size:clamp(32px,3.5vw,46px); line-height:1.1; }
.display--sm{ font-size:clamp(28px,2.9vw,38px); line-height:1.15; }

.rule{
  display:block;
  width:44px;
  height:1px;
  background:var(--gold);
  opacity:.65;
}

.lede{
  font-size:14.5px;
  line-height:1.75;
  color:var(--ink-soft);
}

.star{ color:var(--gold-2); font-size:.72em; vertical-align:.12em; }

/* ---------- buttons & links ---------- */

.ico-arrow{
  width:22px; height:11px;
  fill:none; stroke:currentColor; stroke-width:1.2;
  stroke-linecap:round; stroke-linejoin:round;
  flex:0 0 auto;
  transition:transform .35s var(--ease);
}

.btn{
  display:inline-flex;
  align-items:center;
  gap:14px;
  padding:16px 26px;
  font-size:10.5px;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-weight:500;
  border:1px solid transparent;
  transition:background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
}
.btn--dark{ background:var(--navy); color:#fff; }
.btn--dark:hover{ background:var(--gold); }
.btn:hover .ico-arrow{ transform:translateX(4px); }

.btn-play{
  display:inline-flex;
  align-items:center;
  gap:14px;
  font-size:10.5px;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-weight:500;
  color:var(--ink);
}
.btn-play__circle{
  width:26px; height:26px;
  border:1px solid var(--gold);
  border-radius:50%;
  display:grid; place-items:center;
  transition:background .3s var(--ease);
}
.btn-play__circle svg{ width:7px; height:8px; fill:var(--gold); transition:fill .3s var(--ease); }
.btn-play:hover .btn-play__circle{ background:var(--gold); }
.btn-play:hover .btn-play__circle svg{ fill:#fff; }

.link-arrow{
  display:inline-flex;
  align-items:center;
  gap:11px;
  font-size:10.5px;
  letter-spacing:.2em;
  text-transform:uppercase;
  font-weight:500;
  color:var(--gold);
}
.link-arrow:hover .ico-arrow{ transform:translateX(4px); }
.link-arrow--sm{ font-size:9.5px; letter-spacing:.16em; }
.link-arrow--sm .ico-arrow{ width:18px; }

/* ---------- reveal ---------- */

/* hidden only when scripting is available to reveal it again */
.js .reveal{
  opacity:0;
  transform:translateY(18px);
  transition:opacity .9s var(--ease), transform .9s var(--ease);
}
.js .reveal.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  .js .reveal{ opacity:1; transform:none; transition:none; }
  html{ scroll-behavior:auto; }
}

/* =========================================================
   HEADER
   ========================================================= */

.site-header{
  position:fixed;
  inset:0 0 auto 0;
  z-index:100;
  transition:background .4s var(--ease), box-shadow .4s var(--ease);
}
.site-header.is-stuck{
  background:rgba(245,242,235,.92);
  backdrop-filter:saturate(140%) blur(12px);
  box-shadow:0 1px 0 var(--line);
}
.site-header{
  /* wider than the rest of the page's content column — the header row
     has more to fit (nav + language switch + CTA) than a text column does */
  --maxw: 1340px;
}
.header__inner{
  display:flex;
  align-items:center;
  gap:24px;
  height:96px;
}
.site-header.is-stuck .header__inner{ height:78px; transition:height .4s var(--ease); }

.logo{ display:block; line-height:1; }
.logo__word{
  display:block;
  font-family:var(--font-serif);
  font-size:23px;
  letter-spacing:.16em;
  color:var(--ink);
}
.logo__accent{ color:var(--gold); }
.logo__sub{
  display:block;
  margin-top:5px;
  font-size:8.5px;
  letter-spacing:.44em;
  color:var(--gold);
  padding-left:2px;
}
.logo--light .logo__word{ color:#F3F0E9; }

.nav{
  display:flex;
  align-items:center;
  gap:20px;
  margin-left:auto;
}
.nav a{
  font-size:12.5px;
  color:var(--ink-soft);
  letter-spacing:.01em;
  position:relative;
  padding-block:4px;
  white-space:nowrap;
}
.nav a::after{
  content:"";
  position:absolute; left:0; right:0; bottom:0;
  height:1px; background:var(--gold);
  transform:scaleX(0); transform-origin:left;
  transition:transform .35s var(--ease);
}
.nav a:hover{ color:var(--ink); }
.nav a:hover::after{ transform:scaleX(1); }

/* ---------- language switch ---------- */

.lang-switch{
  display:flex;
  align-items:center;
  gap:2px;
  flex:0 0 auto;
  /* on desktop .nav already claims the leftover space, so this is a no-op;
     on mobile .nav goes position:fixed (out of flow), and this is what
     keeps the switch pinned to the top-right next to the hamburger */
  margin-left:auto;
  border:1px solid var(--line);
  border-radius:999px;
  padding:3px;
}
.lang-switch__btn{
  padding:6px 11px;
  font-size:10px;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-weight:500;
  color:var(--ink-soft);
  border-radius:999px;
  transition:background .3s var(--ease), color .3s var(--ease);
}
.lang-switch__btn:hover{ color:var(--ink); }
.lang-switch__btn.is-active{ background:var(--navy); color:#fff; }
.lang-switch__btn.is-active:hover{ color:#fff; }

.header__cta{ flex:0 0 auto; padding:14px 18px; gap:10px; justify-content:center; }

.nav-toggle{
  display:none;
  width:44px; height:44px;
  margin-left:auto;
  flex-direction:column;
  justify-content:center;
  gap:5px;
}
.nav-toggle span{
  display:block; height:1px; width:22px;
  background:var(--ink);
  transition:transform .3s var(--ease), opacity .3s var(--ease);
}

/* =========================================================
   HERO
   ========================================================= */

.hero{
  position:relative;
  background:linear-gradient(105deg,#F7F4EE 0%,#F2EEE5 55%,#EBE5D8 100%);
  overflow:hidden;
}
.hero__inner{
  position:relative;
  z-index:2;
  min-height:min(88vh,780px);
  display:flex;
  align-items:center;
  padding-block:160px 110px;
}
.hero__content{ max-width:470px; }
.hero__content .eyebrow{ margin-bottom:26px; }
.hero__content .display{ margin-bottom:28px; }
.hero__content .rule{ margin-bottom:26px; }
.hero__actions{
  display:flex;
  align-items:center;
  gap:34px;
  flex-wrap:wrap;
  margin-top:36px;
}

.hero__media{
  position:absolute;
  top:0; bottom:0; right:0;
  width:56%;
  z-index:1;
  pointer-events:none;
}
.hero__media img{
  width:100%; height:100%;
  object-fit:cover;
  object-position:right center;
}
.hero__media::before{
  content:"";
  position:absolute; inset:0;
  width:34%;
  background:linear-gradient(90deg,#F4F0E8 0%,rgba(244,240,232,0) 100%);
  z-index:2;
}

/* ---------- scroll-linked falling light ----------
   main.js drives --fall-y (position) and --fall-o (opacity) straight off
   scroll position — no timer, so it tracks the scrollbar exactly, falling
   through the scene as the hero gives way to the next section. */
.hero__fall{
  position:absolute;
  left:0;
  top:0;
  width:260px;
  height:760px;
  z-index:1;
  pointer-events:none;
  background:
    radial-gradient(closest-side at 50% 7%,
      rgba(255,251,235,.95) 0%,
      rgba(255,242,208,.55) 20%,
      rgba(255,236,192,.2) 42%,
      rgba(255,236,192,0) 62%),
    linear-gradient(180deg,
      rgba(255,244,214,.45) 0%,
      rgba(255,238,198,.2) 38%,
      rgba(255,238,198,0) 72%);
  filter:blur(16px);
  mix-blend-mode:plus-lighter;
  /* --fall-tx/--fall-ty (set once, on load/resize) place the anchor — the
     radial gradient's centre, 50% 7% — exactly on the sphere. transform-
     origin matches that same point, so rotating only swings the far end
     (the start of the ray); the anchor itself never leaves the globe. */
  transform-origin:50% 7%;
  transform:translate(var(--fall-tx,0px),var(--fall-ty,-250px)) rotate(var(--fall-r,-48deg));
  opacity:var(--fall-o,0);
  will-change:transform,opacity;
}
@media (max-width:980px){
  /* hero__media stops tracking the sphere's position at this width */
  .hero__fall{ display:none; }
}
@media (prefers-reduced-motion:reduce){
  .hero__fall{ display:none; }
}

/* =========================================================
   INDUSTRIES
   ========================================================= */

.industries{
  background:var(--navy);
  color:#fff;
}
.industries__inner{
  display:flex;
  align-items:center;
  gap:34px;
  padding-block:34px;
}
.industries__label{
  flex:0 0 auto;
  width:130px;
  font-size:10px;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold-2);
  line-height:1.9;
}
.industries__list{
  display:grid;
  grid-template-columns:repeat(10,1fr);
  flex:1 1 auto;
}
.industries__list li{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  padding:8px 6px;
  border-left:1px solid var(--line-light);
  text-align:center;
}
.industries__list li:first-child{ border-left:0; }
.industries__list span{
  font-size:9.5px;
  letter-spacing:.1em;
  text-transform:uppercase;
  line-height:1.7;
  color:rgba(255,255,255,.82);
}
.ico{
  width:26px; height:26px;
  fill:none;
  stroke:var(--gold-2);
  stroke-width:1.1;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.ico--grid{ fill:var(--gold-2); stroke:none; }

/* =========================================================
   APPROACH
   ========================================================= */

.approach{ background:var(--cream); }
.approach__inner{
  display:grid;
  grid-template-columns:minmax(280px,340px) 1fr;
  gap:70px;
  align-items:center;
  padding-block:112px;
}
.approach__intro .eyebrow{ margin-bottom:22px; }
.approach__intro .display{ margin-bottom:24px; }
.approach__intro .rule{ margin-bottom:22px; }
.approach__intro .link-arrow{ margin-top:30px; }

.pillars{ position:relative; }
.pillars__list{
  position:relative;
  display:grid;
  grid-template-columns:repeat(4,1fr 34px) 1fr;
  align-items:center;
}
.pillars__step{
  display:flex;
  justify-content:center;
  color:var(--gold);
  opacity:.7;
}
.pillars__step .ico-arrow{ width:26px; height:13px; stroke-width:1.1; }

/* The flow builds itself when the section scrolls in: first circle, then the
   arrow reaching to the next, then that circle, and so on down the row.
   The block itself is exempt from the standard .reveal fade so the sequence
   below isn't muddied by the container fading at the same time. */
.js .pillars.reveal{ opacity:1; transform:none; transition:none; }
.js .pillars__list > li{ opacity:0; }
.js .pillars.is-in > .pillars__list > li{ animation:pillar-in .55s var(--ease) both; }
.js .pillars.is-in > .pillars__list > .pillars__step{ animation-name:arrow-in; }
.js .pillars.is-in > .pillars__list > li:nth-child(2){ animation-delay:.16s; }
.js .pillars.is-in > .pillars__list > li:nth-child(3){ animation-delay:.32s; }
.js .pillars.is-in > .pillars__list > li:nth-child(4){ animation-delay:.48s; }
.js .pillars.is-in > .pillars__list > li:nth-child(5){ animation-delay:.64s; }
.js .pillars.is-in > .pillars__list > li:nth-child(6){ animation-delay:.80s; }
.js .pillars.is-in > .pillars__list > li:nth-child(7){ animation-delay:.96s; }
.js .pillars.is-in > .pillars__list > li:nth-child(8){ animation-delay:1.12s; }
.js .pillars.is-in > .pillars__list > li:nth-child(9){ animation-delay:1.28s; }

@keyframes pillar-in{
  from{ opacity:0; transform:scale(.86); }
  to  { opacity:1; transform:none; }
}
/* the arrow slides out of the circle it leaves, toward the next one */
@keyframes arrow-in{
  from{ opacity:0;  transform:translateX(-10px); }
  to  { opacity:.7; transform:none; }
}
@media (prefers-reduced-motion:reduce){
  .js .pillars__list > li{ opacity:1; }
  .js .pillars.is-in > .pillars__list > li{ animation:none; }
  .js .pillars.is-in > .pillars__list > .pillars__step{ opacity:.7; }
}
.pillar__disc{
  aspect-ratio:1;
  border-radius:50%;
  background:linear-gradient(160deg,#FBF9F4,#EDE8DC);
  border:1px solid rgba(176,141,87,.28);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:9px;
  padding:14px 8px;
  text-align:center;
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
}
.pillar__disc:hover{
  transform:translateY(-5px);
  box-shadow:0 18px 40px -22px rgba(22,35,47,.35);
}
.pillar .ico{ stroke:var(--ink); width:24px; height:24px; }
.pillar .ico--grid{ fill:var(--ink); stroke:none; }
.pillar__name{
  font-size:9.5px;
  letter-spacing:.18em;
  text-transform:uppercase;
  font-weight:500;
}
.pillar__meta{
  font-size:8.5px;
  letter-spacing:.05em;
  color:var(--muted);
  line-height:1.5;
}
.pillar--core .pillar__disc{
  background:var(--navy);
  border-color:var(--navy);
}
.pillar__core{
  font-size:9.5px;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold-2);
  line-height:1.9;
}

/* =========================================================
   SPLIT — PLATFORM + AI
   ========================================================= */

.split{
  display:grid;
  grid-template-columns:1fr 1fr;
  background:var(--navy);
  color:#fff;
}
.panel{
  position:relative;
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:var(--navy);
  padding:80px var(--gutter);
  min-height:480px;
}

.panel__content{
  position:relative;
  z-index:3;
  display:flex;
  flex-direction:column;
  flex:1;
  max-width:330px;
}
.panel .eyebrow{ margin-bottom:22px; }
.panel .display{ color:#F4F1EA; margin-bottom:22px; }
.panel .rule{ margin-bottom:22px; }
.panel .lede{ color:var(--muted-light); }
/* both panels close on their link, so pinning it to the bottom lines the two up */
.panel .link-arrow{
  margin-top:auto;
  padding-top:32px;
  align-self:flex-start;
  color:var(--gold-2);
}

/* dashboard render */
.panel__dash{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:62% center;
  z-index:1;
  pointer-events:none;
}
/* scrim so the headline keeps contrast over the render */
.panel--platform::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:2;
  background:linear-gradient(90deg,var(--navy) 6%,rgba(12,26,42,.72) 34%,rgba(12,26,42,0) 64%);
}

/* the AI panel runs light, matching the cream of its portrait */
.panel--ai{ background:#F2ECE8; } /* exact backdrop of medical_ai.png, so the render sits seamless */
.panel--ai .display{ color:var(--ink); }
.panel--ai .lede{ color:var(--muted); }
.panel--ai .link-arrow{ color:var(--gold); }
.panel--ai .ico{ stroke:var(--gold); }
.panel--ai .ico--grid{ fill:var(--gold); stroke:none; }
.panel--ai .ai-list span{ color:var(--muted); }

/* AI face */
.panel__face{
  position:absolute;
  top:0; bottom:0; right:0;
  width:58%;
  height:100%;
  max-width:none;
  object-fit:cover;
  object-position:right center;
  z-index:1;
  pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 46%);
  mask-image:linear-gradient(90deg,transparent 0,#000 46%);
}
.ai-list{
  display:grid;
  grid-template-columns:repeat(6,auto);
  gap:16px;
  margin-top:30px;
  justify-content:start;
}
.ai-list li{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  text-align:center;
}
.ai-list .ico{ width:19px; height:19px; opacity:.9; }
.ai-list span{
  font-size:7.5px;
  letter-spacing:.06em;
  color:rgba(255,255,255,.6);
  line-height:1.3;
  max-width:52px;
}

/* =========================================================
   RESULTS
   ========================================================= */

.results{
  background:linear-gradient(180deg,#0B1826,#0D1D2E);
  color:#fff;
  padding-block:52px 44px;
  border-top:1px solid var(--line-light);
}
.results .eyebrow{ margin-bottom:30px; }
.results__list{
  display:grid;
  grid-template-columns:repeat(6,1fr);
}
.results__list li{
  padding:4px 20px;
  border-left:1px solid var(--line-light);
  text-align:center;
}
.results__list li:first-child{ border-left:0; text-align:left; padding-left:0; }
.stat{
  font-family:var(--font-serif);
  font-size:clamp(28px,2.9vw,38px);
  line-height:1.1;
  color:var(--gold-3);
}
.stat__label{
  margin-top:8px;
  font-size:9.5px;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:rgba(255,255,255,.62);
  line-height:1.75;
}
.results__foot{
  display:flex;
  justify-content:flex-end;
  margin-top:22px;
}
.link-arrow--gold{ color:var(--gold-2); }

/* =========================================================
   INSIGHTS
   ========================================================= */

.insights{ background:var(--cream); }
.insights__inner{
  display:grid;
  grid-template-columns:minmax(230px,270px) 1fr;
  gap:56px;
  padding-block:96px;
  align-items:start;
}
.insights__intro{ padding-top:6px; }
.insights__intro .eyebrow{ margin-bottom:22px; }
.insights__intro .display{ margin-bottom:20px; }
.insights__intro .link-arrow{ margin-top:28px; }

.cards{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:22px;
}
.card{
  background:var(--cream-2);
  display:flex;
  flex-direction:column;
  transition:transform .5s var(--ease), box-shadow .5s var(--ease);
}
.card:hover{
  transform:translateY(-6px);
  box-shadow:0 26px 50px -30px rgba(22,35,47,.45);
}
.card__media{ aspect-ratio:4/3; overflow:hidden; }
.card__media img{ width:100%; height:100%; object-fit:cover; }
.card__body{
  padding:20px 20px 22px;
  display:flex;
  flex-direction:column;
  gap:12px;
  flex:1;
}
.card__tag{
  font-size:8.5px;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--gold);
}
.card__title{
  font-family:var(--font-serif);
  font-size:18px;
  line-height:1.28;
  color:var(--ink);
}
.card .link-arrow{ margin-top:auto; color:var(--ink-soft); }
.card:hover .link-arrow{ color:var(--gold); }

/* =========================================================
   CTA
   ========================================================= */

.cta{
  position:relative;
  background:#F1ECE1;
  overflow:hidden;
}
.cta__inner{
  position:relative;
  z-index:2;
  display:grid;
  grid-template-columns:minmax(260px,310px) minmax(250px,320px);
  gap:36px;
  align-items:center;
  padding-block:100px;
}
.cta__title{ font-size:clamp(30px,3.3vw,42px); max-width:340px; }
.cta__aside{ display:flex; flex-direction:column; gap:26px; align-items:flex-start; }
.cta__media{
  position:absolute;
  right:0; top:0; bottom:0;
  width:42%;
  z-index:1;
  /* dissolve the scene's own backdrop instead of butting it against the section */
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 30%);
  mask-image:linear-gradient(90deg,transparent 0,#000 30%);
}
.cta__media img,
.cta-scene{ width:100%; height:100%; object-fit:cover; object-position:left center; }

/* Bouncing sphere, modelled on real projectile motion.
   Horizontal speed is CONSTANT for the whole cycle (cta-x, linear) while the
   vertical axis bounces on its own (cta-y) — that separation is what makes the
   arcs read as true parabolas. Gravity is tuned so each hop covers one stair
   (148 across, 68 down) in the same 0.75s and peaks 40 units above its launch,
   which is the self-consistent solution for uniform horizontal spacing.
   Landings put the contact point on each tread's middle, set back a little
   from the leading edge so the sphere never looks like it clips the corner. */
.cta-scene__ball{ animation:cta-x 5.4s linear infinite; }
.cta-scene__ball-y{ animation:cta-y 5.4s linear infinite; }
.cta-scene__ball-squash{
  animation:cta-squash 5.4s linear infinite;  transform-box:fill-box;
  transform-origin:50% 100%;
}

/* enters from the upper right, leaves past the bottom step, then waits */
@keyframes cta-x{
  0%      { transform:translateX(128px);  opacity:1; }
  67.59%  { opacity:1; }                                   /* on the last step */
  72.85%  { opacity:.8; }                                  /* bounced off it */
  77%     { opacity:0; }                                   /* gone */
  82.59%  { transform:translateX(-752px); opacity:0; }
  82.6%   { transform:translateX(128px);  opacity:0; }      /* reset, unseen */
  100%    { transform:translateX(128px);  opacity:0; }      /* pause */
}

/* falls, then five bounces — each fall accelerates, each rebound decelerates */
@keyframes cta-y{
  0%      { transform:translateY(-200px); animation-timing-function:cubic-bezier(.55,.085,.68,.53); }
  12.04%  { transform:translateY(0);      animation-timing-function:cubic-bezier(.25,.46,.45,.94); }
  17.30%  { transform:translateY(-40px);  animation-timing-function:cubic-bezier(.55,.085,.68,.53); }
  25.93%  { transform:translateY(68px);   animation-timing-function:cubic-bezier(.25,.46,.45,.94); }
  31.19%  { transform:translateY(28px);   animation-timing-function:cubic-bezier(.55,.085,.68,.53); }
  39.81%  { transform:translateY(136px);  animation-timing-function:cubic-bezier(.25,.46,.45,.94); }
  45.07%  { transform:translateY(96px);   animation-timing-function:cubic-bezier(.55,.085,.68,.53); }
  53.70%  { transform:translateY(204px);  animation-timing-function:cubic-bezier(.25,.46,.45,.94); }
  58.96%  { transform:translateY(164px);  animation-timing-function:cubic-bezier(.55,.085,.68,.53); }
  67.59%  { transform:translateY(272px);  animation-timing-function:cubic-bezier(.25,.46,.45,.94); }
  72.85%  { transform:translateY(232px);  animation-timing-function:cubic-bezier(.55,.085,.68,.53); }
  82.59%  { transform:translateY(373px); }
  82.6%   { transform:translateY(-200px); }
  100%    { transform:translateY(-200px); }
}

/* brief compression at each impact, softening as the sphere loses energy */
@keyframes cta-squash{
  0%,11.6%    { transform:scale(1,1); }
  12.04%      { transform:scale(1.09,.91); }
  13%,25.5%   { transform:scale(1,1); }
  25.93%      { transform:scale(1.08,.92); }
  26.9%,39.4% { transform:scale(1,1); }
  39.81%      { transform:scale(1.07,.93); }
  40.8%,53.3% { transform:scale(1,1); }
  53.70%      { transform:scale(1.06,.94); }
  54.7%,67.2% { transform:scale(1,1); }
  67.59%      { transform:scale(1.05,.95); }
  68.6%,100%  { transform:scale(1,1); }
}

@media (prefers-reduced-motion:reduce){
  .cta-scene__ball,
  .cta-scene__ball-y,
  .cta-scene__ball-squash{ animation:none; }
}
/* =========================================================
   FOOTER
   ========================================================= */

.site-footer{
  background:var(--navy);
  color:#fff;
  padding-top:52px;
}
.footer__inner{
  display:grid;
  grid-template-columns:1.5fr 1.6fr 1fr auto;
  gap:40px;
  align-items:start;
  padding-bottom:40px;
}
.footer__brand .logo{ margin-bottom:16px; }
.footer__tagline{
  font-size:11px;
  letter-spacing:.1em;
  color:rgba(255,255,255,.5);
}
.footer__nav{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:24px;
  border-left:1px solid var(--line-light);
  padding-left:40px;
}
.footer__nav a,
.footer__contact a{
  font-size:10.5px;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:rgba(255,255,255,.72);
  line-height:2.4;
  transition:color .3s var(--ease);
}
.footer__nav a:hover,
.footer__contact a:hover{ color:var(--gold-2); }
.footer__contact{ display:flex; flex-direction:column; }
.footer__contact a{ text-transform:none; letter-spacing:.06em; font-size:11.5px; }
.footer__social{ display:flex; gap:14px; }
.footer__social a{
  width:30px; height:30px;
  display:grid; place-items:center;
  border:1px solid var(--line-light);
  border-radius:50%;
  transition:border-color .3s var(--ease), background .3s var(--ease);
}
.footer__social svg{ width:15px; height:15px; fill:rgba(255,255,255,.8); }
.footer__social a:hover{ border-color:var(--gold-2); background:rgba(198,167,120,.12); }

.footer__bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding-block:18px;
  border-top:1px solid var(--line-light);
  font-size:10px;
  letter-spacing:.1em;
  color:rgba(255,255,255,.4);
}
.footer__regions{ display:flex; gap:0; }
.footer__regions li{
  padding:0 14px;
  border-left:1px solid var(--line-light);
  text-transform:uppercase;
  letter-spacing:.16em;
}
.footer__regions li:first-child{ border-left:0; }

/* =========================================================
   RESPONSIVE
   ========================================================= */

/* Below this the CTA text columns would run under the stair panel — and the
   sphere's last landing sits near the button — so stack them instead. */
@media (max-width:1280px){
  .cta__inner{ grid-template-columns:1fr; gap:32px; padding-block:64px; }
  .cta__media{
    position:relative;
    width:100%;
    height:min(64vw,460px);
    margin-top:8px;
    -webkit-mask-image:none;
    mask-image:none;
  }
}

@media (max-width:1180px){
  :root{ --gutter:32px; }
  .nav{ gap:13px; }
  .nav a{ font-size:11px; }
  .header__cta{ padding:13px 15px; }
  .industries__list{ grid-template-columns:repeat(5,1fr); row-gap:22px; }
  .industries__list li:nth-child(6){ border-left:0; }
  .panel__dash{ object-position:66% center; }
}

@media (max-width:980px){
  .header__inner{ height:78px; gap:16px; }
  .nav{
    position:fixed;
    inset:78px 0 auto 0;
    flex-direction:column;
    align-items:flex-start;
    gap:0;
    padding:10px var(--gutter) 24px;
    background:rgba(245,242,235,.98);
    backdrop-filter:blur(14px);
    border-bottom:1px solid var(--line);
    display:none;
  }
  .nav.is-open{ display:flex; }
  .nav a{ font-size:15px; padding:11px 0; width:100%; }
  .header__cta{ display:none; }
  .nav-toggle{ display:flex; }
  .nav-toggle.is-open span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
  .nav-toggle.is-open span:nth-child(2){ opacity:0; }
  .nav-toggle.is-open span:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }

  .hero__inner{ padding-block:130px 60px; min-height:0; display:block; }
  .hero__content{ max-width:none; }
  .hero__media{
    position:relative;
    width:100%;
    height:min(52vw,420px);
    margin-top:10px;
  }
  .hero__media::before{ display:none; }
  .hero__media img{ object-position:center; }

  .approach__inner{ grid-template-columns:1fr; gap:48px; padding-block:80px; }
  .pillars__list{ grid-template-columns:repeat(3,1fr); gap:20px; }
  .pillars__step{ display:none; }

  .split{ grid-template-columns:1fr; }
  .panel{ padding:64px var(--gutter); min-height:0; }
  .panel--platform{ padding-bottom:0; }
  .panel__content{ max-width:none; }
  .panel--platform::before{ display:none; }
  .panel__dash{
    position:relative;
    inset:auto;
    width:100%;
    height:auto;
    margin:44px 0 -20px;
  }
  .panel__face{
    position:relative;
    top:auto; bottom:auto; right:auto;
    height:auto;
    width:100%;
    margin:34px 0 -40px;
    mask-image:none;
    -webkit-mask-image:none;
  }

  .results__list{ grid-template-columns:repeat(3,1fr); row-gap:30px; }
  .results__list li{ text-align:left; padding-left:20px; }
  .results__list li:nth-child(4){ border-left:0; padding-left:0; }
  .results__foot{ justify-content:flex-start; margin-top:30px; }

  .insights__inner{ grid-template-columns:1fr; gap:44px; padding-block:72px; }
  .cards{ grid-template-columns:repeat(2,1fr); }

  .footer__inner{ grid-template-columns:1fr 1fr; gap:36px; }
  .footer__nav{ border-left:0; padding-left:0; }
}

@media (max-width:640px){
  :root{ --gutter:22px; }
  .industries__inner{ flex-direction:column; align-items:flex-start; gap:26px; padding-block:34px 40px; }
  .industries__label{ width:auto; }
  .industries__list{ grid-template-columns:repeat(3,1fr); row-gap:26px; width:100%; }
  .industries__list li{ border-left:0; }
  .pillars__list{ grid-template-columns:repeat(2,1fr); }
  .pillar--core{ grid-column:span 2; justify-self:center; width:52%; }
  .results__list{ grid-template-columns:repeat(2,1fr); }
  .results__list li{ padding-left:16px; }
  .results__list li:nth-child(odd){ border-left:0; padding-left:0; }
  .cards{ grid-template-columns:1fr; }
  .ai-list{ grid-template-columns:repeat(3,auto); gap:20px 14px; }
  .footer__inner{ grid-template-columns:1fr; }
  .footer__bar{ flex-direction:column; align-items:flex-start; }
  .hero__actions{ gap:22px; }
}
