/* ============================================================
   WSE Sydney — v29 Design System
   Premium gold/navy visual language with engineering depth
   ============================================================ */

/* ===== PALETTE & TOKENS ===== */
:root {
  --v29-navy-deep: #0a1628;
  --v29-navy-mid: #1a3a6e;
  --v29-navy-soft: #4a7eb3;
  --v29-gold: #d4af37;
  --v29-gold-light: #f5d76e;
  --v29-gold-dark: #856810;
  --v29-paper: #fafbfc;
  --v29-paper-warm: #fffbe5;
  --v29-paper-warm-2: #fef8d3;
  --v29-text-dark: #0a1628;
  --v29-text-mid: #4b5563;
  --v29-text-light: #6b7280;
  --v29-border: rgba(0,0,0,0.06);
  --v29-border-gold: rgba(212,175,55,0.3);
}

/* ===== TYPOGRAPHY (scoped) ===== */
body.v29 {
  font-family: 'Inter Tight', sans-serif;
  background: #fff;
  color: var(--v29-text-dark);
}

.v29-page {
  font-family: 'Inter Tight', sans-serif;
  color: var(--v29-text-dark);
  background: #fff;
}

.v29-page * { box-sizing: border-box; }
.v29-page .container { max-width: 1180px; margin: 0 auto; padding: 0 1.5rem; }

/* ===== HERO ===== */
.v29-hero {
  position: relative;
  background: #000;
  padding: 6rem 1.5rem 5rem;
  overflow: hidden;
  min-height: 92vh;
  display: flex;
  align-items: center;
}
.v29-hero-bg { position: absolute; inset: 0; overflow: hidden; }

.v29-aurora {
  position: absolute;
  border-radius: 50%;
  filter: blur(100px);
}
.v29-aurora-1 {
  width: 600px; height: 600px;
  background: radial-gradient(circle, var(--v29-gold) 0%, transparent 70%);
  top: -200px; right: -100px;
  opacity: 0.4;
  animation: v29Float 20s ease-in-out infinite;
}
.v29-aurora-2 {
  width: 500px; height: 500px;
  background: radial-gradient(circle, var(--v29-navy-mid) 0%, transparent 70%);
  bottom: -150px; left: -100px;
  opacity: 0.6;
  animation: v29Float 25s ease-in-out infinite reverse;
}
.v29-aurora-3 {
  width: 400px; height: 400px;
  background: radial-gradient(circle, var(--v29-navy-soft) 0%, transparent 70%);
  top: 40%; left: 30%;
  opacity: 0.3;
  animation: v29Float 30s ease-in-out infinite;
  animation-delay: -10s;
}
@keyframes v29Float {
  0%,100% { transform: translate(0,0) scale(1); }
  33% { transform: translate(40px,-40px) scale(1.1); }
  66% { transform: translate(-30px,30px) scale(0.95); }
}

.v29-hero-grid {
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(212,175,55,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(212,175,55,0.04) 1px, transparent 1px);
  background-size: 60px 60px;
  mask-image: radial-gradient(ellipse at center, black 30%, transparent 80%);
  -webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 80%);
}

.v29-pipe-overlay { position: absolute; inset: 0; pointer-events: none; }
.v29-pipe-overlay svg { width: 100%; height: 100%; }
.v29-pipe-flow {
  stroke: url(#v29PipeGradient);
  stroke-width: 2.5;
  fill: none;
  stroke-dasharray: 14 10;
  animation: v29PipeFlow 18s linear infinite;
  filter: drop-shadow(0 0 8px rgba(0, 212, 255, 0.6));
}
.v29-pipe-node {
  fill: #00d4ff;
  filter: drop-shadow(0 0 12px rgba(0, 212, 255, 0.9));
  animation: v29PipePulse 2.5s ease-in-out infinite;
}
.v29-pipe-node:nth-child(odd) { animation-delay: -1.2s; }
@keyframes v29PipeFlow { to { stroke-dashoffset: -300; } }
@keyframes v29PipePulse {
  0%,100% { r: 4; opacity: 0.9; }
  50% { r: 6; opacity: 1; }
}

.v29-hero-content {
  position: relative; z-index: 5;
  max-width: 1180px; margin: 0 auto; padding: 0 1.5rem; width: 100%;
}

.v29-badge {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: linear-gradient(135deg, rgba(212,175,55,0.12), rgba(212,175,55,0.04));
  border: 1px solid rgba(212,175,55,0.4);
  padding: 8px 18px 8px 14px;
  border-radius: 100px;
  margin-bottom: 28px;
  position: relative;
  overflow: hidden;
}
.v29-badge::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(90deg, transparent, rgba(212,175,55,0.3), transparent);
  animation: v29BadgeShine 4s ease-in-out infinite;
}
@keyframes v29BadgeShine {
  0%,100% { transform: translateX(-100%); }
  50% { transform: translateX(100%); }
}
.v29-badge-dot {
  width: 8px; height: 8px;
  background: var(--v29-gold);
  border-radius: 50%;
  box-shadow: 0 0 12px var(--v29-gold);
  animation: v29Pulse 2s infinite;
}
@keyframes v29Pulse {
  0%,100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(1.3); }
}
.v29-badge-text {
  color: var(--v29-gold);
  font-size: 11px;
  letter-spacing: 2.5px;
  font-weight: 700;
  text-transform: uppercase;
  font-family: 'Space Grotesk', sans-serif;
  position: relative; z-index: 1;
}

.v29-hero-title {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 78px;
  font-weight: 200;
  line-height: 0.92;
  letter-spacing: -3px;
  color: white;
  margin-bottom: 24px;
  max-width: 900px;
}
.v29-hero-title .accent {
  font-weight: 700;
  background: linear-gradient(110deg, #d4af37 0%, #f5d76e 25%, #ffffff 50%, #f5d76e 75%, #d4af37 100%);
  background-size: 300% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: v29Shimmer 6s linear infinite;
}
@keyframes v29Shimmer { to { background-position: 300% center; } }
.v29-hero-title .strike {
  position: relative;
  color: rgba(255,255,255,0.4);
}
.v29-hero-title .strike::after {
  content: '';
  position: absolute;
  top: 50%; left: -4px; right: -4px;
  height: 4px;
  background: linear-gradient(90deg, transparent, var(--v29-gold) 20%, var(--v29-gold) 80%, transparent);
  transform: rotate(-3deg);
}

.v29-hero-sub {
  font-size: 19px;
  color: rgba(255,255,255,0.65);
  line-height: 1.55;
  margin-bottom: 36px;
  max-width: 640px;
  font-weight: 300;
}
.v29-hero-sub strong { color: var(--v29-gold); font-weight: 600; }
.v29-hero-sub a {
  color: rgba(255,255,255,0.85);
  text-decoration: underline;
  text-decoration-color: rgba(212,175,55,0.4);
}

.v29-hero-ctas {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 36px;
}

/* ===== BUTTONS ===== */
.v29-btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 18px 32px;
  background: linear-gradient(135deg, var(--v29-gold), var(--v29-gold-light));
  color: var(--v29-navy-deep);
  border-radius: 16px;
  font-family: 'Space Grotesk', sans-serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  text-decoration: none;
  box-shadow: 0 16px 40px -8px rgba(212,175,55,0.5);
  transition: all 0.4s;
  position: relative;
  overflow: hidden;
}
.v29-btn-primary::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
  transition: left 0.6s;
}
.v29-btn-primary:hover {
  transform: translateY(-3px);
  box-shadow: 0 24px 48px -8px rgba(212,175,55,0.7);
}
.v29-btn-primary:hover::before { left: 100%; }
.v29-btn-primary-arrow {
  width: 24px; height: 24px;
  background: var(--v29-navy-deep);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.4s;
}
.v29-btn-primary:hover .v29-btn-primary-arrow {
  transform: translateX(4px) rotate(360deg);
}
.v29-btn-primary-arrow svg { color: var(--v29-gold); }

.v29-btn-secondary {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 18px 28px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.15);
  color: white;
  border-radius: 16px;
  font-family: 'Space Grotesk', sans-serif;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  text-decoration: none;
  backdrop-filter: blur(20px);
  transition: all 0.3s;
}
.v29-btn-secondary:hover {
  background: rgba(212,175,55,0.1);
  border-color: rgba(212,175,55,0.4);
  transform: translateY(-3px);
}

/* Dark-on-light variants for use inside light sections */
.v29-btn-dark {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 24px;
  background: linear-gradient(135deg, var(--v29-navy-deep), var(--v29-navy-mid));
  color: white;
  border-radius: 14px;
  font-family: 'Space Grotesk', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  text-decoration: none;
  box-shadow: 0 12px 32px -8px rgba(10,22,40,0.4);
  transition: all 0.3s;
}
.v29-btn-dark:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 40px -8px rgba(10,22,40,0.5);
}

.v29-hero-trust {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 14px 22px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(212,175,55,0.2);
  border-radius: 100px;
  backdrop-filter: blur(20px);
}
.v29-hero-trust svg { width: 14px; height: 14px; color: var(--v29-gold); }
.v29-hero-trust-text {
  font-size: 12px;
  color: rgba(255,255,255,0.75);
  font-weight: 500;
}
.v29-hero-trust-text strong { color: white; font-weight: 700; }

/* ===== PROOF STRIP ===== */
.v29-proof-strip {
  position: relative;
  margin-top: -50px;
  z-index: 10;
}
.v29-proof-card {
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(30px);
  border: 1px solid rgba(212,175,55,0.2);
  border-radius: 24px;
  padding: 1.75rem 2rem;
  box-shadow: 0 30px 80px -20px rgba(10,22,40,0.25),
              0 0 0 1px rgba(212,175,55,0.08);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}
.v29-proof-item { text-align: center; position: relative; }
.v29-proof-item:not(:last-child)::after {
  content: '';
  position: absolute;
  top: 20%; right: -12px; bottom: 20%;
  width: 1px;
  background: linear-gradient(180deg, transparent, rgba(212,175,55,0.3), transparent);
}
.v29-proof-num {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 38px;
  font-weight: 300;
  color: var(--v29-text-dark);
  line-height: 1;
  letter-spacing: -1.5px;
  margin-bottom: 6px;
}
.v29-proof-num .g {
  background: linear-gradient(135deg, var(--v29-gold), var(--v29-gold-dark));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  font-weight: 700;
}
.v29-proof-lbl {
  font-size: 11px;
  color: var(--v29-text-light);
  font-weight: 600;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  font-family: 'Space Grotesk', sans-serif;
}

/* ===== SECTIONS ===== */
.v29-section { padding: 6rem 0; position: relative; }
.v29-section.dark { background: var(--v29-navy-deep); color: white; }
.v29-section.alt { background: var(--v29-paper); }

.v29-section-tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, rgba(212,175,55,0.12), rgba(212,175,55,0.04));
  border: 1px solid var(--v29-border-gold);
  color: var(--v29-gold-dark);
  padding: 6px 14px;
  border-radius: 100px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  margin-bottom: 18px;
  font-family: 'Space Grotesk', sans-serif;
}
.v29-section.dark .v29-section-tag { color: var(--v29-gold); }

.v29-h2 {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 48px;
  font-weight: 300;
  line-height: 1.05;
  letter-spacing: -1.8px;
  color: var(--v29-text-dark);
  margin-bottom: 16px;
  max-width: 800px;
}
.v29-section.dark .v29-h2 { color: white; }
.v29-h2 .accent {
  font-weight: 700;
  background: linear-gradient(135deg, var(--v29-gold) 0%, var(--v29-gold-dark) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.v29-section.dark .v29-h2 .accent {
  background: linear-gradient(135deg, var(--v29-gold) 0%, var(--v29-gold-light) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.v29-lead {
  font-size: 17px;
  color: var(--v29-text-mid);
  line-height: 1.65;
  max-width: 740px;
  margin-bottom: 48px;
}
.v29-section.dark .v29-lead { color: rgba(255,255,255,0.65); }
.v29-lead a {
  color: var(--v29-navy-mid);
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(26,58,110,0.3);
}
.v29-section.dark .v29-lead a {
  color: var(--v29-gold);
  border-bottom-color: rgba(212,175,55,0.3);
}

/* ===== COMPARISON CARD (Generalist vs Specialist) ===== */
.v29-compare-grid {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 24px;
  align-items: stretch;
}
.v29-compare-card {
  background: white;
  border-radius: 24px;
  padding: 36px 32px;
  position: relative;
  overflow: hidden;
}
.v29-compare-card.them { border: 1px solid #e5e7eb; }
.v29-compare-card.us {
  background: linear-gradient(135deg, var(--v29-navy-deep) 0%, var(--v29-navy-mid) 60%, var(--v29-navy-deep) 100%);
  color: white;
  box-shadow: 0 30px 70px -15px rgba(212,175,55,0.4);
  border: 1px solid var(--v29-border-gold);
}
.v29-compare-card.us::before {
  content: '';
  position: absolute;
  top: -50%; right: -10%;
  width: 300px; height: 300px;
  background: radial-gradient(circle, rgba(212,175,55,0.25) 0%, transparent 70%);
  pointer-events: none;
}
.v29-compare-tag {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 11px;
  letter-spacing: 2px;
  text-transform: uppercase;
  font-weight: 700;
  padding: 6px 14px;
  border-radius: 100px;
  display: inline-block;
  margin-bottom: 18px;
  position: relative;
}
.v29-compare-card.them .v29-compare-tag { background: #f3f4f6; color: var(--v29-text-light); }
.v29-compare-card.us .v29-compare-tag {
  background: rgba(212,175,55,0.15);
  color: var(--v29-gold);
  border: 1px solid var(--v29-border-gold);
}
.v29-compare-title {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 18px;
  letter-spacing: -0.5px;
  position: relative;
}
.v29-compare-card.them .v29-compare-title { color: var(--v29-text-light); }
.v29-compare-card.us .v29-compare-title { color: white; }
.v29-compare-list { list-style: none; padding: 0; position: relative; margin: 0; }
.v29-compare-list li {
  padding: 12px 0 12px 30px;
  position: relative;
  font-size: 14px;
  line-height: 1.5;
  border-bottom: 1px solid rgba(0,0,0,0.05);
}
.v29-compare-card.us .v29-compare-list li {
  border-bottom-color: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.85);
}
.v29-compare-list li:last-child { border-bottom: none; }
.v29-compare-card.them .v29-compare-list li { color: var(--v29-text-light); }
.v29-compare-card.them .v29-compare-list li::before {
  content: '✕';
  position: absolute;
  left: 0; top: 12px;
  width: 20px; height: 20px;
  background: #f3f4f6;
  color: #9ca3af;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
}
.v29-compare-card.us .v29-compare-list li::before {
  content: '';
  position: absolute;
  left: 0; top: 14px;
  width: 18px; height: 18px;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d4af37' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: contain;
}
.v29-compare-divider { display: flex; align-items: center; justify-content: center; }
.v29-compare-vs {
  width: 80px; height: 80px;
  background: linear-gradient(135deg, var(--v29-gold), var(--v29-gold-dark));
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--v29-navy-deep);
  font-family: 'Space Grotesk', sans-serif;
  font-size: 18px;
  font-weight: 800;
  letter-spacing: 1px;
  box-shadow: 0 16px 40px -8px rgba(212,175,55,0.5);
  position: relative;
  animation: v29VsBounce 3s ease-in-out infinite;
}
@keyframes v29VsBounce {
  0%,100% { transform: scale(1); }
  50% { transform: scale(1.08); }
}
.v29-compare-vs::before {
  content: '';
  position: absolute;
  inset: -6px;
  border: 2px solid rgba(212,175,55,0.3);
  border-radius: 50%;
  animation: v29VsRing 2.5s ease-in-out infinite;
}
@keyframes v29VsRing {
  0%,100% { transform: scale(1); opacity: 0.6; }
  50% { transform: scale(1.2); opacity: 0; }
}

/* ===== SERVICES GRID ===== */
.v29-services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.v29-service-card {
  background: white;
  border: 1px solid var(--v29-border);
  border-radius: 20px;
  padding: 28px 24px;
  transition: all 0.4s;
  position: relative;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  display: block;
}
.v29-service-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 3px;
  background: linear-gradient(90deg, var(--v29-gold), transparent);
  opacity: 0;
  transition: opacity 0.4s;
}
.v29-service-card:hover {
  transform: translateY(-6px);
  border-color: var(--v29-border-gold);
  box-shadow: 0 24px 50px -12px rgba(212,175,55,0.2);
}
.v29-service-card:hover::before { opacity: 1; }
.v29-service-icon {
  width: 52px; height: 52px;
  background: linear-gradient(135deg, rgba(212,175,55,0.15), rgba(212,175,55,0.04));
  border: 1px solid var(--v29-border-gold);
  border-radius: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--v29-gold);
  margin-bottom: 18px;
  transition: transform 0.4s;
}
.v29-service-card:hover .v29-service-icon {
  transform: scale(1.1) rotate(-5deg);
}
.v29-service-icon svg { width: 26px; height: 26px; stroke-width: 2.2; }
.v29-service-title {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 19px;
  font-weight: 700;
  color: var(--v29-text-dark);
  margin-bottom: 8px;
  letter-spacing: -0.3px;
}
.v29-service-desc {
  font-size: 13.5px;
  color: var(--v29-text-light);
  line-height: 1.6;
  margin-bottom: 16px;
}
.v29-service-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: 'Space Grotesk', sans-serif;
  font-size: 11px;
  font-weight: 700;
  color: var(--v29-gold);
  letter-spacing: 1.5px;
  text-transform: uppercase;
  transition: gap 0.3s;
}
.v29-service-card:hover .v29-service-link { gap: 10px; }

/* ===== PROCESS TIMELINE ===== */
.v29-process-timeline { position: relative; padding: 32px 0; }
.v29-process-line {
  position: absolute;
  left: 32px; top: 60px; bottom: 60px;
  width: 2px;
  background: linear-gradient(180deg, rgba(212,175,55,0.4), rgba(212,175,55,0.1));
}
.v29-process-step {
  display: flex;
  gap: 28px;
  margin-bottom: 32px;
  position: relative;
  align-items: flex-start;
}
.v29-process-step:last-child { margin-bottom: 0; }
.v29-process-num {
  width: 64px; height: 64px;
  background: linear-gradient(135deg, var(--v29-navy-deep), var(--v29-navy-mid));
  border: 2px solid rgba(212,175,55,0.4);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  position: relative;
  z-index: 2;
  box-shadow: 0 12px 30px -8px rgba(10,22,40,0.4);
}
.v29-process-num span {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 22px;
  font-weight: 700;
  background: linear-gradient(135deg, var(--v29-gold), var(--v29-gold-light));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  letter-spacing: -0.5px;
}
.v29-process-content { flex: 1; padding-top: 8px; }
.v29-process-title {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 22px;
  font-weight: 700;
  color: white;
  margin-bottom: 6px;
  letter-spacing: -0.3px;
}
.v29-process-desc {
  font-size: 14.5px;
  color: rgba(255,255,255,0.65);
  line-height: 1.6;
  max-width: 600px;
}
.v29-process-desc a { color: var(--v29-gold); text-decoration: none; }
.v29-process-time {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(212,175,55,0.1);
  border: 1px solid var(--v29-border-gold);
  color: var(--v29-gold);
  padding: 4px 10px;
  border-radius: 100px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1px;
  margin-top: 8px;
  font-family: 'Space Grotesk', sans-serif;
}
.v29-process-time svg { width: 11px; height: 11px; }

/* ===== FOUNDER / DUAL COL SECTION ===== */
.v29-founder-wrap {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 48px;
  align-items: center;
}
.v29-founder-lead {
  font-size: 16px;
  color: var(--v29-text-mid);
  line-height: 1.7;
  margin-bottom: 20px;
}
.v29-founder-lead strong { color: var(--v29-text-dark); font-weight: 700; }
.v29-founder-creds { list-style: none; padding: 0; margin: 0 0 24px 0; }
.v29-founder-creds li {
  padding: 12px 0 12px 32px;
  position: relative;
  font-size: 14px;
  color: var(--v29-text-mid);
  line-height: 1.55;
  border-bottom: 1px solid rgba(0,0,0,0.05);
}
.v29-founder-creds li:last-child { border-bottom: none; }
.v29-founder-creds li strong { color: var(--v29-text-dark); font-weight: 700; }
.v29-founder-creds li::before {
  content: '';
  position: absolute;
  left: 0; top: 13px;
  width: 20px; height: 20px;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d4af37' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: contain;
}
.v29-founder-quote {
  font-family: 'Space Grotesk', sans-serif;
  font-style: italic;
  font-size: 17px;
  color: var(--v29-text-dark);
  line-height: 1.5;
  padding: 18px 22px;
  background: linear-gradient(135deg, rgba(212,175,55,0.08), rgba(212,175,55,0.02));
  border-left: 3px solid var(--v29-gold);
  border-radius: 12px;
  margin-bottom: 18px;
  font-weight: 400;
}
.v29-founder-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--v29-gold);
  font-family: 'Space Grotesk', sans-serif;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  text-decoration: none;
  transition: gap 0.3s;
}
.v29-founder-link:hover {
  gap: 10px;
  color: var(--v29-gold-dark);
}
.v29-founder-card {
  background: linear-gradient(135deg, var(--v29-navy-deep) 0%, var(--v29-navy-mid) 50%, var(--v29-navy-deep) 100%);
  border-radius: 24px;
  padding: 36px 28px;
  color: white;
  position: relative;
  overflow: hidden;
  box-shadow: 0 30px 70px -15px rgba(10,22,40,0.4);
}
.v29-founder-card::before {
  content: '';
  position: absolute;
  top: -60%; right: -10%;
  width: 300px; height: 300px;
  background: radial-gradient(circle, rgba(212,175,55,0.2) 0%, transparent 70%);
  pointer-events: none;
}
.v29-founder-stat-block { position: relative; z-index: 2; }
.v29-founder-stat { padding: 18px 0; text-align: center; }
.v29-founder-divider {
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(212,175,55,0.3), transparent);
}
.v29-founder-stat-val {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 40px;
  font-weight: 300;
  color: white;
  line-height: 1;
  letter-spacing: -1.5px;
  margin-bottom: 6px;
}
.v29-founder-stat-val .g {
  background: linear-gradient(135deg, var(--v29-gold), var(--v29-gold-light));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  font-weight: 700;
}
.v29-founder-stat-lbl {
  font-size: 11px;
  color: rgba(255,255,255,0.55);
  font-weight: 600;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  font-family: 'Space Grotesk', sans-serif;
}

/* ===== FINAL CTA ===== */
.v29-final-cta {
  background: linear-gradient(135deg, #000000 0%, var(--v29-navy-deep) 30%, var(--v29-navy-mid) 70%, var(--v29-navy-deep) 100%);
  border-radius: 32px;
  padding: 4rem 3rem;
  color: white;
  position: relative;
  overflow: hidden;
  text-align: center;
  box-shadow: 0 40px 100px -20px rgba(0,0,0,0.5);
  margin: 80px auto;
  max-width: 1100px;
}
.v29-final-cta::before {
  content: '';
  position: absolute;
  top: -60%; right: -10%;
  width: 600px; height: 600px;
  background: radial-gradient(circle, rgba(212,175,55,0.25) 0%, transparent 60%);
  pointer-events: none;
}
.v29-final-cta::after {
  content: '';
  position: absolute;
  bottom: -60%; left: -10%;
  width: 500px; height: 500px;
  background: radial-gradient(circle, rgba(26,58,110,0.4) 0%, transparent 60%);
  pointer-events: none;
}
.v29-cta-content { position: relative; z-index: 3; }
.v29-cta-tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(212,175,55,0.15);
  border: 1px solid rgba(212,175,55,0.4);
  color: var(--v29-gold-light);
  padding: 7px 16px;
  border-radius: 100px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  margin-bottom: 22px;
  font-family: 'Space Grotesk', sans-serif;
}
.v29-cta-h2 {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 52px;
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -2px;
  margin-bottom: 18px;
  color: #ffffff;
  text-shadow: 0 2px 20px rgba(0,0,0,0.5);
}
.v29-cta-h2 .accent {
  font-weight: 700;
  background: linear-gradient(135deg, var(--v29-gold), var(--v29-gold-light));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.v29-cta-sub {
  font-size: 17px;
  color: rgba(255,255,255,0.8);
  line-height: 1.6;
  margin-bottom: 36px;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}
.v29-cta-buttons {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: 30px;
}
.v29-cta-contact {
  display: flex;
  gap: 30px;
  justify-content: center;
  flex-wrap: wrap;
  padding-top: 30px;
  border-top: 1px solid rgba(255,255,255,0.08);
  font-size: 13px;
  color: rgba(255,255,255,0.7);
}
.v29-cta-contact a {
  color: var(--v29-gold);
  text-decoration: none;
  font-weight: 600;
  transition: color 0.2s;
}
.v29-cta-contact a:hover { color: var(--v29-gold-light); }
.v29-cta-contact-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.v29-cta-contact-item svg { width: 14px; height: 14px; color: var(--v29-gold); }

/* ===== PROSE CONTENT (for hub/about/method body copy) ===== */
.v29-prose {
  font-size: 16px;
  line-height: 1.75;
  color: var(--v29-text-mid);
  max-width: 760px;
}
.v29-prose p { margin: 0 0 1.2em 0; }
.v29-prose strong { color: var(--v29-text-dark); font-weight: 700; }
.v29-prose a {
  color: var(--v29-navy-mid);
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(26,58,110,0.3);
}
.v29-prose a:hover { color: var(--v29-gold-dark); border-bottom-color: var(--v29-gold); }
.v29-prose h3 {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 26px;
  font-weight: 700;
  color: var(--v29-text-dark);
  margin: 2em 0 0.6em 0;
  letter-spacing: -0.5px;
}
.v29-prose ul { margin: 0 0 1.4em 0; padding: 0; list-style: none; }
.v29-prose ul li {
  padding: 8px 0 8px 28px;
  position: relative;
  line-height: 1.6;
}
.v29-prose ul li::before {
  content: '';
  position: absolute;
  left: 0; top: 14px;
  width: 14px; height: 14px;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d4af37' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: contain;
}
.v29-section.dark .v29-prose { color: rgba(255,255,255,0.7); }
.v29-section.dark .v29-prose strong { color: white; }
.v29-section.dark .v29-prose h3 { color: white; }
.v29-section.dark .v29-prose a { color: var(--v29-gold); border-bottom-color: rgba(212,175,55,0.3); }

/* ===== BREADCRUMB (replaces old) ===== */
.v29-breadcrumb {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.55);
  margin-bottom: 28px;
  position: relative;
  z-index: 5;
}
.v29-breadcrumb a {
  color: rgba(255,255,255,0.55);
  text-decoration: none;
}
.v29-breadcrumb a:hover { color: var(--v29-gold); }
.v29-breadcrumb .sep { margin: 0 8px; color: rgba(255,255,255,0.3); }
.v29-breadcrumb .current { color: var(--v29-gold); }

/* Light-version breadcrumb */
.v29-breadcrumb-light {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.1em;
  color: var(--v29-text-light);
  margin-bottom: 28px;
}
.v29-breadcrumb-light a { color: var(--v29-text-light); text-decoration: none; }
.v29-breadcrumb-light a:hover { color: var(--v29-gold-dark); }
.v29-breadcrumb-light .sep { margin: 0 8px; color: #d1d5db; }
.v29-breadcrumb-light .current { color: var(--v29-text-dark); font-weight: 600; }

/* ===== ESTIMATOR NOTEBOOK ELEMENTS — Preserved from v28 ===== */
.v29-page .schematic-figure {
  margin: 40px 0;
  padding: 28px 32px;
  background: var(--v29-paper);
  border: 1px solid var(--v29-border);
  border-radius: 18px;
  position: relative;
}
.v29-page .schematic-figure::before {
  content: '';
  position: absolute;
  inset: 6px;
  border: 1px dashed rgba(212,175,55,0.15);
  border-radius: 14px;
  pointer-events: none;
}
.v29-page .schematic-label {
  display: block;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--v29-gold-dark);
  margin-bottom: 16px;
}
.v29-page .schematic-caption {
  font-family: 'Caveat', cursive;
  font-size: 18px;
  color: var(--v29-gold-dark);
  margin-top: 16px;
  text-align: center;
  opacity: 0.85;
}
.v29-page .schematic-svg {
  width: 100%;
  height: auto;
  display: block;
  max-width: 600px;
  margin: 0 auto;
}
.v29-page .schematic-svg .schematic-line { fill: none; stroke: var(--v29-navy-mid); stroke-width: 1.5; }
.v29-page .schematic-svg .schematic-line-thick { fill: none; stroke: var(--v29-navy-deep); stroke-width: 2.5; }
.v29-page .schematic-svg .schematic-line-light { fill: none; stroke: rgba(26,58,110,0.4); stroke-width: 1; stroke-dasharray: 3 3; }
.v29-page .schematic-svg .schematic-fill-light { fill: rgba(26,58,110,0.06); }
.v29-page .schematic-svg .schematic-fill-tint { fill: rgba(212,168,76,0.08); }
.v29-page .schematic-svg .schematic-label-text { font-family: 'JetBrains Mono', monospace; font-size: 11px; fill: var(--v29-text-dark); }
.v29-page .schematic-svg .schematic-spec-text { font-family: 'JetBrains Mono', monospace; font-size: 10px; fill: var(--v29-text-light); letter-spacing: 0.04em; }
.v29-page .schematic-svg .schematic-warn-text { font-family: 'JetBrains Mono', monospace; font-size: 11px; fill: var(--v29-gold-dark); font-weight: 500; letter-spacing: 0.04em; }
.v29-page .schematic-svg .schematic-callout { stroke: rgba(212,175,55,0.45); stroke-width: 1; fill: none; stroke-dasharray: 2 3; }
.v29-page .schematic-svg .schematic-arrow { fill: var(--v29-navy-mid); }
.v29-page .schematic-svg .schematic-warn-line { fill: none; stroke: var(--v29-gold); stroke-width: 1.5; }

.v29-page .marginalia {
  font-family: 'Caveat', cursive;
  font-size: 19px;
  line-height: 1.4;
  color: var(--v29-gold-dark);
  border-left: 2px solid rgba(212,175,55,0.4);
  padding: 14px 0 14px 18px;
  margin: 32px 0;
  position: relative;
  max-width: 520px;
  transform: rotate(-0.3deg);
}
.v29-page .marginalia::before {
  content: '✎';
  position: absolute;
  left: -14px; top: 12px;
  background: #fff;
  color: var(--v29-gold-dark);
  font-size: 14px;
  width: 24px;
  text-align: center;
  font-family: 'JetBrains Mono', monospace;
}
.v29-section.dark .v29-page .marginalia::before,
.v29-page .v29-section.dark .marginalia::before {
  background: var(--v29-navy-deep);
}
.v29-page .marginalia-author {
  display: block;
  font-size: 13px;
  color: rgba(133, 104, 16, 0.6);
  margin-top: 6px;
  letter-spacing: 0.04em;
}

.v29-page .spec-pill {
  display: inline-block;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.88em;
  font-weight: 500;
  padding: 1px 8px;
  margin: 0 1px;
  background: rgba(212,175,55,0.1);
  border: 1px solid rgba(212,175,55,0.3);
  border-radius: 3px;
  color: var(--v29-gold-dark);
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.v29-section.dark .v29-page .spec-pill {
  color: var(--v29-gold);
  background: rgba(212,175,55,0.15);
}

/* ===== NAV OVERRIDE — Premium feel ===== */
.v29-page .site-nav {
  background: rgba(10, 22, 40, 0.95);
  backdrop-filter: blur(20px);
  border-bottom: 1px solid rgba(212,175,55,0.15);
}

/* ===== MOBILE ===== */
@media (max-width: 880px) {
  .v29-hero { padding: 4rem 1.25rem 4rem; min-height: auto; }
  .v29-hero-title { font-size: 44px; letter-spacing: -1.5px; }
  .v29-hero-sub { font-size: 16px; }
  .v29-hero-ctas { flex-direction: column; }
  .v29-btn-primary, .v29-btn-secondary { justify-content: center; width: 100%; }
  .v29-proof-card { grid-template-columns: 1fr 1fr; padding: 1.25rem; gap: 1.25rem; }
  .v29-proof-item:not(:last-child)::after { display: none; }
  .v29-proof-num { font-size: 28px; }
  .v29-section { padding: 4rem 0; }
  .v29-h2 { font-size: 32px; }
  .v29-lead { font-size: 15px; margin-bottom: 32px; }
  .v29-compare-grid { grid-template-columns: 1fr; gap: 14px; }
  .v29-compare-divider { transform: rotate(90deg); margin: -10px 0; }
  .v29-compare-vs { width: 60px; height: 60px; font-size: 14px; }
  .v29-services-grid { grid-template-columns: 1fr; }
  .v29-process-line { left: 24px; }
  .v29-process-num { width: 48px; height: 48px; }
  .v29-process-num span { font-size: 18px; }
  .v29-process-title { font-size: 18px; }
  .v29-founder-wrap { grid-template-columns: 1fr; gap: 28px; }
  .v29-founder-quote { font-size: 15px; }
  .v29-founder-stat-val { font-size: 30px; }
  .v29-final-cta { padding: 2.5rem 1.75rem; border-radius: 24px; }
  .v29-cta-h2 { font-size: 32px; }
  .v29-cta-buttons { flex-direction: column; }
  .v29-cta-buttons a { justify-content: center; }
  .v29-prose { font-size: 15px; }
}

/* ============================================================
   v30 — Page-Specific Hero Animation Extensions
   ============================================================ */

/* Reusable line/node classes for hero SVGs */
.v29-pipe-overlay .h-line {
  stroke: url(#v29PipeGradient);
  stroke-width: 2.5;
  fill: none;
  stroke-dasharray: 14 10;
  animation: v29PipeFlow 18s linear infinite;
  filter: drop-shadow(0 0 8px rgba(0, 212, 255, 0.6));
}
.v29-pipe-overlay .h-line-thick {
  stroke: url(#v29PipeGradient);
  stroke-width: 4;
  fill: none;
  filter: drop-shadow(0 0 10px rgba(0, 212, 255, 0.7));
}
.v29-pipe-overlay .h-line-static {
  stroke: rgba(212,175,55,0.3);
  stroke-width: 1.5;
  fill: none;
  stroke-dasharray: 4 4;
}
.v29-pipe-overlay .h-node-pulse {
  fill: #00d4ff;
  filter: drop-shadow(0 0 12px rgba(0,212,255,0.9));
  animation: v29PipePulse 2.5s ease-in-out infinite;
}
.v29-pipe-overlay .h-node-gold {
  fill: var(--v29-gold);
  filter: drop-shadow(0 0 12px rgba(212,175,55,0.9));
  animation: v29PipePulse 2.5s ease-in-out infinite;
}
.v29-pipe-overlay .h-label-mono {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  fill: rgba(212,175,55,0.55);
  letter-spacing: 0.15em;
  text-transform: uppercase;
}
.v29-pipe-overlay .h-fill-ground {
  fill: rgba(212,175,55,0.04);
  stroke: rgba(212,175,55,0.2);
  stroke-width: 1;
  stroke-dasharray: 3 3;
}

/* ============================================================
   v31 — Capability Snapshot Band (scannable expertise)
   ============================================================ */
.v29-capability-band {
  background: var(--v29-navy-deep);
  border-top: 1px solid rgba(212,175,55,0.15);
  border-bottom: 1px solid rgba(212,175,55,0.15);
  padding: 40px 0;
  position: relative;
  overflow: hidden;
}
.v29-capability-band::before {
  content: '';
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(212,175,55,0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(212,175,55,0.03) 1px, transparent 1px);
  background-size: 40px 40px;
  pointer-events: none;
}
.v29-cap-inner { position: relative; z-index: 2; }
.v29-cap-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--v29-gold);
  margin-bottom: 18px;
  display: block;
}
.v29-cap-groups {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 28px;
}
.v29-cap-group-title {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.5);
  margin-bottom: 12px;
}
.v29-cap-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.v29-cap-chip {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  font-weight: 500;
  padding: 5px 11px;
  background: rgba(212,175,55,0.08);
  border: 1px solid rgba(212,175,55,0.25);
  border-radius: 6px;
  color: var(--v29-gold-light);
  letter-spacing: 0.02em;
  white-space: nowrap;
  transition: all 0.2s;
}
.v29-cap-chip:hover {
  background: rgba(212,175,55,0.16);
  border-color: rgba(212,175,55,0.5);
}
.v29-cap-chip.cyan {
  background: rgba(0,212,255,0.06);
  border-color: rgba(0,212,255,0.25);
  color: #7fdfff;
}
@media (max-width: 880px) {
  .v29-capability-band { padding: 28px 0; }
  .v29-cap-groups { grid-template-columns: 1fr 1fr; gap: 20px; }
}
@media (max-width: 560px) {
  .v29-cap-groups { grid-template-columns: 1fr; }
}

/* ============================================================
   v31 — Bridge: style preserved .about-section bodies to match v29
   (used on hub pages where rich content is kept in place)
   ============================================================ */
.v29-page .about-page,
.v29-page.about-page { background: #fff; }
.v29-page .about-section {
  max-width: 1180px;
  margin: 0 auto;
  padding: 28px 1.5rem;
}
.v29-page .about-h2.v29-inline-h2 {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 32px;
  font-weight: 700;
  letter-spacing: -0.8px;
  color: var(--v29-text-dark);
  margin-bottom: 18px;
  line-height: 1.1;
}
.v29-page .about-section > p,
.v29-page .about-section > .about-list li {
  font-size: 16px;
  line-height: 1.75;
  color: var(--v29-text-mid);
}
.v29-page .about-section > p strong,
.v29-page .about-section .about-list li strong { color: var(--v29-text-dark); }
.v29-page .about-section a { color: var(--v29-navy-mid); border-bottom: 1px solid rgba(26,58,110,0.25); text-decoration: none; }
.v29-page .about-section a:hover { color: var(--v29-gold-dark); border-bottom-color: var(--v29-gold); }
.v29-page .about-emphasis {
  font-size: 18px;
  color: var(--v29-text-dark);
  font-weight: 500;
  border-left: 3px solid var(--v29-gold);
  padding-left: 18px;
  margin: 22px 0;
}

/* ============================================================
   v31 — Professional Technical Diagrams (tech-figure)
   Clean flat technical-illustration on dark navy
   ============================================================ */
.tech-figure {
  margin: 40px 0;
  background: linear-gradient(160deg, #0a1628 0%, #0d1d35 100%);
  border: 1px solid rgba(212,175,55,0.22);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 24px 60px -24px rgba(0,0,0,0.5);
}
.tech-figure-head {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 24px;
  border-bottom: 1px solid rgba(212,175,55,0.15);
  background: rgba(0,0,0,0.2);
}
.tech-figure-tag {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  color: var(--v29-navy-deep);
  background: linear-gradient(135deg, var(--v29-gold), var(--v29-gold-light));
  padding: 4px 10px;
  border-radius: 5px;
}
.tech-figure-title {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: rgba(255,255,255,0.88);
}
.tech-figure-body { padding: 28px 24px 12px; }
.tech-svg { width: 100%; height: auto; display: block; max-width: 640px; margin: 0 auto; }
.tech-figure-cap {
  font-family: 'Inter Tight', sans-serif;
  font-size: 13px;
  color: rgba(255,255,255,0.6);
  text-align: center;
  padding: 14px 24px 22px;
  letter-spacing: 0.01em;
}
.tech-figure-cap strong { color: var(--v29-gold-light); font-weight: 600; }

/* SVG element classes */
.tech-box { fill: rgba(255,255,255,0.03); stroke: rgba(255,255,255,0.35); stroke-width: 1.3; }
.tech-box-soft { fill: rgba(255,255,255,0.05); stroke: rgba(255,255,255,0.3); stroke-width: 1.2; }
.tech-box-gold { fill: rgba(212,175,55,0.12); stroke: var(--v29-gold); stroke-width: 1.4; }
.tech-box-cyan { fill: rgba(0,212,255,0.10); stroke: #00d4ff; stroke-width: 1.5; }
.tech-gasket { fill: rgba(212,175,55,0.4); stroke: var(--v29-gold); stroke-width: 0.8; }
.tech-divider { stroke: rgba(255,255,255,0.18); stroke-width: 0.8; }
.tech-hatch { stroke: rgba(212,175,55,0.4); stroke-width: 0.8; }
.tech-ground { fill: rgba(255,255,255,0.025); }
.tech-thresh { stroke: rgba(212,175,55,0.3); stroke-width: 1; stroke-dasharray: 6 5; }
.tech-lead { stroke: rgba(212,175,55,0.5); stroke-width: 1; }
.tech-mbox { fill: rgba(0,212,255,0.06); stroke: rgba(0,212,255,0.4); stroke-width: 1; }

.tech-t-part { font-family: 'Space Grotesk', sans-serif; font-size: 11px; font-weight: 600; fill: rgba(255,255,255,0.92); letter-spacing: 0.02em; }
.tech-t-num { font-family: 'JetBrains Mono', monospace; font-size: 13px; font-weight: 700; fill: var(--v29-gold-light); }
.tech-t-spec { font-family: 'JetBrains Mono', monospace; font-size: 11px; fill: rgba(255,255,255,0.55); letter-spacing: 0.02em; }
.tech-t-warn { font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 600; fill: var(--v29-gold); letter-spacing: 0.08em; }
.tech-t-main { font-family: 'JetBrains Mono', monospace; font-size: 11px; fill: #7fdfff; letter-spacing: 0.04em; }
.tech-t-axis { font-family: 'JetBrains Mono', monospace; font-size: 10px; fill: rgba(212,175,55,0.7); letter-spacing: 0.15em; text-anchor: middle; }
.tech-t-depth { font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 700; fill: var(--v29-gold-light); text-anchor: end; }
.tech-t-mbox { font-family: 'Space Grotesk', sans-serif; font-size: 11px; font-weight: 600; fill: rgba(255,255,255,0.85); }
.tech-t-mspec { font-family: 'JetBrains Mono', monospace; font-size: 9px; fill: rgba(255,255,255,0.5); }

@media (max-width: 880px) {
  .tech-figure-body { padding: 18px 12px 8px; }
  .tech-figure-title { font-size: 12px; }
  .tech-figure-head { padding: 12px 16px; }
}

/* ============================================================
   v42 — LIGHT-BACKGROUND READABILITY FIX (comprehensive)
   Every helper component inherited from the original BLACK theme
   is rescoped here for the WHITE .v29-page body. Uses !important
   only where base styles.css uses !important (e.g. .about-emphasis).
   Fix-once: applies to every current & future .v29-page.
   ============================================================ */

/* --- Body text & lists: guarantee readable on white --- */
.v29-page .about-section p,
.v29-page .about-section li,
.v29-page .about-section .about-list li {
  color: var(--v29-text-mid) !important;
}
.v29-page .about-section p strong,
.v29-page .about-section li strong,
.v29-page .about-section .about-list li strong { color: var(--v29-text-dark) !important; }
.v29-page .about-section .about-list li::before { color: var(--v29-gold-dark) !important; }
.v29-page .about-section a {
  color: var(--v29-navy-mid) !important;
  border-bottom: 1px solid rgba(26,58,110,0.28);
}
.v29-page .about-section a:hover { color: var(--v29-gold-dark) !important; border-bottom-color: var(--v29-gold); }

/* --- "Level of attention" emphasis card (defeats base !important) --- */
.v29-page .about-emphasis {
  color: var(--v29-text-dark) !important;
  border-left: 3px solid var(--v29-gold) !important;
  background: linear-gradient(135deg, rgba(212,175,55,0.08), rgba(212,175,55,0.02));
  padding: 18px 22px !important;
  border-radius: 10px;
}
.v29-page .about-emphasis a { color: var(--v29-navy-mid) !important; }

/* --- Standalone helper blocks: align to the 1180px reading column --- */
.v29-page .stub-scope,
.v29-page .stub-coming-soon,
.v29-page .resonates-cta {
  max-width: 1180px;
  margin-left: auto;
  margin-right: auto;
}

/* --- Related disciplines / scope grid --- */
.v29-page .stub-scope h3 { color: var(--v29-gold-dark) !important; }
.v29-page .stub-scope-item {
  border: 1px solid rgba(10,22,40,0.12);
  background: #fff;
  color: var(--v29-text-mid);
  box-shadow: 0 4px 14px -8px rgba(10,22,40,0.18);
}
.v29-page .stub-scope-item:hover {
  border-color: rgba(212,175,55,0.5);
  background: #fff;
  box-shadow: 0 14px 30px -12px rgba(212,175,55,0.3);
  transform: translateY(-3px);
}
.v29-page .stub-scope-item .num { color: var(--v29-gold-dark) !important; opacity: 1; }
.v29-page .stub-scope-item span[style] { color: #6b7280 !important; }

/* --- "What does in-house cost" callout --- */
.v29-page .stub-coming-soon {
  background: linear-gradient(135deg, rgba(212,175,55,0.1), rgba(212,175,55,0.03));
  border: 1px solid rgba(212,175,55,0.3);
  border-left: 3px solid var(--v29-gold);
}
.v29-page .stub-coming-soon .label { color: var(--v29-gold-dark) !important; }
.v29-page .stub-coming-soon .body { color: var(--v29-text-mid) !important; }
.v29-page .stub-coming-soon .body strong { color: var(--v29-text-dark) !important; }
.v29-page .stub-coming-soon .body a { color: var(--v29-navy-mid) !important; border-bottom: 1px solid rgba(26,58,110,0.3); }

/* --- Mid-page CTA band: dark accent block, centred to match page --- */
.v29-page .midpage-cta {
  background: linear-gradient(135deg, rgba(10,22,40,0.97), rgba(26,58,110,0.92)) !important;
  border: 1px solid rgba(212,175,55,0.3) !important;
  border-left: 3px solid var(--v29-gold) !important;
  max-width: 1180px !important;
  margin: 48px auto !important;
}
.v29-page .midpage-cta-label { color: var(--v29-gold) !important; }
.v29-page .midpage-cta-text { color: rgba(255,255,255,0.88) !important; }
.v29-page .midpage-cta-text strong { color: #fff !important; }

/* --- "If this resonates" CTA: dark accent block --- */
.v29-page .resonates-cta {
  background: linear-gradient(135deg, rgba(10,22,40,0.97), rgba(26,58,110,0.92)) !important;
  border: 1px solid rgba(212,175,55,0.3) !important;
  border-left: 3px solid var(--v29-gold) !important;
}
.v29-page .resonates-cta .label { color: var(--v29-gold) !important; }
.v29-page .resonates-cta .body { color: rgba(255,255,255,0.88) !important; }
.v29-page .resonates-cta a.resonates-link { color: var(--v29-gold) !important; }
.v29-page .resonates-cta a.resonates-link:hover { color: var(--v29-gold-light) !important; }

/* --- Mid-page stub buttons on light --- */
.v29-page .stub-cta-primary {
  background: linear-gradient(135deg, var(--v29-gold), var(--v29-gold-light)) !important;
  color: var(--v29-navy-deep) !important;
  border: none !important;
}
.v29-page .stub-cta-secondary {
  color: var(--v29-navy-mid) !important;
  border: 1px solid rgba(26,58,110,0.3) !important;
  background: #fff !important;
}
.v29-page .stub-cta-secondary:hover {
  border-color: rgba(212,175,55,0.5) !important;
  background: rgba(212,175,55,0.06) !important;
}

/* --- Tech figures: ensure caption & labels readable on white --- */
.v29-page .tech-figure {
  background: linear-gradient(135deg, #0a1628 0%, #0d1d35 100%) !important;
  border: 1px solid rgba(212,175,55,0.25) !important;
  border-radius: 16px;
  overflow: hidden;
  margin: 32px auto;
  max-width: 760px;
  box-shadow: 0 20px 50px -20px rgba(10,22,40,0.4);
}
.v29-page .tech-figure-head { border-bottom: 1px solid rgba(212,175,55,0.15); }
.v29-page .tech-figure-cap { color: rgba(255,255,255,0.65) !important; }
.v29-page .tech-figure-cap strong { color: #fff !important; }

/* ============================================================
   v43 — DYNAMIC / EYE-CATCHING CTA BUTTONS
   Tasteful shine sweep + soft breathing glow on primary CTAs.
   Applies to .v29-btn-primary and .prefooter-btn-primary site-wide.
   ============================================================ */
.v29-btn-primary,
.prefooter-btn-primary,
.v29-page .stub-cta-primary {
  position: relative;
  overflow: hidden;
  animation: ctaGlow 3.2s ease-in-out infinite;
}
/* the moving shine band */
.v29-btn-primary::after,
.prefooter-btn-primary::after,
.v29-page .stub-cta-primary::after {
  content: "";
  position: absolute;
  top: 0;
  left: -130%;
  width: 60%;
  height: 100%;
  background: linear-gradient(100deg, transparent 0%, rgba(255,255,255,0.55) 50%, transparent 100%);
  transform: skewX(-18deg);
  animation: ctaShine 3.2s ease-in-out infinite;
  pointer-events: none;
}
@keyframes ctaShine {
  0%   { left: -130%; }
  55%  { left: 130%; }
  100% { left: 130%; }
}
@keyframes ctaGlow {
  0%, 100% { box-shadow: 0 16px 40px -8px rgba(212,175,55,0.45); }
  50%      { box-shadow: 0 16px 48px -6px rgba(212,175,55,0.75); }
}
/* keep hover feel snappy and on top of the idle animation */
.v29-btn-primary:hover,
.prefooter-btn-primary:hover,
.v29-page .stub-cta-primary:hover {
  animation: none;
  box-shadow: 0 22px 50px -8px rgba(212,175,55,0.7);
}
/* respect reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
  .v29-btn-primary, .prefooter-btn-primary, .v29-page .stub-cta-primary { animation: none; }
  .v29-btn-primary::after, .prefooter-btn-primary::after, .v29-page .stub-cta-primary::after { display: none; }
}

/* ============================================================
   v47 — LEAD PARAGRAPH ALIGNMENT FIX
   The intro lead sits in .container (1720px) > .v29-prose (760px, not centred),
   so it hugged the left while .about-section blocks (1180px centred) sat centred.
   Align the lead to the SAME 1180px centred column as the body sections.
   ============================================================ */
.v29-page .v29-section .container > .v29-prose {
  max-width: 1180px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 0;
  padding-right: 0;
}
/* keep the reading measure comfortable within that centred column */
.v29-page .v29-section .container > .v29-prose p {
  max-width: 900px;
}
/* converted hubs (sewer/pump-stations/stormwater) wrap body in .about-container
   (max-width 920px) which indented sections to ~228px, out of line with the lead.
   Widen it to the 1180px column so sections align with the lead paragraph. */
.v29-page .v29-section .container > .about-container {
  max-width: 1180px;
  padding: 0;
}
/* drop the section's horizontal inset so its text lines up with the lead's left edge */
.v29-page .v29-section .container > .about-container > .about-section {
  padding-left: 0;
  padding-right: 0;
}

/* ============================================================
   v47 — LOWER-HALF CTA (after Authority fluency)
   Fills the CTA gap in the bottom half of hub pages. Dark gold-
   accented band, aligned to the 1180px content column.
   ============================================================ */
.v29-page .lower-cta {
  max-width: 1180px;
  margin: 56px auto;
  background: linear-gradient(135deg, #0a1628 0%, #14294a 100%);
  border: 1px solid rgba(212,175,55,0.3);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 24px 60px -24px rgba(10,22,40,0.5);
}
.v29-page .lower-cta-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  padding: 36px 40px;
  flex-wrap: wrap;
}
.v29-page .lower-cta-text { flex: 1 1 460px; }
.v29-page .lower-cta-tag {
  display: inline-block;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.16em;
  color: var(--v29-gold);
  margin-bottom: 10px;
}
.v29-page .lower-cta-h2 {
  font-family: 'Space Grotesk', sans-serif;
  font-size: clamp(22px, 3vw, 30px);
  font-weight: 700;
  color: #fff;
  margin: 0 0 10px 0;
  line-height: 1.15;
}
.v29-page .lower-cta-sub {
  font-size: 15px;
  line-height: 1.65;
  color: rgba(255,255,255,0.8);
  margin: 0;
  max-width: 620px;
}
.v29-page .lower-cta-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  flex: 0 0 auto;
}
.v29-page .lower-cta-actions .v29-btn-secondary {
  color: var(--v29-gold);
  border: 1px solid rgba(212,175,55,0.4);
  text-align: center;
}
.v29-page .lower-cta-actions .v29-btn-secondary:hover {
  background: rgba(212,175,55,0.1);
  border-color: var(--v29-gold);
}
@media (max-width: 760px) {
  .v29-page .lower-cta-inner { flex-direction: column; align-items: flex-start; padding: 28px 24px; }
  .v29-page .lower-cta-actions { flex-direction: row; flex-wrap: wrap; }
}

/* ============================================================
   v53 — FAQ & GLOSSARY READABILITY (on white .v29-page)
   These content pages used dark-theme text colours; rescope for
   the white page so questions, answers, and definitions read.
   ============================================================ */

/* --- FAQ accordion --- */
.v29-page .faq-section-label { color: var(--v29-gold-dark) !important; }
.v29-page .faq-item { border-top: 1px solid rgba(10,22,40,0.12); }
.v29-page .faq-item:last-child { border-bottom: 1px solid rgba(10,22,40,0.12); }
.v29-page .faq-question { color: var(--v29-text-dark) !important; }
.v29-page .faq-item summary:hover .faq-question { color: var(--v29-navy-mid) !important; }
.v29-page .faq-item[open] .faq-question { color: var(--v29-gold-dark) !important; }
.v29-page .faq-item summary::after { border-right-color: var(--v29-gold); border-bottom-color: var(--v29-gold); }
.v29-page .faq-item[open] summary::after { border-color: var(--v29-gold-dark); }
.v29-page .faq-answer, .v29-page .faq-answer p { color: var(--v29-text-mid) !important; }
.v29-page .faq-answer strong { color: var(--v29-text-dark) !important; }
.v29-page .faq-answer a, .v29-page .faq-inline-cta { color: var(--v29-navy-mid) !important; }
.v29-page .faq-inline-cta { font-weight: 600; }
.v29-page .faq-inline-cta:hover { color: var(--v29-gold-dark) !important; }
.v29-page .faq-control-btn {
  color: var(--v29-navy-mid) !important;
  border: 1px solid rgba(26,58,110,0.3) !important;
  background: #fff !important;
}
.v29-page .faq-control-btn:hover { border-color: rgba(212,175,55,0.5) !important; background: rgba(212,175,55,0.06) !important; }

/* --- Glossary --- */
.v29-page .glossary-jump {
  background: linear-gradient(135deg, rgba(212,175,55,0.08), rgba(212,175,55,0.02));
  border: 1px solid rgba(212,175,55,0.25);
  border-radius: 12px;
}
.v29-page .glossary-jump-label { color: var(--v29-gold-dark) !important; }
.v29-page .glossary-jump-links a {
  color: var(--v29-navy-mid) !important;
  border: 1px solid rgba(26,58,110,0.25);
  background: #fff;
}
.v29-page .glossary-jump-links a:hover { border-color: rgba(212,175,55,0.5); background: rgba(212,175,55,0.06); color: var(--v29-gold-dark) !important; }
.v29-page .glossary-h2 { color: var(--v29-text-dark) !important; }
.v29-page .glossary-section { border-top: 1px solid rgba(10,22,40,0.1); }
.v29-page .glossary-list dt { color: var(--v29-gold-dark) !important; }
.v29-page .glossary-list dd { color: var(--v29-text-mid) !important; }
.v29-page .glossary-list dd a { color: var(--v29-navy-mid) !important; border-bottom: 1px solid rgba(26,58,110,0.25); }
.v29-page .glossary-list dd a:hover { color: var(--v29-gold-dark) !important; }
.v29-page .glossary-list dd strong { color: var(--v29-text-dark) !important; }

/* ============================================================
   v54 — CONTACT PAGE (form as dark action card on white)
   The form is built for a dark panel; present it as a navy card
   so its light-on-dark inputs read perfectly, and fix the
   surrounding labels, info box, and direct-contact cards.
   ============================================================ */
.v29-page .form-card {
  background: linear-gradient(135deg, #0a1628 0%, #14294a 100%) !important;
  border: 1px solid rgba(212,175,55,0.35) !important;
  border-radius: 18px;
  box-shadow: 0 24px 60px -24px rgba(10,22,40,0.5);
}
.v29-page .form-label-top { color: var(--v29-gold) !important; }
.v29-page .form-sub { color: rgba(255,255,255,0.7) !important; }
.v29-page .form-group label { color: var(--v29-gold-light) !important; }
.v29-page .form-group input,
.v29-page .form-group select,
.v29-page .form-group textarea {
  color: #fff !important;
  border-bottom: 1px solid rgba(212,175,55,0.3) !important;
}
.v29-page .form-group input:focus,
.v29-page .form-group select:focus,
.v29-page .form-group textarea:focus {
  border-bottom-color: var(--v29-gold) !important;
}
.v29-page .form-group select option { background: #0a1628; color: #fff; }
/* the gold submit button with the dynamic shine */
.v29-page .form-submit {
  background: linear-gradient(135deg, var(--v29-gold), var(--v29-gold-light)) !important;
  color: var(--v29-navy-deep) !important;
  border: none !important;
  border-radius: 14px;
  position: relative;
  overflow: hidden;
  animation: ctaGlow 3.2s ease-in-out infinite;
}
.v29-page .form-submit::after {
  content: ""; position: absolute; top: 0; left: -130%; width: 60%; height: 100%;
  background: linear-gradient(100deg, transparent 0%, rgba(255,255,255,0.55) 50%, transparent 100%);
  transform: skewX(-18deg); animation: ctaShine 3.2s ease-in-out infinite; pointer-events: none;
}
.v29-page .form-submit:hover { animation: none; box-shadow: 0 22px 50px -8px rgba(212,175,55,0.7); }
.v29-page .form-submit .dot { background: var(--v29-navy-deep); }
@media (prefers-reduced-motion: reduce) {
  .v29-page .form-submit { animation: none; }
  .v29-page .form-submit::after { display: none; }
}
/* the // DRAWINGS & PLANS info box inside the form (was inline blue) */
.v29-page .form-card form > div[style*="background"] {
  background: rgba(212,175,55,0.1) !important;
  border: 1px solid rgba(212,175,55,0.3) !important;
  color: rgba(255,255,255,0.85) !important;
}
.v29-page .form-card form > div[style*="background"] a { color: var(--v29-gold-light) !important; }
.v29-page .form-card form > div[style*="background"] div { color: var(--v29-gold) !important; }
/* direct-contact links in the // DIRECT cards (inline colour stripped already) */
.v29-page .stub-scope-item a { color: var(--v29-navy-mid) !important; border-bottom: 1px solid rgba(26,58,110,0.25); }
.v29-page .stub-scope-item a:hover { color: var(--v29-gold-dark) !important; }

/* phones: hide discipline-page hero pipe schematic so labels don't overlap hero text */
@media (max-width: 640px) {
  .v29-pipe-overlay { display: none; }
}
