:root{
  --tar:#050607;
  --asphalt:#0F1218;
  --granite:#171B21;
  --seam:#252A31;
  --bone:#ECE6DA;
  --bone-dim:#A8A294;
  --steel:#7E8791;
  --ember:#FF4D00;
  --ember-deep:#C93A00;
  --pitch:26.57deg; /* 6/12 roof pitch */
  --display:'Big Shoulders Display',sans-serif;
  --body:'Archivo',sans-serif;
  --mono:'IBM Plex Mono',monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--asphalt);
  color:var(--bone);
  font-family:var(--body);
  font-size:16px;
  line-height:1.6;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--ember);color:var(--tar)}

/* ---- granule texture overlay ---- */
body::before{
  content:'';
  position:fixed;inset:0;
  pointer-events:none;
  z-index:1;
  opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23g)'/%3E%3C/svg%3E");
}

a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
.wrap{max-width:1320px;margin:0 auto;padding:0 clamp(20px,4vw,56px)}

/* ---------- mono annotation style ---------- */
.spec{
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--steel);
}
.spec b{color:var(--ember);font-weight:600}

/* ---------- nav ---------- */
nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  background:linear-gradient(to bottom,rgba(5,6,7,.92),rgba(5,6,7,.78));
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--seam);
}
.nav-inner{
  max-width:1320px;margin:0 auto;
  padding:0 clamp(20px,4vw,56px);
  height:72px;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  transition:height .25s ease;
}
nav.compact .nav-inner{height:56px}
.mat{will-change:transform}
.logo{display:flex;align-items:baseline;gap:10px;line-height:1}
.logo .mark{
  font-family:var(--display);font-weight:900;font-size:26px;letter-spacing:.02em;
  color:var(--bone);text-transform:uppercase;
}
.logo .mark span{color:var(--ember)}
.logo .tag{font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--steel);text-transform:uppercase}
.nav-links{display:flex;gap:34px;align-items:center}
.nav-links a{
  font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--bone-dim);transition:color .2s;position:relative;padding:4px 0;
}
.nav-links a:hover,.nav-links a:focus-visible{color:var(--bone)}
.nav-links a::after{
  content:'';position:absolute;left:0;bottom:-2px;height:2px;width:0;
  background:var(--ember);transition:width .25s;
}
.nav-links a:hover::after{width:100%}
.nav-phone{
  display:flex;align-items:center;gap:10px;
  font-family:var(--display);font-weight:800;font-size:20px;letter-spacing:.04em;
  color:var(--bone);
  border:1px solid var(--seam);
  padding:8px 18px;
  background:var(--granite);
  transition:border-color .2s, background .2s;
}
.nav-phone:hover{border-color:var(--ember);background:#1b1d21}
.nav-phone .dot{width:8px;height:8px;background:var(--ember);border-radius:50%;animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
@media(max-width:980px){.nav-links{display:none}}
@media(max-width:560px){
  .logo .tag{display:none}
  .logo{gap:8px}
  .logo .mark{font-size:19px;white-space:nowrap}
  .nav-inner{gap:12px;padding:0 18px}
  .nav-phone{font-size:15px;padding:8px 12px;white-space:nowrap;flex:none}
}

/* ---------- hero ---------- */
header{
  position:relative;
  min-height:100svh;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding-top:72px;
  background:var(--asphalt);
  overflow:hidden;
}
.hero-bg{
  position:absolute;inset:0;z-index:0;
  background:url("hero-aerial-2.webp") center / cover no-repeat;
}
.hero-veil{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg, rgba(5,6,7,.3) 0%, rgba(5,6,7,.38) 42%, rgba(5,6,7,.88) 100%);
}
#rain{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.5}
@media(min-width:761px){
  .hero-bg{animation:kenburns 34s ease-in-out infinite alternate;will-change:transform}
}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.07) translateY(-1.2%)}}
@keyframes ctapulse{0%,100%{box-shadow:0 10px 40px rgba(255,77,0,.3)}50%{box-shadow:0 12px 56px rgba(255,77,0,.55)}}
.hero-ctas .btn-ember{animation:ctapulse 3.2s ease-in-out infinite}
@media(max-width:760px){
  .hero-bg{background-image:url("hero-aerial-m-3.webp");background-position:center 30%}
  .hero-veil{background:linear-gradient(180deg, rgba(5,6,7,.6) 0%, rgba(5,6,7,.48) 45%, rgba(5,6,7,.92) 100%)}
}
/* the pitch line — 6/12 slope cutting the hero */
.pitch-line{
  position:absolute;
  left:-10%;right:-10%;top:34%;
  height:2px;background:var(--ember);
  transform:rotate(calc(var(--pitch) * -1));
  transform-origin:center;
  box-shadow:0 0 24px rgba(255,77,0,.55);
  z-index:2;
}
.pitch-line::after{
  content:'PITCH 6/12 · 26.57°';
  position:absolute;right:14%;top:-26px;
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--ember);
}
@media(max-width:760px){.pitch-line::after{content:none}}
.roof-silhouette{
  position:absolute;inset:auto 0 0 0;height:46%;
  background:linear-gradient(to top,var(--tar) 0%,rgba(5,6,7,0) 100%);
  z-index:1;pointer-events:none;
}
.hero-grid{
  position:relative;z-index:3;
  padding-bottom:clamp(48px,7vh,90px);
}
.hero-eyebrow{
  display:flex;align-items:center;gap:16px;margin-bottom:28px;
  opacity:0;animation:rise .8s .1s forwards;
}
.hero-eyebrow .rule{height:1px;width:64px;background:var(--ember)}
.hero-h1{
  font-family:var(--display);
  font-weight:900;
  text-shadow:0 2px 30px rgba(0,0,0,.55);
  text-transform:uppercase;
  font-size:clamp(48px,11.5vw,164px);
  line-height:.88;
  letter-spacing:.005em;
  color:var(--bone);
}
/* shingle-course stagger */
.hero-h1 .course{display:block;opacity:0;animation:rise .9s forwards}
.hero-h1 .course:nth-child(1){animation-delay:.2s}
.hero-h1 .course:nth-child(2){padding-left:clamp(28px,6vw,110px);animation-delay:.35s}
.hero-h1 .course:nth-child(3){padding-left:clamp(56px,12vw,220px);color:var(--ember);animation-delay:.5s;text-shadow:0 0 60px rgba(255,77,0,.25)}
@keyframes rise{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
.hero-sub{
  margin-top:34px;
  display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:28px;
  opacity:0;animation:rise .9s .7s forwards;
}
.hero-sub p{max-width:520px;color:#DDD8CC;font-size:17px;text-shadow:0 1px 14px rgba(0,0,0,.5)}
.hero-sub p strong{color:var(--bone);font-weight:600}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap}
.hero-offers{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:22px;list-style:none}
.hero-offers li{display:flex;align-items:center;gap:9px;font-size:11px}
.hero-offers li::before{content:'\2713';color:var(--ember);font-weight:700;font-size:12px}
@media(max-width:760px){.hero-offers{display:none}}
.btn{
  display:inline-flex;align-items:center;gap:12px;
  font-family:var(--display);font-weight:800;text-transform:uppercase;
  font-size:18px;letter-spacing:.05em;
  padding:16px 30px;
  transition:transform .2s, box-shadow .2s, background .2s, color .2s, border-color .2s;
  cursor:pointer;border:none;
}
.btn-ember{background:var(--ember);color:var(--tar);box-shadow:0 10px 40px rgba(255,77,0,.3)}
.btn-ember:hover{transform:translateY(-2px);box-shadow:0 16px 50px rgba(255,77,0,.45)}
.btn-ghost{background:transparent;color:var(--bone);border:1px solid var(--seam)}
.btn-ghost:hover{border-color:var(--ember);color:var(--ember)}
.btn svg{width:16px;height:16px}
@media(max-width:560px){
  .hero-sub{margin-top:26px;gap:22px}
  .hero-ctas{width:100%}
  .hero-ctas .btn{flex:1 1 100%;justify-content:center}
}

/* hero spec bar */
.spec-bar{
  position:relative;z-index:3;
  border-top:1px solid var(--seam);
  background:rgba(5,6,7,.6);
}
.spec-bar .wrap{
  display:grid;grid-template-columns:repeat(4,1fr);
}
.spec-cell{
  padding:20px 22px 22px 0;
  border-right:1px solid var(--seam);
}
.spec-cell:last-child{border-right:none}
.spec-cell:not(:first-child){padding-left:22px}
.spec-cell .num{
  font-family:var(--display);font-weight:800;font-size:clamp(26px,3vw,38px);
  color:var(--bone);line-height:1;
}
.spec-cell .num span{color:var(--ember);font-size:.6em;vertical-align:.25em}
.spec-cell .lbl{margin-top:6px}
@media(max-width:900px){.spec-bar .wrap{grid-template-columns:1fr 1fr}.spec-cell{padding-left:0!important;border-right:none;border-bottom:1px solid var(--seam)}.spec-cell:nth-child(odd){padding-right:22px;border-right:1px solid var(--seam)}.spec-cell:nth-child(n+3){border-bottom:none}.spec-cell:nth-child(even){padding-left:22px!important}}
@media(max-width:560px){.spec-cell{padding-top:16px;padding-bottom:18px}}

/* ---------- ticker ---------- */
.ticker{
  border-top:1px solid var(--seam);border-bottom:1px solid var(--seam);
  background:var(--tar);
  overflow:hidden;white-space:nowrap;
  padding:14px 0;
  position:relative;z-index:3;
}
.ticker-track{display:inline-flex;gap:0;animation:scroll 28s linear infinite}
.ticker span{
  font-family:var(--display);font-weight:700;text-transform:uppercase;
  font-size:16px;letter-spacing:.12em;color:var(--bone-dim);
  padding:0 28px;display:inline-flex;align-items:center;gap:28px;
}
.ticker span::after{content:'▲';color:var(--ember);font-size:10px}
@keyframes scroll{to{transform:translateX(-50%)}}

/* ---------- section scaffolding ---------- */
section{position:relative;z-index:3}
.sec-pad{padding:clamp(80px,11vh,140px) 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;margin-bottom:clamp(40px,6vh,72px);flex-wrap:wrap;position:relative}
.sec-num{
  position:absolute;right:-6px;top:clamp(-36px,-3vw,-14px);z-index:-1;
  font-family:var(--display);font-weight:900;line-height:1;
  font-size:clamp(84px,13vw,176px);
  color:transparent;-webkit-text-stroke:1px #272b31;
  pointer-events:none;user-select:none;
}
.sec-title{
  font-family:var(--display);font-weight:900;text-transform:uppercase;
  font-size:clamp(40px,6.5vw,84px);line-height:.92;color:var(--bone);
}
.sec-title em{font-style:normal;color:var(--ember)}
.sec-kicker{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.sec-kicker .rule{height:1px;width:48px;background:var(--ember)}
.sec-lede{max-width:420px;color:var(--bone-dim);font-size:16px}
@media(max-width:760px){
  .sec-pad{padding:72px 0}
  .sec-head{gap:16px;margin-bottom:40px}
}

/* reveal on scroll */
.rv{opacity:0;transform:translateY(34px);transition:opacity .8s cubic-bezier(.2,.6,.2,1),transform .8s cubic-bezier(.2,.6,.2,1)}
.rv.in{opacity:1;transform:none}

/* ---------- trust / why us ---------- */
.trust{border-bottom:1px solid var(--seam)}
.trust-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,72px);align-items:center}
.trust-media{position:relative;border:1px solid var(--seam);overflow:hidden;aspect-ratio:4/3;box-shadow:0 24px 60px rgba(0,0,0,.38)}
@media(min-width:861px){
  .trust-media{margin-right:calc(-1*clamp(20px,4vw,56px));aspect-ratio:auto;align-self:stretch}
}
.trust-media img,.trust-media video{width:100%;height:100%;object-fit:cover;filter:saturate(.9) contrast(1.04)}
.trust-media::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:var(--ember);z-index:2}
.trust-media-tag{position:absolute;left:14px;bottom:12px;background:rgba(5,6,7,.82);padding:7px 12px;z-index:2}
.trust-list{list-style:none;display:flex;flex-direction:column;gap:13px;margin-top:30px}
.trust-list li{display:block;position:relative;padding-left:26px;color:var(--bone-dim);font-size:15.5px}
.trust-list li::before{content:'\25B2';color:var(--ember);font-size:10px;position:absolute;left:0;top:.45em}
.trust-list li strong{color:var(--bone);font-weight:600}
@media(max-width:860px){.trust-grid{grid-template-columns:1fr}.trust-media{order:-1}}

/* ---------- services ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;background:var(--seam);border:1px solid var(--seam);box-shadow:0 24px 60px rgba(0,0,0,.32)}
.svc{
  background:linear-gradient(180deg,#1B2028 0%,var(--granite) 55%);
  padding:clamp(28px,3.5vw,48px);
  position:relative;overflow:hidden;
  transition:background .3s;
  display:flex;flex-direction:column;min-height:232px;
}
.svc{transition:background .3s,transform .25s,box-shadow .25s}
.svc:hover{background:#1b1e22;transform:translateY(-4px);box-shadow:0 18px 44px rgba(0,0,0,.45);position:relative;z-index:2}
.svc .idx{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--steel);margin-bottom:12px}
.svc h3{
  font-family:var(--display);font-weight:800;text-transform:uppercase;
  font-size:clamp(28px,3vw,42px);line-height:.95;color:var(--bone);
  transition:color .25s;margin-bottom:14px;
}
.svc:hover h3{color:var(--ember)}
.svc p{color:var(--bone-dim);font-size:15px;max-width:46ch;margin-bottom:26px}
.svc .go{
  margin-top:auto;font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--bone);display:inline-flex;align-items:center;gap:10px;
}
.svc .go::after{content:'→';color:var(--ember);transition:transform .25s}
.svc:hover .go::after{transform:translateX(6px)}
/* clipped corner — roof pitch */
.svc::after{
  content:'';position:absolute;top:0;right:0;width:64px;height:32px;
  background:var(--asphalt);
  clip-path:polygon(0 0,100% 0,100% 100%);
  transition:background .3s;
}
.svc:hover::after{background:var(--ember)}
@media(max-width:760px){.svc-grid{grid-template-columns:1fr}.svc{min-height:auto}}

/* ---------- storm / insurance feature ---------- */
.storm{
  background:
    linear-gradient(rgba(5,6,7,.82), rgba(5,6,7,.92)),
    url("storm-texture.webp") center / cover no-repeat,
    var(--tar);
  border-top:1px solid var(--seam);border-bottom:1px solid var(--seam);
  clip-path:polygon(0 0,100% 4vw,100% 100%,0 100%);
  margin-top:-1px;
  padding-top:clamp(110px,14vh,180px);
  padding-bottom:clamp(80px,11vh,140px);
}
.storm-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(40px,5vw,90px);align-items:center}
.storm h2{
  font-family:var(--display);font-weight:900;text-transform:uppercase;
  font-size:clamp(40px,5.5vw,76px);line-height:.92;
}
.storm h2 em{font-style:normal;color:var(--ember)}
.storm p.lede{margin-top:24px;color:var(--bone-dim);font-size:17px;max-width:54ch}
.claim-steps{margin-top:36px;display:flex;flex-direction:column}
.claim-step{
  display:flex;gap:20px;align-items:baseline;
  padding:18px 0;border-bottom:1px solid var(--seam);
}
.claim-step:first-child{border-top:1px solid var(--seam)}
.claim-step .n{font-family:var(--mono);font-size:12px;color:var(--ember);min-width:34px}
.claim-step .t::before{
  content:'';display:inline-block;width:15px;height:15px;margin-right:10px;
  background:var(--ember);vertical-align:-2px;
  -webkit-mask:var(--ico) center/contain no-repeat;mask:var(--ico) center/contain no-repeat;
}
.claim-step:nth-child(1) .t::before{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 7h3l2-2.5h6L17 7h3a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm8 10.5a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9zm0-2.2a2.3 2.3 0 1 1 0-4.6 2.3 2.3 0 0 1 0 4.6z'/%3E%3C/svg%3E")}
.claim-step:nth-child(2) .t::before{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 2h8l5 5v15H6zm7 1.5V8h4.5zM8.5 12h7v1.6h-7zm0 3.6h7v1.6h-7z'/%3E%3C/svg%3E")}
.claim-step:nth-child(3) .t::before{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l8 3.2v5.6c0 4.9-3.4 8.4-8 11.2-4.6-2.8-8-6.3-8-11.2V5.2zm-1.2 13.4l5.7-5.7-1.4-1.4-4.3 4.3-1.9-1.9-1.4 1.4z'/%3E%3C/svg%3E")}
.claim-step:nth-child(4) .t::before{--ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13.6 3.2c2.2-1 4.7-.5 6.4 1.2l-3.4 1.5-.7 2.6 2.6-.7 1.5-3.4c1.7 1.7 2.2 4.2 1.2 6.4-1 2.3-3.4 3.6-5.8 3.3L8 21.5a2 2 0 0 1-2.9 0l-2.5-2.6a2 2 0 0 1 0-2.9l7.4-7.4c-.3-2.4 1-4.8 3.3-5.8z'/%3E%3C/svg%3E")}
.claim-steps .claim-step:nth-child(2){transition-delay:.1s}
.claim-steps .claim-step:nth-child(3){transition-delay:.2s}
.claim-steps .claim-step:nth-child(4){transition-delay:.3s}
.svc-grid .svc:nth-child(2){transition-delay:.08s}
.svc-grid .svc:nth-child(3){transition-delay:.16s}
.svc-grid .svc:nth-child(4){transition-delay:.24s}
.claim-step .t{font-family:var(--display);font-weight:700;font-size:20px;text-transform:uppercase;letter-spacing:.03em;min-width:200px}
.claim-step .d{color:var(--bone-dim);font-size:14px}
.storm-card{
  background:linear-gradient(180deg,#1B2028 0%,var(--granite) 55%);border:1px solid var(--seam);
  box-shadow:0 22px 56px rgba(0,0,0,.42);
  padding:clamp(28px,3vw,44px);
  position:relative;
}
.storm-card::before{
  content:'';position:absolute;top:-1px;left:-1px;right:-1px;height:4px;background:var(--ember);
}
.storm-card .big{
  font-family:var(--display);font-weight:900;font-size:clamp(64px,8vw,120px);line-height:.9;color:var(--bone);
}
.storm-card .big span{color:var(--ember)}
.storm-card .cap{margin-top:10px;color:var(--bone-dim);font-size:15px;max-width:34ch}
.storm-card .divider{height:1px;background:var(--seam);margin:28px 0}
.storm-card ul{list-style:none;display:flex;flex-direction:column;gap:12px}
.storm-card li{display:block;position:relative;padding-left:24px;font-size:15px;color:var(--bone-dim)}
.storm-card li::before{content:'▲';color:var(--ember);font-size:9px;position:absolute;left:0;top:.5em}
.storm-card li strong{color:var(--bone)}
@media(max-width:900px){.storm-grid{grid-template-columns:1fr}.claim-step .t{min-width:140px;font-size:17px}}
@media(max-width:760px){.storm{padding-top:96px;padding-bottom:72px}}
@media(max-width:600px){
  .claim-step{display:grid;grid-template-columns:40px 1fr;gap:5px 16px;align-items:baseline;padding:16px 0}
  .claim-step .n,.claim-step .t{min-width:0}
  .claim-step .d{grid-column:2}
}

/* ---------- materials ---------- */
.mat-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--seam);border:1px solid var(--seam);box-shadow:0 24px 60px rgba(0,0,0,.32)}
.mat{
  background:linear-gradient(180deg,#1B2028 0%,var(--granite) 55%);padding:clamp(30px,3.5vw,52px);
  display:flex;flex-direction:column;
}
.mat .brand{
  font-family:var(--display);font-weight:900;text-transform:uppercase;
  font-size:clamp(30px,3.4vw,48px);line-height:.95;margin-bottom:14px;
}
.mat .series{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ember);margin-bottom:12px}
.mat p{color:var(--bone-dim);font-size:15px;margin-bottom:28px}
.mat .specs{
  margin-top:auto;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--seam);
  border:1px solid var(--seam);
}
.mat .specs > div{background:#131518;padding:13px 16px 14px}
.mat .specs .v{font-family:var(--display);font-weight:800;font-size:22px;line-height:1.25;color:var(--bone)}
.mat .specs .k{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--steel);margin-top:4px}
@media(max-width:760px){.mat-grid{grid-template-columns:1fr}}

/* ---------- process ---------- */
.proc{counter-reset:step}
.proc-row{
  display:grid;grid-template-columns:110px 1fr 1.2fr;gap:clamp(20px,4vw,60px);
  padding:clamp(28px,4vh,44px) 0;
  border-bottom:1px solid var(--seam);
  align-items:baseline;
}
.proc-row:first-child{border-top:1px solid var(--seam)}
.proc-row .n{
  font-family:var(--display);font-weight:900;font-size:clamp(36px,4vw,56px);
  color:transparent;-webkit-text-stroke:1.5px var(--steel);
  transition:color .3s,-webkit-text-stroke-color .3s;line-height:1;
}
.proc-row:hover .n{color:var(--ember);-webkit-text-stroke-color:var(--ember)}
.proc-row h3{
  font-family:var(--display);font-weight:800;text-transform:uppercase;
  font-size:clamp(24px,2.6vw,36px);line-height:1;
}
.proc-row p{color:var(--bone-dim);font-size:15.5px;max-width:60ch}
@media(max-width:760px){
  .proc-row{grid-template-columns:54px 1fr;gap:10px 18px;padding:26px 0}
  .proc-row .n{font-size:34px}
  .proc-row p{grid-column:2}
}

/* ---------- gallery ---------- */
.gal{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--seam);border:1px solid var(--seam)}
.gal a{position:relative;overflow:hidden;aspect-ratio:4/3;background:var(--granite)}
.gal img{width:100%;height:100%;object-fit:cover;filter:saturate(.85) contrast(1.05);transition:transform .6s cubic-bezier(.2,.6,.2,1),filter .4s}
.gal a:hover img{transform:scale(1.05);filter:saturate(1.05) contrast(1.05)}
.gal a::after{
  content:attr(data-cap);
  position:absolute;left:0;right:0;bottom:0;
  padding:14px 16px;
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--bone);
  background:linear-gradient(to top,rgba(5,6,7,.85),transparent);
  opacity:0;transform:translateY(8px);transition:opacity .35s,transform .35s;
}
.gal a:hover::after{opacity:1;transform:none}
@media(max-width:760px){.gal{grid-template-columns:1fr 1fr}}

/* ---------- FAQ ---------- */
.faq{max-width:880px}
.faq details{border-bottom:1px solid var(--seam)}
.faq details:first-child{border-top:1px solid var(--seam)}
.faq summary{
  display:flex;align-items:baseline;gap:20px;
  padding:22px 0;cursor:pointer;list-style:none;
  transition:color .2s;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary .qn{font-family:var(--mono);font-size:12px;color:var(--ember);min-width:34px;flex:none}
.faq summary h3{
  font-family:var(--display);font-weight:700;text-transform:uppercase;
  font-size:clamp(18px,2.2vw,24px);letter-spacing:.03em;line-height:1.1;flex:1;
}
.faq summary .ind{font-family:var(--mono);font-size:18px;color:var(--steel);flex:none;transition:transform .25s}
.faq details[open] .ind{transform:rotate(45deg);color:var(--ember)}
.faq summary:hover h3{color:var(--ember)}
.faq .a{padding:0 0 24px 54px;color:var(--bone-dim);font-size:15.5px;max-width:62ch}
@media(max-width:560px){.faq .a{padding-left:0}}

/* ---------- sticky mobile call bar ---------- */
.callbar{
  position:fixed;left:0;right:0;bottom:0;z-index:99;
  box-shadow:0 -10px 34px rgba(0,0,0,.45);
  display:none;grid-template-columns:1fr 1fr;gap:1px;
  background:var(--seam);border-top:1px solid var(--seam);
  padding-bottom:env(safe-area-inset-bottom);
  transition:transform .3s ease;
}
.callbar a{
  display:flex;align-items:center;justify-content:center;gap:9px;
  padding:15px 10px;
  font-family:var(--display);font-weight:800;text-transform:uppercase;
  font-size:16px;letter-spacing:.05em;
}
.callbar .cb-call{background:var(--granite);color:var(--bone)}
.callbar .cb-quote{background:var(--ember);color:var(--tar)}
.callbar.hide{transform:translateY(110%)}
@media(max-width:760px){
  .callbar{display:grid}
  footer{padding-bottom:64px}
}

/* ---------- map ---------- */
.map-embed{margin-top:34px;border:1px solid var(--seam);position:relative;aspect-ratio:2/1;background:var(--granite)}
.map-embed::before{content:'';position:absolute;top:-1px;left:-1px;right:-1px;height:4px;background:var(--ember);z-index:2}
.map-embed svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.map-embed .hubring{transform-box:fill-box;transform-origin:center;animation:hubpulse 3s ease-out infinite}
.map-embed .hubring.r2{animation-delay:1.5s}
@keyframes hubpulse{0%{transform:scale(.3);opacity:.8}100%{transform:scale(2.6);opacity:0}}

/* ---------- gallery lightbox ---------- */
.lb{position:fixed;inset:0;z-index:200;background:rgba(5,6,7,.95);display:none;align-items:center;justify-content:center}
.lb.open{display:flex}
.lb img{max-width:88vw;max-height:82vh;object-fit:contain;border:1px solid var(--seam)}
.lb button{
  position:absolute;background:var(--granite);border:1px solid var(--seam);color:var(--bone);
  font-family:var(--mono);font-size:18px;line-height:1;padding:12px 16px;cursor:pointer;
  transition:border-color .2s,color .2s;
}
.lb button:hover{border-color:var(--ember);color:var(--ember)}
.lb-x{top:18px;right:18px}
.lb-prev{left:14px;top:50%;transform:translateY(-50%)}
.lb-next{right:14px;top:50%;transform:translateY(-50%)}
.lb-cap{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);color:var(--bone)}
@media(max-width:560px){.lb-prev{left:6px}.lb-next{right:6px}.lb button{padding:10px 12px}}

/* ---------- CTA / contact ---------- */
.cta-sec{
  background:var(--tar);
  border-top:1px solid var(--seam);
  clip-path:polygon(0 4vw,100% 0,100% 100%,0 100%);
  margin-top:-1px;
  padding-top:clamp(110px,14vh,180px);
  padding-bottom:clamp(80px,11vh,140px);
}
.cta-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(48px,6vw,100px)}
.cta-left h2{
  font-family:var(--display);font-weight:900;text-transform:uppercase;
  font-size:clamp(48px,7vw,104px);line-height:.88;
}
.cta-left h2 em{font-style:normal;color:var(--ember)}
.cta-left p{margin-top:24px;color:var(--bone-dim);max-width:46ch;font-size:17px}
.cta-contact{margin-top:40px;display:flex;flex-direction:column;gap:4px}
.cta-contact a.phone{
  font-family:var(--display);font-weight:900;font-size:clamp(36px,5vw,64px);
  color:var(--bone);line-height:1;transition:color .2s;
}
.cta-contact a.phone:hover{color:var(--ember)}
.form{
  background:linear-gradient(180deg,#1B2028 0%,var(--granite) 55%);border:1px solid var(--seam);
  box-shadow:0 22px 56px rgba(0,0,0,.42);
  padding:clamp(26px,3vw,40px);
  display:flex;flex-direction:column;gap:16px;
  position:relative;
}
.form::before{content:'';position:absolute;top:-1px;left:-1px;right:-1px;height:4px;background:var(--ember)}
.form .f-head{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:24px;letter-spacing:.02em}
.f-top{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.f-progress{white-space:nowrap;flex:none}
.f-progress b{color:var(--ember);font-weight:600}
.f-bar{height:2px;background:var(--seam);margin-top:10px}
.f-bar i{display:block;height:100%;width:33.34%;background:var(--ember);transition:width .35s ease}
.form .step{border:none;padding:0;margin:0;display:none;flex-direction:column;gap:16px}
.form .step.active{display:flex}
.f-q{
  font-family:var(--display);font-weight:800;text-transform:uppercase;
  font-size:clamp(19px,2vw,24px);letter-spacing:.02em;line-height:1.05;
  padding:0;margin-bottom:2px;
}
.opt-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.opt{
  background:#101215;border:1px solid var(--seam);color:var(--bone);
  font-family:var(--display);font-weight:700;text-transform:uppercase;
  font-size:18px;letter-spacing:.04em;line-height:1.05;
  padding:16px 12px;cursor:pointer;text-align:left;
  display:flex;align-items:center;gap:12px;
  transition:border-color .2s,color .2s,background .2s;
}
.opt .oi{width:24px;height:24px;flex:none;fill:none;stroke:var(--steel);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:stroke .2s}
.opt:hover,.opt:focus-visible{border-color:var(--ember);color:var(--ember);background:#15171a;outline:none}
.opt:hover .oi,.opt:focus-visible .oi{stroke:var(--ember)}
.f-note{margin-top:2px}
.f-nav{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.f-back{background:none;border:none;cursor:pointer;padding:0;color:var(--steel);font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;transition:color .2s}
.f-back:hover{color:var(--ember)}
.f-chip{color:var(--ember)}
.f-opt-tag{color:var(--steel);text-transform:none;letter-spacing:.06em;margin-left:6px}
.field label{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--steel);margin-bottom:6px}
.field input,.field select,.field textarea{
  width:100%;background:#101215;border:1px solid var(--seam);
  color:var(--bone);font-family:var(--body);font-size:15px;
  padding:13px 14px;outline:none;transition:border-color .2s;
  appearance:none;border-radius:0;
}
.field textarea{min-height:96px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ember)}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:560px){.f-row{grid-template-columns:1fr}}
@media(max-width:900px){.cta-grid{grid-template-columns:1fr}}
@media(max-width:760px){.cta-sec{padding-top:96px;padding-bottom:72px}}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--seam);background:var(--tar)}
.foot-grid{
  display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 1fr;gap:clamp(28px,4vw,64px);
  padding:clamp(48px,7vh,80px) 0;
}
.foot-grid h3{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--steel);margin-bottom:18px;font-weight:500}
.foot-grid a,.foot-grid p{display:block;color:var(--bone-dim);font-size:14.5px;margin-bottom:10px;transition:color .2s}
.foot-grid a:hover{color:var(--ember)}
.foot-brand .mark{font-family:var(--display);font-weight:900;font-size:30px;text-transform:uppercase;line-height:1;margin-bottom:14px}
.foot-brand .mark span{color:var(--ember)}
.foot-base{
  border-top:1px solid var(--seam);
  padding:22px 0;
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
}
@media(max-width:860px){
  .foot-grid{grid-template-columns:1fr 1fr;row-gap:40px}
  .foot-brand{grid-column:1/-1}
  .foot-brand p{max-width:52ch}
}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .rv{opacity:1;transform:none}
  html{scroll-behavior:auto}
}

/* ---------- shared sub-page header (service / location pages) ---------- */
.page-hero{
  padding-top:calc(72px + clamp(56px,9vh,110px));
  padding-bottom:clamp(48px,7vh,80px);
  border-bottom:1px solid var(--seam);
  background:var(--asphalt);
}
.breadcrumb{display:flex;align-items:center;gap:8px;margin-bottom:22px;flex-wrap:wrap}
.breadcrumb a{color:var(--bone-dim);transition:color .2s}
.breadcrumb a:hover{color:var(--ember)}
.breadcrumb .sep{color:var(--steel)}
.breadcrumb .cur{color:var(--bone)}
