/* ==========================================================================
   Section WABA (redesign) — dibangun dari lp-watzap.pen
   Semua kelas diawali .wz2- supaya tidak bentrok dengan Elementor.
   ========================================================================== */

.wz2 {
  --wz2-ink: #171717;
  --wz2-ink-soft: #5a5a5a;
  --wz2-ink-mute: #6e6e6e;
  --wz2-accent: #c42a5e;
  --wz2-accent-bright: #da336b;
  --wz2-green: #25d366;
  --wz2-wa-header: #008069;
  --wz2-wa-canvas: #efeae2;
  --wz2-wa-out: #d9fdd3;
  --wz2-wa-link: #027eb5;
  --wz2-display: "Hind", system-ui, sans-serif;
  --wz2-body: "Quicksand", system-ui, sans-serif;

  position: relative;
  padding: 84px 0;
  background: linear-gradient(180deg, #fff 0%, #fdeff5 100%);
  overflow: hidden;
  font-family: var(--wz2-body);
}

.wz2 *,
.wz2 *::before,
.wz2 *::after { box-sizing: border-box; }

/* :where() punya kekhususan nol, jadi margin di kelas .wz2-* di bawah
   tetap menang atas reset ini. */
.wz2 :where(p, h2, ul, li) { margin: 0; padding: 0; }

.wz2 :where(ul) { list-style: none; }

.wz2-inner {
  max-width: 1140px;
  margin: 0 auto;
  padding: 0 20px;
  display: grid;
  grid-template-columns: 460px 1fr;
  grid-template-areas:
    "visual lead"
    "visual proof"
    "visual cta";
  align-content: center;
  column-gap: 56px;
  row-gap: 26px;
}

/* ---------- Kolom visual ------------------------------------------------ */

.wz2-visual {
  grid-area: visual;
  position: relative;
  width: 460px;
  height: 760px;
  align-self: center;
}

.wz2-visual::before,
.wz2-visual::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
}

.wz2-visual::before {
  left: -40px; top: 40px; width: 580px; height: 620px;
  background: radial-gradient(closest-side, rgba(247, 180, 206, .75), rgba(253, 239, 245, 0));
}

.wz2-visual::after {
  left: -56px; top: 360px; width: 430px; height: 380px;
  background: radial-gradient(closest-side, rgba(123, 227, 180, .42), rgba(253, 239, 245, 0));
}

/* ---------- Telepon ----------------------------------------------------- */

.wz2-phone {
  position: absolute;
  left: 0; top: 10px;
  z-index: 1;
  display: flex;
  flex-direction: column;
  width: 316px;
  height: 640px;
  border: 1px solid #efe4e9;
  border-radius: 36px;
  background: #fff;
  overflow: hidden;
  box-shadow: 0 24px 54px -12px rgba(122, 42, 74, .22);
}

.wz2-statusbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 13px 20px 5px 22px;
  background: var(--wz2-wa-header);
  color: #fff;
  font-family: var(--wz2-display);
  font-size: 11px;
  font-weight: 600;
}

.wz2-sysicons { display: flex; align-items: center; gap: 5px; }
.wz2-sysicons svg { width: 13px; height: 13px; }

.wz2-chathead {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 13px 10px 8px;
  background: var(--wz2-wa-header);
  color: #fff;
}

.wz2-chathead svg { width: 20px; height: 20px; flex: none; }
.wz2-headacts { display: flex; align-items: center; gap: 15px; margin-left: auto; }
.wz2-headacts svg { width: 17px; height: 17px; }

.wz2-unread {
  font-family: var(--wz2-display);
  font-size: 12.5px;
  font-weight: 600;
  margin-right: 2px;
}

.wz2-avatar {
  display: grid;
  place-items: center;
  flex: none;
  width: 34px; height: 34px;
  border-radius: 50%;
  background: linear-gradient(135deg, #f7a8c4, #c42a5e);
  font-family: var(--wz2-display);
  font-size: 12.5px;
  font-weight: 600;
  color: #fff;
}

.wz2-who { display: flex; flex-direction: column; min-width: 0; }
.wz2-who b {
  font-family: var(--wz2-display);
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.wz2-who i { font-size: 10.5px; font-style: normal; color: #a9ded2; line-height: 1.3; }

/* ---------- Kanvas chat ------------------------------------------------- */

.wz2-canvas {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 7px;
  padding: 12px 10px;
  overflow: hidden;
  background-color: var(--wz2-wa-canvas);
  background-image: url("../img/wa-doodle.svg");
  background-size: 160px 160px;
}

.wz2-datechip {
  align-self: center;
  padding: 4px 10px;
  border-radius: 7px;
  background: rgba(255, 255, 255, .85);
  font-size: 9.5px;
  font-weight: 500;
  color: #54656f;
}

.wz2-row { display: flex; }
.wz2-row--in { justify-content: flex-start; }
.wz2-row--out { justify-content: flex-end; }

.wz2-bubble {
  position: relative;
  max-width: 85%;
  padding: 7px 10px 6px;
  border-radius: 2px 12px 12px 12px;
  background: #fff;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.4;
  color: #111b21;
  box-shadow: 0 1px 2px rgba(11, 20, 26, .13);
}

/* Ekor bubble — segitiga kecil di pojok atas, seperti WhatsApp asli. */
.wz2-bubble::before {
  content: "";
  position: absolute;
  top: 0;
  width: 0; height: 0;
  border-bottom: 13px solid transparent;
}

.wz2-row--in .wz2-bubble::before {
  left: -8px;
  border-right: 8px solid #fff;
}

.wz2-row--out .wz2-bubble {
  border-radius: 12px 2px 12px 12px;
  background: var(--wz2-wa-out);
}

.wz2-row--out .wz2-bubble::before {
  right: -8px;
  border-left: 8px solid var(--wz2-wa-out);
}

.wz2-meta {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 3px;
  margin-top: 1px;
  font-size: 9.5px;
  color: #8696a0;
}

.wz2-row--out .wz2-meta { color: #667781; }
.wz2-meta svg { width: 13px; height: 13px; color: #53bdeb; }

/* ---------- Pesan template WABA ---------------------------------------- */

.wz2-template {
  width: 252px;
  max-width: 88%;
  padding: 0;
  overflow: hidden;
}

.wz2-photo { display: block; width: 100%; height: 114px; background: #ede3e7; }
.wz2-photo img {
  display: block;
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center 8%;
}

.wz2-tbody { display: flex; flex-direction: column; gap: 5px; padding: 8px 10px 6px; }

.wz2-thead {
  font-family: var(--wz2-display);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.3;
}

.wz2-ttext { font-size: 12px; line-height: 1.45; color: #3b4a54; }

.wz2-coupon {
  align-self: flex-start;
  padding: 5px 9px;
  border-radius: 7px;
  background: #f0f2f5;
  font-family: var(--wz2-display);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .01em;
}

.wz2-tfoot { font-size: 10.5px; color: #8696a0; }

.wz2-tbtn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 0;
  border-top: 1px solid #e9edef;
  font-family: var(--wz2-display);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--wz2-wa-link);
  text-decoration: none;
}

.wz2-tbtn svg { width: 13px; height: 13px; }
.wz2-tbtn:hover { background: #f7f9fa; color: var(--wz2-wa-link); }

/* ---------- Bar input --------------------------------------------------- */

.wz2-inputbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px 12px;
  background: #f0f2f5;
  color: #54656f;
}

.wz2-inputbar > svg { width: 20px; height: 20px; flex: none; }

.wz2-field {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex: 1;
  min-width: 0;
  height: 36px;
  padding: 0 12px;
  border-radius: 999px;
  background: #fff;
  font-size: 12.5px;
  color: #8696a0;
}

.wz2-field svg { width: 16px; height: 16px; flex: none; }

.wz2-mic {
  display: grid;
  place-items: center;
  flex: none;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: #00a884;
  color: #fff;
}

.wz2-mic svg { width: 18px; height: 18px; }

/* ---------- Chip kemampuan --------------------------------------------- */

.wz2-chip {
  position: absolute;
  left: 262px;
  top: calc(188px + var(--i) * 78px);
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 17px 10px 10px;
  border: 1px solid #f3e2e9;
  border-radius: 15px;
  background: #fff;
  box-shadow: 0 6px 18px -4px rgba(122, 42, 74, .18);
  font-family: var(--wz2-display);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--wz2-ink);
  white-space: nowrap;
}

.wz2-chipicon {
  display: grid;
  place-items: center;
  flex: none;
  width: 30px; height: 30px;
  border-radius: 9px;
}

.wz2-chipicon svg { width: 16px; height: 16px; }

/* ---------- Kartu hasil broadcast -------------------------------------- */

.wz2-bcard {
  position: absolute;
  left: -34px; top: 620px;
  z-index: 3;
  width: 246px;
  padding: 14px 16px;
  border: 1px solid #f3e2e9;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 14px 34px -6px rgba(122, 42, 74, .22);
}

.wz2-bcard-top { display: flex; align-items: center; gap: 13px; }

.wz2-stack { display: flex; flex: none; }
.wz2-stack span {
  display: grid;
  place-items: center;
  width: 30px; height: 30px;
  border: 2px solid #fff;
  border-radius: 50%;
  font-family: var(--wz2-display);
  font-size: 11px;
  font-weight: 600;
  color: #fff;
}
.wz2-stack span + span { margin-left: -10px; }

.wz2-bcount {
  display: block;
  font-family: var(--wz2-display);
  font-size: 21px;
  font-weight: 600;
  line-height: 1.1;
  color: var(--wz2-accent);
}

.wz2-blabel { font-size: 11.5px; color: var(--wz2-ink-soft); }

.wz2-bdetail {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-top: 10px;
  font-size: 11.5px;
  color: var(--wz2-ink-soft);
}

.wz2-bdetail svg { width: 15px; height: 15px; flex: none; color: #53bdeb; }

/* ---------- Kolom teks -------------------------------------------------- */

.wz2-lead  { grid-area: lead;  align-self: end; }
.wz2-proof { grid-area: proof; }
.wz2-cta   { grid-area: cta;   align-self: start; margin-top: 10px; }

.wz2-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 22px;
  padding: 7px 16px 7px 12px;
  border: 1px solid #f5d9e4;
  border-radius: 999px;
  background: #fff;
}

.wz2-eyebrow img { display: block; width: auto; height: 17px; }

.wz2-eyebrow span {
  font-family: var(--wz2-display);
  font-size: 14px;
  font-weight: 600;
  color: var(--wz2-ink-soft);
}

.wz2-head {
  margin-bottom: 22px;
  font-family: var(--wz2-display);
  font-size: clamp(1.75rem, 2.9vw, 2.375rem);
  font-weight: 600;
  line-height: 1.2;
  color: var(--wz2-ink);
}

.wz2-head span { color: var(--wz2-accent-bright); }

.wz2-sub {
  max-width: 40em;
  font-size: 17px;
  line-height: 1.55;
  color: var(--wz2-ink-soft);
}

.wz2-benefits { display: flex; flex-direction: column; gap: 16px; max-width: 620px; }

.wz2-benefits li { display: flex; align-items: flex-start; gap: 12px; }

.wz2-tick {
  display: grid;
  place-items: center;
  flex: none;
  width: 21px; height: 21px;
  margin-top: 2px;
  border-radius: 50%;
  background: var(--wz2-green);
  color: #fff;
}

.wz2-tick svg { width: 13px; height: 13px; }

.wz2-benefits b {
  display: block;
  font-family: var(--wz2-display);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--wz2-ink);
}

.wz2-benefits p {
  max-width: 560px;
  font-size: 15px;
  line-height: 1.5;
  color: var(--wz2-ink-soft);
}

.wz2-stats { display: flex; gap: 46px; margin-top: 26px; }

.wz2-stats b {
  display: block;
  font-family: var(--wz2-display);
  font-size: 40px;
  font-weight: 600;
  line-height: 1.1;
  color: var(--wz2-accent-bright);
}

.wz2-stats span { font-size: 14px; color: var(--wz2-ink-soft); }

.wz2-source { margin-top: 9px; font-size: 12.5px; color: var(--wz2-ink-mute); }

/* ---------- Ajakan bertindak ------------------------------------------- */

.wz2-actions { display: flex; align-items: center; gap: 32px; flex-wrap: wrap; }

/* Bentuk tombol yang paling banyak dipakai halaman ini — 12 tombol "Daftar
   Sekarang" plus beberapa lainnya: radius 50px, border 3px sewarna isian,
   padding 12/20/9/20, Hind 16/600, line-height 16px, tinggi 43px. Sama
   persis dengan .wz3-btn di fitur-section.css supaya kedua section baru
   tidak beda gaya.
   Efek hover memakai kelas .elementor-animation-bob dari Elementor. */
.wz2-btn {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 12px 20px 9px;
  border: 3px solid #da336b;
  border-radius: 50px;
  background: #da336b;
  box-shadow: 0 3px 10px 0 rgba(237, 61, 99, .3);
  font-family: var(--wz2-display);
  font-size: 16px;
  font-weight: 600;
  line-height: 16px;
  color: #fff;
  text-decoration: none;
  transition: .3s;
}

.wz2-btn svg { width: 16px; height: 16px; }
.wz2-btn:hover,
.wz2-btn:focus { border-color: #c42a5e; background: #c42a5e; color: #fff; }

/* .elementor a { box-shadow: none } (elementor-frontend.min.css) lebih khusus
   daripada .wz2-btn, jadi shadow tombol perlu selektor dua kelas. */
.wz2 .wz2-btn { box-shadow: 0 3px 10px 0 rgba(237, 61, 99, .3); }

.wz2-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--wz2-display);
  font-size: 15px;
  font-weight: 600;
  color: var(--wz2-accent);
  text-decoration: none;
}

.wz2-link svg { width: 15px; height: 15px; transition: transform .18s ease; }
.wz2-link:hover { color: var(--wz2-accent); }
.wz2-link:hover svg { transform: translateX(3px); }

.wz2-btn:focus-visible,
.wz2-link:focus-visible,
.wz2-tbtn:focus-visible { outline: 2px solid var(--wz2-accent); outline-offset: 3px; }

.wz2-trust { margin-top: 24px; font-size: 13px; color: var(--wz2-ink-mute); }

@media (prefers-reduced-motion: reduce) {
  .wz2-btn, .wz2-link svg { transition: none; }
  .wz2 .wz2-btn.elementor-animation-bob:active,
  .wz2 .wz2-btn.elementor-animation-bob:focus,
  .wz2 .wz2-btn.elementor-animation-bob:hover { animation: none; }
}

/* ---------- Tablet & ponsel -------------------------------------------- */

@media (max-width: 1024px) {
  .wz2-inner { grid-template-columns: 400px 1fr; column-gap: 40px; }
  .wz2-visual { width: 400px; }
  .wz2-chip { display: none; }
}

@media (max-width: 900px) {
  .wz2 { padding: 56px 0; }

  .wz2-inner {
    grid-template-columns: 1fr;
    grid-template-areas:
      "lead"
      "cta"
      "visual"
      "proof";
    row-gap: 30px;
  }

  .wz2-lead, .wz2-cta { align-self: auto; }
  .wz2-cta { margin-top: 0; }

  .wz2-visual {
    width: min(316px, 100%);
    height: auto;
    margin-inline: auto;
    padding-bottom: 56px;
  }

  .wz2-visual::before { left: -20px; top: 20px; width: min(390px, 120%); height: 520px; }
  .wz2-visual::after { display: none; }

  .wz2-phone { position: static; width: 100%; height: auto; }
  .wz2-canvas { min-height: 300px; padding-top: 16px; }
  .wz2-bcard { left: 0; top: auto; bottom: 0; width: min(246px, 100%); }

  .wz2-head { margin-bottom: 18px; }
  .wz2-eyebrow { margin-bottom: 18px; }
  .wz2-sub { font-size: 15px; }

  .wz2-benefits { gap: 13px; }
  .wz2-benefits b { font-size: 15px; }
  .wz2-benefits p { font-size: 14px; line-height: 1.45; }

  .wz2-stats { gap: 22px; margin-top: 22px; }
  .wz2-stats > div { flex: 1 1 0; min-width: 0; }
  .wz2-stats b { font-size: 31px; }
  .wz2-stats span { font-size: 12.5px; line-height: 1.35; }

  .wz2-actions { flex-direction: column; align-items: stretch; gap: 18px; }
  .wz2-btn { justify-content: center; }
  .wz2-link { justify-content: flex-start; }
  .wz2-trust { margin-top: 20px; font-size: 12px; }
}

@media (max-width: 400px) {
  .wz2-inner { padding: 0 16px; }
  .wz2-stats { gap: 14px; }
  .wz2-stats b { font-size: 27px; }
}

/* ==========================================================================
   Animasi masuk — menceritakan alur broadcast → dibalas → closing.
   Dipicu sekali saat visual masuk layar (IntersectionObserver).
   Kelas .wz2-anim dipasang oleh JS; tanpa JS semuanya tampil apa adanya.
   ========================================================================== */

/* Indikator "sedang mengetik" — absolut supaya tidak menggeser layout. */
.wz2-row--closing { position: relative; }

.wz2-typing {
  display: none;
  position: absolute;
  left: 0; top: 0;
  align-items: center;
  gap: 4px;
  padding: 11px 13px;
  border-radius: 2px 12px 12px 12px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(11, 20, 26, .13);
}

.wz2-typing::before {
  content: "";
  position: absolute;
  top: 0; left: -8px;
  width: 0; height: 0;
  border-right: 8px solid #fff;
  border-bottom: 13px solid transparent;
}

.wz2-typing i {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #8696a0;
  animation: wz2-dot 1s ease-in-out infinite;
}

.wz2-typing i:nth-child(2) { animation-delay: .15s; }
.wz2-typing i:nth-child(3) { animation-delay: .30s; }

.wz2-anim.is-typing .wz2-typing { display: flex; }

/* Keadaan awal saat animasi bersenjata. */
.wz2-anim .wz2-phone { opacity: 0; transform: translateY(20px); }
.wz2-anim .wz2-datechip { opacity: 0; }
.wz2-anim .wz2-row > .wz2-bubble { opacity: 0; }
.wz2-anim .wz2-row--reply .wz2-meta svg { color: #8696a0; }
.wz2-anim .wz2-chip { opacity: 0; transform: translateX(26px); }
.wz2-anim .wz2-bcard { opacity: 0; transform: translateY(18px); }

/* Urutan main. */
.wz2-anim.is-playing .wz2-phone {
  animation: wz2-rise .6s cubic-bezier(.22, .9, .3, 1) forwards;
}

.wz2-anim.is-playing .wz2-datechip {
  animation: wz2-fade .35s ease forwards .10s;
}

.wz2-anim.is-playing .wz2-row--broadcast > .wz2-bubble {
  animation: wz2-pop .5s cubic-bezier(.22, .9, .3, 1) forwards .25s;
}

.wz2-anim.is-playing .wz2-chip {
  animation: wz2-slide .5s cubic-bezier(.22, .9, .3, 1) forwards;
  animation-delay: calc(.5s + var(--i) * .12s);
}

.wz2-anim.is-playing .wz2-row--reply > .wz2-bubble {
  animation: wz2-pop .45s cubic-bezier(.22, .9, .3, 1) forwards 1.05s;
}

/* Centang berubah biru — pesan dibaca. */
.wz2-anim.is-playing .wz2-row--reply .wz2-meta svg {
  animation: wz2-read .4s ease forwards 1.45s;
}

.wz2-anim.is-playing .wz2-row--closing > .wz2-bubble {
  animation: wz2-pop .45s cubic-bezier(.22, .9, .3, 1) forwards 2.35s;
}

.wz2-anim.is-playing .wz2-bcard {
  animation: wz2-rise .55s cubic-bezier(.22, .9, .3, 1) forwards 2.6s;
}

@keyframes wz2-rise  { to { opacity: 1; transform: none; } }
@keyframes wz2-fade  { to { opacity: 1; } }
@keyframes wz2-slide { to { opacity: 1; transform: none; } }
@keyframes wz2-read  { to { color: #53bdeb; } }
@keyframes wz2-pop {
  from { opacity: 0; transform: translateY(10px) scale(.97); }
  to   { opacity: 1; transform: none; }
}
@keyframes wz2-dot {
  0%, 60%, 100% { opacity: .3; transform: translateY(0); }
  30%           { opacity: 1;  transform: translateY(-3px); }
}

/* Pengaman: kalau pengguna minta gerak minimal, JS tidak pernah memasang
   .wz2-anim — tapi aturan ini menjamin tidak ada yang tersembunyi. */
@media (prefers-reduced-motion: reduce) {
  .wz2-anim .wz2-phone,
  .wz2-anim .wz2-datechip,
  .wz2-anim .wz2-row > .wz2-bubble,
  .wz2-anim .wz2-chip,
  .wz2-anim .wz2-bcard { opacity: 1; transform: none; animation: none; }
  .wz2-anim .wz2-typing { display: none; }
  .wz2-typing i { animation: none; }
}

/* --------------------------------------------------------------------------
   Gerak diam (idle) — dimulai setelah cerita selesai, lewat kelas .is-idle.
   Aturan ini MENGGANTI animasi masuk (shorthand `animation` menimpa daftar
   sebelumnya), jadi opacity yang tadinya dipegang `forwards` harus ditulis
   ulang di sini. Titik awal float = translateY(0) = keadaan akhir animasi
   masuk, sehingga peralihannya mulus tanpa lompatan.
   -------------------------------------------------------------------------- */

.wz2-anim.is-idle .wz2-chip {
  opacity: 1;
  animation: wz2-float ease-in-out infinite alternate;
  /* Durasi & fase berbeda tiap chip supaya tidak bergerak serempak. */
  animation-duration: calc(4.2s + var(--i) * .5s);
  animation-delay: calc(var(--i) * -1.1s);
}

.wz2-anim.is-idle .wz2-bcard {
  opacity: 1;
  animation: wz2-float-card 6.5s ease-in-out infinite alternate;
}

@keyframes wz2-float      { from { transform: translateY(0); } to { transform: translateY(-7px); } }
@keyframes wz2-float-card { from { transform: translateY(0); } to { transform: translateY(-5px); } }

/* Pengaman gerak minimal untuk aturan idle. WAJIB berada di akhir berkas:
   kekhususannya sama dengan aturan .is-idle di atas, jadi hanya menang
   kalau ditulis belakangan. */
@media (prefers-reduced-motion: reduce) {
  .wz2-anim.is-idle .wz2-chip,
  .wz2-anim.is-idle .wz2-bcard { animation: none; transform: none; }
}
