/* ===== Zyqor v2 premium layer (shared desktop + phone) ===== */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
::selection{background:#B5832F;color:#F3EDE1}

/* grain */
.grain{position:fixed;inset:-50%;z-index:90;pointer-events:none;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px 180px;will-change:transform}
.is-desktop .grain{animation:grain 1s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}17%{transform:translate(-3%,2%)}33%{transform:translate(2%,-4%)}50%{transform:translate(-4%,-1%)}67%{transform:translate(3%,3%)}83%{transform:translate(-1%,4%)}100%{transform:translate(0,0)}}

/* loader v2: counter + curtain handoff */
.ld{overflow:hidden;background:transparent!important}
.ld::before,.ld::after{content:"";position:absolute;left:0;right:0;height:50.5%;background:#F3EDE1;z-index:0;transition:transform .9s cubic-bezier(.76,0,.24,1)}
.ld::before{top:0}.ld::after{bottom:0}
.ld .ld-box{position:relative;z-index:2;transition:opacity .35s ease,transform .6s cubic-bezier(.76,0,.24,1)}
.ld-count{position:absolute;right:4vw;bottom:3vh;z-index:2;font:500 clamp(64px,13vw,190px)/.8 var(--sw-font-display);color:#17423C;letter-spacing:-.04em;font-variant-numeric:tabular-nums;transition:opacity .3s ease,transform .6s cubic-bezier(.76,0,.24,1)}
.ld-count small{font-size:.28em;vertical-align:top;margin-left:.08em;color:#B5832F}
.ld-tag{position:absolute;left:4vw;bottom:4vh;z-index:2;font:600 12px/1.4 var(--sw-font-body);letter-spacing:.18em;text-transform:uppercase;color:#4D6863;transition:opacity .3s ease}
.ld-line{position:absolute;left:0;top:50%;height:2px;width:100%;z-index:1;background:#B5832F;transform-origin:0 50%;transform:scaleX(var(--p,0));transition:transform .25s linear,opacity .3s ease}
.ld.is-out{opacity:1!important;visibility:visible!important;pointer-events:none}
.ld.is-out::before{transform:translateY(-101%)}
.ld.is-out::after{transform:translateY(101%)}
.ld.is-out .ld-box{opacity:0;transform:translateY(-30px)}
.ld.is-out .ld-count{opacity:0;transform:translateY(40px)}
.ld.is-out .ld-tag,.ld.is-out .ld-line{opacity:0}
.hero-in .sw-stage{animation:heroIn 1.5s cubic-bezier(.22,1,.36,1) both}
@keyframes heroIn{from{scale:1.14;filter:saturate(.6) brightness(1.08)}to{scale:1;filter:none}}

/* split text */
.st-w{display:inline-block;overflow:hidden;vertical-align:top;padding:.06em .02em .12em;margin:-.06em -.02em -.12em}
.st-i{display:inline-block;will-change:transform}
html.fx-on .st:not(.st-done) .st-i{transform:translateY(112%) rotate(5deg)}
.st-i{transition:transform 1s cubic-bezier(.19,1,.22,1);transition-delay:calc(var(--i,0) * 40ms)}

/* marquee */
.mq{position:relative;overflow:hidden;padding:30px 0;background:#17423C;color:#F3EDE1;border-block:1px solid rgba(243,237,225,.08)}
.mq-row{display:flex;width:max-content;will-change:transform}
.mq-row+.mq-row{margin-top:6px}
.mq-set{display:flex;align-items:center;flex:none}
.mq-it{font:500 clamp(44px,6.6vw,104px)/1.1 var(--sw-font-display);letter-spacing:-.025em;padding:0 .32em;white-space:nowrap}
.mq-it.i{font-style:italic;font-weight:400}
.mq-it.o{color:transparent;-webkit-text-stroke:1.2px rgba(243,237,225,.6)}
.mq-it.t{color:#D9B56A}
.mq-st{width:clamp(22px,2.6vw,40px);height:clamp(22px,2.6vw,40px);flex:none;color:#B5832F}
.mq-row.rev .mq-st{color:#D9B56A}
.is-mobile .mq-row{animation:mq 28s linear infinite}
.is-mobile .mq-row.rev{animation-direction:reverse;animation-duration:34s}
@keyframes mq{to{transform:translateX(-50%)}}

/* nav roll */
.roll{display:inline-block;overflow:hidden;vertical-align:top;position:relative;line-height:1.2}
.roll>span{display:block;transition:transform .5s cubic-bezier(.19,1,.22,1)}
.roll>span::after{content:attr(data-t);position:absolute;left:0;top:100%}
a:hover>.roll>span,button:hover>.roll>span,a:focus-visible>.roll>span{transform:translateY(-100%)}

/* buttons: magnetic + fill sweep */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:#17423C;transform:translateY(101%);transition:transform .5s cubic-bezier(.19,1,.22,1)}
.btn--teal::before{background:#17423C}.btn--ghost::before{background:#B5832F}
.btn:hover::before{transform:translateY(0)}
.btn:hover{color:#F3EDE1}
.btn .ic{transition:transform .45s cubic-bezier(.19,1,.22,1)}
.btn:hover .ic{transform:translate(3px,-3px)}
.rip{position:absolute;border-radius:50%;pointer-events:none;background:rgba(217,181,106,.45);transform:translate(-50%,-50%) scale(0);animation:rip .7s cubic-bezier(.22,1,.36,1) forwards;z-index:0}
@keyframes rip{to{transform:translate(-50%,-50%) scale(1);opacity:0}}

/* click / tap particles */
.fx-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:200;pointer-events:none}

/* custom cursor (desktop, fine pointer) */
.cur,.cur-r{position:fixed;left:0;top:0;z-index:300;pointer-events:none;border-radius:50%;opacity:0;transition:opacity .3s ease}
.cur{width:8px;height:8px;margin:-4px 0 0 -4px;background:#17423C;transition:opacity .3s ease,background-color .3s ease}
.cur.on-dk{background:#F3EDE1}
.cur-r.on-dk i{border-color:rgba(243,237,225,.6)}
.cur-r.is-link i{mix-blend-mode:multiply}
.cur-r.on-dk.is-link i{mix-blend-mode:screen}
.cur-r{width:44px;height:44px;margin:-22px 0 0 -22px;display:grid;place-items:center}
.cur-r i{position:absolute;inset:0;border-radius:50%;border:1.5px solid rgba(23,66,60,.55);transition:transform .45s cubic-bezier(.19,1,.22,1),background-color .35s ease,border-color .35s ease}
.cur-r b{position:relative;font:700 12px/1 var(--sw-font-body);letter-spacing:.08em;text-transform:uppercase;color:#F3EDE1;opacity:0;transform:scale(.6);transition:opacity .25s ease,transform .4s cubic-bezier(.19,1,.22,1);white-space:nowrap;display:flex;align-items:center;gap:6px}
.cur-r b svg{width:14px;height:14px}
html.cur-on .cur,html.cur-on .cur-r{opacity:1}
html.cur-on,html.cur-on *{cursor:none!important}
html.cur-on input,html.cur-on textarea{cursor:text!important}
.cur-r.is-link i{transform:scale(1.5);background:rgba(217,181,106,.55);border-color:transparent}
.cur-r.is-label i{transform:scale(2.3);background:#B5832F;border-color:#B5832F}
.cur-r.is-label b{opacity:1;transform:scale(1)}
.cur-r.is-label.lbl-ivory i{background:#F3EDE1;border-color:#F3EDE1}
.cur-r.is-label.lbl-ivory b{color:#17423C}
.cur-r.is-down i{transform:scale(.8)}
.cur-r.is-label.is-down i{transform:scale(2)}
html.cur-on .cur.is-hide,html.cur-on .cur-r.is-hide{opacity:0}
.cur.is-label{opacity:0!important}

/* horizontal project gallery (desktop) */
.hs{position:relative}
.hs-track{max-width:1240px;margin:0 auto;padding:0 clamp(20px,4vw,56px)}
.hs-bar{display:none}
.hs.is-h{padding-bottom:0}
.hs.is-h .hs-pin{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;justify-content:center;overflow:hidden}
.hs.is-h .hs-track{display:flex;gap:5vw;padding:0 7vw;margin:0;max-width:none;width:max-content;will-change:transform}
.hs.is-h .hs-track>.proj{flex:none;width:min(80vw,1180px);margin:0!important;padding:0!important;border:0!important;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr)!important;gap:4vw!important}
.hs.is-h .hs-track>.proj .shot{order:0!important;padding:0 clamp(28px,4vw,56px) clamp(30px,4vw,48px) 0!important}
.hs.is-h .hs-track>.proj .phone{right:0!important;left:auto!important}
.hs.is-h .hs-track>.proj .info{order:1!important}
.hs.is-h .hs-bar{display:flex;align-items:center;gap:18px;padding:0 7vw;margin-top:5vh;font:700 13px/1 var(--sw-font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
.hs-bar .hs-p{flex:1;height:2px;background:var(--line);position:relative;overflow:hidden;border-radius:2px}
.hs-bar .hs-p i{position:absolute;inset:0;background:#B5832F;transform-origin:0 50%;transform:scaleX(0)}
.hs-bar .hs-n{font-variant-numeric:tabular-nums;color:var(--ink);min-width:64px}
.hs-bar .hs-h{display:flex;align-items:center;gap:8px}
.hs-bar svg{width:18px;height:18px}
.hs-bar button{width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--ink);display:grid;place-items:center;padding:0;transition:background-color .3s,color .3s,border-color .3s}
.hs-bar button:hover{background:#17423C;color:#F3EDE1;border-color:#17423C}
html.is-dragging .hs-track{cursor:grabbing}
html.is-dragging .hs-track a{pointer-events:none}
.hs .sec-head{margin-bottom:clamp(30px,4vw,60px)}

/* tilt + glare */
.tilt{transform-style:preserve-3d;will-change:transform}
.glare{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:5;opacity:0;transition:opacity .4s ease;background:radial-gradient(600px circle at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.28),transparent 45%);mix-blend-mode:soft-light}
.tilt:hover .glare{opacity:1}

/* dark section expand */
.xpand{will-change:clip-path}

/* spotlight on price card */
.price{position:relative;overflow:hidden}
.price::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(520px circle at var(--mx,70%) var(--my,30%),rgba(217,181,106,.20),transparent 60%);opacity:var(--so,.6);transition:opacity .4s ease}
.price>*{position:relative;z-index:1}

/* contact finale with WebGL / CSS aurora */
.contact.fin{position:relative;background:#17423C;color:#F3EDE1;padding:130px 0 120px!important;overflow:hidden;isolation:isolate}
.contact.fin .kicker{color:#D9B56A}
.contact.fin h2,.contact.fin .lead{color:#F3EDE1}
.contact.fin .lead{opacity:.78}
.contact.fin h2 em{color:#D9B56A}
.contact.fin .way{background:rgba(243,237,225,.06);border:1px solid rgba(243,237,225,.12);color:#F3EDE1;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.contact.fin .way small{color:rgba(243,237,225,.6)}
.contact.fin .way:hover{background:rgba(217,181,106,.12);border-color:rgba(217,181,106,.5)}
.aur{position:absolute;inset:0;z-index:-1;width:100%;height:100%;display:block}
.aur-css{position:absolute;inset:-20%;z-index:-1;background:radial-gradient(40% 50% at 20% 30%,rgba(181,131,47,.55),transparent 70%),radial-gradient(35% 45% at 80% 70%,rgba(201,164,74,.35),transparent 70%),radial-gradient(30% 40% at 60% 20%,rgba(217,181,106,.3),transparent 70%);filter:blur(30px)}
.is-mobile .aur-css{animation:aur 14s ease-in-out infinite alternate}
@keyframes aur{to{transform:translate3d(6%,-4%,0) rotate(8deg) scale(1.1)}}
.contact.fin::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#17423C 0%,transparent 22%,transparent 78%,#17423C 100%);pointer-events:none}
.way .cp{margin-left:auto;flex:none;display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;background:rgba(217,181,106,.16);color:#D9B56A;font-size:0}
.is-desktop .contact.fin .ways{grid-template-columns:1fr 1.3fr 1fr}
.way.em strong{word-break:normal;overflow-wrap:anywhere}
.way .cp svg{width:14px;height:14px}
.way .cp{cursor:pointer;transition:background-color .25s ease,transform .25s ease}.way .cp:hover{background:rgba(217,181,106,.32);transform:scale(1.08)}.way .cp:focus-visible{outline:2px solid #D9B56A;outline-offset:2px}

/* footer wordmark */
.bigmark{overflow:hidden;padding:2vw 0 0;background:#17423C;color:#F3EDE1;line-height:.78}
.bigmark-in{display:flex;justify-content:center;font:500 25vw/.82 var(--sw-font-display);letter-spacing:-.06em}
.bigmark-in span{display:inline-block;will-change:transform;background:linear-gradient(180deg,#F3EDE1 25%,#D9B56A 115%);-webkit-background-clip:text;background-clip:text;color:transparent}
.ft{background:#17423C!important;color:rgba(243,237,225,.6)!important;border-top:1px solid rgba(243,237,225,.08)}
.ft a{color:#F3EDE1!important}

/* toast */
.toast{position:fixed;left:50%;bottom:28px;z-index:260;display:flex;align-items:center;gap:12px;padding:12px 14px 12px 12px;border-radius:16px;background:#17423C;color:#F3EDE1;box-shadow:0 18px 50px rgba(23,66,60,.3);font:500 14px/1.3 var(--sw-font-body);transform:translate(-50%,140%);opacity:0;transition:transform .6s cubic-bezier(.19,1,.22,1),opacity .3s ease}
.toast.is-on{transform:translate(-50%,0);opacity:1}
.toast .tk{width:30px;height:30px;border-radius:50%;background:#D9B56A;color:#17423C;display:grid;place-items:center;flex:none}
.toast .tk svg{width:16px;height:16px}
.toast .tk path{stroke-dasharray:24;stroke-dashoffset:24;transition:stroke-dashoffset .5s .15s ease}
.toast.is-on .tk path{stroke-dashoffset:0}
.toast a{color:#D9B56A;font-weight:700;margin-left:6px;text-decoration:none;white-space:nowrap}

/* back to top */
.btt{position:fixed;right:24px;bottom:24px;z-index:120;width:58px;height:58px;border-radius:50%;border:0;padding:0;background:#17423C;color:#F3EDE1;display:grid;place-items:center;box-shadow:0 12px 30px rgba(23,66,60,.28);opacity:0;transform:translateY(20px) scale(.8);pointer-events:none;transition:opacity .4s ease,transform .5s cubic-bezier(.19,1,.22,1),background-color .3s ease;cursor:pointer}
.btt.is-on{opacity:1;transform:none;pointer-events:auto}
.btt:hover{background:#B5832F}
.btt svg.ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.btt svg.ring circle{fill:none;stroke-width:2.5}
.btt .ar{width:22px;height:22px;overflow:hidden;position:relative}
.btt .ar svg{position:absolute;inset:0;width:22px;height:22px;transition:transform .5s cubic-bezier(.19,1,.22,1)}
.btt .ar svg+svg{transform:translateY(130%)}
.btt:hover .ar svg:first-child,.btt.is-fly .ar svg:first-child{transform:translateY(-130%)}
.btt:hover .ar svg+svg,.btt.is-fly .ar svg+svg{transform:translateY(0)}
.btt.is-fly{animation:bttSpin 1.4s cubic-bezier(.65,0,.35,1)}
@keyframes bttSpin{50%{transform:translateY(-10px) scale(1.08)}}

/* scramble / kicker */
.kicker{font-variant-numeric:tabular-nums}

/* image curtain reveal */
html.fx-on .cur-reveal{clip-path:inset(100% 0 0 0)}
.cur-reveal{transition:clip-path 1.2s cubic-bezier(.76,0,.24,1)}
html.fx-on .cur-reveal.is-in{clip-path:inset(0 0 0 0)}

/* phone swipe gallery */
.sw-gal{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:4px 20px 8px;margin:0 -20px;scrollbar-width:none;overscroll-behavior-x:contain}
.sw-gal::-webkit-scrollbar{display:none}
.sw-gal>.mproj{flex:none;width:84%;scroll-snap-align:center;border:1px solid var(--line)!important;border-radius:24px;padding:22px 18px 20px!important;background:var(--panel);transition:transform .3s ease}
.sw-gal>.mproj:active{transform:scale(.985)}
.gal-ui{display:flex;align-items:center;gap:12px;margin-top:16px;font:700 12px/1 var(--sw-font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
.gal-ui .dots{display:flex;gap:6px;flex:1}
.gal-ui .dots i{height:4px;flex:1;border-radius:4px;background:var(--line);transition:background-color .3s ease}
.gal-ui .dots i.on{background:#B5832F}
.gal-ui button{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--panel);display:grid;place-items:center;color:var(--ink);padding:0}
.gal-ui button svg{width:18px;height:18px}
.gal-ui button:active{transform:scale(.92)}
.is-mobile .btt{width:50px;height:50px;right:16px;bottom:16px}

@media (prefers-reduced-motion: reduce){
 .grain{animation:none!important}
 .hero-in .sw-stage{animation:none}
 .st-i{transition:none!important;transform:none!important}
 .mq-row{animation:none!important}
 .aur-css{animation:none!important}
 .cur-reveal{clip-path:none!important;transition:none}
 .ld::before,.ld::after,.btn::before,.roll>span{transition-duration:.01s!important}
}

/* phone: CSS-only versions of the desktop scroll effects */
.xp-m{clip-path:inset(0 4% 0 4% round 28px);transition:clip-path 1.1s cubic-bezier(.76,0,.24,1)}
.xp-m.is-in{clip-path:inset(0 0 0 0 round 0)}
.is-mobile .bigmark-in span{transform:translateY(100%);transition:transform 1s cubic-bezier(.19,1,.22,1)}
.is-mobile .bigmark-in span:nth-child(2){transition-delay:.06s}.is-mobile .bigmark-in span:nth-child(3){transition-delay:.12s}.is-mobile .bigmark-in span:nth-child(4){transition-delay:.18s}.is-mobile .bigmark-in span:nth-child(5){transition-delay:.24s}
.is-mobile .bigmark.is-in .bigmark-in span{transform:none}
.is-mobile .contact.fin{padding:96px 0 90px!important}
.is-mobile .ld-count{font-size:clamp(72px,24vw,120px)}
.is-mobile .ld-tag{display:none}
@media (prefers-reduced-motion: reduce){ .xp-m{clip-path:none!important;transition:none} .is-mobile .bigmark-in span{transform:none;transition:none} }

/* ===== audit pass (Oct 27): fixes + polish ===== */
/* big footer wordmark: descenders (y, q) were clipped */
.bigmark{line-height:1}
.bigmark-in{line-height:1.08;padding-bottom:.05em}
/* scroll progress */
.sprog{position:fixed;left:0;top:0;right:0;height:2px;z-index:95;pointer-events:none;background:linear-gradient(90deg,#B5832F,#D9B56A);transform-origin:0 50%;transform:scaleX(0);will-change:transform}
/* header turns pine glass over dark sections */
.hd.is-solid.on-dk{background:rgba(23,66,60,.86);box-shadow:0 1px 0 rgba(243,237,225,.1)}
.hd.is-solid.on-dk .logo{color:#F3EDE1}.hd.is-solid.on-dk .logo b{color:#D9B56A}.hd.is-solid.on-dk .logo-mark{background:#B5832F}.logo-mark{transition:background-color .35s ease}
.hd.is-solid.on-dk .nav a:not(.btn){color:rgba(243,237,225,.78)}
.hd.is-solid.on-dk .nav a:not(.btn):hover,.hd.is-solid.on-dk .nav a.is-act{color:#F3EDE1}
.hd.is-solid.on-dk .nav .btn{background:#B5832F}
.hd .logo,.hd .nav a,.hd .nav .btn{transition:color .35s ease,background-color .35s ease}
/* active-section indicator in the nav */
.is-desktop .nav a:not(.btn){position:relative;padding:6px 0}
.is-desktop .nav a:not(.btn)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;border-radius:2px;background:#B5832F;transform:scaleX(0);transform-origin:100% 50%;transition:transform .5s cubic-bezier(.19,1,.22,1)}
.is-desktop .nav a:not(.btn):hover::after,.is-desktop .nav a.is-act::after{transform:scaleX(1);transform-origin:0 50%}
.is-desktop .nav a.is-act{color:#17423C}
/* icon micro-motion */
.btn .ic,.way .ico .ic,.ft a svg{transition:transform .45s cubic-bezier(.19,1,.22,1)}
.btn:hover .ic:last-child{transform:translate(3px,-3px)}
.btn:hover .ic:first-child:not(:last-child){transform:rotate(-8deg) scale(1.08)}
.way:hover .ico .ic{transform:scale(1.12) rotate(-6deg)}
.ft a:hover svg{transform:translateY(-3px)}
.way .ico{transition:transform .45s cubic-bezier(.19,1,.22,1),background-color .3s}
/* project card: info lifts when its card is hovered */
.is-desktop .proj .info h3{transition:color .35s ease}
.is-desktop .proj:hover .info h3{color:#B5832F}
.is-desktop .proj .info .num{transition:letter-spacing .5s cubic-bezier(.19,1,.22,1)}
.is-desktop .proj:hover .info .num{letter-spacing:.24em}
/* phone tap targets (40px minimum) */
.is-mobile .sw-route{gap:4px;right:0}
.is-mobile .sw-route__dot{width:40px;height:40px}
.is-mobile .shot .vctl,.is-mobile .vctl{height:40px;min-height:40px;padding:0 14px}
.is-mobile .way .cp{width:40px;height:40px}
.is-mobile .nav .btn{min-height:40px}
.is-mobile .ft a{min-height:44px}
.is-mobile .hs-bar button{width:44px;height:44px}
.cp:active{transform:scale(.92)}
/* section headings: kicker line draws in */
.zs-js [data-reveal] .kicker::before{transform:scaleX(0);transform-origin:0 50%;transition:transform 1s cubic-bezier(.19,1,.22,1) .35s}
.zs-js [data-reveal].is-in .kicker::before{transform:none}
@media (prefers-reduced-motion: reduce){.zs-js [data-reveal] .kicker::before{transform:none;transition:none}}
@media (prefers-reduced-motion: reduce){
 .sprog{display:none}
 .btn .ic,.way .ico .ic,.ft a svg,.is-desktop .nav a:not(.btn)::after{transition:none}
}
.at-end .btt.is-on{opacity:0;transform:translateY(16px) scale(.8);pointer-events:none}
