/* BuildPur — homepage visual identity (Connected Systems) */

:root {
  --night: #080a0d;
  --night-2: #0e1116;
  --night-line: rgba(255, 255, 255, 0.14);
  --night-line-2: rgba(255, 255, 255, 0.07);
  --night-text: rgba(255, 255, 255, 0.72);
  --night-muted: rgba(255, 255, 255, 0.5);
}

body.home { background: #f8f9fa; }

/* ---------- Header on dark hero ---------- */
.home .site-header {
  background: rgba(8, 10, 13, 0.82);
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

.home .site-header.scrolled {
  background: rgba(8, 10, 13, 0.96);
  border-bottom-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 14px 34px -22px rgba(0, 0, 0, 0.9);
}
.home .brand-mark { background: #fff; color: var(--night); }
.home .brand-mark span { color: var(--brand); }
.home .brand-name { color: #fff; }
.home .brand-sub { color: rgba(255, 255, 255, 0.5); }
.home .nav-toggle { color: #fff; }
.home .nav-actions .btn-primary { background: #fff; color: var(--night); }
.home .nav-actions .btn-primary:hover { background: var(--brand); color: #fff; }

@media (min-width: 1081px) {
  .home .nav-link { color: rgba(255, 255, 255, 0.72); }
  .home .nav-link:hover,
  .home .nav-link.active { color: #fff; }
  .home .nav-item.has-dropdown:hover > .nav-link,
  .home .nav-item.has-dropdown:focus-within > .nav-link { color: #fff; }
  .home .nav-actions .btn-outline { border-color: rgba(255, 255, 255, 0.25); color: #fff; }
  .home .nav-actions .btn-outline:hover { border-color: #fff; color: #fff; }
}

/* ---------- Hero ---------- */
.v-hero {
  position: relative;
  background: radial-gradient(1200px 600px at 78% 20%, rgba(255, 107, 53, 0.12), transparent 60%),
              radial-gradient(900px 700px at 10% 90%, rgba(58, 92, 140, 0.14), transparent 65%),
              var(--night);
  color: #fff;
  overflow: hidden;
  padding: 120px 0 110px;
  isolation: isolate;
}

.v-hero-net {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  opacity: 0.9;
}

.v-hero-grid {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image:
    linear-gradient(to right, rgba(255, 255, 255, 0.045) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255, 255, 255, 0.045) 1px, transparent 1px);
  background-size: 72px 72px;
  -webkit-mask-image: radial-gradient(circle at 50% 40%, #000 0%, transparent 78%);
  mask-image: radial-gradient(circle at 50% 40%, #000 0%, transparent 78%);
  pointer-events: none;
}

.v-hero-inner { position: relative; z-index: 2; max-width: 720px; }

.v-eyebrow {
  display: inline-block;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--brand);
  margin-bottom: 22px;
}

.v-hero h1 {
  font-size: clamp(2.4rem, 5.6vw, 4.4rem);
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.04;
  margin-bottom: 22px;
}

.v-hero p {
  color: var(--night-text);
  font-size: 1.12rem;
  max-width: 56ch;
  margin-bottom: 32px;
}

.v-actions { display: flex; gap: 12px; flex-wrap: wrap; }

/* Network SVG */
.net-line { stroke: rgba(255, 255, 255, 0.13); stroke-width: 1; fill: none; }
.net-flow {
  stroke: var(--brand);
  stroke-width: 1.4;
  fill: none;
  stroke-dasharray: 6 200;
  stroke-linecap: round;
  animation: vFlow 5s linear infinite;
}
.net-node { fill: rgba(255, 255, 255, 0.55); }
.net-node--accent { fill: var(--brand); }
.net-node--pulse { transform-box: fill-box; transform-origin: center; animation: vNodePulse 4s ease-in-out infinite; }
.net-ring { fill: none; stroke: rgba(255, 255, 255, 0.12); stroke-width: 1; }

@keyframes vFlow { to { stroke-dashoffset: -412; } }
@keyframes vNodePulse { 0%, 100% { opacity: 0.45; transform: scale(1); } 50% { opacity: 1; transform: scale(1.5); } }

/* ---------- BUILD / RUN / SCALE band ---------- */
.v-band { background: #f8f9fa; padding: 96px 0; border-bottom: 1px solid var(--line); }

.v-band-head { max-width: 760px; margin-bottom: 56px; }
.v-band-head h2 { font-size: clamp(1.7rem, 3.2vw, 2.4rem); }

.v-band-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }

.v-band-item { border-top: 2px solid var(--ink); padding-top: 26px; }

.v-band-word {
  display: block;
  font-size: clamp(2.6rem, 6vw, 4.4rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1;
  color: var(--ink);
}

.v-band-word span { color: var(--brand); }

.v-band-sub {
  display: block;
  margin-top: 16px;
  font-size: 0.95rem;
  color: var(--slate);
  max-width: 30ch;
}

/* ---------- Service visual sections ---------- */
.v-service { padding: 104px 0; position: relative; overflow: hidden; }
.v-service--light { background: #f8f9fa; color: var(--ink); }
.v-service--light + .v-service--light { border-top: 1px solid var(--line); }
.v-service--dark { background: var(--night); color: #fff; }

.v-split {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 64px;
  align-items: center;
}
.v-split--reverse .v-visual { order: 2; }

.v-index {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--brand);
  margin-bottom: 16px;
}

.v-copy h2 { font-size: clamp(1.9rem, 3.6vw, 2.8rem); margin-bottom: 16px; }
.v-service--dark .v-copy p { color: var(--night-text); }
.v-copy p { font-size: 1.02rem; max-width: 46ch; margin-bottom: 22px; }

.v-caps {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-bottom: 28px;
}
.v-caps li { font-size: 0.9rem; color: var(--slate); display: flex; align-items: center; gap: 8px; }
.v-caps li::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--brand); }
.v-service--dark .v-caps li { color: var(--night-text); }

.v-copy .link-arrow { font-size: 0.95rem; }

/* Visual frame */
.v-visual { position: relative; }
.v-frame {
  position: relative;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  display: block;
}
.v-service--dark .v-frame {
  border-color: var(--night-line);
  background: linear-gradient(160deg, #0d1116, #080a0d);
}

.v-frame svg { width: 100%; height: 100%; display: block; }
.v-frame::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(420px 300px at 75% 15%, rgba(255, 107, 53, 0.08), transparent 70%);
  pointer-events: none;
}

/* ---------- Shared viz element styles ---------- */
.vz-line { stroke: rgba(17, 17, 17, 0.16); stroke-width: 1; fill: none; }
.vz-line--strong { stroke: rgba(17, 17, 17, 0.28); }
.vz-flow { stroke: var(--brand); stroke-width: 1.6; fill: none; stroke-dasharray: 5 180; stroke-linecap: round; animation: vFlow 4.5s linear infinite; }
.vz-node { fill: #111; }
.vz-node--brand { fill: var(--brand); }
.vz-box { fill: #fff; stroke: rgba(17, 17, 17, 0.18); }
.vz-box--brand { stroke: var(--brand); }
.vz-ring { fill: none; }
.vz-label { font-family: var(--font); font-size: 11px; fill: #667085; font-weight: 600; }
.vz-pulse { transform-box: fill-box; transform-origin: center; animation: vNodePulse 3.6s ease-in-out infinite; }

.v-service--dark .vz-line { stroke: rgba(255, 255, 255, 0.14); }
.v-service--dark .vz-line--strong { stroke: rgba(255, 255, 255, 0.26); }
.v-service--dark .vz-node { fill: rgba(255, 255, 255, 0.6); }
.v-service--dark .vz-node--brand { fill: var(--brand); }
.v-service--dark .vz-box { fill: rgba(255, 255, 255, 0.04); stroke: rgba(255, 255, 255, 0.16); }
.v-service--dark .vz-box--brand { stroke: var(--brand); }
.v-service--dark .vz-label { fill: rgba(255, 255, 255, 0.6); }

/* pipeline */
.vz-track { stroke: rgba(17, 17, 17, 0.2); stroke-width: 1.5; }
.v-service--dark .vz-track { stroke: rgba(255, 255, 255, 0.16); }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .net-flow, .net-node--pulse, .vz-flow, .vz-pulse,
  .vz-scan, .vz-bar, .vz-arc, .vz-float { animation: none !important; }
  .vz-flow { stroke-dasharray: none; opacity: 0.6; }
}

/* ---------- Global map ---------- */
.v-global { background: var(--night); color: #fff; padding: 104px 0; overflow: hidden; }
.v-global-grid { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 56px; align-items: center; }
.v-global h2 { font-size: clamp(1.9rem, 3.6vw, 2.8rem); margin-bottom: 16px; }
.v-global p { color: var(--night-text); max-width: 44ch; }

.v-regions { list-style: none; display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.v-regions li {
  border: 1px solid var(--night-line);
  border-radius: var(--radius-sm);
  padding: 9px 15px;
  font-size: 0.85rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.82);
}

.v-map { position: relative; }
.v-map svg { width: 100%; height: auto; display: block; }
.vz-arc { stroke: var(--brand); stroke-width: 1.2; fill: none; stroke-dasharray: 4 160; stroke-linecap: round; animation: vFlow 6s linear infinite; }
.vz-globe { fill: none; stroke: rgba(255, 255, 255, 0.14); stroke-width: 1; }
.vz-region { fill: rgba(255, 255, 255, 0.75); }
.vz-region--home { fill: var(--brand); }
.vz-region-ring { fill: none; stroke: var(--brand); stroke-width: 1; opacity: 0.4; }

/* ---------- Editorial work ---------- */
.v-work { background: #f8f9fa; padding: 104px 0; }
.v-work-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; margin-bottom: 40px; }

.v-editorial { border-top: 1px solid var(--line); padding-top: 32px; display: grid; grid-template-columns: 1.3fr 1fr; gap: 48px; align-items: center; }
.v-editorial-visual {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  aspect-ratio: 16 / 10;
  background: linear-gradient(160deg, #fff, #f1f3f5);
}
.v-editorial-visual svg { width: 100%; height: 100%; }
.v-editorial h3 { font-size: clamp(1.4rem, 2.6vw, 2rem); margin: 10px 0 12px; }
.v-editorial p { max-width: 48ch; }

/* ---------- Academy ---------- */
.v-academy { background: #fff; border-top: 1px solid var(--line); padding: 88px 0; }
.v-academy-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.v-academy h2 { font-size: clamp(1.6rem, 3vw, 2.3rem); margin-bottom: 14px; }

/* ---------- Final CTA ---------- */
.v-cta {
  background: radial-gradient(900px 500px at 80% 10%, rgba(255, 107, 53, 0.16), transparent 60%), #050608;
  color: #fff;
  padding: 120px 0;
  text-align: center;
}
.v-cta h2 { font-size: clamp(2.2rem, 5vw, 3.6rem); letter-spacing: -0.03em; margin-bottom: 18px; }
.v-cta p { color: var(--night-text); max-width: 56ch; margin: 0 auto 30px; }
.v-cta .v-actions { justify-content: center; }

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
  .v-split, .v-split--reverse { grid-template-columns: 1fr; gap: 36px; }
  .v-split--reverse .v-visual { order: 0; }
  .v-band-grid { grid-template-columns: 1fr; gap: 28px; }
  .v-global-grid { grid-template-columns: 1fr; gap: 40px; }
  .v-editorial { grid-template-columns: 1fr; gap: 28px; }
  .v-academy-grid { grid-template-columns: 1fr; gap: 28px; }
}

@media (max-width: 640px) {
  .v-hero { padding: 88px 0 72px; }
  .v-service, .v-global, .v-work { padding: 68px 0; }
  .v-cta { padding: 80px 0; }
}
