@keyframes livePulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.4;transform:scale(.72)} }
@keyframes launcherFloat { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-5px)} }
@keyframes typingDot { 0%,60%,100%{opacity:.3;transform:translateY(0)} 30%{opacity:1;transform:translateY(-3px)} }
@keyframes bubbleReveal { 0%,12%{opacity:0;transform:translateY(8px)} 18%,82%{opacity:1;transform:none} 92%,100%{opacity:0;transform:translateY(-4px)} }
@keyframes bubbleRevealOnce { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:none} }
@keyframes typingOnce { 0%{opacity:0} 18%,75%{opacity:1} 100%{opacity:0} }
@keyframes callStageReveal { from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:none} }
@keyframes callButtonRing { 0%,100%{transform:scale(1) rotate(0);box-shadow:0 0 0 0 rgba(47,125,92,.35)} 18%{transform:scale(1.08) rotate(-9deg)} 36%{transform:scale(1.08) rotate(9deg);box-shadow:0 0 0 12px rgba(47,125,92,0)} 54%{transform:scale(1.04) rotate(-5deg)} 72%{transform:scale(1.04) rotate(5deg)} }
@keyframes ringWave { 0%{opacity:.7;transform:scale(.88)} 80%,100%{opacity:0;transform:scale(1.18)} }
@keyframes fieldReveal { 0%,12%{color:transparent} 28%,82%{color:var(--ink)} 94%,100%{color:transparent} }
@keyframes starIn { 0%,20%{letter-spacing:.4em;opacity:.2} 35%,85%{letter-spacing:.08em;opacity:1} 100%{opacity:.2} }
@keyframes replyGlow { 0%,30%{opacity:.45;transform:translateY(5px)} 46%,86%{opacity:1;transform:none} 100%{opacity:.45} }
@keyframes signal { 0%,100%{opacity:.35} 50%{opacity:1} }
@keyframes confirmationPanelIn { from{opacity:0;transform:translateY(18px) scale(.985)} to{opacity:1;transform:none} }
@keyframes confirmationCheckIn { from{opacity:0;transform:scale(.55) rotate(-12deg)} to{opacity:1;transform:scale(1) rotate(0)} }
@keyframes heroCtaGlow { 0%,58%,100%{box-shadow:0 14px 36px rgba(198,161,91,.22),0 0 0 0 rgba(198,161,91,0)} 68%{box-shadow:0 17px 42px rgba(198,161,91,.35),0 0 0 0 rgba(198,161,91,.42)} 86%{box-shadow:0 17px 42px rgba(198,161,91,.3),0 0 0 12px rgba(198,161,91,0)} }
@keyframes heroCtaShine { 0%,56%{transform:translateX(-175%) skewX(-18deg)} 82%,100%{transform:translateX(420%) skewX(-18deg)} }
@keyframes heroCtaArrow { 0%,60%,84%,100%{transform:translateX(0)} 70%{transform:translateX(5px)} 77%{transform:translateX(2px)} }
@keyframes paybackGlow { 0%,100%{border-color:rgba(198,161,91,.62);box-shadow:inset 0 0 28px rgba(198,161,91,.045),0 8px 24px rgba(0,0,0,.12),0 0 0 0 rgba(198,161,91,0)} 50%{border-color:rgba(198,161,91,.95);box-shadow:inset 0 0 34px rgba(198,161,91,.095),0 12px 30px rgba(0,0,0,.17),0 0 0 5px rgba(198,161,91,.07)} }
@keyframes paybackClockPulse { 0%,72%,100%{transform:scale(1) rotate(0)} 80%{transform:scale(1.1) rotate(-8deg)} 88%{transform:scale(1.1) rotate(8deg)} 94%{transform:scale(1.04) rotate(0)} }
@keyframes paybackValuePop { 0%{opacity:.7;transform:translateY(4px) scale(.96)} 60%{opacity:1;transform:translateY(-1px) scale(1.055)} 100%{opacity:1;transform:none} }
.live-dot, .browser-live i, .status-eyebrow .live-dot { animation: livePulse 1.65s ease-in-out infinite; }
.button--hero { animation: heroCtaGlow 3.8s ease-in-out infinite; }
.button--hero::after { content:""; position:absolute; inset:-10% auto -10% -48%; z-index:0; width:32%; background:linear-gradient(90deg,transparent,rgba(255,255,255,.58),transparent); transform:translateX(-175%) skewX(-18deg); animation:heroCtaShine 3.8s ease-in-out infinite; pointer-events:none; }
.button--hero span { position:relative; z-index:1; animation:heroCtaArrow 3.8s ease-in-out infinite; }
.payback { animation:paybackGlow 4.8s ease-in-out infinite; }
.payback__label i { animation:paybackClockPulse 4.8s ease-in-out infinite; }
.payback.is-updated .payback__value { animation:paybackValuePop .48s cubic-bezier(.2,.8,.2,1) both; }
.chat-launcher { animation: launcherFloat 2.8s ease-in-out infinite; }
.chat-demo.is-chat-pending .chat-bubble { opacity: 0; transform: translateY(8px); }
.chat-demo.is-chat-pending .chat-stage--call { opacity: 0; transform: translateY(12px); }
.chat-demo.is-chat-pending .chat-bubble.is-chat-visible { animation: bubbleRevealOnce .55s ease-out both; }
.chat-demo.is-chat-pending .chat-stage--call.is-call-visible { animation: callStageReveal .6s ease-out both; }
.typing-indicator { opacity: 0; }
.chat-demo.is-chat-playing .typing-indicator.is-typing { opacity: 1; transition: opacity .2s ease; }
.chat-demo.is-chat-playing .typing-indicator.is-typing i { animation: typingDot .65s ease-in-out infinite; }.chat-demo.is-chat-playing .typing-indicator.is-typing i:nth-child(2){animation-delay:.13s}.chat-demo.is-chat-playing .typing-indicator.is-typing i:nth-child(3){animation-delay:.26s}
.chat-demo.is-chat-complete .chat-bubble, .chat-demo.is-chat-complete .chat-stage--call { opacity: 1; transform: none; animation: none; }
.chat-demo.is-chat-complete .typing-indicator { visibility: hidden; opacity: 0; animation: none; }
.chat-demo.is-chat-complete .chat-launcher, .chat-demo.is-chat-complete .live-dot, .chat-demo.is-chat-complete .call-answer { animation: none; transform: none; box-shadow: none; }
.call-card .call-answer { animation: callButtonRing 1.45s ease-in-out infinite; }
.ring-one { animation: ringWave 1.5s ease-out infinite; }.ring-two { animation: ringWave 1.5s .45s ease-out infinite; }
.field-fill { animation: fieldReveal 8s ease-in-out infinite; }.field-fill--two{animation-delay:.7s}.field-fill--three{animation-delay:1.4s}
.stars { animation: starIn 7s ease-in-out infinite; }
.reputation .stars, .reputation .feedback-routing, .reputation .feedback-routing .live-dot { animation: none !important; opacity: 1; transform: none; }
.signal-bars b { animation: signal .9s ease-in-out infinite; }.signal-bars b:nth-child(2){animation-delay:.12s}.signal-bars b:nth-child(3){animation-delay:.24s}.signal-bars b:nth-child(4){animation-delay:.36s}
[data-reveal] { opacity: 0; transform: translateY(18px); transition: opacity .55s ease, transform .55s ease; }[data-reveal].is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .chat-demo .chat-bubble, .chat-demo .chat-stage--call { animation-delay: 0s !important; opacity: 1; transform: none; }
  .typing-indicator { display: none; }
  [data-reveal] { opacity: 1; transform: none; }
  .button--hero, .button--hero::after, .button--hero span { animation: none !important; }
  .payback, .payback__label i, .payback.is-updated .payback__value { animation: none !important; }
}
