:root{
  --ink:#0A2A4A;
  --panel:#123252;
  --panel-2:#1B4066;
  --green:#68C22C;
  --green-dim:#4E9720;
  --porcelain:#F5F7F6;
  --paper:#EDF1EF;
  --slate:#4B5A6B;
  --slate-dim:#7C8A99;
  --line:rgba(10,42,74,0.12);
  --line-dark:rgba(245,247,246,0.14);
  --off-white:#F5F7F6;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
}
body{
  background:var(--porcelain);
  color:var(--ink);
  font-family:'Inter', sans-serif;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:'Space Grotesk', sans-serif; letter-spacing:-0.01em;}
.mono{font-family:'IBM Plex Mono', monospace; font-variant-numeric: tabular-nums;}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
ul{list-style:none;}

/* ---------------- header ---------------- */
header{
  position:sticky; top:0; z-index:100;
  background:var(--ink);
  border-bottom:1px solid var(--line-dark);
}
.header-inner{
  max-width:1240px; margin:0 auto;
  padding:16px 32px;
  display:flex; align-items:center; justify-content:space-between;
  gap:24px;
}
.brand{display:flex; align-items:center; gap:10px;}
.brand img{height:24px; width:auto;}

nav.primary{display:flex; gap:2px; align-items:center;}
nav.primary a{
  position:relative;
  font-size:13.5px; font-weight:500; color:var(--off-white); opacity:0.68;
  padding:10px 14px; white-space:nowrap;
  transition:opacity 0.15s ease;
}
nav.primary a:hover, nav.primary a:focus-visible{opacity:1; outline:none;}
nav.primary a.active{opacity:1;}
nav.primary a.active::after{
  content:''; position:absolute; left:14px; right:14px; bottom:2px; height:2px; background:var(--green);
}
.nav-toggle{display:none;}
.header-cta{
  font-family:'IBM Plex Mono', monospace; font-size:12px; font-weight:500;
  background:var(--green); color:var(--ink);
  padding:10px 16px; letter-spacing:0.02em; white-space:nowrap;
  transition:background 0.15s ease;
}
.header-cta:hover, .header-cta:focus-visible{background:#7DD43F; outline:none;}

@media (max-width: 980px){
  nav.primary{display:none;}
  .header-cta{display:none;}
}

/* ---------------- rail (signature element) ---------------- */
.rail{
  position:relative;
  padding:18px 0;
}
.rail-track{
  position:relative;
  height:2px; background:var(--line);
  margin:0 32px;
}
.rail-track::before{
  content:''; position:absolute; left:0; top:0; height:100%; width:100%;
  background:linear-gradient(90deg, var(--green) 0%, transparent 70%);
  opacity:0.5;
}
.rail-nodes{
  max-width:1240px; margin:0 auto; padding:0 32px;
  display:flex; justify-content:space-between;
  margin-top:-9px;
}
.rail-node{display:flex; flex-direction:column; align-items:center; gap:8px;}
.rail-node .dot{width:9px; height:9px; border-radius:50%; background:var(--porcelain); border:2px solid var(--slate-dim);}
.rail-node.hub .dot{background:var(--green); border-color:var(--green); width:13px; height:13px;}
.rail-node .lbl{font-family:'IBM Plex Mono', monospace; font-size:10.5px; letter-spacing:0.03em; color:var(--slate); text-align:center; max-width:90px;}
.rail-node.hub .lbl{color:var(--ink); font-weight:600;}
@media (max-width:760px){
  .rail-node .lbl{display:none;}
}

/* ---------------- hero ---------------- */
.hero{max-width:1240px; margin:0 auto; padding:76px 32px 40px;}
.eyebrow{
  font-family:'IBM Plex Mono', monospace; font-size:12.5px; letter-spacing:0.1em; text-transform:uppercase;
  color:var(--green-dim); margin-bottom:20px; display:flex; align-items:center; gap:10px;
}
.eyebrow::before{content:''; width:22px; height:2px; background:var(--green);}
.hero h1{
  font-weight:600; font-size:clamp(32px,5vw,56px); line-height:1.05; max-width:880px;
}
.hero h1 .accent{color:var(--green-dim);}
.hero-sub{max-width:560px; margin-top:22px; font-size:16.5px; color:var(--slate);}
.hero-actions{display:flex; gap:14px; margin-top:34px; flex-wrap:wrap;}
.btn{
  font-family:'IBM Plex Mono', monospace; font-size:13px; font-weight:500; letter-spacing:0.02em;
  padding:14px 24px; display:inline-block; transition:all 0.15s ease;
}
.btn-solid{background:var(--ink); color:var(--off-white); border:1px solid var(--ink);}
.btn-solid:hover, .btn-solid:focus-visible{background:transparent; color:var(--ink); outline:none;}
.btn-line{border:1px solid var(--line); color:var(--ink);}
.btn-line:hover, .btn-line:focus-visible{border-color:var(--ink); outline:none;}
.btn-on-dark.btn-line{border-color:var(--line-dark); color:var(--off-white);}
.btn-on-dark.btn-line:hover{border-color:var(--off-white);}
.btn-on-dark.btn-solid{background:var(--green); color:var(--ink); border-color:var(--green);}
.btn-on-dark.btn-solid:hover{background:transparent; color:var(--green);}

/* page hero (subpages, shorter) */
.page-hero{max-width:1240px; margin:0 auto; padding:64px 32px 8px;}
.page-hero h1{font-weight:600; font-size:clamp(30px,4.2vw,46px); max-width:760px;}
.page-hero .lede{max-width:600px; margin-top:18px; font-size:16px; color:var(--slate);}

/* ---------------- generic section ---------------- */
section{max-width:1240px; margin:0 auto; padding:80px 32px;}
.section-head{display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:48px; flex-wrap:wrap;}
.section-head h2{font-weight:600; font-size:clamp(26px,3vw,36px);}
.section-head .cap{font-family:'IBM Plex Mono', monospace; font-size:12.5px; color:var(--slate-dim); max-width:340px; text-align:right;}
.kicker{font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:0.08em; text-transform:uppercase; color:var(--green-dim); margin-bottom:12px;}

.dark{background:var(--ink); color:var(--off-white);}
.dark .section-head h2{color:var(--off-white);}
.dark .section-head .cap{color:rgba(245,247,246,0.55);}
.dark .kicker{color:var(--green);}

/* ---------------- cards / grids ---------------- */
.grid{display:grid; gap:1px; background:var(--line);}
.grid.cols-2{grid-template-columns:repeat(2,1fr);}
.grid.cols-3{grid-template-columns:repeat(3,1fr);}
.grid.cols-4{grid-template-columns:repeat(4,1fr);}
.dark .grid{background:var(--line-dark);}
.card{background:var(--porcelain); padding:32px; display:flex; flex-direction:column; gap:12px;}
.dark .card{background:var(--ink);}
.card h3{font-size:18px; font-weight:600;}
.card p{font-size:14px; color:var(--slate); max-width:340px;}
.dark .card p{color:rgba(245,247,246,0.62);}
.card .node-idx{font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--green-dim);}
.card ul{margin-top:6px; display:flex; flex-wrap:wrap; gap:8px;}
.card ul li{
  font-family:'IBM Plex Mono', monospace; font-size:11px; color:var(--slate);
  border:1px solid var(--line); padding:5px 9px; white-space:nowrap;
}
.dark .card ul li{color:rgba(245,247,246,0.7); border-color:var(--line-dark);}

@media (max-width:980px){
  .grid.cols-4{grid-template-columns:repeat(2,1fr);}
  .grid.cols-3{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:640px){
  .grid.cols-4, .grid.cols-3, .grid.cols-2{grid-template-columns:1fr;}
  .about-grid{grid-template-columns:1fr !important;}
  section{padding:56px 24px;}
  .hero, .page-hero{padding-left:24px; padding-right:24px;}
}

/* ---------------- stat strip ---------------- */
.stats{display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.stat{padding:28px 20px; border-right:1px solid var(--line);}
.stat:last-child{border-right:none;}
.stat .v{font-family:'IBM Plex Mono', monospace; font-size:28px; font-weight:500; color:var(--green-dim);}
.stat .l{font-size:12.5px; color:var(--slate); margin-top:6px;}
@media (max-width:760px){.stats{grid-template-columns:repeat(2,1fr);} .stat:nth-child(2n){border-right:none;}}

/* ---------------- list rows (services detail / why-us) ---------------- */
.rows{border-top:1px solid var(--line);}
.row{
  display:grid; grid-template-columns:64px 1fr 1fr; gap:28px;
  padding:30px 0; border-bottom:1px solid var(--line);
}
.row .idx{font-family:'IBM Plex Mono', monospace; font-size:13px; color:var(--green-dim); padding-top:4px;}
.row h3{font-size:19px; font-weight:600; margin-bottom:8px;}
.row p{font-size:14px; color:var(--slate); max-width:420px;}
.row .tags{display:flex; flex-wrap:wrap; gap:8px; align-content:flex-start; justify-content:flex-end;}
.row .tag{font-family:'IBM Plex Mono', monospace; font-size:11px; border:1px solid var(--line); padding:6px 10px; color:var(--slate); white-space:nowrap; height:fit-content;}
@media (max-width:760px){
  .row{grid-template-columns:1fr; gap:10px;}
  .row .tags{justify-content:flex-start;}
}

/* ---------------- about ---------------- */
.about-grid{display:grid; grid-template-columns:1.15fr 1fr; gap:64px; align-items:start;}
.about-copy p{font-size:15.5px; color:var(--slate); max-width:480px; margin-bottom:16px;}
.who-list{border-top:1px solid var(--line);}
.who-item{display:flex; justify-content:space-between; padding:16px 0; border-bottom:1px solid var(--line); font-size:14.5px;}
.who-item span:last-child{font-family:'IBM Plex Mono', monospace; font-size:11.5px; color:var(--slate-dim);}

/* ---------------- insights ---------------- */
.insight-card{background:var(--porcelain); padding:28px; border:1px solid var(--line); display:flex; flex-direction:column; gap:14px; height:100%;}
.insight-card .tag{font-family:'IBM Plex Mono', monospace; font-size:10.5px; letter-spacing:0.04em; text-transform:uppercase; color:var(--green-dim);}
.insight-card h3{font-size:17px; font-weight:600;}
.insight-card .read{font-family:'IBM Plex Mono', monospace; font-size:12px; color:var(--ink); border-top:1px solid var(--line); padding-top:14px; margin-top:auto;}
.insight-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line);}
@media (max-width:900px){.insight-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.insight-grid{grid-template-columns:1fr;}}
.insight-note{
  margin-top:36px; font-family:'IBM Plex Mono', monospace; font-size:12.5px; color:var(--slate-dim);
  border-left:2px solid var(--green); padding-left:16px;
}

/* ---------------- contact ---------------- */
.contact-grid{display:grid; grid-template-columns:1fr 1fr; gap:64px;}
.contact-channels{display:flex; flex-direction:column; gap:0; border-top:1px solid var(--line);}
.channel{display:flex; justify-content:space-between; align-items:center; padding:20px 0; border-bottom:1px solid var(--line);}
.channel .c-label{font-size:13px; color:var(--slate);}
.channel .c-val{font-family:'IBM Plex Mono', monospace; font-size:14px;}
.channel .c-val.placeholder{color:var(--slate-dim); font-style:italic;}
.map-box{
  margin-top:32px; border:1px solid var(--line); aspect-ratio:16/9; overflow:hidden;
}
.map-box iframe{width:100%; height:100%; border:0; filter:grayscale(0.15);}

form.consult{display:flex; flex-direction:column; gap:18px;}
.f-row{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
.f-group{display:flex; flex-direction:column; gap:8px;}
.f-group label{font-family:'IBM Plex Mono', monospace; font-size:11.5px; letter-spacing:0.03em; text-transform:uppercase; color:var(--slate);}
.f-group input, .f-group select, .f-group textarea{
  border:1px solid var(--line); background:transparent; padding:12px 14px; font-family:'Inter', sans-serif; font-size:14px; color:var(--ink);
}
.f-group input:focus, .f-group select:focus, .f-group textarea:focus{outline:2px solid var(--green); outline-offset:1px; border-color:var(--green);}
.f-group textarea{resize:vertical; min-height:96px;}
.form-submit{align-self:flex-start; margin-top:6px; border:none; cursor:pointer;}
.form-note{font-size:12.5px; color:var(--slate-dim); margin-top:4px;}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr;} .f-row{grid-template-columns:1fr;}}

/* ---------------- closing cta ---------------- */
.closing{
  border:1px solid var(--line); padding:56px 48px;
  display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:28px;
}
.closing h2{font-weight:600; font-size:clamp(24px,3.2vw,34px); max-width:520px;}
.closing-actions{display:flex; gap:14px; flex-wrap:wrap;}

/* ---------------- footer ---------------- */
footer{background:var(--ink); color:rgba(245,247,246,0.7);}
.footer-inner{max-width:1240px; margin:0 auto; padding:56px 32px 28px;}
.footer-top{display:grid; grid-template-columns:1.4fr repeat(4,1fr); gap:32px; padding-bottom:40px; border-bottom:1px solid var(--line-dark);}
.footer-brand img{height:22px; margin-bottom:14px;}
.footer-brand p{font-size:13px; max-width:240px; color:rgba(245,247,246,0.55);}
.footer-col h4{font-family:'IBM Plex Mono', monospace; font-size:11.5px; letter-spacing:0.05em; text-transform:uppercase; color:rgba(245,247,246,0.45); margin-bottom:14px;}
.footer-col a{display:block; font-size:13.5px; padding:6px 0; color:rgba(245,247,246,0.75); transition:color .15s ease;}
.footer-col a:hover, .footer-col a:focus-visible{color:var(--green); outline:none;}
.footer-bottom{display:flex; justify-content:space-between; align-items:center; padding-top:24px; flex-wrap:wrap; gap:12px; font-family:'IBM Plex Mono', monospace; font-size:11.5px; color:rgba(245,247,246,0.45);}
@media (max-width:900px){.footer-top{grid-template-columns:1fr 1fr;}}
@media (max-width:560px){.footer-top{grid-template-columns:1fr;}}
