/* Brandt Renovation (fictional) - design concept by Gmax Media, 2026-10-07. Direction: site poster. */
:root{--k:#111;--k2:#1b1b1b;--y:#FFD400;--bone:#F2EFE6;--mut:#9a958a;--disp:"Big Shoulders Display",Impact,sans-serif;--body:"Inter Tight",system-ui,sans-serif;--g:clamp(20px,2.8vw,40px)}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--k);color:var(--bone);font:400 17px/1.5 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
.btn{display:inline-flex;align-items:center;justify-content:center;font:700 16px/1 var(--body);padding:15px 22px;border:0;cursor:pointer;transition:transform .25s,background .25s}
.btn-y{background:var(--y);color:var(--k)}.btn-y:hover{transform:translateY(-2px);background:#fff}
.btn-lg{font-size:18px;padding:21px 30px}
.out{color:transparent;-webkit-text-stroke:2px var(--y)}
.h2{font:900 clamp(64px,9vw,150px)/.84 var(--disp);text-transform:uppercase;letter-spacing:-.005em}
.lead{font:500 clamp(17px,1.4vw,21px)/1.45 var(--body);color:#cfcac0;max-width:34ch}

/* header */
.hd{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:28px;height:68px;padding:0 var(--g);background:var(--k);border-bottom:2px solid var(--y)}
.logo{font:900 32px/1 var(--disp);color:var(--y);letter-spacing:.01em}
.hd-since{color:var(--mut);font-size:14px}
.hd-nav{margin-left:auto;display:flex;gap:28px;font-weight:600;font-size:15px}
.hd-nav a:hover{color:var(--y)}
.hd-menu{display:none;background:none;border:0;width:40px;height:40px;cursor:pointer;flex-direction:column;justify-content:center;gap:7px;align-items:center}
.hd-menu i{display:block;width:26px;height:3px;background:var(--y)}

/* hero */
.hero{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-template-rows:auto auto;gap:0 var(--g);padding:clamp(24px,3vw,44px) var(--g) clamp(40px,4vw,64px);min-height:calc(100svh - 68px)}
.hero-h{grid-column:1;grid-row:1;white-space:nowrap;font:900 clamp(100px,13.4vw,240px)/.8 var(--disp);text-transform:uppercase;letter-spacing:-.01em;position:relative;z-index:2}
.hero-h span{display:block}
.hero-h .l2{color:transparent;-webkit-text-stroke:clamp(2px,.25vw,4px) var(--y)}
.hero-wall{grid-column:2;grid-row:1 / span 2;position:relative;overflow:hidden;min-height:min(46vw,640px)}
.hero-wall img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.12) brightness(.95)}
.hero-hammer{position:absolute;z-index:3;width:clamp(220px,27vw,470px);left:41%;top:clamp(40px,6vw,110px);transform:rotate(0);filter:drop-shadow(0 30px 40px rgba(0,0,0,.6));pointer-events:none;animation:hm 6s ease-in-out infinite}
@keyframes hm{50%{transform:rotate(3deg) translateY(-10px)}}
.hero-foot{grid-column:1;grid-row:2;align-self:end;display:grid;grid-template-columns:auto auto;align-items:end;justify-content:space-between;gap:28px var(--g);margin-top:clamp(28px,3vw,48px);padding-right:clamp(40px,8vw,140px)}
.hero-p{grid-column:1 / -1;font:500 clamp(18px,1.5vw,22px)/1.4 var(--body);color:#cfcac0;max-width:30ch}
.hero-count{text-align:right}
.hero-count b{display:block;font:900 clamp(80px,8.4vw,140px)/.82 var(--disp);color:var(--y)}
.hero-count span{font-weight:600;font-size:15px;color:#cfcac0}

/* hazard tape */
.tape{height:54px;background:repeating-linear-gradient(-45deg,var(--y) 0 28px,var(--k) 28px 56px);overflow:hidden;position:relative}
.tape-in{position:absolute;top:9px;left:0;display:flex;gap:0;white-space:nowrap;animation:mq 26s linear infinite}
.tape-in span{background:var(--k);color:var(--y);font:800 26px/36px var(--disp);text-transform:uppercase;padding:0 22px;margin-right:60px;letter-spacing:.04em}
@keyframes mq{to{transform:translateX(-50%)}}
.tape-b{height:28px}

/* before / after */
.ba{background:var(--bone);color:var(--k);padding:clamp(70px,8vw,130px) var(--g)}
.ba .out{-webkit-text-stroke-color:var(--k)}
.ba-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--g);margin-bottom:clamp(30px,4vw,56px)}
.ba .lead{color:#3a372f}
.ba-frame{position:relative;aspect-ratio:16/8.4;overflow:hidden;cursor:ew-resize;user-select:none;touch-action:pan-y;background:#ccc}
.ba-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ba-after{clip-path:inset(0 0 0 var(--x))}
.ba-line{position:absolute;top:0;bottom:0;left:var(--x);width:4px;margin-left:-2px;background:var(--y)}
.ba-knob{position:absolute;top:50%;left:50%;width:72px;height:72px;margin:-36px 0 0 -36px;border-radius:50%;border:0;background:var(--y);color:var(--k);font:700 28px/72px var(--body);cursor:grab;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.ba-knob:focus-visible{outline:3px solid var(--k);outline-offset:4px}
.ba-tag{position:absolute;top:18px;font:800 22px/1 var(--disp);text-transform:uppercase;letter-spacing:.06em;padding:10px 14px;background:var(--k);color:var(--bone)}
.ba-tag-b{left:18px}.ba-tag-a{right:18px;background:var(--y);color:var(--k)}
.ba-spec{display:grid;grid-template-columns:repeat(4,1fr);border-top:2px solid var(--k);margin-top:18px;padding-top:14px;font:700 15px/1.3 var(--body);text-transform:uppercase;letter-spacing:.04em}

/* hammer strike (v2): the hammer is the way into the before/after */
.ba-wrap{position:relative}
.ba-frame:not(.struck) .ba-line,.ba-frame:not(.struck) .ba-tag-a{opacity:0;pointer-events:none}
.ba-frame:not(.struck){cursor:default}
.ba-line,.ba-tag-a,.ba-tag-b{transition:opacity .35s}
.ba-frame.struck .ba-tag-b{opacity:1}
.ba-shards{position:absolute;inset:0;z-index:2;pointer-events:none}
.ba-sh{position:absolute;inset:0;filter:drop-shadow(0 14px 16px rgba(0,0,0,.35));will-change:transform}
.ba-sh>div{position:absolute;inset:0}.ba-sh img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ba-crk{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none}
.ba-ring{position:absolute;left:0;top:0;width:180px;height:180px;margin:-90px 0 0 -90px;border-radius:50%;border:9px solid var(--y);z-index:4;opacity:0;pointer-events:none}
.ba-hammer{position:absolute;left:0;top:0;z-index:6;padding:0;border:0;background:none;cursor:grab;filter:drop-shadow(0 30px 34px rgba(0,0,0,.45));-webkit-tap-highlight-color:transparent}
.ba-hammer img{display:block;width:100%;height:auto}
.ba-hammer:focus-visible{outline:3px solid var(--k);outline-offset:6px}
.ba-hint{position:absolute;left:-6%;top:26%;background:var(--k);color:var(--y);font:800 20px/1 var(--disp);text-transform:uppercase;letter-spacing:.06em;padding:10px 14px;transform:rotate(-8deg);transition:opacity .3s}
.ba-hammer.used .ba-hint{opacity:0}

/* services */
.svc{position:relative;padding:clamp(70px,8vw,130px) var(--g)}
.svc-h{margin-bottom:clamp(30px,4vw,56px)}
.svc-row{position:relative;display:grid;grid-template-columns:70px minmax(0,1fr) 180px 170px;align-items:center;gap:20px;border-top:2px solid #2c2c2c;padding:clamp(14px,1.6vw,24px) 0;transition:background .3s,color .3s,padding .3s}
.svc-row:last-child{border-bottom:2px solid #2c2c2c}
.svc-n{font:800 22px/1 var(--disp);color:var(--y)}
.svc-t{font:900 clamp(48px,6.4vw,108px)/.9 var(--disp);text-transform:uppercase}
.svc-m,.svc-p{font-weight:600;color:#cfcac0}.svc-p{text-align:right}
.svc-im{display:none}
.svc-row:hover{background:var(--y);color:var(--k);padding-left:18px;padding-right:18px}
.svc-row:hover .svc-n,.svc-row:hover .svc-m,.svc-row:hover .svc-p{color:var(--k)}
.svc-float{position:fixed;left:0;top:0;width:340px;height:240px;object-fit:cover;pointer-events:none;z-index:40;opacity:0;transform:translate(-50%,-50%) rotate(-4deg) scale(.9);transition:opacity .25s,transform .35s cubic-bezier(.16,1,.3,1)}
.svc-float.on{opacity:1;transform:translate(-50%,-50%) rotate(-4deg) scale(1)}

/* process ruler */
.proc{background:var(--y);color:var(--k);padding:clamp(70px,8vw,130px) var(--g);overflow:hidden}
.proc-head{position:relative;display:flex;justify-content:space-between;align-items:center}
.proc-tape{width:clamp(220px,28vw,460px);margin:0;transform:rotate(-8deg);filter:drop-shadow(0 26px 30px rgba(0,0,0,.35))}
.ruler{position:relative;display:grid;grid-template-columns:repeat(5,1fr);margin-top:clamp(40px,5vw,70px);padding-top:70px;border-top:3px solid var(--k)}
.ruler:before{content:"";position:absolute;left:0;right:0;top:0;height:44px;background:repeating-linear-gradient(90deg,var(--k) 0 2px,transparent 2px 100%) 0 0/2% 18px no-repeat repeat-x,repeating-linear-gradient(90deg,var(--k) 0 3px,transparent 3px 100%) 0 0/10% 44px repeat-x;background-repeat:repeat-x}
.rs{padding-right:22px}
.rs b{display:block;font:900 30px/1 var(--disp);text-transform:uppercase}
.rs h3{font:700 22px/1.2 var(--body);margin:12px 0 8px}
.rs p{font-size:16px;line-height:1.45;color:#3a3200;max-width:24ch}

/* project grid */
.grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;grid-template-rows:340px 340px;gap:14px;padding:clamp(70px,8vw,130px) var(--g) 0}
.g{position:relative;overflow:hidden;margin:0}
.g img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.16,1,.3,1)}
.g:hover img{transform:scale(1.05)}
.g1{grid-row:span 2}.g4{grid-column:span 2}
.g figcaption{position:absolute;left:0;bottom:0;background:var(--k);padding:10px 14px;font-weight:600;font-size:15px}
.g figcaption i{font-style:normal;color:var(--y);margin-left:8px}

/* crew */
.crew{display:grid;grid-template-columns:1fr 1fr;gap:var(--g);align-items:center;padding:clamp(70px,8vw,130px) var(--g)}
.crew-ph{aspect-ratio:4/3;overflow:hidden}.crew-ph img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.1)}
blockquote{font:800 clamp(40px,4.4vw,72px)/.95 var(--disp);text-transform:uppercase}
.crew-who{margin-top:20px;color:var(--y);font-weight:700}
.crew-p{margin-top:26px;color:#cfcac0;max-width:40ch}

/* quote form */
.cta{display:grid;grid-template-columns:1fr 1fr;gap:var(--g);padding:clamp(70px,8vw,130px) var(--g);border-top:2px solid var(--y)}
.cta-h{font:900 clamp(70px,8.6vw,150px)/.84 var(--disp);text-transform:uppercase}
.form{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px;align-content:end}
.form label{display:flex;flex-direction:column;gap:8px;font-weight:600;font-size:14px;color:#cfcac0}
.form input,.form select{font:500 18px/1 var(--body);padding:16px;background:var(--k2);color:var(--bone);border:2px solid #333;border-radius:0}
.form input:focus,.form select:focus{outline:none;border-color:var(--y)}
.form .btn{grid-column:1 / -1;margin-top:8px}
.form-ok{display:none;grid-column:1 / -1;color:var(--y);font-weight:700}
.form.sent .form-ok{display:block}

.ft{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:var(--g);padding:44px var(--g) 50px;color:#cfcac0;font-size:15px;border-top:1px solid #2c2c2c}
.ft-note{color:var(--mut)}

@media (max-width:900px){
  .hd{height:60px;gap:14px}.hd-since,.hd-nav,.hd-cta{display:none}.hd-menu{display:flex;margin-left:auto}
  .hero{grid-template-columns:1fr;min-height:0}
  .hero-h{font-size:clamp(76px,24vw,170px)}
  .hero-wall{grid-column:1;grid-row:2;min-height:62vw;margin-top:22px}
  .hero-hammer{width:40vw;left:auto;right:4vw;top:60vw;bottom:auto}
  .hero-wall{grid-row:2}
  .hero-foot{grid-row:3;grid-template-columns:1fr;align-items:start;padding-right:0}
  .hero-count{justify-self:start;text-align:left}
  .ba-head{flex-direction:column;align-items:flex-start}
  .ba-frame{aspect-ratio:4/5}
  .ba-spec{grid-template-columns:1fr 1fr;gap:8px}
  .svc-row{grid-template-columns:40px 1fr;row-gap:6px}
  .svc-m,.svc-p{grid-column:2;text-align:left}
  .svc-im{display:block;grid-column:1 / -1;width:100%;aspect-ratio:16/10;object-fit:cover;margin-top:10px}
  .proc-head{flex-direction:column;align-items:flex-start}.proc-tape{margin:10px 0 -20px;width:52vw}
  .ruler{grid-template-columns:1fr;padding-top:0;border-top:0;border-left:3px solid var(--k);padding-left:22px;gap:28px}
  .ruler:before{display:none}
  .grid{grid-template-columns:1fr 1fr;grid-template-rows:auto}
  .g{aspect-ratio:4/5}.g1{grid-row:auto;grid-column:span 2;aspect-ratio:4/3}.g4{grid-column:span 2;aspect-ratio:4/3}
  .crew,.cta{grid-template-columns:1fr}
  .form{grid-template-columns:1fr}
  .ft{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){.tape-in,.hero-hammer{animation:none}html{scroll-behavior:auto}}

/* v3 (2026-10-07, Max final cleanup): the hero hammer spins (Blender sequence, assets/3d/spin) as the hero's 3D motion;
   clicking it shows the finished room in the photo (Week 0 > Week 6). Week 0 / Week 6 section fitted to the viewport height. */
.hero-hammer{padding:0;border:0;background:none;cursor:pointer;animation:none!important;transform:none!important;width:clamp(200px,24vw,420px);left:44%;top:clamp(30px,4vw,80px);pointer-events:auto}
.hero-hammer img,.hero-hammer canvas{display:block;width:100%;height:auto}
.hero-hammer canvas{position:absolute;inset:0;height:100%}
.hero-hammer.on img{visibility:hidden}
.hero-hammer:focus-visible{outline:3px solid var(--y);outline-offset:6px}
.hero-done{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;clip-path:inset(0 0 0 100%);transition:clip-path .9s cubic-bezier(.77,0,.18,1)}
.hero.done .hero-done{clip-path:inset(0 0 0 0)}
.hero-tag{position:absolute;right:16px;top:16px;z-index:2;background:var(--k);color:var(--y);font:800 22px/1 var(--disp);text-transform:uppercase;letter-spacing:.06em;padding:10px 14px}
@media (min-width:901px){
  .ba{--baw:min(100%,calc((100svh - 140px - 2 * .84 * clamp(56px,min(9vw,13svh),150px) - 4vh) * 16 / 8.4))}
  .ba .h2{font-size:clamp(56px,min(9vw,13svh),150px)}
  .ba-head{margin-bottom:clamp(20px,3svh,44px)}
  .ba-head,.ba-wrap,.ba-spec{width:var(--baw);margin-left:auto;margin-right:auto}
  .ba{padding-top:clamp(56px,7svh,110px);padding-bottom:clamp(56px,7svh,110px)}
}
@media (max-width:900px){.hero-hammer{width:40vw;left:auto;right:4vw;top:60vw}}
.hero-wall .hero-done{filter:none}

/* v4 (2026-10-07, Max): hero hammer composed on the photo: its HEAD on the photo's top-left corner, the handle running down
   through "BUILD IT." like a stroke (the spin sequence mirrored). It spins; a click swings it and the head opens the finished
   bathroom from that corner (a different project from the Week 0 / Week 6 section). Positions are measured in main.js. */
.hero-hammer{position:absolute!important;left:0;top:0;z-index:4;padding:0;border:0;background:none;cursor:pointer;animation:none!important;transform:none!important;pointer-events:none}
.hh-rot{display:block;pointer-events:auto;will-change:transform}
.hero-hammer canvas{display:block;width:100%;height:100%;position:static!important;filter:drop-shadow(0 26px 30px rgba(0,0,0,.55))}
.hero-done{clip-path:circle(0% at 0% 0%);transition:none!important}
.hero.done .hero-done{clip-path:circle(0% at 0% 0%)}
