:root{
  --paper:#F6F4EE;
  --paper-2:#EFECE2;
  --ink:#121A16;
  --forest:#0B1411;
  --slate:#4A544E;
  --bone:#EFEDE4;
  --bone-dim:#B9BCB2;
  --petrol:#126B63;
  --petrol-bright:#2AA396;
  --rule:#DAD5C6;
  --rule-dark:#243029;
  --max:1120px;
  --serif:'Libre Caslon Display',Georgia,serif;
  --serif-text:'Libre Caslon Text',Georgia,serif;
  --sans:'Instrument Sans',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--sans);font-size:16.5px;line-height:1.75;color:var(--slate);background:var(--paper)}
h1,h2{font-family:var(--serif);font-weight:400;color:var(--ink);line-height:1.08;letter-spacing:.002em}
h3{font-family:var(--sans);font-weight:600;color:var(--ink)}
a{color:var(--petrol);text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--petrol);outline-offset:3px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}
.caps{font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.22em;text-transform:uppercase}
.eyebrow{display:flex;align-items:center;gap:18px;color:var(--petrol);margin-bottom:26px}
.eyebrow::after{content:"";height:1px;flex:0 0 56px;background:currentColor;opacity:.5}
.section{padding:128px 0}
.section.alt{background:var(--paper-2)}
.section h2{font-size:clamp(32px,4.4vw,56px);margin-bottom:26px;max-width:700px}
.lede{font-family:var(--serif-text);font-style:italic;font-size:19px;line-height:1.7;color:#3A423C;max-width:620px}

/* nav over dark hero */
.hero{background:var(--forest);color:var(--bone)}
nav{border-bottom:1px solid var(--rule-dark);position:relative;z-index:50}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:84px}
.ident{display:flex;align-items:center;gap:14px;color:var(--bone)}
.ident img{height:30px;width:auto;display:block}
.ident span{font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:.24em;text-transform:uppercase}
.nav-links{display:flex;gap:32px}
.nav-links a{color:var(--bone-dim);font-size:11.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;padding-bottom:3px;border-bottom:1px solid transparent;transition:color .3s,border-color .3s}
.nav-links a:hover{color:var(--bone);border-color:var(--petrol-bright)}
.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:34px;height:34px;background:none;border:none;cursor:pointer;padding:0;flex:none}
.nav-toggle span{display:block;width:100%;height:2px;background:var(--bone);transition:transform .25s ease,opacity .2s ease}
.nav-toggle.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle.open span:nth-child(2){opacity:0}
.nav-toggle.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* hero */
.hero .caps.note{color:#7E877E;letter-spacing:.2em}
.btn{display:inline-block;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;padding:18px 34px;border-radius:2px;cursor:pointer;transition:background .3s,color .3s,border-color .3s}
.btn-light{color:var(--bone);border:1px solid #47534B;background:transparent}
.btn-light:hover{border-color:var(--bone);background:rgba(239,237,228,.06)}
.btn-ink{color:var(--bone);background:var(--ink);border:1px solid var(--ink)}
.btn-ink:hover{background:var(--petrol);border-color:var(--petrol)}

/* video hero (single static slide, no carousel) */
.hero-video-hero{position:relative}
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;display:none}
.hero-video.loaded{display:block}
.hero-video-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,20,17,.5) 0%,rgba(9,18,15,.72) 58%,rgba(11,20,17,.9) 100%);z-index:1}
.hero-video-content{position:relative;z-index:2;padding:180px 0 156px}
.hero-video-content h1{font-size:clamp(50px,7.6vw,96px);color:var(--bone);margin-bottom:44px}
.hero-video-content h1 em{font-style:italic;color:var(--petrol-bright)}
.hero-video-content p{font-size:19px;line-height:1.7;color:var(--bone-dim);max-width:480px;margin-bottom:40px}
.hero-cta-row{display:flex;align-items:center;gap:26px;flex-wrap:wrap}

/* sub-hero (interior pages) */
.sub-hero{padding:70px 0 98px}
.sub-hero h1{font-size:clamp(40px,6vw,68px);color:var(--bone);max-width:760px;margin-bottom:22px}
.sub-hero h1 em{font-style:italic;color:var(--petrol-bright)}
.sub-hero p{font-size:18px;line-height:1.8;color:var(--bone-dim);max-width:620px}
.sub-hero .eyebrow{color:var(--petrol-bright)}

/* photo hero — subpages using a photo instead of solid dark for the header */
.hero-photo{position:relative;overflow:hidden}
.hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;display:block}
.hero-photo .photo-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,20,17,.55) 0%,rgba(9,18,15,.78) 60%,rgba(11,20,17,.92) 100%);z-index:1}
.hero-photo .sub-hero{position:relative;z-index:2}

/* big stat block (home only) */
.stat-block{background:var(--paper);padding:100px 0;border-bottom:1px solid var(--rule)}
.stat-num{font-family:var(--serif);font-size:clamp(84px,11.5vw,172px);line-height:1;color:var(--ink);letter-spacing:-.01em}
.stat-num .stat-unit{font-size:.3em;font-family:var(--sans);font-weight:600;color:var(--petrol);margin-left:10px;letter-spacing:.03em}
.stat-label{margin-top:20px;max-width:480px;color:var(--slate);font-family:var(--sans);font-weight:600;font-size:15.5px;line-height:1.6}
.stat-source{margin-top:26px;font-family:var(--sans);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#5C6560}

/* statement — a single large idea, minimal furniture. Used sparingly for rhythm. */
.statement{background:var(--forest);color:var(--bonedim);padding:150px 0}
.statement .lead{font-family:var(--serif);font-weight:400;font-size:clamp(34px,5.2vw,64px);line-height:1.14;letter-spacing:-.005em;color:var(--bone);max-width:880px}
.statement .lead em{font-style:italic;color:var(--petrol-bright)}
.statement .sub{margin-top:38px;font-size:17px;line-height:1.75;color:var(--bone-dim);max-width:560px}
.statement .srcs{margin-top:44px;padding-top:24px;border-top:1px solid var(--rule-dark);display:flex;gap:34px;flex-wrap:wrap}
.statement .srcs a{font-size:11.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#8A968D;border-bottom:1px solid transparent;padding-bottom:3px;transition:color .3s,border-color .3s}
.statement .srcs a:hover{color:var(--bone);border-color:var(--petrol-bright)}

/* editorial image band — a single contextual photo breaking up a page's sections */
.image-band{position:relative;height:440px;overflow:hidden}
.image-band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.image-band .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,20,17,.05) 0%,rgba(11,20,17,.88) 100%)}
.image-band .band-cap{position:absolute;left:0;right:0;bottom:0;padding:26px 0}
.image-band .band-cap span{font-family:var(--sans);font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--bone-dim)}

/* card grid — reused for both "Latest in Energy" and the home "What We Do" overview */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);margin-top:56px;border:1px solid var(--rule)}
.news-card{background:var(--paper);display:block;padding:32px 28px 28px;position:relative;transition:transform .3s}
.news-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--petrol)}
.news-tag{font-family:var(--sans);font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--petrol);display:block;margin-bottom:18px}
.news-card h3{font-family:var(--serif);font-weight:400;font-size:21px;color:var(--ink);line-height:1.28;margin-bottom:14px;transition:color .3s}
.news-card p{font-size:14.5px;line-height:1.65;color:var(--slate);margin-bottom:24px}
.news-meta{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.06em;color:#5C6560;display:flex;align-items:center;gap:6px}
.news-card .arrow{transition:transform .3s;display:inline-block}
.news-card:hover h3{color:var(--petrol)}
.news-card:hover .arrow{transform:translateX(4px)}

/* ledger strip (home only) */

/* ledger rows */
.rows{margin-top:64px;border-top:1px solid var(--rule)}
.row{display:grid;grid-template-columns:300px 1fr;gap:40px;padding:38px 0;border-bottom:1px solid var(--rule)}
.row h3{font-size:16px;letter-spacing:.01em;transition:color .3s}
.row:hover h3{color:var(--petrol)}
.row p{max-width:600px}

/* scope */
.scope-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 72px;margin-top:56px;max-width:900px}
.scope-item{padding:20px 0;border-bottom:1px solid var(--rule);display:flex;gap:16px;align-items:baseline;color:#39413B}
.scope-item::before{content:"—";color:var(--petrol);flex:none}

/* process: serif numerals */
.steps{margin-top:64px;border-top:1px solid var(--rule);max-width:860px}
.step{display:grid;grid-template-columns:120px 1fr;gap:40px;padding:44px 0;border-bottom:1px solid var(--rule)}
.step .num{font-family:var(--serif);font-size:52px;line-height:1;color:var(--ink)}
.step .num::after{content:"";display:block;width:26px;height:1px;background:var(--petrol);margin-top:14px}
.step h3{font-size:17px;margin-bottom:8px}
.step p{max-width:560px}

/* qualify: term sheet */
.terms{margin-top:56px;max-width:800px;border-top:1px solid var(--ink)}
.terms-head{padding:18px 0;border-bottom:1px solid var(--rule);color:var(--ink)}
.term{display:flex;gap:20px;padding:20px 0;border-bottom:1px solid var(--rule);align-items:baseline;color:#39413B}
.term::before{content:"—";color:var(--petrol);flex:none}
.spec-note{margin-top:28px;font-family:var(--serif-text);font-style:italic;font-size:16px;color:#5A625B;max-width:600px}

/* contact */
.contact{background:var(--forest);color:var(--bone-dim)}
.contact h2{color:var(--bone)}
.contact .eyebrow{color:var(--petrol-bright)}
.contact-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:88px;margin-top:24px}
.contact form{display:flex;flex-direction:column;gap:34px;margin-top:44px}
.contact label{display:block;font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:#8F988F;margin-bottom:10px}
.contact input,.contact select,.contact textarea{width:100%;padding:10px 2px;font-family:var(--sans);font-size:17px;color:var(--bone);background:transparent;border:none;border-bottom:1px solid #3A463E;border-radius:0;transition:border-color .3s}
.contact textarea{line-height:1.6;resize:vertical;min-height:90px}
.contact input::placeholder,.contact textarea::placeholder{color:#7A8780}
.contact input:focus,.contact select:focus,.contact textarea:focus{border-color:var(--petrol-bright);outline:none}
.contact select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,#8F988F 50%),linear-gradient(135deg,#8F988F 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 8px) 50%;background-size:6px 6px;background-repeat:no-repeat}
.contact select option{color:var(--ink);background:var(--paper)}
.btn-submit{align-self:flex-start;margin-top:10px;color:var(--forest);background:var(--bone);border:1px solid var(--bone)}
.btn-submit:hover{background:var(--petrol-bright);border-color:var(--petrol-bright);color:var(--forest)}
.direct{margin-top:44px}
.direct p{margin-bottom:26px}
.direct .label{display:block;font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:#8F988F;margin-bottom:4px}
.direct a{color:var(--bone);font-size:17px}
.direct a:hover{color:var(--petrol-bright)}
.direct span.val{color:var(--bone);font-size:17px}

footer{background:var(--forest);border-top:1px solid var(--rule-dark);padding:44px 0;color:#79827A;font-size:13px}
.foot-inner{display:flex;justify-content:space-between;align-items:center;gap:22px;flex-wrap:wrap}
.foot-ident{display:flex;align-items:center;gap:12px}
.foot-ident img{height:22px;width:auto}
.foot-ident span{font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--bone-dim)}
.foot-note{margin-top:22px;font-size:12px;color:#5A645C;max-width:780px;line-height:1.7}

/* motion: restrained */
.rv{opacity:0;transform:translateY(14px);transition:opacity .9s ease,transform .9s ease}
.rv.in{opacity:1;transform:none}
.hr{opacity:0;animation:fadeUp 1s ease forwards}
.d1{animation-delay:.1s}.d2{animation-delay:.25s}.d3{animation-delay:.4s}.d4{animation-delay:.55s}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

@media (max-width:860px){
  .section{padding:84px 0}
  .sub-hero{padding:56px 0 64px}
  .statement{padding:88px 0}
  .statement .srcs{gap:16px 24px;margin-top:32px}
  .nav-toggle{display:flex}
  .nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:var(--forest);border-bottom:1px solid var(--rule-dark);padding:6px 0}
  .nav-links.open{display:flex}
  .nav-links a{padding:16px 28px;border-bottom:1px solid var(--rule-dark)}
  .nav-links a:last-child{border-bottom:none}
  .row{grid-template-columns:1fr;gap:10px;padding:30px 0}
  .step{grid-template-columns:72px 1fr;gap:24px;padding:34px 0}
  .step .num{font-size:38px}
  .scope-grid{grid-template-columns:1fr}
  .contact-grid{grid-template-columns:1fr;gap:30px}
  .news-grid{grid-template-columns:1fr}
  .hero-video-content{padding:120px 0 90px}
  .stat-num{font-size:clamp(64px,20vw,110px)}
  .image-band{height:280px}
}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .hr{opacity:1;animation:none}
  .rv{opacity:1;transform:none;transition:none}
}
