/* ── ANIMATED BG BLOBS ── */
.blob-bg {
  position: fixed; top: 0; left: 0; width: 100%; height: 100%;
  pointer-events: none; z-index: 0; overflow: hidden;
}
.blob {
  position: absolute; border-radius: 50%;
  filter: blur(80px); opacity: 0.13; animation: blobFloat 12s ease-in-out infinite;
}
.blob-1 { width: 600px; height: 600px; background: #0EA5E9; top: -200px; left: -150px; animation-delay: 0s; }
.blob-2 { width: 500px; height: 500px; background: #10B981; top: 40%; right: -200px; animation-delay: -4s; }
.blob-3 { width: 400px; height: 400px; background: #F59E0B; bottom: -100px; left: 30%; animation-delay: -8s; }
@keyframes blobFloat {
  0%,100% { transform: translateY(0) scale(1); }
  33% { transform: translateY(-30px) scale(1.05); }
  66% { transform: translateY(20px) scale(0.97); }
}

@keyframes slideDown { from { transform: translateY(-100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes pulse-logo {
  0%,100% { box-shadow: 0 4px 12px rgba(14,165,233,0.3); }
  50% { box-shadow: 0 4px 24px rgba(14,165,233,0.6); }
}
@keyframes blink { 0%,100%{opacity:1} 50%{opacity:0.3} }
@keyframes fadeInRight { from { opacity: 0; transform: translateX(40px); } to { opacity: 1; transform: translateX(0); } }
@keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }

@keyframes orbPulse {
  0%,100%{ box-shadow: 0 0 0 20px rgba(14,165,233,0.06), 0 0 0 40px rgba(14,165,233,0.04); }
  50%{ box-shadow: 0 0 0 30px rgba(14,165,233,0.1), 0 0 0 60px rgba(14,165,233,0.05); }
}
@keyframes heartbeat {
  0%,100%{ transform: scale(1); }
  14%{ transform: scale(1.1); }
  28%{ transform: scale(1); }
  42%{ transform: scale(1.05); }
  70%{ transform: scale(1); }
}
@keyframes drawECG { to { stroke-dashoffset: 0; } }
@keyframes ecgLoop {
  0%{ stroke-dashoffset: 0; opacity: 1; }
  80%{ stroke-dashoffset: -600; opacity: 1; }
  81%{ stroke-dashoffset: 600; opacity: 0; }
  100%{ stroke-dashoffset: 0; opacity: 1; }
}

@keyframes float1 { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-12px)} }
@keyframes float2 { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-8px)} }
@keyframes float3 { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-15px)} }

@keyframes bubblePop { from{opacity:0;transform:scale(0.9) translateY(6px)} to{opacity:1;transform:scale(1) translateY(0)} }
@keyframes typingBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}

@keyframes micPulse {
  0%,100%{box-shadow:0 0 0 0 rgba(14,165,233,0.5)}
  50%{box-shadow:0 0 0 20px rgba(14,165,233,0)}
}
@keyframes waveDance{0%,100%{transform:scaleY(1);opacity:0.6}50%{transform:scaleY(0.3);opacity:1}}

@keyframes shieldPulse {
  0%,100%{transform:scale(1);box-shadow:0 20px 60px rgba(14,165,233,0.3)}
  50%{transform:scale(1.03);box-shadow:0 30px 80px rgba(14,165,233,0.5)}
}
@keyframes ringExpand{0%{opacity:0.8;transform:translate(-50%,-50%) scale(0.9)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.1)}}
@keyframes modalIn { from{opacity:0;transform:scale(0.9)} to{opacity:1;transform:scale(1)} }

/* ── SCROLL ANIMATION ── */
.fade-in-up {
  opacity: 0; transform: translateY(32px); transition: all 0.7s ease;
}
.fade-in-up.visible { opacity: 1; transform: translateY(0); }
