/* ─── KEYFRAMES ──────────────────────────────────────────── */
@keyframes fadeUp        { from { opacity:0; transform:translateY(24px);  } to { opacity:1; transform:translateY(0); } }
@keyframes fadeIn        { from { opacity:0; }                              to { opacity:1; } }
@keyframes slideLeft     { from { opacity:0; transform:translateX(-32px); } to { opacity:1; transform:translateX(0); } }
@keyframes slideRight    { from { opacity:0; transform:translateX(32px);  } to { opacity:1; transform:translateX(0); } }
@keyframes scaleIn       { from { opacity:0; transform:scale(0.92); }       to { opacity:1; transform:scale(1); } }
@keyframes shimmer       { 0%,100% { background-position: -200% center; }   50% { background-position: 200% center; } }
@keyframes pulseGold     { 0%,100% { box-shadow: 0 0 0 0 rgba(184,137,42,0); } 50% { box-shadow: 0 0 0 8px rgba(184,137,42,0.18); } }
@keyframes floatUp       { 0%,100% { transform: translateY(0); }            50% { transform: translateY(-8px); } }
@keyframes rotateSlow    { from { transform: rotate(0deg); }                to { transform: rotate(360deg); } }
@keyframes typingBounce  { 0%,60%,100% { transform:translateY(0); opacity:0.4; } 30% { transform:translateY(-7px); opacity:1; } }
@keyframes progressFill  { from { width:0; } to { width:var(--target,100%); } }
@keyframes gradientShift { 0%,100% { background-position:0% 50%; } 50% { background-position:100% 50%; } }
@keyframes cardPop       { 0% { transform:scale(1); } 50% { transform:scale(1.03); } 100% { transform:scale(1); } }
@keyframes borderGlow    { 0%,100% { border-color:var(--border); } 50% { border-color:var(--gold); } }
@keyframes dotPulse      { 0%,100% { transform:scale(1); opacity:1; } 50% { transform:scale(1.4); opacity:0.6; } }
@keyframes textReveal    { from { clip-path:inset(0 100% 0 0); } to { clip-path:inset(0 0% 0 0); } }

/* ─── ANIMATION UTILITY CLASSES ─────────────────────────── */
.anim-fade-up    { animation: fadeUp    0.55s cubic-bezier(.22,.68,0,1.2) both; }
.anim-fade-in    { animation: fadeIn    0.5s ease both; }
.anim-slide-left { animation: slideLeft 0.55s cubic-bezier(.22,.68,0,1.2) both; }
.anim-slide-right{ animation: slideRight 0.55s cubic-bezier(.22,.68,0,1.2) both; }
.anim-scale-in   { animation: scaleIn  0.45s cubic-bezier(.22,.68,0,1.2) both; }

/* Stagger children */
.anim-stagger > *:nth-child(1) { animation-delay:.05s; }
.anim-stagger > *:nth-child(2) { animation-delay:.12s; }
.anim-stagger > *:nth-child(3) { animation-delay:.19s; }
.anim-stagger > *:nth-child(4) { animation-delay:.26s; }
.anim-stagger > *:nth-child(5) { animation-delay:.33s; }
.anim-stagger > *:nth-child(6) { animation-delay:.40s; }

/* Scroll-reveal (toggled by IntersectionObserver) */
.scroll-reveal { opacity:0; transform:translateY(28px); transition: opacity 0.6s ease, transform 0.6s cubic-bezier(.22,.68,0,1.2); }
.scroll-reveal.in-view { opacity:1; transform:translateY(0); }
.scroll-reveal.delay-1 { transition-delay:.08s; }
.scroll-reveal.delay-2 { transition-delay:.16s; }
.scroll-reveal.delay-3 { transition-delay:.24s; }
.scroll-reveal.delay-4 { transition-delay:.32s; }

/* Hover effects */
.hover-lift { transition: transform 0.25s ease, box-shadow 0.25s ease; }
.hover-lift:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }

.hover-glow:hover { box-shadow: var(--shadow-gold); }

/* Floating element */
.float-anim { animation: floatUp 3.5s ease-in-out infinite; }

/* Gold shimmer text */
.shimmer-text {
  background: linear-gradient(90deg, var(--gold), var(--gold-light), var(--gold));
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: shimmer 3s linear infinite;
}

/* Animated border */
.anim-border { animation: borderGlow 2.5s ease-in-out infinite; }

/* Card highlight flash */
.card-highlight { animation: cardPop 0.4s ease; outline: 2px solid var(--gold); }

/* Typing dots */
.typing-dots { display:flex; align-items:center; gap:5px; padding:14px 18px !important; }
.typing-dots span { width:7px; height:7px; background:var(--muted); border-radius:50%; animation:typingBounce 1.2s infinite; }
.typing-dots span:nth-child(2) { animation-delay:.2s; }
.typing-dots span:nth-child(3) { animation-delay:.4s; }

/* Gradient animated background */
.bg-animated-gradient {
  background: linear-gradient(-45deg, #111418, #1c3f5e, #111418, #0d2033);
  background-size: 400% 400%;
  animation: gradientShift 8s ease infinite;
}

/* Risk dot pulsing */
.risk-pulse { animation: dotPulse 2s ease-in-out infinite; }
