/* ══════════════════════════════════════════════════════════
   UX Enhancements — Andrej Avi Real Estate
   Shared across all pages. Non-destructive layer.
   ══════════════════════════════════════════════════════════ */

/* ── 1. cursor:pointer on all interactive elements ── */
a,
button,
select,
[onclick],
[role="button"],
.btn-perla,
.btn-midnight,
.btn-outline,
.btn-outline-light,
.nav-link,
.nav-cta,
.mob-link,
.lang-btn,
.hamburger,
.fab,
.filter-btn,
.prop-card,
summary {
  cursor: pointer;
}

/* ── 2. Hover transitions (safety net for elements missing transition) ── */
a,
button,
.nav-link,
.nav-cta,
.mob-link,
.fab {
  transition-property: color, background-color, border-color, opacity, transform, box-shadow;
  transition-duration: 0.25s;
  transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}

/* Don't override elements that already define specific transitions */
.btn-perla,
.btn-midnight,
.btn-outline,
.btn-outline-light,
.reveal,
.hero-bg,
#navbar {
  /* these already have hand-tuned transitions — leave as-is */
}

/* ── 3. Focus-visible states for keyboard navigation ── */
:focus {
  outline: none;
}

:focus-visible {
  outline: 2px solid #1A2844;
  outline-offset: 3px;
  border-radius: 2px;
}

/* Light backgrounds: dark outline */
.btn-perla:focus-visible,
.btn-outline:focus-visible,
.filter-btn:focus-visible,
select:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline-color: #1A2844;
}

/* Dark backgrounds: light outline */
.btn-midnight:focus-visible,
.btn-outline-light:focus-visible,
.nav-link:focus-visible,
.nav-cta:focus-visible,
.lang-btn:focus-visible,
.hamburger:focus-visible,
.mob-link:focus-visible,
.fab:focus-visible,
.btn-perla:focus-visible {
  outline-color: #F5F2EE;
}

/* On perla bg */
.btn-perla:focus-visible {
  outline-color: #1A2844;
}

/* ── 4. FAB pulse animation (WhatsApp button) ── */
.fab {
  animation: fabp 3s ease-in-out 3s 1;
}
@keyframes fabp {
  0%   { box-shadow: 0 4px 18px rgba(37,211,102,.35); }
  50%  { box-shadow: 0 4px 18px rgba(37,211,102,.35), 0 0 0 16px rgba(37,211,102,.08); }
  100% { box-shadow: 0 4px 18px rgba(37,211,102,.35); }
}

/* ── 5. prefers-reduced-motion ── */
@media (prefers-reduced-motion: reduce) {
  /* Disable scroll-reveal animation */
  .reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  /* Disable hero entrance animations */
  .h-eyebrow,
  .h-heading,
  .h-sub,
  .h-cta,
  .h-rule,
  .h-scroll {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }

  /* Disable hero background zoom */
  .hero-bg,
  .hero-bg.loaded {
    transform: none !important;
    transition: none !important;
  }

  /* Reduce all transitions to near-instant */
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }

  /* Keep scroll behavior instant */
  html {
    scroll-behavior: auto !important;
  }
}
