/* Shared motion language: quick interaction, slower editorial entrances. */
:root{--motion-ease:cubic-bezier(.16,1,.3,1)}
.reading-progress{position:fixed;left:0;right:0;top:92px;height:2px;background:linear-gradient(90deg,#b7a5e0,#8ed6c8);z-index:51;transform:scaleX(0);transform-origin:left;pointer-events:none}
.pill,.header-contact,.team-mark,.dashboard-teaser-art{transition:translate .28s var(--motion-ease),rotate .55s var(--motion-ease),transform .35s var(--motion-ease),background .25s,color .25s}
.nav-link{position:relative}
.nav-link::after{content:'';position:absolute;left:0;bottom:3px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .35s var(--motion-ease)}
.nav-link:hover::after,.nav-link:focus-visible::after{transform:scaleX(1);transform-origin:left}
.header-contact>span,.button>span,.row-plus,.footer-invite>a>span{transition:transform .5s var(--motion-ease)}
.header-contact:hover>span,.button:hover>span,.service-row:hover .row-plus{transform:rotate(90deg)}
.footer-invite>a:hover>span{transform:rotate(90deg) scale(1.08)}
.line-link{transition:color .25s,opacity .25s,text-underline-offset .25s}
.service-row{transition:background .25s,padding .4s var(--motion-ease)}
.service-row:hover{padding-left:14px;padding-right:14px}
.process-grid article,.problem-grid article,.roadmap-grid article,.package,.team-card{transition:transform .5s var(--motion-ease),box-shadow .5s var(--motion-ease)}
@media(hover:hover) and (pointer:fine){
 .process-grid article:hover,.problem-grid article:hover,.roadmap-grid article:hover{transform:translateY(-7px)}
 .package:hover{transform:translateY(-5px);box-shadow:0 16px 36px #30243b0c}
 .team-card:hover .team-mark{box-shadow:inset 0 0 80px #ffffff40}
}
.team-mark{transform-style:preserve-3d}
.team-mark>span{transition:letter-spacing .5s var(--motion-ease)}
.team-card:hover .team-mark>span{letter-spacing:2px}
.accounting-flow>span{animation:flow-card 5s ease-in-out infinite;animation-play-state:paused}
.accounting-flow>span:nth-of-type(2){animation-delay:-1.25s}
.accounting-flow>span:nth-of-type(3){animation-delay:-2.5s}
.accounting-flow>span:nth-of-type(4){animation-delay:-3.75s}
.accounting-flow.motion-in-view>span{animation-play-state:running}
.dashboard-teaser-art>span{animation:caption-float 5s ease-in-out infinite;animation-play-state:paused}
.dashboard-teaser-art.motion-in-view>span{animation-play-state:running}
.film-play{isolation:isolate}
.film-play::before{content:'';position:absolute;left:0;top:50%;width:47px;height:47px;border:1px solid #ffffff80;border-radius:50%;transform:translateY(-50%);animation:film-beacon 3.4s ease-out infinite;animation-play-state:paused;pointer-events:none}
.film-cover.motion-in-view .film-play::before{animation-play-state:running}
.film-cover:hover .film-play>.play-icon{transform:scale(1.15)}
.film-play>.play-icon{transition:transform .35s var(--motion-ease)}
.ds-preview-button{transition:box-shadow .5s var(--motion-ease),transform .5s var(--motion-ease)}
.ds-card:hover .ds-preview-button{box-shadow:0 18px 50px #33244318}
.mobile-toggle>span{transition:transform .3s var(--motion-ease)}
.mobile-toggle[aria-expanded=true]>span:first-child{transform:translateY(4px) rotate(45deg)}
.mobile-toggle[aria-expanded=true]>span:last-child{transform:translateY(-4px) rotate(-45deg)}
:is(.film-dialog,.ds-dialog)::backdrop{animation:backdrop-in .3s ease-out}
@keyframes flow-card{0%,100%{translate:0 0}50%{translate:0 -6px}}
@keyframes caption-float{0%,100%{translate:0 0}50%{translate:0 -9px}}
@keyframes film-beacon{0%{scale:.85;opacity:0}25%{opacity:.75}100%{scale:1.4;opacity:0}}
@keyframes backdrop-in{from{opacity:0}to{opacity:1}}
@media(max-width:800px){.reading-progress{top:78px}.accounting-flow>span{animation-name:flow-card-mobile}.film-play::before{width:30px;height:30px}.service-row:hover{padding-left:0;padding-right:0}}
@keyframes flow-card-mobile{0%,100%{translate:0 0}50%{translate:0 -3px}}
/* Pause affects every CSS animation, including existing chapters and charts. */
.motion-tab-hidden *,.motion-tab-hidden *::before,.motion-tab-hidden *::after{animation-play-state:paused!important}
.motion-paused *,.motion-paused *::before,.motion-paused *::after{animation:none!important;transition:none!important}
.motion-paused .reading-progress{display:none}
.motion-paused :is(.pill,.header-contact,.team-mark,.dashboard-teaser-art,.accounting-flow>span,.dashboard-teaser-art>span){translate:none!important;rotate:none!important}
.motion-paused .js-motion .reveal,.motion-paused.js-motion .reveal{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
 *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 .reading-progress{display:none}
 .pill,.header-contact,.team-mark,.dashboard-teaser-art,.accounting-flow>span,.dashboard-teaser-art>span{translate:none!important;rotate:none!important}
 .js-motion .reveal{opacity:1;transform:none}
}
.motion-paused .lab-story{height:auto}
.motion-paused .lab-sticky{position:relative;height:860px}
.motion-paused .lab-copy{top:auto;bottom:170px}
.all-motion:disabled{cursor:default;opacity:.8}
@media(prefers-reduced-motion:reduce){.lab-copy{top:auto;bottom:170px}}

.legal-copy h1{font-size:clamp(32px,5vw,58px);line-height:1.12;overflow-wrap:anywhere}
/* Keep long editorial headings inside small phone grids. */
.human-section>*,.hello-grid>*,.origin-editorial-grid>*{min-width:0}
@media(max-width:360px){.human-copy h2{font-size:34px;overflow-wrap:anywhere}.hello-grid h2{font-size:36px}.film-cover-title{font-size:36px}}
@media(max-width:360px){.origin-editorial h2{font-size:38px;overflow-wrap:anywhere}}
