/* ==========================================================================
   HaloMumu -- Landing Page
   Token warna baru (arahan Kak Mumu, palet "pomar"): Pumpkin Orange, Salad
   Green, Bottle Green, Eggshell White. Dibangun per section, mulai dari
   Hero. Section lain menyusul.
   ========================================================================== */

@font-face {
  font-family: 'Google Sans Flex';
  src: url('./fonts/GoogleSansFlex.woff2') format('woff2-variations'),
       url('./fonts/GoogleSansFlex.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

:root {
  /* Warna inti (persis hex dari arahan Kak Mumu) */
  --color-pumpkin: #FF6400;
  --color-pumpkin-dark: #E05800;
  --color-pumpkin-tint: #FDE7D6;
  --color-salad: #8CC850;
  --color-salad-dark: #6FA83A;
  --color-salad-tint: #E9F5DC;
  --color-bottle: #003223;
  --color-bottle-soft: #0B4A36;
  --color-eggshell: #F5EBE1;
  --color-white: #FFFFFF;

  /* Peran warna semantik */
  --color-bg-page: var(--color-white);
  --color-bg-card-light: var(--color-white);
  --color-bg-dark: var(--color-bottle);
  --color-text-primary: var(--color-bottle);
  --color-text-muted: #3F5A4E;
  --color-text-inverse: var(--color-eggshell);
  --color-btn-primary-bg: var(--color-pumpkin);
  --color-btn-primary-text: var(--color-white);
  --color-border: rgba(0, 50, 35, 0.16);

  /* Tipografi -- Google Sans Flex, sama seperti app supaya satu rasa */
  --font-primary: 'Google Sans Flex', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --fw-regular: 400;
  --fw-semibold: 600;
  --fw-bold: 700;
  --fw-extrabold: 800;

  /* Bentuk & jarak */
  --radius-pill: 999px;
  --radius-card: 28px;
  --spacing-page-side: 20px;
  --container-max: 1360px;
  --shadow-card: 0 12px 32px 0 rgba(0, 50, 35, 0.10);
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}

body {
  font-family: var(--font-primary);
  background: var(--color-bg-page);
  color: var(--color-text-primary);
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}

img {
  max-width: 100%;
  display: block;
}

a {
  color: inherit;
}

/* Elemen <button> asli punya font default browser sendiri (tidak ikut
   warisi dari body seperti <a>) -- disamakan supaya tombol yang tadinya
   <a> (mis. CTA Scalev, tombol profil Kak Mumu) tidak berubah font saat
   diubah jadi <button> untuk perilaku dialog. */
button {
  font-family: inherit;
}

.container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--spacing-page-side);
}

/* Elemen scroll-reveal (dipakai script.js), sembunyi dulu sebelum masuk
   viewport supaya animasi kelihatan; kalau JS tidak jalan/reduced-motion,
   tetap terlihat penuh lewat fallback di bawah. */
.reveal {
  opacity: 0;
  transform: translateY(24px) scale(0.96);
  transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}
@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
/* fallback no-JS: JS akan menambahkan class ini di <html>, kalau tidak
   ada berarti JS gagal dan konten tetap harus tampil */
.no-js .reveal {
  opacity: 1;
  transform: none;
}

/* ---------------------------------------------------------------------
   Header
   --------------------------------------------------------------------- */
.header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--color-border);
}

.header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding-top: 14px;
  padding-bottom: 14px;
}

.logo {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
}

.logo__gambar {
  height: 32px;
  width: auto;
}

.header__aksi {
  display: flex;
  align-items: center;
  gap: 10px;
}

.tombol-masuk {
  font-size: 15px;
  font-weight: var(--fw-semibold);
  color: var(--color-bottle);
  text-decoration: none;
  padding: 10px 18px;
  border-radius: var(--radius-pill);
  transition: background 0.2s ease;
}
.tombol-masuk:hover {
  background: rgba(0, 50, 35, 0.06);
}

.tombol {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: var(--fw-bold);
  text-decoration: none;
  white-space: nowrap;
  border: none;
  cursor: pointer;
  border-radius: var(--radius-pill);
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}
.tombol:active {
  transform: scale(0.97);
}
.tombol--primer {
  background: var(--color-btn-primary-bg);
  color: var(--color-btn-primary-text);
  padding: 14px 28px;
  box-shadow: 0 6px 18px 0 rgba(255, 100, 0, 0.30);
}
.tombol--primer:hover {
  background: var(--color-pumpkin-dark);
  box-shadow: 0 8px 22px 0 rgba(255, 100, 0, 0.36);
}
.tombol--primer-kecil {
  background: var(--color-btn-primary-bg);
  color: var(--color-btn-primary-text);
  padding: 10px 20px;
  font-size: 14px;
}
.tombol--primer-kecil:hover {
  background: var(--color-pumpkin-dark);
}

/* Stroke hijau di tombol "Masuk" header (revisi Kak Mumu 2026-07-20 --
   sebelumnya salah taruh di "Mulai Pendampingan"). "Mulai Pendampingan"
   sengaja TANPA stroke apa pun, cukup mengandalkan warna solidnya sendiri. */
.tombol--stroke-hijau {
  border: 2px solid var(--color-salad);
}

/* ---------------------------------------------------------------------
   Hero -- kartu gelap besar (mengikuti pola benchmark), foto di kanan,
   teks + CTA di kiri bawah. Di layar desktop, seluruh Hero (kartu gelap +
   baris kartu langkah) ditarget muat dalam satu layar tanpa scroll --
   makanya ukuran/jarak dibuat kompak dan tingginya dipatok relatif ke
   tinggi viewport (bukan cuma lebar).
   --------------------------------------------------------------------- */
.hero {
  padding: 16px 0 20px;
  display: flex;
  align-items: center;
}

@media (min-width: 861px) {
  .hero {
    min-height: calc(100vh - 66px); /* 66px = perkiraan tinggi header sticky */
  }
  .hero .container {
    width: 100%;
  }
}

.hero__kartu-gelap {
  position: relative;
  background: var(--color-bg-dark);
  border-radius: 32px;
  padding: 30px 34px 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: 24px;
  overflow: visible;
  isolation: isolate;
}

.hero__gelap-konten {
  padding-bottom: 28px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.hero__badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: var(--fw-semibold);
  color: var(--color-eggshell);
  border: 1.5px solid rgba(245, 235, 225, 0.35);
  border-radius: var(--radius-pill);
  padding: 6px 16px;
  width: fit-content;
}

.hero__judul {
  font-size: clamp(1.8rem, 2vw + 1.2rem, 2.7rem);
  font-weight: var(--fw-extrabold);
  line-height: 1.08;
  letter-spacing: -0.02em;
  color: var(--color-eggshell);
}

.hero__sub {
  max-width: 42ch;
  font-size: 16px;
  color: rgba(245, 235, 225, 0.72);
  line-height: 1.55;
}
.hero__sub strong {
  color: var(--color-eggshell);
  font-weight: var(--fw-extrabold);
}

.hero__aksi {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 2px;
  flex-wrap: nowrap;
}

.tombol--cta-gelap {
  background: var(--color-btn-primary-bg);
  color: var(--color-btn-primary-text);
  padding: 13px 24px;
  font-size: 14px;
  flex-shrink: 0;
  box-shadow: 0 6px 18px 0 rgba(255, 100, 0, 0.35);
}
.tombol--cta-gelap:hover {
  background: var(--color-pumpkin-dark);
}

/* Layar sangat sempit (HP kecil, ~320-360px) -- kecilkan sedikit tombol
   CTA & jarak supaya "Mulai Pendampingan" + tombol panah tetap muat 1
   baris tanpa terpotong. */
@media (max-width: 400px) {
  .hero__aksi {
    gap: 8px;
  }
  .tombol--cta-gelap {
    padding: 12px 18px;
    font-size: 13px;
  }
  .tombol__lingkaran {
    width: 38px;
    height: 38px;
  }
}

.tombol__lingkaran {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--color-eggshell);
  color: var(--color-bottle);
  flex-shrink: 0;
  transition: transform 0.15s ease;
}
.hero__aksi:hover .tombol__lingkaran {
  transform: translateX(3px);
}

/* Foto Kak Mumu -- placeholder sampai file foto asli tersedia, lihat
   docs/prompt-ilustrasi-landing.md. Tinggi dipatok ke vh (bukan ikut lebar
   kolom) supaya tidak membengkak dan mendorong Hero keluar dari satu
   layar di layar lebar. Foto sengaja "meluber" sedikit di bawah kartu
   gelap, meniru pola benchmark. */
.hero__foto-luar {
  position: relative;
}

.hero__foto-wrap {
  position: relative;
  width: 100%;
  height: clamp(220px, 42vh, 400px);
  border-radius: 24px;
  background: var(--color-eggshell);
  overflow: hidden;
}

/* Kotak "Tanya Mumu" menumpuk di depan foto -- sengaja di luar
   .hero__foto-wrap (lihat komentar HTML) supaya tidak ikut terpotong
   overflow:hidden punya foto. Pola dan animasi glow sama seperti versi
   di mockup ponsel CTA. Sengaja dipendekkan dan ditaruh di pojok kanan
   saja (bukan melebar penuh) supaya foto Kak Mumu tetap kelihatan. */
.hero__foto-chat {
  position: absolute;
  z-index: 3;
  right: 14px;
  bottom: 14px;
  width: min(58%, 190px);
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: var(--color-eggshell);
  border-radius: 16px;
  padding: 10px 14px;
  animation: chat-glow 2.4s ease-in-out infinite;
}

.hero__foto-placeholder {
  height: 100%;
  width: 100%;
  background: linear-gradient(180deg, var(--color-eggshell) 0%, #E9DCC9 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 20px 16px;
  color: var(--color-bottle);
  text-align: center;
}

.hero__foto {
  height: 100%;
  width: 100%;
  object-fit: cover;
  object-position: center center;
  display: block;
}

.hero__foto-placeholder svg {
  width: 56px;
  height: 56px;
  opacity: 0.7;
}

.hero__foto-placeholder span {
  font-size: 11.5px;
  font-weight: var(--fw-semibold);
  opacity: 0.7;
  max-width: 20ch;
}

@media (max-width: 860px) {
  .hero {
    display: block;
  }
  .hero__kartu-gelap {
    grid-template-columns: 1fr;
    padding: 28px 22px 0;
    border-radius: 26px;
  }
  .hero__foto-luar {
    margin: 0 auto;
  }
  .hero__foto-wrap {
    height: clamp(200px, 34vh, 320px);
  }
  .hero__foto-chat {
    right: 10px;
    bottom: 10px;
    width: min(62%, 170px);
  }
}

/* Baris kartu langkah, di bawah kartu gelap -- pola "ilustrasi penuh +
   teks overlay di bawah" seperti benchmark. Ilustrasi asli dipasang lewat
   background-image (lihat docs/prompt-ilustrasi-landing.md); selama file
   belum ada, background-color per varian jadi fallback jadi kartu tetap
   enak dilihat. Tinggi dipatok ke vh (bukan portrait) supaya tetap muat
   satu layar bareng kartu gelap di atasnya, sekaligus sedikit lebih besar
   dari versi sebelumnya. */
.hero__kartu-list {
  margin-top: 16px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  text-align: left;
}

.kartu-langkah {
  position: relative;
  height: clamp(200px, 24vh, 280px);
  border-radius: 24px;
  box-shadow: var(--shadow-card);
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  padding: 20px;
  background-size: cover;
  background-position: center;
}

/* Scrim gradasi gelap di bawah kartu supaya teks putih tetap terbaca di
   atas ilustrasi apa pun -- persis pola benchmark. */
.kartu-langkah::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 15%, rgba(0, 15, 10, 0.55) 45%, rgba(0, 15, 10, 0.92) 100%);
  pointer-events: none;
}

.kartu-langkah__judul {
  position: relative;
  z-index: 1;
  color: var(--color-white);
  font-size: 13.5px;
  font-weight: var(--fw-extrabold);
  line-height: 1.35;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}

.kartu-langkah--salad {
  background-color: var(--color-salad);
  background-image: url('./images/kartu-langkah-1.jpg');
}
.kartu-langkah--pumpkin {
  background-color: var(--color-pumpkin);
  background-image: url('./images/kartu-langkah-2.jpg');
}
.kartu-langkah--bottle {
  background-color: var(--color-bottle);
  background-image: url('./images/kartu-langkah-3.jpg');
}

@media (max-width: 720px) {
  .hero__kartu-list {
    grid-template-columns: 1fr;
  }
}

/* Di layar sempit, tombol CTA kecil di header disembunyikan supaya tidak
   pecah baris/berdesakan dengan tombol Masuk -- CTA utama tetap ada dan
   jelas di dalam Hero, jadi tidak kehilangan jalur konversi. */
@media (max-width: 480px) {
  .tombol--primer-kecil {
    display: none;
  }
}

/* ---------------------------------------------------------------------
   Pain -- diagram alur: badge keluarga di kiri bercabang ke 4 kartu
   situasi, lalu mengerucut ke satu kartu hasil ("bingung solusinya") di
   kanan. Kolom kiri/kanan dikunci ke lebar px tetap (bukan minmax fluid)
   supaya lebar SVG garis penghubung (dihitung dari angka px yang sama)
   selalu presisi menempel di batas kolom, bukan cuma perkiraan.
   --------------------------------------------------------------------- */
.pain {
  position: relative;
  padding: 56px 0 64px;
  overflow: hidden;
}

.pain__daun {
  position: absolute;
  width: 90px;
  height: 90px;
  color: var(--color-salad-dark);
  opacity: 0.1;
  pointer-events: none;
}
.pain__daun--1 {
  top: 24px;
  right: 24px;
}
.pain__daun--2 {
  bottom: 24px;
  left: 24px;
  transform: rotate(200deg);
}

.pain__judul {
  text-align: center;
  font-size: clamp(1.5rem, 1.8vw + 1rem, 2.3rem);
  font-weight: var(--fw-extrabold);
  color: var(--color-bottle);
  max-width: 30ch;
  margin: 0 auto 48px;
}

.pain__diagram {
  position: relative;
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr) 280px;
  gap: 20px;
  max-width: 1120px;
  margin: 0 auto;
}

/* Dua SVG absolut, satu di gutter kiri (badge -> kartu, hijau) dan satu
   di gutter kanan (kartu -> hasil, oranye), z-index di bawah kartu.
   Lebar dihitung persis dari kolom+gap kiri/kanan (lihat komentar di
   atas), viewBox 0-100 dengan preserveAspectRatio="none" supaya paths
   selalu meregang pas ke ukuran gutter itu, ikut menyempit proporsional
   kalau .pain__diagram menyempit (sampai batas lebar mobile). */
.pain__garis {
  position: absolute;
  top: 0;
  height: 100%;
  z-index: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
  pointer-events: none;
}
.pain__garis--kiri {
  left: 0;
  width: calc(210px + 20px);
  color: var(--color-salad-dark);
}
.pain__garis--kanan {
  right: 0;
  width: calc(280px + 20px);
  color: var(--color-pumpkin);
}
.pain__garis-putus {
  stroke-dasharray: 4 3;
}
.pain__garis-titik {
  fill: currentColor;
  stroke: none;
}
.pain__garis-panah-batang {
  stroke-width: 2;
}
.pain__garis-panah-kepala {
  fill: currentColor;
  stroke: none;
}

/* Zona kiri -- badge dan caption diposisikan absolute (bukan flex
   center biasa) supaya titik tengah badge SELALU persis di tengah
   tinggi baris (matching titik tengah SVG garis kiri), tidak bergeser
   naik gara-gara caption di bawahnya ikut dihitung dalam centering. */
/* SENGAJA tidak diberi height:100% -- karena tinggi baris grid ini
   "auto" (ditentukan konten, bukan angka tetap), height:100% pada anak
   grid tidak bisa resolve ke tinggi baris (jadi diam-diam balik ke
   auto) dan malah bikin box ini lebih pendek dari baris sebenarnya.
   align-items:stretch (default grid) yang justru benar di sini, karena
   itu bagian dari algoritma sizing grid sendiri, bukan height biasa. */
.pain__kiri {
  position: relative;
}
.pain__badge {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 108px;
  height: 108px;
  border-radius: 50%;
  background: var(--color-bottle);
  color: var(--color-eggshell);
  box-shadow: 0 0 0 10px rgba(140, 200, 80, 0.16);
}
.pain__badge svg {
  width: 52px;
  height: 52px;
}
.pain__caption {
  position: absolute;
  top: calc(50% + 76px);
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 20ch;
  text-align: center;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--color-text-muted);
}

/* Zona tengah -- 4 kartu pil bertumpuk. */
.pain__kartu-list {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.pain__kartu {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--color-white);
  border-radius: 28px;
  padding: 14px 20px;
  box-shadow: 0 8px 24px 0 rgba(0, 50, 35, 0.08);
}
.pain__kartu p {
  font-size: 15px;
  font-weight: var(--fw-bold);
  line-height: 1.4;
  color: var(--color-bottle);
}
.pain__kartu-ikon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  flex-shrink: 0;
}
.pain__kartu-ikon svg {
  width: 22px;
  height: 22px;
}
.pain__kartu-ikon--salad {
  background: var(--color-salad-tint);
  color: var(--color-salad-dark);
}
.pain__kartu-ikon--pumpkin {
  background: var(--color-pumpkin-tint);
  color: var(--color-pumpkin-dark);
}

/* Zona kanan -- satu kartu hasil, dibungkus wrapper setinggi baris
   supaya kartunya sendiri tetap berukuran wajar (bukan diregangkan
   penuh) tapi tetap kelihatan center secara vertikal. */
.pain__kanan {
  display: flex;
  align-items: center;
}
.pain__hasil {
  display: flex;
  align-items: center;
  gap: 16px;
  width: 100%;
  background: var(--color-pumpkin-tint);
  border-radius: 28px;
  padding: 24px 22px;
  box-shadow: 0 8px 24px 0 rgba(224, 88, 0, 0.12);
}
.pain__hasil-ikon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  color: var(--color-pumpkin-dark);
}
.pain__hasil-ikon svg {
  width: 40px;
  height: 40px;
}
.pain__hasil p {
  font-size: 15.5px;
  font-weight: var(--fw-extrabold);
  line-height: 1.4;
  color: var(--color-bottle);
}

/* Urutan muncul saat scroll: badge dulu, lalu 4 kartu satu-satu, baru
   kartu hasil paling akhir -- dicapai lewat transition-delay bertingkat
   di atas .reveal, tanpa perlu JS tambahan (IntersectionObserver yang
   sudah ada otomatis pick up semua elemen .reveal ini). */
.pain__kiri.reveal {
  transition-delay: 0s;
}
.pain__kartu:nth-child(1).reveal {
  transition-delay: 0.1s;
}
.pain__kartu:nth-child(2).reveal {
  transition-delay: 0.2s;
}
.pain__kartu:nth-child(3).reveal {
  transition-delay: 0.3s;
}
.pain__kartu:nth-child(4).reveal {
  transition-delay: 0.4s;
}
.pain__hasil.reveal {
  transition-delay: 0.55s;
}

@media (max-width: 768px) {
  .pain__diagram {
    grid-template-columns: 1fr;
    max-width: 440px;
    gap: 28px;
  }
  .pain__garis {
    display: none;
  }
  .pain__kiri {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 18px;
  }
  .pain__badge {
    position: static;
    transform: none;
  }
  .pain__caption {
    position: static;
    transform: none;
    max-width: 32ch;
  }
  .pain__kartu-list {
    border-left: 2px dashed var(--color-salad);
    padding-left: 20px;
    margin-left: 8px;
  }
}

/* Label pembuka section -- dipakai di Pain, dan jadi kerangka yang sama
   buat section-section berikutnya (Cara Kerja, Mengapa HaloMumu, dst).
   Kotak besar warna krem + teks hijau tua tebal, mengikuti arahan warna
   terbaru (bukan pill putih bertepi tipis lagi). */
.label-section {
  display: inline-flex;
  align-items: center;
  font-size: clamp(18px, 1.4vw + 12px, 22px);
  font-weight: var(--fw-bold);
  color: var(--color-bottle);
  border-radius: var(--radius-pill);
  padding: 18px 34px;
  background: var(--color-eggshell);
}

.pain .label-section {
  display: block;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
}

.pain__soroti {
  display: inline;
  font-weight: var(--fw-extrabold);
  padding: 3px 10px;
  border-radius: 10px;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
  cursor: pointer;
  transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.pain__soroti--pumpkin {
  background: var(--color-pumpkin-tint);
  color: var(--color-bottle);
}
.pain__soroti--salad {
  background: var(--color-salad-tint);
  color: var(--color-bottle);
}

/* Micro-interaction: kata yang di-highlight "melompat" (bounce) waktu
   disentuh/klik. Class .is-bounce ditambah/dihapus lewat script.js pakai
   event `click` (bukan CSS :active), supaya konsisten jalan di HP -- di
   Safari iOS, :active di elemen non-tautan/tombol sering tidak terpicu
   sama sekali oleh tap. */
@keyframes soroti-bounce {
  0% { transform: scale(1); }
  45% { transform: scale(1.16); }
  75% { transform: scale(0.94); }
  100% { transform: scale(1); }
}
.pain__soroti:hover {
  transform: scale(1.08);
}
.pain__soroti.is-bounce {
  animation: soroti-bounce 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* ---------------------------------------------------------------------
   Cara Kerja -- badge + headline, 2 kartu ringkas berwarna, 3 kartu
   langkah ala benchmark (badge+ikon panah di atas, foto besar di bawah).
   Foto asli dipasang lewat background-image, lihat
   docs/prompt-ilustrasi-landing.md.
   --------------------------------------------------------------------- */
.cara-kerja {
  padding: 48px 0 56px;
}

.cara-kerja__atas {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 22px;
  text-align: center;
  margin-bottom: 40px;
}

.cara-kerja__judul {
  font-size: clamp(1.5rem, 1.8vw + 1rem, 2.3rem);
  font-weight: var(--fw-extrabold);
  line-height: 1.3;
  color: var(--color-bottle);
  max-width: 26ch;
}

@media (min-width: 761px) {
  .cara-kerja__judul {
    max-width: 40ch;
  }
}

.cara-kerja__ringkas {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 40px;
}

.cara-kerja__ringkas-item {
  display: flex;
  flex-direction: column;
  gap: 16px;
  border-radius: 24px;
  padding: 30px 32px;
  font-size: 18px;
  font-weight: var(--fw-bold);
  line-height: 1.5;
  color: var(--color-bottle);
}
.cara-kerja__ringkas-item:nth-child(1) {
  background: var(--color-salad-tint);
}
.cara-kerja__ringkas-item:nth-child(2) {
  background: var(--color-pumpkin-tint);
}

.cara-kerja__ringkas-ikon {
  width: 40px;
  height: 40px;
  color: var(--color-bottle);
}

.cara-kerja__langkah-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  text-align: left;
}

.langkah-kerja {
  position: relative;
  background: var(--color-eggshell);
  border-radius: 24px;
  padding: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Kartu Langkah 1 sekaligus jadi pemicu modal "Apa itu NADI?" -- seluruh
   kartu bisa diklik (role="button" + tabindex di HTML), bukan cuma ikon
   kecil, supaya area sentuhnya jelas dan gampang dipakai di HP. Hover/
   focus dikasih elevasi ringan supaya kelihatan interaktif. */
.langkah-kerja--klik {
  cursor: pointer;
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.25s ease;
}
.langkah-kerja--klik:hover,
.langkah-kerja--klik:focus-visible {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card);
}
.langkah-kerja--klik:focus-visible {
  outline: 2px solid var(--color-pumpkin);
  outline-offset: 3px;
}

.langkah-kerja__info-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: fit-content;
  font-size: 13px;
  font-weight: var(--fw-extrabold);
  color: var(--color-pumpkin-dark);
}
.langkah-kerja__info-label svg {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
}

.langkah-kerja__atas {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.langkah-kerja__badge {
  display: inline-flex;
  background: var(--color-bottle);
  color: var(--color-eggshell);
  font-size: 13px;
  font-weight: var(--fw-extrabold);
  padding: 8px 18px;
  border-radius: var(--radius-pill);
}

.langkah-kerja__panah {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--color-white);
  color: var(--color-bottle);
  flex-shrink: 0;
}
.langkah-kerja__panah svg {
  width: 15px;
  height: 15px;
}

.langkah-kerja__judul {
  font-size: 19px;
  font-weight: var(--fw-extrabold);
  color: var(--color-bottle);
}

.langkah-kerja__deskripsi {
  font-size: 15px;
  line-height: 1.55;
  color: var(--color-text-muted);
}

.langkah-kerja__foto {
  margin-top: auto;
  aspect-ratio: 16 / 9;
  border-radius: 18px;
  background-size: cover;
  background-position: center;
}
.langkah-kerja--1 .langkah-kerja__foto {
  background-color: var(--color-salad-tint);
  background-image: url('./images/langkah-1.jpg');
}
.langkah-kerja--2 .langkah-kerja__foto {
  background-color: var(--color-pumpkin-tint);
  background-image: url('./images/langkah-2.jpg');
}
.langkah-kerja--3 .langkah-kerja__foto {
  background-color: var(--color-bottle-soft);
  background-image: url('./images/langkah-3.jpg');
}

@media (max-width: 760px) {
  .cara-kerja__ringkas,
  .cara-kerja__langkah-list {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .pain {
    padding: 40px 0 44px;
  }
  .cara-kerja {
    padding: 36px 0 40px;
  }
}

/* ---------------------------------------------------------------------
   Modal "Apa itu NADI?" -- dipicu tombol info di pojok kartu Langkah 1,
   isi konten sama dengan versi section sebelumnya tapi dibuat compact
   supaya muat sebagai popup: ikon lebih kecil, grid 2 kolom, padding
   dirapatkan. Pakai <dialog> native, jadi backdrop dan tombol Escape
   sudah otomatis bawaan browser, tidak perlu JS tambahan untuk itu.
   --------------------------------------------------------------------- */
.modal-nadi {
  /* Reset global "* { margin: 0 }" mematikan trik margin:auto bawaan
     browser untuk menengahkan <dialog>, jadi posisinya ditentukan manual
     lewat fixed + translate supaya tetap center di tengah viewport. */
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  margin: 0;
  border: none;
  border-radius: 24px;
  padding: 0;
  width: min(92vw, 620px);
  max-height: 86vh;
  overflow-y: auto;
  background: var(--color-white);
  box-shadow: var(--shadow-card);
}
.modal-nadi::backdrop {
  background: rgba(0, 50, 35, 0.55);
}

.modal-nadi__kotak {
  position: relative;
  padding: 26px 24px 28px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.modal-nadi__tutup {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 50%;
  background: var(--color-eggshell);
  color: var(--color-bottle);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.modal-nadi__tutup svg {
  width: 15px;
  height: 15px;
}

.modal-nadi__label {
  align-self: flex-start;
  font-size: 13px;
  padding: 9px 18px;
}

.modal-nadi__judul {
  font-size: clamp(1.1rem, 1vw + 0.85rem, 1.4rem);
  font-weight: var(--fw-extrabold);
  line-height: 1.3;
  color: var(--color-bottle);
  padding-right: 26px;
}

.modal-nadi__intro {
  font-size: 14px;
  line-height: 1.55;
  color: var(--color-text-muted);
}

.modal-nadi__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.modal-nadi__item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  background: var(--color-eggshell);
  border-radius: 16px;
  padding: 12px 12px;
}

.modal-nadi__item-ikon-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  flex-shrink: 0;
}
.modal-nadi__item:nth-child(3n+1) .modal-nadi__item-ikon-wrap {
  background: var(--color-salad-tint);
  color: var(--color-bottle);
}
.modal-nadi__item:nth-child(3n+2) .modal-nadi__item-ikon-wrap {
  background: var(--color-pumpkin-tint);
  color: var(--color-bottle);
}
.modal-nadi__item:nth-child(3n) .modal-nadi__item-ikon-wrap {
  background: var(--color-bottle-soft);
  color: var(--color-eggshell);
}

.modal-nadi__item-ikon {
  width: 16px;
  height: 16px;
}

.modal-nadi__item-konten {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.modal-nadi__item-judul {
  font-size: 13px;
  font-weight: var(--fw-extrabold);
  color: var(--color-bottle);
}

.modal-nadi__item-deskripsi {
  font-size: 11.5px;
  line-height: 1.4;
  color: var(--color-text-muted);
}

.modal-nadi__penutup {
  font-size: 13.5px;
  font-weight: var(--fw-semibold);
  line-height: 1.55;
  color: var(--color-bottle);
}

@media (max-width: 480px) {
  .modal-nadi__grid {
    grid-template-columns: 1fr;
  }
}

/* ---------------------------------------------------------------------
   Modal "Isi Pendampingan" -- dipicu tombol klik kartu Langkah 2, pola
   dialog sama seperti modal NADI (fixed + translate untuk center, lihat
   komentar di .modal-nadi soal kenapa bukan margin:auto). Isinya 2 kolom:
   kiri label/judul/ilustrasi, kanan daftar 5 item bernomor gaya
   cta-infaq__no. Satu kolom di mobile, ilustrasi otomatis di atas daftar
   karena urutan DOM kiri lalu kanan.
   --------------------------------------------------------------------- */
.modal-pendampingan {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  margin: 0;
  border: none;
  border-radius: 24px;
  padding: 0;
  width: min(94vw, 820px);
  max-height: 88vh;
  overflow-y: auto;
  background: var(--color-white);
  box-shadow: var(--shadow-card);
}
.modal-pendampingan::backdrop {
  background: rgba(0, 50, 35, 0.55);
}

.modal-pendampingan__tutup {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 2;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 50%;
  background: var(--color-eggshell);
  color: var(--color-bottle);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.modal-pendampingan__tutup svg {
  width: 15px;
  height: 15px;
}

.isi-pendampingan {
  position: relative;
  padding: 30px 28px 32px;
  display: grid;
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: 28px;
}

.isi-pendampingan__kiri {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.isi-pendampingan__label {
  align-self: flex-start;
  font-size: 13px;
  padding: 9px 18px;
}

.isi-pendampingan__judul {
  font-size: clamp(1.15rem, 1vw + 0.9rem, 1.5rem);
  font-weight: var(--fw-extrabold);
  line-height: 1.3;
  color: var(--color-bottle);
}

.isi-pendampingan__ilustrasi {
  flex: 1;
  min-height: 180px;
  border-radius: 18px;
  background-color: var(--color-salad-tint);
  background-image: url('./images/pendampingan-icon.jpg');
  background-size: cover;
  background-position: center;
}

.isi-pendampingan__kanan {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.isi-pendampingan__item {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}

.isi-pendampingan__no {
  font-size: 13px;
  font-weight: var(--fw-bold);
  color: var(--color-text-muted);
  flex-shrink: 0;
  padding-top: 2px;
}

.isi-pendampingan__item-konten {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.isi-pendampingan__item-judul {
  font-size: 14.5px;
  font-weight: var(--fw-extrabold);
  color: var(--color-bottle);
}

.isi-pendampingan__item-deskripsi {
  font-size: 13px;
  line-height: 1.5;
  color: var(--color-text-muted);
}

@media (max-width: 640px) {
  .isi-pendampingan {
    grid-template-columns: 1fr;
    padding: 26px 20px 26px;
    gap: 18px;
  }
  .isi-pendampingan__ilustrasi {
    min-height: 140px;
  }
}

/* ---------------------------------------------------------------------
   Modal situs eksternal (dipakai ulang buat checkout Scalev & profil Kak
   Mumu) -- isinya iframe supaya pengunjung tetap di browser yang sama,
   plus link fallback jaga-jaga kalau situs tujuan menolak ditampilkan di
   iframe. Sama-sama pakai fixed + translate untuk center, lihat komentar
   di .modal-nadi soal kenapa bukan margin:auto.
   --------------------------------------------------------------------- */
.modal-eksternal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  margin: 0;
  border: none;
  border-radius: 24px;
  padding: 0;
  width: min(94vw, 1140px);
  height: min(90vh, 840px);
  overflow: hidden;
  background: var(--color-white);
  box-shadow: var(--shadow-card);
}
.modal-eksternal::backdrop {
  background: rgba(0, 50, 35, 0.55);
}

.modal-eksternal__kotak {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
}

.modal-eksternal__tutup {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 50%;
  background: var(--color-eggshell);
  color: var(--color-bottle);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: var(--shadow-card);
}
.modal-eksternal__tutup svg {
  width: 15px;
  height: 15px;
}

.modal-eksternal__bingkai-wrap {
  flex: 1;
  min-height: 0;
}

.modal-eksternal__bingkai {
  width: 100%;
  height: 100%;
  border: none;
  display: block;
}

.modal-eksternal__fallback {
  padding: 10px 16px;
  font-size: 12.5px;
  color: var(--color-text-muted);
  text-align: center;
  border-top: 1px solid var(--color-border);
}
.modal-eksternal__fallback a {
  color: var(--color-pumpkin-dark);
  font-weight: var(--fw-bold);
}

@media (max-width: 640px) {
  .modal-eksternal {
    width: 96vw;
    height: 90vh;
    border-radius: 18px;
  }
}

/* ---------------------------------------------------------------------
   Mengapa HaloMumu -- foto full-width jadi panggung utama. Dua kotak
   catatan melayang (frosted glass) di kiri & kanan foto, judul 2 kolom
   ditumpuk di bawah foto (scrim gelap supaya teks putih tetap terbaca).
   Badge kecil tetap di luar foto, konsisten dengan section lain.
   --------------------------------------------------------------------- */
.mengapa {
  padding: 48px 0 56px;
  background: var(--color-white);
}

.mengapa__atas {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: 28px;
}

.mengapa__grid {
  position: relative;
}

.mengapa__foto-wrap {
  position: relative;
  width: 100%;
  height: clamp(340px, 60vh, 600px);
  border-radius: 28px;
  overflow: hidden;
  isolation: isolate;
}

.mengapa__foto {
  position: absolute;
  inset: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.mengapa__foto-wrap::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, transparent 45%, rgba(0, 15, 10, 0.82) 100%);
  pointer-events: none;
}

/* Dua kotak catatan -- SIBLING dari foto-wrap (bukan anak), supaya di
   mobile bisa lepas total dari frame foto (foto-wrap overflow:hidden
   akan memotong apa pun yang jadi anaknya). Di desktop diposisikan
   absolute menempel kiri/kanan foto; di mobile jadi elemen alur normal
   di bawah foto. Warna solid Bottle Green (bukan frosted transparan lagi
   supaya kontras tegas), sudut asimetris (satu sudut lancip mengarah ke
   foto) biar bentuknya unik, bukan kotak polos. */
.mengapa__catatan {
  z-index: 3;
  max-width: 260px;
  background: rgba(0, 50, 35, 0.92);
  border: 1px solid rgba(255, 255, 255, 0.12);
  padding: 20px 22px;
  box-shadow: 0 10px 28px 0 rgba(0, 50, 35, 0.28);
}
.mengapa__catatan p {
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--color-eggshell);
}

.mengapa__catatan-tombol {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  margin-top: 12px;
  font-size: 12.5px;
  font-weight: var(--fw-extrabold);
  color: var(--color-bottle);
  background: var(--color-eggshell);
  border: none;
  padding: 8px 16px;
  border-radius: var(--radius-pill);
  cursor: pointer;
  transition: background 0.2s ease;
}
.mengapa__catatan-tombol:hover {
  background: var(--color-white);
}
.mengapa__catatan--kiri {
  border-radius: 26px 6px 26px 26px;
}
.mengapa__catatan--kanan {
  border-radius: 6px 26px 26px 26px;
}

@media (min-width: 769px) {
  .mengapa__catatan {
    position: absolute;
    top: 28px;
  }
  .mengapa__catatan--kiri {
    left: 28px;
  }
  .mengapa__catatan--kanan {
    right: 28px;
  }
}

.mengapa__overlay {
  position: absolute;
  z-index: 2;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 28px 32px 34px;
  text-align: center;
}

.mengapa__judul-split {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  flex-wrap: wrap;
}

.mengapa__judul-split h2 {
  font-size: clamp(1.1rem, 1.4vw + 0.8rem, 1.6rem);
  font-weight: var(--fw-extrabold);
  line-height: 1.3;
  color: var(--color-white);
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
  max-width: 20ch;
}

.mengapa__pembatas {
  width: 2px;
  align-self: stretch;
  min-height: 40px;
  background: rgba(255, 255, 255, 0.4);
  flex-shrink: 0;
}

@media (max-width: 768px) {
  /* Di mobile, kedua kartu catatan bukan lagi anak foto-wrap, jadi
     otomatis mengalir sebagai elemen biasa DI LUAR/DI BAWAH foto --
     tidak perlu positioning khusus, cukup diberi jarak. Foto sendiri
     tetap jadi kotak (bukan flex-column lagi, isinya cuma gambar +
     judul overlay). */
  .mengapa__foto-wrap {
    height: clamp(280px, 46vh, 420px);
  }
  .mengapa__catatan {
    max-width: 100%;
    margin-top: 14px;
  }
  .mengapa__judul-split {
    flex-direction: column;
    gap: 12px;
  }
  .mengapa__pembatas {
    width: 60%;
    height: 2px;
    min-height: 0;
  }
}

.mengapa__ulasan-pill {
  display: inline-flex;
  background: var(--color-bottle);
  color: var(--color-eggshell);
  font-size: 16px;
  font-weight: var(--fw-extrabold);
  padding: 16px 30px;
  border-radius: var(--radius-pill);
  margin: 64px auto 28px;
  text-align: center;
}

.mengapa__ulasan-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.mengapa__ulasan-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  width: 100%;
}

.ulasan-kartu {
  background: var(--color-eggshell);
  border-radius: 20px;
  padding: 26px 28px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.ulasan-kartu__bintang {
  display: flex;
  gap: 3px;
}
.ulasan-kartu__bintang svg {
  width: 19px;
  height: 19px;
  color: var(--color-pumpkin);
  opacity: 0;
  transform: scale(0) rotate(-20deg);
  transform-origin: center;
}
/* "Pop in" satu-satu, mengesankan rating penuh yang baru saja "didapat"
   -- dipicu bareng .reveal (bisa berulang tiap kali kartu di-scroll
   masuk lagi, sama seperti animasi reveal lain di halaman ini). */
.reveal.is-visible .ulasan-kartu__bintang svg {
  animation: bintang-pop 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}
.ulasan-kartu__bintang svg:nth-child(1) { animation-delay: 0s; }
.ulasan-kartu__bintang svg:nth-child(2) { animation-delay: 0.07s; }
.ulasan-kartu__bintang svg:nth-child(3) { animation-delay: 0.14s; }
.ulasan-kartu__bintang svg:nth-child(4) { animation-delay: 0.21s; }
.ulasan-kartu__bintang svg:nth-child(5) { animation-delay: 0.28s; }

@keyframes bintang-pop {
  0% { opacity: 0; transform: scale(0) rotate(-20deg); }
  65% { opacity: 1; transform: scale(1.2) rotate(8deg); }
  100% { opacity: 1; transform: scale(1) rotate(0deg); }
}

.ulasan-kartu__judul {
  font-size: 17px;
  font-weight: var(--fw-extrabold);
  color: var(--color-bottle);
}

.ulasan-kartu__poin {
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--color-text-muted);
}
.ulasan-kartu__poin span {
  display: block;
}

@media (max-width: 640px) {
  .mengapa__ulasan-grid {
    grid-template-columns: 1fr;
  }
}

/* ---------------------------------------------------------------------
   CTA (Infaq Terbaik) -- kolase kartu melayang di kiri (kartu komitmen +
   kartu checklist saling tumpuk, dua badge bulat aksen), konten + daftar
   bernomor gaya accordion di kanan. Warna brand HaloMumu (Bottle Green /
   Pumpkin Orange / Salad Green / Eggshell), bukan hitam/lime polos
   seperti referensi.
   --------------------------------------------------------------------- */
.cta-infaq {
  padding: 48px 0 56px;
}

.cta-infaq__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 48px;
  align-items: center;
}

/* -- Kiri: mockup ponsel (HTML/CSS murni, tanpa gambar) menampilkan mini
   UI "Hasil Asesmen NADI" -- 6 bar dimensi + kartu Fokus Utama, plus 2
   chip melayang menimpa tepi ponsel. -- */
.cta-infaq__collage {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.ponsel-mockup-wrap {
  position: relative;
  width: min(100%, 280px);
}

.ponsel-mockup {
  width: 100%;
  background: var(--color-bottle);
  border-radius: 44px;
  padding: 16px 12px;
  transform: rotate(-2.5deg);
  box-shadow: 0 24px 48px 0 rgba(0, 50, 35, 0.28);
}

.ponsel-mockup__notch {
  width: 56px;
  height: 6px;
  border-radius: var(--radius-pill);
  background: rgba(245, 235, 225, 0.25);
  margin: 0 auto 10px;
}

.ponsel-mockup__layar {
  position: relative;
  height: 500px;
  background: var(--color-eggshell);
  border-radius: 32px;
  overflow: hidden;
}

.ponsel-mockup__foto {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  display: block;
}

/* Kotak "Tanya Mumu" mengambang di atas screenshot (bukan lagi anak
   flex layar, jadi posisinya absolute) -- sengaja ditaruh kecil di
   bawah supaya screenshot-nya tetap kelihatan, tidak ketutup banyak.
   Teksnya diketik/dihapus bergantian lewat script.js (efek typewriter). */
.ponsel-mockup__chat {
  position: absolute;
  z-index: 3;
  left: -22px;
  right: -22px;
  bottom: 18px;
  display: flex;
  flex-direction: column;
  gap: 7px;
  background: var(--color-eggshell);
  border-radius: 18px;
  padding: 12px 16px;
  animation: chat-glow 2.4s ease-in-out infinite;
}

@keyframes chat-glow {
  0%, 100% {
    box-shadow: 0 10px 26px 0 rgba(255, 100, 0, 0.30), 0 0 22px 0 rgba(255, 100, 0, 0.20);
  }
  50% {
    box-shadow: 0 14px 38px 0 rgba(255, 100, 0, 0.48), 0 0 46px 0 rgba(255, 100, 0, 0.34);
  }
}

.ponsel-mockup__chat-label {
  font-size: 9.5px;
  font-weight: var(--fw-extrabold);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.ponsel-mockup__chat-box {
  min-height: 38px;
  background: var(--color-white);
  border: 1.5px solid var(--color-border);
  border-radius: 12px;
  padding: 9px 12px;
}

.ponsel-mockup__chat-teks {
  font-size: 12.5px;
  font-weight: var(--fw-semibold);
  line-height: 1.55;
  color: var(--color-bottle);
}

.ponsel-mockup__kursor {
  display: inline-block;
  width: 2px;
  height: 13px;
  margin-left: 2px;
  vertical-align: middle;
  background: var(--color-pumpkin);
  animation: kursor-kedip 0.9s steps(1) infinite;
}
@keyframes kursor-kedip {
  50% { opacity: 0; }
}

.cta-infaq__contoh-label {
  margin-top: 14px;
  font-size: 11px;
  color: var(--color-text-muted);
  opacity: 0.7;
  text-align: center;
}

/* -- Kanan: konten -- */
.cta-infaq__konten {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.cta-infaq__tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: fit-content;
  background: var(--color-eggshell);
  color: var(--color-bottle);
  font-size: 13px;
  font-weight: var(--fw-bold);
  padding: 8px 16px;
  border-radius: var(--radius-pill);
}
.cta-infaq__tag svg {
  width: 15px;
  height: 15px;
}

.cta-infaq__judul {
  font-size: clamp(1.5rem, 1.9vw + 1rem, 2.2rem);
  font-weight: var(--fw-extrabold);
  line-height: 1.3;
  color: var(--color-bottle);
}

.cta-infaq__sub-label {
  font-size: 14px;
  font-weight: var(--fw-bold);
  color: var(--color-text-muted);
  margin-top: 8px;
}

.cta-infaq__accordion {
  display: flex;
  flex-direction: column;
  border-top: 1.5px solid var(--color-border);
}

.cta-infaq__item {
  border-bottom: 1.5px solid var(--color-border);
}

.cta-infaq__item summary {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 2px;
  cursor: pointer;
  font-weight: var(--fw-bold);
  font-size: 15px;
  color: var(--color-bottle);
  list-style: none;
}
.cta-infaq__item summary::-webkit-details-marker {
  display: none;
}

.cta-infaq__no {
  font-size: 13px;
  font-weight: var(--fw-bold);
  color: var(--color-text-muted);
  flex-shrink: 0;
}

.cta-infaq__item summary span:not(.cta-infaq__no):not(.cta-infaq__chevron) {
  flex: 1;
}

.cta-infaq__chevron {
  display: inline-flex;
  flex-shrink: 0;
  transition: transform 0.25s ease;
}
.cta-infaq__item[open] .cta-infaq__chevron {
  transform: rotate(180deg);
}
.cta-infaq__chevron svg {
  width: 16px;
  height: 16px;
  color: var(--color-bottle);
}

.cta-infaq__item p {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--color-text-muted);
  padding: 0 2px 16px 34px;
}

.cta-infaq__cta {
  margin-top: 10px;
  align-self: flex-start;
}

@media (max-width: 760px) {
  .cta-infaq__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 32px;
  }
  .ponsel-mockup-wrap {
    width: min(100%, 240px);
    margin: 0 auto;
  }
  .ponsel-mockup__layar {
    height: 420px;
  }
  .ponsel-mockup__chat {
    left: -14px;
    right: -14px;
    bottom: 14px;
  }
  .cta-infaq__cta {
    align-self: stretch;
    text-align: center;
    justify-content: center;
  }
}

/* ---------------------------------------------------------------------
   FAQ -- heading + 2 kolom accordion (details/summary native, tanpa JS
   tambahan). Kartu terang Eggshell, tombol chevron persegi membulat
   Bottle Green (bukan hitam polos seperti wireframe).
   --------------------------------------------------------------------- */
.faq {
  padding: 48px 0 64px;
}

.faq__judul {
  text-align: center;
  font-size: clamp(1.5rem, 1.8vw + 1rem, 2.3rem);
  font-weight: var(--fw-extrabold);
  color: var(--color-bottle);
  margin: 0 auto 40px;
}

.faq__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 20px;
  align-items: start;
}

.faq__kolom {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.faq-item {
  background: var(--color-eggshell);
  border-radius: 20px;
  padding: 20px 22px;
}

.faq-item summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  cursor: pointer;
  font-weight: var(--fw-extrabold);
  font-size: 16px;
  line-height: 1.4;
  color: var(--color-bottle);
  list-style: none;
}
.faq-item summary::-webkit-details-marker {
  display: none;
}

.faq-item__tombol {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  border-radius: 14px;
  background: var(--color-bottle);
  color: var(--color-eggshell);
  transition: transform 0.25s ease;
}
.faq-item[open] .faq-item__tombol {
  transform: rotate(180deg);
}
.faq-item__tombol svg {
  width: 18px;
  height: 18px;
}

.faq-item p {
  margin-top: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: var(--color-text-muted);
}

@media (max-width: 760px) {
  .faq__grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ---------------------------------------------------------------------
   Footer -- latar gelap Bottle Green serasi dengan kartu gelap Hero.
   Tiga kolom di desktop (brand, Navigasi, Bantuan), satu kolom di mobile.
   --------------------------------------------------------------------- */
.footer {
  background: var(--color-bg-dark);
  padding: 48px 0 24px;
}

.footer__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 32px;
  padding-bottom: 32px;
}

.footer__kolom {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.footer__logo {
  font-size: 19px;
  font-weight: var(--fw-extrabold);
  color: var(--color-eggshell);
  letter-spacing: -0.01em;
}

.footer__tagline {
  font-size: 13.5px;
  line-height: 1.6;
  color: rgba(245, 235, 225, 0.72);
  max-width: 34ch;
}

.footer__judul-kolom {
  font-size: 13px;
  font-weight: var(--fw-extrabold);
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: rgba(245, 235, 225, 0.55);
}

.footer__list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  list-style: none;
}

.footer__list li {
  font-size: 14px;
  color: rgba(245, 235, 225, 0.85);
}

.footer__list a,
.footer__link-tombol {
  font-size: 14px;
  color: rgba(245, 235, 225, 0.85);
  text-decoration: none;
  transition: color 0.2s ease;
}
.footer__list a:hover,
.footer__link-tombol:hover {
  color: var(--color-eggshell);
}

.footer__link-ikon {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.footer__link-ikon svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  opacity: 0.85;
}

.footer__link-tombol {
  background: none;
  border: none;
  padding: 0;
  font-family: inherit;
  font-weight: var(--fw-regular);
  cursor: pointer;
  text-align: left;
}

.footer__bawah {
  border-top: 1px solid rgba(245, 235, 225, 0.16);
  padding-top: 20px;
}
.footer__bawah p {
  font-size: 12px;
  line-height: 1.6;
  color: rgba(245, 235, 225, 0.55);
}

@media (max-width: 640px) {
  .footer__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 28px;
  }
}
