/* Optional motion layer: no libraries and no changes to the space reserved for text. */
.motion-accessible{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.motion-word{display:inline-block;position:relative;white-space:nowrap}
.motion-visual{color:inherit}
.word-outline{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;opacity:0;fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
.type-char{position:relative}
.motion-toggle{display:grid;place-items:center;width:36px;height:36px;padding:0;flex:none;border:1px solid #aab5a3;border-radius:50%;background:transparent;color:var(--ink);transition:background .2s,border-color .2s}
.motion-toggle[hidden]{display:none}
.motion-toggle:hover{background:var(--lime);border-color:var(--ink)}
.motion-toggle>span{width:9px;height:12px;border-left:3px solid currentColor;border-right:3px solid currentColor}
.motion-toggle[aria-pressed=true]>span{width:0;height:0;border:6px solid transparent;border-left:9px solid currentColor;border-right:0;margin-left:3px}

@media (prefers-reduced-motion:no-preference){
  .motion-ready .reveal{opacity:0;transform:translateY(24px);transition:opacity .65s ease,transform .65s cubic-bezier(.2,.8,.2,1)}
  .motion-ready .reveal.is-visible{opacity:1;transform:none}
  .motion-ready .rising-word{opacity:0;transform:translateY(.65em);filter:blur(3px)}
  .motion-ready .is-shown .rising-word{animation:word-rise .6s cubic-bezier(.2,.8,.2,1) var(--delay) both}
  .motion-ready .outlined-word>.word-ink{opacity:0}
  .motion-ready .is-shown .outlined-word>.word-ink{animation:ink-fill .45s ease calc(var(--delay) + .85s) both}
  .motion-ready .is-shown .word-outline{animation:outline-fade 1.5s ease var(--delay) both}
  .motion-ready .is-shown .word-outline text{stroke-dasharray:420;stroke-dashoffset:420;animation:stroke-draw 1.3s cubic-bezier(.3,.1,.3,1) var(--delay) both}
  .motion-ready .type-char{opacity:0}
  .motion-ready .type-char.char-visible{opacity:1}
  .motion-ready .type-char::after{content:"";position:absolute;left:100%;top:.06em;height:.9em;width:2px;background:currentColor;opacity:0;pointer-events:none}
  .motion-ready .type-char.typing-cursor::after{opacity:1}
  .motion-ready .hero-eyebrow{animation:soft-arrive .75s ease both}
  .motion-ready .hero-actions{animation:soft-arrive .8s ease .85s both}
  .motion-ready .hero-art{animation:soft-arrive 1.1s ease .1s both}
  .motion-ready .hero-bottom{animation:soft-arrive .8s ease 1.15s both}
  .motion-ready .eyebrow-line{transform-origin:left;animation:rule-draw 1.2s ease .2s both}
  .motion-ready .kicker-rule{transform:scaleX(0);transform-origin:left}
  .motion-ready .is-visible .kicker-rule,.motion-ready .kicker-rule.is-visible{animation:rule-draw 1.05s cubic-bezier(.2,.8,.2,1) .15s both}

  /* Rotating rings carry luminous points; labels float independently to stay legible. */
  .motion-ready .orbit{animation:orbit-turn 28s linear infinite}
  .motion-ready .orbit-one{animation-duration:18s;animation-direction:reverse}
  .motion-ready .orbit-three{animation-duration:48s}
  .motion-ready .orbit::after{content:"";position:absolute;top:50%;left:-3px;width:6px;height:6px;background:var(--lime);border-radius:50%;box-shadow:0 0 12px rgba(217,255,85,.8)}
  .motion-ready .orbit-three::after{width:4px;height:4px;left:-2px;opacity:.65}
  .motion-ready .orbit-center{animation:core-breathe 4.8s ease-in-out infinite}
  .motion-ready .orbit-node{animation:node-float 5s ease-in-out infinite}
  .motion-ready .node-b{animation-delay:-1.25s}.motion-ready .node-c{animation-delay:-2.5s}.motion-ready .node-d{animation-delay:-3.75s}
  .motion-ready .node-pip{animation:pip-glow 2.8s ease-in-out infinite}

  /* Service icons assemble when the row enters, then move subtly. */
  .motion-ready .service-symbol span{opacity:0}
  .motion-ready .service-row.is-visible .service-symbol span{animation:icon-assemble .9s cubic-bezier(.2,.8,.2,1) both}
  .motion-ready .service-row.is-visible .service-symbol span:nth-child(2){animation-delay:.15s}
  .motion-ready .service-row.is-visible .service-symbol span:nth-child(3){animation-delay:.3s}
  .motion-ready .service-symbol{animation:symbol-sway 6s ease-in-out infinite;animation-play-state:paused}
  .motion-ready .service-row.is-visible .service-symbol{animation-play-state:running}
  .motion-ready .method-glyph{animation:arrow-drift 3.5s ease-in-out infinite}
  .motion-ready .contact-spark{animation:spark-turn 32s linear infinite}

  /* Integrated vision: boxes, connectors, typing and a moving signal. */
  .motion-ready .flow-item{opacity:0}
  .motion-ready .ecosystem-visual.is-visible .flow-item{animation:box-arrive .8s cubic-bezier(.2,.8,.2,1) var(--box-delay) both,box-float 6s ease-in-out calc(var(--box-delay) + .8s) infinite}
  .motion-ready .flow-line{clip-path:inset(0 100% 0 0)}
  .motion-ready .ecosystem-visual.is-visible .flow-line{animation:connector-draw 1.2s ease .5s both}
  .motion-ready .ecosystem-visual.is-visible .flow-line-two{animation-delay:.8s}
  .motion-ready .ecosystem-visual.is-visible .flow-line-three{animation-delay:1.1s}
  .motion-ready .flow-line::after{content:"";position:absolute;left:0;top:-2px;width:16px;height:5px;border-radius:50%;background:#fff;box-shadow:0 0 12px var(--lime);animation:signal-travel 3.2s linear infinite}
  .motion-ready .flow-icon{animation:flow-icon-turn 7s ease-in-out infinite}
  .motion-ready .flow-product .flow-icon{animation-delay:-1.5s}.motion-ready .flow-care .flow-icon{animation-delay:-3s}.motion-ready .flow-core .flow-icon{animation-delay:-4.5s}
  .motion-ready .flow-caption{animation:soft-arrive 1s ease 1.2s both}

  .motion-ready section:not(.motion-active) .orbit,.motion-ready section:not(.motion-active) .orbit-center,.motion-ready section:not(.motion-active) .orbit-node,.motion-ready section:not(.motion-active) .node-pip,.motion-ready section:not(.motion-active) .service-symbol,.motion-ready section:not(.motion-active) .method-glyph,.motion-ready section:not(.motion-active) .contact-spark,.motion-ready section:not(.motion-active) .flow-icon,.motion-ready section:not(.motion-active) .flow-pulse,.motion-ready section:not(.motion-active) .flow-line::after,.motion-ready section:not(.motion-active) .flow-item{animation-play-state:paused}
  .motion-away *, .motion-away *::before,.motion-away *::after{animation-play-state:paused!important}
}

@keyframes word-rise{to{opacity:1;transform:none;filter:blur(0)}}
@keyframes ink-fill{from{opacity:0}to{opacity:1}}
@keyframes outline-fade{0%,75%{opacity:1}100%{opacity:0}}
@keyframes stroke-draw{to{stroke-dashoffset:0}}
@keyframes soft-arrive{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes rule-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes orbit-turn{from{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes core-breathe{0%,100%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.045)}}
@keyframes node-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes pip-glow{0%,100%{opacity:.7;box-shadow:0 0 0 3px rgba(217,255,85,.1)}50%{opacity:1;box-shadow:0 0 0 6px rgba(217,255,85,.04)}}
@keyframes icon-assemble{from{opacity:0;translate:0 9px}to{opacity:1;translate:0 0}}
@keyframes symbol-sway{0%,100%{rotate:-3deg}50%{rotate:4deg}}
@keyframes arrow-drift{0%,100%{translate:0 0}50%{translate:3px -3px}}
@keyframes spark-turn{to{rotate:360deg}}
@keyframes box-arrive{from{opacity:0;translate:0 22px;scale:.94}to{opacity:1;translate:0 0;scale:1}}
@keyframes box-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes connector-draw{to{clip-path:inset(-12px -12px -12px 0)}}
@keyframes signal-travel{from{left:0;opacity:0}10%,85%{opacity:1}to{left:100%;opacity:0}}
@keyframes flow-icon-turn{0%,75%,100%{rotate:0deg}35%{rotate:12deg}55%{rotate:-7deg}}

/* Pausing also finishes the text, so no sentence is left half-written. */
.motion-ready .is-settled .rising-word,.motion-ready .is-settled .word-ink,.motion-ready .is-settled .type-char{animation:none!important;opacity:1!important;transform:none!important;filter:none!important}
.motion-ready .is-settled .word-outline,.motion-ready .is-settled .type-char::after{display:none!important}
.motion-paused *, .motion-paused *::before,.motion-paused *::after{animation-play-state:paused!important;transition:none!important}
.motion-paused .reveal,.motion-paused .hero-eyebrow,.motion-paused .hero-actions,.motion-paused .hero-art,.motion-paused .hero-bottom,.motion-paused .flow-item,.motion-paused .flow-caption,.motion-paused .service-symbol span{opacity:1!important;translate:none!important;scale:1!important}
.motion-paused .reveal,.motion-paused .hero-actions,.motion-paused .hero-art,.motion-paused .hero-bottom{transform:none!important}
.motion-paused .kicker-rule,.motion-paused .eyebrow-line{transform:scaleX(1)!important}
.motion-paused .flow-line{clip-path:none!important}
@media(max-width:760px){.header-inner{gap:16px}.motion-toggle{margin-left:auto}.menu-toggle{margin-left:0}}
@media(prefers-reduced-motion:reduce){
  .motion-toggle{display:none}
  .motion-word,.word-ink,.type-char,.reveal{opacity:1!important;transform:none!important;filter:none!important}
  .word-outline,.type-char::after{display:none!important}
  .flow-item,.service-symbol span{opacity:1!important;translate:none!important;scale:1!important}
  .flow-line{clip-path:none!important}
}
