/* ── Shared easing ── */
:root {
  --spring:  cubic-bezier(0.34, 1.56, 0.64, 1);
  --bounce:  cubic-bezier(0.68, -0.55, 0.27, 1.55);
  --smooth:  cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* ── Page load: stagger fade-up ── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}

.anim-load { opacity: 0; animation: fadeUp 0.6s var(--smooth) forwards; }
.anim-load:nth-child(1) { animation-delay: 0.05s; }
.anim-load:nth-child(2) { animation-delay: 0.15s; }
.anim-load:nth-child(3) { animation-delay: 0.25s; }
.anim-load:nth-child(4) { animation-delay: 0.35s; }

/* ── Nav name letters ── */
.nav-letter {
  display: inline-block;
  transition: transform 0.35s var(--spring), color 0.2s;
}
.nav-letter:hover {
  transform: translateY(-5px) rotate(-4deg);
  color: var(--coral);
}

/* ── Nav buttons ── */
.nav-cta, .nav-cta-alt {
  transition: background 0.2s, color 0.2s, transform 0.35s var(--spring), box-shadow 0.2s;
}
.nav-cta:hover     { transform: scale(1.06) translateY(-1px); box-shadow: 0 4px 14px rgba(91,191,130,0.35); }
.nav-cta:active    { transform: scale(0.95); }
.nav-cta-alt:hover { transform: scale(1.06) translateY(-1px); box-shadow: 0 4px 14px rgba(155,135,204,0.35); }
.nav-cta-alt:active{ transform: scale(0.95); }

/* ── Hero heading word hover ── */
.h1-word {
  display: inline-block;
  transition: transform 0.4s var(--spring);
  cursor: default;
}
.h1-word:hover { transform: translateY(-5px) skewX(-3deg); }

/* ── Hero em (actually use.) — continuous float ── */
@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-6px); }
}
h1 em { display: inline-block; animation: float 3s ease-in-out infinite; }

/* ── Hire me / primary buttons ── */
.btn-primary {
  transition: opacity 0.2s, transform 0.4s var(--spring), box-shadow 0.3s;
  position: relative;
  overflow: hidden;
}
.btn-primary:hover {
  opacity: 1;
  transform: translateY(-4px) scale(1.04);
  box-shadow: 0 8px 24px rgba(91,191,130,0.4);
}
.btn-primary:active { transform: scale(0.96); box-shadow: none; }

/* ── Ripple ── */
.ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(255,255,255,0.45);
  transform: scale(0);
  animation: ripple-out 0.55s var(--smooth) forwards;
  pointer-events: none;
}
@keyframes ripple-out {
  to { transform: scale(4); opacity: 0; }
}

/* ── Service cards — 3D tilt handled by JS, but base transition ── */
.service-card {
  transition: transform 0.15s ease, box-shadow 0.3s ease;
  will-change: transform;
}
.service-card:hover { box-shadow: 0 12px 32px rgba(0,0,0,0.09); }

/* ── Service card numbers bounce on card hover ── */
.service-card:hover .service-num {
  animation: numBounce 0.45s var(--bounce);
}
@keyframes numBounce {
  0%   { transform: scale(1); }
  40%  { transform: scale(1.5) rotate(-8deg); }
  70%  { transform: scale(0.9) rotate(4deg); }
  100% { transform: scale(1) rotate(0deg); }
}

/* ── Monogram spin on hover ── */
.monogram {
  transition: transform 0.6s var(--spring), box-shadow 0.3s;
  cursor: default;
}
.monogram:hover {
  transform: rotate(15deg) scale(1.08);
  box-shadow: 0 12px 36px rgba(91,191,130,0.35);
}

/* ── About text links / paragraphs — subtle highlight ── */
.about-text p {
  transition: color 0.25s;
}

/* ── Package cards — base (JS handles tilt) ── */
.package-card {
  transition: transform 0.15s ease, box-shadow 0.3s ease;
  will-change: transform;
}
.package-card:hover { box-shadow: 0 16px 40px rgba(0,0,0,0.1); }

/* ── Pkg CTA buttons ── */
.pkg-cta {
  transition: opacity 0.2s, transform 0.4s var(--spring), box-shadow 0.3s;
  position: relative;
  overflow: hidden;
}
.pkg-cta:hover {
  opacity: 1;
  transform: translateY(-3px) scale(1.03);
  box-shadow: 0 6px 20px rgba(0,0,0,0.15);
}
.pkg-cta:active { transform: scale(0.96); }

/* ── Timeline step numbers ── */
.step-num {
  transition: transform 0.4s var(--spring);
  cursor: default;
}
.step:hover .step-num { transform: scale(1.2) rotate(-8deg); }

/* ── FAQ items ── */
.faq-item {
  transition: transform 0.35s var(--spring), box-shadow 0.3s, border-color 0.2s;
}
.faq-item:hover {
  transform: translateY(-4px) scale(1.01);
  box-shadow: 0 10px 28px rgba(0,0,0,0.07);
  border-color: var(--coral);
}

/* ── Ghost hero deco text — JS handles parallax ── */
.hero-deco { transition: transform 0.1s linear; }

/* ── Footer text wiggle on hover ── */
footer span {
  display: inline-block;
  transition: transform 0.35s var(--spring);
}
footer span:hover { transform: translateY(-3px) rotate(-2deg); }

/* ── Scroll-reveal ── */
.reveal {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 0.55s var(--smooth), transform 0.55s var(--smooth);
}
.reveal.visible {
  opacity: 1;
  transform: none;
}
