/* Elite Electrical — shared site stylesheet.
   Colours, type, spacing, buttons, forms, header/nav and footer live here,
   so a global change is a one-file change. Page-specific rules are in
   css/<page>.css. Design tokens are the CSS variables in :root below. */
:root{
  --blue:#2A4A84;
  --blue-deep:#1B2E56;
  --ink-blue:#0D1830;      /* cinematic deep */
  --blue-grad:#22406F;
  --orange:#B4862F;
  --orange-bright:#CBA047;
  --orange-deep:#876320;
  --yellow:#C69A3C;
  --yellow-deep:#9A7524;
  --red:#C42A2A;
  --red-deep:#9E1F1F;
  --gray:#C4C7D0;
  --soft:#F1F4F9;
  --soft-2:#F8F9FC;
  --hair:#E6E9F1;
  --ink:#172239;
  --muted:#58607A;
  --white:#FFFFFF;
  --maxw:1200px;
  --pad:clamp(22px,5vw,92px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--white);color:var(--ink);font-family:"Inter",system-ui,sans-serif;font-size:17px;line-height:1.62;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,h4{font-family:"Archivo",sans-serif;margin:0;line-height:1;letter-spacing:-.02em;color:var(--blue-deep)}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.mono{font-family:"Space Mono",monospace;letter-spacing:.14em;text-transform:uppercase}
.tag-serif{font-family:"Fraunces",serif;font-style:italic;font-weight:500}
.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.eyebrow{font-family:"Space Mono";font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--orange-deep);display:inline-flex;align-items:center;gap:11px;margin-bottom:22px}
.eyebrow .ln{width:44px;height:2px;background:var(--orange);border-radius:2px}
.sec-title{font-weight:800;font-size:clamp(32px,5.2vw,58px);letter-spacing:-.03em}
/* NAV (transparent over hero -> solid on scroll) */
header{position:fixed;top:0;left:0;width:100%;z-index:50;transition:background .3s,box-shadow .3s,border-color .3s;border-bottom:1px solid transparent}
header::before{content:"";position:absolute;left:0;right:0;top:0;height:200px;background:linear-gradient(180deg,rgba(13,24,48,.72) 0%,rgba(13,24,48,.34) 48%,rgba(13,24,48,0) 100%);z-index:0;pointer-events:none;transition:opacity .3s}
header.scrolled::before{opacity:0}
.nav{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;height:84px;gap:clamp(14px,1.6vw,20px);max-width:none;margin:0;padding:0 var(--pad) 0 clamp(20px,2.4vw,44px)}
.brand{display:block;position:relative;height:52px;flex:0 0 auto}
.brand img{height:52px;width:auto;max-width:none;object-fit:contain;transition:opacity .3s}
.brand .l-white{position:absolute;left:0;top:0;height:52px;width:auto}
.menu{display:flex;align-items:center;gap:clamp(15px,1.9vw,26px);white-space:nowrap;flex:0 0 auto}
.menu a{font-size:13px;font-weight:600;color:rgba(255,255,255,.9);position:relative;white-space:nowrap;transition:color .2s}
.nav-dd{position:relative;display:inline-flex;align-items:center}
.nav-dd>a{display:inline-flex;align-items:center;gap:5px}
.nav-dd .caret{transition:transform .2s;flex:0 0 auto}
.nav-dd:hover .caret{transform:rotate(180deg)}
.nav-dd .dd{position:absolute;top:100%;left:-10px;margin-top:12px;min-width:224px;background:#fff;border:1px solid var(--hair);border-radius:14px;box-shadow:0 26px 54px rgba(13,24,48,.18);padding:8px;display:flex;flex-direction:column;gap:2px;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .18s,transform .18s,visibility .18s;z-index:60}
.nav-dd:hover .dd,.nav-dd:focus-within .dd{opacity:1;visibility:visible;transform:translateY(0)}
.nav-dd::after{content:"";position:absolute;top:100%;left:0;right:0;height:16px}
.menu .nav-dd .dd a{display:block;padding:10px 14px;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--ink);white-space:nowrap}
.menu .nav-dd .dd a:hover{background:var(--soft);color:var(--red)}
.menu a:hover{color:#fff}
.menu a::after{content:"";position:absolute;left:0;bottom:-7px;height:2.5px;width:0;background:var(--orange);transition:width .28s}
.menu a:hover::after{width:100%}
.nav-cta{display:inline-flex;align-items:center;gap:7px;background:var(--red);color:#fff;font-weight:700;font-size:13px;padding:11px 17px;border-radius:100px;white-space:nowrap;transition:transform .15s,box-shadow .2s,background .2s}
.nav-cta:hover{background:var(--orange-bright);transform:translateY(-1px);box-shadow:0 10px 24px rgba(180,134,47,.4)}
.burger{display:none;background:none;border:1px solid rgba(255,255,255,.4);border-radius:8px;width:46px;height:42px;color:#fff;cursor:pointer;flex-direction:column;gap:4px;align-items:center;justify-content:center}
.burger span{width:20px;height:2px;background:currentColor;display:block}
html{overflow-x:clip}
/* scrolled state */
header.scrolled{background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-color:var(--hair);box-shadow:0 6px 24px rgba(16,28,58,.06)}
header.scrolled .brand .l-white{opacity:0}
header.scrolled .menu a{color:var(--muted)}
header.scrolled .menu a:hover{color:var(--blue)}
header.scrolled .nav-cta{background:var(--red);color:#fff}
.menu a.nav-cta,.menu a.nav-cta:hover,header.scrolled .menu a.nav-cta,header.scrolled .menu a.nav-cta:hover{color:#fff}
.nav-phone{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:13px;white-space:nowrap}
header.scrolled .nav-cta:hover{background:var(--red-deep)}
header.scrolled .burger{color:var(--blue);border-color:var(--hair)}
header:not(.scrolled) .brand .l-navy{opacity:0}
section{position:relative;padding-top:clamp(52px,6vw,90px);padding-bottom:clamp(52px,6vw,90px)}
/* ===== HERO ===== */
.hero .bg::after{content:"";position:absolute;inset:0;
  background:
   linear-gradient(100deg, rgba(16,28,58,.94) 0%, rgba(16,28,58,.7) 38%, rgba(16,28,58,.32) 72%, rgba(16,28,58,.15) 100%),
   linear-gradient(0deg, rgba(16,28,58,.9) 0%, rgba(16,28,58,.2) 40%, transparent 70%)}
.hero .wrap{position:relative;z-index:2;width:100%}
.hero .eyebrow{color:#fff;margin-bottom:26px}
.hero .eyebrow .ln{background:var(--yellow)}
.h-title .o{color:var(--orange)}
.h-title .pu{position:relative;display:inline-block}
.h-title .pu::after{content:"";position:absolute;left:.02em;right:.08em;bottom:.04em;height:.085em;background:var(--yellow);border-radius:4px}
.h-sub{max-width:50ch;color:rgba(255,255,255,.82);font-size:clamp(16px,1.9vw,20px);margin:26px 0 34px;line-height:1.55}
.h-sub em{color:#fff;font-style:normal;font-weight:600}
.cta-row{display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.btn{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:15px;padding:17px 30px;border-radius:100px;cursor:pointer;border:1.5px solid transparent;transition:transform .15s,box-shadow .2s,background .2s,border-color .2s,color .2s}
.btn-orange{background:var(--red);color:#fff}
.btn-orange:hover{background:var(--orange-bright);transform:translateY(-2px);box-shadow:0 14px 34px rgba(180,134,47,.45)}
.btn-outline{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.5);color:#fff;backdrop-filter:blur(4px)}
.btn-outline:hover{border-color:#fff;background:rgba(255,255,255,.14);transform:translateY(-2px)}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-deep);transform:translateY(-2px);box-shadow:0 14px 30px rgba(47,85,162,.3)}
.btn-primary svg,.btn-orange svg{color:currentColor}
.btn-ghost{background:transparent;border-color:var(--gray);color:var(--blue)}
.btn-ghost:hover{border-color:var(--blue);transform:translateY(-2px)}
.h-vlabel{position:absolute;right:34px;top:50%;transform:rotate(90deg);transform-origin:right center;
  font-family:"Space Mono";font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:rgba(255,255,255,.5);z-index:2}
.scrollcue{position:absolute;left:50%;bottom:34px;transform:translateX(-50%);z-index:2;font-family:"Space Mono";font-size:10px;letter-spacing:.24em;color:rgba(255,255,255,.6);text-transform:uppercase;display:flex;flex-direction:column;align-items:center;gap:8px}
.scrollcue .bar{width:1px;height:34px;background:linear-gradient(180deg,var(--yellow),transparent);animation:cue 2s ease-in-out infinite}
/* ===== FLOATING STATS ===== */
.stats-float{position:relative;background:#fff;border-radius:22px;box-shadow:0 40px 90px rgba(16,28,58,.18);border:1px solid var(--hair);
  display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden}
.sf{padding:36px 34px;border-left:1px solid var(--hair);position:relative}
.sf:first-child{border-left:none}
.stats-float::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--orange),var(--red));z-index:3}
.sf .k{font-family:"Archivo";font-weight:900;font-size:clamp(40px,4.4vw,58px);line-height:1;letter-spacing:-.03em;
  background:linear-gradient(180deg,var(--blue),var(--blue-deep));-webkit-background-clip:text;background-clip:text;color:transparent}
.sf:nth-child(2) .k,.sf:nth-child(4) .k{background:linear-gradient(180deg,var(--orange),var(--orange-deep));-webkit-background-clip:text;background-clip:text;color:transparent}
.sf .l{margin-top:12px;font-family:"Space Mono";font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);line-height:1.5}
/* ===== SERVICES ===== */
.svc-head{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:end;margin-bottom:48px}
.svc-head p{color:var(--muted);margin:0;font-size:16.5px}
.trade{border-radius:24px;padding:40px;position:relative;overflow:hidden;transition:transform .3s,box-shadow .3s}
.trade:hover{transform:translateY(-6px)}
.trade.elec{background:linear-gradient(160deg,var(--blue) 0%,var(--ink-blue) 130%);color:#fff;box-shadow:0 30px 70px rgba(33,63,120,.28)}
.trade.clim{background:#fff;border:1px solid var(--hair);color:var(--ink);box-shadow:0 20px 50px rgba(16,28,58,.07)}
.trade.clim:hover{box-shadow:0 32px 66px rgba(16,28,58,.12)}
.trade .idx{position:absolute;top:22px;right:30px;font-family:"Archivo";font-weight:900;font-size:76px;letter-spacing:-.04em;line-height:1}
.trade.elec .idx{color:rgba(255,255,255,.12)}
.trade.clim .idx{color:var(--soft)}
.trade .ico{width:56px;height:56px;border-radius:15px;display:grid;place-items:center;margin-bottom:22px}
.trade.elec .ico{background:var(--yellow);color:var(--ink-blue)}
.trade.clim .ico{background:var(--blue);color:#fff}
.trade h3{font-size:26px;font-weight:800;letter-spacing:-.02em}
.trade.elec h3{color:#fff}
.trade .kick{font-family:"Space Mono";font-size:10px;letter-spacing:.18em;text-transform:uppercase;margin-top:6px}
.trade.elec .kick{color:var(--orange)}
.trade.clim .kick{color:var(--orange-deep)}
.trade .desc{font-size:14.5px;line-height:1.6;margin:18px 0 24px;max-width:44ch}
.trade.elec .desc{color:rgba(255,255,255,.8)}
.trade.clim .desc{color:var(--muted)}
.svc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 22px}
.svc-item{display:flex;align-items:center;gap:11px;padding:11px 0;font-weight:600;font-size:14.5px;border-top:1px solid;transition:transform .2s}
.trade.elec .svc-item{border-color:rgba(255,255,255,.12);color:#fff}
.trade.clim .svc-item{border-color:var(--hair);color:var(--ink)}
.svc-item:hover{transform:translateX(4px)}
.svc-item .tick{width:20px;height:20px;border-radius:6px;flex:0 0 auto;display:grid;place-items:center}
.trade.elec .svc-item .tick{background:rgba(255,255,255,.14);color:var(--orange)}
.trade.clim .svc-item .tick{background:var(--soft);color:var(--blue)}
.svc-item .tick svg{width:12px;height:12px}
/* ===== OUR STORY / VIDEO ===== */
.story{background:linear-gradient(155deg,var(--blue) 0%,var(--ink-blue) 120%);color:#fff;overflow:hidden;position:relative}
.story::before{content:"";position:absolute;right:-120px;top:-120px;width:420px;height:420px;border-radius:50%;border:1px solid rgba(180,134,47,.2)}
.story-in{position:relative;z-index:1;display:grid;grid-template-columns:.82fr 1.18fr;gap:52px;align-items:center}
.story .eyebrow{color:var(--orange)}
.story .eyebrow .ln{background:var(--orange)}
.story h2{color:#fff;font-weight:800;font-size:clamp(32px,4.4vw,48px);letter-spacing:-.03em}
.story p{color:rgba(255,255,255,.82);margin:20px 0 26px;max-width:42ch}
.story .mini{display:flex;gap:30px;flex-wrap:wrap}
.story .mini .m b{font-family:"Archivo";font-weight:900;font-size:30px;color:var(--yellow);display:block;line-height:1}
.story .mini .m span{font-family:"Space Mono";font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.68);margin-top:6px;display:block}
.video-card{position:relative;border-radius:20px;overflow:hidden;box-shadow:0 40px 90px rgba(0,0,0,.4);border:1px solid rgba(255,255,255,.14);background:#000;aspect-ratio:16/9}
.video-card video{width:100%;height:100%;display:block;object-fit:cover}
.video-card .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,28,58,.15),rgba(16,28,58,.55));transition:opacity .4s}
.play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:84px;height:84px;border-radius:50%;border:none;cursor:pointer;background:var(--orange);display:grid;place-items:center;transition:transform .2s,background .2s;box-shadow:0 10px 34px rgba(180,134,47,.5)}
.play::before{content:"";position:absolute;inset:-10px;border-radius:50%;border:2px solid var(--orange);opacity:.6;animation:pulse 2.4s ease-out infinite}
.play:hover{transform:translate(-50%,-50%) scale(1.06);background:var(--orange-bright)}
.play svg{margin-left:5px}
.vmeta{position:absolute;left:18px;bottom:16px;font-family:"Space Mono";font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#fff;background:rgba(16,28,58,.6);padding:7px 12px;border-radius:8px;backdrop-filter:blur(4px)}
.video-card.playing .veil,.video-card.playing .play,.video-card.playing .vmeta{opacity:0;pointer-events:none}
/* ===== HISTORY — horizontal ===== */
.history{background:var(--soft);border-top:1px solid var(--hair);border-bottom:1px solid var(--hair)}
/* ===== TESTIMONIALS ===== */
.tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.tc{background:#fff;border:1px solid var(--hair);border-radius:22px;padding:32px 28px;display:flex;flex-direction:column;transition:transform .25s,box-shadow .25s;position:relative;overflow:hidden}
.tc:hover{transform:translateY(-5px);box-shadow:0 26px 52px rgba(16,28,58,.1)}
.tc .qmark{position:absolute;top:8px;right:20px;font-family:"Fraunces";font-size:110px;line-height:1;color:var(--soft)}
.stars{display:flex;gap:3px;margin-bottom:14px;position:relative}
.stars svg{width:17px;height:17px;color:var(--yellow)}
.tc .q{font-family:"Archivo";font-weight:700;font-size:19px;line-height:1.28;color:var(--blue-deep);margin:0 0 14px;position:relative}
.tc p{color:var(--muted);font-size:15px;line-height:1.6;margin:0 0 22px;flex:1;position:relative}
.tc .who{display:flex;align-items:center;gap:12px;border-top:1px solid var(--hair);padding-top:18px}
.tc .av{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-family:"Archivo";font-weight:800;color:#fff;background:var(--blue);font-size:15px;border:2px solid var(--orange)}
.tc .who b{font-size:15px;color:var(--ink)}
.tc .who span{display:block;font-family:"Space Mono";font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:2px}
/* ===== CAREERS ===== */
.careers-sec{padding-top:0;padding-bottom:0}
.careers{background:linear-gradient(120deg,var(--blue),var(--ink-blue));color:#fff;border-radius:24px;margin:clamp(80px,10vw,140px) 0;padding:56px clamp(28px,5vw,64px);display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap;position:relative;overflow:hidden}
.careers::before{content:"";position:absolute;right:-50px;top:-50px;width:280px;height:280px;border-radius:50%;border:1px solid rgba(180,134,47,.28)}
.careers::after{content:"";position:absolute;right:30px;top:30px;width:190px;height:190px;border-radius:50%;border:1px solid rgba(255,255,255,.1)}
.careers .cl{position:relative;z-index:1;max-width:52ch}
.careers .eyebrow{color:var(--orange)}
.careers .eyebrow .ln{background:var(--orange)}
.careers h3{color:#fff;font-weight:800;font-size:clamp(24px,3.4vw,36px);letter-spacing:-.02em}
.careers p{color:rgba(255,255,255,.82);margin:12px 0 0}
.careers .cbtns{position:relative;z-index:1;display:flex;gap:12px;flex-wrap:wrap}
.careers .btn-ghost{border-color:rgba(255,255,255,.45);color:#fff}
.careers .btn-ghost:hover{border-color:#fff;background:rgba(255,255,255,.08)}
/* ===== CONTACT ===== */
.contact{background:var(--soft-2);border-top:1px solid var(--hair)}
.cgrid{display:grid;grid-template-columns:.9fr 1.1fr;gap:52px;align-items:start}
.cl2 h2{font-weight:800;font-size:clamp(32px,4.6vw,50px);letter-spacing:-.03em}
.cl2 p{color:var(--muted);margin:18px 0 30px;max-width:40ch}
.detail{display:flex;align-items:center;gap:16px;padding:18px 0;border-top:1px solid var(--hair)}
.detail:first-of-type{border-top:none}
.detail .di{width:48px;height:48px;border-radius:13px;flex:0 0 auto;display:grid;place-items:center;background:var(--blue);color:var(--orange)}
.detail .dt small{font-family:"Space Mono";font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:3px}
.detail .dt b{font-size:18px;font-weight:700;color:var(--blue-deep)}
.detail .dt b a:hover{text-decoration:underline}
.form{background:#fff;border:1px solid var(--hair);border-radius:22px;padding:clamp(26px,3.5vw,40px);position:relative;overflow:hidden;box-shadow:0 24px 60px rgba(16,28,58,.08)}
.form::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--blue),var(--orange))}
.form h3{font-weight:800;font-size:24px;display:flex;align-items:center;gap:11px}
.form .fm{font-family:"Space Mono";font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:6px 0 26px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{margin-bottom:16px}
.field label{display:block;font-family:"Space Mono";font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.field input{width:100%;background:var(--soft-2);border:1px solid var(--hair);border-radius:10px;padding:14px 15px;color:var(--ink);font-family:"Inter";font-size:15px;transition:border-color .2s,box-shadow .2s,background .2s}
.field input:focus{outline:none;border-color:var(--orange);background:#fff;box-shadow:0 0 0 3px rgba(180,134,47,.2)}
.pick{margin:8px 0 22px}
.pick>label{display:block;font-family:"Space Mono";font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.pills{display:flex;flex-wrap:wrap;gap:9px}
.pill{cursor:pointer}
.pill input{position:absolute;opacity:0;pointer-events:none}
.pill span{display:inline-block;padding:9px 14px;border-radius:100px;border:1px solid var(--hair);font-size:13px;color:var(--muted);transition:.18s;user-select:none}
.pill input:checked+span{border-color:var(--blue);color:#fff;background:var(--blue);font-weight:600}
.pill input:focus-visible+span{outline:2px solid var(--orange);outline-offset:2px}
.form .btn-orange{width:100%;justify-content:center;font-size:16px;padding:16px}
.fn{font-family:"Space Mono";font-size:10px;letter-spacing:.08em;color:var(--gray);text-align:center;margin-top:14px}
/* ===== FOOTER ===== */
footer{background:var(--ink-blue);color:#fff;padding:64px var(--pad) 34px}
.ft{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:36px;max-width:var(--maxw);margin:0 auto 40px}
.fb img{height:46px;margin-bottom:16px}
.fb p{color:rgba(255,255,255,.74);font-size:14px;max-width:34ch;margin:0}
.fb .tag-serif{color:var(--orange);font-size:15px;display:block;margin-top:14px}
.fc h4{font-family:"Space Mono";font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--orange);margin-bottom:16px;font-weight:700}
.fc a{display:block;color:#fff;font-size:14.5px;margin-bottom:11px;opacity:.84;transition:opacity .2s,padding-left .2s}
.fc a:hover{opacity:1;padding-left:4px}
.fbar{max-width:var(--maxw);margin:0 auto;border-top:1px solid rgba(255,255,255,.16);padding-top:24px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.fbar .mono{font-size:11px;color:rgba(255,255,255,.62)}
.fbar .mono.g{color:var(--orange)}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
/* ===== MULTI-PAGE ADDITIONS ===== */
.page-banner::after{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(100deg,rgba(16,28,58,.95) 0%,rgba(16,28,58,.66) 52%,rgba(16,28,58,.4) 100%),linear-gradient(0deg,rgba(16,28,58,.82),transparent 72%)}
.page-banner .wrap{position:relative;z-index:1}
.page-banner .eyebrow{color:var(--yellow)}
.page-banner .eyebrow .ln{background:var(--yellow)}
.page-banner h1{color:#fff;font-weight:900;font-size:clamp(40px,6.5vw,80px);letter-spacing:-.035em;line-height:.94}
.page-banner .lead{color:rgba(255,255,255,.82);max-width:54ch;margin:20px 0 0;font-size:clamp(16px,1.7vw,19px);line-height:1.55}
.menu a.nav-active{color:#fff}
.menu a.nav-active::after{width:100%}
header.scrolled .menu a.nav-active{color:var(--blue)}
/* home teaser cards */
.tcards{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:30px}
.tcard2::before{content:"";position:absolute;top:0;left:0;height:4px;width:0;transition:width .4s}
.tcard2.b::before{background:var(--orange)}
.tcard2:hover::before{width:100%}
.tcard2:hover{transform:translateY(-6px);box-shadow:0 28px 60px rgba(16,28,58,.1);border-color:var(--gray)}
.tcard2.a .ico{background:var(--blue);color:var(--yellow)}
.tcard2.b .ico{background:var(--orange);color:var(--ink-blue)}
.tcard2 h3{font-size:24px;font-weight:800;color:var(--blue-deep)}
.tcard2 .kick{font-family:"Space Mono";font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--orange-deep);margin-top:5px}
.tcard2:hover .go{gap:13px}
/* why grid */
.wcard{position:relative;padding:36px 30px;border-radius:22px;background:#fff;border:1px solid var(--hair);box-shadow:0 2px 6px rgba(13,24,48,.04);transition:transform .28s,box-shadow .28s,border-color .28s;overflow:hidden}
.wcard::before{content:"";position:absolute;top:0;left:0;height:3px;width:0;background:var(--orange);transition:width .4s}
.wcard:hover{transform:translateY(-6px);box-shadow:0 26px 54px rgba(13,24,48,.12);border-color:transparent}
.wcard:hover::before{width:100%}
.wcard h4{font-size:17px;font-weight:800;color:var(--blue-deep);letter-spacing:-.01em}
.wcard p{color:var(--muted);font-size:14px;margin:9px 0 0;line-height:1.5}
/* cta band */
.cta-band{background:linear-gradient(125deg,var(--blue-deep),var(--ink-blue));color:#fff;border-radius:24px;padding:50px clamp(28px,5vw,62px);display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap;position:relative;overflow:hidden}
.cta-band::after{content:"";position:absolute;right:-40px;bottom:-60px;width:240px;height:240px;border-radius:50%;border:1px solid rgba(255,255,255,.2)}
.cta-band .ctl{position:relative;z-index:1;max-width:46ch}
.cta-band h3{color:#fff;font-size:clamp(24px,3.4vw,36px);font-weight:800;letter-spacing:-.02em}
.cta-band p{margin:10px 0 0;color:rgba(255,255,255,.86)}
.cta-band .cbt{position:relative;z-index:1;display:flex;gap:12px;flex-wrap:wrap}
.btn-dark{background:var(--ink-blue);color:#fff}
.cta-band .btn-dark{background:var(--red);color:#fff}
.cta-band .btn-dark:hover{background:var(--red-deep);box-shadow:0 14px 30px rgba(196,42,42,.30)}
.btn-dark:hover{background:var(--blue-deep);transform:translateY(-2px)}
.btn-lightline{background:transparent;border-color:rgba(255,255,255,.55);color:#fff}
.btn-lightline:hover{border-color:#fff;transform:translateY(-2px)}
/* process steps */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin-top:36px}
.step{position:relative;padding-top:8px}
.step .num{display:inline-grid;place-items:center;width:56px;height:56px;border-radius:50%;font-family:"Archivo";font-weight:900;font-size:22px;color:var(--blue-deep);background:#fff;border:1.5px solid rgba(180,134,47,.4);box-shadow:0 10px 24px rgba(13,24,48,.07);line-height:1;letter-spacing:0}
.step h4{font-size:18px;font-weight:800;color:var(--blue-deep);margin:12px 0 8px}
.step p{color:var(--muted);font-size:14.5px;margin:0;line-height:1.55}
/* values */
.values{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:26px}
.value{position:relative;padding:36px 30px;border-radius:20px;border:1px solid var(--hair);background:#fff;box-shadow:0 2px 6px rgba(13,24,48,.04);transition:transform .28s,box-shadow .28s,border-color .28s;overflow:hidden}
.value::before{content:"";position:absolute;top:0;left:0;height:3px;width:0;background:var(--orange);transition:width .4s}
.value:hover{transform:translateY(-6px);box-shadow:0 26px 54px rgba(13,24,48,.11);border-color:transparent}
.value:hover::before{width:100%}
.value .vi{width:50px;height:50px;border-radius:14px;background:rgba(180,134,47,.10);border:1px solid rgba(180,134,47,.22);display:grid;place-items:center;color:var(--orange-deep);margin-bottom:18px}
.value h4{font-size:18px;font-weight:800;color:var(--blue-deep)}
.value p{color:var(--muted);font-size:14.5px;margin:9px 0 0;line-height:1.55}
/* prose */
.prose{max-width:68ch}
.prose p{color:var(--muted);font-size:16.5px;margin:0 0 20px;line-height:1.7}
.prose p strong{color:var(--ink);font-weight:600}
/* roles */
.roles{display:flex;flex-direction:column;gap:14px;margin-top:30px}
.role{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:26px 30px;border:1px solid var(--hair);border-radius:18px;background:#fff;transition:transform .2s,box-shadow .2s;flex-wrap:wrap}
.role:hover{transform:translateX(5px);box-shadow:0 18px 44px rgba(16,28,58,.08);border-color:var(--gray)}
.role .rl h4{font-size:19px;font-weight:800;color:var(--blue-deep)}
.role .rl p{color:var(--muted);font-size:14px;margin:6px 0 0}
.role .rr{display:flex;align-items:center;gap:16px}
.role .rtag{font-family:"Space Mono";font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--orange-deep);border:1px solid var(--hair);border-radius:100px;padding:7px 13px;white-space:nowrap}
/* rating summary */
.rsum .rstars{display:flex;gap:3px}
.rsum .rstars svg{width:20px;height:20px;color:var(--yellow)}
.section-head{max-width:60ch}
.section-head .eyebrow{margin-bottom:20px}
.esop{max-width:58ch;color:rgba(255,255,255,.92);font-size:clamp(14.5px,1.5vw,17px);line-height:1.55;margin:14px 0 0;font-weight:500}
.esop b{color:var(--orange);font-weight:700}
.trade{padding:0;overflow:hidden}
.trade .tphoto{position:relative;height:clamp(180px,24vw,240px);background-size:cover;background-position:center}
.trade .tphoto::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,28,58,.05),rgba(16,28,58,.28))}
.trade.elec .tphoto{border-bottom:3px solid var(--orange)}
.trade.clim .tphoto{border-bottom:3px solid var(--blue)}
.trade .tphoto .idx{position:absolute;top:0;left:0;right:auto;background:var(--blue);color:#fff;font-family:"Space Mono";font-weight:700;font-size:14px;letter-spacing:.1em;padding:9px 13px;border-radius:0 0 12px 0;opacity:1;z-index:1}
.trade.clim .tphoto .idx,.trade.elec .tphoto .idx{color:#fff}
.trade .tbody{padding:clamp(28px,3.6vw,40px)}
.ht:hover::before{transform:scale(1.12)}
.htc{background:#fff;border:1px solid var(--hair);border-radius:16px;padding:24px 22px;box-shadow:0 10px 30px rgba(13,24,48,.06);transition:transform .28s,box-shadow .28s;height:100%}
.ht:hover .htc{transform:translateY(-5px);box-shadow:0 24px 50px rgba(13,24,48,.12)}
.esop-band{background:linear-gradient(150deg,var(--blue-deep),var(--ink-blue));color:#fff;border-radius:24px;padding:clamp(34px,4.5vw,56px);display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,54px);align-items:center;box-shadow:0 30px 70px rgba(13,24,48,.2)}
.esop-badge{display:inline-block;font-family:"Space Mono";font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--yellow);border:1px solid rgba(255,255,255,.22);border-radius:100px;padding:7px 14px;margin-bottom:18px}
.esop-l h2{font-family:"Archivo";font-weight:900;font-size:clamp(28px,3.6vw,44px);letter-spacing:-.02em;line-height:1.03;margin:0 0 16px;color:#fff}
.esop-l p{color:rgba(255,255,255,.82);font-size:16px;line-height:1.6;margin:0}
.esop-l strong{color:var(--yellow)}
.esop-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:15px}
.esop-list li{display:flex;flex-direction:column;gap:3px;padding-left:22px;position:relative}
.esop-list li::before{content:"";position:absolute;left:0;top:7px;width:9px;height:9px;border-radius:50%;background:var(--yellow)}
.esop-list b{font-family:"Archivo";font-weight:800;font-size:15.5px;color:#fff}
.htc .hicon{width:46px;height:46px;border-radius:13px;background:linear-gradient(160deg,var(--blue),var(--ink-blue));color:var(--yellow);display:grid;place-items:center;margin-bottom:16px;box-shadow:0 10px 22px rgba(13,24,48,.16)}
.esop-list span{color:rgba(255,255,255,.7);font-size:14px;line-height:1.5}
.svc-sub{display:grid;grid-template-columns:1.6fr .9fr;gap:clamp(30px,5vw,64px);align-items:start}
.htc .hicon svg{width:23px;height:23px}
.svc-sub-body p{font-size:clamp(16px,1.8vw,19px);line-height:1.65;color:var(--ink);margin:0 0 26px}
.ht:last-child .htc .hicon{background:linear-gradient(160deg,var(--orange),var(--orange-deep));color:#fff}
.svc-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:14px 24px}
.numbers-sec{padding-top:0}
.svc-list li{position:relative;padding-left:28px;color:var(--ink);font-weight:600;font-size:15px}
.numbers{background:linear-gradient(130deg,var(--blue) 0%,var(--ink-blue) 125%);border-radius:24px;padding:clamp(36px,5vw,58px) clamp(24px,4vw,56px);display:grid;grid-template-columns:repeat(4,1fr);gap:24px;position:relative;overflow:hidden;box-shadow:0 30px 70px rgba(13,24,48,.22)}
.svc-list li::before{content:"";position:absolute;left:0;top:2px;width:18px;height:18px;border-radius:5px;background:rgba(180,134,47,.14)}
.numbers::after{content:"";position:absolute;right:-60px;top:-70px;width:260px;height:260px;border-radius:50%;border:1px solid rgba(255,255,255,.1)}
.svc-list li::after{content:"";position:absolute;left:5px;top:7px;width:7px;height:4px;border-left:2px solid var(--orange-deep);border-bottom:2px solid var(--orange-deep);transform:rotate(-45deg)}
.numbers::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--yellow),var(--red))}
.svc-sub-cta{background:linear-gradient(160deg,var(--blue-deep),var(--ink-blue));color:#fff;border-radius:20px;padding:32px 28px;position:sticky;top:104px}
.nstat{position:relative;z-index:1;padding-left:26px;border-left:1px solid rgba(255,255,255,.14)}
.svc-sub-cta h3{font-family:"Archivo";font-weight:800;font-size:22px;margin:0 0 8px;color:#fff}
.nstat:first-child{border-left:none;padding-left:0}
.svc-sub-cta p{color:rgba(255,255,255,.8);font-size:15px;line-height:1.5;margin:0 0 20px}
.nstat b{display:block;font-family:"Archivo";font-weight:900;font-size:clamp(40px,4.8vw,60px);line-height:1;letter-spacing:-.03em;color:var(--yellow)}
.svc-sub-cta .btn{width:100%;justify-content:center}
.nstat b i{font-style:normal;font-size:.6em;vertical-align:top;margin-left:2px}
.svc-back{display:inline-block;margin-top:16px;color:rgba(255,255,255,.75);font-size:13.5px;font-weight:600}
.nstat span{display:block;margin-top:14px;font-family:"Space Mono";font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.svc-back:hover{color:var(--yellow)}


/* ================== Reusable Global FAQ Stylesheet ==================
   Supplied with the SEO pass. The questions are <h2> on purpose — that is what
   AI search engines look for when scraping Q&A — and .faq-question sets them to
   18px so the site's own h2 size is untouched. */
.faq-section {
  width: 100%;
  padding: 60px 0;
  background-color: #ffffff;
  box-sizing: border-box;
}
/* Jeff's container was a 900px box centred in the viewport, which left the FAQ
   text starting ~150px right of every other section on the page. The container
   now matches the site's own .wrap (1200px + the --pad side padding) so the left
   edge lines up, and his 900px reading measure is kept on the content inside. */
.faq-container {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 var(--pad);
  box-sizing: border-box;
}
.faq-main-title, .faq-accordion {
  max-width: 900px;
}
/* Main Heading: 22px */
.faq-main-title {
  font-size: 22px;
  font-weight: 700;
  color: #0c1b33;
  margin: 0 0 28px 0;
  text-align: left;
}
/* Accordion Shell */
.faq-accordion {
  display: flex;
  flex-direction: column;
  border-top: 1px solid #e2e8f0;
}
.faq-item {
  border-bottom: 1px solid #e2e8f0;
}
/* Interactive Summary Trigger */
.faq-summary {
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 0;
  cursor: pointer;
  user-select: none;
}
.faq-summary::-webkit-details-marker {
  display: none;
}
/* Question Heading: 18px & Bold */
.faq-question {
  font-size: 18px;
  font-weight: 700;
  line-height: 1.4;
  color: #1a202c;
  margin: 0;
  padding-right: 20px;
}
/* CSS-only Toggle Chevron */
.faq-icon {
  position: relative;
  width: 12px;
  height: 12px;
  min-width: 12px;
  border-right: 2px solid #0c1b33;
  border-bottom: 2px solid #0c1b33;
  transform: rotate(45deg);
  transition: transform 0.25s ease-in-out;
}
.faq-item[open] .faq-icon {
  transform: rotate(-135deg);
}
/* Answer Body */
.faq-answer {
  padding: 0 0 20px 0;
}
.faq-answer p {
  font-size: 16px;
  line-height: 1.6;
  color: #4a5568;
  margin: 0;
}
/* keyboard focus, and stop the chevron animating for reduced-motion users */
.faq-summary:focus-visible {
  outline: 2px solid var(--orange);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .faq-icon { transition: none; }
}

/* ---- the hidden attribute must actually hide ----
   contact.html ships the thank-you panel as <div class="form-sent" hidden>, and
   js/contact.js reveals it by clearing that attribute after a successful send.
   But contact.css sets

       .form-sent { display: flex }

   and an author display declaration beats the browser's own [hidden] rule, so
   the panel was showing on page load — "Thank you for submitting" sat under the
   form before anyone had submitted anything. (.form-err already had a
   .form-err[hidden] guard; .form-sent was missed.)

   Fixing it globally rather than for this one class, so the next element built
   with hidden cannot hit the same trap. Nothing on the site uses hidden and
   expects to stay visible — only #formSent and #formErr use it at all. */
[hidden] { display: none !important; }

/* ---- mobile menu: white state, Services submenu ----
   The mobile menu has two looks. Over the hero the header is transparent and the
   panel is dark (.menu background: --ink-blue, links #fff). Once the page is
   scrolled the header gains .scrolled and the panel turns white, and the page
   stylesheets recolour the top-level links for it:

       header.scrolled .menu a { color: var(--muted) }

   The Services submenu was never given that second state. Its links are pinned
   at rgba(255,255,255,.82) and its left rule at rgba(255,255,255,.18), so on the
   white panel all seven service links were white-on-white — invisible, leaving a
   ~500px blank gap between "Services" and "New Construction". The left rule was
   invisible too.

   These selectors carry header.scrolled and .menu, so they out-specify the page
   rule (0,4,2 against 0,3,1) and win no matter which stylesheet loads first.
   The dark state is untouched. */
@media (max-width: 1180px) {
  header.scrolled .menu .nav-dd .dd { border-left-color: var(--hair); }
  header.scrolled .menu .nav-dd .dd a { color: var(--muted); }
  header.scrolled .menu .nav-dd .dd a:hover,
  header.scrolled .menu .nav-dd .dd a:focus-visible { color: var(--red); }
}

/* ---- hero sub-paragraph, resized for Jeff's longer homepage copy ----
   The replacement paragraph is 640 characters against the 166 it replaced, which
   took the hero sub from 3 lines to 10 and pushed the buttons off screen.

   Both declarations below are needed. The original rule caps the width at 50ch —
   a width measured in characters — so a smaller font shrinks the column by the
   same proportion and the line count never changes. Releasing the cap lets the
   paragraph use the full 640px of .hero-inner, and that is what actually removes
   the lines: 10 -> 8, with the type at 15px instead of 20px. Opacity is lifted
   from .82 to .88 to hold legibility at the smaller size. Verified with
   out/herofit.mjs. */
.h-sub {
  max-width: none;
  font-size: 15px;
  line-height: 1.5;
  margin: 20px 0 28px;
  color: rgba(255,255,255,.88);
}

/* ---- intro copy + long-form prose blocks added with the SEO pass ---- */
/* Padded on both sides: on the homepage this band sits between the stats card
   and the "Why Elite" section, where the background colour changes, so the last
   line needs clearance from that edge. */
.page-intro { padding: clamp(34px,4.5vw,54px) 0; }
/* On the service pages the FAQ follows immediately and brings its own 60px, so
   trim the doubled gap. */
.page-intro + .faq-section { padding-top: 20px; }
.page-intro p {
  max-width: 78ch; margin: 0;
  font-size: clamp(15.5px,1.6vw,17px); line-height: 1.75; color: var(--muted);
}
.seo-prose { padding: clamp(34px,4.5vw,54px) 0 0; }
.seo-prose .pw { max-width: 82ch; }
.seo-prose h2 {
  margin: 34px 0 0; font-family: "Archivo",sans-serif; font-weight: 800;
  font-size: clamp(21px,2.4vw,27px); line-height: 1.2; letter-spacing: -.02em;
  color: var(--blue-deep);
}
.seo-prose h2:first-child { margin-top: 0; }
.seo-prose h3 {
  margin: 26px 0 0; font-family: "Archivo",sans-serif; font-weight: 700;
  font-size: 16px; color: var(--ink);
}
.seo-prose p { margin: 13px 0 0; font-size: 16px; line-height: 1.72; color: var(--muted); }
.seo-prose ul { margin: 14px 0 0; padding: 0 0 0 22px; }
.seo-prose li { margin: 8px 0 0; font-size: 16px; line-height: 1.65; color: var(--muted); }
.seo-prose li::marker { color: var(--orange); }
.seo-prose li strong, .seo-prose p strong { color: var(--ink); font-weight: 600; }
/* The site's global rule is a{color:inherit;text-decoration:none}, so a link in
   body copy would be invisible. Give the new prose links an affordance, and pad
   them vertically — on an inline element that grows the tap target past 24px
   without changing the line height. */
.seo-prose a {
  color: var(--orange-deep); font-weight: 600;
  text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px;
  padding: 6px 0;
}
.seo-prose a:hover { color: var(--orange); }
