html { scroll-behavior: smooth; }
body { font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #f8fafc; color: #0f172a; }
[data-include-header] { min-height: 86px; display: block; }
[data-include-footer] { min-height: 360px; display: block; }
.fade-up { opacity: 0; transform: translateY(16px); transition: opacity 0.6s ease, transform 0.6s ease; }
.fade-up.visible { opacity: 1; transform: translateY(0); }
.shadow-soft { box-shadow: 0 18px 60px rgba(15, 23, 42, 0.06); }
.focus-ring:focus-visible { outline: 2px solid #2563eb; outline-offset: 3px; }
.hero-section { position: relative; min-height: 90vh; }
.hero-wrapper { position: relative; overflow: hidden; }
.hero-wrapper::after {
  content: '';
  position: absolute;
  inset: 25% 10% auto auto;
  width: 240px;
  height: 240px;
  border-radius: 50%;
  background: rgba(56, 189, 248, 0.18);
  filter: blur(32px);
  pointer-events: none;
  animation: heroGlow 10s ease-in-out infinite;
}
.hero-animation { position: absolute; inset: 0; pointer-events: none; opacity: 1; animation: drift 18s linear infinite; }
.hero-animation svg { width: 100%; height: 100%; transform-origin: center; }
.hero-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at top right, rgba(37, 99, 235, 0.16), transparent 24%),
              radial-gradient(circle at bottom left, rgba(14, 165, 233, 0.08), transparent 24%),
              radial-gradient(circle at center, rgba(59, 130, 246, 0.06), transparent 28%);
  pointer-events: none;
}
.fiber-line { stroke: #2563eb; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; fill: none; stroke-dasharray: 300; stroke-dashoffset: 300; animation: drawLine 1.8s ease forwards, linePulse 6s ease-in-out infinite; opacity: 0.55; }
.hero-node { fill: #2563eb; opacity: 0.95; filter: drop-shadow(0 0 18px rgba(37, 99, 235, 0.35)); transform-origin: center; animation: nodePulse 2.5s ease-in-out infinite, nodeGlow 4.5s ease-in-out infinite; }
@keyframes heroGlow {
  0%, 100% { transform: translate(0, 0) scale(1); opacity: 0.14; }
  50% { transform: translate(20px, -16px) scale(1.15); opacity: 0.22; }
}
@keyframes drift {
  0% { transform: translate(0, 0) rotate(0deg); }
  50% { transform: translate(-12px, -8px) rotate(0.5deg); }
  100% { transform: translate(0, 0) rotate(0deg); }
}
@keyframes drawLine { to { stroke-dashoffset: 0; } }
@keyframes linePulse {
  0%, 100% { opacity: 0.55; filter: drop-shadow(0 0 0 rgba(56, 189, 248, 0)); }
  50% { opacity: 0.9; filter: drop-shadow(0 0 18px rgba(56, 189, 248, 0.3)); }
}
@keyframes nodePulse { 0%, 100% { transform: scale(1); opacity: 0.95; } 50% { transform: scale(1.32); opacity: 0.55; } }
@keyframes nodeGlow {
  0%, 100% { filter: drop-shadow(0 0 18px rgba(37, 99, 235, 0.35)); }
  50% { filter: drop-shadow(0 0 30px rgba(56, 189, 248, 0.42)); }
}
.coverage-photo img { min-height: 255px; }
.hero-section .hero-wrapper { background: transparent; box-shadow: none; border-radius: 0; }

