/*!
 * Pricing Table Master — animations.css
 * Price change effects, hover lift, scroll reveal. Everything is disabled for prefers-reduced-motion.
 *
 *  Price animation:  data-pt-animation="count | flip | fade | none" on the pricing root
 *  Hover lift:       add .pt-hover-lift to a .pt-grid (or a single card)
 *  Scroll reveal:    add data-pt-reveal to any element
 */

/* ---------- Price change ---------- */
@keyframes pt-pop {
  0%   { transform: translateY(0) scale(1); }
  35%  { transform: translateY(-3px) scale(1.045); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes pt-flip {
  0%   { transform: perspective(400px) rotateX(0);      opacity: 1; }
  45%  { transform: perspective(400px) rotateX(90deg);  opacity: 0; }
  55%  { transform: perspective(400px) rotateX(-90deg); opacity: 0; }
  100% { transform: perspective(400px) rotateX(0);      opacity: 1; }
}
@keyframes pt-fade {
  0%   { opacity: 0; transform: translateY(10px); filter: blur(4px); }
  100% { opacity: 1; transform: translateY(0); filter: blur(0); }
}
.pt-price-main { transform-origin: 50% 60%; }
.pt-price-main.pt-anim-pop  { animation: pt-pop .55s var(--pt-ease); }
.pt-price-main.pt-anim-flip { animation: pt-flip .6s var(--pt-ease); }
.pt-price-main.pt-anim-fade { animation: pt-fade .45s var(--pt-ease); }

/* ---------- Hover lift ---------- */
.pt-hover-lift .pt-card:hover,
.pt-card.pt-hover-lift:hover {
  transform: translateY(-6px);
  box-shadow: var(--pt-shadow-lg);
}
.pt-hover-lift .pt-card.is-featured:hover { box-shadow: 0 0 0 2px var(--pt-accent), var(--pt-shadow-lg); }
@media (min-width: 901px) {
  .pt-grid--lift.pt-hover-lift .pt-card.is-featured:hover { transform: scale(1.04) translateY(-6px); }
}
.pt-hover-lift .pt-card.is-soldout:hover { transform: none; box-shadow: none; }

/* ---------- Scroll reveal ---------- */
.pt-reveal-ready [data-pt-reveal] {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .7s var(--pt-ease), transform .7s var(--pt-ease);
  transition-delay: var(--pt-delay, 0ms);
}
.pt-reveal-ready [data-pt-reveal="zoom"] { transform: scale(.94); }
.pt-reveal-ready [data-pt-reveal="left"] { transform: translateX(-30px); }
.pt-reveal-ready [data-pt-reveal="right"] { transform: translateX(30px); }
.pt-reveal-ready [data-pt-reveal].is-visible { opacity: 1; transform: none; }
.pt-reveal-ready .pt-grid--lift [data-pt-reveal].is-featured.is-visible { transform: none; }
@media (min-width: 901px) {
  .pt-reveal-ready .pt-grid--lift [data-pt-reveal].is-featured.is-visible { transform: scale(1.04); }
}

/* ---------- Panel switch (tabs) ---------- */
@keyframes pt-panel-in {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: none; }
}
.pt-panel-in { animation: pt-panel-in .45s var(--pt-ease); }

/* ---------- Glow pulse for featured badges ---------- */
@keyframes pt-shine {
  0%   { background-position: -120% 0; }
  60%, 100% { background-position: 220% 0; }
}
.pt-badge--shine {
  background-image: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .55) 50%, transparent 70%), linear-gradient(100deg, var(--pt-accent), var(--pt-accent-2));
  background-size: 200% 100%, 100% 100%;
  background-repeat: no-repeat;
  animation: pt-shine 3.2s ease-in-out infinite;
}

@keyframes pt-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
.pt-float { animation: pt-float 6s ease-in-out infinite; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .pt-price-main,
  .pt-panel-in,
  .pt-badge--shine,
  .pt-float { animation: none !important; }
  .pt-card, .pt-btn, .pt-switch::after, .pt-segment-thumb { transition: none !important; }
  .pt-reveal-ready [data-pt-reveal] { opacity: 1; transform: none; transition: none; }
}
