: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 ---------- */
  html.anim .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease, transform .7s ease}
  html.anim .reveal.in{opacity:1;transform:none}
  @media (prefers-reduced-motion:reduce){html.anim .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}}

  /* ---------- language switcher ---------- */
  .lang{display:flex;gap:6px;align-items:center;margin-left:auto;margin-right:14px}
  .nav-links{margin-left:0}
  .lang-btn{display:flex;align-items:center;gap:6px;background:transparent;border:1px solid rgba(255,255,255,.28);color:#CFE0F2;font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.08em;padding:4px 9px;border-radius:4px;cursor:pointer;line-height:1;transition:all .15s ease}
  .lang-btn svg{display:block;border-radius:1.5px;box-shadow:0 0 0 1px rgba(255,255,255,.28)}
  .lang-btn:hover{border-color:rgba(255,255,255,.55);color:#fff}
  .lang-btn.active{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.6);color:#fff}
  @media (max-width:760px){ .lang{margin-right:10px} .lang-btn{padding:4px 7px} }

  /* ================= v08 — ABOUT US / INTRODUCTION ================= */
  /* Continues the hero's navy band: no top padding, so hero + about
     read as a single opening movement before the page turns to paper. */
  .about{
    background:linear-gradient(180deg,var(--navy-800),var(--navy-900));
    color:#fff;
    padding:0 0 92px;
  }
  .about-grid{
    display:grid;
    grid-template-columns:minmax(0,460px) 1fr;
    gap:56px;align-items:center;
  }

  /* --- video --- */
  .vid{position:relative;margin:0;line-height:0}
  .vid-el{
    display:block;width:100%;height:auto;aspect-ratio:1/1;
    background:#0B1727;border:1px solid var(--line-dark);border-radius:3px;
  }
  .vid-play{
    position:absolute;left:0;top:0;right:0;bottom:0;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;
    background:linear-gradient(180deg,rgba(15,31,53,.16),rgba(15,31,53,.55));
    border:0;border-radius:3px;cursor:pointer;color:#fff;
    font-family:inherit;transition:background .25s ease;
  }
  .vid-play[hidden]{display:none}
  .vid-play:hover{background:linear-gradient(180deg,rgba(15,31,53,.10),rgba(15,31,53,.46))}
  .vid-play:focus-visible{outline:2px solid var(--sky);outline-offset:3px}
  .vid-play .disc{
    width:74px;height:74px;border-radius:50%;
    background:var(--sky);color:var(--navy-900);
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 12px 34px -12px rgba(0,0,0,.65);
    transition:transform .25s ease, background .25s ease;
  }
  .vid-play:hover .disc{transform:scale(1.07);background:#9BBCD9}
  .vid-play .meta{
    font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;
    color:#DCE7F2;line-height:1.4;
  }
  .vid-cap{
    display:block;margin-top:13px;line-height:1.5;
    font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
    color:rgba(198,211,226,.58);
  }
  .vid-el p{color:#C6D3E2;font-size:15px;line-height:1.6;padding:24px}
  @media (prefers-reduced-motion:reduce){
    .vid-play,.vid-play .disc{transition:none}
    .vid-play:hover .disc{transform:none}
  }

  /* --- copy column --- */
  .about-copy .eyebrow{color:var(--sky)}
  .about-copy h2{
    font-family:"Archivo",sans-serif;font-weight:700;letter-spacing:-.02em;
    font-size:clamp(25px,3.5vw,37px);line-height:1.1;color:#fff;
    margin:14px 0 0;max-width:20ch;
  }
  .about-copy .about-lede{
    margin-top:18px;max-width:46ch;font-size:17px;
    color:#C6D3E2;line-height:1.62;
  }
  .about-more{
    display:inline-block;margin-top:22px;
    font-family:"IBM Plex Mono",monospace;font-size:12.5px;letter-spacing:.04em;
    color:var(--sky);border-bottom:1px solid rgba(122,164,200,.42);
    padding-bottom:3px;transition:color .2s, border-color .2s;
  }
  .about-more:hover{color:#fff;border-bottom-color:#fff}
  .about-copy .datum{margin-top:36px}

  @media(max-width:860px){
    .about{padding-bottom:68px}
    .about-grid{grid-template-columns:1fr;gap:34px}
    .vid{max-width:460px}
    .about-copy .datum{margin-top:28px}
  }

  /* ---- nav: the 7th item needs room ---- */
  .nav-links a{white-space:nowrap}
  .brand .sub{white-space:nowrap}
  @media(max-width:1400px){ .brand .sub{display:none} }
  @media(max-width:1180px){ .nav-links{gap:20px} }
  @media(max-width:1000px){ .nav-links{gap:16px} .nav-links a{font-size:12px} }
  @media(max-width:900px){
    .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:460px}
    .nav-links a{padding:16px 28px;width:100%;border-top:1px solid var(--line-dark)}
    .nav-toggle{display:flex}
  }
