/* Shared motion language: restrained, responsive and limited to transform/opacity. */
:root {
  --motion-in: 620ms;
  --motion-state: 240ms;
  --motion-fast: 150ms;
  --motion-ease-out: cubic-bezier(.16, 1, .3, 1);
  --motion-ease-fade: cubic-bezier(.37, 0, .63, 1);
  --motion-ease-state: cubic-bezier(.65, 0, .35, 1);
}

/* Route changes get one quiet entrance; inner sections reveal only when reached. */
#main.motion-route-enter > .page-hero .page-hero__content,
#main.motion-route-enter > .article {
  animation: route-content-in 620ms var(--motion-ease-out) both;
}
#main.motion-route-enter > .page-hero .page-hero__content::after {
  animation: motion-line-in 520ms 160ms var(--motion-ease-out) both;
}

/* Module entrances are semantic: headings scan in, diagrams settle into focus,
   editorial rows follow reading order, and structured cells resolve in place. */
.site-motion {
  opacity: 0;
  transition:
    opacity calc(var(--motion-duration, var(--motion-in)) + var(--motion-opacity-extra, 0ms)) var(--motion-opacity-ease, var(--motion-ease-fade)) var(--motion-delay, 0ms),
    transform var(--motion-duration, var(--motion-in)) var(--motion-transform-ease, var(--motion-ease-out)) var(--motion-delay, 0ms);
  will-change: opacity, transform;
}
.site-motion--heading,
.site-motion--heading-light {
  --motion-opacity-extra: 90ms;
  transform: translate3d(-16px, 0, 0);
}
.site-motion--system {
  --motion-opacity-extra: 120ms;
  transform: translate3d(0, 10px, 0) scale(.992);
}
.site-motion--editorial {
  --motion-opacity-extra: 100ms;
  transform: translate3d(0, 14px, 0);
}
.site-motion--from-left,
.site-motion--from-right { --motion-opacity-extra: 100ms; }
.site-motion--from-left { transform: translate3d(-18px, 0, 0); }
.site-motion--from-right { transform: translate3d(18px, 0, 0); }
.site-motion--service-left,
.site-motion--service-right { --motion-opacity-extra: 70ms; }
.site-motion--service-left { transform: translate3d(-16px, 0, 0); }
.site-motion--service-right { transform: translate3d(16px, 0, 0); }
.site-motion--scene-left,
.site-motion--scene-right { --motion-opacity-extra: 130ms; }
.site-motion--scene-left { transform: translate3d(-14px, 8px, 0) scale(.995); }
.site-motion--scene-right { transform: translate3d(14px, 8px, 0) scale(.995); }
.site-motion--resolve {
  --motion-opacity-extra: 50ms;
  transform: translate3d(0, 8px, 0) scale(.995);
}
.site-motion--fade {
  --motion-opacity-extra: 140ms;
  transform: none;
}
.site-motion.is-motion-visible {
  opacity: 1;
  transform: none;
  will-change: auto;
}

/* The map arrives as one geographic field, then its physical nodes resolve. */
.network-canvas.is-motion-ready {
  opacity: 0;
  transform: translate3d(0, 12px, 0) scale(.995);
  transition:
    opacity 920ms var(--motion-ease-fade),
    transform 760ms var(--motion-ease-out);
  will-change: opacity, transform;
}
.network-canvas.is-motion-ready.is-visible {
  opacity: 1;
  transform: none;
}
.network-canvas.is-motion-ready .network-node { opacity: 0; }
.network-canvas.is-motion-ready.is-visible .network-node {
  animation: network-node-in 480ms var(--motion-ease-out) both;
  animation-delay: var(--node-delay, 0ms);
}

/* Remove competing transform systems and overly theatrical hover travel. */
.site-header { transition: background-color var(--motion-state) var(--motion-ease-state), box-shadow var(--motion-state) var(--motion-ease-state); }
.site-header::after { display: none; }
main.is-home .hero-art { animation-duration: 1400ms; animation-timing-function: var(--motion-ease-out); }
.hero .button,
.button,
.news-pagination a,
.honor-nav button,
.journey-controls button,
.careers-switch a,
.job button { transition-duration: var(--motion-state); transition-timing-function: var(--motion-ease-out); }
.button:active,
.news-pagination a:active,
.honor-nav button:active,
.journey-controls button:active,
.careers-switch a:active,
.job button:active { transform: translateY(1px); }

.service-detail { transition: background-color var(--motion-state) var(--motion-ease-out); }
.service-detail:hover { padding-left: 0; padding-right: 0; }
.service-detail .glyph { transition: color var(--motion-state) var(--motion-ease-out), transform var(--motion-state) var(--motion-ease-out); }
.service-detail:hover .glyph { transform: translateY(-2px); }
.digital-list > div { transition: color var(--motion-state) var(--motion-ease-out), transform var(--motion-state) var(--motion-ease-out); }
.digital-list > div:hover { padding-left: 0; transform: translateX(6px); }
.news-row { transition: background-color var(--motion-state) var(--motion-ease-out), transform var(--motion-state) var(--motion-ease-out); }
.news-row:hover { padding-left: 0; padding-right: 0; transform: translateX(6px); }

.activity,
.culture-card,
.cert,
.contact-card,
.post,
.credential-card,
.honor-sheet,
.honor-focus { transition-duration: 280ms; transition-timing-function: var(--motion-ease-out); }
.activity:hover,
.culture-card:not(.wide):hover,
.cert:hover,
.contact-card:hover,
.post:hover { transform: translateY(-3px); }

.home-news-media img,
.news-archive-media img,
.credential-media img,
.honor-sheet img,
.honor-focus img { transition-duration: 520ms; transition-timing-function: var(--motion-ease-out); }
.home-news-card:hover .home-news-media img,
.news-archive-row:hover .news-archive-media img { transform: scale(1.022); }

.operation-signal.is-changing .operation-icon { animation-duration: 360ms; animation-timing-function: var(--motion-ease-out); }
.operation-signal.is-changing .operation-live { animation-duration: 560ms; animation-timing-function: var(--motion-ease-out); }
.relay-track-live { animation-duration: 5.2s; }
.supply-flow__pulse { animation-duration: 6s; }

@media (max-width: 800px) {
  .site-motion--heading,
  .site-motion--heading-light,
  .site-motion--from-left,
  .site-motion--from-right,
  .site-motion--service-left,
  .site-motion--service-right,
  .site-motion--scene-left,
  .site-motion--scene-right,
  .site-motion--editorial { transform: translate3d(0, 12px, 0); }
  .site-header nav {
    display: flex;
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-8px);
    transition: opacity 220ms var(--motion-ease-out), transform 220ms var(--motion-ease-out), visibility 0s linear 220ms;
  }
  .site-header nav.open {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: none;
    transition-delay: 0s;
  }
}

/* Contact columns stack earlier than the global mobile breakpoint. Once stacked,
   keep their entrance vertical so no lateral edge ever flashes at tablet widths. */
@media (max-width: 1360px) {
  .contact-page__layout .site-motion--from-left,
  .contact-page__layout .site-motion--from-right { transform: translate3d(0, 12px, 0); }
}

@keyframes route-content-in {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: none; }
}
@keyframes motion-line-in {
  from { transform: scaleX(0); opacity: .4; }
  to { transform: scaleX(1); opacity: 1; }
}
@keyframes network-node-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  #main.motion-route-enter > .page-hero .page-hero__content,
  #main.motion-route-enter > .article,
  #main.motion-route-enter > .page-hero .page-hero__content::after,
  .network-canvas.is-motion-ready,
  .network-canvas.is-motion-ready.is-visible { opacity: 1; transform: none; transition: none; }
  .network-canvas.is-motion-ready.is-visible .network-node { animation: none !important; }
  .site-motion,
  .network-canvas.is-motion-ready .network-node { opacity: 1; transform: none; }
  .relay-track-live,
  .supply-flow__pulse { animation: none !important; }
  .site-header nav { transition: none; }
}
