/* ═══════════════════════════════════════════
   RZ Printing — Aggressive Animation System
   ═══════════════════════════════════════════ */

/* ── Keyframes ── */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(36px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeInLeft {
  from { opacity: 0; transform: translateX(-36px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes fadeInRight {
  from { opacity: 0; transform: translateX(36px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.84); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes float {
  0%,100% { transform: translateY(0px) rotate(0deg); }
  33%     { transform: translateY(-20px) rotate(2deg); }
  66%     { transform: translateY(-8px)  rotate(-1deg); }
}
@keyframes floatReverse {
  0%,100% { transform: translateY(0px) rotate(0deg); }
  33%     { transform: translateY(20px) rotate(-2deg); }
  66%     { transform: translateY(8px)  rotate(1deg); }
}
@keyframes blobMorph {
  0%,100% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
  25%     { border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%; }
  50%     { border-radius: 50% 60% 30% 40% / 40% 50% 60% 50%; }
  75%     { border-radius: 40% 30% 60% 70% / 70% 40% 50% 30%; }
}
@keyframes heroGradient {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@keyframes pulseRing {
  0%   { box-shadow: 0 0 0 0   rgba(37, 211, 102, 0.65); }
  70%  { box-shadow: 0 0 0 18px rgba(37, 211, 102, 0); }
  100% { box-shadow: 0 0 0 0   rgba(37, 211, 102, 0); }
}
@keyframes navSlideDown {
  from { opacity: 0; transform: translateY(-100%); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes spinSlow {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
@keyframes spinSlowReverse {
  from { transform: rotate(0deg); }
  to   { transform: rotate(-360deg); }
}
@keyframes ctaBounce {
  0%,100% { transform: translateY(0); }
  50%     { transform: translateY(-6px); }
}
@keyframes shimmerSlide {
  0%   { background-position: -200% center; }
  100% { background-position:  200% center; }
}

/* ── Scroll-reveal states ── */
.anim-ready {
  opacity: 0;
  transform: translateY(32px);
  transition:
    opacity  0.7s cubic-bezier(0.34, 1.56, 0.64, 1),
    transform 0.7s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.anim-ready.from-left  { transform: translateX(-32px); }
.anim-ready.from-right { transform: translateX(32px); }
.anim-ready.from-scale { transform: scale(0.86); }
.anim-ready.anim-visible {
  opacity: 1 !important;
  transform: none !important;
}

/* Stagger delay helpers */
.stagger-1  { transition-delay: 0.05s !important; }
.stagger-2  { transition-delay: 0.12s !important; }
.stagger-3  { transition-delay: 0.19s !important; }
.stagger-4  { transition-delay: 0.26s !important; }
.stagger-5  { transition-delay: 0.33s !important; }
.stagger-6  { transition-delay: 0.40s !important; }
.stagger-7  { transition-delay: 0.47s !important; }
.stagger-8  { transition-delay: 0.54s !important; }
.stagger-9  { transition-delay: 0.61s !important; }
.stagger-10 { transition-delay: 0.68s !important; }

/* ── Hero animated gradient ── */
.hero-animated {
  background-size: 250% 250% !important;
  animation: heroGradient 10s ease infinite;
}

/* ── Hero floating blobs ── */
.hero-blob {
  position: absolute;
  pointer-events: none;
  filter: blur(56px);
  opacity: 0.2;
  animation:
    blobMorph 12s ease-in-out infinite,
    float 9s ease-in-out infinite;
}
.hero-blob.blob-2 {
  animation:
    blobMorph 10s ease-in-out infinite reverse,
    floatReverse 7s ease-in-out infinite;
  animation-delay: -3s;
}
.hero-blob.blob-3 {
  animation:
    blobMorph 14s ease-in-out infinite,
    float 11s ease-in-out infinite;
  animation-delay: -6s;
}

/* ── Hero rotating rings ── */
.hero-ring {
  position: absolute;
  border: 1.5px solid rgba(255, 255, 255, 0.15);
  border-radius: 50%;
  pointer-events: none;
  animation: spinSlow 35s linear infinite;
}
.hero-ring.ring-2 {
  border-color: rgba(255, 255, 255, 0.08);
  animation: spinSlowReverse 22s linear infinite;
}

/* ── Floating dots grid overlay on hero ── */
.hero-dots {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: radial-gradient(circle, rgba(255,255,255,0.12) 1px, transparent 1px);
  background-size: 32px 32px;
  mask-image: radial-gradient(ellipse at center, black 40%, transparent 80%);
  -webkit-mask-image: radial-gradient(ellipse at center, black 40%, transparent 80%);
}

/* ── Card hover — more aggressive ── */
.card-lift {
  transition:
    transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1),
    box-shadow 0.35s ease !important;
  will-change: transform;
}
.card-lift:hover {
  transform: translateY(-10px) scale(1.025) rotate(-0.4deg) !important;
  box-shadow: 0 28px 56px rgba(0, 0, 0, 0.16) !important;
}

/* ── WA button pulse ── */
.wa-pulse {
  animation: pulseRing 2.2s ease-out infinite;
}

/* ── Nav entrance ── */
.anim-nav {
  animation: navSlideDown 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

/* ── Section divider shimmer bars ── */
.shimmer-bar {
  height: 3px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(249,115,22,0.6) 30%,
    rgba(249,115,22,1) 50%,
    rgba(249,115,22,0.6) 70%,
    transparent 100%);
  background-size: 200% auto;
  animation: shimmerSlide 2.5s linear infinite;
  border-radius: 999px;
  margin-bottom: 1.5rem;
}

/* ── Bounce icon on scroll CTA ── */
.bounce-icon {
  display: inline-block;
  animation: ctaBounce 2s ease-in-out infinite;
}

/* ── Number counter flash ── */
@keyframes countFlash {
  0%,100% { color: inherit; }
  50%     { color: #f97316; }
}
.count-done {
  animation: countFlash 0.4s ease;
}

/* ── Custom cursor ── */
@media (pointer: fine) {
  * { cursor: none !important; }
}

.c-dot {
  position: fixed;
  top: 0; left: 0;
  width: 8px; height: 8px;
  background: #f97316;
  border-radius: 50%;
  pointer-events: none;
  z-index: 999999;
  transform: translate(-50%, -50%);
  transition:
    width    0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
    height   0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
    background 0.25s ease,
    opacity  0.25s ease;
}
.c-dot.is-hidden  { opacity: 0; }
.c-dot.is-hovering {
  width: 40px;
  height: 40px;
  background: transparent;
  box-shadow: 0 0 0 2px #f97316;
}
.c-dot.is-clicking {
  width: 6px;
  height: 6px;
  background: #fff;
  transition-duration: 0.08s;
}
