/* Motion layer: curtain hand-off, masked line reveals, scroll-linked scenes */
:root{interpolate-size:allow-keywords}
.scroll-progress{position:fixed;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,#8d3b54,#eedce2);transform:scaleX(0);transform-origin:left;z-index:50;pointer-events:none}

/* Hero recedes, cream section rises over it */
.hero{transform-origin:50% 0;will-change:transform}
.hero-veil{position:absolute;inset:0;z-index:8;background:#0b0103;opacity:0;pointer-events:none}
.intro-section{z-index:2;padding-top:170px;background:#f4f1ec;border-radius:50% 50% 0 0/var(--arc,0px) var(--arc,0px) 0 0;box-shadow:0 -50px 120px -40px #f4f1ec2e}
@media(max-width:680px){.intro-section{padding-top:110px;background:#f4f1ec}}

/* Intro statement: words fill in as you scroll */
.statement .w{color:inherit}
.js-motion .statement .w{opacity:.13;will-change:opacity}

/* Masked line reveals for headings */
.js-motion .line{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}
.js-motion .line>span{display:inline-block;transform:translateY(110%) rotate(3deg);transform-origin:0 100%;transition:transform 1.15s cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--i,0)*95ms + 100ms)}
.js-motion .visible .line>span{transform:none}

/* Staggered rise for grids and lists */
.js-motion .rise{opacity:0;transform:translateY(46px) scale(.97);transition:opacity .9s ease,transform 1.2s cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--i,0)*90ms)}
.js-motion .rise.visible{opacity:1;transform:none}

/* Clip reveal for framed visuals */
.js-motion .clip-reveal{clip-path:inset(14% 10% 14% 10% round 40px);transition:clip-path 1.5s cubic-bezier(.16,1,.3,1)}
.js-motion .clip-reveal.visible{clip-path:inset(0 round 25px)}

/* Services */
.service-tabs button[aria-selected=true]:after,.service-tabs button:after{content:'';position:absolute;bottom:-1px;height:2px;background:#eacbd5;left:0;right:0;transform:scaleX(0);transform-origin:right;transition:transform .55s cubic-bezier(.65,0,.35,1)}
.service-tabs button[aria-selected=true]:after{transform:scaleX(1);transform-origin:left}
.service-tabs button{transition:color .4s}
.js-motion .service-entry{animation:entryIn .8s cubic-bezier(.16,1,.3,1) both}
.js-motion .service-entry:nth-child(2){animation-delay:.07s}.js-motion .service-entry:nth-child(3){animation-delay:.14s}.js-motion .service-entry:nth-child(4){animation-delay:.21s}
@keyframes entryIn{from{opacity:0;transform:translateY(18px)}}
.service-entry summary strong{transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.service-entry summary:hover strong{transform:translateX(6px)}

/* Smooth accordions (progressive enhancement) */
details::details-content{block-size:0;overflow:hidden;transition:block-size .6s cubic-bezier(.2,.7,.2,1),content-visibility .6s allow-discrete}
details[open]::details-content{block-size:auto}
.service-entry summary:after,.faq-list summary:after{transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.service-entry[open] summary:after,.faq-list details[open] summary:after{content:'+';transform:rotate(135deg)}

/* Home photo opens up from a framed card */
.home-image{clip-path:inset(calc(var(--hc,0)*8%) calc(var(--hc,0)*6%) round calc(var(--hc,0)*32px))}

/* Process */
.js-motion .step-line{transform:scaleX(0);transform-origin:left;transition:transform 1.5s cubic-bezier(.65,0,.35,1) calc(var(--i,0)*120ms + 350ms)}
.js-motion .visible .step-line{transform:none}

/* Inspiration */
.story-open>span{display:inline-block;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.inspiration-card:hover .story-open>span{transform:rotate(90deg)}

/* Contact */
.js-motion .contact-orb{animation:orb 18s ease-in-out infinite}
@keyframes orb{50%{transform:translate(-50px,35px) scale(1.07)}}

/* Magnetic buttons */
.cta,.contact{transition:transform .25s,box-shadow .25s,translate .6s cubic-bezier(.2,.7,.2,1)}

@media(prefers-reduced-motion:reduce){.intro-section{border-radius:0}.home-image{clip-path:none}details::details-content{transition:none}}
