/* NUOVA motion layer (subset of the Claude Design export) — only active with html.motion (JS on, no reduced-motion). */
:root{--ease-reveal:cubic-bezier(.16,1,.3,1);--ease-ui:cubic-bezier(.2,0,0,1)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* h2 line wrappers keep their line breaks even if setup stops after the split (CV-W4 S1) */
.ln{display:block}
/* Hero intro */
.motion .hero-title .ch{display:inline-block;clip-path:inset(-30% -40% 0 -40%)}
.motion .hero-title .ch>span{display:inline-block;transform:translateY(105%);transition:transform 1.25s var(--ease-reveal) calc(150ms + var(--i)*70ms)}
.motion .hero-title .solutions{clip-path:inset(0 50% 0 50%);transition:clip-path 1.3s var(--ease-reveal) 650ms}
.motion .hero-cross{opacity:0;transform:rotate(-90deg) scale(.5);transition:opacity .6s ease 900ms,transform 1.1s var(--ease-reveal) 900ms}
.motion .hero-top,.motion .hero-bottom>*{opacity:0;transform:translateY(14px);transition:opacity .9s ease,transform 1.1s var(--ease-reveal)}
.motion .hero-top{transition-delay:100ms}
.motion .hero-bottom>*:first-child{transition-delay:1000ms}
.motion .hero-bottom>*:last-child{transition-delay:1150ms}
.motion .brand-strip{transform:scaleX(0);transform-origin:left;transition:transform 1.6s var(--ease-reveal) 450ms}
.motion .rail>span{opacity:0;transition:opacity .8s ease calc(1100ms + var(--i)*110ms)}
.hero-in .hero-title .ch>span,.hero-in .hero-cross,.hero-in .hero-top,.hero-in .hero-bottom>*,.hero-in .brand-strip{transform:none;opacity:1}
.hero-in .hero-title .solutions{clip-path:inset(0 0 0 0)}
.hero-in .rail>span{opacity:1}
/* Scroll reveals */
.motion [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .9s ease var(--d,0ms),transform 1.1s var(--ease-reveal) var(--d,0ms)}
.motion [data-reveal].is-in{opacity:1;transform:none}
.motion [data-lines] .ln{display:block;overflow:hidden;padding-bottom:.12em;margin-bottom:-.12em}
.motion [data-lines] .ln>span{display:block;transform:translateY(110%);transition:transform 1.15s var(--ease-reveal) calc(var(--i)*110ms)}
.motion [data-lines].is-in .ln>span{transform:none}
/* Hairline light pass on rows */
.motion .service,.motion .scenario,.motion .process-item{position:relative}
.motion .service::before,.motion .scenario::before,.motion .process-item::before{content:"";position:absolute;top:-1px;left:0;right:0;height:1px;background:var(--copper);transform:scaleX(0);transform-origin:left;opacity:0;pointer-events:none}
.motion .service.is-in::before,.motion .scenario.is-in::before,.motion .process-item.is-in::before{animation:nv-line 1.6s var(--ease-reveal) var(--d,0ms) both}
@keyframes nv-line{0%{transform:scaleX(0);opacity:1}55%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}
/* Geometry line-draw */
.motion .service-geometry :is(path,circle,rect){stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.6s var(--ease-reveal) calc(var(--d,0ms) + 250ms)}
.motion .service-geometry .geometry-accent{fill-opacity:0;transition:stroke-dashoffset 1.6s var(--ease-reveal) calc(var(--d,0ms) + 250ms),fill-opacity .5s ease calc(var(--d,0ms) + 1200ms)}
.motion .service.is-in .service-geometry :is(path,circle,rect){stroke-dashoffset:0;fill-opacity:1}
/* Process squares */
.motion .step-square{transform:scale(0) rotate(45deg);transition:transform .7s cubic-bezier(.34,1.56,.64,1) calc(var(--d,0ms) + 400ms)}
.motion .process-item.is-in .step-square{transform:none}
/* Hover micro-motion */
.scenario-meta>span:last-child{transition:transform .3s var(--ease-ui)}
.scenario:hover .scenario-meta>span:last-child{transform:translate(4px,-4px)}
.service-geometry{transition:transform .6s var(--ease-reveal)}
.service:hover .service-geometry{transform:rotate(90deg)}
.button .arrow,.text-link span{display:inline-block;transition:transform .25s var(--ease-ui)}
.button:hover .arrow{transform:translate(3px,-3px)}
.text-link:hover span{transform:translateY(3px)}
@media(prefers-reduced-motion:reduce){.service:hover .service-geometry,.scenario:hover .scenario-meta>span:last-child,.button:hover .arrow,.text-link:hover span{transform:none}}
/* Print: never hide unrevealed content (CV-W4 S2) */
@media print{.motion [data-reveal]{opacity:1!important;transform:none!important;transition:none!important}.motion [data-lines] .ln>span{transform:none!important;transition:none!important}.motion .hero-title .ch>span,.motion .hero-cross,.motion .hero-top,.motion .hero-bottom>*,.motion .brand-strip,.motion .rail>span{opacity:1!important;transform:none!important;transition:none!important}.motion .hero-title .solutions{clip-path:none!important;transition:none!important}.motion .step-square{transform:none!important;transition:none!important}}
