/* Quiet motion supports reading and navigation; it never gates page access. */
@media(prefers-reduced-motion:no-preference){
.hero-copy>.eyebrow{animation:hero-arrive .65s .08s both}.hero-copy h1{animation:hero-arrive .85s .15s both}.hero-copy>p{animation:hero-arrive .8s .28s both}.hero-copy>.actions{animation:hero-arrive .8s .4s both}.ecosystem-scene{animation:scene-arrive 1.15s .18s both}.hero-waves{transform-origin:65% 65%;animation:wave-drift 18s ease-in-out infinite alternate}.hero-aura{animation:aura-drift 14s ease-in-out infinite alternate}.scene-center:after{content:'';position:absolute;inset:-9px;border:1px solid #ab9be52b;border-radius:35px;animation:connection-pulse 5s ease-out infinite;z-index:-1;pointer-events:none}.scene-chip.chip-data{animation:chip-float 7s ease-in-out infinite}.scene-chip.chip-api{animation:chip-float 8.5s 1s ease-in-out infinite reverse}.scene-dot{animation:node-pulse 4s ease-in-out infinite}.scene-dot.dot-two{animation-delay:1.8s}.overview-art.is-in-view .ring-a{animation:ring-breathe 7s ease-in-out infinite}.overview-art.is-in-view .ring-b{animation:ring-breathe 7s .35s ease-in-out infinite}.overview-art.is-in-view .ring-c{animation:ring-breathe 7s .7s ease-in-out infinite}.ai-diagram.is-in-view:after{animation:diagram-orbit 50s linear infinite}.ai-diagram.is-in-view strong{animation:ai-breathe 6s ease-in-out infinite}.ai-diagram.is-in-view .n1{animation:chip-float 7s ease-in-out infinite}.ai-diagram.is-in-view .n3{animation:chip-float 8s .7s ease-in-out infinite reverse}
.motion-pending{opacity:0;transform:translateY(22px)}.motion-revealed{animation:section-arrive .7s var(--motion-delay,0ms) cubic-bezier(.2,.65,.3,1) both}.expertise-panel[role=tabpanel]:not([hidden]){animation:panel-reveal .38s cubic-bezier(.2,.65,.3,1)}.expertise-panel[role=tabpanel]:not([hidden]) .expertise-feature-icon{animation:icon-arrive .5s .04s both}.expertise-panel[role=tabpanel]:not([hidden]) .expertise-capabilities li{animation:section-arrive .4s both}.expertise-capabilities li:nth-child(1){animation-delay:90ms!important}.expertise-capabilities li:nth-child(2){animation-delay:130ms!important}.expertise-capabilities li:nth-child(3){animation-delay:170ms!important}.expertise-capabilities li:nth-child(4){animation-delay:210ms!important}.expertise-tab{transition:background .2s,color .2s,border-color .2s,box-shadow .2s}.expertise-tab-icon{transition:background .25s,color .25s,transform .25s}.expertise-tab.is-active .expertise-tab-icon{transform:scale(1.04)}.button>span>.icon,.project button>span>.icon{transition:transform .25s}.button:hover>span>.icon,.project button:hover>span>.icon{transform:scale(1.12)}dialog[open]{animation:dialog-arrive .25s ease-out}dialog[open]::backdrop{animation:backdrop-arrive .25s ease-out}
@keyframes hero-arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes scene-arrive{from{opacity:0;translate:18px 16px}to{opacity:1;translate:0 0}}
@keyframes wave-drift{from{transform:translateY(0) scale(1)}to{transform:translateY(-15px) scale(1.025)}}
@keyframes aura-drift{from{opacity:.7;transform:scale(1)}to{opacity:1;transform:scale(1.07)}}
@keyframes connection-pulse{0%,15%{opacity:0;transform:scale(.98)}35%{opacity:.7}85%,100%{opacity:0;transform:scale(1.2)}}
@keyframes chip-float{0%,100%{translate:0 0}50%{translate:0 -6px}}
@keyframes node-pulse{0%,100%{opacity:.6}50%{opacity:1}}
@keyframes ring-breathe{0%,100%{rotate:0deg}50%{rotate:4deg}}
@keyframes diagram-orbit{to{rotate:360deg}}
@keyframes ai-breathe{0%,100%{box-shadow:0 0 0 0 #9f87d800}50%{box-shadow:0 0 0 10px #9f87d807}}
@keyframes section-arrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes panel-reveal{from{opacity:.4;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes icon-arrive{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}
@keyframes dialog-arrive{from{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes backdrop-arrive{from{opacity:0}to{opacity:1}}
/* Pause decorative loops when their section is off screen or the tab is hidden. */
.hero.motion-out-of-view .hero-waves,.hero.motion-out-of-view .hero-aura,.hero.motion-out-of-view .scene-panel,.hero.motion-out-of-view .scene-chip,.hero.motion-out-of-view .scene-dot,.hero.motion-out-of-view .scene-center:after{animation-play-state:paused}
.motion-paused .hero-waves,.motion-paused .hero-aura,.motion-paused .scene-panel,.motion-paused .scene-chip,.motion-paused .scene-dot,.motion-paused .scene-center:after,.motion-paused .overview-ring,.motion-paused .ai-diagram:after,.motion-paused .ai-diagram strong,.motion-paused .ai-node{animation-play-state:paused!important}
}
@media(prefers-reduced-motion:reduce){.motion-pending,.motion-revealed{opacity:1;transform:none}.hero *,.hero *:before,.hero *:after,.overview-ring,.ai-diagram *,.ai-diagram:after,.expertise-panel,.expertise-panel *{animation:none!important;transition:none!important}.scene-center:after{display:none}}
