/* ============================================
   Pozvánkovna.cz — Sdílená knihovna animací
   ============================================ */

/* 1. Float — plovoucí dekorace v hero */
@keyframes float {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  33%       { transform: translateY(-18px) rotate(3deg); }
  66%       { transform: translateY(-8px) rotate(-2deg); }
}

/* 2. FloatSlow — pomalejší verze pro větší elementy */
@keyframes floatSlow {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  50%       { transform: translateY(-24px) rotate(5deg); }
}

/* 3. Heartbeat — pulsující srdíčka */
@keyframes heartbeat {
  0%, 100% { transform: scale(1); }
  14%       { transform: scale(1.3); }
  28%       { transform: scale(1); }
  42%       { transform: scale(1.2); }
  70%       { transform: scale(1); }
}

/* 4. Shimmer — pro zlaté/metalické elementy */
@keyframes shimmer {
  0%   { background-position: -200% center; }
  100% { background-position:  200% center; }
}

/* 5. PetalFall — padající okvětní lístky na pozvánce */
@keyframes petalFall {
  0%   { transform: translateY(-10vh) rotate(0deg) translateX(0);      opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 0.8; }
  100% { transform: translateY(110vh) rotate(720deg) translateX(60px);  opacity: 0; }
}

/* 6. BounceIn — scroll-triggered entrance */
@keyframes bounceIn {
  0%   { opacity: 0; transform: scale(0.3) translateY(40px); }
  60%  { opacity: 1; transform: scale(1.05) translateY(-8px); }
  80%  { transform: scale(0.97); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}

/* 7. FadeUp — jemný scroll entrance */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* 8. FadeIn — prostý fade */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* 9. GradientShift — animovaný hero gradient */
@keyframes gradientShift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* 10. DrawLine — SVG stroke draw pro timeline */
@keyframes drawLine {
  from { stroke-dashoffset: 1000; }
  to   { stroke-dashoffset: 0; }
}

/* 11. CharReveal — typewriter reveal po znacích */
@keyframes charReveal {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* 12. ConfettiFall — confetti částice */
@keyframes confettiFall {
  0%   { transform: translateY(0) rotate(0deg) scale(1);   opacity: 1; }
  100% { transform: translateY(700px) rotate(720deg) scale(0); opacity: 0; }
}

/* 13. FlipTop — flip animace pro odpočítávání */
@keyframes flipTop {
  0%   { transform: rotateX(0deg); }
  100% { transform: rotateX(-90deg); }
}

/* 14. FlipBottom */
@keyframes flipBottom {
  0%   { transform: rotateX(90deg); }
  100% { transform: rotateX(0deg); }
}

/* 15. Spin — rotace */
@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* 16. Wiggle — hravé zakymácení */
@keyframes wiggle {
  0%, 100% { transform: rotate(0deg); }
  25%       { transform: rotate(-8deg); }
  75%       { transform: rotate(8deg); }
}

/* 17. Pop — zvětšení po kliknutí */
@keyframes pop {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.15); }
  100% { transform: scale(1); }
}

/* 18. RainbowText — duhový gradient textu */
@keyframes rainbowText {
  0%   { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

/* ============================================
   Utility třídy
   ============================================ */

.animate-float       { animation: float 6s ease-in-out infinite; }
.animate-float-slow  { animation: floatSlow 8s ease-in-out infinite; }
.animate-heartbeat   { animation: heartbeat 1.5s ease-in-out infinite; }
.animate-wiggle      { animation: wiggle 0.5s ease-in-out; }
.animate-pop         { animation: pop 0.3s ease-out; }
.animate-spin        { animation: spin 8s linear infinite; }

/* Scroll-triggered — přidány přes JavaScript */
.animate-on-scroll {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.animate-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.animate-on-scroll.bounce-in.is-visible {
  animation: bounceIn 0.7s cubic-bezier(0.68, -0.55, 0.27, 1.55) both;
}

/* Staggered delays pro skupiny */
.stagger-1 { animation-delay: 0.1s; transition-delay: 0.1s; }
.stagger-2 { animation-delay: 0.2s; transition-delay: 0.2s; }
.stagger-3 { animation-delay: 0.3s; transition-delay: 0.3s; }
.stagger-4 { animation-delay: 0.4s; transition-delay: 0.4s; }
.stagger-5 { animation-delay: 0.5s; transition-delay: 0.5s; }
