/* DirectMail2.0 — Block Scroll Reveal
   Smooth, bervariasi, tidak monoton */

@keyframes dm-fadeUp {
  from { opacity: 0; transform: translate3d(0, 40px, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes dm-slideLeft {
  from { opacity: 0; transform: translate3d(-50px, 0, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes dm-slideRight {
  from { opacity: 0; transform: translate3d(50px, 0, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes dm-scaleIn {
  from { opacity: 0; transform: scale3d(0.94, 0.94, 1); }
  to   { opacity: 1; transform: scale3d(1, 1, 1); }
}
@keyframes dm-scaleInSubtle {
  from { opacity: 0; transform: scale3d(0.97, 0.97, 1); }
  to   { opacity: 1; transform: scale3d(1, 1, 1); }
}

html.dm-animate-ready [data-animate] {
  opacity: 0;
  will-change: transform, opacity;
}

html.dm-animate-ready [data-animate="fade-up"].animated {
  animation: dm-fadeUp 0.85s cubic-bezier(0.16, 1, 0.3, 1) both;
}
html.dm-animate-ready [data-animate="slide-left"].animated {
  animation: dm-slideLeft 0.9s cubic-bezier(0.16, 1, 0.3, 1) both;
}
html.dm-animate-ready [data-animate="slide-right"].animated {
  animation: dm-slideRight 0.9s cubic-bezier(0.16, 1, 0.3, 1) both;
}
html.dm-animate-ready [data-animate="scale-in"].animated {
  animation: dm-scaleIn 0.8s cubic-bezier(0.16, 1, 0.3, 1) both;
}
html.dm-animate-ready [data-animate="scale-in-subtle"].animated {
  animation: dm-scaleInSubtle 0.9s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.dm-hover-lift {
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.dm-hover-lift:hover {
  transform: translate3d(0, -4px, 0);
  box-shadow: 0 16px 32px -12px rgba(0, 0, 0, 0.08);
}
.dm-card-glow {
  transition: border-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.dm-card-glow:hover {
  transform: translate3d(0, -3px, 0);
  box-shadow: 0 12px 32px -10px rgba(0, 0, 0, 0.08);
}
.dm-pulse-cta { position: relative; }
.dm-pulse-cta::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  animation: dm-pulseOutline 2.4s ease-out infinite;
  pointer-events: none;
}
@keyframes dm-pulseOutline {
  0%   { box-shadow: 0 0 0 0 rgba(236, 0, 141, 0.25); }
  70%  { box-shadow: 0 0 0 14px rgba(236, 0, 141, 0); }
  100% { box-shadow: 0 0 0 0 rgba(236, 0, 141, 0); }
}

@media (prefers-reduced-motion: reduce) {
  html.dm-animate-ready [data-animate] {
    opacity: 1 !important;
    animation: none !important;
    transform: none !important;
  }
}
@media (max-width: 767.98px) {
  html.dm-animate-ready [data-animate="slide-left"].animated,
  html.dm-animate-ready [data-animate="slide-right"].animated {
    animation-name: dm-fadeUp;
  }
}
