/* =========================================================================
   jasapropertiindo — style.css
   Custom CSS yang TIDAK bisa dicapai hanya dengan utility class Tailwind:
   - Konfigurasi dasar halaman (scroll behaviour, font)
   - Animasi & transisi sidebar mobile
   - Efek hover kartu (card lift)
   - Gradient hero
   - Garis bawah animasi pada navigasi
   - Komponen slider/carousel properti unggulan
   ========================================================================= */

/* --- Dasar Halaman --- */
html {
  scroll-behavior: smooth;
}

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* --- Sidebar Menu Mobile ---
   Sidebar disembunyikan dengan translate-x-full lalu digeser masuk
   dengan menambahkan class .sidebar-open pada container-nya. */
.sidebar-overlay {
  transition:
    opacity 0.3s ease-in-out,
    visibility 0.3s ease-in-out;
}
.sidebar-panel {
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
.sidebar-open .sidebar-overlay {
  opacity: 1;
  visibility: visible;
}
.sidebar-open .sidebar-panel {
  transform: translateX(0);
}

/* --- Efek Hover "Lift" untuk Kartu Properti & Layanan --- */
.card-lift {
  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease;
}
.card-lift:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.15);
}

/* --- Gradient Latar Hero Section --- */
.hero-gradient {
  background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 50%, #e2e8f0 100%);
}

/* --- Garis Bawah Animasi pada Link Navigasi Desktop --- */
.nav-link {
  position: relative;
}
.nav-link::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 2px;
  background-color: #0ea5e9;
  transition: width 0.3s ease;
}
.nav-link:hover::after,
.nav-link.active::after {
  width: 100%;
}
.nav-link.active {
  color: #0284c7;
}

/* =========================================================================
   SLIDER / CAROUSEL PROPERTI UNGGULAN (Halaman Beranda)
   Struktur: .slider-track berisi beberapa .slide yang disusun horizontal
   dengan flexbox, lalu digeser menggunakan transform: translateX() oleh
   js/script.js. Pengaturan kecepatan ada di js/script.js (lihat DOKUMENTASI.md).
   ========================================================================= */
.slider-viewport {
  overflow: hidden;
  position: relative;
  border-radius: 1rem;
}
.slider-track {
  display: flex;
  transition: transform 0.6s cubic-bezier(0.65, 0, 0.35, 1);
  will-change: transform;
}
.slide {
  flex: 0 0 100%;
  width: 100%;
}

@media (min-width: 768px) {
  .slide {
    flex: 0 0 50%;
    width: 50%;
  }
}

@media (min-width: 1024px) {
  .slide {
    flex: 0 0 33.3333%;
    width: 33.3333%;
  }
}

.slider-dot {
  width: 8px;
  height: 8px;
  border-radius: 9999px;
  background-color: #cbd5e1;
  transition:
    background-color 0.3s ease,
    width 0.3s ease;
  cursor: pointer;
}
.slider-dot.active {
  background-color: #0ea5e9;
  width: 24px;
}

.slider-nav-btn {
  transition:
    background-color 0.2s ease,
    transform 0.2s ease;
}
.slider-nav-btn:hover {
  transform: scale(1.08);
}

/* --- Filter Properti (Halaman Katalog) --- */
.filter-btn {
  transition: all 0.2s ease;
}
.filter-btn.active {
  background-color: #0284c7;
  color: #ffffff;
  box-shadow: 0 8px 16px -6px rgba(2, 132, 199, 0.4);
}

/* Properti yang sedang difilter keluar disembunyikan secara halus */
.property-card[data-hidden='true'] {
  display: none;
}

/* --- Animasi muncul ringan untuk elemen yang baru ditampilkan --- */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.fade-in-up {
  animation: fadeInUp 0.5s ease both;
}

/* --- Status pengiriman form kontak --- */
.form-status {
  transition: opacity 0.3s ease;
}
