/* ═══════════════════════════════════════════════════════════════════════════
 * giadungplus.com V3 — trang sản phẩm (PDP) — FILE SINH TỰ ĐỘNG, sửa tay sẽ mất.
 * Sinh bởi skills/gdp-design-to-code/scripts/port_kit_css.py
 *   --storefront --kit /var/www/giadungplus/THAMKHAO/giadungplus-design/ui_kits/website_giadungplus_com --scope .gdpw --tokens /var/www/giadungplus/.worktrees/web-v3/giadungplus.com/snippets/gdp-tokens-v2.bwt --tokens /var/www/giadungplus/THAMKHAO/giadungplus-design/ui_kits/website_giadungplus_com/tokens/colors.css --tokens /var/www/giadungplus/THAMKHAO/giadungplus-design/ui_kits/website_giadungplus_com/tokens/spacing.css --tokens /var/www/giadungplus/THAMKHAO/giadungplus-design/ui_kits/website_giadungplus_com/tokens/typography.css --css homepage/product.css --html Trang sản phẩm giadungplus.html --js homepage/product.js --extra /var/www/giadungplus/.worktrees/web-v3/giadungplus.com/_gdpw/gdpw-product.extra.css --out /var/www/giadungplus/.worktrees/web-v3/giadungplus.com/assets/gdpw-product.css --title giadungplus.com V3 — trang sản phẩm (PDP)
 * Nguồn: THAMKHAO/giadungplus-design/ui_kits/website_giadungplus_com/ (+ CSS dùng chung nếu có).
 * Giữ NGUYÊN VĂN cỡ chữ / khoảng cách / bo góc của kit; chỉ bọc scope .gdpw (storefront: GIỮ header/footer/reset/body + token :root của kit trong scope,
 * không đổi tên token, không ép cỡ chữ).
 * Override viết trong --extra rồi sinh lại.
 * ═══════════════════════════════════════════════════════════════════════════ */

/* Gốc scope: body app là 14→17px (Tailwind trên <body>) → ép lại theo kit (storefront). */
/* storefront: body{font} của kit đã được bọc thành .gdpw{…} bên dưới — không ép thêm. */
/* .hidden của Tailwind (0,1,0) thua selector 2 lớp của scope → JS gắn hidden mà vẫn hiện. */
.gdpw .hidden { display: none !important; }


/* ═══ từ ../../THAMKHAO/giadungplus-design/ui_kits/website_giadungplus_com/homepage/product.css ═══ */
.gdpw .pdp {display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:32px;margin-top:6px;align-items:start}
.gdpw .gal {display:grid;grid-template-columns:76px minmax(0,1fr);gap:14px;position:sticky;top:132px}
.gdpw .gal__thumbs {display:flex;flex-direction:column;gap:10px;max-height:600px;overflow:auto;scrollbar-width:none}
.gdpw .gal__thumbs::-webkit-scrollbar {display:none}
.gdpw .gal__thumbs button {width:76px;height:76px;border-radius:10px;overflow:hidden;border:2px solid transparent;background:var(--bg2);flex:none;opacity:.6;transition:opacity var(--dur),border-color var(--dur)}
.gdpw .gal__thumbs button:hover {opacity:1}
.gdpw .gal__thumbs button.on {border-color:var(--gdp);opacity:1}
.gdpw .gal__thumbs img {width:100%;height:100%;object-fit:cover}
.gdpw .gal__main {position:relative;aspect-ratio:1;border-radius:var(--r12);overflow:hidden;background:var(--bg2);cursor:zoom-in}
.gdpw .gal__main img {width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease-out)}
.gdpw .gal__main:hover img {transform:scale(1.03)}
.gdpw .gal__off {position:absolute;top:12px;left:12px;background:var(--gdp);color:#fff;font-weight:800;font-size:13px;padding:4px 9px;border-radius:6px}
.gdpw .gal__zoom {position:absolute;right:12px;bottom:12px;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.92);display:grid;place-items:center;box-shadow:var(--shadow-md);color:var(--t1)}
.gdpw .gal__zoom .ic {width:16px;height:16px}
.gdpw .gal__hint {grid-column:2;text-align:center;font-size:12px;color:var(--t3)}
.gdpw .buy {display:flex;flex-direction:column;gap:18px;min-width:0}
.gdpw .buy__brand {display:flex;align-items:center;gap:8px;font-size:13px;color:var(--t2)}
.gdpw .buy__brand img {width:24px;height:24px;border-radius:6px}
.gdpw .buy__brand b {color:var(--t1)}
.gdpw .buy__brand .ok {width:14px;height:14px;color:#0a7a3f;margin-left:2px}
.gdpw .buy h1 {font:700 24px/1.3 var(--font-display);letter-spacing:-.015em;text-wrap:pretty;margin-top:-8px}
.gdpw .buy__meta {display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--t2);flex-wrap:wrap;margin-top:-8px}
.gdpw .buy__meta .star {color:#f59e0b;font-weight:800;font-size:14px}
.gdpw .buy__meta b {color:var(--t1)}
.gdpw .buy__meta i {width:1px;height:12px;background:var(--border2)}
.gdpw .buy__meta a {text-decoration:underline;text-underline-offset:2px}
.gdpw .price {padding:16px 0 14px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:6px}
.gdpw .price__row {display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.gdpw .price__now {font:800 34px/1 var(--font-display);color:var(--gdp);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.gdpw .price__old {font-size:15px;color:var(--t3);text-decoration:line-through}
.gdpw .price__off {background:var(--gdp-tint);color:var(--gdp);font-size:12.5px;font-weight:800;padding:3px 8px;border-radius:5px}
.gdpw .price__note {font-size:12.5px;color:var(--t3)}
.gdpw .coupon {display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:var(--r8);background:var(--bg2);margin-top:-6px}
.gdpw .coupon__t {flex:1;min-width:0;display:flex;align-items:center;gap:8px;font-size:13px;color:var(--t2);flex-wrap:wrap;line-height:1.35}
.gdpw .coupon__t b {color:var(--t1)}
.gdpw .coupon__t .ic {width:15px;height:15px;color:var(--gdp);flex:none}
.gdpw .coupon__code {font-weight:800;color:var(--gdp);background:#fff;border:1px dashed var(--gdp-soft);padding:4px 9px;border-radius:5px;letter-spacing:.04em;white-space:nowrap;font-size:12.5px}
.gdpw .coupon button {font-weight:700;color:var(--gdp);font-size:13px;white-space:nowrap;padding:6px 10px;border-radius:6px}
.gdpw .coupon button:hover {background:var(--gdp-tint)}
.gdpw .coupon button.done {color:#0a7a3f}
.gdpw .opt__hd {display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:14px;font-weight:700;margin-bottom:10px}
.gdpw .opt__hd span {font-weight:500;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.gdpw .opt__hd span b {color:var(--t1)}
.gdpw .vars {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.gdpw .var {display:flex;align-items:center;gap:10px;padding:8px 10px 8px 8px;border:1.5px solid var(--border);border-radius:var(--r8);background:#fff;text-align:left;position:relative;min-height:62px;min-width:0;transition:border-color var(--dur),background var(--dur)}
.gdpw .var img {width:44px;height:44px;border-radius:7px;object-fit:cover;flex:none;background:var(--bg2)}
.gdpw .var div {min-width:0}
.gdpw .var b {display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:13px;line-height:1.3;font-weight:600}
.gdpw .var span {display:block;font-size:12.5px;color:var(--t2);font-weight:600;margin-top:3px}
.gdpw .var:hover {border-color:var(--gdp-soft)}
.gdpw .var.on {border-color:var(--gdp);background:var(--gdp-tint)}
.gdpw .var.on span {color:var(--gdp)}
.gdpw .var.on::after {content:"✓";position:absolute;right:-1px;bottom:-1px;width:18px;height:18px;background:var(--gdp);color:#fff;font-size:11px;line-height:18px;text-align:center;border-radius:6px 0 6px 0}
.gdpw .vars:not(.open) .var:nth-child(n+10) {display:none}
.gdpw .vars__more {display:inline-flex;align-items:center;gap:4px;margin-top:10px;font-size:12.5px;font-weight:700;color:var(--gdp)}
.gdpw .vars__more .ic {width:13px;height:13px;transition:transform var(--dur)}
.gdpw .vars__more.open .ic {transform:rotate(180deg)}
.gdpw .qty {display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.gdpw .qty__lbl {font-size:13px;font-weight:700}
.gdpw .qty__ctl {display:inline-flex;border:1px solid var(--border2);border-radius:var(--r8);overflow:hidden;background:#fff}
.gdpw .qty__ctl button {width:40px;height:40px;font-size:18px;color:var(--t2)}
.gdpw .qty__ctl button:hover {color:var(--gdp);background:var(--gdp-tint)}
.gdpw .qty__ctl input {width:48px;text-align:center;border:0;border-left:1px solid var(--border2);border-right:1px solid var(--border2);font:700 14px var(--font-sans);outline:0;color:var(--t1);-moz-appearance:textfield}
.gdpw .qty__ctl input::-webkit-inner-spin-button {-webkit-appearance:none}
.gdpw .stock {display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#0a7a3f;font-weight:600}
.gdpw .stock::before {content:"";width:8px;height:8px;border-radius:50%;background:#0a7a3f}
.gdpw .ctas {display:grid;grid-template-columns:1fr 1.4fr;gap:12px}
.gdpw .ctas .btn {height:52px;font-size:15.5px;border-radius:var(--r8)}
.gdpw .help {display:flex;gap:18px;font-size:12.5px;color:var(--t3);flex-wrap:wrap}
.gdpw .help a {display:inline-flex;align-items:center;gap:5px;font-weight:600;color:var(--t2)}
.gdpw .help .ic {width:14px;height:14px;color:var(--gdp)}
.gdpw .assure {display:flex;justify-content:space-between;gap:8px;padding:14px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.gdpw .assure div {display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--t1)}
.gdpw .assure .ic {width:18px;height:18px;color:var(--gdp);flex:none}
.gdpw .shopee-lite {display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--t2);padding:0 4px}
.gdpw .shopee-lite .ic {width:13px;height:13px}
.gdpw .shopee-lite:hover {color:var(--gdp)}
.gdpw .pdp__body {display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;margin-top:40px;align-items:start}
.gdpw .pane {background:#fff;border:1px solid var(--border);border-radius:var(--r12);padding:26px 28px}
.gdpw .pane+.pane {margin-top:18px}
.gdpw .pane h2 {font:700 20px/1.25 var(--font-display);margin-bottom:18px;letter-spacing:-.01em}
.gdpw .specs {display:grid;grid-template-columns:1fr 1fr;gap:0 32px}
.gdpw .specs div {display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);font-size:13.5px}
.gdpw .specs span {color:var(--t3);flex:none}
.gdpw .specs b {font-weight:600;text-align:right}
.gdpw .desc {font-size:14.5px;line-height:1.75;color:var(--t1);position:relative}
.gdpw .desc p+p {margin-top:10px}
.gdpw .desc h3 {font:700 17px/1.3 var(--font-display);margin:22px 0 8px}
.gdpw .desc h3:first-child {margin-top:0}
.gdpw .desc ul {margin:8px 0 0;padding-left:18px}
.gdpw .desc li+li {margin-top:6px}
.gdpw .desc__pts {list-style:none;padding:0!important;display:flex;flex-direction:column;gap:10px}
.gdpw .desc__pts li {position:relative;padding-left:22px}
.gdpw .desc__pts li::before {content:"";position:absolute;left:0;top:9px;width:10px;height:10px;border-radius:50%;background:var(--gdp-tint);border:2px solid var(--gdp)}
.gdpw .desc__pts b {font-weight:700}
.gdpw .desc img {border-radius:var(--r8);margin-top:16px;width:100%}
.gdpw .desc.clamp {max-height:420px;overflow:hidden}
.gdpw .desc.clamp::after {content:"";position:absolute;inset:auto 0 0 0;height:90px;background:linear-gradient(transparent,#fff)}
.gdpw .desc__more {display:flex;justify-content:center;margin-top:12px}
.gdpw .desc__more .btn {height:38px;background:#fff;border:1px solid var(--border2);color:var(--t1)}
.gdpw .desc__more .btn:hover {border-color:var(--gdp);color:var(--gdp)}
.gdpw .rate {display:grid;grid-template-columns:200px minmax(0,1fr);gap:24px;align-items:center;padding:18px 20px;border-radius:var(--r12);background:var(--bg2)}
.gdpw .rate__big {text-align:center}
.gdpw .rate__big b {font:800 44px/1 var(--font-display);color:var(--gdp);letter-spacing:-.02em}
.gdpw .rate__big b small {font-size:18px;color:var(--t3);font-weight:600;letter-spacing:0}
.gdpw .rate__big .stars {color:#f59e0b;font-size:18px;letter-spacing:2px;margin:6px 0 4px}
.gdpw .rate__big span {display:block;font-size:12.5px;color:var(--t2)}
.gdpw .bars {display:flex;flex-direction:column;gap:7px}
.gdpw .bars>div {display:grid;grid-template-columns:28px 1fr 40px;align-items:center;gap:10px;font-size:12.5px;color:var(--t2)}
.gdpw .bars i {height:8px;border-radius:4px;background:#fff;overflow:hidden;display:block;border:1px solid var(--border)}
.gdpw .bars i b {display:block;height:100%;background:#f59e0b;border-radius:4px}
.gdpw .bars>div>b {text-align:right;font-weight:600;color:var(--t1)}
.gdpw .rfilt {display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 4px}
.gdpw .rfilt button {height:32px;padding:0 12px;border-radius:var(--rpill);border:1px solid var(--border2);background:#fff;font-size:12.5px;font-weight:600;color:var(--t2)}
.gdpw .rfilt button:hover {border-color:var(--gdp);color:var(--gdp)}
.gdpw .rfilt button.on {background:var(--gdp);border-color:var(--gdp);color:#fff}
.gdpw .rv {padding:20px 0;border-top:1px solid var(--border);display:grid;grid-template-columns:40px minmax(0,1fr);gap:14px}
.gdpw .rv:first-of-type {border-top:0}
.gdpw .rv__av {width:40px;height:40px;border-radius:50%;background:var(--gdp-tint);color:var(--gdp);display:grid;place-items:center;font-weight:800;font-size:14px}
.gdpw .rv__hd {display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--t3)}
.gdpw .rv__hd b {color:var(--t1);font-size:13.5px}
.gdpw .rv__stars {color:#f59e0b;letter-spacing:1px;font-size:12px}
.gdpw .rv__var {font-size:12px;color:var(--t3);margin-top:2px}
.gdpw .rv p {font-size:13.5px;line-height:1.6;margin-top:6px}
.gdpw .rv__imgs {display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.gdpw .rv__imgs img {width:104px;height:104px;border-radius:8px;object-fit:cover;background:var(--bg2)}
.gdpw .rv__reply {margin-top:12px;padding:10px 0 0 14px;border-left:2px solid var(--gdp-soft);font-size:13px;color:var(--t2);line-height:1.55}
.gdpw .rv__reply b {color:var(--gdp)}
.gdpw .rv__ft {display:flex;gap:14px;margin-top:8px;font-size:12px;color:var(--t3)}
.gdpw .rv__ft a {display:inline-flex;align-items:center;gap:4px}
.gdpw .rv__ft .ic {width:13px;height:13px}
.gdpw .rv__more {display:flex;justify-content:center;margin-top:8px;padding-top:14px;border-top:1px solid var(--border)}
.gdpw .rv__more .btn {height:38px;background:#fff;border:1px solid var(--border2);color:var(--t1)}
.gdpw .side {position:sticky;top:132px;display:flex;flex-direction:column;gap:16px}
.gdpw .side .pane {padding:16px}
.gdpw .side .pane+.pane {margin-top:0}
.gdpw .side h3 {font:700 15px/1.3 var(--font-display);margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}
.gdpw .side h3 .more {font-weight:500}
.gdpw .mini-list {display:flex;flex-direction:column;gap:12px}
.gdpw .mini-list a {display:flex;gap:10px;align-items:center}
.gdpw .mini-list img {width:56px;height:56px;border-radius:8px;object-fit:cover;flex:none;background:var(--bg2)}
.gdpw .mini-list div {min-width:0}
.gdpw .mini-list b {display:block;font-size:12.5px;font-weight:500;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gdpw .mini-list span {color:var(--gdp);font-weight:800;font-size:13px}
.gdpw .mini-list s {color:var(--t3);font-size:11.5px;margin-left:5px;font-weight:400}
.gdpw .brandcard {display:flex;gap:12px;align-items:center;padding:14px;border-radius:var(--r12);background:#fff;border:1px solid var(--border);color:var(--t1)}
.gdpw .brandcard img {width:48px;height:48px;border-radius:12px;flex:none}
.gdpw .brandcard b {display:block;font:700 15px/1.2 var(--font-display)}
.gdpw .brandcard span {display:block;font-size:12.5px;color:var(--t2);margin-top:3px;line-height:1.4}
.gdpw .brandcard:hover {border-color:var(--gdp);color:var(--t1)}
.gdpw .mbuy {display:none}
@media (max-width:1180px) {
  .gdpw .pdp {gap:24px}
  .gdpw .pdp__body {grid-template-columns:minmax(0,1fr)}
  .gdpw .side {position:static}
  .gdpw .side .pane {display:none}
  .gdpw .side .pane--rel {display:block}
  .gdpw .assure {flex-wrap:wrap;gap:10px 20px}
  .gdpw .vars {grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px) {
  .gdpw {padding-bottom:76px}
  .gdpw .mbar {display:none}
  .gdpw .pdp {grid-template-columns:1fr;gap:16px;margin-top:0}
  .gdpw .gal {position:static;grid-template-columns:1fr;gap:10px;margin:0 -12px}
  .gdpw .gal__main {border-radius:0;border:0}
  .gdpw .gal__thumbs {order:2;flex-direction:row;max-height:none;padding:0 12px}
  .gdpw .gal__thumbs button {width:60px;height:60px;border-radius:8px}
  .gdpw .gal__hint {display:none}
  .gdpw .buy {gap:14px}
  .gdpw .buy h1 {font-size:19px;margin-top:-4px}
  .gdpw .buy__meta {margin-top:-4px}
  .gdpw .price__now {font-size:30px}
  .gdpw .coupon__t {white-space:normal}
  .gdpw .vars {grid-template-columns:repeat(2,minmax(0,1fr))}
  .gdpw .ctas, .gdpw .help {display:none}
  .gdpw .assure {flex-wrap:wrap;gap:10px 16px}
  .gdpw .assure div {font-size:12.5px}
  .gdpw .pdp__body {margin-top:24px;gap:16px}
  .gdpw .pane {padding:14px}
  .gdpw .pane h2 {font-size:17px;margin-bottom:14px}
  .gdpw .desc h3 {font-size:15px}
  .gdpw .desc__pts li::before {top:7px}
  .gdpw .specs {grid-template-columns:1fr;gap:0}
  .gdpw .desc {font-size:13.5px}
  .gdpw .desc.clamp {max-height:300px}
  .gdpw .rate {grid-template-columns:1fr;gap:14px;padding:14px}
  .gdpw .rv__imgs img {width:72px;height:72px}
  .gdpw .mbuy {position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;gap:8px;padding:10px 12px;background:#fff;border-top:1px solid var(--border);box-shadow:0 -4px 14px rgba(0,0,0,.05)}
  .gdpw .mbuy__ic {display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:56px;height:46px;border-radius:var(--r8);border:1px solid var(--border2);font-size:10px;color:var(--t2);flex:none}
  .gdpw .mbuy__ic .ic {width:18px;height:18px;color:var(--gdp)}
  .gdpw .mbuy .btn {flex:1;height:46px;border-radius:var(--r8);font-size:14px}
  .gdpw .mbuy .btn--red {flex:1.4}
}


/* ═══ override sau kit (/var/www/giadungplus/.worktrees/web-v3/giadungplus.com/_gdpw/gdpw-product.extra.css) ═══ */
/* gdpw-product.extra.css — override SAU kit (lane D sở hữu). Ghi lý do từng rule; giá trị kit giữ nguyên văn, chỉ vá chỗ theme Sapo/ dữ liệu thật buộc phải khác.
   Sinh lại: bash giadungplus.com/_gdpw/build_css.sh product
   Khối KHÔNG có trong kit (giữ tính năng PDP cũ) đặt tiền tố .pdpx-* để dễ nhận ra: quà tặng kèm, Outlet V2, lightbox, toast, video, empty-state. */

/* [hidden] phải thắng display của kit (.rv{display:grid}, .coupon{display:flex}…) — JS/ server ẩn khối bằng thuộc tính hidden. File này chỉ nạp ở template product. */
.gdpw [hidden] {display:none!important}

/* Phân loại hết hàng: kit không vẽ trạng thái này (mock luôn còn hàng) → mờ + không chọn được (như PDP cũ is-oos). */
.gdpw .var.is-oos {opacity:.45;cursor:not-allowed}
.gdpw .var.is-oos:hover {border-color:var(--border)}
/* Dòng tồn kho khi hết: kit chỉ có màu xanh "Còn hàng". */
.gdpw .stock.is-out {color:var(--gdp)}
.gdpw .stock.is-out::before {background:var(--gdp)}
/* CTA là <button type=submit form=…> (kit dùng <a>) để thêm giỏ chạy cả khi chưa có JS; trạng thái disabled/đang gửi. */
.gdpw .ctas .btn[disabled], .gdpw .mbuy .btn[disabled] {opacity:.5;cursor:not-allowed}
.gdpw .ctas .btn[aria-busy="true"], .gdpw .mbuy .btn[aria-busy="true"] {opacity:.7;cursor:progress}
/* 2 nút lọc 5/4 sao chưa lọc được (đánh giá nguồn Shopee không có số sao từng đánh giá) → disabled title="Sắp có". */
.gdpw .rfilt button[disabled] {opacity:.5;cursor:not-allowed}
.gdpw .rfilt button[disabled]:hover {border-color:var(--border2);color:var(--t2)}
/* Ảnh đánh giá bấm được (lightbox) — kit chỉ vẽ ảnh tĩnh. */
.gdpw .rv__imgs img {cursor:zoom-in}
.gdpw .rv__ft a {cursor:default}
/* Mô tả thật (HTML từ Sapo/Shopee) có bảng/iframe/ảnh rộng → không tràn khung .pane. */
.gdpw .desc iframe, .gdpw .desc video, .gdpw .desc table {max-width:100%}
.gdpw .desc p:empty {display:none}

/* Empty-state có nhãn (thiếu mô tả / chưa có đánh giá / lọc rỗng). */
.gdpw .pdpx-empty {font-size:13.5px;color:var(--t2);line-height:1.6;padding:6px 0}

/* Video sản phẩm: ô đầu dải thumb (▶) + <video> phủ .gal__main. */
.gdpw .gal__thumbs .gal__vid {position:relative}
.gdpw .gal__vid .ic {position:absolute;inset:0;margin:auto;width:28px;height:28px;padding:6px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;fill:#fff;stroke:none}
.gdpw .gal__main video {position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000;cursor:default}
/* Video trong đánh giá: đánh dấu ▶ lên ảnh thu nhỏ. */
.gdpw .pdpx-rvvid {position:relative;display:block}
.gdpw .pdpx-rvvid::after {content:"▶";position:absolute;inset:0;margin:auto;width:30px;height:30px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-size:12px;line-height:30px;text-align:center;pointer-events:none}

/* Quà tặng kèm (API /gifts/for-product/) — nằm dưới .coupon, cùng nhịp nền bg2 như .coupon. */
.gdpw .pdpx-gift {display:flex;flex-direction:column;gap:10px;padding:12px 14px;border-radius:var(--r8);border:1px dashed var(--gdp-soft);background:var(--gdp-tint);margin-top:-6px}
.gdpw .pdpx-gift__hd {display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--gdp)}
.gdpw .pdpx-gift__hd .ic {width:16px;height:16px}
.gdpw .pdpx-gift__list {display:flex;flex-direction:column;gap:8px}
.gdpw .pdpx-gift__it {display:flex;align-items:center;gap:10px}
.gdpw .pdpx-gift__it img, .gdpw .pdpx-gift__ph {width:44px;height:44px;border-radius:7px;object-fit:cover;flex:none;background:#fff}
.gdpw .pdpx-gift__it b {display:block;font-size:13px;font-weight:600;line-height:1.3}
.gdpw .pdpx-gift__it span {display:block;font-size:12px;color:var(--t2);margin-top:2px}
.gdpw .pdpx-gift__note {font-size:12px;color:var(--t3)}

/* Outlet V2 (chỉ SP thuộc collection outlet; API summary) — port khối .gv-ol2 của PDP cũ sang token kit. */
.gdpw .pdpx-ol2 {display:grid;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r12);background:#fff;margin-top:-6px}
.gdpw .pdpx-ol2__tags {display:flex;flex-wrap:wrap;gap:6px}
.gdpw .pdpx-ol2__badge {background:var(--gdp);color:#fff;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:4px 8px;border-radius:4px;line-height:1.2}
.gdpw .pdpx-ol2__reason {font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:4px 8px;border-radius:4px;line-height:1.2;color:var(--t1);background:var(--bg2);border:1px solid var(--border)}
.gdpw .pdpx-ol2__mkt {display:grid;gap:4px;border-radius:var(--r8);padding:10px 12px;background:var(--bg2)}
.gdpw .pdpx-ol2__mkt div {display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--t2)}
.gdpw .pdpx-ol2__mkt .win {color:#0a7a3f;font-weight:700}
.gdpw .pdpx-ol2__mkt .win b {font-size:15px}
.gdpw .pdpx-ol2__ticks {display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:var(--t2)}
.gdpw .pdpx-ol2__ticks span::before {content:"✓";color:#0a7a3f;font-weight:700;margin-right:5px}
.gdpw .pdpx-ol2__stock {justify-self:start;font-size:13px;font-weight:700;padding:5px 10px;border-radius:var(--rpill);background:var(--bg2);border:1px solid var(--border);color:var(--t2)}
.gdpw .pdpx-ol2__stock.is-crit {color:var(--gdp);background:var(--gdp-tint);border-color:var(--gdp-soft)}
.gdpw .pdpx-ol2__stock.is-warn {color:var(--amber);background:var(--amber-dim);border-color:var(--amber-dim)}
.gdpw .pdpx-ol2__note {font-size:12.5px;line-height:1.5;color:var(--t2);background:var(--bg2);border-radius:var(--r8);padding:9px 11px;margin-top:-6px}
.gdpw .pdpx-ol2__why {font-size:14px;line-height:1.62;color:var(--t2);margin-top:10px}

/* Lightbox ảnh lớn (thay fancybox ~200KB của theme cũ) + ảnh/video đánh giá. */
.gdpw .pdpx-lb {position:fixed;inset:0;z-index:1000;background:rgba(10,10,10,.88);display:flex;align-items:center;justify-content:center;padding:48px 64px}
.gdpw .pdpx-lb__stage {max-width:100%;max-height:100%;display:flex;align-items:center;justify-content:center}
.gdpw .pdpx-lb__stage img, .gdpw .pdpx-lb__stage video {max-width:min(92vw,1000px);max-height:86vh;width:auto;height:auto;border-radius:var(--r8);background:#fff;object-fit:contain}
.gdpw .pdpx-lb__stage video {background:#000}
.gdpw .pdpx-lb__x, .gdpw .pdpx-lb__nav {position:absolute;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;display:grid;place-items:center}
.gdpw .pdpx-lb__x:hover, .gdpw .pdpx-lb__nav:hover {background:rgba(255,255,255,.28)}
.gdpw .pdpx-lb__x .ic, .gdpw .pdpx-lb__nav .ic {width:20px;height:20px}
.gdpw .pdpx-lb__x {top:14px;right:14px}
.gdpw .pdpx-lb__nav--prev {left:14px;top:50%;margin-top:-22px}
.gdpw .pdpx-lb__nav--next {right:14px;top:50%;margin-top:-22px}

/* Toast (thêm giỏ / lưu mã). Trên mobile nằm trên .mbuy. */
.gdpw .pdpx-toast {position:fixed;left:50%;bottom:28px;z-index:1001;transform:translate(-50%,12px);opacity:0;max-width:calc(100vw - 32px);padding:11px 18px;border-radius:var(--rpill);background:var(--ink);color:#fff;font-size:13px;font-weight:600;box-shadow:var(--shadow-md);transition:opacity var(--dur),transform var(--dur)}
.gdpw .pdpx-toast.show {opacity:1;transform:translate(-50%,0)}
.gdpw .pdpx-toast a {color:#fff;text-decoration:underline;text-underline-offset:2px;margin-left:6px}
.gdpw .pdpx-toast b {color:#fff}

@media (max-width:900px){
  .gdpw .pdpx-lb {padding:56px 8px}
  .gdpw .pdpx-lb__nav {top:auto;bottom:14px;margin-top:0}
  .gdpw .pdpx-toast {bottom:88px}
}

/* Dải thumb: kit có 6 ảnh (506px) nên cao bằng ảnh chính; SP thật có tới 40+ ảnh → dải chạm max-height 600px, kéo cao hàng lưới và đẩy .gal__hint xuống ~100px.
   Desktop: dải không góp chiều cao (height:0) và luôn cao đúng bằng ảnh chính (min-height:100% của ô lưới), phần dư cuộn như kit. */
@media (min-width:901px){
  .gdpw .gal__thumbs {max-height:none;height:0;min-height:100%}
}

/* Mobile PDP: .mbuy đã có nút "Chat" (mở đúng bong bóng chat GDP) → ẩn bong bóng nổi "Chat với shop" (nằm NGOÀI .gdpw, fixed ngay trên .mbuy)
   để không che thông số/đánh giá — cùng tinh thần PDP cũ (R4b dọn góc dưới-phải). Chỉ trang có .mbuy (PDP) bị ảnh hưởng. */
@media (max-width:900px){
  body:has(.gdpw .mbuy) .gdp-chat-bubble {display:none!important}
}