/* Madison Energy — v3
   A mix of two references: the airy, hairline-ruled, full-bleed layout of "Windsor"
   and the white card / dashboard / lime-icon product feel of "SolarNova",
   recoloured from their blues into Madison's greens. */
:root{
  --sky-1:#eaf3ea; --sky-2:#d9e9dc; --white:#fff; --mist:#f3f6f2; --card:#f6faf5;
  --ink:#0d1f17; --ink-2:#3f5248; --mute:#6f8177; --line:rgba(13,31,23,.14);
  --green:#17573b; --green-2:#2d6a4f; --deep:#0c2a1e; --night:#08130e;
  --lime:#d9f35b; --lime-2:#c5e63a;
  --r:10px; --r-lg:18px; --pill:999px;
  --pad:clamp(18px,2.8vw,40px);
  --head:"Geist","Inter",system-ui,sans-serif; --body:"Inter",system-ui,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{overflow-x:clip}
html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped{overflow:hidden}
body{margin:0;font-family:var(--body);font-size:16px;line-height:1.5;color:var(--ink);background:linear-gradient(180deg,var(--sky-1),var(--sky-2) 40%,var(--sky-1));-webkit-font-smoothing:antialiased}
img,video,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
h1,h2,h3,h4,p,ul,ol,dl,dd,figure{margin:0;padding:0}ul,ol{list-style:none}
::selection{background:var(--lime);color:var(--ink)}
:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:4px}
.wrap{max-width:1480px;margin-inline:auto;padding-inline:var(--pad)}
.num{font-variant-numeric:tabular-nums}
section{position:relative}
.sec{padding-block:clamp(70px,8vw,130px)}

/* type */
h1,h2,h3{font-family:var(--head);font-weight:500;letter-spacing:-.035em}
.h1{font-size:clamp(40px,5.2vw,78px);line-height:1.04;letter-spacing:-.03em}
.h2c{font-size:clamp(34px,4.4vw,62px);line-height:1.06;letter-spacing:-.04em}
.h2r{font-size:clamp(26px,2.7vw,40px);line-height:1.14;letter-spacing:-.03em;font-weight:400;color:var(--green)}
.h3{font-size:clamp(22px,2vw,30px);line-height:1.12;letter-spacing:-.025em}
.lead{font-size:clamp(15px,1.15vw,17.5px);color:var(--ink-2);line-height:1.5}
.gr{color:var(--green-2)}
/* Windsor section header: hairline, square-dot label left, heading right */
.shead{position:relative;display:grid;grid-template-columns:1fr minmax(0,33%);gap:30px;align-items:start;padding-top:20px;margin-bottom:clamp(34px,4vw,60px)}
.label{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:500;color:var(--green);display:flex;align-items:center;gap:9px}
.label::before{content:"";width:6px;height:6px;background:var(--green)}
.on-dark .shead::before{background:rgba(255,255,255,.4)}.on-dark .label,.on-dark .h2r{color:#fff}.on-dark .label::before{background:#fff}
/* SolarNova centered header: tag pill, big heading, sub */
.chead{text-align:center;max-width:820px;margin:0 auto clamp(36px,4.4vw,64px)}
.tag{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border-radius:var(--pill);background:var(--mist);border:1px solid var(--line);font-size:12.5px;color:var(--ink-2);margin-bottom:22px}
.tag::before{content:"";width:4px;height:4px;border-radius:50%;background:var(--green)}
.chead .lead{max-width:48ch;margin:20px auto 0}

/* word mask reveal */
.w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
.w>i{display:inline-block;font-style:normal}
.js [data-reveal]{opacity:0;transform:translateY(26px)}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:10px;height:50px;padding:0 6px 0 22px;border-radius:var(--pill);background:var(--night);color:#fff;font-weight:500;font-size:15px;white-space:nowrap}
.btn .arr{width:38px;height:38px;border-radius:50%;background:#fff;color:var(--night);display:grid;place-items:center;transition:transform .5s var(--ease);flex:none}
.btn .arr svg{width:14px;height:14px}.btn:hover .arr{transform:rotate(45deg)}
.btn.green{background:var(--green)}
.btn.white{background:#fff;color:var(--ink);padding:0 22px}
.btn.line{background:transparent;border:1px solid rgba(255,255,255,.6);padding:0 22px}
.btn.plain{padding:0 22px}

/* preloader */
.pre{position:fixed;inset:0;z-index:200;background:var(--sky-1);display:none;place-items:center}
.js .pre{display:grid;animation:preOut .01s linear 7s forwards}@keyframes preOut{to{visibility:hidden;pointer-events:none}}
.pre-in{display:flex;flex-direction:column;align-items:center;gap:18px}
.pre-in img{width:54px;filter:brightness(0)}
.pre-n{font-family:var(--head);font-size:15px;color:var(--ink-2)}
.pre-bar{width:180px;height:2px;background:var(--line);overflow:hidden}.pre-bar i{display:block;height:100%;width:100%;background:var(--green);transform-origin:0 50%;transform:scaleX(0)}

/* nav: floating rounded bar */
.nav{position:fixed;left:var(--pad);right:var(--pad);top:14px;z-index:100;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 8px 8px 14px;border-radius:14px;background:rgba(240,249,242,.82);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.7);transition:transform .6s var(--ease);max-width:1400px;margin-inline:auto}
.nav.is-hidden{transform:translateY(-140%)}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--head);font-weight:600;font-size:17px;letter-spacing:-.02em}
.brand span.dot{width:38px;height:38px;border-radius:50%;background:var(--lime);display:grid;place-items:center}
.brand img{height:18px;filter:brightness(0)}
.nav-links{display:flex;gap:26px;font-size:14px;font-weight:500}
.nav-links a{opacity:.85;transition:opacity .2s}.nav-links a:hover{opacity:1}
.nav .btn{height:44px;font-size:14px;padding-left:18px}.nav .btn .arr{width:32px;height:32px}
.burger{display:none;width:44px;height:44px;place-items:center}.burger i{display:block;width:20px;height:2px;background:var(--ink);box-shadow:0 6px 0 var(--ink);margin-top:-6px}
.menu{position:fixed;inset:0;z-index:99;background:var(--sky-1);padding:110px var(--pad) 40px;display:flex;flex-direction:column;gap:4px;clip-path:inset(0 0 100% 0);transition:clip-path .7s var(--ease);visibility:hidden}
.menu.open{clip-path:inset(0);visibility:visible}
.menu a:not(.btn){font-family:var(--head);font-size:40px;letter-spacing:-.035em;font-weight:500}
.menu .btn{margin-top:auto;align-self:flex-start}

/* hero (Windsor): full-bleed media, stats rail right, heading bottom-left */
.hero{height:100svh;min-height:640px;display:flex;flex-direction:column;justify-content:flex-end;padding:0 var(--pad) clamp(28px,4vw,52px);color:#fff;overflow:hidden}
.hero-media{position:absolute;inset:0}
.hero-media video,.hero-media img{width:100%;height:100%;object-fit:cover}
.hero-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,19,14,.28),rgba(8,19,14,0) 30%,rgba(8,19,14,.72))}
.hero>*:not(.hero-media){position:relative}
.hero-stats{position:absolute!important;right:var(--pad);top:120px;width:min(250px,40vw)}
.hero-stats div{border-top:1px solid rgba(255,255,255,.5);padding:14px 0 26px}
.hero-stats small{display:block;font-size:12px;opacity:.85;margin-bottom:10px}
.hero-stats b{font-family:var(--head);font-weight:400;font-size:19px;display:flex;justify-content:space-between}
.hero-stats b::after{content:attr(data-d);letter-spacing:2px;opacity:.7}
.hero h1{max-width:13ch}
.hero-row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-top:26px;flex-wrap:wrap}
.hero-cta{display:flex;gap:10px;flex-wrap:wrap}
.hero-note{font-size:13px;opacity:.85;max-width:34ch;text-align:right}

/* partners */
.clients{padding-block:clamp(50px,6vw,90px)}
.mq{overflow:hidden;display:flex;white-space:nowrap;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.mq-t{display:flex;gap:64px;padding-right:64px;flex:none;animation:mq 40s linear infinite;font-family:var(--head);font-size:clamp(20px,2vw,28px);font-weight:500;letter-spacing:-.02em;color:var(--ink-2);align-items:center}
@keyframes mq{to{transform:translateX(-100%)}}

/* platform (SolarNova hero): centred heading, dashboard rising */
.platform{padding-top:clamp(70px,8vw,120px);overflow:hidden;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 30%)}
.platform .cta-row{display:flex;justify-content:center;gap:8px;margin-top:28px}
.round{width:50px;height:50px;border-radius:50%;border:1px solid var(--ink);display:grid;place-items:center}.round svg{width:15px}
.dashwrap{max-width:1180px;margin:0 auto;padding:14px 14px 0;border-radius:26px 26px 0 0;background:rgba(255,255,255,.55);border:1px solid #fff;border-bottom:0;box-shadow:0 -30px 80px -40px rgba(13,31,23,.35)}
.dash{background:#fff;border-radius:16px 16px 0 0;display:grid;grid-template-columns:190px 1fr;min-height:520px;overflow:hidden;border:1px solid var(--line);border-bottom:0}
.dash-side{border-right:1px solid var(--line);padding:20px 16px;font-size:12.5px}
.dash-side b{font-family:var(--head);font-size:17px;display:block;margin-bottom:22px}
.dash-side small{display:block;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);margin:14px 0 8px}
.dash-side span{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;color:var(--ink-2)}
.dash-side span::before{content:"";width:12px;height:12px;border-radius:3px;border:1.5px solid currentColor;opacity:.6}
.dash-side span.on{background:var(--mist);color:var(--ink);font-weight:600}
.dash-main{padding:18px 20px;background:#fbfcfb}
.dash-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.dash-top b{font-family:var(--head);font-size:17px;font-weight:500}
.dash-top span{font-size:12px;color:var(--mute);border:1px solid var(--line);padding:7px 14px;border-radius:var(--pill);background:#fff}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:10px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}
.kpi small{font-size:11px;color:var(--green-2);font-weight:600;display:flex;justify-content:space-between}
.kpi small i{width:18px;height:18px;border-radius:5px;background:var(--lime)}
.kpi b{font-family:var(--head);font-size:24px;font-weight:600;letter-spacing:-.03em;display:block;margin-top:8px}
.kpi em{font-style:normal;font-size:11px;color:var(--mute)}
.dash-g{display:grid;grid-template-columns:1.7fr 1fr;gap:10px}
.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.panel h4{font-size:13px;font-weight:600;display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.panel h4 em{font-style:normal;font-size:10.5px;color:var(--mute);font-weight:500}
.rbars{display:flex;align-items:flex-end;gap:26px;height:200px;padding:0 10px;border-bottom:1px solid var(--line)}
.rbars div{flex:1;display:flex;align-items:flex-end;gap:5px;height:100%;position:relative}
.rbars i{flex:1;border-radius:6px 6px 0 0;transform-origin:50% 100%;height:var(--h)}
.rbars i:first-child{background:#9fd9c3}.rbars i:last-child{background:var(--lime-2)}
.rlab{display:flex;gap:26px;padding:8px 10px 0;font-size:10.5px;color:var(--mute);text-align:center}.rlab span{flex:1}
.legend{display:flex;gap:14px;font-size:10.5px;color:var(--mute);font-weight:500}.legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;background:#9fd9c3}.legend i.b{background:var(--lime-2)}
.donut{position:relative;width:170px;margin:6px auto 12px}
.donut b{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--head);font-size:24px;font-weight:600}
.donut circle{fill:none;stroke-width:16}
.dlist li{display:flex;justify-content:space-between;font-size:12px;padding:7px 0;border-top:1px solid var(--line)}.dlist li b{font-weight:600}
.dash-cap{text-align:center;font-size:12.5px;color:var(--mute);padding:18px var(--pad) 0;background:#fff;margin:0}

/* about */
.about{background:#fff}
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.about-img{position:relative;border-radius:var(--r);overflow:hidden;min-height:520px}
.about-img img{position:absolute;inset:-8% 0;width:100%;height:116%;object-fit:cover}
.chip{position:absolute;left:50%;bottom:0;transform:translateX(-10%);background:var(--card);padding:16px 20px 22px;width:220px;border-radius:var(--r) var(--r) 0 0}
.chip b{font-family:var(--head);font-size:30px;font-weight:400;color:var(--green);display:block}.chip small{font-size:12px;color:var(--ink-2)}
.about-card{background:var(--mist);border-radius:var(--r);padding:clamp(22px,2.6vw,40px);display:flex;flex-direction:column;justify-content:space-between;gap:40px}
.about-card p.big{font-family:var(--head);font-size:clamp(19px,1.75vw,26px);line-height:1.3;letter-spacing:-.02em;color:var(--ink)}
.js .about-card p.big .fw{opacity:.22}
.about-dark{background:var(--night);border-radius:var(--r);padding:10px;display:grid;gap:8px}
.about-dark div{background:#fff;border-radius:8px;padding:14px 16px;display:flex;justify-content:space-between;align-items:center}
.about-dark span{font-weight:600;font-size:14.5px}.about-dark span small{display:block;font-weight:400;font-size:11.5px;color:var(--mute)}
.about-dark b{font-family:var(--head);font-size:24px;font-weight:500;color:var(--green-2)}
.tri{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}
.tri-c{background:var(--mist);border-radius:var(--r);padding:24px;min-height:220px;display:flex;flex-direction:column;justify-content:space-between}
.tri-c h3{display:flex;align-items:center;gap:12px;font-size:28px}
.ico{width:34px;height:34px;border-radius:9px;background:var(--lime);display:grid;place-items:center;flex:none}.ico svg{width:17px;height:17px}
.tri-c p{color:var(--ink-2);font-size:14.5px;max-width:34ch}

/* impact */
.impact{background:#fff;padding-top:0}
.impact h2{margin-bottom:26px}
.nums{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:var(--r)}
.nums>div{padding:26px;border-right:1px solid var(--line);position:relative}
.nums>div:last-child{border-right:0}
.nums b{font-family:var(--head);font-size:clamp(38px,4.4vw,66px);font-weight:400;letter-spacing:-.04em;line-height:1}
.nums small{display:block;margin-top:14px;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2)}
.nums .ico{position:absolute;right:20px;top:26px}
.words{display:flex;justify-content:center;gap:.5em;font-family:var(--head);font-size:clamp(26px,3.6vw,54px);letter-spacing:-.03em;margin-top:clamp(50px,6vw,90px);flex-wrap:wrap}
.words span{color:var(--ink);opacity:.25;transition:opacity .5s,color .5s}.words span.on{opacity:1;color:var(--green-2)}

/* technology (Windsor sticky solutions) */
.tech{color:#fff}
.tech-pin{height:100svh;min-height:640px;overflow:hidden;display:flex;flex-direction:column;padding:110px var(--pad) 40px}
.tech-bg{position:absolute;inset:0}
.tech-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1s ease,transform 6s ease;transform:scale(1.08)}
.tech-bg img.on{opacity:1;transform:scale(1)}
.tech-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,19,14,.5),rgba(8,19,14,.18) 40%,rgba(8,19,14,.55))}
.tech-pin>*:not(.tech-bg){position:relative}
.tcards{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:auto;align-items:start}
.tc{background:var(--card);color:var(--ink);border-radius:6px;padding:18px;min-height:250px;display:flex;flex-direction:column;justify-content:space-between;gap:20px}
.tc:nth-child(2),.tc:nth-child(4){margin-top:44px}
.tc h3{font-size:21px;color:var(--green);display:flex;justify-content:space-between;gap:10px;line-height:1.15}
.tc h3 span{color:#b9cdbf;font-weight:400}
.tc p{font-size:13px;color:var(--ink-2);line-height:1.45}
.tc ul{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}
.tc li{font-size:11.5px;padding:4px 9px;border-radius:var(--pill);background:#fff;border:1px solid var(--line)}.tc li b{color:var(--green-2)}

/* process (SolarNova stacking cards) */
.process{background:var(--sky-1)}
.pstack{max-width:1180px;margin:0 auto;display:grid;gap:22px}
.pc{position:sticky;top:calc(96px + var(--i)*16px);background:#fff;border-radius:var(--r-lg);padding:14px;display:grid;grid-template-columns:1fr 1.05fr;gap:14px;box-shadow:0 -10px 40px -20px rgba(13,31,23,.25);border:1px solid rgba(255,255,255,.8);transform-origin:50% 0}
.pc-t{padding:clamp(16px,2vw,30px);display:flex;flex-direction:column}
.pc-t .tag{align-self:flex-start;margin-bottom:0}
.pc-t h3{font-size:clamp(24px,2.3vw,34px);margin:14px 0 12px}
.pc-t p{color:var(--ink-2);font-size:14.5px;max-width:42ch}
.pc-t ul{margin-top:auto;padding-top:26px}
.pc-t li{font-size:13.5px;padding:10px 0;border-top:1px solid var(--line);color:var(--ink-2);display:flex;gap:9px}.pc-t li::before{content:"•";color:var(--green)}
.pc-m{position:relative;border-radius:12px;overflow:hidden;min-height:400px;display:grid;place-items:center}
.pc-m img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.widget{position:relative;background:#fff;border-radius:12px;padding:14px 16px;width:min(240px,70%);box-shadow:0 20px 50px -20px rgba(13,31,23,.5)}
.widget small{font-size:11px;font-weight:600;display:block;margin-bottom:12px}
.wb{display:flex;align-items:flex-end;gap:7px;height:74px}
.wb i{flex:1;background:var(--green);border-radius:4px 4px 0 0;height:var(--h);transform-origin:50% 100%}.wb i:nth-child(-n+2){background:#b7d6c4}
.wp{display:grid;gap:8px}.wp i{display:block;height:10px;border-radius:4px;background:var(--mist);position:relative;overflow:hidden}.wp i::after{content:"";position:absolute;inset:0;width:var(--w);background:var(--green);border-radius:4px}
.wg{text-align:center}.wg svg{width:120px;margin:0 auto}.wg b{font-family:var(--head);font-size:20px;display:block;margin-top:-34px}.wg em{font-style:normal;font-size:10.5px;color:var(--mute);display:block;margin-top:14px}

/* services */
.services{background:#fff}
.sgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:1180px;margin:0 auto}
.sc{background:var(--mist);border-radius:var(--r);padding:22px;min-height:230px;display:flex;flex-direction:column;justify-content:space-between;gap:28px;transition:background .4s,transform .5s var(--ease)}
.sc:hover{background:var(--sky-2);transform:translateY(-4px)}
.sc h3{font-size:20px;letter-spacing:-.02em;margin-bottom:8px}
.sc p{font-size:13.5px;color:var(--ink-2)}.sc p b{color:var(--ink);font-weight:600}
.feature{max-width:1180px;margin:12px auto 0;position:relative;border-radius:var(--r);overflow:hidden;min-height:560px;display:flex;align-items:center;padding:clamp(16px,4vw,56px)}
.feature>img{position:absolute;inset:-8% 0;width:100%;height:116%;object-fit:cover}
.fcard{position:relative;background:#fff;border-radius:var(--r);padding:clamp(22px,2.6vw,38px);max-width:440px}
.fcard h3{font-size:clamp(24px,2.2vw,30px);margin-bottom:14px}
.fcard p{font-size:14px;color:var(--ink-2)}
.fcard ul{margin:20px 0 26px;display:grid;gap:10px}.fcard li{font-weight:600;font-size:14.5px;display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:10px}.fcard li span{color:var(--green-2);font-weight:500}

/* results (Windsor horizontal cards) */
.results{overflow:hidden}
.track{display:flex;gap:30px;padding-inline:var(--pad);width:max-content;will-change:transform}
.case{width:min(430px,82vw);flex:none;border-radius:6px;background:var(--card);padding:26px 30px;min-height:420px;display:flex;flex-direction:column;position:relative;overflow:hidden}
.case small{font-size:12.5px;color:var(--ink-2)}
.case h3{font-size:24px;color:var(--green);border-top:1px solid var(--line);margin-top:14px;padding-top:16px;font-weight:400}
.case .big{font-family:var(--head);font-size:clamp(46px,4.6vw,68px);letter-spacing:-.045em;line-height:1;margin-top:auto;padding-top:30px}
.case .big+small{margin-top:6px}
.case dl{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;margin-top:22px;border-top:1px solid var(--line);padding-top:16px}
.case dt{font-size:11px;color:var(--mute)}.case dd{font-size:16.5px;font-weight:500}
.case.img{color:#fff;background:var(--night)}
.case.img>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
.case.img>*:not(img){position:relative}
.case.img small,.case.img dt{color:rgba(255,255,255,.8)}.case.img h3{color:#fff;border-color:rgba(255,255,255,.4)}.case.img dl{border-color:rgba(255,255,255,.4)}
.res-foot{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--line);margin-top:40px;padding-top:18px;font-size:13px;color:var(--ink-2);flex-wrap:wrap}

/* estimator */
.estimate{background:#fff}
.est{display:grid;grid-template-columns:1fr 1.05fr;gap:12px;max-width:1180px;margin:0 auto}
.card{border-radius:var(--r-lg);padding:clamp(20px,2.4vw,34px)}
.card.light{background:var(--mist)}
.card.dark{background:var(--night);color:#fff}
.field{display:block;margin-bottom:18px}
.field>span{display:flex;justify-content:space-between;font-size:12.5px;font-weight:500;color:var(--ink-2);margin-bottom:8px}
.field>span output{color:var(--ink);font-weight:600}
select,input[type=text],input[type=email],input[type=number],textarea{width:100%;height:50px;border-radius:10px;border:1px solid var(--line);background:#fff;padding:0 14px;font:inherit;font-size:15.5px;color:var(--ink);appearance:none;-webkit-appearance:none}
select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%230d1f17' stroke-width='1.6'%3E%3Cpath d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}
input[type=range]{width:100%;height:28px;appearance:none;-webkit-appearance:none;background:transparent;border:0;padding:0}
input[type=range]::-webkit-slider-runnable-track{height:5px;border-radius:5px;background:#dbe6dc}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:var(--green);border:4px solid #fff;box-shadow:0 0 0 1px var(--line);margin-top:-9px}
input[type=range]::-moz-range-track{height:5px;border-radius:5px;background:#dbe6dc}
input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--green);border:4px solid #fff}
.k{font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.est-big{font-family:var(--head);font-size:clamp(46px,5.6vw,88px);letter-spacing:-.045em;line-height:1;margin:10px 0 6px;color:var(--lime)}
.est-range{color:rgba(255,255,255,.75);font-size:14px}
.est-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:24px 0}
.est-grid div{border-radius:10px;background:rgba(255,255,255,.08);padding:14px}
.est-grid b{display:block;font-family:var(--head);font-size:21px;font-weight:500;margin-top:6px}
.gauge{position:relative;background:rgba(255,255,255,.06);border-radius:14px;padding:16px;margin-bottom:24px}
.gauge-h{display:flex;justify-content:space-between;align-items:center}
.gpill{background:#fff;color:var(--ink);padding:6px 12px;border-radius:var(--pill);font-size:12px}
#eGauge{width:min(100%,340px);margin:12px auto 0}
#eGauge line{stroke:rgba(255,255,255,.85);stroke-width:13;stroke-linecap:round;transition:stroke .35s}
#eGauge line.on{stroke:var(--lime)}#eGauge line.on:nth-child(-n+6){stroke:#7fae56}
.gauge-c{position:absolute;left:0;right:0;bottom:14px;text-align:center}
.gauge-c b{display:block;font-family:var(--head);font-size:38px;font-weight:500;line-height:1}.gauge-c small{font-size:11.5px;color:rgba(255,255,255,.6)}
.fine{font-size:12px;line-height:1.45;color:var(--mute);margin-top:14px}.card.dark .fine{color:rgba(255,255,255,.55)}
.card.dark .btn{background:var(--lime);color:var(--ink)}.card.dark .btn .arr{background:var(--ink);color:var(--lime)}

/* leadership */
.lead-grid{display:grid;grid-template-columns:1.25fr repeat(3,1fr);gap:12px}
.lc{background:var(--card);border-radius:6px;padding:22px;min-height:190px;display:flex;flex-direction:column;justify-content:space-between}
.lc b{font-family:var(--head);font-size:20px;font-weight:500;letter-spacing:-.02em}.lc small{font-size:12.5px;color:var(--ink-2)}
.lc.f{grid-row:span 2;background:var(--night);color:#fff;position:relative;overflow:hidden;min-height:392px}
.lc.f img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.4}
.lc.f>*:not(img){position:relative}
.lc.f b{font-size:clamp(30px,3vw,44px);line-height:1}.lc.f small{color:rgba(255,255,255,.8)}.lc.f p{font-size:14px;color:rgba(255,255,255,.88);max-width:44ch}

/* faq (Windsor: centred narrow boxes) */
.faq-list{max-width:700px;margin:0 auto;display:grid;gap:8px}
.qa{background:var(--card);border-radius:6px}
.qa button{width:100%;display:flex;justify-content:space-between;gap:20px;align-items:center;text-align:left;padding:18px 20px;font-size:15.5px;color:var(--green)}
.qa .pm{position:relative;width:14px;height:14px;flex:none}
.qa .pm::before,.qa .pm::after{content:"";position:absolute;left:0;top:50%;width:14px;height:1.5px;background:currentColor;transition:transform .4s var(--ease)}
.qa .pm::after{transform:rotate(90deg)}.qa.open .pm::after{transform:rotate(0)}
.qa .a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease)}.qa.open .a{grid-template-rows:1fr}
.qa .a>div{overflow:hidden}.qa .a p{padding:0 20px 20px;font-size:14.5px;color:var(--ink-2)}

/* ring CTA (Windsor) */
.ring-sec{background:linear-gradient(180deg,var(--sky-1),var(--green-2) 22%,var(--deep) 55%,var(--night));min-height:120svh;display:grid;place-items:center;overflow:hidden;color:#fff}
.ring{position:relative;width:min(92vw,900px);aspect-ratio:1;display:grid;place-items:center}
.ring-spin{position:absolute;inset:0}
.ring-spin img{position:absolute;left:50%;top:50%;width:19%;aspect-ratio:1;object-fit:cover;border-radius:16%;margin:-9.5% 0 0 -9.5%;transform:rotate(calc(var(--i)*30deg)) translateY(-208%)}
.ring-c{position:relative;text-align:center;max-width:300px}
.ring-c h2{font-size:clamp(22px,2.4vw,32px);font-weight:400;line-height:1.15;margin-bottom:20px}

/* footer (SolarNova): links + white form card */
footer{background:var(--deep);color:#fff;padding:clamp(50px,6vw,90px) 0 26px}
.ft{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,5vw,80px);align-items:start}
.ft-brand{display:flex;align-items:center;gap:12px;font-family:var(--head);font-size:26px;font-weight:600;margin-bottom:44px}
.ft-brand span{width:50px;height:50px;border-radius:50%;background:var(--lime);display:grid;place-items:center}.ft-brand img{height:22px;filter:brightness(0)}
.ft-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.ft-cols h4{font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;font-weight:600;margin-bottom:16px}
.ft-cols a,.ft-cols p{display:block;font-size:14px;opacity:.85;line-height:2.2}.ft-cols a:hover{opacity:1}
.form{background:#fff;color:var(--ink);border-radius:var(--r);padding:clamp(22px,2.6vw,38px)}
.form h3{font-size:clamp(24px,2.2vw,30px);margin-bottom:8px}.form>p{font-size:14px;color:var(--ink-2);margin-bottom:22px}
.form .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.form .field{margin-bottom:10px}
.form .btn{width:100%;justify-content:space-between;margin-top:8px;background:var(--green)}
.form-msg{margin-top:12px;font-size:14px;display:none;padding:12px 14px;border-radius:10px}
.form-msg.ok{display:block;background:#dfeee0;color:#173d22}.form-msg.err{display:block;background:#f7e4dc;color:#6b2412}
.hp{position:absolute;left:-9999px}
.ft-line{font-family:var(--head);font-size:clamp(24px,2.6vw,38px);letter-spacing:-.03em;line-height:1.12;margin-top:36px;max-width:22ch}
.ft-bot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:60px;font-size:13px;opacity:.85}
.mcta{display:none}

@media (max-width:1100px){
  .nav-links{display:none}.burger{display:grid}.nav .btn{display:none}
  .shead{grid-template-columns:1fr;gap:16px}
  .about-grid,.est,.ft{grid-template-columns:1fr}
  .tri,.sgrid{grid-template-columns:1fr}
  .nums{grid-template-columns:1fr 1fr}.nums>div:nth-child(2){border-right:0}.nums>div:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .kpis{grid-template-columns:1fr 1fr}.dash{grid-template-columns:1fr}.dash-side{display:none}.dash-g{grid-template-columns:1fr}
  .lead-grid{grid-template-columns:1fr 1fr}.lc.f{grid-column:1/-1;grid-row:auto}
  .pc{grid-template-columns:1fr;position:relative;top:0}.pc-m{min-height:300px}
  .hero-stats{display:none}.hero-note{text-align:left}
}
@media (max-width:900px){
  .tech-pin{height:auto;padding-bottom:60px}.tech-bg img:first-child{opacity:1}
  .tcards{grid-template-columns:1fr;margin-top:40px}.tc{min-height:0;margin-top:0!important;opacity:1!important;transform:none!important}
  .track{width:auto;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding-bottom:10px}.case{scroll-snap-align:center}
  .ring-sec{min-height:90svh}.ring-spin img{width:22%;margin:-11% 0 0 -11%;transform:rotate(calc(var(--i)*30deg)) translateY(-190%)}
  .rbars{gap:10px;height:150px}.rlab{gap:10px}
}
@media (max-width:640px){
  .est-grid,.form .two,.ft-cols{grid-template-columns:1fr}
  .lead-grid{grid-template-columns:1fr}
  .about-img{min-height:380px}
  .mcta{display:flex;position:fixed;left:12px;right:12px;bottom:12px;z-index:90;gap:8px;transform:translateY(140%);transition:transform .6s var(--ease)}
  .mcta.show{transform:none}
  .mcta a{flex:1;height:52px;border-radius:var(--pill);display:grid;place-items:center;font-weight:600;font-size:15px;background:var(--lime);color:var(--ink)}
  .mcta a:last-child{flex:0 0 52px;background:var(--night);color:#fff}
  footer{padding-bottom:84px}
}
@media (prefers-reduced-motion:reduce){
  .mq-t{animation:none}.js [data-reveal]{opacity:1;transform:none}.pre{display:none!important}
  .js .about-card p.big .fw{opacity:1}
}
.about-dark b{white-space:nowrap}.about-dark span{min-width:0}

/* ===== v3.1 — three sections modelled on the Ecospire reference ===== */
/* approach: giant word, building rises in front of it, callouts pop in */
.approach{background:#f7f8f4}
.ap-pin{height:100svh;min-height:640px;position:relative;overflow:hidden;display:grid;place-items:center}
.ap-tag{position:absolute;left:var(--pad);top:110px}
.ap-word{position:absolute;inset:0;display:grid;place-items:center;font-size:clamp(70px,17vw,300px);font-weight:500;letter-spacing:-.04em;text-transform:uppercase;color:var(--ink);line-height:1}
.ap-obj{position:relative;width:min(58vw,820px);z-index:2}
.ap-obj>img{width:100%;filter:drop-shadow(0 40px 50px rgba(13,31,23,.28))}
.ap-l{position:absolute;display:flex;align-items:center;gap:10px;white-space:nowrap;padding:8px 14px;border-radius:999px;background:linear-gradient(90deg,rgba(255,255,255,.95),rgba(255,255,255,.7));box-shadow:0 10px 30px -12px rgba(13,31,23,.4);font-size:12px;transform:translate(-50%,-50%)}
.ap-l.l{flex-direction:row-reverse;transform:translate(-100%,-50%)}.ap-l.r{transform:translate(0,-50%)}
.ap-l i{width:20px;height:20px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 5px rgba(217,243,91,.35);flex:none;position:relative}
.ap-l i::after{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--green)}
.ap-l b{font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-size:11.5px}
.ap-l small{color:var(--ink-2);font-size:11.5px}
.ap-foot{position:absolute;left:0;right:0;bottom:34px;text-align:center;font-size:13.5px;color:var(--ink-2)}

/* proven performance: faint giant marquee, image cards drift past at different speeds */
.proven{background:#f7f8f4;position:relative;height:300vh}
.pv-stick{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden}
.pv-mq{display:flex;white-space:nowrap;animation:mq 30s linear infinite;font-family:var(--head);font-size:clamp(80px,13vw,220px);font-weight:500;letter-spacing:-.03em;text-transform:uppercase;color:rgba(13,31,23,.09);line-height:1}
.pv-mq span{flex:none}
.pv-cards{position:absolute;inset:0}
.pp{position:absolute;margin:0;width:var(--w)}
.pp img{width:100%;aspect-ratio:var(--ar,4/5);object-fit:cover}
.pp figcaption{padding-top:10px;display:grid;gap:2px}
.pp small{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}
.pp b{font-family:var(--head);font-size:16px;font-weight:500;letter-spacing:.01em;text-transform:uppercase}
.pp span{font-size:13px;color:var(--green-2)}
.p1{--w:17vw;--ar:16/9;left:54%;top:10%}.p2{--w:13vw;left:82%;top:24%}.p3{--w:14vw;left:5%;top:36%}
.p4{--w:15vw;left:55%;top:50%}.p5{--w:11vw;--ar:1;left:30%;top:66%}.p6{--w:16vw;--ar:16/10;left:74%;top:78%}

/* measured change: pinned, rolling figure, vertical progress line */
.change{background:#f7f8f4}
.ch-pin{height:100svh;min-height:600px;position:relative;display:grid;grid-template-columns:1fr 1px 1.4fr;align-items:center;gap:0;padding:0 var(--pad)}
.ch-tag{position:absolute;left:var(--pad);top:110px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.ch-img{position:relative;width:min(26vw,360px);aspect-ratio:1/1.15;justify-self:center;transform:perspective(900px) rotateY(14deg) rotateX(2deg)}
.ch-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .6s}.ch-img img.on{opacity:1}
.ch-line{height:70vh;background:rgba(13,31,23,.25);position:relative}
.ch-line i{position:absolute;left:-1px;top:0;width:3px;height:100%;background:var(--lime-2);transform-origin:50% 0;transform:scaleY(.05)}
.ch-r{text-align:center}
.ch-lab{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);max-width:40ch;margin:0 auto}
.ch-num{font-family:var(--head);font-size:clamp(90px,15vw,240px);font-weight:500;letter-spacing:.02em;line-height:1.05;overflow:hidden;display:flex;justify-content:center}
.ch-num span{display:inline-block}.ch-num em{font-style:normal}
.ch-src{font-size:13.5px;color:var(--green-2)}
.ch-keep{position:absolute;right:var(--pad);bottom:34px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}

@media (max-width:900px){
  .ap-pin{height:auto;min-height:0;display:block;padding:90px var(--pad) 50px}
  .ap-tag{position:static;margin-bottom:10px}
  .ap-word{position:static;display:block;font-size:19vw;margin-bottom:10px}
  .ap-obj{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .ap-obj>img{grid-column:1/-1}
  .ap-l,.ap-l.l,.ap-l.r{position:static;transform:none!important;opacity:1!important;white-space:normal;flex-direction:row;border-radius:12px;flex-wrap:wrap;gap:6px 8px}
  .ap-l small{flex-basis:100%}
  .ap-foot{position:static;margin-top:20px}
  .proven{height:auto;padding:70px var(--pad)}
  .pv-stick{position:absolute;inset:0;height:auto;align-items:flex-start;padding-top:20px}
  .pv-cards{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:26px 12px;padding-top:70px}
  .pp{position:static;width:auto;transform:none!important}
  .ch-pin{height:auto;min-height:0;grid-template-columns:1fr;gap:24px;padding:90px var(--pad) 60px}
  .ch-tag{position:static}.ch-line,.ch-keep{display:none}.ch-img{width:60vw}
}
@media (min-width:901px){
  .ap-obj{width:min(50vw,720px);margin-top:6vh}
  .p1{--w:21vw}.p2{--w:16vw}.p3{--w:17vw}.p4{--w:19vw}.p5{--w:14vw}.p6{--w:20vw;left:70%}
}

/* ===== v4 — optimisation pass: motion, new section, lighter pins ===== */
.shead::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--line);transform-origin:0 50%;transform:scaleX(var(--d,1))}
.progress{position:fixed;left:0;right:0;top:0;height:3px;z-index:150;pointer-events:none}
.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--green-2),var(--lime));transform-origin:0 50%;transform:scaleX(0)}
.nav-links a{position:relative}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;border-radius:2px;background:var(--green);transform:scaleX(0);transform-origin:0 50%;transition:transform .5s var(--ease)}
.nav-links a.active{opacity:1}.nav-links a.active::after{transform:scaleX(1)}

/* hero: rotating keyword, scroll cue */
.hero-rot{font-family:var(--head);font-size:clamp(18px,1.9vw,28px);letter-spacing:-.02em;margin-top:18px;display:flex;gap:.5em;align-items:center}
.rot{display:inline-grid;overflow:hidden;vertical-align:middle;background:var(--lime);color:var(--ink);border-radius:var(--pill);padding:.12em .7em .2em}
.rot i{grid-area:1/1;font-style:normal;text-align:center;will-change:transform}
.cue{position:absolute!important;left:50%;bottom:26px;display:flex;flex-direction:column;align-items:center;gap:10px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;opacity:.85;transform:translateX(-50%)}
.cue i{display:block;width:1px;height:42px;background:rgba(255,255,255,.35);position:relative;overflow:hidden}
.cue i::after{content:"";position:absolute;left:0;top:-100%;width:100%;height:100%;background:#fff;animation:cue 2.2s var(--ease) infinite}
@keyframes cue{0%{top:-100%}60%,100%{top:100%}}
@media (max-width:640px){.cue{display:none!important}}

/* card spotlight that follows the pointer */
.spot{position:relative;overflow:hidden;isolation:isolate}
.spot::after{content:"";position:absolute;inset:0;z-index:-1;opacity:0;transition:opacity .4s;background:radial-gradient(360px circle at var(--mx,50%) var(--my,50%),rgba(217,243,91,.38),transparent 60%);pointer-events:none}
@media (hover:hover){.spot:hover::after{opacity:1}}
.lc.f.spot::after{display:none}

/* results progress */
.res-prog{height:2px;background:var(--line);margin-top:34px;overflow:hidden;border-radius:2px}
.res-prog i{display:block;height:100%;background:var(--green);transform-origin:0 50%;transform:scaleX(0)}
.res-prog+.res-foot{margin-top:18px}

/* footer wordmark */
.ft-mark{font-family:var(--head);font-weight:500;letter-spacing:-.05em;line-height:.8;font-size:clamp(60px,15.6vw,250px);text-align:center;white-space:nowrap;margin-top:clamp(40px,5vw,70px);color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.22);user-select:none;overflow:hidden;padding-bottom:.06em}
.ft-mark span{display:inline-block}
@media (max-width:640px){.ft-mark{-webkit-text-stroke-color:rgba(255,255,255,.3)}}

/* pilot: before / after load curve */
.pilot{background:#fff;padding-top:clamp(40px,5vw,70px)}
.ba{max-width:1180px;margin:0 auto;background:var(--night);color:#fff;border-radius:var(--r-lg);padding:clamp(16px,2.2vw,30px);overflow:hidden}
.ba-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.ba-head b{font-family:var(--head);font-weight:500;font-size:clamp(18px,1.6vw,22px);letter-spacing:-.02em}
.ba-note{font-size:12px;color:rgba(255,255,255,.65);border:1px solid rgba(255,255,255,.2);padding:6px 12px;border-radius:var(--pill)}
.ba-plot{position:relative;height:clamp(240px,30vw,360px);border-radius:12px;background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02));overflow:hidden;touch-action:pan-y}
.ba-plot>svg{position:absolute;inset:0;width:100%;height:100%}
.ba-grid line{stroke:rgba(255,255,255,.1);stroke-width:1;vector-effect:non-scaling-stroke;stroke-dasharray:4 6}
.ba-before .area{fill:rgba(255,255,255,.1)}.ba-before .line{stroke:rgba(255,255,255,.7)}
.ba-after .area{fill:rgba(217,243,91,.2)}.ba-after .line{stroke:var(--lime)}
.ba .line{fill:none;stroke-width:3;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.ba-tag{position:absolute;top:14px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:5px 11px;border-radius:var(--pill);background:rgba(255,255,255,.1)}
.ba-tag.l{left:14px;color:var(--lime)}.ba-tag.r{right:14px}
.ba-handle{position:absolute;top:0;bottom:0;left:var(--x);width:2px;margin-left:-1px;background:#fff;pointer-events:none}
.ba-handle span{position:absolute;top:50%;left:50%;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:var(--lime);color:var(--night);display:grid;place-items:center;box-shadow:0 0 0 7px rgba(217,243,91,.22),0 10px 30px -8px rgba(0,0,0,.6);animation:pulse 2.4s ease-in-out infinite}
.ba-handle svg{width:16px;height:16px}
@keyframes pulse{50%{box-shadow:0 0 0 13px rgba(217,243,91,0),0 10px 30px -8px rgba(0,0,0,.6)}}
.ba-read{position:absolute;left:var(--x);bottom:16px;transform:translateX(18px);background:#fff;color:var(--ink);border-radius:10px;padding:8px 14px;white-space:nowrap}
.ba-read small{display:block;font-size:10.5px;color:var(--mute)}.ba-read b{font-family:var(--head);font-size:24px;font-weight:600;color:var(--green-2);letter-spacing:-.03em}
.ba-plot input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.ba-plot:focus-within .ba-handle span{outline:2px solid #fff;outline-offset:3px}
.ba-axis{display:flex;justify-content:space-between;font-size:11px;color:rgba(255,255,255,.55);padding:10px 4px 0}
.ba-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:20px}
.ba-kpis div{background:rgba(255,255,255,.07);border-radius:10px;padding:16px 18px}
.ba-kpis small{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--lime)}
.ba-kpis b{display:block;font-family:var(--head);font-weight:500;font-size:18px;margin:6px 0}
.ba-kpis p{font-size:13px;color:rgba(255,255,255,.7);line-height:1.45}
@media (max-width:760px){.ba-kpis{grid-template-columns:1fr}.ba-read{transform:translateX(-50%);left:50%;bottom:10px}}

/* process widget fills animate from 0 */
.wp i::after{transform:scaleX(var(--p,1));transform-origin:0 50%}

@media (hover:none){.spot::after{display:none}}
@media (prefers-reduced-motion:reduce){.cue i::after,.ba-handle span{animation:none}.shead::before{transform:none}.rot i:not(:first-child){display:none}}

/* ===== v4.1 — client logo strip, menu, polish ===== */
.mq.logos .mq-t{gap:56px;padding-right:56px;animation-duration:46s}
.lg{display:inline-flex;align-items:center;gap:12px;color:var(--ink-2);transition:color .3s}
.lg svg{width:30px;height:30px;fill:currentColor;flex:none}
.lg .mono{width:30px;height:30px;border-radius:8px;border:1.5px solid currentColor;display:grid;place-items:center;font-style:normal;font-family:var(--head);font-size:11px;font-weight:600;letter-spacing:-.02em;flex:none}
.lg b{font-weight:500;white-space:nowrap}
.mq.logos:hover .mq-t{animation-play-state:paused}
.lg:hover{color:var(--green)}
.logo-note{font-size:11.5px;color:var(--mute);margin-top:22px;text-align:center}
/* burger morphs to a close icon */
.burger i{transition:transform .4s var(--ease),box-shadow .3s}
.burger[aria-expanded="true"] i{transform:rotate(45deg);box-shadow:none}
.burger[aria-expanded="true"] i::after{content:"";position:absolute;inset:0;background:var(--ink);transform:rotate(-90deg)}
.burger i{position:relative}
.menu a:not(.btn){opacity:0;transform:translateY(20px);transition:opacity .5s,transform .6s var(--ease)}
.menu.open a:not(.btn){opacity:1;transform:none}
.menu.open a:nth-child(2){transition-delay:.05s}.menu.open a:nth-child(3){transition-delay:.1s}.menu.open a:nth-child(4){transition-delay:.15s}.menu.open a:nth-child(5){transition-delay:.2s}
@media (max-width:640px){.mq.logos .mq-t{gap:36px;padding-right:36px}.lg svg,.lg .mono{width:24px;height:24px}}

/* ===== v5 — "our approach" line drawing ===== */
.approach{background:#f7f8f4;background-image:linear-gradient(rgba(23,87,59,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(23,87,59,.05) 1px,transparent 1px);background-size:28px 28px}
.ap-word{color:rgba(13,31,23,.07);transition:opacity .3s}
.ap-obj{width:min(48vw,820px,calc((100svh - 230px) * var(--ar,1.1)))!important;margin-top:-2vh!important}
#apObj .ap-l{font-size:11.5px;padding:7px 12px}
#apObj .ap-l small{max-width:none}
.ap-foot{bottom:22px!important}
.apx{width:100%;height:auto;display:block;overflow:visible;--dr:1;--fo:0;--go:0}
.apx .ln{fill:none;stroke:#1f4436;stroke-width:.55;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:var(--dr)}
.apx .f{fill-opacity:var(--fo);transition:fill .7s}
.apx .t{fill:#fbfcf9}.apx .l{fill:#eef2ec}.apx .r{fill:#e1e8df}
.apx .slab.t{fill:#e9eee6}.apx .slab.l,.apx .slab.r{fill:#d6dfd3}
.apx .wall{fill:#f2f5ef}.apx .wall2{fill:#e9eee6}
.apx .cut,.apx .cutwall.t{fill:url(#apHatch)}
.apx .cutwall.l{fill:#e4ebe1}.apx .cutwall.r{fill:#d8e1d5}
.apx .roofslab.t{fill:#f6f8f4}.apx .roofslab.l{fill:#e6ece3}.apx .roofslab.r{fill:#d9e2d6}
.apx .grid{stroke:#1f4436;stroke-width:.25;opacity:.35}
.apx .thin{stroke-width:.4}
.apx .glass{fill:#dff1e8}
.apx .door{fill:#edf2ea}
.apx .screen{fill:#1f4436}
.apx .bar{stroke:#d9f35b;stroke-width:.9}
.apx .pipe{stroke:#2d6a4f;stroke-width:1.1}
.apx .fan,.apx .vent{fill:#e4eae1}.apx .hub{fill:#1f4436}
.apx .lamp{fill:#fbfcf9}
.apx .guide{stroke-dasharray:1.6 1.6;stroke-dashoffset:0;stroke-width:.4;opacity:var(--go)}
.apx .shadow{fill:rgba(13,31,23,.12);filter:blur(6px)}
.apx .cone{fill:url(#apCone);opacity:0;transition:opacity .8s}
/* zones light up in lime when their technology is called out */
.apx .zone.on .t{fill:#eef9c4}.apx .zone.on .l{fill:#dcf09a}.apx .zone.on .r{fill:#c8e277}
.apx .zone.on .glass{fill:#cdeee0}.apx .zone.on .door{fill:#e3f4a8}.apx .zone.on .fan{fill:#e3f4a8}
.apx .zone.on .pipe{stroke:#5aa83a;stroke-width:1.5}
.apx .zone.on .cone{opacity:1}.apx .zone.on .lamp{fill:#f4ffc9}
.apx .lead path{fill:none;stroke:#1f4436;stroke-width:.4;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .7s var(--ease)}
.apx .lead circle{fill:#1f4436;opacity:0;transition:opacity .4s}
.apx .lead .ring{fill:none;stroke:#7fae56;stroke-width:.5}
.apx .lead.on path{stroke-dashoffset:0}.apx .lead.on circle{opacity:1}
.apx .lead.on .ring{animation:apRing 2.2s ease-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes apRing{0%{transform:scale(1);opacity:.9}100%{transform:scale(4);opacity:0}}
#apObj .ap-l{opacity:0;transition:opacity .5s,transform .6s var(--ease)}
#apObj .ap-l.l{transform:translate(-100%,-50%) translateX(-10px)}
#apObj .ap-l.r{transform:translate(0,-50%) translateX(10px)}
#apObj .ap-l.on{opacity:1}
#apObj .ap-l.on.l{transform:translate(-100%,-50%)}#apObj .ap-l.on.r{transform:translate(0,-50%)}
#apObj .ap-l small em{font-style:normal;font-weight:600;color:var(--green)}
@media (max-width:900px){
  .ap-obj{width:100%!important;margin-top:0!important}
  .ap-obj>svg{grid-column:1/-1;margin-bottom:10px}
  #apObj .ap-l,#apObj .ap-l.l,#apObj .ap-l.r{position:static;transform:none!important;opacity:1}
}
@media (prefers-reduced-motion:reduce){.apx .lead.on .ring{animation:none}}

/* results: when pinned, heading + full cards sit centred in the screen, sized to fit its height */
@media (min-width:901px){
  .results{min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding-block:clamp(84px,11vh,120px) clamp(24px,4vh,48px)}
  .results>.wrap{width:100%}
  .results .shead{margin-bottom:clamp(18px,3.5vh,44px)}
  .case{min-height:0;height:clamp(300px,calc(100svh - 380px),440px);padding:clamp(18px,2.6vh,26px) 28px}
  .case .big{padding-top:clamp(12px,2vh,30px)}
  .case dl{margin-top:clamp(12px,2vh,22px)}
  .res-prog{margin-top:clamp(18px,3vh,34px)}
}

/* ===== industries: pick your business ===== */
.industries{background:#fff}
.ind-lead{max-width:56ch;margin:-14px 0 clamp(24px,3vw,40px)}
.ind{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:12px}
.ind-tabs{display:flex;flex-direction:column;gap:6px}
.ind-tabs button{display:flex;justify-content:space-between;align-items:center;text-align:left;padding:18px 20px;border-radius:var(--r);background:var(--mist);font-family:var(--head);font-size:clamp(17px,1.4vw,21px);letter-spacing:-.02em;color:var(--ink-2);transition:background .35s,color .35s,transform .5s var(--ease)}
.ind-tabs button i{font-style:normal;font-size:12px;color:var(--mute);font-family:var(--body)}
.ind-tabs button:hover{background:var(--sky-2);transform:translateX(4px)}
.ind-tabs button[aria-selected="true"]{background:var(--night);color:#fff}
.ind-tabs button[aria-selected="true"] i{color:var(--lime)}
.ind-panels{position:relative;min-height:440px}
.ind-p{display:grid;grid-template-columns:1fr 1.05fr;gap:12px;height:100%}
.ind-p[hidden]{display:none}
.ind-img{margin:0;border-radius:var(--r);overflow:hidden;position:relative;min-height:440px}
.ind-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ind-c{background:var(--card);border-radius:var(--r);padding:clamp(22px,2.6vw,38px);display:flex;flex-direction:column}
.ind-pain{font-family:var(--head);font-size:clamp(19px,1.7vw,25px);line-height:1.3;letter-spacing:-.02em}
.ind-k{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--green);margin:26px 0 10px}
.ind-tech{display:flex;flex-wrap:wrap;gap:6px}
.ind-tech li{display:flex;gap:8px;align-items:center;padding:8px 12px;border-radius:var(--pill);background:#fff;border:1px solid var(--line);font-size:13px}
.ind-tech li b{font-weight:600}.ind-tech li span{color:var(--green-2)}
.ind-proof{margin:auto 0 22px;padding-top:26px;border-top:1px solid var(--line);margin-top:26px}
.ind-proof small{display:block;font-size:12.5px;color:var(--mute)}
.ind-proof b{display:block;font-family:var(--head);font-weight:500;font-size:clamp(40px,4vw,60px);letter-spacing:-.045em;line-height:1.05;color:var(--green-2);margin:6px 0 4px}
.ind-proof span{font-size:14px;color:var(--ink-2)}
.ind-c .btn{align-self:flex-start}
@media (max-width:1100px){.ind{grid-template-columns:1fr}.ind-tabs{flex-direction:row;overflow-x:auto;scrollbar-width:none;padding-bottom:4px}.ind-tabs button{flex:none;font-size:15px;padding:12px 16px;gap:12px}.ind-tabs button:hover{transform:none}}
@media (max-width:760px){.ind-p{grid-template-columns:1fr}.ind-img{min-height:220px}.ind-panels{min-height:0}}

/* ===== v6 — approach: building + numbered list, corporate ===== */
.ap-pin{display:grid!important;grid-template-columns:minmax(300px,.8fr) 1.2fr;align-items:center;gap:clamp(24px,4vw,64px);padding:clamp(90px,11vh,120px) var(--pad) clamp(30px,5vh,50px);place-items:initial;max-width:1480px;margin:0 auto}
.ap-txt{align-self:center}
.ap-txt .h2c{font-size:clamp(28px,2.8vw,44px);margin:16px 0 12px;max-width:16ch}
.ap-txt .lead{max-width:40ch}
.ap-list{margin-top:clamp(18px,3vh,30px);display:grid;gap:4px;counter-reset:none}
.ap-list li{display:grid;grid-template-columns:28px 1fr auto;gap:14px;align-items:center;padding:10px 12px;border-radius:10px;opacity:.5;transition:opacity .5s,background .5s}
.ap-list li i{width:28px;height:28px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;font-style:normal;font-size:12.5px;font-weight:600;color:var(--ink-2);transition:background .5s,border-color .5s,color .5s}
.ap-list li b{display:block;font-weight:600;font-size:15px;color:var(--ink)}
.ap-list li small{font-size:12.5px;color:var(--mute)}
.ap-list li em{font-style:normal;font-family:var(--head);font-weight:500;font-size:17px;color:var(--green-2);white-space:nowrap}
.ap-list li.on{opacity:1;background:#fff;box-shadow:0 8px 24px -16px rgba(13,31,23,.35)}
.ap-list li.on i{background:var(--lime);border-color:var(--lime);color:var(--ink)}
.ap-foot{position:static!important;text-align:left!important;margin-top:16px;font-size:12.5px;color:var(--mute);max-width:46ch}
.ap-obj{width:100%!important;max-width:calc((100svh - 150px) * var(--ar,1.15));margin:0 auto!important;justify-self:center}
.apx .facade{fill:#dbece5;fill-opacity:calc(var(--fo) * .45)}
.apx .mull{stroke-width:.45}
.apx .entry{fill:#cfe6dc}
.apx .canopy.t,.apx .cap.t{fill:#f6f8f4}.apx .canopy.l,.apx .canopy.r,.apx .cap.l,.apx .cap.r{fill:#dfe6dc}
.apx .pin{opacity:var(--po,0)}
.apx .pin .pc{fill:#fff;stroke:#1f4436;stroke-width:.5;transition:fill .4s}
.apx .pin text{font-family:var(--head);font-size:5.6px;font-weight:600;fill:#1f4436}
.apx .pin .pr{fill:none;stroke:#7fae56;stroke-width:.6;opacity:0}
.apx .pin.on .pc{fill:#d9f35b;stroke:#1f4436}
.apx .pin.on .pr{animation:apRing 2.2s ease-out infinite;transform-box:fill-box;transform-origin:center}
@media (max-width:900px){
  .ap-pin{grid-template-columns:1fr;padding:80px var(--pad) 50px}
  .ap-obj{order:-1;max-width:none}
  .ap-txt .h2c{max-width:none}
  .ap-list li{opacity:1}
}
@media (prefers-reduced-motion:reduce){.apx .pin.on .pr{animation:none}}

/* ghost roof: see-through once lifted so the back wall and its markers read clearly */
.apx .roofslab.t,.apx .roofslab.l,.apx .roofslab.r{fill-opacity:calc(var(--fo) * (1 - var(--go) * .7))}
.apx .roofslab{stroke-opacity:.7}
.apx .zone[data-k="syncat"] .pipe{stroke-width:1.4}
@keyframes apPin{0%{transform:scale(1);opacity:.9}100%{transform:scale(2.1);opacity:0}}
.apx .pin.on .pr{animation-name:apPin}
@media (min-width:901px) and (max-height:820px){
  .ap-pin{padding-top:84px;padding-bottom:20px}
  .ap-txt .h2c{font-size:clamp(26px,2.4vw,36px);margin:10px 0 8px}
  .ap-txt .lead{font-size:14.5px}
  .ap-list{margin-top:12px;gap:2px}
  .ap-list li{padding:6px 10px}
  .ap-list li b{font-size:14px}.ap-list li small{font-size:12px}.ap-list li em{font-size:15px}
  .ap-foot{display:none}
}
@media (max-width:900px){
  .ap-txt{display:contents}
  .ap-txt .label{order:1}.ap-txt .h2c{order:2;margin:10px 0 6px}.ap-txt .lead{order:3;margin-bottom:8px}
  .ap-obj{order:4!important}.ap-list{order:5}.ap-foot{order:6}
  .ap-pin{gap:12px}
}

/* ===== v7 — hero headline, plain eyebrows, smoother reveals ===== */
.hero-h{max-width:none!important;font-size:clamp(40px,5.4vw,84px)}
.hero-h [data-hero-split]{display:block}
.rot{display:grid!important;background:none!important;padding:0!important;border-radius:0!important;overflow:hidden;color:var(--lime);white-space:nowrap;margin:0!important;padding-bottom:.08em!important}
.rot i{grid-area:1/1;font-style:normal;text-align:left!important;color:var(--lime)}
@media (max-width:640px){.hero-h{font-size:clamp(34px,10vw,46px)}}
/* eyebrows: one style everywhere, no pills */
.label.eyebrow{justify-content:center;margin-bottom:18px}
.chead .label.eyebrow{display:inline-flex}
.pc-t .label.eyebrow{justify-content:flex-start;margin-bottom:0}
.ch-tag.label{font-size:11.5px}
.js [data-reveal]{transform:translateY(40px)}

/* ===== v7 — colour-coded zones (1–6), store fittings ===== */
[data-k="hvac"]{--zc:#3f7fe0}[data-k="syncat"]{--zc:#7b5ce6}[data-k="energ"]{--zc:#1aa6c4}
[data-k="ecm"]{--zc:#12997a}[data-k="led"]{--zc:#e9a514}[data-k="ems"]{--zc:#6aa52a}
.apx .zone.on .t{fill:color-mix(in srgb,var(--zc) 22%,#fff)}
.apx .zone.on .l{fill:color-mix(in srgb,var(--zc) 34%,#fff)}
.apx .zone.on .r{fill:color-mix(in srgb,var(--zc) 48%,#fff)}
.apx .zone.on .glass{fill:color-mix(in srgb,var(--zc) 18%,#eef6f2)}
.apx .zone.on .door,.apx .zone.on .fan{fill:color-mix(in srgb,var(--zc) 30%,#fff)}
.apx .zone.on .screen{fill:color-mix(in srgb,var(--zc) 70%,#0d1f17)}
.apx .zone.on .ln{stroke:color-mix(in srgb,var(--zc) 70%,#0d1f17)}
.apx .zone.on .pipe{stroke:var(--zc);stroke-width:1.6}
.apx .glowf{fill:var(--zc,#e9a514);opacity:0;transition:opacity .8s}
.apx .zone.on .glowf{opacity:.22}
.apx .lightbar.t{fill:#fbfcf9}
.apx .zone.on .lightbar.t,.apx .zone.on .lightbar.l,.apx .zone.on .lightbar.r{fill:#ffe9a8}
.apx .fixture.t{fill:#fbfcf9}.apx .fixture.l{fill:#eef2ec}.apx .fixture.r{fill:#e1e8df}
.apx .facade{fill:#d8ebe3;fill-opacity:calc(var(--fo) * .28)}
.apx .pin.on .pc{fill:var(--zc);stroke:#fff;stroke-width:.8}
.apx .pin.on text{fill:#fff}
.apx .pin.on .pr{stroke:var(--zc)}
.ap-list li.on i{background:var(--zc);border-color:var(--zc);color:#fff}
.ap-list li em{color:color-mix(in srgb,var(--zc) 80%,#0d1f17)}
.ap-list li.on{box-shadow:inset 3px 0 0 var(--zc),0 8px 24px -16px rgba(13,31,23,.35)}

/* ===== v7 — portfolio: cards size to their content, type scales with screen height ===== */
@media (min-width:901px){
  .results .shead{margin-bottom:clamp(16px,3vh,40px)}
  .case{height:auto!important;min-height:0;padding:clamp(18px,2.4vh,26px) clamp(20px,2vw,30px);gap:0}
  .case h3{font-size:clamp(19px,2.4vh,24px);margin-top:clamp(8px,1.4vh,14px);padding-top:clamp(10px,1.6vh,16px)}
  .case .big{font-size:clamp(38px,6.6vh,66px);padding-top:clamp(14px,3vh,34px)}
  .case dl{gap:clamp(8px,1.2vh,12px) 20px;margin-top:clamp(12px,2vh,22px);padding-top:clamp(10px,1.6vh,16px)}
  .case dd{font-size:clamp(14px,1.9vh,16.5px)}
  .res-prog{margin-top:clamp(16px,2.6vh,34px)}
  .res-prog+.res-foot{margin-top:clamp(10px,1.6vh,18px);padding-top:clamp(10px,1.6vh,18px)}
}
@media (min-width:901px) and (max-height:639px){
  .results{min-height:0}
  .track{width:auto;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding-bottom:10px}.case{scroll-snap-align:start}
}
.case.img>img{opacity:.42}
.case.img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,19,14,.35),rgba(8,19,14,.15) 40%,rgba(8,19,14,.75));pointer-events:none}
.case.img>*:not(img){z-index:1}
.ind-proof.bench b{font-size:clamp(34px,3.4vw,52px)}
.ind-proof em{display:block;font-style:normal;font-size:11.5px;color:var(--mute);margin-top:8px}

/* ===== v8 — calmer palette (blues, greens, warm light) and visible lighting ===== */
[data-k="hvac"]{--zc:#3e6f9e}[data-k="syncat"]{--zc:#5d86a8}[data-k="energ"]{--zc:#6aa6bf}
[data-k="ecm"]{--zc:#3f8a73}[data-k="led"]{--zc:#d9a62e}[data-k="ems"]{--zc:#2d6a4f}
.apx .zone.on .t{fill:color-mix(in srgb,var(--zc) 16%,#fff)}
.apx .zone.on .l{fill:color-mix(in srgb,var(--zc) 26%,#fff)}
.apx .zone.on .r{fill:color-mix(in srgb,var(--zc) 38%,#fff)}
.apx .zone.on .ln{stroke:color-mix(in srgb,var(--zc) 55%,#1f4436)}
.apx .lightbar.t,.apx .lightbar.l,.apx .lightbar.r{fill:#fbfcf9}
.apx .beam{fill:#f3d374;opacity:0;transition:opacity .9s}
.apx .pool{fill:#f3d374;opacity:0;transition:opacity .9s}
.apx .zone[data-k="led"].on .beam{opacity:.16}
.apx .zone[data-k="led"].on .pool{opacity:.32}
.apx .zone[data-k="led"].on .lightbar.l,.apx .zone[data-k="led"].on .lightbar.r{fill:#ffe39a}
.apx .zone[data-k="led"].on .lightbar.t{fill:#fff4cf}
.apx .zone[data-k="led"].on .ln{stroke:#a7832a}

.apx .beam{fill:url(#apBeam)}
.apx .pool{fill:url(#apPool)}
.apx .zone[data-k="led"].on .beam{opacity:.55}
.apx .zone[data-k="led"].on .pool{opacity:.7}
.apx .ceil{fill:none;stroke:#1f4436;stroke-width:.35;stroke-dasharray:1.4 1.6;opacity:calc(var(--go) * .55)}

/* ===== v9 — sleek nav: logo · phone · Check your savings · Request an assessment ===== */
.nav-r{display:flex;align-items:center;gap:10px}
.nav .tel{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 16px;border-radius:var(--pill);border:1px solid var(--line);background:rgba(255,255,255,.55);font-size:13.5px;font-weight:500;transition:border-color .3s,background .3s}
.nav .tel:hover{border-color:var(--green);background:#fff}
.nav .tel svg,.btn.ghost svg{width:16px;height:16px;flex:none}
.nav .tel svg{color:var(--green)}
.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line);padding:0 18px;gap:8px;transition:border-color .3s,background .3s}
.btn.ghost:hover{border-color:var(--green)}
.btn.ghost svg{color:var(--green)}
@media (max-width:1100px){.nav .btn{display:inline-flex}}
@media (max-width:860px){.nav .tel span{display:none}.nav .tel{width:44px;padding:0;justify-content:center}}
@media (max-width:640px){.nav-r>.btn:not(.ghost){display:none}.nav .btn.ghost{height:44px;font-size:13.5px;padding:0 14px}}
@media (max-width:400px){.nav .brand{font-size:0;gap:0}}

/* ===== v10 — hero footage: one clip per business type, crossfading with the headline ===== */
.hero-media .hv{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.2s cubic-bezier(.4,0,.2,1),transform 6s ease-out;transform:scale(1.06)}
.hero-media .hv.on{opacity:1;transform:scale(1)}
.hero-media::after{z-index:1}

/* ===== v11 — approach list: one sleek rounded panel, hairline rows, soft active state ===== */
.ap-list{background:#fff;border-radius:var(--r-lg);padding:6px;gap:0;border:1px solid rgba(13,31,23,.07);box-shadow:0 1px 0 rgba(255,255,255,.9) inset,0 24px 60px -34px rgba(13,31,23,.35)}
.ap-list li{position:relative;border-radius:12px;padding:12px 14px;opacity:.62;background:transparent;box-shadow:none!important;transition:opacity .5s,background .5s}
.ap-list li+li::before{content:"";position:absolute;left:56px;right:14px;top:0;height:1px;background:rgba(13,31,23,.08);transition:opacity .4s}
.ap-list li.on{opacity:1;background:var(--mist)}
.ap-list li.on::before,.ap-list li.on+li::before{opacity:0}
.ap-list li i{width:30px;height:30px;border:1px solid rgba(13,31,23,.14);background:#fff;font-family:var(--head);font-size:13px}
.ap-list li.on i{background:var(--zc);border-color:var(--zc);color:#fff;box-shadow:0 0 0 4px color-mix(in srgb,var(--zc) 16%,transparent)}
.ap-list li b{font-family:var(--head);font-weight:500;font-size:15.5px;letter-spacing:-.01em}
.ap-list li em{font-size:16px}
@media (min-width:901px) and (max-height:820px){.ap-list li{padding:8px 12px}.ap-list li i{width:26px;height:26px;font-size:12px}}
@media (max-width:900px){.ap-list li{opacity:1}}
.ap-list{gap:3px}
