/* Motion and interactive layer; the page stays readable without JavaScript. */
:root{--ease:cubic-bezier(.22,1,.36,1)}
.header{position:sticky;top:0;z-index:20;max-width:none;background:#fbf7eef0;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transition:box-shadow .3s,padding .35s var(--ease)}
.header.is-scrolled{box-shadow:0 7px 30px #25231e0d;padding-top:7px;padding-bottom:7px}
.header:after{content:'';height:3px;background:var(--red);position:absolute;bottom:0;left:0;width:100%;transform:scaleX(var(--scroll-progress,0));transform-origin:left;pointer-events:none}
.header nav a:not(.nav-contact){position:relative;padding-block:10px}
.header nav a:not(.nav-contact):after{content:'';position:absolute;bottom:2px;left:0;right:0;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.header nav a:hover:after,.header nav a[aria-current="location"]:after{transform:scaleX(1)}
.header nav a[aria-current="location"]{color:var(--red)}
.hero-copy{overflow:hidden}.hero-picture{overflow:hidden}.hero-picture>img{transform:translate3d(0,var(--hero-shift,0px),0) scale(1.09);will-change:transform}
.hero h1 em{background:linear-gradient(var(--gold),var(--gold)) left 96% / 100% 7% no-repeat}
.hero-stamp{border:1px solid #25231e28;box-shadow:0 0 0 6px #edb95660;transition:transform .55s var(--ease)}
.hero-stamp:hover{transform:rotate(-7deg) scale(1.04)}
.motion-ready .hero-copy>*{animation:rise-in .95s var(--ease) both}
.motion-ready .hero-copy>.eyebrow{animation-delay:.05s}.motion-ready .hero-copy>h1{animation-delay:.16s}.motion-ready .hero-copy>.intro{animation-delay:.28s}.motion-ready .hero-copy>.actions{animation-delay:.4s}.motion-ready .hero-copy>.hero-foot{animation-delay:.5s}
.motion-ready .hero-picture{animation:picture-in 1.1s var(--ease) both}
.motion-ready .hero-stamp{animation:stamp-in 1.1s .4s var(--ease) both}
@keyframes rise-in{from{opacity:0;transform:translateY(34px)}to{opacity:1;transform:translateY(0)}}
@keyframes picture-in{from{opacity:.2;clip-path:inset(0 0 12% 0)}to{opacity:1;clip-path:inset(0)}}
@keyframes stamp-in{from{opacity:0;transform:rotate(-22deg) scale(.7)}to{opacity:1;transform:rotate(9deg) scale(1)}}
.reveal{transition:opacity .85s var(--ease),transform .85s var(--ease);transition-delay:var(--reveal-delay,0ms)}
.reveal.is-waiting{opacity:0;transform:translateY(42px)}
.about-picture{isolation:isolate}.about-picture img{transition:filter .6s,transform .9s var(--ease)}
.about-picture:hover img{transform:scale(1.025);filter:saturate(1.1)}
.image-note{transition:transform .6s var(--ease)}.about-picture:hover .image-note{transform:translate(-6px,-5px) rotate(-2deg)}
.service{position:relative;border-radius:3px;transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.service:before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease);z-index:1}
.service:hover:before,.service:focus-within:before{transform:scaleX(1)}
.service:hover,.service:focus-within{transform:translateY(-7px);box-shadow:0 18px 42px #25231e15}
.service img{transition:transform .8s var(--ease),filter .6s}.service:hover img{transform:scale(1.035);filter:saturate(1.08)}
.service-content{position:relative;background:inherit}
.button{position:relative;overflow:hidden;border-radius:3px;transition:background .25s,transform .35s var(--ease),box-shadow .35s}
.button:hover{box-shadow:0 8px 22px #842d2420;transform:translateY(-3px)}
.button:active{transform:translateY(0) scale(.98)}
.button span{transition:transform .3s var(--ease)}.button:hover span{transform:translate(3px,-3px)}
.text-link{transition:color .25s,opacity .25s,padding .3s}.text-link:hover{padding-right:8px}
.quote-builder{border:1px solid var(--line);border-radius:5px;padding:36px;margin-top:40px;background:#fffaf2;display:grid;grid-template-columns:1fr 1.2fr;gap:28px 40px}
.quote-builder .eyebrow{margin-bottom:12px}.quote-builder h3{font-size:2.1rem;letter-spacing:-.04em}.quote-builder .service-note{margin-top:12px}
.quote-options{display:flex;flex-wrap:wrap;gap:10px;align-content:center}.quote-options button{border:1px solid var(--line);border-radius:30px;padding:12px 19px;background:transparent;color:var(--ink);font-size:.875rem;cursor:pointer;transition:background .25s,color .25s,transform .25s,border-color .25s}
.quote-options button:hover{border-color:var(--red);transform:translateY(-2px)}.quote-options button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.quote-result{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:30px;border-top:1px solid var(--line);padding-top:25px}.quote-result p{max-width:590px;color:var(--muted)}.quote-result .button{flex-shrink:0}.quote-result.is-changing p{animation:rise-in .4s var(--ease)}
.back-top{position:fixed;bottom:25px;right:25px;width:48px;height:48px;border-radius:50%;border:1px solid #fbf7ee60;background:var(--red);color:#fff;box-shadow:0 4px 20px #25231e25;font-size:1.45rem;cursor:pointer;z-index:22;transition:transform .3s,background .3s}.back-top:hover{transform:translateY(-4px);background:var(--ink)}.back-top[hidden]{display:none}
@media(max-width:1000px){.quote-builder{grid-template-columns:1fr}.quote-result{align-items:flex-start}.header nav{gap:18px}}
@media(max-width:720px){html{scroll-padding-top:125px}.header{backdrop-filter:blur(12px)}.header nav.open{animation:rise-in .3s var(--ease)}.header.is-scrolled{padding-top:8px;padding-bottom:8px}.quote-builder{padding:25px;gap:22px;margin-top:28px}.quote-builder h3{font-size:1.8rem}.quote-options{gap:8px}.quote-options button{font-size:.875rem;padding:10px 15px}.quote-result{flex-direction:column;gap:20px;padding-top:22px}.quote-result .button{width:100%;font-size:.8125rem}.back-top{right:16px;bottom:16px;width:44px;height:44px}.hero-picture>img{transform:scale(1.04);will-change:auto}.service:hover,.service:focus-within{transform:none}.reveal.is-waiting{transform:translateY(24px)}}
@media(prefers-reduced-motion:reduce){.motion-ready .hero-copy>*,.motion-ready .hero-picture,.motion-ready .hero-stamp,.quote-result.is-changing p,.header nav.open{animation:none!important}.reveal.is-waiting{opacity:1;transform:none}.hero-picture>img{transform:none;will-change:auto}.service:hover,.about-picture:hover img,.about-picture:hover .image-note{transform:none}.header{transition:none}}
