.reveal {
  opacity: 0;
  filter: blur(3px);
  transform: translateY(22px) scale(.985);
  transition: opacity 1500ms cubic-bezier(.2,.75,.25,1) var(--reveal-delay, 0ms),
    filter 1500ms cubic-bezier(.2,.75,.25,1) var(--reveal-delay, 0ms),
    transform 1500ms cubic-bezier(.2,.75,.25,1) var(--reveal-delay, 0ms);
}
.reveal.is-visible {
  opacity: 1;
  filter: blur(0);
  transform: translateY(0) scale(1);
}
.f-card, .plan, .k-card, .t-card, .spend-big, .map-card, .dash .card, .logo, .auth a, .btn, .arrow, .social a, .foot-col a {
  transition: transform 700ms cubic-bezier(.2,.75,.25,1), border-color 700ms ease, box-shadow 700ms ease, background-color 600ms ease;
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .f-card:hover, .plan:hover, .t-card:hover, .spend-big:hover, .map-card:hover {
    transform: translateY(-5px) scale(1.015);
    border-color: #2fbf7180;
    box-shadow: 0 14px 34px #0007;
  }
  .k-card:not(.lime):hover { transform: translateY(-5px) scale(1.015); border-color: #2fbf7180; }
  .k-card.lime:hover { transform: translateY(-13px) scale(1.015); }
  .dash .card:hover { transform: translateY(-3px) scale(1.015); border-color: #2fbf7180; }
  .logo:hover, .auth a:hover, .btn:hover, .arrow:hover, .social a:hover { transform: translateY(-2px) scale(1.04); }
  .foot-col a:hover { transform: translateX(3px); }
}
.logo-mark { transition: transform 700ms cubic-bezier(.2,.75,.25,1); }
.logo:hover .logo-mark { transform: rotate(-8deg) scale(1.08); }
.rating :is(i[data-lucide="star"], svg.lucide-star) { animation: star-pulse 6s ease-in-out infinite; }
@keyframes star-pulse {
  50% { transform: scale(1.18); filter: drop-shadow(0 0 5px #b9ec6670); }
}
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; filter: none; transform: none; transition: none; }
  .rating :is(i[data-lucide="star"], svg.lucide-star) { animation: none; }
  .f-card, .plan, .k-card, .t-card, .spend-big, .map-card, .dash .card, .logo, .auth a, .btn, .arrow, .social a, .foot-col a { transition: none; }
}