@keyframes content-arrival {
  from { opacity: 0; transform: translateY(22px) scale(.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.motion-entering { animation: content-arrival .75s cubic-bezier(.2,.7,.2,1) both; animation-delay: var(--motion-delay, 0ms); }
.text-link>span,.case-cta>span { transition: transform .25s ease; }
.text-link:hover>span,.text-link:focus-visible>span,.case-card:hover .case-cta>span { transform: translate(3px,-3px); }
/* A light lift on hover for card-like entries, matching the existing case-card/blog-card treatment. */
.purpose-grid article,.product-card,.solution-directory-card,.award-card,.metrics-row article {
  transition: transform .35s cubic-bezier(.2,.7,.2,1);
}
.purpose-grid article:hover,.product-card:hover,.solution-directory-card:hover,.award-card:hover {
  transform: translateY(-4px);
}
.motion-paused .motion-entering { animation: none; }
.motion-paused .purpose-grid article,.motion-paused .product-card,.motion-paused .solution-directory-card,.motion-paused .award-card,.motion-paused .metrics-row article { transition: none; transform: none; }
/* Awards coverflow: the card nearest the rail's center lifts, glows and gets one sheen sweep. */
.award-card {
  position: relative;
  transition: transform .45s cubic-bezier(.2,.7,.2,1), box-shadow .45s ease, border-color .45s ease;
  transform: scale(calc(1 + var(--award-proximity, 0) * .07));
  box-shadow: 0 0 42px -14px rgba(108,228,244, calc(var(--award-proximity, 0) * .6));
}
.award-card.award-focus { border-color: var(--cyan); }
.award-card::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(115deg, transparent 32%, rgba(255,255,255,.22) 46%, transparent 60%);
  transform: translateX(-140%);
}
.award-card.award-sheen::after { animation: award-sheen .9s ease; }
@keyframes award-sheen { to { transform: translateX(140%); } }
/* Verification source, taken directly from content/awards.json's `verification` field. */
.award-verify { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #8fd9ea; margin-top: 12px; }
.award-verify span { color: var(--cyan); font-size: 13px; }
/* Condensed header + scroll-progress bar, added site-wide via app.js.
   The header must stay pinned for the condense transition to be visible.
   planet.css sets `.has-planet .site-header{position:relative}`, so this
   rule matches that same specificity to win on pages with the 3D hero. */
.site-header,.has-planet .site-header { position: sticky; top: 0; transition: height .35s cubic-bezier(.2,.7,.2,1), background-color .35s ease, box-shadow .35s ease, backdrop-filter .35s ease; }
.site-header.header-condensed {
  height: 76px;
  background-color: rgba(3,9,20,.82);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 12px 34px -18px rgba(0,0,0,.7);
}
#scroll-progress {
  position: fixed; top: 100px; left: 0; right: 0; height: 2px; z-index: 31;
  background: linear-gradient(90deg, var(--cyan), #3a8fb0);
  transform-origin: 0 50%; transform: scaleX(0);
  transition: transform .1s linear, top .35s cubic-bezier(.2,.7,.2,1);
  pointer-events: none;
}
.header-condensed + #scroll-progress { top: 76px; }
.motion-paused #scroll-progress,.motion-paused .site-header { transition: none; }
.motion-paused .award-card,.motion-paused .award-card::after { transition: none; transform: none; animation: none; box-shadow: none; }
.motion-paused .text-link>span,.motion-paused .case-cta>span { transition: none; transform: none; }
/* Overscan keeps the blended cloud inside the contact section while it floats. */
.contact-art {inset:-48px;transform-origin:78% 55%;}
.contact-art.cloud-moving {will-change:transform;}
.contact-art.cloud-orbits-ready {background-image:url('/assets/footer-cloud-clean.webp');}
.cloud-orbits {position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
/* Keep the shared pause control available for every section, including fallbacks. */
.has-planet #motion-toggle { position:fixed;right:5%;bottom:22px;z-index:40;min-width:44px;min-height:44px;padding:9px 14px;border:1px solid #33586d;background:#040d18ee;border-radius:3px;font-size:12px;color:#bdd4df; }
/* The mask follows the actual panoramic image; no letterboxed rectangle remains. */
.has-planet .pillars {overflow:clip;background:linear-gradient(180deg,transparent,#02060b 180px,#02060b calc(100% - 180px),transparent);}
.pillar-film {position:absolute;right:calc(100% + 4vw);top:50%;transform:translateY(-50%);width:49vw;aspect-ratio:16/9;pointer-events:none;background:transparent;mix-blend-mode:screen;opacity:var(--film-opacity,1);}
.pillar-film img,.pillar-film video {
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transform:translate3d(var(--film-x,0px),var(--film-y,0px),0) scale(var(--film-scale,1));
  transform-origin:50% 50%;
  --film-mask:linear-gradient(90deg,transparent,#000 15%,#000 85%,transparent),linear-gradient(180deg,transparent,#000 20%,#000 80%,transparent),radial-gradient(ellipse closest-side at 50% 50%,#000 45%,#0009 72%,transparent 100%);
  -webkit-mask-image:var(--film-mask);mask-image:var(--film-mask);
  -webkit-mask-composite:source-in;mask-composite:intersect;
}
.pillar-film img {opacity:1;transition:opacity .7s ease;}
.pillar-film.film-ready img {opacity:0;}
.pillar-film video {opacity:0;transition:opacity .7s ease;}
.pillar-film.film-ready video {opacity:1;}
.pillar-film.is-near img,.pillar-film.is-near video {will-change:transform;}
.motion-paused .pillar-film img,.motion-paused .pillar-film video {will-change:auto;}
.planet-stage canvas,.planet-labels,.planet-hud {transition:opacity .65s ease;}
.cinema-in-view .planet-stage canvas,.cinema-in-view .planet-labels,.cinema-in-view .planet-hud {opacity:calc(1 - var(--cinema-opacity,1));}
.planet-fallback .pillar-film {position:relative;right:auto;top:auto;transform:none;width:100%;aspect-ratio:16/9;margin-bottom:24px;}
.planet-fallback .pillar-grid article:has(.pillar-film){justify-content:flex-start;}
@media(min-width:750px) and (max-width:1100px){.has-planet:not(.planet-fallback) .pillar-film{width:45vw;right:calc(100% + 3vw);}}
@media(max-width:749px){
  .contact-art {inset:-24px;transform-origin:75% 65%;}
  .has-planet #motion-toggle{right:6%;bottom:16px;}
  body.has-solution-scene .solution-controls{position:fixed;top:auto;bottom:16px;right:6%;z-index:40;}
  .has-planet .pillar-film{top:60px;left:50%;right:auto;transform:translateX(-50%);width:min(112%,480px);height:auto;aspect-ratio:16/9;}
  .planet-fallback .pillar-grid .pillar-film{position:relative;left:auto;top:auto;transform:none;width:100%;height:auto;aspect-ratio:16/9;}
}
@media(prefers-reduced-motion:reduce){
  .contact-art {transform:none!important;will-change:auto;}
  .motion-entering{animation:none;}
  .text-link>span,.case-cta>span{transition:none;transform:none!important;}
  .pillar-film img,.pillar-film video{transform:none;will-change:auto;}
  .pillar-film{opacity:1;}
  .pillar-film img,.pillar-film video,.planet-stage canvas,.planet-labels,.planet-hud{transition:none;}
}
