/* ============ NEXGENAI HOLDINGS — shared styles ============ */
:root{
  --bg:#f7f7f4;
  --ink:#09352e;
  --ink-70:rgba(9,53,46,.7);
  --ink-45:rgba(9,53,46,.45);
  --line:rgba(9,53,46,.16);
  --green:#007f24;
  --sage:#85c093;
  --cream:#f1ece1;
  --dark:#0a2420;
  --amber:#b0762a;
  --teal:#3e7c6b;
  --steel:#2f5d8a;
  --serif:"Fraunces", Georgia, serif;
  --sans:"Archivo", -apple-system, "Helvetica Neue", sans-serif;
  --mono:"IBM Plex Mono", "SFMono-Regular", monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:auto}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
::selection{background:var(--ink);color:var(--bg)}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}

/* ---------- grain overlay ---------- */
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:9990;
  opacity:.05;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------- typography ---------- */
.display{
  font-family:var(--serif);
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:-.02em;
  line-height:.9;
}
.mono{
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ink-45);
}
.mono::after{content:"."}

/* ---------- reveal masks ---------- */
.mask{overflow:hidden;display:block}
.mask>span{display:block;transform:translateY(110%)}
[data-reveal]{opacity:0;transform:translateY(28px)}

/* ---------- header ---------- */
header{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:20px 4vw;
  transition:transform .45s cubic-bezier(.45,.05,.55,.95),opacity .45s cubic-bezier(.45,.05,.55,.95);
  mix-blend-mode:normal;
}
header.hidden{transform:translateY(-110%);opacity:0}
header::before{
  content:"";position:absolute;inset:0;background:var(--bg);
  opacity:0;transition:opacity .4s;border-bottom:1px solid var(--line);
}
header.scrolled::before{opacity:.92}
header>*{position:relative}
.logo{display:flex;align-items:baseline;gap:10px}
.logo .mark{
  font-family:var(--serif);font-weight:600;font-size:20px;letter-spacing:.02em;
  text-transform:uppercase;
}
.logo .mark em{font-style:normal;color:var(--green)}
.logo .mono{font-size:10px}
nav.top{display:flex;gap:34px;align-items:center}
nav.top a{
  font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  position:relative;padding:4px 0;transition:color .3s;
}
nav.top a::after{
  content:"";position:absolute;left:0;bottom:0;height:1px;width:0;
  background:currentColor;transition:width .3s ease;
}
nav.top a:hover{color:var(--green)}
nav.top a:hover::after{width:100%}
nav.top a.active{color:var(--green)}
.burger{display:none;background:none;border:0;cursor:pointer;width:34px;height:22px;position:relative;z-index:210}
.burger span{position:absolute;left:0;width:100%;height:2px;background:var(--ink);transition:transform .35s,opacity .3s,top .35s}
.burger span:nth-child(1){top:3px}
.burger span:nth-child(2){top:11px}
.burger span:nth-child(3){top:19px}
body.menu-open .burger span:nth-child(1){top:11px;transform:rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){top:11px;transform:rotate(-45deg)}
.menu-overlay{
  position:fixed;inset:0;background:var(--dark);z-index:200;
  display:flex;flex-direction:column;justify-content:center;padding:0 8vw;
  clip-path:inset(0 0 100% 0);transition:clip-path .6s cubic-bezier(.65,0,.35,1);
}
body.menu-open .menu-overlay{clip-path:inset(0 0 0% 0)}
.menu-overlay a{
  font-family:var(--serif);text-transform:uppercase;color:var(--cream);
  font-size:clamp(30px,7vw,56px);line-height:1.15;letter-spacing:-.01em;
  border-bottom:1px solid rgba(241,236,225,.15);padding:10px 0;
  display:flex;justify-content:space-between;align-items:baseline;
  transition:color .3s,padding-left .3s;
}
.menu-overlay a:hover{color:var(--sage);padding-left:12px}
.menu-overlay a small{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:rgba(241,236,225,.4)}

/* ---------- hero ---------- */
.hero{
  min-height:100svh;
  display:grid;grid-template-columns:repeat(24,1fr);column-gap:20px;
  padding:0 4vw;align-content:center;position:relative;
}
.hero .kicker{grid-column:2/12;margin-bottom:26px}
.hero h1{font-size:clamp(52px,9.5vw,168px)}
.hero .line-a{grid-column:2/24;text-align:left}
.hero .line-b{grid-column:6/24;text-align:right;margin-top:-.12em}
.hero .line-b .accent{color:var(--green)}
.hero .sub{
  grid-column:2/10;margin-top:48px;max-width:420px;
  font-size:17px;line-height:1.7;color:var(--ink-70);
}
.hero .coords{
  grid-column:18/24;align-self:end;text-align:right;margin-top:48px;
  font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-45);
  text-transform:uppercase;line-height:2;
}
.hero .scroll-hint{
  position:absolute;bottom:34px;left:4vw;
  display:flex;align-items:center;gap:14px;
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-45);
}
.scroll-hint .stem{width:1px;height:56px;background:var(--ink-45);position:relative;overflow:hidden}
.scroll-hint .stem::after{
  content:"";position:absolute;left:0;top:-50%;width:100%;height:50%;
  background:var(--green);animation:drip 1.8s cubic-bezier(.65,0,.35,1) infinite;
}
@keyframes drip{to{top:110%}}

/* hero backdrop rings */
.rings{
  position:absolute;inset:0;overflow:hidden;pointer-events:none;
}
.rings svg{position:absolute;right:-14vw;top:50%;transform:translateY(-50%);width:56vw;height:56vw;opacity:.5}
.rings circle{fill:none;stroke:var(--sage);stroke-width:.6}

/* ---------- section scaffold ---------- */
section{padding:120px 4vw}
.sec-head{display:grid;grid-template-columns:repeat(24,1fr);column-gap:20px;margin-bottom:64px;align-items:end}
.sec-head .mono{grid-column:2/8}
.sec-head h2{grid-column:8/24;font-size:clamp(34px,4.6vw,72px);text-align:right}

/* ---------- manifesto ---------- */
.manifesto{border-top:1px solid var(--line)}
.manifesto .lead{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(26px,3.4vw,52px);line-height:1.25;letter-spacing:-.01em;
  max-width:1100px;
}
.manifesto .lead em{font-style:italic;color:var(--green)}
.manifesto .meta{
  margin-top:56px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;
  border-top:1px solid var(--line);padding-top:28px;max-width:1100px;
}
.manifesto .meta div p{margin-top:8px;color:var(--ink-70);font-size:15px}

/* ---------- subsidiaries (pinned) ---------- */
.group-wrap{background:var(--dark);color:var(--cream);border-radius:28px 28px 0 0}
.group-wrap .mono{color:rgba(241,236,225,.45)}
.group-pin{display:grid;grid-template-columns:repeat(24,1fr);column-gap:20px;min-height:100vh;align-content:start;padding-top:110px}
.group-pin .pin-col{grid-column:2/9;position:sticky;top:110px;align-self:start}
.group-pin .pin-col h2{font-size:clamp(38px,4.6vw,76px);margin-top:18px}
.group-pin .pin-col p{margin-top:26px;color:rgba(241,236,225,.6);max-width:340px;font-size:15px}
.group-list{grid-column:10/24}
.sub-row{
  border-top:1px solid rgba(241,236,225,.14);
  padding:44px 0;display:block;position:relative;
  transition:padding-left .4s cubic-bezier(.65,0,.35,1);
}
.sub-row:last-child{border-bottom:1px solid rgba(241,236,225,.14)}
.sub-row:hover{padding-left:18px}
.sub-row .idx{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:rgba(241,236,225,.4)}
.sub-row h3{
  font-family:var(--serif);text-transform:uppercase;letter-spacing:-.01em;
  font-size:clamp(30px,3.8vw,60px);line-height:1;margin:14px 0 10px;
  transition:color .3s;
}
.sub-row .tag{
  font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;
}
.sub-row .domain{
  position:absolute;right:0;top:50%;transform:translateY(-50%);
  font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:rgba(241,236,225,.4);
  display:flex;align-items:center;gap:8px;transition:color .3s;
}
.sub-row .domain svg{width:14px;height:14px;transition:transform .3s}
.sub-row:hover .domain{color:var(--cream)}
.sub-row:hover .domain svg{transform:translate(3px,-3px)}
.sub-row[data-accent="solar"]:hover h3{color:var(--amber)}
.sub-row[data-accent="health"]:hover h3{color:var(--sage)}
.sub-row[data-accent="ai"]:hover h3{color:#7fa8d0}

/* ---------- name wall (clients & partners) ---------- */
.wall-block{margin-bottom:56px}
.wall-block>.mono{margin-bottom:22px;display:block}
.name-wall{
  display:flex;flex-wrap:wrap;gap:0;
  border-top:1px solid var(--line);border-left:1px solid var(--line);
}
.wall-name{
  flex:1 1 20%;min-width:200px;
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:34px 24px;
  font-family:var(--serif);font-weight:500;font-size:clamp(18px,1.7vw,26px);
  letter-spacing:-.01em;line-height:1.2;
  display:flex;align-items:center;min-height:120px;
  transition:background .35s,color .35s;
  cursor:default;
}
.wall-name:hover{background:var(--ink);color:var(--bg)}
.wall-name.partner:hover{background:var(--green);color:#fff}
@media (max-width:900px){.wall-name{flex:1 1 50%;min-height:90px}}

/* ---------- numbers strip ---------- */
.numbers{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;border-top:1px solid var(--line);padding-top:40px}
.numbers .n b{
  font-family:var(--serif);font-weight:500;font-size:clamp(40px,4.6vw,72px);
  display:block;line-height:1;letter-spacing:-.02em;
}
.numbers .n p{margin-top:10px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-45)}

/* ---------- cta / footer ---------- */
footer{background:var(--dark);color:var(--cream);border-radius:28px 28px 0 0;padding:110px 4vw 40px}
footer .cta-line{
  font-family:var(--serif);text-transform:uppercase;letter-spacing:-.02em;line-height:.95;
  font-size:clamp(40px,7vw,120px);
}
footer .cta-line .accent{color:var(--sage)}
footer .mail{
  display:inline-flex;align-items:center;gap:12px;margin-top:44px;
  font-family:var(--mono);font-size:14px;letter-spacing:.06em;
  border:1px solid rgba(241,236,225,.3);border-radius:999px;padding:14px 28px;
  transition:background .35s,color .35s,border-color .35s;
}
footer .mail:hover{background:var(--sage);color:var(--dark);border-color:var(--sage)}
footer .foot-grid{
  margin-top:90px;border-top:1px solid rgba(241,236,225,.14);padding-top:30px;
  display:grid;grid-template-columns:repeat(24,1fr);column-gap:20px;row-gap:24px;
}
footer .foot-grid>div{grid-column:span 6}
footer .mono{color:rgba(241,236,225,.4)}
footer ul{list-style:none;margin-top:12px}
footer li{margin:6px 0}
footer li a{font-size:14px;color:rgba(241,236,225,.75);transition:color .3s}
footer li a:hover{color:var(--sage)}
footer .legal{
  margin-top:60px;display:flex;justify-content:space-between;
  font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:rgba(241,236,225,.35);
}

/* ============ subsidiary pages ============ */
.sub-hero{min-height:88svh;display:grid;grid-template-columns:repeat(24,1fr);column-gap:20px;padding:0 4vw;align-content:end;padding-bottom:70px;position:relative}
.sub-hero .kicker{grid-column:2/12;margin-bottom:24px}
.sub-hero h1{grid-column:2/24;font-size:clamp(44px,8vw,140px)}
.sub-hero .sub-desc{grid-column:2/10;margin-top:36px;font-size:17px;line-height:1.7;color:var(--ink-70);max-width:460px}
.sub-hero .facts{grid-column:15/24;align-self:end;margin-top:36px;border-top:1px solid var(--line)}
.sub-hero .facts div{display:flex;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line);font-size:14px}
.sub-hero .facts span{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-45);align-self:center}
.page-solar{background:linear-gradient(180deg,#faf6ee 0%,var(--bg) 40%)}
.page-health{background:linear-gradient(180deg,#f0f5f1 0%,var(--bg) 40%)}
.page-ai{background:linear-gradient(180deg,#eef2f6 0%,var(--bg) 40%)}
.pill{
  display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:999px;padding:8px 18px;margin-bottom:20px;
}
.focus-list{border-top:1px solid var(--line)}
.focus-item{
  display:grid;grid-template-columns:repeat(24,1fr);column-gap:20px;
  padding:44px 0;border-bottom:1px solid var(--line);align-items:baseline;
}
.focus-item .num{grid-column:2/4;font-family:var(--mono);font-size:12px;color:var(--ink-45)}
.focus-item h3{grid-column:4/12;font-family:var(--serif);font-size:clamp(22px,2.4vw,36px);font-weight:500;letter-spacing:-.01em;text-transform:uppercase}
.focus-item p{grid-column:13/23;color:var(--ink-70);font-size:15px}
.next-link{
  display:flex;justify-content:space-between;align-items:center;
  border-top:1px solid var(--line);padding:60px 0 10px;
  font-family:var(--serif);text-transform:uppercase;letter-spacing:-.01em;
  font-size:clamp(26px,3.6vw,56px);transition:color .3s;
}
.next-link:hover{color:var(--green)}
.next-link .mono{letter-spacing:.1em}

/* ---------- responsive ---------- */
@media (max-width:900px){
  nav.top{display:none}
  .burger{display:block}
  .hero,.sub-hero,.sec-head,.group-pin,.focus-item{column-gap:10px}
  .hero .sub{grid-column:2/20}
  .hero .coords{display:none}
  .sec-head .mono{grid-column:1/24;margin-bottom:12px}
  .sec-head h2{grid-column:1/24;text-align:left}
  .group-pin{padding-top:80px}
  .group-pin .pin-col{grid-column:1/24;position:static;margin-bottom:50px}
  .group-list{grid-column:1/24}
  .sub-row .domain{position:static;transform:none;margin-top:14px}
  .manifesto .meta{grid-template-columns:1fr;gap:24px}
  .numbers{grid-template-columns:repeat(2,1fr);row-gap:36px}
  .sub-hero .sub-desc{grid-column:2/22}
  .sub-hero .facts{grid-column:2/22}
  .focus-item .num{grid-column:1/4}
  .focus-item h3{grid-column:4/24;margin-bottom:12px}
  .focus-item p{grid-column:4/24}
  footer .foot-grid>div{grid-column:span 12}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  [data-reveal],.mask>span{opacity:1!important;transform:none!important}
}
