
.wrap{max-width:1360px;margin:0 auto;padding:0 56px}
.on-dark{color:var(--paper)}
section{position:relative}
/* header */
.top{position:fixed;inset:0 0 auto;z-index:50;background:rgba(30,36,31,.78);backdrop-filter:blur(10px) saturate(1.1);-webkit-backdrop-filter:blur(10px) saturate(1.1);transition:background .35s var(--ease),color .35s var(--ease),box-shadow .35s}
.top .wrap{display:flex;align-items:center;height:76px;gap:40px}
.top .mark{font-size:23px}
.top nav{display:flex;gap:30px;margin-left:auto}
.top nav a{font:500 15.5px/1 var(--sans);text-decoration:none;opacity:.86;padding:8px 0;border-bottom:1.5px solid transparent;transition:opacity .2s,border-color .2s}
.top nav a:hover{opacity:1;border-color:currentColor}
.top .acts{display:flex;align-items:center;gap:22px}
.top .tel{display:inline-flex;align-items:center;gap:8px;font:600 16px/1 var(--sans);text-decoration:none}
.tape.sm{--h:44px;padding:0 20px;font-size:15.5px}
.top.solid{background:rgba(246,244,240,.96);color:var(--ink);box-shadow:0 1px 0 var(--line);backdrop-filter:saturate(1.2) blur(8px)}
.top.solid .chip{box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
/* hero */
.hero{height:100vh;min-height:700px;max-height:1080px;background:var(--deep);overflow:hidden}
.hero-media{position:absolute;inset:0}
.hero-media .base{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;animation:appear .01s 1.5s forwards}
.hero-ready .hero-media .base{opacity:1;animation:none}
.hero-media canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.hero-media::after{content:"";position:absolute;inset:auto 0 0;height:22%;background:linear-gradient(to top,rgba(20,24,21,.38),rgba(20,24,21,0));pointer-events:none}
@keyframes appear{to{opacity:1}}
.hero-copy{position:relative;height:100%;padding-left:max(56px,9.2vw)!important;max-width:none!important;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:15vh}
.hero-copy>*{max-width:min(46vw,640px)}
.hero-copy>h1{max-width:none}
.hero h1{font-size:clamp(62px,6.6vw,118px);line-height:.9;letter-spacing:-.035em;margin-bottom:26px}
.hero h1 span{display:block}
.hero .lede{font:400 clamp(18px,1.45vw,21px)/1.45 var(--sans);opacity:.9;max-width:470px;margin-bottom:34px}
.hero .ctas{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:30px}
.hero .ghost{color:var(--paper)}
.proof{display:inline-flex;align-items:center;gap:12px;font:500 15.5px/1 var(--sans);text-decoration:none;opacity:.92}
.proof b{font-weight:600}
.hero-copy .l1,.hero-copy .l2,.hero-copy .lede,.hero-copy .ctas,.hero-copy .proof{opacity:0;transform:translateY(26px);animation:up .95s var(--ease) forwards}
.hero-copy .l1{animation-delay:1.05s}.hero-copy .l2{animation-delay:1.18s}.hero-copy .lede{animation-delay:1.36s}.hero-copy .ctas{animation-delay:1.48s}.hero-copy .proof{animation-delay:1.6s}
@keyframes up{to{opacity:1;transform:none}}

/* craft */
.craft{padding:150px 0 130px;background:var(--paper)}
.craft-head{display:grid;grid-template-columns:1.25fr .75fr;gap:80px;align-items:end;margin-bottom:84px}
.craft-head h2{font-size:clamp(46px,4.3vw,72px);line-height:.98;max-width:17ch}
.craft-head p{font:400 19px/1.5 var(--sans);color:var(--ink2);max-width:360px;justify-self:end}
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:36px}
.step .ph{margin:0 0 30px;aspect-ratio:4/5;overflow:hidden;background:var(--primer)}
.step .ph img{width:100%;height:100%;object-fit:cover;transform:scale(1.04);transition:transform 1.4s var(--ease)}
.step:hover .ph img{transform:scale(1)}
.step .n{display:block;font:600 14.5px/1 var(--sans);color:var(--stone);margin-bottom:14px}
.step h3{font-size:36px;line-height:1;margin-bottom:12px}
.step .txt>p{font:400 18px/1.45 var(--sans);color:var(--ink2);margin-bottom:22px;max-width:32ch}
.pull{margin:0;padding:20px 0 0;border-top:1.5px solid var(--ink)}
.pull q{quotes:none;font:400 21px/1.35 var(--serif);letter-spacing:-.01em;display:block;margin-bottom:12px}
.pull q::before{content:"“"}.pull q::after{content:"”"}
.pull cite{font:500 14.5px/1.3 var(--sans);font-style:normal;color:var(--stone)}
/* services */
.services{background:var(--deep);padding:140px 0}
.sv-head{gap:60px;display:flex;justify-content:space-between;align-items:end;gap:60px;margin-bottom:64px}
.sv-head h2{font-size:clamp(52px,5vw,84px);line-height:.95}
.sv-head p{font:400 19px/1.5 var(--sans);opacity:.8;max-width:400px}
.swatches{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.sw.cta a{background:transparent;border:1.5px solid var(--line-d);color:var(--paper);justify-content:flex-end}
.sw.cta .nm{font-size:30px}.sw.cta .ds{color:rgba(246,244,240,.75)}
.sw a{display:flex;flex-direction:column;min-height:330px;background:var(--trim);color:var(--ink);text-decoration:none;position:relative;overflow:hidden;transition:transform .45s var(--ease)}
.sw .chipc{display:block;height:150px;background:var(--c);transition:height .55s var(--ease)}
.sw .nm{font:700 27px/1.05 var(--serif);letter-spacing:-.02em;padding:22px 22px 8px}
.sw .ds{font:400 17px/1.4 var(--sans);color:var(--ink2);padding:0 22px}
.sw .go{margin-top:auto;padding:18px 22px 22px;display:flex;align-items:center;gap:8px;font:600 16px/1 var(--sans)}
.sw .go svg{width:18px;height:18px;transition:transform .3s var(--ease)}
.sw a:hover{transform:translateY(-4px)}
.sw a:hover .chipc{height:176px}
.sw a:hover .go svg{transform:translateX(4px)}

/* work */
.work{padding:140px 0 120px;background:var(--primer)}
.wk-head{gap:60px;display:flex;justify-content:space-between;align-items:end;margin-bottom:48px}
.wk-head h2{font-size:clamp(52px,5vw,84px);line-height:.95}
.wk-head p{font:400 18px/1.4 var(--sans);color:var(--ink2)}
.gallery{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:118px;gap:14px}
.g{margin:0;overflow:hidden;background:#d8d5cd}
.g img{width:100%;height:100%;object-fit:cover}
.g0{grid-column:span 7;grid-row:span 4}.g1,.g2{grid-column:span 5;grid-row:span 2}.g3,.g4,.g5,.g6,.g7,.g8{grid-column:span 4;grid-row:span 3}
.more{margin-top:26px}
.more summary{display:inline-flex;align-items:center;height:48px;padding:0 22px;border:1.5px solid var(--ink);font:600 16px/1 var(--sans);cursor:pointer;list-style:none;border-radius:2px}
.more summary::-webkit-details-marker{display:none}
.more[open] summary{margin-bottom:20px}
.more-g{grid-auto-rows:220px}.more-g .g{grid-column:span 3}
/* reviews */
.reviews{padding:140px 0;background:var(--paper)}
.reviews .wrap{display:grid;grid-template-columns:330px 1fr;gap:40px 90px}
.score{grid-row:span 2;position:sticky;top:120px;align-self:start}
.score .big{font:700 150px/.85 var(--serif);letter-spacing:-.05em;margin-bottom:16px}
.score .stars svg{width:24px;height:24px}
.score p{font:500 19px/1.4 var(--sans);margin:14px 0 26px}
.ghost.sm{--h:46px;font-size:15.5px}
.lead-q .rv{padding-bottom:40px;border-bottom:1.5px solid var(--ink)}
.lead-q q{font-size:clamp(30px,2.7vw,44px);line-height:1.16}
.rv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:50px 56px;padding-top:20px}
.rv-grid q{font-size:21px;line-height:1.4}
.rv blockquote{margin:0}
/* film */
.film-sec{background:#141815;padding:130px 0}
.fm-head{gap:60px;display:flex;justify-content:space-between;align-items:end;margin-bottom:44px}
.fm-head h2{font-size:clamp(52px,5vw,84px);line-height:.95}
.fm-head p{font:400 18px/1.4 var(--sans);opacity:.75;max-width:320px;text-align:right}
.film-sec .film{aspect-ratio:16/9}
.film video{position:absolute;inset:0}
/* estimate */
.estimate{padding:140px 0 150px;background:var(--primer)}
.estimate .wrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:100px}
.est-copy h2{font-size:clamp(52px,5vw,84px);line-height:.95;margin-bottom:28px}
.est-copy>p{font:400 19px/1.5 var(--sans);color:var(--ink2);max-width:400px}
.est-copy .talk{margin-top:44px;color:var(--ink)}
.est-copy .talk a{display:inline-flex;align-items:center;gap:10px;margin-top:8px;font:700 34px/1 var(--serif);letter-spacing:-.02em;text-decoration:none}
.est-copy .talk .ico{width:26px;height:26px}
.est-copy .hours{margin-top:10px;font-size:16px;color:var(--stone)}
.est-form{background:var(--trim);padding:44px;box-shadow:0 1px 0 var(--line),0 30px 60px -40px rgba(22,26,23,.35)}
.est-form .fields{display:flex;flex-direction:column;gap:24px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.est-form .submit{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.est-form .fine{font-size:15px;color:var(--stone);max-width:300px}
.done h3{font-size:44px;line-height:1;margin-bottom:16px}
.done p{font-size:18px;line-height:1.5;color:var(--ink2);margin-bottom:10px}
.done a{font-weight:600}
/* footer */
.foot{background:var(--deep);padding:80px 0 40px}
.foot .wrap{display:grid;grid-template-columns:1.4fr 1fr auto;gap:40px;align-items:start}
.foot .mark{font-size:30px;margin-bottom:16px}
.foot p{font-size:16.5px;line-height:1.5;opacity:.75}
.f2 a{font:700 28px/1 var(--serif);text-decoration:none;display:block;margin-bottom:12px}
.legal{grid-column:1/-1;border-top:1px solid var(--line-d);padding-top:26px;margin-top:30px;font-size:14.5px}
@media (max-width:1180px){.wrap{padding:0 40px}.top nav{gap:20px}.swatches{grid-template-columns:repeat(3,1fr)}.rv-grid{grid-template-columns:repeat(2,1fr)}.reviews .wrap{grid-template-columns:260px 1fr;gap:40px 50px}.score .big{font-size:120px}}
@media (max-width:980px){.top nav{display:none}.steps{grid-template-columns:1fr 1fr}.estimate .wrap{grid-template-columns:1fr;gap:50px}.hero-copy>*{max-width:70vw}}
