:root {
    --bg: #ffffff !important;
    --text: #1c1c1c;
    --muted: #7a7a7a;
    --brand: #2aa64a;
    --brand-2: #33a452;
    --chip: #e8eddc;
    --chip-b: #dfe6c7;
    --card: #eaf4d7;
    --save: #ff7a00;
    --line: #b8b8b8ff;
    --card-w: 320px;
    --card-h: 360px;
    --img-h: 260px;
}

html,
body {
    background: #ffffff !important;
    color: var(--text);
    font-family: Inter, system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif
}

.container-wide {
    max-width: 1380px !important;
}

.section {
    padding: 38px 0 56px
}

/* sidebar kategori */
.vp-side {
    padding-top: 8px
}

.vp-cat {
    padding: .7rem 1.2rem;
    border-radius: 999px;
    color: #8a8a8a;
    font-weight: 800;
    margin: 10px 0;
    display: inline-block;
    text-decoration: none !important;
}

.vp-cat.active {
    background: #dfeec2;
    color: #2a2a2a;
    box-shadow: inset 0 0 0 2px #c8e5a6
}

/* title & desc */
.vp-title {
    font-family: "Playfair Display", Georgia, serif;
    font-size: clamp(30px, 3.8vw, 48px);
    line-height: 1.18;
    margin-bottom: .65rem
}

.vp-accent {
    color: #2aa64a
}

.vp-desc {
    color: #5d5d5d;
    max-width: 760px
}

/* badges */
.vp-badges {
    margin: 16px 0 18px
}

/* clamp 1-baris untuk badges; kalau overflow, tunjuk arrow */
/* ketinggian 1 baris — set dinamik dari JS */
.vp-badges.clamp {
    max-height: var(--row-h, 44px);
    overflow: hidden;
}

/* ===== badges (desktop sudah ada) ===== */

/* mask gradient halus bila collapsed – bagi hint ada kandungan tersembunyi */
.vp-badges.clamped-mask::after {
    content: "";
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 48px;
    pointer-events: none;
    background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, .9));
}

@supports (background: color(display-p3 1 1 1 / 0.9)) {
    .vp-badges.clamped-mask::after {
        background: linear-gradient(to right, color(display-p3 1 1 1 / 0), color(display-p3 1 1 1 / .9));
    }
}

/* container perlu relative utk mask */
#badgesRow {
    position: relative
}

/* mobile tweaks */
@media (max-width:575.98px) {

    .vp-chip,
    .vp-chip-btn {
        padding: .5rem .75rem;
        border-radius: 12px;
        font-size: .98rem;
    }

    #badgesMore {
        /* lebih besar senang tekan */
        padding: .55rem .75rem;
        min-width: 42px;
        display: inline-flex;
        justify-content: center;
        align-items: center;
    }

    /* anim height default bila mobile (fallback) */
    #badgesRow.anim-height {
        transition: height .26s ease;
    }
}

/* transition utk tinggi container + chip */
#badgesRow.anim-height {
    transition: height .28s ease;
    overflow: hidden;
}

.vp-chip.fade-hide {
    opacity: 0;
    transform: translateY(-6px);
    transition: opacity .22s ease, transform .22s ease;
    pointer-events: none;
}

.vp-chip.fade-show {
    opacity: 1;
    transform: translateY(0);
}

#badgesMore i {
    transition: transform .22s ease;
}

#badgesMore.rot i {
    transform: rotate(180deg);
}

/* bila collapsed, chip selepas arrow disembunyikan */
.vp-chip.is-hidden {
    display: none !important;
}

@media (max-width:575.98px) {
    .vp-badges.clamp {
        max-height: 48px;
    }
}

.vp-chip {
    background: var(--chip);
    border: 1px solid var(--chip-b);
    border-radius: 10px;
    padding: .55rem .9rem;
    font-weight: 700;
    color: #2c2c2c
}

.vp-chip-btn {
    background: var(--chip);
    border: 1px solid var(--chip-b);
    border-radius: 10px;
    padding: .45rem .6rem;
    line-height: 1
}

/* price + rating line */
.vp-price {
    font-weight: 900;
    font-size: 1.65rem
}

.vp-dot {
    width: 6px;
    height: 6px;
    background: #bfbfbf;
    border-radius: 50%
}

.vp-stars i {
    color: #ffb400
}

hr.vp-divider {
    border: 0;
    border-top: 2px solid var(--line);
    margin: 20px 0 22px
}

/* packages */
.vp-label {
    font-weight: 900;
    letter-spacing: .12em;
    color: #6f6f6f;
    font-size: .9rem
}

/* ===== PACKAGE CARD (exact like mockup) ===== */
.vp-pack {
    position: relative;
    background: #f6f7f2;
    /* grey-pucat seperti mockup */
    border: 1px solid #eceee6;
    /* garis halus utk card biasa */
    border-radius: 22px;
    /* radius lebih lembut */
    padding: 16px 14px 14px;
    width: 150px;
    height: 160px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    transition: box-shadow .2s, transform .2s;
}

/* hover lembut je */
.vp-pack:hover {
    box-shadow: 0 10px 24px rgba(0, 0, 0, .06);
}

/* ACTIVE: guna inset shadow utk “border hijau 3px” supaya layout tak berubah */
.vp-pack.active {
    border-color: transparent;
    /* neutralize border asal */
    box-shadow:
        inset 0 0 0 3px var(--brand),
        /* border hijau 3px */
        0 12px 26px rgba(42, 166, 74, .18);
    /* drop shadow */
}

/* BULATAN ✔ — di ATAS KIRI & overlap di luar card */
.vp-pack.active::before {
    content: "\F26E";
    /* bi-check-lg */
    font-family: "bootstrap-icons";
    position: absolute;
    left: -14px;
    top: -14px;
    /* overlap keluar */
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--brand);
    color: #fff;
    display: grid;
    place-items: center;
    box-shadow: 0 10px 20px rgba(42, 166, 74, .28);
}

/* badge “Jimat RMxx” — ikut rupa mockup */
.vp-save {
    position: absolute;
    left: 24px;
    bottom: -12px;
    background: #ff7a00;
    color: #fff;
    font-weight: 900;
    font-size: .82rem;
    padding: .32rem .72rem;
    border-radius: 12px;
    z-index: 50;
    box-shadow: 0 10px 18px rgba(255, 122, 0, .28);
}

/* panel gambar */
.vp-thumb {
    background: #edf6da;
    border-radius: 16px;
    width: 100%;
    height: 130px;
    display: grid;
    place-items: center;
    overflow: hidden;
}

.vp-thumb img {
    width: 76%;
    height: auto;
}

/* tajuk atas — uppercase + weight tebal macam mockup */
.vp-pack-title {
    font-weight: 900;
    letter-spacing: .02em;
    color: #1f1f1f;
}

/* responsive (ikut sebelumnya) */
@media (max-width:991.98px) {
    .vp-pack {
        width: calc(50% - .8rem);
    }
}

@media (max-width:575.98px) {
    .vp-pack {
        width: 100%;
    }
}

/* CTA button with icon bubble */
.vp-cta {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--brand-2);
    color: #fff;
    border: 0;
    border-radius: 999px;
    font-weight: 900;
    text-decoration: none;
    letter-spacing: .08em;
    padding: 14px 24px;
    box-shadow: 0 12px 28px rgba(51, 164, 82, .28)
}

.vp-cta:hover {
    background: var(--brand)
}

.vp-cta .bubble {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #fff1;
    display: grid;
    place-items: center;
    border: 2px solid #fff3
}

.vp-more {
    font-weight: 900;
    letter-spacing: .12em;
    color: #6d6d6d;
    text-decoration: none;
    border-bottom: 3px solid #cfd9a1;
    padding-bottom: 3px
}

.vp-more i {
    vertical-align: -1px;
    margin-left: 6px
}

/* right visual */
.vp-visual {
    position: relative;
    background: #e6f0cc;
    border-radius: 18px;
    margin-right: 50px;
    height: 320px;
    width: 450px;
    display: grid;
    place-items: center;
    overflow: hidden
}

.vp-leaf {
    position: absolute;
    left: -6px;
    bottom: -8px;
    width: 68%;
    opacity: .75
}

.vp-img {
    width: 250px !important;
    height: auto;
    z-index: 2;
    object-fit: contain
}

/* harga lama (strike) */
.vp-old {
    color: #8f8f8f;
    text-decoration: line-through;
    font-weight: 800;
}

/* promo badges kuning */
.promo-badge {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    background: #ffe300;
    color: #000;
    font-weight: 900;
    border-radius: 999px;
    padding: .6rem 1rem;
    box-shadow: 0 10px 18px rgba(255, 227, 0, .25);
}

/* =============== CSS: KHASIAT =============== */
.mg-benefit-wrap {
    background: #e8f1c8;
    /* hijau lembut seperti mockup */
    padding: 48px 0 56px;
}

.mg-benefit-title {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    font-size: clamp(24px, 2.2vw + 12px, 34px);
    margin-bottom: 56px !important;
    color: #18301f;
}

.mg-benefit-title .accent {
    color: #2aa64a;
}

/* grid 2 kolum */
.mg-benefit-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 28px 46px;
}

.bn-item {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 14px;
    align-items: start;
}

.bn-num {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    font-size: clamp(26px, 2vw + 12px, 34px);
    color: #2aa64a;
    line-height: 1;
}

.bn-text {
    color: #173323;
    font-size: 1.02rem;
    line-height: 1.45;
}

/* =============== CSS: KHASIAT + VIDEO =============== */
.mg-benefit-wrap {
    position: relative;
    /* section becomes a clipping context if needed */
    background: #e8f1c8;
    /* soft green */
    padding: 48px 0 56px;
    overflow: hidden;
    /* nothing bleeds outside the section */
}

.mg-benefit-title {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    font-size: clamp(24px, 2.2vw + 12px, 34px);
    margin-bottom: 26px;
    color: #18301f;
}

.mg-benefit-title .accent {
    color: #2aa64a;
}

.mg-benefit-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 28px 48px;
}

.bn-item {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 14px;
    align-items: start;
}

.bn-num {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    font-size: clamp(26px, 2vw + 12px, 34px);
    color: #2aa64a;
    line-height: 1;
}

.bn-text {
    color: #173323;
    font-size: 1.02rem;
    line-height: 1.45;
}

/* ===== Boundary tetap sama ===== */
.benefit-media {
    position: relative;
    min-height: 560px;
    /* bagi ruang selamat */
    overflow: hidden;
}

/* ===== Telefon: bingkai logam + bezel dalaman + bayang lembut ===== */
.phone-frame {
    position: absolute;
    right: 0;
    top: 100%;
    transform: translateY(-50%);
    width: 420px;
    /* > sebelumnya: sedikit lebih lebar */
    aspect-ratio: 9/24;
    border-radius: 40px;
    /* radius lebih bulat */
    background: #222;
    /* fallback di bawah */
    /* frame logam (gradien keliling) */
    box-shadow:
        0 18px 40px rgba(0, 0, 0, .18),
        /* bayang jatuh */
        inset 0 0 0 10px #1d1d1d,
        /* bezel hitam nipis */
        inset 0 0 0 12px #2b2b2b,
        /* frame 1 */
        inset 0 0 0 13px rgba(255, 255, 255, .06);
    /* kilau frame */
    overflow: hidden;
    z-index: 1;
}

/* ruang skrin sebenar di dalam frame */
.phone-screen {
    position: absolute;
    inset: 12px;
    /* bezel dalam */
    border-radius: 28px;
    overflow: hidden;
    /* PENTING: potong video ikut radius */
    background: #000;
    /* fallback belakang video */
    transform: translateZ(0);
    /* elak hairline gap pada sesetengah GPU */
}

/* skrin (dengan inner bezel & “glass glare”) */
.bn-video {
    position: absolute;
    inset: 12px;
    /* inner bezel offset */
    width: calc(100% - 24px);
    height: 550px;
    border-radius: 28px 28px 0 0;
    object-fit: cover;
    display: block;
    background: #101010;
}

.bn-video.fit-cover {
    object-fit: cover;
}

/* refleksi kaca halus di atas skrin */
.phone-frame::after {
    content: "";
    position: absolute;
    inset: 12px;
    border-radius: 28px;
    pointer-events: none;
    background:
        linear-gradient(210deg, rgba(255, 255, 255, .12) 0%, rgba(255, 255, 255, 0) 38%),
        linear-gradient(25deg, rgba(255, 255, 255, .10) 0%, rgba(255, 255, 255, 0) 55%);
    mix-blend-mode: screen;
}

/* notch lebih nipis */
.phone-notch {
    position: absolute;
    top: 12px;
    left: 50%;
    transform: translateX(-50%);
    width: 44%;
    height: 14px;
    background: #111;
    border-radius: 0 0 14px 14px;
    box-shadow: inset 0 -2px 3px rgba(255, 255, 255, .05);
}

/* butang sisi lebih kecil */
.key {
    position: absolute;
    right: -2px;
    width: 5px;
    height: 32px;
    background: #5d5d5d;
    border-radius: 3px;
    opacity: .9;
}

.key-top {
    top: 20%;
}

.key-mid {
    top: 35%;
}

.key-btm {
    top: 50%;
}

/* butang Play — pulse lembut + hover/tap state */
.play-btn {
    position: absolute;
    left: 50%;
    top: 300px !important;
    transform: translate(-50%, -50%);
    width: 70px;
    height: 70px;
    border-radius: 50%;
    border: 0;
    display: grid;
    place-items: center;
    background: #27c447;
    color: #fff;
    box-shadow: 0 16px 36px rgba(39, 196, 71, .35), inset 0 0 0 4px rgba(255, 255, 255, .18);
    transition: transform .16s ease, filter .16s ease, box-shadow .16s ease;
    animation: pulse 1.8s ease-in-out infinite;
}

.play-btn:hover {
    transform: translate(-50%, -50%) scale(1.06);
    filter: brightness(1.05);
}

.play-btn:active {
    transform: translate(-50%, -50%) scale(0.98);
}

.play-btn i {
    font-size: 2rem;
    transform: translateX(2px);
}

/* =============== CSS: MAKLUMAT PRODUK =============== */
.mg-info-wrap {
    background: #ffffff;
    padding: clamp(36px, 5vw, 80px) 0;
}

/* title + intro */
.info-title {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    font-size: clamp(26px, 2.2vw + 10px, 42px);
    color: #1b1b1b;
    margin-bottom: 10px;
}

.info-intro {
    color: #6c6c6c;
    max-width: 740px;
    margin-bottom: 22px;
}

/* ===== OVAL IMAGES (kiri) ===== */
.oval {
    position: absolute;
    margin: 0;
    overflow: hidden;
    background: #eee;
}

/* bekas kekal */
.info-ovals {
    position: relative;
    min-height: 460px;
}

/* kiri: kapsul (oval tinggi) */
.oval-left {
    position: absolute;
    left: 20px;
    top: 6%;
    width: 280px;
    height: 400px;
    /* kapsul tinggi */
    border-radius: 240px;
    /* buat ‘pill’ */
    overflow: hidden;
    z-index: 1;
}

/* kanan: bulatan besar overlap */
.oval-right {
    position: absolute;
    left: 50%;
    /* tolak ke kanan sikit */
    top: -8%;
    /* naikkan sedikit */
    width: 280px;
    height: 400px;
    /* BULAT penuh */
    border-radius: 240px;
    overflow: hidden;
    z-index: 2;
    /* atas dari kiri */
}

/* imej isi bentuk */
.oval img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* ===== ACCORDION (kanan) ===== 
        .info-acc {
            margin-top: 240px;
        } */

.acc-item {
    border-bottom: 1px solid #ececec;
}

.acc-head {
    width: 100%;
    background: #fff;
    border: 0;
    padding: 18px 6px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    font-weight: 800;
    font-size: clamp(16px, 1.1vw + 10px, 28px);
    color: #1d1d1d;
}

.acc-item.open .acc-head {
    color: #2aa64a;
}

.acc-head i {
    transition: transform .2s ease;
    font-size: 1.1em;
    color: #2b2b2b;
}

.acc-item.open .acc-head i {
    transform: rotate(180deg);
}

.acc-panel {
    overflow: hidden;
    max-height: 0;
    /* closed */
    transition: max-height .25s ease;
}

.acc-item.open .acc-panel {
    max-height: 600px;
    /* tall enough for content */
}

.acc-body {
    padding: 8px 6px 22px;
    color: #525252;
    font-size: clamp(15px, .32vw + 12px, 20px);
    line-height: 1.65;
}

/* ====== TESTI: versi kompak ikut mockup kedua ====== */

/* ===== Testimonial (match green mockup) ===== */
:root {
    --mg-brand: #2aa64a;
    --mg-card: #e7f2c6;
    /* soft green card */
    --mg-beige: #e9e3d4;
    /* prev button */
    --mg-text: #1b1b1b;
    --mg-muted: #6f6f6f;
}

/* section spacing */
.testi-block {
    margin-bottom: 60px;
}

/* heading */
.testi-heading {
    text-align: center;
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 500;
    font-size: 2.2rem;
    color: var(--mg-text);
    margin: 0 0 clamp(18px, 2vw, 28px);
    margin-bottom: 50px;
}

/* card */
.tcard {
    background: var(--mg-card);
    border-radius: 26px;
    padding: clamp(18px, 1.6vw, 28px);
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    box-shadow:
        0 18px 28px rgba(42, 166, 74, .06),
        0 6px 14px rgba(0, 0, 0, .04);
}

/* quote text with big open quote */
.tquote {
    position: relative;
    color: var(--mg-text);
    font-size: clamp(16px, 1.05vw + 10px, 22px);
    line-height: 1.7;
    margin: 0 0 clamp(16px, 1.4vw, 22px);
}

.tquote::before {
    content: "“";
    position: absolute;
    left: -16px;
    top: -8px;
    font-size: 2.2em;
    line-height: .5;
    color: rgba(0, 0, 0, .22);
}

/* author row */
.tmeta {
    display: flex;
    align-items: center;
    gap: 12px;
}

.tavatar {
    border-radius: 50%;
    width: 52px;
    height: 52px;
    object-fit: cover;
}

.tname {
    font-weight: 800;
    color: var(--mg-text);
    font-size: clamp(14px, .5vw + 11px, 18px);
}

.trole {
    color: var(--mg-muted);
    font-size: clamp(12px, .35vw + 9px, 15px);
}

/* slider spacing */
/* elak overflow mendatar */
.swiper-testi .swiper-slide {
    width: var(--testi-w);
}

/* guna lebar kad */

.testi-card {
    background: #eaf4d7;
    border-radius: 16px;
    padding: 20px;
    height: 100%;
}

/* pagination & arrows — ikut gaya slider lain */
.swiper-foot {
    display: flex;
    align-items: center;
    gap: 12px;
}

.swiper-foot.left {
    justify-content: flex-start;
}

.swiper-testi .swiper-pagination {
    position: static;
    width: auto !important;
}

.swiper-testi .swiper-pagination-bullet {
    width: 8px;
    height: 8px;
    border-radius: 999px;
    background: #c8c8c8;
    opacity: .45;
    margin: 0 5px !important;
}

.swiper-testi .swiper-pagination-bullet-active {
    background: var(--brand);
    opacity: 1;
    transform: scale(1.1);
}

/* butang next/prev */
.ctrl {
    width: 48px;
    height: 48px;
    border-radius: 999px;
    border: 0;
    display: grid;
    place-items: center;
    font-size: 1.1rem;
    z-index: 3;
}

.btn-prev {
    background: #e8e1c7;
    color: #2b2b2b
}

.btn-next {
    background: var(--brand);
    color: #fff
}

/* Title spacing */
.related-wrap h2 {
    border-left: none !important;
}

/* ===== product card (match mockup) ===== */
.prod-card {
    width: var(--card-w);
    height: var(--card-h);
    border-radius: 26px;
    color: var(--text);
    position: relative;
    transition: transform .2s, box-shadow .2s;
    background: #fff;
    display: flex;
    flex-direction: column;
}

/* panel imej – ikut var juga */
.prod-img {
    position: relative;
    width: 100%;
    height: var(--img-h);
    border-radius: 22px;
    background: #e9f3cf;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

/* gambar fully contained, tak ubah layout */
.prod-img img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}

.prod-card:hover {
    box-shadow: 0 16px 40px rgba(0, 0, 0, .08)
}

/* corak daun samar (sudut kiri & kanan) */
.prod-img::before,
.prod-img::after {
    content: "";
    position: absolute;
    inset: -20% -10% auto auto;
    background: radial-gradient(120px 80px at left 60% bottom -20%, #a8c686 2.5px, transparent 3px) repeat;
    opacity: .28;
    transform: rotate(12deg);
}

.prod-img::after {
    inset: auto -16% -18% auto;
    transform: rotate(-12deg) scaleX(-1)
}

/* teks di bawah */
.prod-title {
    margin-top: 16px;
    font-weight: 800;
    font-size: 1.18rem;
    line-height: 1.25
}

.prod-meta {
    color: var(--muted);
    font-size: .95rem
}

.price {
    font-weight: 900;
    font-size: 1.25rem
}

.rating {
    color: #ffb400;
    letter-spacing: .25em
}

/* ===== actions dalam imej ===== */
.action {
    position: absolute;
    top: 18px;
    height: 52px;
    border-radius: 999px;
    display: flex;
    align-items: center
}

.action i {
    font-size: 1.15rem
}

/* kiri: bag → morph ke pill */
.action-left {
    left: 20px;
    width: 52px;
    gap: 12px;
    padding: 0 16px;
    background: var(--brand);
    color: #fff;
    overflow: hidden;
    box-shadow: 0 12px 22px rgba(42, 166, 74, .22);
    transition: width .25s ease;
}

.action-left .label {
    opacity: 0;
    white-space: nowrap;
    font-weight: 900;
    letter-spacing: .08em;
    transition: opacity .15s
}

.prod-card:hover .action-left {
    width: 200px
}

.prod-card:hover .action-left .label {
    opacity: 1
}

/* Make every slide the same width, regardless of content */
#swiper-related .swiper-slide,
#swiper-botani .swiper-slide {
    /* use the id of your swiper */
    width: var(--card-w) !important;
    flex: 0 0 var(--card-w) !important;
    /* prevent flex growth */
}

/* Card becomes a rigid column */
.prod-card {
    height: var(--card-h);
    display: flex;
    flex-direction: column;
}

/* Image panel is fixed height */
.prod-img {
    height: var(--img-h);
}

/* Keep the image inside without stretching the card */
.prod-img img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    /* or 'cover' if you prefer cropping */
    display: block;
}

/* Clamp text so long titles/units don't grow the card */
.prod-title {
    margin-top: 16px;
    font-weight: 800;
    font-size: 1.18rem;
    line-height: 1.25;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    /* 2 lines max */
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: calc(1.25em * 2);
    /* reserve space for 2 lines */
}

.prod-meta {
    color: var(--muted);
    font-size: .95rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    /* single line */
    min-height: 1.3em;
}

/* Push price/rating to the bottom so all cards align */
.prod-footer {
    margin-top: auto;
}

/* optional: be strict with slide alignment */
#swiper-related .swiper-wrapper,
#swiper-botani .swiper-wrapper {
    align-items: stretch;
}

/* kanan: quickview bulat hijau */
.action-right {
    right: 20px;
    width: 52px;
    justify-content: center;
    background: var(--brand);
    color: #fff;
    border: 0;
    transition: filter .2s;
    display: flex;
    align-items: center;
}

.action-right:hover {
    filter: brightness(1.06)
}

/* ===== SWIPER ===== */
.my-swiper .swiper-slide {
    width: var(--card-w)
}

/* auto width slides */
.swiper-foot {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 16px
}

.swiper-foot.left {
    justify-content: flex-start
}

.swiper-pagination {
    position: static;
    width: auto !important
}

.swiper-pagination-bullet {
    width: 8px;
    height: 8px;
    background: #c8c8c8;
    opacity: .45;
    margin: 0 5px !important;
    border-radius: 999px
}

.swiper-pagination-bullet-active {
    background: var(--brand);
    opacity: 1;
    transform: scale(1.1)
}

.ctrl {
    width: 48px;
    height: 48px;
    border-radius: 999px;
    border: 0;
    display: grid;
    place-items: center;
    font-size: 1.1rem;
    z-index: 3;
}

.btn-prev {
    background: #e8e1c7;
    color: #2b2b2b
}

.btn-next {
    background: var(--brand);
    color: #fff
}

.modal-quick .modal-content {
    border-radius: 18px;
}

.qv-img {
    position: relative;
    width: 100%;
    aspect-ratio: 4/3;
    /* maintain space, elak layout shift */
    background: #eff6e0;
    border-radius: 16px;
    overflow: hidden;
    display: grid;
    place-items: center;
}

.qv-img img {
    max-width: 100%;
    max-height: 100%;
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
    opacity: 0;
    transition: opacity .18s ease;
}

.qv-skel {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, #e7f0d2 25%, #f2f8e6 37%, #e7f0d2 63%);
    background-size: 400% 100%;
    animation: qvShimmer 1.1s infinite linear;
}

@keyframes qvShimmer {
    0% {
        background-position: 100% 0
    }

    100% {
        background-position: 0 0
    }
}

.qv-price {
    font-weight: 900;
    font-size: 1.6rem;
}

/* Responsive tweak */
@media (max-width: 575.98px) {
    :root {
        --card-w: 84vw;
        --img-h: 200px
    }
}

/* ===== Responsive ===== */
/* responsive */
@media (max-width: 991.98px) {
    .info-ovals {
        min-height: 380px;
    }

    .oval-right {
        left: clamp(180px, 44vw, 340px);
    }
}

@media (max-width: 575.98px) {
    .info-ovals {
        min-height: 0;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 14px;
    }

    .oval-left,
    .oval-right {
        position: relative;
        top: auto;
        left: auto;
        width: 100%;
        box-shadow: 0 14px 28px rgba(0, 0, 0, .12);
    }

    .oval-left {
        aspect-ratio: 3/4 !important;
        border-radius: 200px !important;
    }

    .oval-right {
        aspect-ratio: 3/4 !important;
        border-radius: 200px !important;
    }
}

@media (max-width: 575.98px) {
    .info-ovals {
        min-height: 0;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 14px;
    }

    .oval {
        position: relative;
        width: 100%;
        top: auto;
        left: auto;
    }

    .info-intro {
        margin-bottom: 14px;
    }
}

@keyframes pulse {

    0%,
    100% {
        box-shadow: 0 16px 36px rgba(39, 196, 71, .35), 0 0 0 0 rgba(39, 196, 71, .0);
    }

    50% {
        box-shadow: 0 16px 36px rgba(39, 196, 71, .35), 0 0 0 12px rgba(39, 196, 71, .12);
    }
}

/* ===== Responsive refinement ===== */
@media (max-width: 1199.98px) {
    .phone-frame {
        width: 380px;
    }

    .benefit-media {
        min-height: 520px;
    }
}

@media (max-width: 991.98px) {
    .phone-frame {
        right: 50%;
        transform: translate(50%, -50%);
        width: min(360px, 88%);
    }

    .benefit-media {
        min-height: 460px;
    }
}

@media (max-width: 575.98px) {
    .benefit-media {
        min-height: 0;
        padding-top: 18px;
    }

    .phone-frame {
        position: relative;
        inset: auto;
        transform: none;
        width: 100%;
        max-width: 420px;
        margin-inline: auto;
    }
}

@media (max-width: 575.98px) {
    .mg-benefit-wrap {
        padding: 36px 0 42px;
    }

    .mg-benefit-grid {
        grid-template-columns: 1fr;
        gap: 18px;
    }

    .bn-text {
        font-size: 1rem;
    }

    .benefit-media {
        min-height: 0;
        padding-top: 16px;
        overflow: hidden;
    }

    .phone-frame {
        position: relative;
        inset: auto;
        transform: none;
        width: 100%;
        max-width: 420px;
        margin-inline: auto;
    }
}

@media (max-width:1199.98px) {
    .vp-pack {
        width: 200px
    }
}

@media (max-width:991.98px) {
    .vp-pack {
        width: calc(50% - .8rem)
    }

    .vp-visual {
        min-height: 300px
    }
}

@media (max-width:575.98px) {
    .vp-pack {
        width: 100%
    }
}

.vp-side-scroll {
    max-height: 70vh;
    overflow: auto;
    padding-right: 6px;
}

.vp-side .vp-cat {
    display: block;
}

.mg-toast {
    position: fixed;
    right: 16px;
    bottom: 16px;
    z-index: 1050;
    background: #111;
    color: #fff;
    padding: 12px 14px;
    border-radius: 10px;
    box-shadow: 0 8px 20px rgba(0, 0, 0, .25);
    opacity: 0;
    transform: translateY(12px);
    transition: opacity .18s ease, transform .18s ease;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: .2px;
}

.mg-toast.show {
    opacity: 1;
    transform: translateY(0);
}

/* =========================================
   MOBILE-FIRST OVERRIDES (≤ 575.98px)
   Letak di hujung file CSS.
   ========================================= */
@media (max-width:575.98px) {

    /* ---------- Token / spacing ---------- */
    :root {
        --card-w: calc(100vw - 32px);
        /* slide = penuh dengan margin sisi */
        --card-h: auto;
        --img-h: 180px;
        /* panel imej produk lebih rendah */
    }

    html,
    body {
        background: #fff !important;
        -webkit-text-size-adjust: 100%;
    }

    .container-wide {
        max-width: 100% !important;
        padding-inline: 16px;
    }

    .section {
        padding: 28px 0 40px;
    }

    /* ---------- Headings / copy ---------- */
    .vp-title {
        font-size: clamp(24px, 7vw, 30px);
        line-height: 1.22;
        margin-bottom: .5rem;
    }

    .vp-desc {
        max-width: none;
        font-size: 0.98rem;
    }

    /* ---------- Badges row ---------- */
    #badgesRow {
        position: relative;
    }

    .vp-badges {
        margin: 12px 0 14px;
    }

    .vp-badges.clamp {
        max-height: 48px;
        overflow: hidden;
    }

    .vp-chip,
    .vp-chip-btn {
        padding: .5rem .75rem;
        border-radius: 12px;
        font-size: .95rem;
    }

    #badgesMore {
        padding: .5rem .75rem;
        min-width: 42px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }

    /* ---------- Price / rating line ---------- */
    .vp-price {
        font-size: 1.4rem;
    }

    .vp-stars {
        font-size: .95rem;
    }

    /* ---------- Packages ---------- */
    #pkgList {
        width: 100%;
    }

    .vp-label {
        font-size: .82rem;
        letter-spacing: .1em;
    }

    .vp-pack {
        width: 100%;
        height: auto;
        padding: 14px;
        border-radius: 18px;
        gap: 10px;
    }

    .vp-thumb {
        height: 140px;
        border-radius: 14px;
    }

    .vp-thumb img {
        width: 64%;
    }

    .vp-save {
        left: 18px;
        bottom: -10px;
        font-size: .78rem;
        padding: .28rem .62rem;
    }

    .vp-cta {
        width: 100%;
        justify-content: center;
        padding: 14px 18px;
    }

    .vp-more {
        font-size: .9rem;
    }

    /* ---------- Right visual (hero image) ---------- */
    .vp-visual {
        width: 100%;
        height: auto;
        min-height: 240px;
        margin: 10px 0 0;
        border-radius: 16px;
    }

    .vp-img {
        width: min(70%, 280px) !important;
    }

    /* ---------- Benefit (Khasiat) + Video phone mockup ---------- */
    .mg-benefit-wrap {
        padding: 30px 0 36px;
    }

    .mg-benefit-title {
        font-size: clamp(20px, 5.2vw, 26px);
        margin-bottom: 14px !important;
    }

    .mg-benefit-grid {
        grid-template-columns: 1fr;
        gap: 16px;
    }

    .benefit-media {
        min-height: 0;
        padding-top: 12px;
        overflow: hidden;
    }

    .phone-frame {
        position: relative;
        inset: auto;
        transform: none;
        width: 100%;
        max-width: 420px;
        margin-inline: auto;
        aspect-ratio: auto;
        border-radius: 24px;
        box-shadow: 0 14px 30px rgba(0, 0, 0, .14), inset 0 0 0 8px #1d1d1d, inset 0 0 0 10px #2b2b2b;
    }

    .phone-screen {
        inset: 10px;
        border-radius: 18px;
    }

    .bn-video {
        position: relative !important;
        inset: auto;
        width: 100% !important;
        height: auto !important;
        border-radius: 18px;
        object-fit: contain !important;
        background: #101010;
    }

    .phone-notch,
    .key {
        pointer-events: none;
    }

    .play-btn {
        width: 58px;
        height: 58px;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
    }

    /* ---------- Info images (ovals) ---------- */
    .info-ovals {
        min-height: 0;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 14px;
        margin-bottom: 10px;
    }

    .oval {
        position: relative;
        width: 100%;
        height: auto;
        aspect-ratio: 3/4;
        border-radius: 200px;
        box-shadow: 0 14px 28px rgba(0, 0, 0, .12);
    }

    .oval-right {
        aspect-ratio: 1/1;
        border-radius: 50%;
    }

    /* ---------- Accordion ---------- */
    .acc-head {
        padding: 16px 6px;
        font-size: clamp(16px, 4.2vw, 18px);
    }

    .acc-body {
        font-size: 0.98rem;
        line-height: 1.65;
        padding: 6px 6px 18px;
    }

    /* ---------- Product cards / sliders ---------- */
    .prod-card {
        width: var(--card-w);
        height: auto;
        border-radius: 22px;
    }

    .prod-img {
        height: var(--img-h);
        border-radius: 18px;
    }

    .prod-title {
        font-size: 1.02rem;
        margin-top: 12px;
    }

    .prod-meta {
        font-size: .9rem;
    }

    .price {
        font-size: 1.15rem;
    }

    .rating {
        letter-spacing: .2em;
    }

    /* Actions: matikan hover-dependent behaviour di mobile */
    .action {
        top: 12px;
        height: 44px;
    }

    .action-left {
        width: 44px;
        padding: 0 12px;
    }

    .prod-card:hover .action-left {
        width: 44px;
    }

    .prod-card:hover .action-left .label {
        opacity: 0;
    }

    /* Swiper slides konsisten & tak overflow */
    .my-swiper .swiper-slide,
    #swiper-related .swiper-slide,
    #swiper-botani .swiper-slide {
        width: var(--card-w) !important;
        flex: 0 0 var(--card-w) !important;
    }

    .swiper-foot {
        gap: 10px;
        margin-top: 12px;
    }

    .ctrl {
        width: 42px;
        height: 42px;
    }

    /* ---------- Testimonial ---------- */
    .testi-heading {
        font-size: clamp(20px, 6vw, 24px);
        margin-bottom: 18px;
    }

    .tcard {
        border-radius: 22px;
    }

    .tquote {
        font-size: 1rem;
        margin-bottom: 12px;
    }

    .tavatar {
        width: 46px;
        height: 46px;
    }

    /* ---------- Side category list ---------- */
    .vp-side-scroll {
        max-height: unset;
        padding-right: 0;
    }

    .vp-cat {
        display: inline-flex;
        margin: 6px 6px 6px 0;
    }

    /* ---------- Toast ---------- */
    .mg-toast {
        right: 12px;
        bottom: 12px;
        font-size: 13px;
        padding: 10px 12px;
        border-radius: 8px;
    }
}

/* =========================================
   SMALL-TABLET TWEAKS (576–767.98px)
   ========================================= */
@media (min-width:576px) and (max-width:767.98px) {
    :root {
        --card-w: 72vw;
        --img-h: 220px;
    }

    .container-wide {
        padding-inline: 18px;
    }

    .prod-title {
        -webkit-line-clamp: 2;
    }
}

/* =========================================
   TABLET TWEAKS (768–991.98px)
   ========================================= */
@media (min-width:768px) and (max-width:991.98px) {
    :root {
        --card-w: 46vw;
        --img-h: 230px;
    }

    .vp-pack {
        width: calc(50% - .8rem);
    }

    .phone-frame {
        right: 50%;
        transform: translate(50%, -50%);
        width: min(380px, 88%);
    }
}

/* =========================================
   DESKTOP-UP polish (≥ 992px)
   (pilihan – kekalkan gaya asal kau)
   ========================================= */
@media (min-width:992px) {
    /* biar gaya desktop sedia ada jalan; tak perlu override */
}

/* === STACK UTAMA DI VISUAL KANAN (dah ada dari sebelum ni) === */
/* biar pasti tak kena clip bila bertindih */
.product-stack {
    position: relative;
    width: 100%;
    max-width: 260px;
    aspect-ratio: 1/1;
    display: grid;
    place-items: center;
    z-index: 2;
}

.product-stack .stack-img {
    position: absolute;
    width: 86%;
    height: auto;
    object-fit: contain;
    filter: drop-shadow(0 10px 18px rgba(0, 0, 0, .12));
    transition: transform .22s ease, opacity .22s ease;
    will-change: transform, opacity;
}

/* posisi kemas 1–4 pek (simetri & tak keluar bingkai) */
.product-stack.qty-1 .stack-img:nth-child(1) {
    transform: translate(0, 2px) rotate(0deg);
}

.product-stack.qty-2 .stack-img:nth-child(1) {
    transform: translate(-16px, 10px) rotate(-3deg);
}

.product-stack.qty-2 .stack-img:nth-child(2) {
    transform: translate(16px, -10px) rotate(3deg);
}

.product-stack.qty-3 .stack-img:nth-child(1) {
    transform: translate(-20px, 14px) rotate(-4deg);
}

.product-stack.qty-3 .stack-img:nth-child(2) {
    transform: translate(20px, 6px) rotate(4deg);
}

.product-stack.qty-3 .stack-img:nth-child(3) {
    transform: translate(0px, -16px) rotate(0deg);
}

.product-stack.qty-4 .stack-img:nth-child(1) {
    transform: translate(-24px, 16px) rotate(-5deg);
    z-index: 2;
}

.product-stack.qty-4 .stack-img:nth-child(2) {
    transform: translate(24px, 16px) rotate(5deg);
    z-index: 2;
}

.product-stack.qty-4 .stack-img:nth-child(3) {
    transform: translate(-12px, -10px) rotate(-2deg);
    z-index: 1;
}

.product-stack.qty-4 .stack-img:nth-child(4) {
    transform: translate(12px, -10px) rotate(2deg);
    z-index: 1;
}

/* === THUMB STACK DALAM KAD PEK (kiri) === */
.vp-thumb {
    position: relative;
    overflow: visible;
}

/* penting: jangan clip */
.thumb-stack {
    position: relative;
    width: 100%;
    height: 100%;
    display: grid;
    place-items: center;
}

.thumb-stack .timg {
    position: absolute;
    width: 74%;
    height: auto;
    object-fit: contain;
    filter: drop-shadow(0 6px 12px rgba(0, 0, 0, .12));
}

/* posisi kemas & kecilkan sikit supaya confirm muat */
.thumb-stack.qty-1 .timg:nth-child(1) {
    transform: translate(-50%, -50%) scale(.94);
    left: 50%;
    top: 50%;
}

.thumb-stack.qty-2 .timg:nth-child(1) {
    left: 46%;
    top: 52%;
    transform: translate(-50%, -50%) rotate(-3deg) scale(.9);
}

.thumb-stack.qty-2 .timg:nth-child(2) {
    left: 54%;
    top: 48%;
    transform: translate(-50%, -50%) rotate(3deg) scale(.9);
}

.thumb-stack.qty-3 .timg:nth-child(1) {
    left: 44%;
    top: 56%;
    transform: translate(-50%, -50%) rotate(-4deg) scale(.86);
}

.thumb-stack.qty-3 .timg:nth-child(2) {
    left: 56%;
    top: 54%;
    transform: translate(-50%, -50%) rotate(4deg) scale(.86);
}

.thumb-stack.qty-3 .timg:nth-child(3) {
    left: 50%;
    top: 42%;
    transform: translate(-50%, -50%) rotate(0deg) scale(.86);
}

.thumb-stack.qty-4 .timg:nth-child(1) {
    left: 42%;
    top: 58%;
    transform: translate(-50%, -50%) rotate(-5deg) scale(.84);
    z-index: 2;
}

.thumb-stack.qty-4 .timg:nth-child(2) {
    left: 58%;
    top: 58%;
    transform: translate(-50%, -50%) rotate(5deg) scale(.84);
    z-index: 2;
}

.thumb-stack.qty-4 .timg:nth-child(3) {
    left: 46%;
    top: 42%;
    transform: translate(-50%, -50%) rotate(-2deg) scale(.84);
    z-index: 1;
}

.thumb-stack.qty-4 .timg:nth-child(4) {
    left: 54%;
    top: 42%;
    transform: translate(-50%, -50%) rotate(2deg) scale(.84);
    z-index: 1;
}

/* bila tukar pek, kita off animasi sekejap melalui class .no-anim */
.no-anim *,
.no-anim *::before,
.no-anim *::after {
    transition: none !important;
    animation: none !important;
}

/* ==== THUMBNAIL DALAM KAD PEK (FIX) ==== */
.vp-thumb {
    position: relative;
    overflow: hidden;
    /* kunci dalam panel */
    background: #edf6da;
    border-radius: 16px;
    width: 100%;
    height: 130px;
    /* ikut design asal */
}

/* kontena stack – cover penuh panel */
.thumb-stack {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
}

/* imej stack – anchor di tengah panel */
.thumb-stack .timg {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 82%;
    /* asas muat */
    height: auto;
    transform: translate(-50%, -50%) scale(.92);
    object-fit: contain;
    filter: drop-shadow(0 6px 12px rgba(0, 0, 0, .12));
}

/* 1 → tengah */
.thumb-stack.qty-1 .timg:nth-child(1) {
    transform: translate(-50%, -50%) scale(.92);
}

/* 2 → kiri-kanan sedikit condong */
.thumb-stack.qty-2 .timg:nth-child(1) {
    transform: translate(-62%, -44%) rotate(-6deg) scale(.88);
}

.thumb-stack.qty-2 .timg:nth-child(2) {
    transform: translate(-38%, -56%) rotate(6deg) scale(.88);
}

/* 3 → 2 bawah + 1 atas */
.thumb-stack.qty-3 .timg:nth-child(1) {
    transform: translate(-66%, -40%) rotate(-6deg) scale(.84);
}

.thumb-stack.qty-3 .timg:nth-child(2) {
    transform: translate(-34%, -44%) rotate(6deg) scale(.84);
}

.thumb-stack.qty-3 .timg:nth-child(3) {
    transform: translate(-50%, -66%) rotate(0deg) scale(.84);
}

/* 4 → grid 2x2 kemas + z-index */
.thumb-stack.qty-4 .timg:nth-child(1) {
    transform: translate(-66%, -40%) rotate(-6deg) scale(.82);
    z-index: 2;
}

.thumb-stack.qty-4 .timg:nth-child(2) {
    transform: translate(-34%, -40%) rotate(6deg) scale(.82);
    z-index: 2;
}

.thumb-stack.qty-4 .timg:nth-child(3) {
    transform: translate(-58%, -66%) rotate(-2deg) scale(.82);
    z-index: 1;
}

.thumb-stack.qty-4 .timg:nth-child(4) {
    transform: translate(-42%, -66%) rotate(2deg) scale(.82);
    z-index: 1;
}

/* elak “jitter” bila tukar pek */
.no-anim *,
.no-anim *::before,
.no-anim *::after {
    transition: none !important;
    animation: none !important;
}

/* ruang sikit untuk badge “Jimat …” supaya tak tindih thumbnail */
.vp-pack {
    padding-bottom: 22px;
}

.vp-save {
    bottom: 6px;
}

.swal2-popup.swal2-popup-lg {
    max-width: 480px !important;
    border-radius: 1rem;
    padding: 2.2rem 1.8rem;
    background: #fff;
    box-shadow: 0 0 30px rgba(0, 0, 0, 0.15);
}

.swal2-popup-lg .swal2-title {
    font-size: 1.5rem;
    font-weight: 700;
    color: #2aa64a;
    margin-bottom: 0.75rem;
}

.swal2-popup-lg .swal2-html-container {
    font-size: 1rem;
    color: #555;
}

.swal2-popup-lg .swal2-confirm,
.swal2-popup-lg .swal2-cancel {
    font-size: 0.95rem;
    padding: 0.6rem 1.4rem;
    border-radius: 0.6rem;
    transition: 0.2s ease-in-out;
}

.swal2-popup-lg .swal2-confirm:hover {
    transform: translateY(-2px);
}

.swal2-popup-lg .swal2-cancel {
    background-color: #f2f2f2;
    color: #ffffff;
}

.swal2-popup-lg .swal2-cancel:hover {
    background-color: #e8e8e8;
}

/* ===== Mobile Responsive ===== */
@media (max-width: 576px) {
    .swal2-popup.swal2-popup-lg {
        max-width: 90% !important;
        width: 90%;
        padding: 1.6rem 1rem;
        border-radius: 0.8rem;
    }

    .swal2-popup-lg .swal2-title {
        font-size: 1.25rem;
    }

    .swal2-popup-lg .swal2-html-container {
        font-size: 0.9rem;
    }

    .swal2-popup-lg .swal2-confirm,
    .swal2-popup-lg .swal2-cancel {
        width: 100%;
        display: block;
        margin: 0.4rem 0;
        font-size: 0.95rem;
    }
}