/* Leo thinking pulse — brand perimeter breathe (Border Beam Pulse IA). */

.leo-pulse-border {
  --leo-pulse-strength: 0.7;
  --leo-pulse-duration: 2.3s;
}

.leo-pulse-border__glow {
  opacity: calc(var(--leo-pulse-strength) * 0.55);
  background: radial-gradient(
    ellipse 90% 70% at 50% 100%,
    color-mix(in oklch, var(--brand-color) 28%, transparent) 0%,
    transparent 62%
  );
  box-shadow: inset 0 0 28px
    color-mix(in oklch, var(--brand-color) calc(var(--leo-pulse-strength) * 32%), transparent);
}

.leo-pulse-border__ring {
  opacity: calc(0.35 + var(--leo-pulse-strength) * 0.55);
  border: 1.5px solid
    color-mix(in oklch, var(--brand-color) calc(40% + var(--leo-pulse-strength) * 35%), transparent);
  box-shadow:
    inset 0 0 18px
      color-mix(in oklch, var(--brand-color) calc(var(--leo-pulse-strength) * 22%), transparent),
    0 0 20px
      color-mix(in oklch, var(--brand-color) calc(var(--leo-pulse-strength) * 18%), transparent);
}

.dark .leo-pulse-border__glow {
  background: radial-gradient(
    ellipse 90% 70% at 50% 100%,
    color-mix(in oklch, var(--brand-color) 42%, transparent) 0%,
    transparent 62%
  );
  box-shadow: inset 0 0 32px
    color-mix(in oklch, var(--brand-color) calc(var(--leo-pulse-strength) * 48%), transparent);
}

.dark .leo-pulse-border__ring {
  border-color: color-mix(
    in oklch,
    var(--brand-color) calc(55% + var(--leo-pulse-strength) * 30%),
    transparent
  );
}

.leo-pulse-border[data-animate="true"] .leo-pulse-border__glow {
  animation: leo-pulse-glow var(--leo-pulse-duration) ease-in-out infinite;
}

.leo-pulse-border[data-animate="true"] .leo-pulse-border__ring {
  animation: leo-pulse-ring var(--leo-pulse-duration) ease-in-out infinite;
}

@keyframes leo-pulse-glow {
  0%,
  100% {
    opacity: calc(var(--leo-pulse-strength) * 0.35);
    transform: scale(1);
  }
  50% {
    opacity: calc(var(--leo-pulse-strength) * 0.75);
    transform: scale(1.015);
  }
}

@keyframes leo-pulse-ring {
  0%,
  100% {
    opacity: calc(0.28 + var(--leo-pulse-strength) * 0.4);
  }
  50% {
    opacity: calc(0.5 + var(--leo-pulse-strength) * 0.5);
  }
}

@media (prefers-reduced-motion: reduce) {
  .leo-pulse-border[data-animate="true"] .leo-pulse-border__glow,
  .leo-pulse-border[data-animate="true"] .leo-pulse-border__ring {
    animation: none !important;
  }
}
