body,.btn,.hamburger{cursor:auto}
@media (hover:hover) and (pointer:fine){body,.btn,.hamburger,a,button{cursor:none}.form-submit .btn{cursor:none}}
@media (hover:none),(pointer:coarse){#cur,#cur-ring{display:none}.svc-arrow{opacity:1;transform:none}}
:focus-visible{outline:1px solid #fff;outline-offset:4px}
#progress{position:fixed;top:0;left:0;height:1px;width:0;background:#fff;z-index:1001}
.nav-links{gap:2.2rem}.nav-links a.on{color:#fff}
.nav-links li:last-child a{border:1px solid var(--w25);padding:.55rem 1.1rem;color:#fff;transition:background .22s,color .22s}
.nav-links li:last-child a:hover{background:#fff;color:#000}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap}
#gap{border-top:1px solid var(--w10);display:grid;grid-template-columns:1fr 1fr;gap:6rem;align-items:start}
.lead{font-family:var(--serif);font-size:clamp(2rem,3.6vw,3.8rem);font-weight:300;line-height:1.12;margin-bottom:1.4rem}
.lead em{font-style:italic;color:var(--w55)}
.copy p{font-size:.95rem;line-height:1.9;color:var(--w55);margin-bottom:1.5rem}
.copy p b{font-weight:300;color:#fff}
a.svc{color:inherit;text-decoration:none;display:block}
.svc-grid.four{grid-template-columns:repeat(4,1fr)}
.svc-grid.four .svc{padding-right:1.8rem}.svc-grid.four .svc:not(:first-child){padding-left:1.8rem}
#offer{border-top:1px solid var(--w10);text-align:center;padding:9rem 4rem}
#offer h2{font-family:var(--serif);font-size:clamp(2.6rem,6vw,6.5rem);font-weight:300;line-height:1.05;margin:1.6rem 0}
#offer h2 em{font-style:italic;color:var(--w55)}
#offer p:last-child{color:var(--w55);font-size:.95rem}
.cta-lead{font-family:var(--serif);font-style:italic;font-size:clamp(1.3rem,2.2vw,2rem);line-height:1.4;max-width:720px;margin:0 auto 2.2rem;color:var(--w55)}
.page-hero{padding:11rem 4rem 6rem}
.page-hero .hero-eyebrow{margin-bottom:1.5rem}
.page-hero h1{margin-bottom:2rem}
.page-hero .sub{max-width:560px;font-size:1rem;line-height:1.85;color:var(--w55);margin-bottom:2.5rem}
.nf{min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:6rem 1.5rem}
.nf .sub{color:var(--w55);margin:1.5rem 0 2.5rem}
.form-error{color:#fff;opacity:.75}
.form-field.has-error input,.form-field.has-error textarea{border-bottom-color:#fff}
#contact #form-msg{display:none;margin:1rem 0 0;font-size:.82rem;color:#fff;opacity:.75;text-align:center}
#contact #form-success p{margin:0}
@media(max-width:1100px){.svc-grid.four{grid-template-columns:repeat(2,1fr)}
.svc-grid.four .svc{padding:2.5rem 1.8rem!important;border-bottom:1px solid var(--w10)}
.svc-grid.four .svc:nth-child(odd){padding-left:0!important}.svc-grid.four .svc:nth-child(even){border-right:none}
.nav-links{gap:1.4rem}}
@media(max-width:900px){#gap{grid-template-columns:1fr;gap:3rem}.page-hero{padding:9rem 1.5rem 4rem}#offer{padding:6rem 1.5rem}}
@media(max-width:640px){.svc-grid.four{grid-template-columns:1fr}.svc-grid.four .svc{padding:2rem 0!important;border-right:none}.hero-actions{gap:.8rem}}
@media(min-width:1440px){#gap,#offer,.page-hero{padding-left:max(4rem,calc((100vw - 1440px)/2 + 4rem));padding-right:max(4rem,calc((100vw - 1440px)/2 + 4rem))}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}
/* ── fonts ── */
:root{--serif:'Newsreader',Georgia,serif;--sans:'Manrope',system-ui,sans-serif;--w55:rgba(255,255,255,.68)}
html{font-size:106%}
body{font-weight:400;line-height:1.6;}
/* ── type scale ── */
.nav-links a,.f-links a{font-size:.8rem;letter-spacing:.14em}.f-copy{font-size:.8rem}
.hero-eyebrow,.s-label,.pull-eyebrow,.cta-pre{font-size:.8rem;letter-spacing:.2em}
.hero-hl{font-size:clamp(2.8rem,6.2vw,6.4rem);line-height:1.04;font-weight:400}
.hero-sub{font-size:1.1rem;max-width:440px;line-height:1.7}
.btn{font-size:.82rem;padding:1rem 2.2rem}
.m-item{font-size:.8rem}
.s{padding:6.5rem 4rem}
.svc-num{font-size:1.1rem}.svc-title{font-size:2rem;font-weight:400}.svc-desc{font-size:1rem;line-height:1.75}
.pull-headline{font-size:clamp(1.9rem,3.6vw,3.6rem);font-weight:400}
.lead{font-size:clamp(1.9rem,3.2vw,3.2rem);font-weight:400}.copy p{font-size:1.05rem}
#offer h2{font-size:clamp(2.4rem,5.2vw,5.2rem);font-weight:400}
#contact h2{font-size:clamp(2.6rem,5.6vw,5.6rem);font-weight:400}#contact p{font-size:1.05rem}
.cta-lead{font-size:clamp(1.3rem,2.2vw,1.9rem)}
.form-field label{font-size:.75rem}.form-field input,.form-field textarea{font-size:1rem;font-weight:400}.form-error{font-size:.85rem}
.page-hero .sub{font-size:1.15rem}
@media(max-width:640px){html{font-size:100%}.hero-hl{font-size:clamp(2.5rem,11.5vw,3.8rem)}.hero-sub{font-size:1rem}.s{padding:4.5rem 1.5rem}.svc-title{font-size:1.8rem}.m-item{font-size:.72rem}}
/* ── background wordmark with distorted "sid" ── */
.page-hero,#offer,#contact{position:relative;overflow:hidden}
.page-hero>*:not(.ghost-word),#offer>*:not(.ghost-word),#contact>*:not(.ghost-word){position:relative;z-index:1}
.ghost-word{position:absolute!important;left:50%;bottom:-4%;transform:translateX(-50%);font-family:var(--serif);font-size:clamp(6rem,24vw,24rem);line-height:1;color:#fff;opacity:.055;white-space:nowrap;pointer-events:none;user-select:none;z-index:0!important}
.ghost-word .g-sid{display:inline-block;filter:url(#f-sid-lg);animation:sidGlitch 7s steps(1) infinite}
@keyframes sidGlitch{0%{clip-path:inset(0);transform:none}2%{clip-path:inset(12% 0 70% 0);transform:translate(-8px,3px)}4%{clip-path:inset(62% 0 18% 0);transform:translate(7px,-2px)}6%{clip-path:inset(30% 0 50% 0);transform:translate(-5px,0)}8%,100%{clip-path:inset(0);transform:none}}
/* ── page hero with visual ── */
.page-hero{display:grid;grid-template-columns:1.05fr .95fr;gap:4rem;align-items:center;min-height:88vh}
.viz{margin:0 0 0 auto;width:100%;max-width:520px}.viz svg{width:100%;height:auto;display:block;overflow:visible}
.viz text{font-family:var(--sans);fill:#fff;font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.pd{animation:pull 7s cubic-bezier(.4,0,.8,.6) infinite;animation-delay:var(--d)}
@keyframes pull{0%{transform:rotate(var(--a)) translateX(185px);opacity:0}15%,80%{opacity:.9}100%{transform:rotate(var(--a)) translateX(46px);opacity:0}}
.rp{animation:rp 3.5s ease-in-out infinite}@keyframes rp{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
.pulse{animation:drop 5.2s linear infinite}@keyframes drop{0%{transform:translateY(20px);opacity:0}6%,94%{opacity:1}100%{transform:translateY(410px);opacity:0}}
.nd{animation:nd 5.2s infinite;animation-delay:var(--d)}@keyframes nd{0%{fill-opacity:0;stroke-opacity:.55}6%{fill-opacity:.16;stroke-opacity:1}16%,100%{fill-opacity:0;stroke-opacity:.55}}
.scan{animation:scan 6s linear infinite}@keyframes scan{to{transform:translateY(300px)}}
.bad{animation:bad 6s steps(1) infinite}@keyframes bad{0%{opacity:1}52%,100%{opacity:0}}
.good{animation:good 6s steps(1) infinite}@keyframes good{0%{opacity:0}52%,100%{opacity:1}}
.fl{animation:fl 7s ease-in-out infinite;animation-delay:var(--d)}@keyframes fl{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
/* ── icons + process ── */
.ico{width:44px;height:44px;margin-bottom:1.6rem;fill:none;stroke:#fff;stroke-width:1.2;stroke-opacity:.8;display:block}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem}
.step{position:relative;padding-top:2.4rem}
.step::before,.step::after{content:'';position:absolute;top:0;left:0;height:1px}
.step::before{right:-2.5rem;background:var(--w10)}.step:last-child::before{right:0}
.step::after{width:0;background:#fff;transition:width 1.3s ease}
.reveal.in .step::after{width:calc(100% + 2.5rem)}.reveal.in .step:last-child::after{width:100%}
.reveal.in .step:nth-child(2)::after{transition-delay:.5s}.reveal.in .step:nth-child(3)::after{transition-delay:1s}
.step i{position:absolute;top:-4px;left:0;width:9px;height:9px;border-radius:50%;background:#fff;animation:node 3s ease-in-out infinite}
.step:nth-child(2) i{animation-delay:1s}.step:nth-child(3) i{animation-delay:2s}
@keyframes node{0%,100%{box-shadow:0 0 0 0 rgba(255,255,255,.35)}50%{box-shadow:0 0 0 9px rgba(255,255,255,0)}}
@media(max-width:900px){.page-hero{grid-template-columns:1fr;min-height:0;gap:3rem}.viz{margin:0 auto;max-width:420px}.steps{grid-template-columns:1fr;gap:2rem}.step::before{right:0}.step::after{width:0}.reveal.in .step::after{width:100%!important}}
.hero-sub,.svc-desc,.copy p,#contact p,.page-hero .sub,#offer p{font-weight:400}
.nav-links a,.hero-eyebrow,.s-label,.pull-eyebrow,.cta-pre,.btn,.form-field label,.f-links a,.m-item,.svc-arrow{font-weight:500}
