/* ==========================================================================
   Section Fitur (redesign) — versi baru dari .wz-featured-container
   Semua kelas diawali .wz3- supaya tidak bentrok dengan Elementor.

   Seluruh visual dibangun dari HTML + CSS + SVG sebaris. Tidak ada satu pun
   berkas gambar: mockup WhatsApp, panel broadcast, dan inbox tim digambar
   langsung, termasuk wallpaper doodle (data URI) dan avatar (inisial + gradasi).
   ========================================================================== */

.wz3 {
  --wz3-ink: #171717;
  --wz3-ink-soft: #4f4f4f;
  --wz3-ink-mute: #6e6e6e;
  --wz3-line: #e7e7e7;
  --wz3-accent: #c42a5e;          /* teks di atas putih — kontras 5,47:1 */
  --wz3-accent-bright: #da336b;   /* isian tombol, sama dengan tombol lain  */
  --wz3-wa-green: #15ba36;
  --wz3-green: #25d366;
  --wz3-wa-green-dark: #118f2a;
  --wz3-wa-header: #008069;
  --wz3-wa-canvas: #efeae2;
  --wz3-wa-out: #d9fdd3;
  --wz3-wa-tick: #53bdeb;
  --wz3-display: "Hind", system-ui, sans-serif;
  --wz3-body: "Quicksand", system-ui, sans-serif;

  position: relative;
  padding: 88px 0 96px;
  overflow: hidden;
  font-family: var(--wz3-body);
  color: var(--wz3-ink);

  /* Dua noda warna lembut di belakang mockup dan di bawah rel tab, di atas
     landaian putih → merah muda pucat. Warna penutupnya #FEEDFA, sama
     dengan warna awal section berikutnya (.elementor-element-c4e5db2),
     supaya sambungannya tidak terlihat. */
  background:
    radial-gradient(760px 480px at 82% 26%, rgba(218, 51, 107, .13), transparent 62%),
    radial-gradient(660px 420px at 6% 72%, rgba(123, 63, 242, .11), transparent 58%),
    linear-gradient(180deg, #fff 0%, #fffafd 34%, #feedfa 100%);
}

/* Kisi titik halus. Ditipiskan di tepi atas dan bawah dengan mask supaya
   pola tidak terpotong mendadak saat bertemu section sebelah. */
.wz3::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26'%3E%3Ccircle cx='1.6' cy='1.6' r='1.6' fill='%23171717' fill-opacity='.09'/%3E%3C/svg%3E");
  background-size: 26px 26px;
  -webkit-mask-image: linear-gradient(180deg, transparent, #000 18%, #000 76%, transparent);
  mask-image: linear-gradient(180deg, transparent, #000 18%, #000 76%, transparent);
  pointer-events: none;
}

/* Lengkung tipis yang mengikat kepala section dengan panggung mockup. */
.wz3::after {
  content: "";
  position: absolute;
  top: 300px;
  left: 50%;
  width: 1180px;
  height: 620px;
  border: 1px solid rgba(196, 42, 94, .1);
  border-radius: 50%;
  transform: translateX(-50%);
  pointer-events: none;
}

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

/* :where() berkekhususan nol, jadi margin di kelas .wz3-* di bawah tetap
   menang atas reset ini. Pelajaran dari section WABA: reset dengan
   kekhususan 0,1,1 diam-diam mematikan setiap margin-top di bawahnya. */
.wz3 :where(p, h2, h3, h4, ul, li, dl, dt, dd, figure) { margin: 0; padding: 0; }
.wz3 :where(ul) { list-style: none; }

.wz3-inner {
  position: relative;
  z-index: 1;
  max-width: 1140px;
  margin: 0 auto;
  padding: 0 20px;
}

/* ---------- Kepala section --------------------------------------------- */

.wz3-head {
  position: relative;
  max-width: 720px;
  margin: 0 auto 52px;
  text-align: center;
}

.wz3-eyebrow {
  display: inline-block;
  padding: 7px 15px 5px;
  border-radius: 6px;
  background: #7b3ff2;
  font-family: var(--wz3-display);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: .2px;
  color: #fff;
}

.wz3-title {
  margin-top: 18px;
  font-family: var(--wz3-display);
  font-size: 42px;
  font-weight: 700;
  line-height: 1.22;
  letter-spacing: -.4px;
  color: #252525;
}

.wz3-title span { color: var(--wz3-accent-bright); }

.wz3-sub {
  margin-top: 14px;
  font-size: 18px;
  line-height: 1.62;
  color: #565656;
}

/* ---------- Hiasan mengambang (SVG sebaris, bukan gambar) --------------- */

.wz3-deco {
  position: absolute;
  inset: -26px -110px -10px;
  pointer-events: none;
}

.wz3-deco i {
  position: absolute;
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  border-radius: 17px;
  background: #fff;
  box-shadow: 0 8px 22px rgba(23, 23, 23, .09);
  animation: wz3-bob ease-in-out infinite alternate;
  animation-duration: calc(3.6s + var(--n) * .55s);
  animation-delay: calc(var(--n) * -.9s);
}

.wz3-deco i svg { width: 26px; height: 26px; }

.wz3-deco i:nth-child(1) { --n: 0; left: 2%;   top: 6%;   background: #fff4e0; color: #e08a12; }
.wz3-deco i:nth-child(2) { --n: 1; left: 8%;   top: 44%;  background: #eaf1ff; color: #3d6ee0; }
.wz3-deco i:nth-child(3) { --n: 2; left: 1%;   top: 80%;  background: #f2ecff; color: #7b3ff2; }
.wz3-deco i:nth-child(4) { --n: 3; right: 3%;  top: 4%;   background: #eef0f2; color: #5f6b73; }
.wz3-deco i:nth-child(5) { --n: 4; right: 9%;  top: 44%;  background: #fdeaf1; color: var(--wz3-accent); }
.wz3-deco i:nth-child(6) { --n: 5; right: 1%;  top: 80%;  background: #e6f8ec; color: #12a544; }

@keyframes wz3-bob { from { transform: translateY(0); } to { transform: translateY(-9px); } }

/* ---------- Susunan dua kolom ------------------------------------------ */

.wz3-body {
  display: grid;
  grid-template-columns: 396px 1fr;
  grid-template-areas: "rail stage";
  column-gap: 44px;
  align-items: center;
}

/* ---------- Rel tab ----------------------------------------------------- */

/* ---------- Rel tab ----------------------------------------------------- */

.wz3-rail { grid-area: rail; }

.wz3-tablist { display: grid; gap: 10px; }

.wz3-tab {
  --wz3-ico: 44px;
  position: relative;
  display: grid;
  grid-template-columns: var(--wz3-ico) 1fr;
  gap: 14px;
  width: 100%;
  margin: 0;
  padding: 16px 18px 17px 16px;
  border: 1px solid #ece6ee;
  border-radius: 16px;
  background: rgba(255, 255, 255, .85);
  font: inherit;
  color: inherit;
  text-align: left;
  /* Tema situs menyetel `button { white-space: nowrap }`. Nilainya diwariskan
     ke seluruh isi tombol, jadi judul dan keterangan tab jadi satu baris
     panjang lalu terpotong oleh overflow:hidden di bawah ini. `font: inherit`
     tidak menutupinya karena white-space bukan bagian dari shorthand font. */
  white-space: normal;
  cursor: pointer;
  appearance: none;
  overflow: hidden;
  transition: border-color .22s ease, background .22s ease, box-shadow .22s ease, transform .22s ease;
}

.wz3-tabico {
  display: grid;
  place-items: center;
  align-self: start;
  width: var(--wz3-ico);
  height: var(--wz3-ico);
  border-radius: 13px;
  background: #f4eef6;
  color: #8b8394;
  transition: background .22s ease, color .22s ease;
}

.wz3-tabico svg { width: 21px; height: 21px; }

.wz3-ttext {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  min-height: var(--wz3-ico);
}

.wz3-tname, .wz3-tdesc { flex: none; }

.wz3-tname {
  display: block;
  font-family: var(--wz3-display);
  font-size: 19px;
  font-weight: 600;
  line-height: 1.32;
  /* Kalau judul terpaksa dua baris, seimbangkan panjangnya. Di layar sempit
     "Non Stop" juga diikat dengan &nbsp; supaya "Stop" tidak sendirian. */
  text-wrap: balance;
  /* Aslinya #DEE4E5 di atas putih — kontras 1,15:1, praktis tak terbaca.
     #667074 memberi 5,08:1 di atas putih; kartunya 85% putih di atas latar
     bergradasi, jadi masih tersisa margin di atas ambang AA 4,5:1. Tetap
     jelas lebih redup daripada tab aktif yang 16,9:1. */
  color: #667074;
  transition: color .22s ease;
}

.wz3-tab:hover {
  border-color: #e2d6e6;
  background: rgba(255, 255, 255, .95);
  transform: translateY(-1px);
}

.wz3-tab:hover .wz3-tname { color: #475053; }
.wz3-tab:hover .wz3-tabico { background: #ece3ef; color: #6f6579; }

.wz3-tab[aria-selected="true"] {
  border-color: rgba(218, 51, 107, .3);
  background: #fff;
  box-shadow: 0 10px 26px rgba(123, 63, 242, .1);
  transform: none;
}

.wz3-tab[aria-selected="true"] .wz3-tname { color: #1d1d1d; }

.wz3-tab[aria-selected="true"] .wz3-tabico {
  background: linear-gradient(140deg, #e0457c, var(--wz3-accent));
  color: #fff;
}

/* Keterangan mengembang hanya pada tab aktif. grid-template-rows 0fr→1fr
   memberi transisi tinggi yang mulus tanpa menebak nilai max-height. */
.wz3-tdesc {
  display: grid;
  grid-template-rows: minmax(0, 0fr);
  opacity: 0;
  transition: grid-template-rows .34s cubic-bezier(.22, .8, .28, 1), opacity .2s ease;
}

.wz3-tdesc > span {
  overflow: hidden;
  min-height: 0;
  /* 7px terasa jauh karena leading baris pertama sudah menambah jarak
     sendiri; 2px cukup untuk memisahkan tanpa terlihat menganga. */
  padding-top: 2px;
  font-size: 15.5px;
  line-height: 1.5;
  color: #5b5b5b;
}

.wz3-tab[aria-selected="true"] .wz3-tdesc {
  grid-template-rows: minmax(0, 1fr);
  opacity: 1;
}

/* ---------- Bilah kemajuan pergantian otomatis -------------------------- */

/* Menempel di tepi bawah kartu tab yang sedang aktif, jadi jelas hitungan
   mundurnya milik tab yang mana. */
.wz3-tprog {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 3px;
  background: #f1e7f2;
  opacity: 0;
}

.wz3-tprog i {
  display: block;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, #e0457c, var(--wz3-accent));
  transform-origin: left center;
  transform: scaleX(0);
}

/* Animasi terikat pada tab yang aria-selected. Saat tab berganti, selektor
   berhenti cocok di tab lama dan mulai cocok di tab baru — animasinya
   otomatis dimulai ulang dari nol tanpa perlu paksa reflow dari JS. */
.wz3-rail.is-auto .wz3-tab[aria-selected="true"] .wz3-tprog {
  opacity: 1;
}

.wz3-rail.is-auto .wz3-tab[aria-selected="true"] .wz3-tprog i {
  animation: wz3-fill 8s linear forwards;
}

.wz3-rail.is-auto.is-paused .wz3-tab[aria-selected="true"] .wz3-tprog i {
  animation-play-state: paused;
}

@keyframes wz3-fill { from { transform: scaleX(0); } to { transform: scaleX(1); } }

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

/* Susunannya disalin dari .wz2-cta di waba-section.css: tombol utama,
   tautan sekunder di sampingnya, lalu satu baris keterangan kecil. */
.wz3-cta { margin-top: 26px; }

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

/* Bentuk tombol yang paling banyak dipakai halaman ini — 12 tombol "Daftar
   Sekarang" di tabel harga plus beberapa lainnya: radius 50px, border 3px
   sewarna isian, padding 12/20/9/20, Hind 16/600, line-height 16px, tinggi
   43px. Warnanya #da336b, warna utama situs (43 kemunculan); hijau yang
   dipakai sebelumnya cuma muncul dua kali di seluruh halaman.
   Nilainya sama persis dengan .wz2-btn di waba-section.css. */
.wz3-btn {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 12px 20px 9px;
  border: 3px solid var(--wz3-accent-bright);
  border-radius: 50px;
  background: var(--wz3-accent-bright);
  font-family: var(--wz3-display);
  font-size: 16px;
  font-weight: 600;
  line-height: 16px;
  color: #fff;
  text-decoration: none;
  transition: .3s;
}

.wz3-btn svg { width: 16px; height: 16px; }

/* Sama dengan .wz2-btn: warna menggelap, dan gerakan pantulnya datang dari
   kelas .elementor-animation-bob milik Elementor yang dipasang di markup. */
.wz3-btn:hover,
.wz3-btn:focus {
  border-color: var(--wz3-accent);
  background: var(--wz3-accent);
  color: #fff;
}

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

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

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

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

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

/* ---------- Panggung mockup -------------------------------------------- */

.wz3-stage {
  grid-area: stage;
  position: relative;
  display: grid;
  place-items: center;
  min-height: 560px;
}

.wz3-panel { width: 100%; }
.wz3-panel[hidden] { display: none; }

/* Setelah JS siap, ketiga panel ditaruh di sel grid yang sama. Panggung jadi
   setinggi panel tertinggi dan tidak pernah berubah tinggi saat tab
   berganti — itu sumber rasa "menghentak" di versi sebelumnya. Panel lama
   memudar keluar berbarengan dengan panel baru memudar masuk.

   visibility ikut ditransisikan dengan durasi 0s: pada keadaan mati ia
   ditunda sampai pudarnya selesai, jadi panel tidak lenyap seketika. */
.wz3.is-siap .wz3-panel {
  grid-area: 1 / 1;
  justify-self: center;
  align-self: center;
  transition: opacity .34s ease, transform .34s cubic-bezier(.22, .8, .28, 1), visibility 0s;
}

.wz3.is-siap .wz3-panel.is-off {
  opacity: 0;
  transform: translateY(12px);
  visibility: hidden;
  pointer-events: none;
  transition: opacity .26s ease, transform .26s ease, visibility 0s .26s;
}

.wz3-panel:focus-visible { outline: 2px solid var(--wz3-accent); outline-offset: 12px; border-radius: 18px; }

.wz3-fig {
  position: relative;
  margin: 0 auto;
  filter: drop-shadow(0 24px 48px rgba(23, 23, 23, .13));
}

/* ---------- Bahan bersama WhatsApp ------------------------------------- */

/* Wallpaper doodle sebagai data URI — tidak ada berkas gambar yang dimuat. */
.wz3-canvas {
  position: relative;
  background-color: var(--wz3-wa-canvas);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140' viewBox='0 0 140 140'%3E%3Cg fill='none' stroke='%23000' stroke-opacity='.055' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 34c-6-5-9-8-9-12a5 5 0 0 1 9-3 5 5 0 0 1 9 3c0 4-3 7-9 12'/%3E%3Ccircle cx='98' cy='26' r='10'/%3E%3Cpath d='M93 29a6 6 0 0 0 10 0M95 22v1M101 22v1'/%3E%3Cpath d='M12 82h24v18H12zM12 82l12 9 12-9'/%3E%3Cpath d='M110 82l3 7 7 .5-5.5 4.5 2 7-6.5-4-6.5 4 2-7-5.5-4.5 7-.5z'/%3E%3Cpath d='M60 66V48l12-3v18'/%3E%3Ccircle cx='56' cy='66' r='4'/%3E%3Ccircle cx='68' cy='63' r='4'/%3E%3Cpath d='M46 108h6l2-3h8l2 3h6v14H46z'/%3E%3Ccircle cx='60' cy='115' r='4'/%3E%3C/g%3E%3C/svg%3E");
  background-size: 108px 108px;
}

.wz3-msg { position: relative; max-width: 82%; margin-bottom: 8px; }
.wz3-msg--in  { margin-right: auto; }
.wz3-msg--out { margin-left: auto; }

.wz3-bub {
  position: relative;
  padding: 7px 9px 6px 10px;
  border-radius: 8px;
  font-size: 13.5px;
  line-height: 1.45;
  color: #111b21;
  box-shadow: 0 1px 1px rgba(11, 20, 26, .13);
}

.wz3-msg--in  .wz3-bub { background: #fff; border-top-left-radius: 0; }
.wz3-msg--out .wz3-bub { background: var(--wz3-wa-out); border-top-right-radius: 0; }

/* Ekor gelembung digambar dengan trik border, bukan gambar. */
.wz3-bub::before {
  content: "";
  position: absolute;
  top: 0;
  width: 0;
  height: 0;
  border-top: 8px solid transparent;
}

.wz3-msg--in  .wz3-bub::before { left: -8px;  border-right: 8px solid #fff; }
.wz3-msg--out .wz3-bub::before { right: -8px; border-left: 8px solid var(--wz3-wa-out); }

.wz3-meta {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 3px;
  margin-top: 2px;
  font-size: 10.5px;
  color: rgba(17, 27, 33, .5);
}

.wz3-meta svg { width: 15px; height: 15px; color: var(--wz3-wa-tick); }

/* Avatar dibangun dari inisial + gradasi, bukan foto. */
.wz3-av {
  display: grid;
  place-items: center;
  flex: none;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: linear-gradient(140deg, #b8c4cc, #8d9ba5);
  font-family: var(--wz3-display);
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  color: #fff;
  text-transform: uppercase;
}

.wz3-av--a { background: linear-gradient(140deg, #ff9a7a, #e8563f); }
.wz3-av--b { background: linear-gradient(140deg, #7fd1a8, #2f9e6b); }
.wz3-av--c { background: linear-gradient(140deg, #9db7f5, #4a6fd4); }
.wz3-av--d { background: linear-gradient(140deg, #f2a8d0, #c6488f); }
.wz3-av--e { background: linear-gradient(140deg, #ffd08a, #e0a02a); }
.wz3-av--f { background: linear-gradient(140deg, #b6a3f0, #7256cc); }
.wz3-av--g { background: linear-gradient(140deg, #8fd8e8, #2f96b4); }
.wz3-av--h { background: linear-gradient(140deg, #c9cf7d, #8a9333); }

/* ---------- Panel 1 — Balas otomatis ----------------------------------- */

.wz3-fig--auto { width: 316px; }

.wz3-phone {
  position: relative;
  border: 9px solid #1f2427;
  border-radius: 38px;
  background: #1f2427;
  overflow: hidden;
}

.wz3-notch {
  position: absolute;
  top: 0;
  left: 50%;
  z-index: 4;
  width: 108px;
  height: 21px;
  border-radius: 0 0 13px 13px;
  background: #1f2427;
  transform: translateX(-50%);
}

.wz3-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 7px 15px 4px;
  background: var(--wz3-wa-header);
  font-family: var(--wz3-display);
  font-size: 11.5px;
  font-weight: 600;
  color: #fff;
}

.wz3-status svg { width: 13px; height: 13px; }
.wz3-status span { display: inline-flex; align-items: center; gap: 4px; }

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

.wz3-chathead > svg { flex: none; width: 18px; height: 18px; }
.wz3-chathead .wz3-av { width: 33px; height: 33px; font-size: 13px; }

.wz3-who { flex: 1; min-width: 0; line-height: 1.2; }
.wz3-who b { display: block; font-family: var(--wz3-display); font-size: 14.5px; font-weight: 600; }
.wz3-who span { font-size: 11px; opacity: .82; }

.wz3-acts { display: flex; align-items: center; gap: 13px; }
.wz3-acts svg { width: 16px; height: 16px; }

.wz3-thread {
  padding: 13px 10px 12px;
  min-height: 344px;
}

.wz3-daychip {
  display: block;
  width: fit-content;
  margin: 0 auto 12px;
  padding: 4px 11px 3px;
  border-radius: 7px;
  background: rgba(255, 255, 255, .82);
  font-size: 10.5px;
  font-weight: 600;
  color: #54656f;
  box-shadow: 0 1px 1px rgba(11, 20, 26, .1);
}

/* Balasan otomatis: kepala kecil bertanda petir. */
.wz3-autotag {
  display: flex;
  width: fit-content;
  align-items: center;
  gap: 4px;
  margin-bottom: 3px;
  font-family: var(--wz3-display);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .2px;
  color: #0a7c5a;
}

.wz3-autotag svg { width: 11px; height: 11px; }

.wz3-quick {
  display: block;
  margin: 7px -9px -6px -10px;
  border-top: 1px solid rgba(11, 20, 26, .12);
}

.wz3-quick span {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 7px 0 6px;
  font-size: 12.5px;
  font-weight: 600;
  color: #027eb5;
}

.wz3-quick span + span { border-top: 1px solid rgba(11, 20, 26, .12); }
.wz3-quick svg { width: 12px; height: 12px; }

.wz3-inputbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px 10px;
  background: #f0f2f5;
}

/* :first-child penting — tanpa itu selektor ini juga mengenai .wz3-mic
   dan mengalahkan flex:none miliknya karena lebih khusus. */
.wz3-inputbar > span:first-child {
  flex: 1;
  padding: 8px 12px 7px;
  border-radius: 20px;
  background: #fff;
  font-size: 12.5px;
  color: #8696a0;
}

.wz3-mic {
  display: grid;
  place-items: center;
  flex: none;
  width: 33px;
  height: 33px;
  border-radius: 50%;
  background: var(--wz3-wa-header);
  color: #fff;
}

.wz3-mic svg { width: 15px; height: 15px; }

/* Kartu melayang di sekitar ponsel */
.wz3-float {
  position: absolute;
  z-index: 3;
  padding: 11px 14px 10px;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 12px 30px rgba(23, 23, 23, .15);
  animation: wz3-bob ease-in-out infinite alternate;
  animation-duration: calc(4.4s + var(--n) * .7s);
  animation-delay: calc(var(--n) * -1.3s);
}

.wz3-float--rule {
  --n: 0;
  top: 62px;
  left: -188px;
  width: 172px;
}

.wz3-float--speed {
  --n: 1;
  bottom: 104px;
  right: -142px;
  display: flex;
  align-items: center;
  gap: 9px;
}

.wz3-flabel {
  display: block;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .5px;
  text-transform: uppercase;
  color: var(--wz3-ink-mute);
}

.wz3-fkey {
  display: inline-block;
  margin-top: 6px;
  padding: 3px 8px 2px;
  border-radius: 6px;
  background: #fdeaf1;
  font-size: 12px;
  font-weight: 700;
  color: var(--wz3-accent);
}

.wz3-farrow {
  display: block;
  margin: 5px 0 4px;
  font-size: 12px;
  color: #9aa2a6;
}

.wz3-fval { font-size: 12.5px; font-weight: 600; color: #2a2a2a; }

.wz3-fbolt {
  display: grid;
  place-items: center;
  flex: none;
  width: 32px;
  height: 32px;
  border-radius: 10px;
  background: #fff4e0;
  color: #e08a12;
}

.wz3-fbolt svg { width: 17px; height: 17px; }
.wz3-float--speed b { display: block; font-family: var(--wz3-display); font-size: 17px; font-weight: 700; line-height: 1.1; }
.wz3-float--speed em { font-style: normal; font-size: 11.5px; color: var(--wz3-ink-mute); }

/* ---------- Panel 2 — Broadcast ---------------------------------------- */

.wz3-fig--blast { width: 458px; }

.wz3-dash {
  /* Ruang bawah ekstra: toast "Mengirim Broadcast" menumpang di sini,
     supaya tidak menutupi baris terakhir detail kampanye. */
  padding: 18px 18px 46px;
  border: 1px solid #e9edf2;
  border-radius: 20px;
  background: #f7f9fc;
}

.wz3-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }

.wz3-stat {
  padding: 13px 14px 12px;
  border: 1px solid #e9edf2;
  border-radius: 13px;
  background: #fff;
}

.wz3-stat span { display: block; font-size: 12.5px; color: #6d7a86; }

.wz3-stat b {
  display: block;
  margin-top: 3px;
  font-family: var(--wz3-display);
  font-size: 27px;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -.5px;
  font-variant-numeric: tabular-nums;
  color: #1b2530;
}

.wz3-stat--dark { border-color: #1b2530; background: #1b2530; }
.wz3-stat--dark span { color: rgba(255, 255, 255, .72); }
.wz3-stat--dark b { color: #fff; }

.wz3-camp {
  margin-top: 12px;
  padding: 15px 16px 16px;
  border: 1px solid #e9edf2;
  border-radius: 15px;
  background: #fff;
}

.wz3-camp h4 {
  font-family: var(--wz3-display);
  font-size: 19px;
  font-weight: 700;
  line-height: 1.25;
  color: #1b2530;
}

.wz3-segs {
  display: flex;
  gap: 7px;
  margin-top: 12px;
  padding-bottom: 13px;
  border-bottom: 1px solid #eef1f5;
}

.wz3-segs span {
  padding: 6px 11px 5px;
  border: 1px solid #e4e9ef;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 600;
  color: #6d7a86;
}

.wz3-segs .is-on {
  border-color: var(--wz3-accent-bright);
  background: #fdeaf1;
  color: var(--wz3-accent);
}

.wz3-rows { margin-top: 13px; display: grid; gap: 11px; }
.wz3-rows > div { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; }
.wz3-rows dt { font-size: 12.5px; color: #6d7a86; }

.wz3-rows dd {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 600;
  color: #1b2530;
  text-align: right;
}

.wz3-rows dd svg { width: 15px; height: 15px; color: var(--wz3-wa-green); }

.wz3-safe {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px 2px;
  border-radius: 20px;
  background: #e6f8ec;
  font-size: 11.5px;
  font-weight: 700;
  color: #0d7a33;
}

.wz3-safe svg { width: 12px; height: 12px; color: #0d7a33; }

.wz3-toast {
  position: absolute;
  left: 18px;
  right: 18px;
  bottom: -22px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 13px 16px;
  border-radius: 14px;
  background: linear-gradient(100deg, #e0457c, #c42a5e);
  box-shadow: 0 16px 34px rgba(196, 42, 94, .34);
  color: #fff;
}

.wz3-tico {
  display: grid;
  place-items: center;
  flex: none;
  width: 34px;
  height: 34px;
  border-radius: 11px;
  background: rgba(255, 255, 255, .2);
}

.wz3-tico svg { width: 18px; height: 18px; }
.wz3-tbody { flex: 1; min-width: 0; }
.wz3-tbody b { display: block; font-family: var(--wz3-display); font-size: 14.5px; font-weight: 600; }

.wz3-prog {
  display: block;
  height: 5px;
  margin-top: 7px;
  border-radius: 5px;
  background: rgba(255, 255, 255, .28);
  overflow: hidden;
}

.wz3-prog i {
  display: block;
  width: 48%;
  height: 100%;
  border-radius: 5px;
  background: #fff;
}

.wz3-tpct {
  font-family: var(--wz3-display);
  font-size: 15px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* ---------- Panel 3 — CRM Inbox Multi-agent ---------------------------- */

/* Bingkainya sengaja sama persis dengan panel 1 supaya ketiga panel bicara
   dalam bahasa visual yang sama: layar ponsel, bukan aplikasi desktop.
   Sinyal "CRM" dibawa oleh kartu antrean yang melayang di sampingnya. */
.wz3-fig--team { width: 316px; }

.wz3-agtag {
  display: inline-block;
  width: fit-content;
  margin-bottom: 4px;
  padding: 3px 8px 2px;
  border-radius: 6px;
  background: var(--wz3-accent-bright);
  font-family: var(--wz3-display);
  font-size: 10.5px;
  font-weight: 700;
  color: #fff;
}

.wz3-msg--out .wz3-agtag { margin-left: auto; }

/* Gelembung "sedang mengetik" — tiga titik memantul bergantian. */
.wz3-msg--typing .wz3-bub { padding: 10px 12px 9px; }

.wz3-dots { display: inline-flex; align-items: center; gap: 4px; }

.wz3-dots i {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #7f9e86;
  animation: wz3-ketik 1.25s ease-in-out infinite;
}

.wz3-dots i:nth-child(2) { animation-delay: .18s; }
.wz3-dots i:nth-child(3) { animation-delay: .36s; }

@keyframes wz3-ketik {
  0%, 60%, 100% { opacity: .35; transform: translateY(0); }
  30%           { opacity: 1;   transform: translateY(-4px); }
}

/* ---------- Kartu antrean inbox (melayang di kiri ponsel) --------------- */

.wz3-float--queue {
  --n: 0;
  top: 88px;
  left: -188px;
  width: 172px;
  padding: 11px 12px 10px;
}

.wz3-qhead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 8px;
  border-bottom: 1px solid #f0eef1;
}

.wz3-qhead b { font-family: var(--wz3-display); font-size: 12.5px; font-weight: 700; color: #1b2530; }

.wz3-qhead i {
  min-width: 20px;
  padding: 1px 6px 0;
  border-radius: 20px;
  background: var(--wz3-accent-bright);
  font-family: var(--wz3-display);
  font-size: 10.5px;
  font-style: normal;
  font-weight: 700;
  line-height: 1.6;
  text-align: center;
  color: #fff;
}

.wz3-q {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 8px 0 7px;
  border-bottom: 1px solid #f5f3f6;
}

.wz3-q:last-child { padding-bottom: 0; border-bottom: 0; }

.wz3-q .wz3-av { position: relative; width: 26px; height: 26px; font-size: 11px; }

.wz3-q-b { flex: 1; min-width: 0; line-height: 1.25; }

.wz3-q-b b {
  display: block;
  overflow: hidden;
  font-family: var(--wz3-display);
  font-size: 11.5px;
  font-weight: 600;
  color: #1b2530;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.wz3-q-b em {
  display: block;
  overflow: hidden;
  font-style: normal;
  font-size: 10px;
  color: #8b959d;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.wz3-tag {
  flex: none;
  padding: 2px 6px 1px;
  border-radius: 5px;
  font-size: 8.5px;
  font-weight: 700;
  letter-spacing: .2px;
  text-transform: uppercase;
}

.wz3-tag--order { background: #eaf1ff; color: #2b57bd; }
.wz3-tag--pay   { background: #e6f8ec; color: #0d7a33; }

.wz3-unread {
  display: grid;
  place-items: center;
  flex: none;
  min-width: 17px;
  height: 17px;
  padding: 0 5px;
  border-radius: 20px;
  background: var(--wz3-green);
  font-family: var(--wz3-display);
  font-size: 10.5px;
  font-weight: 700;
  color: #fff;
}

.wz3-qfoot {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 9px;
  padding-top: 8px;
  border-top: 1px solid #f0eef1;
  font-size: 10.5px;
  color: var(--wz3-ink-mute);
}

.wz3-qfoot svg { width: 13px; height: 13px; color: #3d6ee0; }
.wz3-qfoot b { font-family: var(--wz3-display); font-size: 11.5px; font-weight: 700; color: #1b2530; }

/* Titik hijau berdenyut pada percakapan yang sedang ditangani */
.wz3-live {
  position: absolute;
  right: -1px;
  bottom: -1px;
  width: 9px;
  height: 9px;
  border: 2px solid #fff;
  border-radius: 50%;
  background: var(--wz3-green);
}

.wz3-live::after {
  content: "";
  position: absolute;
  inset: -2px;
  border-radius: 50%;
  background: var(--wz3-green);
  animation: wz3-denyut 2.4s ease-out infinite;
}

@keyframes wz3-denyut {
  0%        { opacity: .55; transform: scale(1); }
  70%, 100% { opacity: 0;   transform: scale(2.3); }
}

/* ---------- Panel 4 — Notifikasi otomatis via API ----------------------- */

.wz3-fig--api { width: 316px; }

/* Baris pasangan label–nilai di dalam gelembung notifikasi */
.wz3-kv {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-top: 5px;
  padding-top: 4px;
  border-top: 1px solid rgba(11, 20, 26, .08);
}

.wz3-kv i { font-style: normal; font-size: 12px; color: rgba(17, 27, 33, .58); }
.wz3-kv em { font-style: normal; font-size: 13px; font-weight: 600; }

/* Kartu permintaan API — gelap, supaya jelas ini "mesin", bukan orang. */
.wz3-float--api {
  --n: 0;
  top: 74px;
  left: -184px;
  width: 172px;
  padding: 11px 12px 10px;
  background: #1b2430;
  box-shadow: 0 14px 34px rgba(27, 36, 48, .3);
}

.wz3-api-top {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: 10.5px;
  color: #b9c6d4;
}

.wz3-api-top i {
  padding: 2px 5px 1px;
  border-radius: 4px;
  background: #2f7d5b;
  font-style: normal;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .3px;
  color: #d8f5e6;
}

.wz3-code {
  display: block;
  margin: 8px 0 9px;
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: 9.5px;
  line-height: 1.65;
  color: #8fa3b8;
  white-space: pre;
}

.wz3-code b { font-weight: 400; color: #7fc4f5; }
.wz3-code s { text-decoration: none; color: #b7e5a1; }
.wz3-code em { font-style: normal; color: #64748b; }

.wz3-api-ok {
  display: flex;
  align-items: center;
  gap: 6px;
  padding-top: 8px;
  border-top: 1px solid #2a3644;
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: 10px;
  color: #7fd9a6;
}

.wz3-api-ok i {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #3fd07f;
  animation: wz3-kedip 1.8s ease-in-out infinite;
}

@keyframes wz3-kedip {
  0%, 100% { opacity: 1; }
  50%      { opacity: .25; }
}

/* Kartu melayang di panel broadcast */
.wz3-float--reach {
  --n: 1;
  top: -50px;
  right: -46px;
  display: flex;
  align-items: center;
  gap: 9px;
}

.wz3-float--reach b { display: block; font-family: var(--wz3-display); font-size: 16px; font-weight: 700; line-height: 1.1; }
.wz3-float--reach em { font-style: normal; font-size: 11.5px; color: var(--wz3-ink-mute); }

.wz3-freach {
  display: grid;
  place-items: center;
  flex: none;
  width: 32px;
  height: 32px;
  border-radius: 10px;
  background: #fdeaf1;
  color: var(--wz3-accent);
}

.wz3-freach svg { width: 17px; height: 17px; }

/* ==========================================================================
   Susunan responsif.

   Dua kolom hanya sanggup di atas ~1000px: rel tab 310px + jarak + ponsel
   316px + kartu melayang 156px sudah menghabiskan ruangnya. Di bawah itu
   susunannya bertumpuk, bukan dipaksa mengecil.
   ========================================================================== */

/* ---------- Hiasan mengambang, semua lebar di bawah desktop lebar -------- */

@media (max-width: 1200px) {
  /* calc(50% - 50vw + 22px) diukur dari tepi kiri .wz3-head yang selalu di
     tengah, jadi hasilnya menempel 22px dari tepi layar berapa pun lebarnya.
     Keenam ikon dipatok ke tepi supaya tidak pernah menimpa teks kepala. */
  .wz3-deco { inset: -10px calc(50% - 50vw + 22px) 0; }
  .wz3-deco i { width: 44px; height: 44px; border-radius: 13px; }
  .wz3-deco i svg { width: 21px; height: 21px; }
  .wz3-deco i:nth-child(1) { left: 0; top: 2%; }
  .wz3-deco i:nth-child(2) { left: 0; top: 42%; }
  .wz3-deco i:nth-child(3) { left: 0; top: 82%; }
  .wz3-deco i:nth-child(4) { right: 0; top: 2%; }
  .wz3-deco i:nth-child(5) { right: 0; top: 42%; }
  .wz3-deco i:nth-child(6) { right: 0; top: 82%; }
}

/* ---------- Dua kolom sempit (992–1024px) ------------------------------- */

@media (min-width: 992px) and (max-width: 1100px) {
  /* 310px membuat judul terpanjang pecah dua baris, sehingga kartu tab
     pertama selalu lebih tinggi dari dua lainnya dan rel ikut bergeser tiap
     pergantian. 340px cukup untuk menahannya sebaris. */
  .wz3-body { grid-template-columns: 340px 1fr; column-gap: 28px; }
  .wz3-title { font-size: 36px; }
  .wz3-tname { font-size: 18px; }
  .wz3-tab { --wz3-ico: 38px; gap: 11px; padding: 14px 14px 15px 13px; }
  .wz3-tabico { border-radius: 11px; }
  .wz3-tabico svg { width: 19px; height: 19px; }
  .wz3-fig--blast { width: 100%; max-width: 420px; }
  /* Ponsel selebar 316px berada di tengah panggung; kartu harus digeser
     selebar dirinya sendiri plus jarak, bukan sekadar beberapa piksel. */
  .wz3-float--rule,
  .wz3-float--queue { left: -156px; width: 140px; }
  .wz3-float--api   { left: -156px; width: 150px; }
  .wz3-code { font-size: 8.5px; }
  .wz3-float--speed { right: -152px; }
  .wz3-float--reach { right: -12px; }
}

/* ---------- Bertumpuk (≤991px) ------------------------------------------ */

@media (max-width: 991px) {
  .wz3 { padding: 68px 0 76px; }
  /* Teks kepala dipersempit supaya ikon hiasan yang dipatok ke tepi layar
     punya ruang di kiri-kanannya. */
  .wz3-head { max-width: 600px; margin-bottom: 36px; }
  .wz3-title { font-size: 34px; }

  /* Visual naik ke atas supaya terlihat lebih dulu, keterangan menyusul. */
  .wz3-body {
    grid-template-columns: 1fr;
    grid-template-areas: "stage" "rail";
    row-gap: 34px;
    justify-items: center;
  }

  .wz3-rail { width: 100%; max-width: 560px; }
  .wz3-stage { min-height: 0; width: 100%; }
  .wz3-panel { display: flex; justify-content: center; }

  /* Di layar setumpuk tidak ada ruang di samping mockup: kartu melayang akan
     menutupi gelembung chat. Jadi kartu diturunkan menjadi elemen biasa di
     bawah mockup, dan kartu "Aturan aktif" — yang isinya sudah terbaca dari
     gelembung itu sendiri — disembunyikan. */
  .wz3-fig {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    max-width: 460px;
    filter: drop-shadow(0 14px 30px rgba(23, 23, 23, .13));
  }

  .wz3-fig--auto,
  .wz3-fig--team,
  .wz3-fig--api { max-width: 316px; }

  /* Kartu aturan dan antrean disembunyikan di susunan bertumpuk: isinya
     sudah terbaca dari layar ponsel di atasnya, dan kalau diturunkan pun
     hanya menambah tinggi tanpa menambah makna. */
  .wz3-float--rule,
  .wz3-float--queue,
  .wz3-float--api { display: none; }

  .wz3-float {
    position: static;
    width: fit-content;
    margin-top: 14px;
    padding: 10px 14px 9px;
    animation: none;
  }

  /* Toast ikut jadi elemen biasa; margin negatif menaruhnya kembali di atas
     ruang bawah kartu dashboard. */
  .wz3-toast {
    position: static;
    width: calc(100% - 24px);
    margin-top: -46px;
  }

  .wz3-btn { width: 100%; justify-content: center; }
  .wz3-actions { justify-content: center; }
  .wz3-cta, .wz3-trust { text-align: center; }
}

/* ---------- Ponsel (≤767px) --------------------------------------------- */

@media (max-width: 767px) {
  .wz3 { padding: 60px 0 68px; }
  /* Hiasan sudah disembunyikan di sini, jadi teks boleh melebar lagi. */
  .wz3-head { max-width: none; margin-bottom: 34px; }
  .wz3-title { font-size: 29px; }
  .wz3-sub { font-size: 16px; }

  /* Enam ikon tidak muat mengapit teks selebar ini. */
  .wz3-deco { display: none; }

  .wz3-fig { max-width: 340px; }
  .wz3-fig--auto { max-width: 292px; }

  .wz3-stats { gap: 7px; }
  .wz3-stat { padding: 10px 10px 9px; }
  .wz3-stat span { font-size: 11px; }
  .wz3-stat b { font-size: 21px; }
  .wz3-segs { flex-wrap: wrap; }

  .wz3-thread { min-height: 300px; }

  .wz3-tab { --wz3-ico: 40px; gap: 12px; padding: 15px 15px 16px 14px; }
  .wz3-tname { font-size: 18px; }

  /* Di layar sempit keterangan ketiga tab dibuka semua. Panjang barisnya
     berbeda-beda saat membungkus, jadi akordeon di sini membuat tinggi rel
     ikut berubah tiap kali tab berganti — dan seluruh halaman di bawahnya
     ikut bergeser. Dibuka semua, tingginya tetap dan tidak ada yang
     melompat; pembacanya juga tidak perlu menunggu rotasi. */
  .wz3-tdesc,
  .wz3-tab[aria-selected="true"] .wz3-tdesc {
    grid-template-rows: minmax(0, 1fr);
    opacity: 1;
    transition: none;
  }

  .wz3-tab[aria-selected="false"] .wz3-tdesc > span { color: #7b8288; }

  /* Kisi titik dan lengkung terlalu ramai di layar sempit. */
  .wz3::before { background-size: 22px 22px; opacity: .7; }
  .wz3::after { display: none; }
}


/* ==========================================================================
   Gerak berkurang.
   Blok ini WAJIB di akhir berkas: kekhususannya sama dengan aturan di atas,
   jadi ia hanya menang karena ditulis belakangan. (Bug yang sama pernah
   terjadi di section WABA.)
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  .wz3-deco i,
  .wz3-float {
    animation: none;
    transform: none;
  }

  .wz3-live::after,
  .wz3-dots i { animation: none; }
  .wz3-dots i { opacity: .7; }
  .wz3-live::after { opacity: 0; }

  .wz3-tab, .wz3-tname, .wz3-tdesc, .wz3-tabico, .wz3-btn, .wz3-link svg { transition: none; }
  .wz3-tab:hover { transform: none; }

  /* Panel tetap bertukar seketika, tanpa memudar. */
  .wz3.is-siap .wz3-panel,
  .wz3.is-siap .wz3-panel.is-off { transition: none; transform: none; }

  /* Pantulan hover bawaan Elementor ikut dimatikan, sama seperti di
     section WABA. */
  .wz3 .wz3-btn.elementor-animation-bob:active,
  .wz3 .wz3-btn.elementor-animation-bob:focus,
  .wz3 .wz3-btn.elementor-animation-bob:hover { animation: none; }

  /* Tanpa animasi, bilah tidak pernah selesai — rotasi otomatis ikut mati
     dengan sendirinya karena JS menunggu peristiwa animationend. Bilahnya
     pun disembunyikan supaya tidak terlihat menggantung di 0%. */
  .wz3-rail.is-auto .wz3-tab[aria-selected="true"] .wz3-tprog { opacity: 0; }
  .wz3-rail.is-auto .wz3-tab[aria-selected="true"] .wz3-tprog i { animation: none; }
}
