/* =====================================================================
   DunRite — "THE BUILD" cinematic scroll experience
   Luxury / high-end · GSAP + ScrollTrigger + Lenis
   ===================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700;800;900&family=Archivo+Expanded:wght@500;600;700;800;900&family=Saira+Condensed:wght@600;700;800&family=Spline+Sans+Mono:wght@400;500;600&display=swap');

:root{
  --black:#0b0b0c;
  --near:#101012;
  --panel:#16161a;
  --line:rgba(255,255,255,.12);
  --line-2:rgba(255,255,255,.06);
  --white:#f5f2ea;
  --dim:#b6b2a8;
  --dim-2:#7c7972;
  --gold:#eaa83b;
  --gold-deep:#c8820f;
  --on-gold:#1a1205;

  --display:"Archivo Expanded","Archivo",system-ui,sans-serif;
  --cond:"Saira Condensed",sans-serif;
  --mono:"Spline Sans Mono",ui-monospace,monospace;
  --body:"Archivo",system-ui,sans-serif;

  --gutter:clamp(20px,4vw,72px);
  --maxw:1400px;
}

*{box-sizing:border-box;}
html{scroll-behavior:auto;}
body{
  margin:0;background:var(--black);color:var(--white);
  font-family:var(--body);-webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
body.lock{overflow:hidden;height:100vh;}
img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
::selection{background:var(--gold);color:var(--on-gold);}

h1,h2,h3{font-family:var(--display);font-weight:800;line-height:.96;letter-spacing:-.01em;margin:0;text-transform:uppercase;}
.mono{font-family:var(--mono);}
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);}

/* grain overlay (global) */
.grain-fx{position:fixed;inset:0;z-index:9000;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  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='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
.vignette{position:fixed;inset:0;z-index:8999;pointer-events:none;
  box-shadow:inset 0 0 240px 60px rgba(0,0,0,.55);}

/* ---------------- preloader ---------------- */
.pre{position:fixed;inset:0;z-index:10000;background:var(--black);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:30px;}
.pre img{height:46px;opacity:0;transform:translateY(14px);}
.pre .pre-bar{width:min(420px,62vw);height:2px;background:var(--line);position:relative;overflow:hidden;}
.pre .pre-bar i{position:absolute;inset:0;width:0%;background:var(--gold);}
.pre .pre-count{font-family:var(--cond);font-weight:800;font-size:clamp(64px,12vw,150px);line-height:1;color:var(--white);}
.pre .pre-count .pct{color:var(--gold);font-size:.4em;vertical-align:super;}
.pre .pre-label{font-family:var(--mono);font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--dim-2);}
.pre.hide{pointer-events:none;}

/* ---------------- top bar ---------------- */
.bar{position:fixed;top:0;left:0;right:0;z-index:200;display:flex;align-items:center;
  justify-content:space-between;padding:22px var(--gutter);mix-blend-mode:difference;}
.bar .b-logo{height:30px;}
.bar .b-right{display:flex;align-items:center;gap:22px;font-family:var(--mono);font-size:12px;
  letter-spacing:.14em;text-transform:uppercase;}
.bar .b-right a{color:#fff;opacity:.85;transition:opacity .2s;}
.bar .b-right a:hover{opacity:1;}
@media(max-width:640px){.bar .b-right .b-hide{display:none;}}

/* scroll progress line (top) */
.scrollbar{position:fixed;top:0;left:0;height:3px;width:100%;z-index:300;background:transparent;}
.scrollbar i{display:block;height:100%;width:0%;background:var(--gold);
  box-shadow:0 0 16px var(--gold);}

/* ---------------- hero ---------------- */
.hero{position:relative;min-height:100vh;display:flex;align-items:flex-end;overflow:hidden;}
.hero-bg{position:absolute;inset:-8% 0 0 0;height:116%;will-change:transform;}
.hero-bg img,.hero-bg video{width:100%;height:100%;object-fit:cover;filter:grayscale(var(--fg-gray,.35)) contrast(1.08) brightness(.5);}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(11,11,12,.7) 0%,rgba(11,11,12,.15) 40%,rgba(11,11,12,.95) 100%);}
.hero .wrap{position:relative;z-index:2;padding-bottom:clamp(48px,8vh,110px);width:100%;}
.hero .kick{font-family:var(--mono);font-size:13px;letter-spacing:.28em;text-transform:uppercase;
  color:var(--gold);display:flex;align-items:center;gap:14px;margin-bottom:26px;}
.hero .kick::before{content:"";width:46px;height:1px;background:var(--gold);}
.hero h1{font-size:clamp(48px,9.2vw,168px);line-height:.9;}
.hero h1 .ln{display:block;overflow:hidden;}
.hero h1 .ln span{display:block;}
.hero h1 .thin{font-family:var(--cond);font-weight:600;-webkit-text-stroke:1px var(--white);
  color:transparent;}
.hero h1 em{font-style:normal;color:var(--gold);}
.hero .sub{display:flex;flex-wrap:wrap;gap:24px 40px;align-items:flex-end;margin-top:40px;
  border-top:1px solid var(--line);padding-top:26px;max-width:900px;}
.hero .sub p{margin:0;color:var(--dim);font-size:clamp(15px,1.4vw,19px);line-height:1.5;max-width:46ch;}
.hero .scrollcue{position:absolute;bottom:30px;right:var(--gutter);z-index:3;font-family:var(--mono);
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);display:flex;
  flex-direction:column;align-items:center;gap:12px;}
.hero .scrollcue .ln{width:1px;height:54px;background:linear-gradient(var(--gold),transparent);
  position:relative;overflow:hidden;}
.hero .scrollcue .ln::after{content:"";position:absolute;top:-30%;left:0;width:100%;height:40%;
  background:var(--gold);animation:cue 1.8s infinite;}
@keyframes cue{0%{top:-40%;}100%{top:120%;}}

/* generic section intro line */
.statement{padding:clamp(90px,16vh,200px) 0;background:var(--black);}
.statement p{font-family:var(--display);font-weight:700;text-transform:uppercase;
  font-size:clamp(26px,4.6vw,74px);line-height:1.04;letter-spacing:-.01em;max-width:18ch;}
.statement .word{display:inline-block;opacity:.16;transition:opacity .1s;}
.statement em{font-style:normal;color:var(--gold);}

/* ---------------- THE BUILD (pinned timelapse) ---------------- */
.build{position:relative;background:var(--black);}
.build-pin{position:relative;height:100vh;overflow:hidden;}
.frames{position:absolute;inset:0;}
.frame{position:absolute;inset:0;opacity:0;}
.frame:first-child{opacity:1;}
.frame img,.frame video{width:100%;height:100%;object-fit:cover;filter:grayscale(var(--fg-gray,.28)) contrast(1.06) brightness(.62);
  will-change:transform;transform:scale(1.16);}
.build-pin::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,rgba(8,8,9,.86) 0%,rgba(8,8,9,.35) 46%,rgba(8,8,9,.2) 100%),
             linear-gradient(0deg,rgba(8,8,9,.92) 0%,rgba(8,8,9,0) 42%);}

.build-ui{position:absolute;inset:0;z-index:3;pointer-events:none;}
.build-ui .wrap{height:100%;display:flex;flex-direction:column;justify-content:center;
  padding-left:clamp(72px,21vw,320px);}
@media(max-width:900px){.build-ui .wrap{padding-left:var(--gutter);}}
.bnum{font-family:var(--cond);font-weight:800;font-size:clamp(110px,26vw,420px);line-height:.78;
  color:transparent;-webkit-text-stroke:1.5px rgba(245,242,234,.28);letter-spacing:-.02em;
  position:absolute;top:50%;right:var(--gutter);transform:translateY(-50%);z-index:-1;}
.bkick{font-family:var(--mono);font-size:13px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--gold);margin-bottom:18px;display:flex;align-items:center;gap:14px;}
.bkick::before{content:"";width:40px;height:1px;background:var(--gold);}
.btitle{font-size:clamp(40px,7vw,118px);line-height:.92;max-width:14ch;}
.bcap{margin:24px 0 0;color:var(--dim);font-size:clamp(15px,1.5vw,20px);line-height:1.55;max-width:42ch;}

/* readout: day + percent */
.readout{position:absolute;left:var(--gutter);bottom:clamp(28px,5vh,64px);right:var(--gutter);z-index:4;
  display:flex;align-items:flex-end;justify-content:space-between;gap:24px;pointer-events:none;}
.readout .day{font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);}
.readout .day b{font-family:var(--cond);font-weight:800;font-size:46px;letter-spacing:.02em;color:var(--white);display:block;margin-top:2px;}
.readout .pct{text-align:right;}
.readout .pct .pn{font-family:var(--cond);font-weight:800;font-size:clamp(40px,5vw,72px);line-height:.9;color:var(--gold);}
.readout .pct .pl{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-top:4px;}

/* progress meter (bottom full-width) */
.meter{position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--line-2);z-index:5;}
.meter i{display:block;height:100%;width:0%;background:var(--gold);box-shadow:0 0 18px var(--gold);}

/* vertical stage rail */
.rail{position:absolute;top:50%;left:var(--gutter);transform:translateY(-50%);z-index:4;
  display:flex;flex-direction:column;gap:0;pointer-events:none;}
.rail .tk{display:flex;align-items:center;gap:14px;padding:11px 0;opacity:.4;transition:opacity .3s;}
.rail .tk .dot{width:9px;height:9px;border:1px solid var(--dim);border-radius:50%;transition:all .3s;}
.rail .tk .lb{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);white-space:nowrap;}
.rail .tk.on{opacity:1;}
.rail .tk.on .dot{background:var(--gold);border-color:var(--gold);box-shadow:0 0 14px var(--gold);transform:scale(1.25);}
.rail .tk.on .lb{color:var(--white);}
@media(max-width:900px){.rail{display:none;}.bnum{opacity:.5;}}
@media(max-width:560px){.readout{flex-direction:column;align-items:flex-start;gap:14px;}.readout .pct{text-align:left;}}

/* ---------------- stats ---------------- */
.stats{padding:clamp(80px,14vh,170px) 0;background:var(--near);border-top:1px solid var(--line-2);}
.stats .sh{font-family:var(--mono);font-size:13px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin-bottom:50px;display:flex;align-items:center;gap:14px;}
.stats .sh::before{content:"";width:46px;height:1px;background:var(--gold);}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-2);border-block:1px solid var(--line-2);}
.stat{background:var(--near);padding:40px 8px 38px 0;}
.stat .n{font-family:var(--cond);font-weight:800;font-size:clamp(56px,7vw,108px);line-height:.85;color:var(--white);}
.stat .n .u{color:var(--gold);}
.stat .l{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim-2);margin-top:14px;}
@media(max-width:820px){.stat-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:460px){.stat-grid{grid-template-columns:1fr;}}

/* ---------------- horizontal capabilities ---------------- */
.cap{position:relative;background:var(--black);}
.cap-pin{height:100vh;overflow:hidden;display:flex;align-items:center;}
.cap-track{display:flex;gap:0;will-change:transform;padding-left:var(--gutter);}
.cap-intro{flex:none;width:min(80vw,560px);padding-right:80px;display:flex;flex-direction:column;justify-content:center;}
.cap-intro .sh{font-family:var(--mono);font-size:13px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin-bottom:22px;}
.cap-intro h2{font-size:clamp(36px,5vw,84px);line-height:.94;}
.cap-intro p{color:var(--dim);font-size:17px;line-height:1.55;margin-top:22px;max-width:40ch;}
.cap-card{flex:none;width:min(78vw,440px);height:64vh;margin-right:26px;position:relative;
  border:1px solid var(--line);overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;}
.cap-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:grayscale(.4) contrast(1.05) brightness(.6);transition:transform .8s ease,filter .5s;}
.cap-card:hover img{transform:scale(1.07);filter:grayscale(0) brightness(.7);}
.cap-card::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(8,8,9,.92),transparent 60%);}
.cap-card .cc{position:relative;z-index:2;padding:34px;}
.cap-card .cc .cn{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--gold);}
.cap-card .cc h3{font-size:clamp(26px,3vw,40px);margin:14px 0 12px;}
.cap-card .cc p{color:var(--dim);font-size:15px;line-height:1.5;margin:0;max-width:34ch;}
.cap-end{flex:none;width:60vw;}
@media(max-width:760px){.cap-card{width:80vw;height:58vh;}}

/* ---------------- closing CTA ---------------- */
.close{position:relative;min-height:100vh;display:flex;align-items:center;overflow:hidden;background:var(--black);}
.close-bg{position:absolute;inset:0;}
.close-bg img,.close-bg video{width:100%;height:100%;object-fit:cover;filter:grayscale(var(--fg-gray,.4)) brightness(.4) contrast(1.05);}
body[data-grain="off"] .grain-fx,body[data-grain="off"] .vignette{display:none;}
.close::after{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 60%,rgba(8,8,9,.5),rgba(8,8,9,.95));}
.close .wrap{position:relative;z-index:2;text-align:center;width:100%;}
.close .kick{font-family:var(--mono);font-size:13px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin-bottom:26px;}
.close h2{font-size:clamp(44px,9vw,150px);line-height:.9;}
.close h2 em{font-style:normal;color:var(--gold);}
.close .actions{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:46px;}
.btn{font-family:var(--mono);font-size:13px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  display:inline-flex;align-items:center;gap:12px;padding:18px 30px;border:1.5px solid transparent;cursor:pointer;
  transition:transform .15s,background .25s,color .25s,border-color .25s;}
.btn:active{transform:translateY(1px);}
.btn .arr{transition:transform .2s;}.btn:hover .arr{transform:translateX(5px);}
.btn-gold{background:var(--gold);color:var(--on-gold);}
.btn-gold:hover{background:var(--white);}
.btn-ghost{border-color:var(--line);color:#fff;}.btn-ghost:hover{border-color:var(--gold);color:var(--gold);}

.foot{position:relative;z-index:2;border-top:1px solid var(--line-2);background:var(--black);}
.foot .wrap{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:26px var(--gutter);
  font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--dim-2);flex-wrap:wrap;}
.foot a:hover{color:var(--gold);}

/* generic reveal */
.rv{opacity:0;transform:translateY(30px);}
.reduced .rv{opacity:1;transform:none;}
.reduced .frame{opacity:1;}
.reduced .hero-bg,.reduced .frame img{transform:none;}

/* ---------------- creed / ethos ---------------- */
.creed{padding:clamp(80px,15vh,180px) 0;background:var(--black);border-top:1px solid var(--line-2);}
.creed .sh{font-family:var(--mono);font-size:13px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin-bottom:34px;display:flex;align-items:center;gap:14px;}
.creed .sh::before{content:"";width:46px;height:1px;background:var(--gold);}
.creed-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(36px,6vw,90px);align-items:start;}
.creed h2{font-size:clamp(32px,4.6vw,72px);line-height:.98;}
.creed h2 em{font-style:normal;color:var(--gold);}
.creed .body p{color:var(--dim);font-size:clamp(16px,1.5vw,20px);line-height:1.62;margin:0 0 22px;}
.creed .body p:last-child{margin-bottom:0;}
.mv-row{display:grid;gap:1px;background:var(--line-2);border:1px solid var(--line-2);margin-top:30px;}
.mv-row .mv{background:var(--near);padding:28px 26px;}
.mv-row .mv h4{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin:0 0 10px;}
.mv-row .mv p{margin:0;color:var(--dim);font-size:15.5px;line-height:1.55;}
@media(max-width:820px){.creed-grid{grid-template-columns:1fr;}}

/* ---------------- testimonials ---------------- */
.voices{padding:clamp(80px,14vh,170px) 0;background:var(--near);position:relative;overflow:hidden;border-top:1px solid var(--line-2);}
.voices .qmark{position:absolute;top:-.18em;right:4vw;font-family:var(--display);font-weight:900;font-size:clamp(220px,34vw,520px);color:rgba(255,255,255,.03);line-height:1;pointer-events:none;}
.voices .sh{font-family:var(--mono);font-size:13px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin-bottom:44px;display:flex;align-items:center;gap:14px;}
.voices .sh::before{content:"";width:46px;height:1px;background:var(--gold);}
.voices .stars{color:var(--gold);letter-spacing:4px;font-size:18px;margin-bottom:22px;}
.voices blockquote{font-family:var(--display);font-weight:700;text-transform:none;letter-spacing:-.01em;
  font-size:clamp(26px,4vw,58px);line-height:1.1;margin:0;max-width:18ch;color:var(--white);}
.voices .by{font-family:var(--mono);font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin-top:30px;}
.voices .by b{color:var(--white);}
.voices .more-q{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-2);border:1px solid var(--line-2);margin-top:60px;}
.voices .more-q .q{background:var(--near);padding:34px 30px;}
.voices .more-q .q p{font-family:var(--display);font-weight:600;text-transform:none;font-size:clamp(18px,1.8vw,23px);line-height:1.3;margin:0 0 18px;color:var(--white);letter-spacing:-.01em;}
.voices .more-q .q .by{margin-top:0;}
@media(max-width:760px){.voices .more-q{grid-template-columns:1fr;}}

/* ---------------- service area ---------------- */
.area{padding:clamp(80px,14vh,170px) 0;background:var(--black);border-top:1px solid var(--line-2);}
.area .sh{font-family:var(--mono);font-size:13px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin-bottom:30px;display:flex;align-items:center;gap:14px;}
.area .sh::before{content:"";width:46px;height:1px;background:var(--gold);}
.area-head{display:grid;grid-template-columns:1fr auto;gap:28px;align-items:end;margin-bottom:clamp(40px,6vw,70px);}
.area-head h2{font-size:clamp(32px,4.6vw,72px);line-height:.98;max-width:16ch;}
.area-head h2 em{font-style:normal;color:var(--gold);}
.area-head .note{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim-2);max-width:30ch;text-align:right;line-height:1.7;}
.counties{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line);}
.counties .ct{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:30px 24px;position:relative;transition:background .25s;overflow:hidden;}
.counties .ct:hover{background:var(--near);}
.counties .ct .ci{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--dim-2);}
.counties .ct .cnm{font-family:var(--cond);font-weight:800;text-transform:uppercase;font-size:clamp(18px,1.55vw,25px);line-height:1.02;margin-top:12px;color:var(--white);letter-spacing:-.005em;}
.counties .ct:hover .cnm{color:var(--gold);}
@media(max-width:900px){.counties{grid-template-columns:repeat(3,1fr);}}
@media(max-width:560px){.counties{grid-template-columns:repeat(2,1fr);} .area-head{grid-template-columns:1fr;} .area-head .note{text-align:left;}}
