/* =========================
   GCR — Base tokens & reset
   ========================= */
:root{
  --black:#070707;
  --charcoal:#101010;
  --panel:#151515;
  --panel-2:#1b1b1b;
  --gold:#f6bd2f;
  --gold2:#c99316;
  --cream:#f5f0e5;
  --paper:#ece7dc;
  --soft:#dcd4c4;
  --muted:#a8a39a;
  --line:rgba(255,255,255,.1);
  --radius:24px;
  --shadow:0 26px 80px rgba(0,0,0,.34);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  line-height:1.65;
  color:#f4f1ea;
  font-family:"Manrope",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  background:
    radial-gradient(circle at 12% 0%,rgba(246,189,47,.08),transparent 28rem),
    linear-gradient(180deg,#080808,#0d0d0d);
}
img{max-width:100%;display:block}
a{text-decoration:none;color:inherit}
.container{width:min(1240px,calc(100% - 56px));margin:auto}

/* =========================
   Header / Nav
   ========================= */
.site-header{
  position:sticky;top:0;z-index:100;
  background:linear-gradient(180deg,rgba(18,18,18,.96),rgba(10,10,10,.93));
  border-bottom:1px solid rgba(246,189,47,.18);
  box-shadow:0 14px 38px rgba(0,0,0,.34);
  backdrop-filter:blur(18px);
  transition:background-color .4s ease,box-shadow .4s ease,border-color .4s ease;
}
.site-header.scrolled{
  background:rgba(6,6,6,.97);
  box-shadow:0 18px 44px rgba(0,0,0,.4);
  border-bottom-color:rgba(246,189,47,.28);
}
.nav{height:80px;display:flex;align-items:center;justify-content:space-between}
.brand{display:flex;align-items:center;gap:12px;min-width:0}
.brand img{
  width:71px;height:53px;object-fit:contain;flex:0 0 auto;
  filter:drop-shadow(0 4px 10px rgba(246,189,47,.22));
}
.brand-lockup{display:flex;flex-direction:column;justify-content:center;line-height:1}
.brand-lockup strong{
  font-family:"Playfair Display",serif;
  font-size:1.7rem;letter-spacing:.03em;color:var(--gold);font-weight:700;
}
.brand-lockup small{
  margin-top:5px;font-size:.62rem;letter-spacing:.17em;color:#d8d3c9;white-space:nowrap;
}
.nav-links{margin-left:auto;display:flex;align-items:center;gap:32px;font-size:.9rem;font-weight:800;color:rgba(255,255,255,.76)}
.nav-links a{position:relative}
.nav-links a:not(.nav-cta):after{
  content:"";position:absolute;left:12px;right:12px;bottom:-8px;height:1px;
  transform:scaleX(0);background:var(--gold);transition:.25s
}
.nav-links a:not(.nav-cta):hover:after{transform:scaleX(1)}
.nav-links a:hover{color:var(--gold)}
.nav-links a.active{color:var(--gold)}
.nav-links a.active:not(.nav-cta):after{transform:scaleX(1)}
.nav-cta{
  color:#0a0a0a!important;
  background:linear-gradient(135deg,#ffd45d,var(--gold));
  box-shadow:0 8px 24px rgba(246,189,47,.22);
  padding:12px 18px;border-radius:999px;
  text-transform:uppercase;letter-spacing:.03em;font-size:.78rem;
}
.menu-toggle{display:none;border:0;background:none}
.menu-toggle span{display:block;width:27px;height:2px;background:#fff;margin:5px}

/* =========================
   Buttons
   ========================= */
.btn{
  display:inline-flex;justify-content:center;align-items:center;
  border-radius:999px;padding:16px 24px;font-weight:800;font-size:.94rem;
  border:0;cursor:pointer;text-transform:uppercase;letter-spacing:.03em;
  transition:transform .25s,box-shadow .25s,filter .25s;
}
.btn-gold{
  background:linear-gradient(135deg,#ffd45d,var(--gold));
  color:#111;
  box-shadow:0 10px 30px rgba(246,189,47,.2);
}
.btn-ghost{border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.1);color:#fff}
.btn:hover,.nav-cta:hover,.hero-card-cta:hover{
  transform:translateY(-3px);filter:brightness(1.05);
  box-shadow:0 16px 38px rgba(246,189,47,.22);
}

/* =========================
   Hero
   ========================= */
.hero{position:relative;min-height:860px;display:grid;align-items:center;color:#fff;overflow:hidden}
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-shade{
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 72% 45%,transparent 0,rgba(0,0,0,.22) 34%,rgba(0,0,0,.73) 74%),
    linear-gradient(90deg,rgba(0,0,0,.94),rgba(0,0,0,.62) 55%,rgba(0,0,0,.4));
}
.hero-content{
  position:relative;display:grid;
  grid-template-columns:1fr;max-width:900px;
  gap:0;align-items:center;padding:124px 0 100px;
}
.eyebrow{margin:0 0 14px;text-transform:uppercase;letter-spacing:.2em;color:var(--gold);font-size:.72rem;font-weight:800}
.eyebrow.dark{color:var(--gold)}
h1,h2{margin:0;letter-spacing:-.048em;line-height:1.02}
.hero h1{
  display:flex;flex-direction:column;
  font-size:clamp(4.2rem,7.3vw,7.7rem);line-height:.9;letter-spacing:-.065em;max-width:980px;
  text-wrap:balance;
}
.hero h1 span{
  background:linear-gradient(180deg,#fff 10%,#d9d5cc 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero h1 span:last-child{
  background:linear-gradient(135deg,#ffd45d,var(--gold));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero-copy{max-width:820px;margin:34px 0 30px;color:rgba(255,255,255,.72);font-size:1.12rem;line-height:1.7}
.actions{display:flex;gap:16px;flex-wrap:wrap}
.trust{display:flex;gap:26px;flex-wrap:wrap;margin-top:34px;color:rgba(255,255,255,.75);font-size:.82rem;text-transform:uppercase;letter-spacing:.06em}
.trust span:before{content:"✓";color:var(--gold);margin-right:7px}
.hero-panel{
  background:linear-gradient(150deg,rgba(28,28,28,.88),rgba(10,10,10,.78));
  border:1px solid rgba(255,255,255,.13);color:#fff;
  padding:22px;border-radius:28px;
  box-shadow:0 28px 90px rgba(0,0,0,.44);
  backdrop-filter:blur(16px);
  max-width:420px;
}
.hero-mini-grid{display:grid;gap:12px}
.hero-mini-grid article{
  padding:20px;border:1px solid rgba(255,255,255,.1);border-radius:18px;background:rgba(255,255,255,.035);
}
.hero-mini-grid strong,.hero-mini-grid span{display:block}
.hero-mini-grid strong{font-size:1.12rem;color:#fff}
.hero-mini-grid span{font-size:.82rem;color:rgba(255,255,255,.58);margin-top:4px}
.hero-card-cta{
  display:inline-flex;margin-top:16px;width:100%;justify-content:center;
  background:linear-gradient(135deg,#ffd45d,var(--gold));
  padding:12px 16px;border-radius:999px;color:#111!important;font-weight:800;
  transition:transform .25s,box-shadow .25s,filter .25s;
}

/* =========================
   Section shell / headings
   ========================= */
.section{padding:130px 0;position:relative}
.section:nth-of-type(even):not(.process-section):not(.video-showcase):not(.system-section):not(.final-cta):not(.page-hero){
  background:linear-gradient(180deg,rgba(255,255,255,.018),rgba(255,255,255,.006));
}
.section-head{max-width:900px;margin-bottom:56px}
.section-head h2,.contact-grid h2{
  font-size:clamp(3rem,5.2vw,5.5rem);line-height:.98;letter-spacing:-.055em;color:#f5f2eb;
}
.section-head>p:last-child,.contact-grid>div>p{color:#9d988f;max-width:720px;font-size:1.03rem;line-height:1.75}
.section-head.light>p:last-child{color:rgba(255,255,255,.62)}
.section-cta{margin-top:40px}

/* =========================
   Page hero (Restoration / Home Performance / Work)
   ========================= */
.page-hero{
  position:relative;min-height:480px;display:grid;align-items:center;color:#fff;
  overflow:hidden;
}
.page-hero-bg{
  position:absolute;inset:0;z-index:0;
  background-size:cover;background-position:center;
  will-change:transform;
}
.page-hero:before{
  content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(90deg,rgba(5,5,5,.93),rgba(5,5,5,.6) 55%,rgba(5,5,5,.32));
}
.page-hero .container{position:relative;z-index:2;padding:160px 0 80px}
.page-hero h1{
  font-size:clamp(2.6rem,5vw,4.4rem);max-width:820px;letter-spacing:-.04em;line-height:1.04;
  margin-top:14px;color:#f5f2eb;
}
.page-hero p{max-width:640px;color:rgba(255,255,255,.75);font-size:1.05rem;margin:22px 0 0;line-height:1.7}
.page-hero .actions{margin-top:30px}
.page-hero.restoration .page-hero-bg{background-image:url(/assets/images/roof-after.webp)}
.page-hero.performance .page-hero-bg{background-image:url(/assets/images/solar-after.webp)}
.page-hero.work .page-hero-bg{background-image:url(/assets/images/crew-wide.webp)}
.page-hero.about .page-hero-bg{background-image:url(/assets/images/house-site.webp)}

/* =========================
   Two Core Paths
   ========================= */
.paths-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.path-card{
  position:relative;display:flex;flex-direction:column;justify-content:flex-end;
  min-height:380px;padding:40px;border-radius:var(--radius);overflow:hidden;
  color:#fff;
  border:1px solid rgba(255,255,255,.1);transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease;
}
.path-card-bg{
  position:absolute;inset:0;z-index:0;
  background-size:cover;background-position:center;
  transition:transform .7s cubic-bezier(.2,.7,.2,1);
  will-change:transform;
}
.path-card:before{
  content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(7,7,7,.15),rgba(7,7,7,.92));
  transition:background .5s ease;
}
.path-card:hover,.path-card:focus-visible{transform:translateY(-5px);box-shadow:var(--shadow);border-color:rgba(246,189,47,.3)}
.path-card .path-eyebrow,.path-card h3,.path-card .path-list,.path-card .text-link{position:relative;z-index:2}
.path-card .path-eyebrow{
  text-transform:uppercase;letter-spacing:.15em;font-size:.75rem;color:var(--gold);
  font-weight:800;margin-bottom:10px;display:block;
  transition:letter-spacing .4s ease;
}
.path-card h3{font-size:2rem;margin:0 0 20px;color:#fff;letter-spacing:-.02em;line-height:1.15}
.path-card.restore .path-card-bg{background-image:url(/assets/images/roof-after.webp)}
.path-card.improve .path-card-bg{background-image:url(/assets/images/solar-after.webp)}
.path-list{
  list-style:none;padding:0;margin:0 0 22px;
  display:flex;flex-wrap:wrap;gap:10px 18px;color:rgba(255,255,255,.88);font-weight:700;font-size:.95rem;
}
.path-list li{display:flex;align-items:center;gap:8px}
.path-list li:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--gold);flex:0 0 auto;transition:background .3s ease,transform .3s ease}
.path-hint{position:relative;z-index:2;margin:0 0 14px;color:rgba(255,255,255,.72);font-size:.92rem}
.text-link{font-weight:800;color:var(--gold);display:inline-flex;align-items:center;gap:6px;transition:transform .3s ease,color .3s ease}
@media(hover:hover) and (pointer:fine){
  .path-card:hover .path-card-bg,.path-card:focus-visible .path-card-bg{transform:scale(1.07)}
  .path-card:hover:before,.path-card:focus-visible:before{background:linear-gradient(180deg,rgba(7,7,7,.05),rgba(7,7,7,.88))}
  .path-card:hover .path-eyebrow,.path-card:focus-visible .path-eyebrow{letter-spacing:.2em}
  .path-card:hover .text-link,.path-card:focus-visible .text-link{transform:translateX(5px);color:#ffd45d}
  .path-card:hover .path-list li:before,.path-card:focus-visible .path-list li:before{background:#ffd45d;transform:scale(1.15)}
}

/* =========================
   "Not Sure?" slim CTA banner
   ========================= */
.not-sure-section{padding:0 0 60px}
.notsure-banner{
  display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap;
  padding:44px 50px;border-radius:var(--radius);
  border:1px solid rgba(246,189,47,.3);
  background:linear-gradient(145deg,rgba(246,189,47,.1),rgba(10,10,10,.7));
}
.notsure-banner h2{font-size:clamp(1.7rem,2.6vw,2.3rem);color:#f5f2eb}
.notsure-banner p{margin:8px 0 0;color:#9e9990}
.notsure-banner .btn{flex:0 0 auto}

/* =========================
   About page — groups (text-first, no image cards) & plain photo strip
   ========================= */
.about-groups{display:grid;grid-template-columns:repeat(2,1fr);gap:44px}
.about-groups h3{font-size:1.4rem;color:#fff;margin:0 0 10px}
.about-groups p{color:#9e9990;line-height:1.75;margin:0 0 14px}
.plain-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.plain-grid figure{margin:0;border-radius:var(--radius);overflow:hidden;border:1px solid rgba(255,255,255,.1)}
.plain-grid img{height:240px;width:100%;object-fit:cover;display:block}
.plain-grid figcaption{padding:14px 2px 0;font-size:.82rem;color:#9e9990}

/* =========================
   Featured Work strip (compact — full gallery lives on work.html)
   ========================= */
.featured-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.featured-grid .gallery-item{height:280px}

/* =========================
   Callout (pull-quote statement block)
   ========================= */
.callout{
  text-align:center;max-width:820px;margin:0 auto;padding:50px 40px;border-radius:var(--radius);
  border:1px solid rgba(246,189,47,.25);
  background:linear-gradient(145deg,rgba(246,189,47,.08),rgba(10,10,10,.6));
}
.callout h2{font-size:clamp(2rem,3.5vw,3.2rem);color:#f5f2eb}
.callout p{color:#9e9990;margin-top:16px;line-height:1.75}

/* =========================
   FAQ (native details/summary — no JS required)
   ========================= */
.faq{max-width:800px;margin:0 auto;display:grid;gap:14px}
.faq details{
  border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:22px 26px;
  background:linear-gradient(145deg,#161616,#0d0d0d);
}
.faq summary{
  cursor:pointer;font-weight:800;color:#fff;list-style:none;
  display:flex;justify-content:space-between;align-items:center;gap:16px;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary:after{content:"+";color:var(--gold);font-size:1.3rem;transition:.2s;flex:0 0 auto}
.faq details[open] summary:after{content:"–"}
.faq p{margin:14px 0 0;color:#9e9990;line-height:1.75}

/* =========================
   Qualify (lead-qualification) cards
   ========================= */
.qualify-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.qualify-card{
  position:relative;display:flex;flex-direction:column;justify-content:flex-end;
  min-height:280px;padding:32px;border-radius:var(--radius);overflow:hidden;
  border:1px solid rgba(255,255,255,.1);background-size:cover;background-position:center;
  transition:transform .3s,box-shadow .3s;
}
.qualify-card:before{
  content:"";position:absolute;inset:0;z-index:0;
  background:linear-gradient(180deg,rgba(7,7,7,.3),rgba(7,7,7,.94));
}
.qualify-card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.qualify-card .q-label,.qualify-card .q-sub,.qualify-card .q-arrow{position:relative;z-index:1}
.qualify-card .q-label{font-size:1.35rem;font-weight:800;color:#fff;letter-spacing:-.01em}
.qualify-card .q-sub{display:block;margin-top:10px;color:rgba(255,255,255,.72);font-size:.92rem;line-height:1.6}
.qualify-card .q-arrow{display:inline-flex;margin-top:18px;color:var(--gold);font-weight:800;font-size:.85rem}
.qualify-card.storm{background-image:url(/assets/images/crew-wide.webp)}
.qualify-card.energy{background-image:url(/assets/images/solar-after.webp)}
.qualify-card.roofconcern{background-image:url(/assets/images/roof-after.webp)}
.qualify-card.improve{background-image:url(/assets/images/house-site.webp)}
.qualify-card.notsure{
  grid-column:span 2;background:linear-gradient(145deg,rgba(246,189,47,.14),rgba(10,10,10,.92));
  border-color:rgba(246,189,47,.4);
}
.qualify-card.notsure:before{display:none}

/* =========================
   Service card grid (Protect & Restore / Improve & Save)
   ========================= */
.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.card{
  background:linear-gradient(145deg,rgba(31,31,31,.94),rgba(16,16,16,.98));
  border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);
  padding:34px;min-height:250px;transition:.25s;
  box-shadow:0 12px 35px rgba(0,0,0,.12);
}
.card:hover{transform:translateY(-5px);border-color:rgba(246,189,47,.35);box-shadow:0 22px 65px rgba(0,0,0,.34)}
.card .num{font-weight:800;color:var(--gold2)}
.card h3{margin:18px 0 8px;font-size:1.25rem;color:#fff}
.card p{margin:0;color:#9e9990;line-height:1.75}
.card.has-image{padding:0;overflow:hidden;min-height:0}
.card.has-image img{width:100%;height:200px;object-fit:cover}
.card.has-image .card-body{padding:28px}
.card.has-image .card-body h3{margin-top:14px}

/* =========================
   Home is a System (placeholder for future scroll animation)
   ========================= */
.system-section{
  background:radial-gradient(circle at 80% 20%,rgba(246,189,47,.1),transparent 30rem),#090909;
  text-align:center;
}
.system-head{margin:0 auto 56px;text-align:center}
.system-diagram{
  display:grid;grid-template-columns:repeat(5,1fr);gap:16px;
  max-width:1040px;margin:0 auto;
}
.system-node{
  border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:28px 16px;
  background:linear-gradient(145deg,#161616,#0d0d0d);
}
.system-node strong{display:block;color:#fff;font-size:1rem}
.system-node span{display:block;margin-top:6px;font-size:.78rem;color:#9e9990}

/* =========================
   Process (How the Home Assessment Works)
   ========================= */
.process-section{
  background:radial-gradient(circle at 90% 10%,rgba(246,189,47,.08),transparent 28rem),#090909;
  color:#fff;
}
.steps-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.step-card{
  padding:30px;border-radius:22px;text-align:left;
  background:linear-gradient(145deg,#171717,#0f0f0f);border:1px solid rgba(255,255,255,.09);
}
.step-card span{color:var(--gold);font-weight:800;font-size:1.4rem}
.step-card h3{margin:14px 0 8px;font-size:1.1rem;color:#fff}
.step-card p{margin:0;color:#9e9990;font-size:.92rem;line-height:1.7}

/* =========================
   Gallery / lightbox
   ========================= */
.gallery{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:320px;gap:18px}
.gallery-item{
  position:relative;padding:0;border:0;border-radius:22px;overflow:hidden;cursor:pointer;
  background:#ddd;border:1px solid rgba(255,255,255,.08);box-shadow:0 16px 40px rgba(0,0,0,.24);
}
.gallery-item img{width:100%;height:100%;object-fit:cover;transition:.35s}
.gallery-item:hover img{transform:scale(1.04)}
.gallery-item:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 45%,rgba(0,0,0,.72))}
.gallery-item:before{
  content:"↗";position:absolute;z-index:4;top:16px;right:16px;
  width:38px;height:38px;border-radius:50%;display:grid;place-items:center;
  color:#111;background:rgba(246,189,47,.9);
  opacity:0;transform:translateY(-8px);transition:.25s;
}
.gallery-item:hover:before{opacity:1;transform:none}
.gallery-item span{position:absolute;z-index:2;bottom:18px;left:18px;color:#fff;font-weight:800}
.gallery-item.wide{grid-column:span 2}
.gallery-item.tall{grid-row:span 2}

.lightbox{
  position:fixed;z-index:1000;inset:0;background:rgba(0,0,0,.92);
  display:none;align-items:center;justify-content:center;padding:30px;
}
.lightbox.open{display:flex}
.lightbox img{max-height:90vh;max-width:92vw;border-radius:14px}
.lightbox-close{position:absolute;top:20px;right:28px;color:#fff;background:none;border:0;font-size:3rem;cursor:pointer}

/* =========================
   Video showcase
   ========================= */
.video-showcase{background:radial-gradient(circle at 10% 30%,rgba(246,189,47,.08),transparent 25rem),#080808}
.video-grid{display:grid;grid-template-columns:1.4fr .8fr;gap:22px}
.video-card{
  background:linear-gradient(145deg,#191919,#0d0d0d);
  border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);overflow:hidden;
  box-shadow:0 18px 55px rgba(0,0,0,.34);
}
.video-card video{width:100%;aspect-ratio:16/9;object-fit:cover;background:#000;display:block}
.video-card>div{padding:28px}
.video-card span{color:var(--gold);font-weight:800}
.video-card h3{margin:4px 0 8px}
.video-card p{margin:0;color:rgba(255,255,255,.62)}
.featured-video{grid-row:span 2}
.featured-video video{height:100%;min-height:530px}

/* =========================
   Why GCR (trust)
   ========================= */
.why-section{background:radial-gradient(circle at 80% 10%,rgba(246,189,47,.08),transparent 24rem),#0b0b0b}
.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.why-grid article{
  padding:34px;border-radius:24px;
  background:linear-gradient(145deg,#171717,#0f0f0f);border:1px solid rgba(255,255,255,.09);
}
.why-grid span{color:var(--gold);font-weight:800}
.why-grid h3{font-size:1.35rem;margin:16px 0 8px;color:#fff}
.why-grid p{line-height:1.75;color:#9e9990;margin:0}

/* =========================
   Contact / Home Assessment form
   ========================= */
.contact-section{background:#0a0a0a}
.contact-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:90px}
.contact-details{display:grid;margin-top:30px}
.contact-details a,.contact-details div{
  display:flex;flex-direction:column;padding:16px 0;border-bottom:1px solid rgba(255,255,255,.09);
}
.contact-details span{color:#aaa59b}
.lead-form{
  background:linear-gradient(145deg,rgba(28,28,28,.96),rgba(13,13,13,.98));
  border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);
  padding:30px;box-shadow:0 28px 80px rgba(0,0,0,.34);
}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.lead-form label{display:grid;gap:7px;margin-bottom:15px;font-size:.85rem;font-weight:800}
.lead-form input,.lead-form select,.lead-form textarea{
  width:100%;padding:13px;border-radius:12px;
  background:#111;color:#fff;border:1px solid rgba(255,255,255,.13);
  font-family:inherit;
}
.lead-form input:focus,.lead-form select:focus,.lead-form textarea:focus{
  border-color:var(--gold);box-shadow:0 0 0 3px rgba(246,189,47,.12);outline:0;
}
.full{width:100%}
.form-note{font-size:.75rem!important;text-align:center;text-transform:none;letter-spacing:normal}
.hidden{display:none}

/* =========================
   Final CTA
   ========================= */
.final-cta{
  background:linear-gradient(135deg,#0b0b0b,#171717);text-align:center;padding:130px 0;
}
.final-cta h2{display:flex;flex-direction:column;font-size:clamp(2.6rem,5vw,4.6rem);line-height:1.05;letter-spacing:-.03em;color:#fff}
.final-cta h2 span:last-child{color:var(--gold)}
.final-cta p{color:#9e9990;max-width:560px;margin:22px auto 34px}
.final-cta .btn{margin:0 auto}

/* =========================
   Footer
   ========================= */
footer{background:#050505;color:#fff;padding:56px 0 20px;border-top:1px solid rgba(255,255,255,.08)}
.footer{display:grid;grid-template-columns:2fr 1fr 1fr;gap:70px}
.footer>div{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.footer p,.footer a,.copyright{color:#938e85;font-size:.86rem}
.footer-lockup{display:flex;align-items:center;gap:11px;margin-bottom:4px}
.footer-lockup img{width:52px;height:38px;object-fit:contain;flex:0 0 auto}
.footer-lockup span{display:flex;flex-direction:column;justify-content:center;line-height:1}
.footer-lockup strong{
  font-family:"Playfair Display",serif;
  font-size:1.22rem;letter-spacing:.03em;color:var(--gold);font-weight:700;
}
.footer-lockup small{
  margin-top:4px;font-size:.52rem;letter-spacing:.15em;color:#d8d3c9;white-space:nowrap;
}
.copyright{border-top:1px solid rgba(255,255,255,.12);padding-top:18px;margin-top:40px}

/* =========================
   Mobile call bar
   ========================= */
.mobile-call{display:none}

/* =========================
   Scroll progress + reveal/stagger motion
   (hooks reserved for future GSAP/ScrollTrigger upgrade)
   ========================= */
.scroll-progress{
  position:fixed;z-index:2000;top:0;left:0;height:3px;width:0;
  background:linear-gradient(90deg,var(--gold2),var(--gold));
  box-shadow:0 0 16px rgba(246,189,47,.75);
}
.reveal{opacity:0;transform:translateY(30px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}
.reveal.visible{opacity:1;transform:none}
.stagger>*{opacity:0;transform:translateY(25px);transition:opacity .65s ease,transform .65s cubic-bezier(.2,.7,.2,1)}
.stagger.visible>*{opacity:1;transform:none}
.stagger.visible>*:nth-child(2){transition-delay:.06s}
.stagger.visible>*:nth-child(3){transition-delay:.12s}
.stagger.visible>*:nth-child(4){transition-delay:.18s}
.stagger.visible>*:nth-child(5){transition-delay:.24s}
.stagger.visible>*:nth-child(6){transition-delay:.3s}
.stagger.visible>*:nth-child(7){transition-delay:.36s}
.stagger.visible>*:nth-child(8){transition-delay:.42s}
.stagger.visible>*:nth-child(9){transition-delay:.48s}
.stagger.visible>*:nth-child(10){transition-delay:.54s}

/* =========================
   GSAP hero entrance — hidden only once we know JS ran (the `.js`
   class is set synchronously in <head>, before first paint), so a
   no-JS visitor always sees the hero fully visible by default.
   ========================= */
.js .hero .eyebrow,.js .hero h1 span,.js .hero-copy,.js .hero .actions,
.js .page-hero .eyebrow,.js .page-hero h1,.js .page-hero p,.js .page-hero .actions{
  opacity:0;transform:translateY(18px);
}

/* =========================
   Motion fallback — GSAP/ScrollTrigger failed to load, or the
   visitor prefers reduced motion. Everything becomes immediately
   visible with no transition or transform.
   ========================= */
.no-motion .hero .eyebrow,.no-motion .hero h1 span,.no-motion .hero-copy,.no-motion .hero .actions,
.no-motion .page-hero .eyebrow,.no-motion .page-hero h1,.no-motion .page-hero p,.no-motion .page-hero .actions,
.no-motion .reveal,.no-motion .stagger>*,
.no-motion .card-grid .card{
  opacity:1!important;transform:none!important;transition:none!important;clip-path:none!important;
}
.no-motion .hero-video,.no-motion .page-hero-bg{transform:none!important}
.no-motion .site-header{transition:none!important}

/* =========================
   Page personality — restrained timing/easing differences only;
   same mechanism, same visual language everywhere.
   ========================= */
body[data-page="restoration"] .reveal{transition-duration:.9s}
body[data-page="restoration"] .stagger>*{transition-duration:.75s;transform:translateY(34px)}
body[data-page="home-performance"] .reveal{transition-duration:.55s}
body[data-page="home-performance"] .stagger>*{transition-duration:.45s;transform:translateY(18px)}
body[data-page="work"] .stagger>*{transition-duration:.4s;transform:translateY(14px)}
body[data-page="about"] .reveal{transition-duration:.85s}

@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .reveal,.stagger>*,.card-grid .card,
  .hero .eyebrow,.hero h1 span,.hero-copy,.hero .actions,
  .page-hero .eyebrow,.page-hero h1,.page-hero p,.page-hero .actions{
    opacity:1!important;transform:none!important;clip-path:none!important;
  }
  .hero-video,.page-hero-bg,.path-card-bg{transform:none!important}
}

/* =========================
   Responsive
   ========================= */
@media(max-width:1100px){
  .hero-content{grid-template-columns:1fr;gap:42px}
  .hero-panel{max-width:700px}
  .nav{height:78px}
  .brand{gap:10px}
  .brand img{width:64px;height:47px}
  .brand-lockup strong{font-size:1.5rem}
  .brand-lockup small{font-size:.56rem;letter-spacing:.14em}
}
@media(max-width:920px){
  .container{width:min(100% - 36px,1240px)}
  .menu-toggle{display:block}
  .nav-links{
    position:absolute;display:none;top:70px;left:20px;right:20px;
    background:rgba(12,12,12,.97);border:1px solid rgba(255,255,255,.1);
    flex-direction:column;align-items:stretch;padding:12px;border-radius:16px;box-shadow:var(--shadow);
    margin-left:0;
  }
  .nav-links.open{display:flex}
  .nav-links a{padding:12px}
  .nav{height:74px}
  .brand{gap:9px}
  .brand img{width:56px;height:41px}
  .brand-lockup strong{font-size:1.28rem}
  .brand-lockup small{margin-top:4px;font-size:.5rem;letter-spacing:.12em}
  .section{padding:100px 0}
  .qualify-grid{grid-template-columns:1fr}
  .qualify-card.notsure{grid-column:auto}
  .card-grid{grid-template-columns:repeat(2,1fr)}
  .system-diagram{grid-template-columns:repeat(3,1fr)}
  .steps-grid{grid-template-columns:repeat(2,1fr)}
  .why-grid{grid-template-columns:1fr}
  .paths-grid{grid-template-columns:1fr}
  .featured-grid{grid-template-columns:repeat(2,1fr)}
  .about-groups{grid-template-columns:1fr;gap:30px}
  .plain-grid{grid-template-columns:repeat(2,1fr)}
  .notsure-banner{padding:34px}
  .gallery{grid-template-columns:repeat(2,1fr)}
  .video-grid{grid-template-columns:1fr}
  .featured-video{grid-row:auto}
  .featured-video video{height:auto;min-height:0}
  .contact-grid{grid-template-columns:1fr}
  .footer{grid-template-columns:1fr 1fr}
  .page-hero .container{padding:140px 0 60px}
}
@media(max-width:640px){
  .container{width:min(100% - 26px,1240px)}
  .nav{height:68px}
  .brand{gap:8px}
  .brand img{width:46px;height:34px}
  .brand-lockup strong{font-size:1.02rem}
  .brand-lockup small{margin-top:3px;font-size:.4rem;letter-spacing:.06em}
  .hero{min-height:auto}
  .hero-content{padding:74px 0}
  .hero h1{font-size:3.2rem;line-height:.95}
  .hero-copy{font-size:1rem;margin:24px 0}
  .hero-panel{display:none}
  .actions{flex-direction:column}
  .btn{width:100%}
  .trust{gap:12px;flex-direction:column}
  .section{padding:78px 0}
  .section-head{margin-bottom:36px}
  .section-head h2,.contact-grid h2{font-size:2.55rem}
  .card-grid,.steps-grid,.form-row,.footer,.featured-grid,.plain-grid{grid-template-columns:1fr}
  .card,.why-grid article{padding:26px;min-height:auto}
  .system-diagram{grid-template-columns:repeat(2,1fr)}
  .gallery{grid-template-columns:1fr;grid-auto-rows:310px}
  .gallery-item.wide,.gallery-item.tall{grid-column:auto;grid-row:auto}
  .final-cta{padding:90px 0}
  .notsure-banner{padding:28px;text-align:center;justify-content:center}
  .notsure-banner .btn{width:100%}
  .page-hero{min-height:auto}
  .page-hero .container{padding:120px 0 50px}
  .page-hero h1{font-size:2.5rem}
  .footer-lockup img{width:46px;height:34px}
  .footer-lockup strong{font-size:1.08rem}
  .footer-lockup small{font-size:.46rem;letter-spacing:.1em}
  .mobile-call{
    display:flex;position:fixed;z-index:90;left:14px;right:14px;bottom:14px;
    background:var(--gold);color:#111;justify-content:center;padding:14px;
    border-radius:999px;font-weight:800;box-shadow:0 12px 35px rgba(0,0,0,.28);
  }
  body{padding-bottom:74px}
}

/* =========================================================
   PHASE 2B — Cinematic scroll experiences
   (Restoration: restoration.html / Energy: home-performance.html)

   Default state below (no JS / reduced-motion / mobile) renders each
   experience as plain stacked scene cards in normal document flow —
   fully accessible, fully crawlable, no pin required. When JS detects
   GSAP + ScrollTrigger, a supported viewport width, and no motion
   preference against it, house-system.js adds `.is-cinematic` to the
   root and the rules below convert the same markup into a pinned,
   scroll-scrubbed sequence. Nothing here should ever hide required
   copy — only the presentation mode changes.
   ========================================================= */
.cine-experience{padding:90px 0;position:relative;background:radial-gradient(circle at 85% 15%,rgba(246,189,47,.06),transparent 26rem),#0a0a0a}
.cine-intro{max-width:820px;margin:0 auto 48px;text-align:center}
.cine-intro .eyebrow{justify-content:center;display:flex}

.cine-pin-wrap{position:relative}
.cine-stage{position:relative;width:100%}

/* ---- Visual layer stack (decorative, aria-hidden) ---- */
.cine-visual{display:none}
.cine-layer{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0}
.cine-layer.is-base{
  opacity:1;transform-origin:50% 45%;will-change:transform;
  transform:scale(1.12); /* extra headroom so the slow push-in/pan never reveals an edge */
}

/* ---- Atmospheric FX layers (Restoration) — CSS-only, no images.
   Opacity is scrub-driven by house-system.js via the same layer
   envelope system as any other .cine-layer; `.is-active` only turns
   on the continuous keyframe animations (rain/hail) so they aren't
   running at all when off-screen or at 0 opacity. ---- */
.cine-fx{background-size:cover;background-position:center;mix-blend-mode:normal}
.cine-fx-darken{background:linear-gradient(195deg,rgba(10,14,22,.12),rgba(5,7,12,.82) 75%)}
.cine-fx-storm-vignette{background:radial-gradient(circle at 50% 44%,transparent 0%,transparent 32%,rgba(4,6,10,.6) 100%)}
.cine-fx-rain{
  background-image:repeating-linear-gradient(112deg,rgba(255,255,255,.32) 0px,rgba(255,255,255,.32) 1px,transparent 1px,transparent 10px);
  background-size:140% 140%;mix-blend-mode:screen;
}
.cine-fx-rain.is-active{animation:cine-rain-fall .4s linear infinite}
.cine-fx-hail{
  background-image:radial-gradient(circle,rgba(255,255,255,.5) 1px,transparent 1.6px);
  background-size:15px 15px;mix-blend-mode:screen;
}
.cine-fx-hail.is-active{animation:cine-hail-fall .2s linear infinite}
.cine-fx-wetsheen{background:linear-gradient(122deg,transparent 32%,rgba(180,212,232,.1) 52%,transparent 72%)}
.cine-fx-spotlight{
  --spot-x:50%;--spot-y:50%;
  background:radial-gradient(circle at var(--spot-x) var(--spot-y),transparent 0,transparent 90px,rgba(4,6,10,.62) 260px);
  transition:background-position .25s ease;
}
.cine-fx-warmth{background:radial-gradient(circle at 50% 38%,rgba(246,189,47,.16),transparent 62%)}
@keyframes cine-rain-fall{from{background-position:0 0}to{background-position:-36px 130px}}
@keyframes cine-hail-fall{from{background-position:0 0}to{background-position:-6px 15px}}

/* ---- Fallback / mobile: stacked scene cards ---- */
.cine-scenes{display:grid;gap:20px;max-width:900px;margin:0 auto}
.cine-scene{
  position:static;opacity:1;
  background:linear-gradient(145deg,rgba(31,31,31,.94),rgba(14,14,14,.98));
  border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);
  padding:36px;
}
.cine-scene .cine-eyebrow{margin-bottom:12px}
.cine-scene h2{font-size:clamp(1.6rem,3.4vw,2.3rem);color:#f5f2eb;letter-spacing:-.02em;line-height:1.12;margin:0 0 12px}
.cine-scene p{color:#9e9990;line-height:1.7;margin:0;max-width:640px}
.cine-scene-minimal{display:none} /* the wordless "storm approaches" beat has nothing to show as a static card */
.cine-scene .cine-thumb{
  width:100%;height:200px;border-radius:16px;background-size:cover;background-position:center;
  margin-bottom:20px;border:1px solid rgba(255,255,255,.08);
}
.cine-cta{margin-top:22px;display:inline-flex}

/* ---- Assessment list (Restoration scene 4) ---- */
.cine-beat-list{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:14px}
.cine-beat-list li{
  display:grid;grid-template-columns:26px 1fr;gap:12px;
  padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.08);
}
.cine-beat-list li:last-child{border-bottom:0;padding-bottom:0}
.cine-beat-list strong{color:var(--gold);font-weight:800;grid-column:1/-1;font-size:.95rem}
.cine-beat-list span{color:#9e9990;line-height:1.65;grid-column:1/-1;font-size:.92rem}
.cine-scene-closing{margin-top:20px;font-weight:800;color:#f5f2eb;font-size:1.05rem}

/* ---- Hotspots (decorative in cinematic mode only) ---- */
.cine-hotspots{display:none}
.cine-hotspot{
  position:absolute;left:var(--x,50%);top:var(--y,50%);
  transform:translate(-50%,-50%) scale(.35);
  width:13px;height:13px;border-radius:50%;border:0;padding:0;cursor:default;
  background:var(--gold);
  opacity:0;transition:opacity .45s ease,transform .45s cubic-bezier(.2,.7,.2,1);
}
.cine-hotspot:before{
  content:"";position:absolute;inset:-9px;border-radius:50%;border:1px solid rgba(246,189,47,.4);
  opacity:0;transition:opacity .45s ease;
}
.cine-hotspot.is-active{opacity:.92;transform:translate(-50%,-50%) scale(1);animation:cine-pulse 2.2s ease-out infinite}
.cine-hotspot.is-active:before{opacity:1}
@keyframes cine-pulse{
  0%{box-shadow:0 0 0 0 rgba(246,189,47,.4)}
  70%{box-shadow:0 0 0 11px rgba(246,189,47,0)}
  100%{box-shadow:0 0 0 0 rgba(246,189,47,0)}
}

/* ---- Energy schematic (inline SVG house cutaway) ---- */
.cine-schematic{display:none}
.cine-schematic-fallback{
  width:100%;max-width:420px;margin:0 auto 20px;display:block;opacity:.9;
}
.cine-svg-group{opacity:0;transition:opacity .3s ease}
.cine-svg-group.is-on{opacity:1}
.cine-svg-house-outline{fill:none;stroke:rgba(255,255,255,.35);stroke-width:2}
.cine-svg-fill-dark{fill:#161616}
.cine-svg-fill-panel{fill:#1c1c1c}
.cine-svg-heat{stroke:#f6bd2f;stroke-width:2;fill:none;opacity:.85}
.cine-svg-leak{stroke:#e2895a;stroke-width:2;fill:none;stroke-dasharray:4 4}
.cine-svg-cool{stroke:#6fb6c9;stroke-width:2;fill:none}
.cine-svg-solar{fill:#1a1a1a;stroke:var(--gold);stroke-width:1.5}
.cine-svg-billing{fill:none;stroke:var(--gold);stroke-width:2}

/* ---- Billing / electricity-plan beat (explicitly not a house visual) ---- */
.cine-billing-card{
  display:none;
}

/* =========================================================
   CINEMATIC (enhanced) MODE — added by house-system.js only
   on desktop/tablet, with GSAP+ScrollTrigger available and
   no reduced-motion preference.
   ========================================================= */
.cine-experience.is-cinematic .cine-pin-wrap{height:var(--cine-scroll-length,600vh)}
.cine-experience.is-cinematic .cine-stage{
  height:100vh;overflow:hidden;border-radius:0;
}
.cine-experience.is-cinematic .cine-visual{
  display:block;position:absolute;inset:0;z-index:0;background:#050505;
}
.cine-experience.is-cinematic .cine-hotspots{display:block;position:absolute;inset:0;z-index:2}
.cine-experience.is-cinematic .cine-schematic{
  display:flex;align-items:center;justify-content:center;position:absolute;inset:0;z-index:1;
  padding:6vh 6vw;
}
.cine-experience.is-cinematic .cine-schematic svg{width:min(60vw,640px);height:auto}
.cine-experience.is-cinematic .cine-schematic-fallback{display:none}

.cine-experience.is-cinematic .cine-scenes{
  position:absolute;inset:0;z-index:3;max-width:none;display:block;gap:0;
  pointer-events:none;
}
.cine-experience.is-cinematic .cine-scene{
  position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;
  opacity:0;background:none;border:0;border-radius:0;
  padding:0 8vw;max-width:640px;pointer-events:none;
}
.cine-experience.is-cinematic .cine-scene:before{
  content:"";position:absolute;inset:-6vw -8vw;z-index:-1;
  background:linear-gradient(90deg,rgba(5,5,5,.86),rgba(5,5,5,.35) 65%,transparent);
}
.cine-experience.is-cinematic .cine-scene.is-active{opacity:1;pointer-events:auto}
.cine-experience.is-cinematic .cine-scene .cine-thumb{display:none}
.cine-experience.is-cinematic .cine-scene h2{font-size:clamp(2rem,4vw,3.2rem)}
.cine-experience.is-cinematic .cine-beat-list{display:block}
.cine-experience.is-cinematic .cine-beat-list li{
  display:none;border-bottom:0;padding-bottom:0;
}
.cine-experience.is-cinematic .cine-beat-list li.is-active{display:block}
.cine-experience.is-cinematic .cine-scene-assessment .cine-scene-closing{opacity:0;transition:opacity .4s ease}
.cine-experience.is-cinematic .cine-scene-assessment:has(.cine-beat-list li[data-item="more"].is-active) .cine-scene-closing{opacity:1}
.cine-experience.is-cinematic .cine-billing-card{
  display:flex;flex-direction:column;gap:10px;opacity:0;transition:opacity .35s ease;
  background:linear-gradient(145deg,rgba(28,28,28,.95),rgba(10,10,10,.9));
  border:1px solid rgba(246,189,47,.25);border-radius:var(--radius);
  padding:26px 30px;max-width:360px;
}
.cine-experience.is-cinematic .cine-billing-card strong{color:var(--gold);font-size:1.05rem}
.cine-experience.is-cinematic .cine-billing-card span{color:#9e9990;font-size:.9rem;line-height:1.6}
.cine-stage.is-billing .cine-billing-card{opacity:1}
.cine-stage.is-billing .cine-schematic{opacity:.15;transition:opacity .4s ease}

.cine-scroll-cue{
  position:absolute;left:50%;bottom:28px;transform:translateX(-50%);z-index:4;
  color:rgba(255,255,255,.55);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;
  display:none;
}
.cine-experience.is-cinematic .cine-scroll-cue{display:block}

@media(prefers-reduced-motion:reduce){
  .cine-experience.is-cinematic .cine-pin-wrap{height:auto!important}
  .cine-experience.is-cinematic .cine-stage{height:auto!important;position:static!important}
  .cine-experience.is-cinematic .cine-visual,
  .cine-experience.is-cinematic .cine-hotspots,
  .cine-experience.is-cinematic .cine-schematic,
  .cine-experience.is-cinematic .cine-scroll-cue{display:none!important}
  .cine-experience.is-cinematic .cine-scenes{position:static;display:grid;gap:20px;max-width:900px;margin:0 auto}
  .cine-experience.is-cinematic .cine-scene{
    position:static;opacity:1!important;pointer-events:auto;padding:36px;max-width:none;
    background:linear-gradient(145deg,rgba(31,31,31,.94),rgba(14,14,14,.98));
    border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);
  }
  .cine-experience.is-cinematic .cine-scene:before{display:none}
  .cine-experience.is-cinematic .cine-beat-list li{display:block!important}
}

@media(max-width:920px){
  .cine-experience{padding:70px 0}
}
