:root{
    --navy-900:#0F1F35;
    --navy-800:#16273F;
    --navy-700:#1E3A5F;
    --steel:#2563A6;
    --teal:#1A6B6B;
    --noise:#1E3A5F;
    --sky:#7AA4C8;
    --paper:#F5F7FA;
    --white:#FFFFFF;
    --ink:#16202E;
    --muted:#5A6B7E;
    --line:#D4DCE5;
    --line-dark:rgba(122,164,200,.22);
    --maxw:1140px;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html{scroll-behavior:smooth}
  @media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
  body{
    font-family:"IBM Plex Sans",system-ui,sans-serif;
    color:var(--ink);
    background:var(--paper);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  .wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}
  a{color:inherit;text-decoration:none}
  .mono{font-family:"IBM Plex Mono",monospace;font-weight:500;letter-spacing:.06em}
  .eyebrow{
    font-family:"IBM Plex Mono",monospace;
    font-size:11.5px;font-weight:500;letter-spacing:.18em;
    text-transform:uppercase;color:var(--steel);
  }
  h1,h2,h3{font-family:"Archivo",sans-serif;line-height:1.08;letter-spacing:-.02em}

  /* ---------- datum line signature ---------- */
  .datum{display:flex;align-items:center;gap:0;height:14px}
  .datum .rule{height:1px;background:var(--line-dark);flex:1}
  .datum .tick{width:1px;height:9px;background:var(--sky);opacity:.55}
  .datum .tick.tall{height:14px;opacity:.9}

  /* ---------- nav ---------- */
  header.nav{
    position:sticky;top:0;z-index:50;
    background:rgba(15,31,53,.92);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line-dark);
  }
  .nav-in{display:flex;align-items:center;justify-content:space-between;height:64px}
  .brand{display:flex;align-items:baseline;gap:10px;color:#fff}
  .brand .mark{font-family:"Archivo";font-weight:800;font-size:20px;letter-spacing:.02em}
  .brand .sub{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.14em;color:var(--sky);text-transform:uppercase}
  .nav-links{display:flex;gap:30px;align-items:center}
  .nav-links a{
    font-family:"IBM Plex Mono",monospace;font-size:12.5px;letter-spacing:.04em;
    color:#C6D3E2;transition:color .2s;
  }
  .nav-links a:hover{color:#fff}
  .nav-toggle{display:none;background:none;border:0;cursor:pointer;padding:8px;flex-direction:column;gap:5px}
  .nav-toggle span{width:22px;height:2px;background:#fff;display:block;transition:.25s}

  /* ---------- hero ---------- */
  .hero{
    background:
      radial-gradient(120% 90% at 85% -10%, rgba(37,99,166,.30), transparent 60%),
      linear-gradient(180deg,var(--navy-900),var(--navy-800));
    color:#fff;position:relative;overflow:hidden;
    padding:96px 0 86px;
  }
  .hero .eyebrow{color:var(--sky)}
  .hero h1{
    font-size:clamp(34px,6vw,64px);font-weight:800;color:#fff;
    margin:22px 0 0;max-width:16ch;
  }
  .hero h1 em{font-style:normal;color:var(--sky)}
  .hero p.lede{
    margin-top:26px;max-width:54ch;font-size:clamp(16px,2.1vw,19px);
    color:#C6D3E2;line-height:1.62;
  }
  .hero .cta-row{margin-top:38px;display:flex;gap:16px;flex-wrap:wrap}
  .btn{
    font-family:"IBM Plex Mono",monospace;font-size:13px;letter-spacing:.04em;
    padding:13px 22px;border-radius:2px;transition:.2s;cursor:pointer;display:inline-block;
  }
  .btn-primary{background:var(--sky);color:var(--navy-900);font-weight:500}
  .btn-primary:hover{background:#9bbcd9}
  .btn-ghost{border:1px solid var(--line-dark);color:#fff}
  .btn-ghost:hover{border-color:var(--sky);background:rgba(122,164,200,.08)}
  .hero .datum{margin-top:64px}
  .hero-coords{
    position:absolute;right:28px;bottom:22px;
    font-family:"IBM Plex Mono",monospace;font-size:10.5px;letter-spacing:.12em;
    color:rgba(198,211,226,.5);text-align:right;line-height:1.9;
  }
  @media(max-width:720px){.hero-coords{display:none}}

  /* ---------- section scaffold ---------- */
  section{padding:84px 0}
  .sec-head{margin-bottom:46px;max-width:60ch}
  .sec-head h2{font-size:clamp(26px,4vw,38px);font-weight:700;color:var(--ink);margin:14px 0 0}
  .sec-head p{margin-top:16px;color:var(--muted);font-size:17px;max-width:56ch}

  /* ---------- solutions ---------- */
  .grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
  .card{
    background:var(--white);border:1px solid var(--line);
    border-left:4px solid var(--steel);
    padding:30px 26px 30px;border-radius:3px;
    display:flex;flex-direction:column;min-height:248px;
    transition:transform .25s ease, box-shadow .25s ease;
  }
  .card:hover{transform:translateY(-4px);box-shadow:0 18px 40px -24px rgba(15,31,53,.45)}
  .card .tag{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase}
  .card h3{font-size:21px;font-weight:700;margin:14px 0 12px;color:var(--ink);letter-spacing:-.01em}
  .card p{font-size:15px;color:var(--muted);line-height:1.62}
  .card .num{margin-top:auto;font-family:"Archivo";font-weight:800;font-size:34px;color:var(--line);line-height:1}
  .card.energy{border-left-color:var(--steel)}
  .card.energy .num{color:rgba(37,99,166,.20)}
  .card.water{border-left-color:var(--teal)}
  .card.water .num{color:rgba(26,107,107,.20)}
  .card.noise{border-left-color:var(--noise)}
  .card.noise .num{color:rgba(30,58,95,.20)}

  /* ---------- approach ---------- */
  .approach{background:var(--navy-900);color:#fff}
  .approach .eyebrow{color:var(--sky)}
  .approach h2{color:#fff}
  .pull{
    font-family:"Archivo";font-weight:700;letter-spacing:-.02em;
    font-size:clamp(22px,3.4vw,32px);line-height:1.22;color:#fff;
    max-width:24ch;margin:0;
  }
  .pull em{font-style:normal;color:var(--sky)}
  .approach-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start}
  .vantage{margin-top:8px;border-top:1px solid var(--line-dark)}
  .vantage .row{display:flex;gap:20px;padding:22px 0;border-bottom:1px solid var(--line-dark)}
  .vantage .row .idx{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--sky);padding-top:3px;min-width:34px}
  .vantage .row h4{font-family:"Archivo";font-size:17px;font-weight:600;color:#fff;margin-bottom:5px}
  .vantage .row p{font-size:14.5px;color:#A9B8C9;line-height:1.55}

  /* ---------- partners ---------- */
  .partner{
    display:grid;grid-template-columns:200px 1fr;gap:40px;align-items:center;
    background:var(--white);border:1px solid var(--line);border-radius:3px;
    padding:36px 38px;
  }
  .partner .logo{
    font-family:"Archivo";font-weight:800;font-size:30px;letter-spacing:-.01em;color:var(--navy-900);
  }
  .partner .logo span{color:var(--steel)}
  .partner .logo .pm{font-family:"IBM Plex Mono",monospace;font-size:10.5px;font-weight:500;letter-spacing:.14em;color:var(--muted);display:block;margin-top:7px;text-transform:uppercase}
  .partner .desc h3{font-family:"Archivo";font-size:19px;font-weight:600;color:var(--ink);margin-bottom:8px}
  .partner .desc p{font-size:15px;color:var(--muted);line-height:1.6;max-width:62ch}
  .partner-note{margin-top:22px;font-size:14px;color:var(--muted)}
  .partner-note .mono{color:var(--steel)}

  /* ---------- contact ---------- */
  .contact{background:linear-gradient(180deg,var(--navy-800),var(--navy-900));color:#fff}
  .contact h2{color:#fff}
  .contact .eyebrow{color:var(--sky)}
  .contact-card{
    display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:8px;
    border-top:1px solid var(--line-dark);padding-top:36px;
  }
  .contact-item .lbl{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--sky);margin-bottom:9px}
  .contact-item .val{font-size:17px;color:#E4EBF3;word-break:break-word}
  .contact-item a.val:hover{color:var(--sky)}

  /* ---------- footer ---------- */
  footer.site{background:var(--navy-900);color:#8DA0B5;border-top:1px solid var(--line-dark);padding:34px 0}
  .foot-in{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:center}
  .foot-in .fname{font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.06em;color:#A9B8C9}
  .foot-in .fmeta{font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.06em}

  /* ---------- reveal ---------- */
  .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease, transform .7s ease}
  .reveal.in{opacity:1;transform:none}
  @media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

  /* ---------- responsive ---------- */
  @media(max-width:860px){
    .grid3{grid-template-columns:1fr}
    .approach-grid{grid-template-columns:1fr;gap:34px}
    .partner{grid-template-columns:1fr;gap:24px;text-align:left}
    .contact-card{grid-template-columns:1fr;gap:28px}
  }
  @media(max-width:680px){
    .nav-links{
      position:absolute;top:64px;left:0;right:0;
      background:var(--navy-900);flex-direction:column;gap:0;
      border-bottom:1px solid var(--line-dark);
      max-height:0;overflow:hidden;transition:max-height .3s ease;
    }
    .nav-links.open{max-height:320px}
    .nav-links a{padding:16px 28px;width:100%;border-top:1px solid var(--line-dark)}
    .nav-toggle{display:flex}
    section{padding:62px 0}
    .hero{padding:72px 0 64px}
  }

  /* ---------- emblem badges ---------- */
  .brand{align-items:center}
  .brand-badge{width:38px;height:38px;border-radius:50%;display:block}
  .hero{position:relative}
  .hero-emblem{position:absolute;right:56px;top:96px;width:300px;height:300px;border-radius:50%;box-shadow:0 14px 44px rgba(0,0,0,.38)}
  @media (max-width:1040px){.hero-emblem{display:none}}
  .foot-badge{width:26px;height:26px;border-radius:50%;vertical-align:-7px;margin-right:10px;display:inline-block}

  /* ---------- background/who ---------- */
  .grid2{display:grid;grid-template-columns:1fr 1fr;gap:22px;max-width:900px}
  @media (max-width:860px){.grid2{grid-template-columns:1fr}}
