/* ── Giriş animasyonları (hero) ── */
.anim-fade-up,
.anim-scale-in,
.anim-grow,
.anim-blur-up {
  opacity: 0;
  animation-fill-mode: forwards;
  animation-duration: 1s;
  animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
  animation-delay: var(--d, 0s);
}

.anim-fade-up { animation-name: animFadeUp; }
.anim-scale-in { animation-name: animScaleIn; }
.anim-grow { animation-name: animGrow; transform: scaleX(0); }
.anim-blur-up { animation-name: animBlurUp; filter: blur(8px); }

@keyframes animFadeUp {
  from { opacity: 0; transform: translateY(32px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes animScaleIn {
  from { opacity: 0; transform: scale(0.88); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes animGrow {
  from { opacity: 0; transform: scaleX(0); }
  to { opacity: 1; transform: scaleX(1); }
}

@keyframes animBlurUp {
  from { opacity: 0; transform: translateY(24px); filter: blur(10px); }
  to { opacity: 1; transform: translateY(0); filter: blur(0); }
}

/* ── Scroll reveal varyantları ── */
.reveal,
.reveal-left,
.reveal-right,
.reveal-scale,
.reveal-blur {
  opacity: 0;
  transition:
    opacity 0.85s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.85s cubic-bezier(0.22, 1, 0.36, 1),
    filter 0.85s cubic-bezier(0.22, 1, 0.36, 1);
}

.reveal { transform: translateY(28px); }
.reveal-left { transform: translateX(-36px); }
.reveal-right { transform: translateX(36px); }
.reveal-scale { transform: scale(0.94); }
.reveal-blur { transform: translateY(20px); filter: blur(6px); }

.reveal.visible,
.reveal-left.visible,
.reveal-right.visible,
.reveal-scale.visible,
.reveal-blur.visible {
  opacity: 1;
  transform: none;
  filter: none;
}

/* Section başlık parlaması */
.section-title.visible {
  animation: titleGlow 1.2s ease-out;
}

@keyframes titleGlow {
  0% { letter-spacing: 0.08em; opacity: 0.7; }
  100% { letter-spacing: 0.04em; opacity: 1; }
}

/* ── Yüzen ışık küreleri ── */
.orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(55px);
  pointer-events: none;
  will-change: transform;
}

.orb--lilac {
  width: 380px;
  height: 380px;
  background: rgba(185, 165, 200, 0.32);
  animation: orbFloat1 11s ease-in-out infinite;
}

.orb--gold {
  width: 300px;
  height: 300px;
  background: rgba(217, 197, 174, 0.42);
  animation: orbFloat2 13s ease-in-out infinite;
}

.orb--cream {
  width: 220px;
  height: 220px;
  background: rgba(250, 246, 241, 0.88);
  animation: orbFloat3 9s ease-in-out infinite;
}

@keyframes orbFloat1 {
  0%, 100% { transform: translate(0, 0); }
  33% { transform: translate(32px, -24px); }
  66% { transform: translate(-16px, 12px); }
}

@keyframes orbFloat2 {
  0%, 100% { transform: translate(0, 0); }
  33% { transform: translate(-28px, 20px); }
  66% { transform: translate(18px, -14px); }
}

@keyframes orbFloat3 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(16px, 16px) scale(1.08); }
}

/* ── Dönen halka ── */
.spin-ring {
  position: absolute;
  border: 1px solid rgba(185, 165, 200, 0.22);
  border-radius: 50%;
  animation: ringSpin 50s linear infinite;
  pointer-events: none;
}

.spin-ring::after {
  content: "";
  position: absolute;
  inset: 16%;
  border: 1px solid rgba(196, 169, 139, 0.18);
  border-radius: 50%;
  animation: ringSpin 35s linear infinite reverse;
}

@keyframes ringSpin {
  to { transform: translate(-50%, -50%) rotate(360deg); }
}

/* ── Logo yavaş salınım ── */
.float-gentle {
  animation: floatGentle 5.5s ease-in-out infinite;
}

@keyframes floatGentle {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}

/* ── Scroll ipucu ── */
.scroll-hint {
  position: absolute;
  bottom: 2rem;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  animation: scrollHint 2.4s ease-in-out infinite;
  z-index: 2;
}

.scroll-hint__label {
  font-size: 0.58rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--text-soft);
}

.scroll-hint__line {
  display: block;
  width: 1px;
  height: 48px;
  background: linear-gradient(to bottom, var(--lilac-deep), transparent);
  transform-origin: top;
  animation: scrollLine 2.4s ease-in-out infinite;
}

@keyframes scrollHint {
  0%, 100% { transform: translateX(-50%) translateY(0); opacity: 1; }
  50% { transform: translateX(-50%) translateY(10px); opacity: 0.45; }
}

@keyframes scrollLine {
  0%, 100% { transform: scaleY(1); opacity: 1; }
  50% { transform: scaleY(0.55); opacity: 0.4; }
}

/* ── Mobil menü stagger ── */
@media (max-width: 768px) {
  .nav-menu.open a {
    animation: navLinkIn 0.45s cubic-bezier(0.22, 1, 0.36, 1) both;
    animation-delay: calc(var(--nav-i, 0) * 0.06s + 0.08s);
  }
}

@keyframes navLinkIn {
  from { opacity: 0; transform: translateX(20px); }
  to { opacity: 1; transform: translateX(0); }
}

/* ── Kart tilt hover (desktop) ── */
@media (hover: hover) and (pointer: fine) {
  .service-card,
  .review-card,
  .card {
    will-change: transform;
  }
}

@media (prefers-reduced-motion: reduce) {
  body {
    animation: none !important;
    opacity: 1 !important;
  }

  .atmosphere__mesh,
  .atmosphere__sheen,
  .hero__wash--a,
  .hero__wash--b,
  .hero__line::after,
  .brand::after,
  .btn-shimmer::after,
  .review-card__stars,
  .ornament::before,
  .ornament::after,
  .ornament span,
  .orb,
  .spin-ring,
  .float-gentle,
  .scroll-hint,
  .scroll-hint__line,
  .whatsapp-fab,
  .cta-band__glow {
    animation: none !important;
  }

  .review-card__stars {
    background: none;
    -webkit-background-clip: unset;
    background-clip: unset;
    color: var(--gold);
  }

  .anim-fade-up,
  .anim-scale-in,
  .anim-grow,
  .anim-blur-up {
    opacity: 1;
    animation: none;
    transform: none;
    filter: none;
  }

  .reveal,
  .reveal-left,
  .reveal-right,
  .reveal-scale,
  .reveal-blur {
    opacity: 1;
    transform: none;
    filter: none;
  }

  .nav-menu.open a {
    animation: none !important;
  }

  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
