:root{
  --teal:#013840;
  --teal-deep:#01262b;
  --teal-near-black:#011a1e;
  --teal-700:#024049;
  --white:#FFFFFF;
  --cream:#FAEAD8;
  --sage:#82956F;
  --muted-green:#7C916D;
  --gold:#F8A710;
  --gold-line:#FCAA09;
  /* lightened sage for readable small/UI text on dark teal — verified >=4.5:1 on
     every teal background incl. the lightest (#024049 -> 6.31:1) */
  --sage-text:#b9c4ac;
  --maxw:1200px;
  --pad:clamp(1.25rem, 5vw, 4rem);
  --header-h:4.75rem;
  /* font stacks hold the named faces; the generic (sans-serif/monospace) is
     appended at each use site so it's visible to tooling, not hidden in the var */
  --display:"Space Grotesk", "Segoe UI", system-ui, -apple-system;
  --body:"Inter", system-ui, -apple-system, "Segoe UI", Roboto;
  --mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas;
  --rule:rgba(130,149,111,0.32);
  --rule-strong:rgba(130,149,111,0.5);
}

*,*::before,*::after{box-sizing:border-box;}

html{
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;
}

body{
  margin:0;
  background:var(--teal-near-black);
  color:var(--cream);
  font-family:var(--body), sans-serif;
  font-size:clamp(1rem,0.95rem + 0.3vw,1.125rem);
  line-height:1.65;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img{max-width:100%;display:block;height:auto;}
h1,h2,h3{font-family:var(--display), sans-serif;font-weight:700;line-height:1.04;margin:0;letter-spacing:-0.02em;}
p{margin:0;}
a{color:inherit;}
::selection{background:var(--gold);color:var(--teal-near-black);}
/* keep multi-word infrastructure terms from breaking awkwardly mid-phrase */
.nowrap{white-space:nowrap;}

/* ---------- Skip link ---------- */
.skip-link{
  position:absolute;
  left:1rem;
  top:-100px;
  z-index:1000;
  background:var(--gold);
  color:var(--teal-near-black);
  font-family:var(--display), sans-serif;
  font-weight:600;
  padding:0.85rem 1.25rem;
  border-radius:8px;
  text-decoration:none;
  transition:top 0.2s ease;
}
.skip-link:focus{top:1rem;}

:focus-visible{
  outline:3px solid var(--gold);
  outline-offset:3px;
}

/* ---------- Header / Nav ---------- */
/* transparent, non-sticky header — overlays the top of the hero so the hero
   background shows behind the nav, then scrolls away with the page */
.site-header{
  position:absolute;
  top:0;
  left:0;
  right:0;
  z-index:100;
  background:transparent;
}
.nav{
  max-width:var(--maxw);
  margin:0 auto;
  padding:0.6rem var(--pad);
  display:flex;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:0.5rem 1rem;
}
.nav-links{
  display:flex;
  align-items:center;
  gap:clamp(0.25rem,2vw,1.5rem);
  flex-wrap:wrap;
}
.nav-links a{
  position:relative;
  text-decoration:none;
  color:var(--cream);
  font-family:var(--display), sans-serif;
  font-weight:500;
  font-size:0.98rem;
  letter-spacing:0.01em;
  padding:0.6rem 0.75rem;
  min-height:44px;
  display:inline-flex;
  align-items:center;
  border-radius:6px;
}
.nav-links a::after{
  content:"";
  position:absolute;
  left:0.75rem;right:0.75rem;bottom:0.4rem;
  height:2px;
  background:var(--gold);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform 0.28s ease;
}
.nav-links a:hover::after,
.nav-links a:focus-visible::after{transform:scaleX(1);}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:0.6rem;
  min-height:52px;
  padding:0.9rem 1.9rem;
  border-radius:999px;
  font-family:var(--display), sans-serif;
  font-weight:600;
  font-size:1.05rem;
  letter-spacing:0.005em;
  text-decoration:none;
  cursor:pointer;
  border:1px solid transparent;
  transition:transform 0.2s ease, box-shadow 0.25s ease, background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.btn-gold{
  background:linear-gradient(180deg, var(--gold-line), var(--gold));
  color:var(--teal-near-black);
  box-shadow:0 10px 30px -8px rgba(248,167,16,0.55), inset 0 1px 0 rgba(255,255,255,0.35);
}
.btn-gold:hover,.btn-gold:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 16px 40px -8px rgba(248,167,16,0.7), inset 0 1px 0 rgba(255,255,255,0.45);
}
/* the gold button needs a focus ring that contrasts with its own gold fill
   (the shared gold outline would be ~1:1 against it) — teal-near-black is ~9:1 */
.btn-gold:focus-visible{outline-color:var(--teal-near-black);}
/* ghost CTA graft (D1) — styled for D0's dark base: cream border, not cream-panel variant */
.btn-ghost{
  background:transparent;
  color:var(--cream);
  border-color:rgba(250,234,216,0.45);
}
.btn-ghost:hover,.btn-ghost:focus-visible{
  transform:translateY(-2px);
  border-color:var(--gold);
  color:var(--gold);
}
.btn .arrow{font-size:1.1em;line-height:1;transition:transform 0.2s ease;}
.btn-gold:hover .arrow,.btn-gold:focus-visible .arrow{transform:translateX(4px);}

/* ---------- Layout helpers ---------- */
.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad);}
.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:0.7rem;
  font-family:var(--mono), monospace;
  font-weight:600;
  font-size:0.8rem;
  letter-spacing:0.22em;
  text-transform:uppercase;
  color:var(--gold);
  margin:0 0 1.1rem;
}
.eyebrow::before{
  content:"";
  width:2.2rem;height:2px;
  background:linear-gradient(90deg, var(--gold-line), transparent);
  flex:0 0 auto;
}
.section-h{
  font-size:clamp(2rem, 1.4rem + 3.4vw, 3.75rem);
  color:var(--white);
  max-width:18ch;
}
.section-intro{
  margin-top:1.1rem;
  max-width:60ch;
  color:var(--cream);
  font-size:clamp(1.05rem,1rem + 0.4vw,1.3rem);
  line-height:1.6;
}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  min-height:100vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  text-align:center;
  padding:4.5rem var(--pad) 4rem;
  overflow:hidden;
  isolation:isolate;
  background:
    radial-gradient(120% 90% at 50% 8%, #024049 0%, var(--teal) 32%, var(--teal-deep) 64%, var(--teal-near-black) 100%);
}
/* svh where supported (avoids the mobile dynamic-toolbar jump); 100vh above is the fallback */
@supports (height:100svh){
  .hero{min-height:100svh;}
}
/* transmission-line conductor motif (D2 graft) — faint static depth layer */
.hero-conductors{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:0.45;
  -webkit-mask-image:radial-gradient(120% 90% at 50% 42%, #000 28%, transparent 80%);
          mask-image:radial-gradient(120% 90% at 50% 42%, #000 28%, transparent 80%);
}
.hero-conductors span{
  position:absolute;
  top:0;bottom:0;
  width:1px;
  background:linear-gradient(180deg, transparent, rgba(252,170,9,0) 12%, rgba(252,170,9,0.4) 50%, rgba(252,170,9,0) 88%, transparent);
}
.hero-conductors span::before,
.hero-conductors span::after{
  content:"";
  position:absolute;
  left:50%;
  width:5px;height:5px;
  transform:translateX(-50%);
  border-radius:50%;
  background:var(--gold);
  box-shadow:0 0 10px 1px rgba(248,167,16,0.7);
}
.hero-conductors span::before{top:32%;}
.hero-conductors span::after{top:66%;}
.hero-conductors span:nth-child(1){left:16%;}
.hero-conductors span:nth-child(2){left:38%;}
.hero-conductors span:nth-child(3){left:62%;}
.hero-conductors span:nth-child(4){left:84%;}
/* static glow directly behind logo (no motion) */
.hero-glow{
  position:absolute;
  z-index:0;
  top:38%;left:50%;
  width:min(78vw,720px);
  aspect-ratio:1.3/1;
  transform:translate(-50%,-50%);
  pointer-events:none;
  background:radial-gradient(ellipse at center, rgba(248,167,16,0.24) 0%, rgba(248,167,16,0.09) 32%, rgba(1,56,64,0) 68%);
}
/* vignette for cinematic depth */
.hero::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:radial-gradient(130% 100% at 50% 40%, transparent 55%, rgba(1,16,18,0.65) 100%);
}
.hero-inner{
  position:relative;
  z-index:2;
  display:flex;
  flex-direction:column;
  align-items:center;
  max-width:62rem;
  animation:rise 1s cubic-bezier(.2,.7,.2,1) both;
}
@keyframes rise{from{opacity:0;transform:translateY(22px);}to{opacity:1;transform:translateY(0);}}

.hero-logo{
  width:clamp(280px,43vw,560px);
  height:auto;
  margin-bottom:clamp(1.5rem,4vw,2.6rem);
  filter:drop-shadow(0 18px 50px rgba(0,0,0,0.45));
}
.hero h1{
  font-size:clamp(2.2rem, 1.3rem + 4.6vw, 4.6rem);
  color:var(--white);
  letter-spacing:-0.025em;
  max-width:16ch;
}
.hero h1 .accent{
  background:linear-gradient(180deg, var(--gold-line), var(--gold));
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.hero-sub{
  margin:clamp(1.1rem,2.5vw,1.7rem) auto 0;
  max-width:54ch;
  font-size:clamp(1.05rem,1rem + 0.5vw,1.35rem);
  line-height:1.6;
  color:var(--cream);
}
/* dual-CTA cluster (D1 graft) */
.hero-cta{
  margin-top:clamp(1.8rem,4vw,2.6rem);
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:0.9rem;
}
.hero-tags{
  margin-top:1.6rem;
  font-family:var(--mono), monospace;
  font-weight:500;
  font-size:0.84rem;
  letter-spacing:0.16em;
  text-transform:uppercase;
  color:var(--sage-text);
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:0.35rem 0.9rem;
}
.hero-tags .dot{color:var(--gold);}

/* ---------- Section base ---------- */
section{position:relative;}
.band{
  padding:clamp(4rem,9vw,7.5rem) 0;
  position:relative;
}
.band--services{
  background:linear-gradient(180deg, var(--teal-near-black) 0%, var(--teal-deep) 40%, var(--teal) 100%);
}
.band--contact{
  background:linear-gradient(180deg, var(--teal) 0%, var(--teal-near-black) 100%);
}
/* hairline gold divider top of each band */
.band::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;
  height:1px;
  background:linear-gradient(90deg, transparent, rgba(252,170,9,0.55), transparent);
}

/* ---------- Services grid ---------- */
.services-grid{
  list-style:none;
  margin:clamp(2.5rem,5vw,3.5rem) 0 0;
  padding:0;
  display:grid;
  grid-template-columns:1fr;
  gap:1.25rem;
}
@media(min-width:760px){
  .services-grid{grid-template-columns:repeat(3,1fr);gap:1.5rem;}
}
.card{
  position:relative;
  padding:clamp(1.6rem,3vw,2.2rem);
  border-radius:16px;
  background:linear-gradient(165deg, rgba(2,64,73,0.55), rgba(1,26,30,0.55));
  border:1px solid rgba(130,149,111,0.28);
  overflow:hidden;
  transition:transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}
.card::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;
  height:3px;
  background:linear-gradient(90deg, var(--gold-line), var(--gold), transparent);
}
.card:hover{
  transform:translateY(-6px);
  border-color:rgba(248,167,16,0.5);
  box-shadow:0 22px 50px -18px rgba(0,0,0,0.7);
}
/* monospace card index (D2 graft) recolored to gold — passes >=4.5:1 on dark base */
.card-num{
  font-family:var(--mono), monospace;
  font-weight:600;
  font-size:0.8rem;
  letter-spacing:0.2em;
  color:var(--gold);
}
.card h3{
  margin:0.9rem 0 0.7rem;
  font-size:clamp(1.4rem,1.2rem + 0.8vw,1.7rem);
  color:var(--white);
}
.card p{color:var(--cream);font-size:1.02rem;line-height:1.6;}

/* ---------- Contact ---------- */
.contact-inner{
  text-align:center;
  max-width:46rem;
  margin-inline:auto;
  display:flex;
  flex-direction:column;
  align-items:center;
}
.contact-inner .eyebrow{justify-content:center;}
.contact-inner .section-h{max-width:20ch;}
.contact-inner .section-intro{margin-inline:auto;}
.contact-cta{margin-top:2rem;}
.contact-email{
  margin-top:1.6rem;
  font-family:var(--mono), monospace;
  font-size:clamp(1.05rem,1rem + 0.4vw,1.2rem);
  font-weight:500;
}
.contact-email a{
  color:var(--gold);
  text-decoration:none;
  border-bottom:1px solid rgba(248,167,16,0.4);
  padding-bottom:2px;
}
.contact-email a:hover,.contact-email a:focus-visible{border-bottom-color:var(--gold);}

/* ---------- Footer ---------- */
.site-footer{
  background:var(--teal-near-black);
  border-top:1px solid rgba(252,170,9,0.18);
  padding:2.25rem var(--pad);
}
.footer-inner{
  max-width:var(--maxw);
  margin:0 auto;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:0.75rem 1.5rem;
  font-family:var(--mono), monospace;
  font-size:0.85rem;
  letter-spacing:0.03em;
  color:var(--sage-text);
}
.footer-inner a{color:var(--cream);text-decoration:none;border-bottom:1px solid rgba(250,234,216,0.25);padding-bottom:1px;}
.footer-inner a:hover,.footer-inner a:focus-visible{color:var(--gold);border-bottom-color:var(--gold);}

/* ---------- Reveal on scroll ---------- */
.reveal{opacity:0;transform:translateY(26px);transition:opacity 0.7s ease, transform 0.7s cubic-bezier(.2,.7,.2,1);}
.reveal.in{opacity:1;transform:none;}

/* ---------- Reduced motion: universal kill-switch ----------
   Disables ALL motion: smooth scrolling, every transition/animation, and the
   scroll-reveal translate. Revealed content is forced visible so nothing is
   left hidden when motion is off. */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto !important;}
  *,*::before,*::after{
    animation:none !important;
    transition:none !important;
    scroll-behavior:auto !important;
  }
  .reveal{opacity:1 !important;transform:none !important;}
}
