/* Results reveal animations — triggered when HTMX swaps content */
.anim-fade-up { animation: rFadeUp 0.6s 0.0s var(--ease-expo) both; }
.anim-fade-up-d1 { animation: rFadeUp 0.5s 0.15s var(--ease-expo) both; }
.anim-fade-up-d2 { animation: rFadeUp 0.5s 0.3s var(--ease-expo) both; }
.anim-fade-up-d3 { animation: rFadeUp 0.5s 0.45s var(--ease-expo) both; }
.anim-fade-up-d4 { animation: rFadeUp 0.5s 0.6s var(--ease-expo) both; }
.anim-fade-up-d5 { animation: rFadeUp 0.5s 0.75s var(--ease-expo) both; }
.anim-fade-up-d6 { animation: rFadeUp 0.5s 0.9s var(--ease-expo) both; }

@keyframes rFadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Budget bar fill animation */
.bud-fill {
  animation: barGrow 1.2s 0.5s var(--ease-expo) both;
}
@keyframes barGrow {
  from { width: 0 !important; }
}

/* Result badge pop */
.r-badge {
  animation: badgePop 0.4s 0.2s var(--ease-spring) both;
}
@keyframes badgePop {
  from { opacity: 0; transform: scale(0.85); }
}

/* Step card slide */
.steps-grid .step-card:first-child {
  animation: slideLeft 0.5s 0.4s var(--ease-expo) both;
}
.steps-grid .step-card:last-child {
  animation: slideRight 0.5s 0.4s var(--ease-expo) both;
}
@keyframes slideLeft { from { opacity:0; transform:translateX(-30px); } }
@keyframes slideRight { from { opacity:0; transform:translateX(30px); } }
