/* ============================================================
   VIOSTORE — DESIGN SYSTEM
   Một file duy nhất. Không framework, không reset ngoài.
   ============================================================ */
:root{
  /* Brand — giữ vàng/đỏ của nhận diện cũ, đặt trên nền mực đậm */
  /* Bốn biến này bị inc/customizer.php ghi đè ở <head> theo lựa chọn trong
     Tuỳ biến. Giá trị dưới đây là mặc định, cũng là fallback khi xem file CSS
     ngoài WordPress (bản demo tĩnh). */
  --brand:#FFD400;
  --brand-rgb:255, 212, 0;
  --brand-ink:#0E1116;      /* chữ trên nền thương hiệu */
  --brand-600:#E6BE00;
  --brand-soft:#FFF8DB;
  --ink:#0E1116;
  --ink-2:#1A1F27;
  --ink-3:#2A313C;
  --price:#E11D2A;
  --price-rgb:225, 29, 42;
  --price-ink:#ffffff;      /* chữ trên nền giá */
  --price-soft:#FFF1F2;
  --ok:#0E9F6E;
  --ok-soft:#E7F7F1;
  --info:#1C64F2;
  --info-soft:#EBF2FE;

  --fg:#0E1116;
  --fg-2:#4B5563;
  --fg-3:#8A93A0;
  --line:#E7E9EE;
  --line-2:#F1F3F6;
  --bg:#F4F5F7;
  --card:#FFFFFF;

  --font:"Inter","Be Vietnam Pro","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;

  --r-sm:8px; --r:12px; --r-lg:16px; --r-xl:22px;
  --sh-1:0 1px 2px rgba(14,17,22,.06),0 1px 3px rgba(14,17,22,.05);
  --sh-2:0 4px 12px rgba(14,17,22,.08);
  --sh-3:0 12px 32px rgba(14,17,22,.12);

  --wrap:1240px;
  --gap:16px;
  --hdr-h:72px;
}

*{box-sizing:border-box}
html{
  margin:0;padding:0;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  scroll-behavior:smooth;
}
body{
  margin:0;padding:0;
  font-family:var(--font);
  background:var(--bg);
  color:var(--fg);
  font-size:15px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;           /* chặn tràn ngang trên mobile */
  min-width:0;
}
img,video,svg,iframe{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit;touch-action:manipulation}
ul{margin:0;padding:0;list-style:none}
h1,h2,h3,h4,h5{margin:0;letter-spacing:-.02em;overflow-wrap:anywhere}
p,li,td,th{overflow-wrap:anywhere}

/* Ô nhập ≥16px trên mobile — tránh iOS tự zoom khi focus */
input,select,textarea,button{font-size:inherit}
@media (max-width:860px){
  input[type=text],input[type=search],input[type=email],input[type=tel],
  input[type=number],input[type=password],select,textarea{font-size:16px !important}
}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 max(16px, env(safe-area-inset-left)) 0 max(16px, env(safe-area-inset-right))}
.page-pad{padding-top:18px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip:focus{position:fixed;top:8px;left:8px;width:auto;height:auto;clip:auto;z-index:999;
  background:var(--brand);color:#000;padding:10px 16px;border-radius:8px}

.muted{color:var(--fg-2)}
.tiny{font-size:12px}
.sm{font-size:13px}
.bold{font-weight:700}

/* ============================================================
   HEADER
   ============================================================ */
.topbar{background:var(--brand);color:#1A1600;font-size:12.5px;font-weight:600}
.topbar .wrap{display:flex;align-items:center;justify-content:space-between;height:34px;gap:16px}
.topbar .usps{display:flex;gap:18px;overflow:hidden}
.topbar .usps span{white-space:nowrap}
.topbar-links{display:flex;gap:14px;white-space:nowrap}
.dot{width:5px;height:5px;border-radius:50%;background:#1A1600;opacity:.45;flex:none;align-self:center}

.hdr{background:var(--ink);color:#fff;position:sticky;top:0;z-index:100}
.hdr .wrap{display:flex;align-items:center;gap:20px;min-height:var(--hdr-h)}

.logo{display:flex;align-items:center;gap:var(--logo-gap,10px);flex:none;color:inherit}
.logo .mark{width:var(--logo-mark,38px);height:var(--logo-mark,38px);border-radius:11px;background:var(--brand);color:var(--brand-ink,#0E1116);
  display:grid;place-items:center;font-weight:900;font-size:19px;letter-spacing:-.04em;flex:none}
.logo .txt{line-height:1.05;min-width:0}
.logo .txt b{display:block;font-size:19px;letter-spacing:-.02em}
.logo .txt small{display:block;font-size:10.5px;color:var(--brand);letter-spacing:.14em;text-transform:uppercase;font-weight:700}
.logo .logo-img,.logo img.custom-logo{height:var(--logo-h,40px);width:auto;max-width:var(--logo-mw,180px);object-fit:contain}
.logo .custom-logo-link{display:contents} /* tránh bọc link lồng trong .logo */
.logo-layout-stack{flex-direction:column}
.logo-align-center{align-items:center;text-align:center}

/* KHÔNG đặt tên class là .search: WordPress gắn sẵn class `search` vào <body>
   ở trang kết quả tìm kiếm, nên mọi luật .search sẽ đổ lên cả trang — cụ thể
   max-width:560px bóp toàn bộ site lại. Dùng .hsearch cho ô tìm ở header. */
.hsearch{flex:1;position:relative;max-width:560px}
.hsearch form{position:relative}
.hsearch input[type=search]{
  width:100%;height:44px;border-radius:var(--r);border:1.5px solid transparent;
  background:#fff;padding:0 68px 0 42px;font-size:14.5px;color:var(--fg);outline:none;
  -webkit-appearance:none;appearance:none;
}
.hsearch input::placeholder{color:var(--fg-3)}
.hsearch input:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(255,212,0,.28)}
.hsearch .ico{position:absolute;left:13px;top:13px;color:var(--fg-3);z-index:1}
.hsearch .go{position:absolute;right:5px;top:5px;height:34px;padding:0 14px;border-radius:9px;
  background:var(--brand);color:#0E1116;font-weight:700;font-size:13px}

.hact{display:flex;align-items:center;gap:4px;margin-left:auto}
.hbtn{display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:var(--r);color:#E6E9EE;min-height:44px}
.hbtn:hover{background:var(--ink-2)}
.hbtn .l1{font-size:11px;color:#98A1AE;line-height:1.15;display:block}
.hbtn .l2{font-size:13.5px;font-weight:650;line-height:1.2;display:block}
.hbtn.call .l2{color:var(--brand)}

/* ---------- Thanh danh mục + mega menu ---------- */
.catbar{background:var(--ink-2);position:relative;z-index:90}
.catbar .wrap{display:flex;align-items:center;gap:2px;height:46px;overflow-x:auto;scrollbar-width:none}
.catbar .wrap::-webkit-scrollbar{display:none}
.cat{display:flex;align-items:center;gap:7px;height:34px;padding:0 13px;border-radius:9px;
  color:#D3D8E0;font-size:13.5px;font-weight:600;white-space:nowrap;flex:none}
.cat:hover,.cat.on{background:#333B48;color:#fff}
.cat.hot{color:var(--brand)}
/* Tab của trang đang xem: nền thương hiệu để phân biệt hẳn với .on (nút mega). */
.cat.current,.cat.current:hover{background:var(--brand);color:var(--brand-ink);font-weight:700}
.cat.current.hot{color:var(--brand-ink)}

.mega-host{align-self:stretch;display:flex;align-items:center;position:static}
.mega{
  position:absolute;left:0;right:0;top:100%;background:#fff;
  border-radius:0 0 var(--r-lg) var(--r-lg);box-shadow:var(--sh-3);
  padding:20px;display:none;grid-template-columns:220px 1fr 260px;gap:24px;
  max-width:var(--wrap);margin:0 auto;
}
.mega-host:hover .mega,.mega-host:focus-within .mega{display:grid}
.mega h5{margin:0 0 10px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-3)}
.mega .brands li a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;font-weight:600;font-size:14px}
.mega .brands li a:hover,.mega .brands li.on a{background:var(--brand-soft)}
.mega .brands .n{margin-left:auto;font-size:11.5px;color:var(--fg-3);font-weight:500}
.mega .series-panel{display:none}
.mega .series-panel.on{display:block}
.mega .series{display:grid;grid-template-columns:repeat(3,1fr);gap:4px 18px;align-content:start}
.mega .series a{font-size:13.5px;color:var(--fg-2);padding:5px 0}
.mega .series a:hover{color:var(--price)}
.mega .series .serie-group{grid-column:1/-1;padding:6px 0 10px;border-bottom:1px solid var(--line,rgba(0,0,0,.06))}
.mega .series .serie-group:last-of-type{border-bottom:0}
.mega .series .serie-parent{display:block;font-weight:700;font-size:13.5px;color:var(--fg);padding:2px 0 6px}
.mega .series .serie-kids{display:grid;grid-template-columns:repeat(3,1fr);gap:2px 16px}
.mega .series .serie-kids a{font-size:13px;color:var(--fg-2)}
.mega .series .serie-all{grid-column:1/-1;font-weight:700;color:var(--price);margin-top:6px}
.ft-social{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.ft-social .soc{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.08);color:inherit;font-size:12px;font-weight:600}
.ft-social .soc:hover{background:var(--brand);color:var(--brand-ink)}
/* KHÔNG đặt display ở đây. Luật này là (0,2,0), cao hơn `.promo` (0,1,0) ở
   khối hero bên dưới, nên `display:block` từng đè chết cả
   `display:flex` lẫn `flex-direction:column` + `justify-content:center`.
   Hậu quả: <b> và <span> là thẻ inline nên dính liền nhau trên một dòng
   ("Trả góp 0% qua thẻ Visa · Master · JCB…") và chữ không căn giữa ô.
   Thẻ <a> mang .promo vẫn là block-level nhờ chính display:flex đó. */
.hero-side .promo{text-decoration:none;color:inherit}
.hero-side a.promo:hover{filter:brightness(1.03)}
.mega .quick{background:var(--bg);border-radius:var(--r);padding:14px}
.mega .quick a{display:block;padding:8px 10px;border-radius:8px;font-size:13.5px;font-weight:600;
  background:#fff;margin-bottom:6px;box-shadow:var(--sh-1)}
.mega .quick a:hover{color:var(--price)}

/* ============================================================
   TRANG CHỦ — hero + trust
   ============================================================ */
.hero{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--gap);margin:16px 0}
.hero-main{
  position:relative;border-radius:var(--r-xl);overflow:hidden;color:#fff;padding:34px;
  background:radial-gradient(120% 130% at 80% 0%,#2B3442 0%,#0E1116 55%);
  min-height:288px;display:flex;flex-direction:column;justify-content:center;
}
.hero-main .glow{position:absolute;right:-60px;top:-40px;width:340px;height:340px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,212,0,.22),transparent 62%);pointer-events:none}
.hero-main .kicker{font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--brand)}
.hero-main h1{margin:8px 0 10px;font-size:34px;line-height:1.12;letter-spacing:-.03em;max-width:16ch}
.hero-main p{margin:0 0 18px;color:#B9C0CB;max-width:46ch;font-size:14.5px}
.hero-cta{display:flex;gap:10px;flex-wrap:wrap}
.cta{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:0 20px;border-radius:11px;
  background:var(--brand);color:#0E1116;font-weight:750;font-size:14.5px}
.cta.ghost{background:transparent;border:1.5px solid #3B4453;color:#fff}

.hero-side{display:flex;flex-direction:column;gap:var(--gap)}
.promo{flex:1;border-radius:var(--r-lg);padding:16px;display:flex;flex-direction:column;
  justify-content:center;box-shadow:var(--sh-1)}
.promo b{font-size:15px;letter-spacing:-.01em}
.promo span{font-size:12.5px;color:var(--fg-2)}
.promo.p1{background:linear-gradient(135deg,#FFE87A,#FFD400)}
.promo.p1 span{color:#7A6400}
.promo.p2{background:#fff}

.trust{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap);margin-bottom:8px}
.trust .t{background:#fff;border-radius:var(--r-lg);padding:14px;display:flex;gap:12px;
  align-items:center;box-shadow:var(--sh-1)}
.trust .t .ic{width:40px;height:40px;flex:none;border-radius:11px;background:var(--brand-soft);
  display:grid;place-items:center;color:#8A6D00}
.trust .t b{display:block;font-size:13.5px}
.trust .t span{font-size:12px;color:var(--fg-2)}

/* ============================================================
   BLOG / TRANG TĨNH / 404
   ============================================================ */
.page-title{font-size:24px;margin-bottom:14px}
.page-article{max-width:80ch}

.postgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--gap)}
.postcard{background:#fff;border-radius:var(--r-lg);padding:14px;box-shadow:var(--sh-1)}
.postthumb{border-radius:var(--r);overflow:hidden;margin-bottom:10px;aspect-ratio:16/9}
.postthumb img{width:100%;height:100%;object-fit:cover}
.postcard h2{font-size:15.5px;line-height:1.35;margin-bottom:6px}

.notfound{max-width:640px;margin:0 auto;text-align:center}
.notfound h1,.notfound h2{font-size:22px;margin-bottom:8px}
.search-404{margin:18px auto;max-width:420px}
.search-404 input[type=search]{border:1.5px solid var(--line)}
.notfound-cta{margin-top:16px}

/* ============================================================
   THẺ SẢN PHẨM
   ============================================================ */
.section{margin:24px 0}
.sec-head{display:flex;align-items:flex-end;gap:14px;margin-bottom:12px}
.sec-head h2{font-size:19px}
.sec-head .more{margin-left:auto;font-size:13.5px;font-weight:600;color:var(--info)}

ul.products,.grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:var(--gap);
  margin:0;padding:0;list-style:none;
}
.pcard{
  --pcard-pad:12px;--pcard-title:13.8px;
  background:var(--card);border-radius:var(--r-lg);padding:var(--pcard-pad);box-shadow:var(--sh-1);
  display:flex;flex-direction:column;position:relative;transition:box-shadow .18s,transform .18s;
}

/* ------------------------------------------------------------------
   Gỡ layout float mặc định của WooCommerce.

   woocommerce-layout.css vẫn được nạp (cart/checkout/account cần nó) và
   ép: li.product{float:left;width:22.05%;margin:0 3.8% 2.992em 0;padding:0}
   cùng li.product a img{height:auto;margin:0 0 1em}. Trong grid của theme,
   các % đó tính theo BỀ RỘNG Ô GRID chứ không phải cả hàng, nên thẻ co còn
   ~50px, mất padding và tụt hàng do margin-bottom 2.992em.

   Selector dưới đây cố ý viết trùng specificity với luật của Woo (0,3,2 /
   0,3,3); main.css nạp sau nên thắng. Giá trị thay đổi theo breakpoint và
   theo kiểu thẻ trong Customizer đi qua biến --pcard-* để các luật
   specificity thấp (.pcard, .vio-card-flat .pcard…) vẫn điều khiển được.
   ------------------------------------------------------------------ */
/* Clearfix ::before/::after của Woo trở thành GRID ITEM: chúng chiếm 2 ô đầu
   nên hàng đầu tiên bị đẩy sang cột 2 và sản phẩm cuối rớt xuống hàng dưới. */
.woocommerce ul.products::before,
.woocommerce ul.products::after,
.woocommerce-page ul.products::before,
.woocommerce-page ul.products::after{content:none;display:none}

.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product{
  float:none;width:auto;margin:0;padding:var(--pcard-pad,12px);
}
.woocommerce ul.products li.product a img,
.woocommerce-page ul.products li.product a img{
  width:100%;height:100%;margin:0;display:block;object-fit:contain;padding:8px;
}
.woocommerce ul.products li.product h3,
.woocommerce-page ul.products li.product h3{
  padding:0;margin:0 0 8px;font-size:var(--pcard-title,13.8px);
}
.woocommerce ul.products li.product .price,
.woocommerce-page ul.products li.product .price{
  color:var(--price);font-size:17px;font-weight:800;margin:0;display:flex;
}
.woocommerce ul.products li.product .price del,
.woocommerce-page ul.products li.product .price del{opacity:1;display:inline;font-size:12.5px;color:var(--fg-3)}
.woocommerce ul.products li.product .price ins,
.woocommerce-page ul.products li.product .price ins{font-weight:800;text-decoration:none;color:var(--price)}
.pcard:hover{box-shadow:var(--sh-3);transform:translateY(-2px)}
.pcard .thumb{position:relative;aspect-ratio:1/1;border-radius:var(--r);overflow:hidden;
  background:linear-gradient(160deg,#F7F8FA,#EDEFF3);margin-bottom:10px}
.pcard .thumb img{width:100%;height:100%;object-fit:contain;padding:8px}
.flags{position:absolute;top:8px;left:8px;display:flex;flex-direction:column;gap:5px;align-items:flex-start;z-index:2}
.flag{font-size:10.5px;font-weight:800;letter-spacing:.02em;padding:3px 7px;border-radius:6px;text-transform:uppercase}
.f-new{background:var(--ok-soft);color:var(--ok)}
.f-like{background:var(--info-soft);color:var(--info)}
.f-sale{background:var(--price);color:#fff}
.f-seal{background:#F3E8FF;color:#7E22CE}

.pcard h3{
  font-size:var(--pcard-title,13.8px);font-weight:650;line-height:1.35;margin:0 0 8px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:37px;
}
.specs{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:9px}
.spec{font-size:11px;font-weight:600;color:var(--fg-2);background:var(--line-2);border-radius:6px;padding:3px 6px}

/* Giá trong thẻ không bọc .price — filter giá của theme trả thẳng <del>/<ins>
   hoặc span amount của wc_price(). Nên đặt typography lên chính .price-row để
   mọi dạng markup đều hiển thị đúng. */
.price-row{
  display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;margin-top:auto;
  font-size:17px;font-weight:800;color:var(--price);letter-spacing:-.02em;
}
.price-row .price,.pcard .price{
  font-size:17px;font-weight:800;color:var(--price);letter-spacing:-.02em;
  display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;margin:0;
}
.price del,.price-row del{font-size:12.5px;color:var(--fg-3);font-weight:500;text-decoration:line-through}
.price ins,.price-row ins{text-decoration:none;color:var(--price)}
.price .from,.price small,.price-row small{font-size:11.5px;font-weight:500;color:var(--fg-3)}
.off{font-size:11px;font-weight:800;color:var(--price);background:var(--price-soft);border-radius:5px;padding:2px 5px}

.pcard .foot{margin-top:9px;padding-top:9px;border-top:1px dashed var(--line);
  display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--fg-2);flex-wrap:wrap}
.pcard .foot .sep{color:var(--line)}
.stars{position:relative;display:inline-block;line-height:1;letter-spacing:-.5px;font-size:11.5px;vertical-align:middle}
.stars-bg{color:#E5E7EB}
.stars-fill{position:absolute;left:0;top:0;overflow:hidden;white-space:nowrap;color:#F59E0B}
.rating .stars{font-size:13px}

/* Nút thêm vào giỏ trên thẻ */
.cardbtn{
  margin-top:9px;width:100%;min-height:38px;border-radius:10px;
  background:var(--ink);color:#fff;font-size:13px;font-weight:700;
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.cardbtn:hover{background:var(--price)}
.cardbtn-opt{background:#fff;border:1.5px solid var(--line);color:var(--fg-2)}
.cardbtn-opt:hover{border-color:var(--price);background:#fff;color:var(--price)}

/* Icon giỏ ở header */
.hbtn.cart{position:relative}
.hbtn.cart .badge{
  position:absolute;top:2px;left:24px;background:var(--price);color:#fff;
  font-size:10.5px;font-weight:700;min-width:17px;height:17px;border-radius:9px;
  display:grid;place-items:center;padding:0 4px;
}
.hbtn.cart .badge[hidden]{display:none}

/* Toast xác nhận đã thêm vào giỏ */
.vio-toast{
  position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);
  background:var(--ink);color:#fff;padding:13px 18px;border-radius:12px;
  font-size:14px;font-weight:600;box-shadow:var(--sh-3);z-index:300;
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:92vw;
}
.vio-toast.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.vio-toast a{color:var(--brand);text-decoration:underline;margin-left:6px}

/* ============================================================
   TRẢ GÓP & MUA TRƯỚC TRẢ SAU
   ============================================================ */
.paymethods{margin:0 0 16px}
.paymethods .lbl{font-size:12.5px;font-weight:700;margin-bottom:7px}
.payrow{display:flex;flex-direction:column;gap:8px}
.paybtn{
  border:1.5px solid var(--line);border-radius:11px;padding:10px 12px;text-align:left;
  display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:baseline;min-height:44px;
}
.paybtn[hidden]{display:none}
.paybtn b{font-size:13.5px;font-weight:700;color:var(--fg)}
.paybtn .per{font-size:15px;font-weight:800;color:var(--price);grid-row:1;grid-column:2;white-space:nowrap}
.paybtn small{grid-column:1/-1;font-size:11.5px;color:var(--fg-3);font-weight:500}
.paybtn.on{border-color:var(--price);background:var(--price-soft)}
.paybtn:hover{border-color:var(--fg-3)}
.paybtn.on:hover{border-color:var(--price)}
.paynote{margin:8px 0 0}
.linkbtn{color:var(--info);font-weight:650;text-decoration:underline;font-size:12px;padding:0}
.linkbtn:hover{color:var(--price)}

/* Nút chat nổi */
.vio-chat{
  position:fixed;right:16px;bottom:16px;z-index:130;
  display:flex;align-items:center;gap:8px;height:48px;padding:0 16px;border-radius:999px;
  background:var(--info);color:#fff;font-weight:700;font-size:14px;box-shadow:var(--sh-3);
}
.vio-chat:hover{filter:brightness(1.08)}
@media (max-width:860px){
  .vio-chat{right:12px;bottom:84px;height:44px;padding:0 14px}
  .vio-chat span{display:none}
  .vio-chat{padding:0;width:44px;justify-content:center}
}

/* Nút lên đầu trang */
.vio-totop{
  position:fixed;right:16px;bottom:76px;z-index:125;
  width:44px;height:44px;border-radius:50%;background:#fff;color:var(--fg);
  box-shadow:var(--sh-2);font-size:18px;line-height:1;
  display:grid;place-items:center;border:1px solid var(--line);
}
.vio-totop[hidden]{display:none}
.vio-totop:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
@media (max-width:860px){.vio-totop{bottom:140px;right:12px;width:40px;height:40px}}

/* Modal bảng trả góp */
.vio-modal{
  position:fixed;inset:0;z-index:400;background:rgba(14,17,22,.55);
  display:grid;place-items:center;padding:16px;overflow-y:auto;
}
.vio-modal[hidden]{display:none}
body.modal-open{overflow:hidden}
.vio-modal-box{
  background:#fff;border-radius:var(--r-lg);box-shadow:var(--sh-3);
  width:min(520px,100%);max-height:88vh;overflow-y:auto;
}
.vio-modal-head{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:16px 18px;border-bottom:1px solid var(--line-2);position:sticky;top:0;background:#fff;
}
.vio-modal-head h3{font-size:17px}
.vio-modal-x{width:36px;height:36px;border-radius:50%;background:var(--line-2);font-size:15px;flex:none}
.vio-modal-body{padding:18px}
.vio-modal-body h4{margin:0 0 8px}
.vio-modal-body .spectbl th{width:auto}
.vio-modal-body .spectbl td{text-align:right}
.modal-notes{list-style:disc;padding-left:18px;margin:14px 0 16px}
.modal-notes li{margin-bottom:4px}

/* ============================================================
   GIỎ HÀNG & THANH TOÁN (template mặc định của WooCommerce, style lại)
   ============================================================ */
.woocommerce-cart .site-content > .wrap,
.woocommerce-checkout .site-content > .wrap{padding-top:18px}

.shop_table{
  width:100%;border-collapse:collapse;background:#fff;border-radius:var(--r-lg);
  box-shadow:var(--sh-1);overflow:hidden;font-size:14px;
}
.shop_table th,.shop_table td{padding:14px;text-align:left;border-bottom:1px solid var(--line-2);vertical-align:middle}
.shop_table thead th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-3);font-weight:700}
.shop_table tr:last-child td{border-bottom:0}
.shop_table .product-thumbnail img{width:64px;height:64px;object-fit:contain;border-radius:10px;background:var(--line-2)}
.shop_table .product-name a{font-weight:650}
.shop_table .product-price,.shop_table .product-subtotal{font-weight:700;color:var(--price);white-space:nowrap}
.shop_table .variation{font-size:12px;color:var(--fg-2);margin:4px 0 0}
.shop_table .variation dt,.shop_table .variation dd{display:inline;margin:0}
.shop_table .variation dd{margin-right:8px}
.product-remove a{color:var(--fg-3);font-size:18px;line-height:1}
.product-remove a:hover{color:var(--price)}
.quantity input{
  width:64px;height:38px;border:1px solid var(--line);border-radius:9px;
  text-align:center;font-size:14px;font-weight:600;
}

/* woocommerce-layout.css thả .cart_totals float:right;width:48%. Bản demo để
   khối tổng tiền CHIẾM TRỌN chiều ngang dưới bảng — bỏ float và trả về 100%. */
.woocommerce .cart-collaterals{display:block}
.woocommerce .cart-collaterals .cart_totals{float:none;width:100%}
.cart-collaterals,.cart_totals{margin-top:20px}
.cart_totals table{width:100%;background:#fff;border-radius:var(--r-lg);box-shadow:var(--sh-1);border-collapse:collapse;overflow:hidden}
.cart_totals th,.cart_totals td{padding:13px 16px;border-bottom:1px solid var(--line-2);font-size:14px}
.cart_totals th{text-align:left;color:var(--fg-2);font-weight:600}
.cart_totals td{text-align:right;font-weight:700}
.cart_totals .order-total td{font-size:20px;color:var(--price);font-weight:850}

/* Hàng nút dưới bảng giỏ hàng */
.shop_table td.actions{background:#fafafa;border-top:1px solid var(--line-2)}
.vio-cart-actions-in{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.shop_table td.actions .coupon{display:flex;gap:8px;align-items:center}
.shop_table td.actions .coupon .input-text{
  height:40px;padding:0 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;width:170px;
}
.vio-cart-update{min-height:40px}
.vio-cart-call{margin-top:10px;text-align:center;font-size:12.5px;color:var(--fg-3)}
.vio-cart-call a{color:var(--price)}

.wc-proceed-to-checkout{margin-top:14px}

/* ------------------------------------------------------------------
   Ghi đè woocommerce.css cho GIỎ HÀNG.
   woocommerce.css nạp SAU main.css và selector của nó có tiền tố
   `.woocommerce` nên luôn thắng: bảng bo 5px + viền xám, ô 9px 12px, ảnh 32px,
   nút thanh toán tím bo 3px. Muốn giống bản demo thì phải đối lại đúng độ
   ưu tiên đó — dưới đây là toàn bộ chỗ cần đè, không dùng !important.
   ------------------------------------------------------------------ */
.woocommerce table.shop_table{
  border:0;border-radius:var(--r-lg);border-collapse:collapse;margin:0;text-align:left;
}
.woocommerce table.shop_table th,
.woocommerce table.shop_table td{
  padding:14px;border-left:0;border-right:0;border-top:0;
  border-bottom:1px solid var(--line-2);vertical-align:middle;
}
.woocommerce table.shop_table thead th{font-weight:700;line-height:1.55}
/* `tr.cart_item:last-of-type` KHÔNG dùng được: hàng nút (đang ẩn) mới là <tr>
   cuối cùng, mà :last-of-type xét theo thẻ chứ không xét class. */
.woocommerce table.shop_table tbody tr.cart_item:has(+ .vio-cart-actions) td,
.woocommerce table.shop_table tbody tr:last-child td{border-bottom:0}

/* Ảnh sản phẩm: woocommerce.css ép 32px, demo dùng 64px.
   Phải ghim luôn bề rộng CỘT: bảng tự chia cột theo nội dung, tên máy dài làm
   cột ảnh co lại còn ~91px, mà `max-width:100%` thì ảnh co theo — ra 62.8px. */
.woocommerce table.shop_table th.product-thumbnail,
.woocommerce table.shop_table td.product-thumbnail{width:92px}
.woocommerce-cart table.cart img,
.woocommerce table.shop_table td.product-thumbnail img{
  width:64px;height:64px;max-width:64px;object-fit:contain;
  border-radius:10px;background:var(--line-2);
}

/* Danh sách tuỳ chọn: bản mặc định cho mỗi giá trị một đoạn văn riêng
   (margin 12px) nên khối cao gấp đôi phần còn lại của dòng. */
.woocommerce table.shop_table td.product-name dl.variation{
  margin:4px 0 0;font-size:12px;color:var(--fg-3);line-height:1.55}
.woocommerce table.shop_table td.product-name dl.variation dt{
  float:none;display:inline;font-weight:600;margin:0 3px 0 0}
.woocommerce table.shop_table td.product-name dl.variation dd{display:inline;margin:0 10px 0 0}
.woocommerce table.shop_table td.product-name dl.variation dd p{display:inline;margin:0}

.woocommerce .quantity .qty{
  width:64px;height:38px;min-height:38px;padding:1px 2px;
  border:1px solid var(--line);border-radius:9px;
  font-size:14px;font-weight:600;text-align:center;background:#fff;color:var(--fg);
}

/* Khối tổng tiền */
.woocommerce-cart .cart-collaterals .cart_totals table,
.woocommerce .cart-collaterals .cart_totals table.shop_table{
  border-collapse:collapse;border-radius:var(--r-lg);margin-bottom:0}
.woocommerce .cart_totals table.shop_table th,
.woocommerce .cart_totals table.shop_table td{
  padding:13px 16px;border-top:0;border-bottom:1px solid var(--line-2)}
.woocommerce .cart_totals table.shop_table th{font-weight:600;color:var(--fg-2)}
.woocommerce .cart_totals table.shop_table td{text-align:right;font-weight:700}
.woocommerce .cart_totals table.shop_table tr:last-child th,
.woocommerce .cart_totals table.shop_table tr:last-child td{border-bottom:0}
.woocommerce .cart_totals table.shop_table .order-total td{
  font-size:20px;color:var(--price);font-weight:850}

/* Nút "TIẾN HÀNH THANH TOÁN": demo là nút ĐỎ bo 12px cao 48px, không phải
   nút tím bo 3px cao 56px của WooCommerce. */
.woocommerce .wc-proceed-to-checkout{padding:0;margin-top:14px}
.woocommerce .wc-proceed-to-checkout a.checkout-button{
  display:inline-flex;align-items:center;justify-content:center;
  width:100%;min-height:48px;padding:0 22px;margin:0;
  border-radius:12px;background:var(--price);color:#fff;
  font-size:15px;font-weight:750;line-height:1.55;text-align:center;
}
.woocommerce .wc-proceed-to-checkout a.checkout-button:hover{
  background:var(--price);filter:brightness(1.06)}

.checkout-button,.button,button.button,input.button,
.woocommerce-button,#place_order{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:48px;padding:0 22px;border-radius:12px;
  background:var(--price);color:#fff;font-weight:750;font-size:15px;border:0;cursor:pointer;
}
.checkout-button{width:100%}
.button:hover,#place_order:hover{filter:brightness(1.06)}
.button.alt{background:var(--ink)}

/* Form thanh toán */
.woocommerce-billing-fields,.woocommerce-checkout-review-order,.woocommerce-additional-fields{
  background:#fff;border-radius:var(--r-lg);padding:18px;box-shadow:var(--sh-1);margin-bottom:16px}
.woocommerce-billing-fields h3,.woocommerce-additional-fields h3,#order_review_heading{font-size:16px;margin:0 0 14px}
.form-row{margin-bottom:12px;display:flex;flex-direction:column;gap:6px}
.form-row label{font-size:12.5px;font-weight:650;color:var(--fg-2)}
.form-row .required{color:var(--price)}
.input-text,.form-row input[type=text],.form-row input[type=tel],
.form-row input[type=email],.form-row textarea,.form-row select{
  width:100%;min-height:44px;border:1.5px solid var(--line);border-radius:10px;
  padding:10px 12px;font:inherit;font-size:14.5px;background:#fff;color:var(--fg);
}
.input-text:focus,.form-row select:focus,.form-row textarea:focus{
  outline:none;border-color:var(--price);box-shadow:0 0 0 3px var(--price-soft)}
.form-row textarea{min-height:88px;resize:vertical}

/* woocommerce.css đặt `.woocommerce form .form-row .input-text{border-radius:
   var(--wc-form-border-radius);padding:.5em}` — 3 class nên thắng rule trên.
   Viết lại cho ngang cơ, đúng số của bản demo. */
.woocommerce form .form-row .input-text,
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row select,
.woocommerce form .form-row textarea{
  width:100%;min-height:44px;border:1.5px solid var(--line);border-radius:10px;
  padding:10px 12px;font:inherit;font-size:14.5px;background:#fff;color:var(--fg);
}
/* woocommerce.css đặt `height:4em` (≈67px) chứ không phải min-height, nên
   min-height của theme không nâng được — phải ghi đè bằng chính `height`. */
.woocommerce form .form-row textarea.input-text,
.woocommerce form .form-row textarea{height:88px;min-height:88px;resize:vertical}

.woocommerce #payment ul.wc_payment_methods,
#payment .wc_payment_methods{list-style:none;margin:0 0 14px;padding:0;
  display:flex;flex-direction:column;gap:8px;border:0}
#payment .wc_payment_method{border:1.5px solid var(--line);border-radius:11px;padding:12px}
#payment .wc_payment_method label{font-weight:650;font-size:14px;display:flex;align-items:center;gap:8px;cursor:pointer}
#payment .wc_payment_method input[type=radio]{accent-color:var(--price);width:18px;height:18px}
.woocommerce #payment div.payment_box,
#payment .payment_box{font-size:13px;color:var(--fg-2);margin:8px 0 0;padding:8px 0 0;
  background:none;border-top:1px dashed var(--line);border-radius:0;line-height:1.55}
.woocommerce #payment div.payment_box::before{display:none}
#payment .payment_box p{margin:0;padding:0}

.woocommerce-checkout #payment{background:transparent;border-radius:0}
.checkout .col2-set{display:grid;grid-template-columns:1fr 1fr;gap:16px}
/* woocommerce-layout.css gắn clearfix `::before/::after{content:" ";display:table}`
   lên .col2-set. Trong grid, hai pseudo-element đó thành HAI Ô THẬT: chúng chiếm
   cột 1 nên form bị đẩy sang cột 2 và khối đơn hàng rớt xuống hàng dưới. */
.checkout .col2-set::before,.checkout .col2-set::after{display:none}

/* ============================================================
   TRANG DANH MỤC
   ============================================================ */
.crumb{font-size:12.5px;color:var(--fg-3);margin-bottom:10px}
.crumb a{color:var(--fg-2)}
.crumb .sep{margin:0 6px;color:var(--line)}

.archive-head{margin-bottom:14px}
.archive-head h1{font-size:23px}
.archive-head .count{font-size:14px;font-weight:400}
.archive-desc{font-size:13.5px;color:var(--fg-2);max-width:70ch;margin-top:6px}

.plp{display:grid;grid-template-columns:246px minmax(0,1fr);gap:20px;align-items:start}
/* Tắt cột lọc trong Tuỳ biến → lưới chiếm hết bề ngang */
.plp-nofilters{grid-template-columns:minmax(0,1fr)}

.filters{background:#fff;border-radius:var(--r-lg);padding:4px 14px 14px;box-shadow:var(--sh-1);
  position:sticky;top:calc(var(--hdr-h) + 16px)}
.filters-head{display:none}
.fgroup{border-bottom:1px solid var(--line-2);padding:13px 0}
.fgroup:last-child{border:0}
.fgroup h4,.fgroup .widget-title,.fgroup .widgettitle{
  margin:0 0 9px;font-size:13px;font-weight:700;letter-spacing:0}

/* layered nav của WooCommerce
   Lưu ý cấu trúc thật: <li><a>Tên</a> <span class="count">(19)</span></li>
   — .count là anh em của <a>, KHÔNG nằm trong <a>. Nên flex đặt ở <li>. */
.woocommerce-widget-layered-nav-list{display:flex;flex-direction:column;gap:2px}
.woocommerce-widget-layered-nav-list li,
.fgroup li{
  list-style:none;display:flex;align-items:center;gap:6px;
  border-radius:8px;padding:0 8px;min-height:34px;
}
.woocommerce-widget-layered-nav-list li:hover,
.fgroup li:hover{background:var(--line-2)}
.woocommerce-widget-layered-nav-list li a,
.fgroup li a{flex:1;font-size:13.5px;color:var(--fg-2);padding:6px 0}
.woocommerce-widget-layered-nav-list li:hover a,
.fgroup li:hover a{color:var(--fg)}
.woocommerce-widget-layered-nav-list li .count,
.fgroup li .count{margin-left:auto;font-size:11.5px;color:var(--fg-3);flex:none}
.woocommerce-widget-layered-nav-list li.chosen{background:var(--price-soft)}
.woocommerce-widget-layered-nav-list li.chosen a{color:var(--price);font-weight:650}
.woocommerce-widget-layered-nav-list li.chosen a::before{content:"✓ "}

/* "Xem thêm" cho nhóm dài (Chip có 75 loại). Dùng <details> nên không cần JS;
   mở ra là danh sách chạy tiếp, không có viền ngăn giữa hai phần. */
.fmore>summary{list-style:none;cursor:pointer;padding:7px 8px;margin-top:2px;
  font-size:12.5px;font-weight:650;color:var(--price);border-radius:8px}
.fmore>summary::-webkit-details-marker{display:none}
.fmore>summary::after{content:" ▾"}
.fmore[open]>summary::after{content:" ▴"}
.fmore>summary:hover{background:var(--line-2)}
.fmore[open]>summary{margin-bottom:2px}

.pillrow{display:flex;flex-wrap:wrap;gap:6px}
.colorrow{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:13px;color:var(--fg-2);cursor:pointer}
.colorrow input[type=color]{width:38px;height:30px;border:1px solid var(--line);border-radius:8px;padding:2px;background:#fff;cursor:pointer}
.pill{font-size:12.5px;font-weight:600;padding:7px 11px;border-radius:8px;
  border:1px solid var(--line);color:var(--fg-2);display:inline-block}
.pill:hover{border-color:var(--fg-3)}
.pill.on{border-color:var(--price);background:var(--price-soft);color:var(--price)}

.toolbar{background:#fff;border-radius:var(--r-lg);padding:10px 14px;box-shadow:var(--sh-1);
  margin-bottom:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.chip{height:34px;padding:0 13px;border-radius:999px;background:#fff;border:1px solid var(--line);
  font-size:13px;font-weight:600;color:var(--fg-2);display:inline-flex;align-items:center;gap:6px}
.chip.on,.chip:hover{border-color:var(--fg-3)}
.filters-toggle{display:none}
.woocommerce-ordering{margin:0}
.woocommerce-ordering select{
  height:34px;border-radius:9px;border:1px solid var(--line);padding:0 10px;
  font-size:13px;font-weight:600;color:var(--fg-2);background:#fff}
.woocommerce-result-count{margin:0 0 0 auto;font-size:12.5px;color:var(--fg-3)}

/* woocommerce.css đặt `.woocommerce .woocommerce-ordering{margin:0 0 1em}` —
   specificity (0,2,0), cao hơn hai luật (0,1,0) ngay phía trên nên NÓ THẮNG dù
   main.css nạp sau. Hai hậu quả nhìn thấy được trên thanh công cụ danh mục:

   1. Lệch dọc — `.toolbar` dùng `align-items:center`, mà flex căn giữa theo
      HỘP LỀ. Ô chọn và dòng "Hiển thị…" mang `margin-bottom:1em` nên bị đẩy
      LÊN ~8px so với nhãn "Sắp xếp:" (lề 0) → nhãn trông thấp hơn hẳn.
   2. `margin-left:auto` bị xoá → "Hiển thị 1–24 trong N sản phẩm" dính ngay
      sau ô chọn thay vì nằm ở mép phải như bản thiết kế.

   Phải viết TRÙNG DẠNG selector của Woo (cũng 2 class) mới đè được — xem mục
   4.8 trong QUY-TRINH-CAP-NHAT-GIAO-DIEN.md. */
.woocommerce .woocommerce-ordering,
.woocommerce-page .woocommerce-ordering{margin:0}
.woocommerce .woocommerce-result-count,
.woocommerce-page .woocommerce-result-count{margin:0 0 0 auto}

.woocommerce-pagination{margin:24px 0;display:flex;justify-content:center}

/* Phân trang WooCommerce.

   Hai cái bẫy, luật cũ dính cả hai:

   1. WooCommerce gắn class `page-numbers` lên CẢ thẻ <ul>, không chỉ từng nút.
      Luật `.page-numbers{border;border-radius;background}` vì thế bám luôn vào
      <ul> → cả dải phân trang biến thành một hộp trắng bo góc bao ngoài. Nên
      luật nút phải bám theo `a.page-numbers` / `span.page-numbers`, đừng bám
      class trần.

   2. woocommerce.css có sẵn `.woocommerce nav.woocommerce-pagination ul li`
      (đặc trưng 0,2,3) đặt float:left + border-right #cfc8d8, và
      `... li span.current` (0,3,4) đặt nền #e9e6ed chữ #816f98. Luật cũ
      `.page-numbers` (0,1,0) và `.page-numbers.current` (0,2,0) thua cả hai,
      nên dáng của theme chưa bao giờ hiện ra — gap:6px cũng vô hiệu vì <ul>
      bị ép về display:inline-block. Phải viết đủ dài để vượt đặc trưng đó. */
/* Luật ngắn cho MỌI <ul class="page-numbers">, kể cả khi không có wrapper
   <nav>: search.php gọi paginate_links( 'type' => 'list' ) và echo thẳng ra
   .wrap, nên các luật bám .woocommerce-pagination không với tới — 6 nút từng
   xếp dọc, mỗi nút rộng 1208px. Luật dài phía sau chỉ để vượt đặc trưng của
   woocommerce.css, dáng thì giống hệt. */
ul.page-numbers,
.woocommerce nav.woocommerce-pagination ul{
  display:flex;gap:6px;flex-wrap:wrap;justify-content:center;
  list-style:none;padding:0;margin:0;border:0;white-space:normal}
ul.page-numbers li,
.woocommerce nav.woocommerce-pagination ul li{
  border:0;float:none;display:block;margin:0;padding:0;overflow:visible}

a.page-numbers,span.page-numbers,
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span{
  display:grid;place-items:center;min-width:38px;height:38px;padding:0 10px;
  border-radius:10px;background:#fff;border:1px solid var(--line);
  font-size:13.5px;font-weight:600;line-height:1;color:var(--fg-2)}

a.page-numbers:hover,
.woocommerce nav.woocommerce-pagination ul li a:hover,
.woocommerce nav.woocommerce-pagination ul li a:focus{
  background:var(--line-2);border-color:var(--fg-3);color:var(--fg)}

span.page-numbers.current,
.woocommerce nav.woocommerce-pagination ul li span.current{
  background:var(--ink);border-color:var(--ink);color:#fff}

span.page-numbers.dots,
.woocommerce nav.woocommerce-pagination ul li span.dots{
  background:none;border-color:transparent;min-width:auto;padding:0 4px;color:var(--fg-3)}

/* Phân trang của WordPress core — the_posts_pagination() ở blog và category
   bài viết (/category/thu-thuat/…).

   Nó xuất ra <nav class="navigation pagination"><div class="nav-links">, KHÔNG
   phải .woocommerce-pagination ở trên. Thiếu luật cho hai class này thì cả hai
   container đều là display:block, mà .page-numbers lại là display:grid — nên
   mỗi nút giãn hết bề rộng (753px) và xếp chồng dọc thành một cột.

   Dùng chung dáng với phân trang của Woo cho đồng bộ. */
.navigation.pagination{margin:24px 0;display:flex;justify-content:center}
.navigation.pagination .nav-links{
  display:flex;gap:6px;flex-wrap:wrap;justify-content:center;align-items:center;
}
.navigation.pagination .page-numbers.dots{
  background:none;border-color:transparent;min-width:auto;padding:0 4px;
}

.woocommerce-info,.woocommerce-message,.woocommerce-error{
  background:#fff;border-radius:var(--r);padding:14px 16px;box-shadow:var(--sh-1);
  font-size:14px;margin:0 0 16px;border-left:3px solid var(--brand)}

/* ============================================================
   TRANG CHI TIẾT
   ============================================================ */
/* DOM: ảnh -> buy-box (h1) -> panel chi tiết.
   Grid xếp lại để desktop vẫn là "ảnh + chi tiết bên trái, buy-box bên phải",
   còn mobile (một cột) giữ đúng thứ tự DOM: ảnh, giá, rồi mới tới thông số. */
.pdp{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:24px 24px;align-items:start}
.pdp-media {grid-column:1;grid-row:1}
.pdp .buybox{grid-column:2;grid-row:1 / span 2}
.pdp-detail{grid-column:1;grid-row:2}

.gallery{background:#fff;border-radius:var(--r-lg);padding:16px;box-shadow:var(--sh-1)}
.gallery .big{aspect-ratio:4/3;border-radius:var(--r);background:linear-gradient(160deg,#F7F8FA,#E9ECF1);
  display:grid;place-items:center;position:relative;overflow:hidden}
.gallery .big img{width:100%;height:100%;object-fit:contain;padding:16px}
.gallery .big .flag{position:absolute;top:14px;left:14px;font-size:12px;padding:5px 10px}
.gallery .thumbs{display:flex;gap:8px;margin-top:12px;overflow-x:auto;scrollbar-width:none}
.gallery .thumbs::-webkit-scrollbar{display:none}
.gthumb{width:64px;height:64px;flex:none;border-radius:10px;background:#F2F4F7;
  border:2px solid transparent;overflow:hidden;padding:0}
.gthumb img{width:100%;height:100%;object-fit:contain}
.gthumb.on{border-color:var(--ink)}

.buybox{background:#fff;border-radius:var(--r-lg);padding:18px;box-shadow:var(--sh-1);
  position:sticky;top:calc(var(--hdr-h) + 16px)}
.buybox h1{font-size:20px;line-height:1.3;margin-bottom:8px}
.rating{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--fg-2);margin-bottom:14px;flex-wrap:wrap}

.pricebox{background:var(--price-soft);border-radius:var(--r);padding:12px 14px;margin-bottom:16px}
/* Như .price-row của thẻ sản phẩm: markup giá không có class cố định
   (span.amount của wc_price(), <ins>/<del> của filter theme, hoặc HTML biến thể
   do JS đổ vào), nên typography phải nằm trên chính .price-line thì dạng nào
   cũng ra chữ lớn màu đỏ. */
.price-line{
  display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;
  font-size:27px;font-weight:850;color:var(--price);letter-spacing:-.03em;line-height:1.15;
  font-variant-numeric:tabular-nums;
}
/* Woo chèn screen-reader-text vào price HTML — ẩn hẳn, tránh vỡ layout */
.screen-reader-text,
.price-line .screen-reader-text,
.price .screen-reader-text,
.woocommerce-Price-amount .screen-reader-text{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;border:0!important;white-space:nowrap!important}
.price-line ins,.price ins{text-decoration:none}
.mbuy .p{max-width:36%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
/* Con giá trong ô: mọi lớp bọc đều ăn theo .price-line, chỉ giá gạch là nhỏ lại. */
.price-line .price,.price-line ins,.price-line .woocommerce-Price-amount{
  font-size:inherit;font-weight:inherit;color:inherit;letter-spacing:inherit;line-height:inherit;margin:0;
}
.price del{opacity:.55;font-size:.85em}
.price-line del,.price-line .price del{
  font-size:14px;font-weight:600;color:var(--fg-3);opacity:.75;text-decoration:line-through;
}
.pricebox .sub{font-size:12.5px;color:var(--fg-2);margin-top:4px}

.opt{margin-bottom:14px}
.opt .lbl{font-size:12.5px;font-weight:700;margin-bottom:7px;display:flex;gap:5px;align-items:center}
.opt .lbl .req{color:var(--price)}
.optrow{display:flex;flex-wrap:wrap;gap:8px}
.obtn{border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13px;font-weight:650;
  color:var(--fg-2);text-align:left;line-height:1.25;position:relative;min-height:44px}
.obtn small{display:block;font-size:11px;font-weight:500;color:var(--fg-3);margin-top:1px}
.obtn.on{border-color:var(--price);color:var(--price);background:var(--price-soft)}
.obtn.on small{color:var(--price);opacity:.8}
.obtn.on::after{content:"✓";position:absolute;top:-7px;right:-7px;width:18px;height:18px;border-radius:50%;
  background:var(--price);color:#fff;font-size:11px;display:grid;place-items:center}
.obtn:disabled{opacity:.4;text-decoration:line-through;cursor:not-allowed}

.buy{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.btn{min-height:50px;border-radius:12px;font-weight:750;font-size:15px;display:grid;place-items:center;
  line-height:1.2;text-align:center;padding:8px 12px}
.btn .s{display:block;font-size:11px;font-weight:500;opacity:.78;margin-top:2px}
.btn-primary{background:var(--price);color:#fff}
.btn-outline{border:1.5px solid var(--price);color:var(--price)}
.btn-ghost{border:1.5px solid var(--line);color:var(--fg)}
.btn-full{grid-column:1/-1}

.perks{margin-top:16px;border-top:1px solid var(--line-2);padding-top:14px;display:flex;flex-direction:column;gap:9px}
.perk{display:flex;gap:10px;font-size:13px;color:var(--fg-2)}
.perk b{color:var(--fg);font-weight:650}
.perk .ic{color:var(--ok);flex:none}

.stores{margin-top:14px;background:var(--bg);border-radius:var(--r);padding:12px}
.store{display:flex;gap:10px;padding:8px 0;font-size:12.5px;border-bottom:1px dashed var(--line);align-items:center}
.store:last-child{border:0}
.store .st{margin-left:auto;font-size:11px;font-weight:700;color:var(--ok);background:var(--ok-soft);
  padding:3px 8px;border-radius:6px;white-space:nowrap}
.store .st.no{color:var(--fg-3);background:var(--line-2)}
a.st{text-decoration:none}

.panel{background:#fff;border-radius:var(--r-lg);padding:18px;box-shadow:var(--sh-1);margin-top:20px}
.panel h3{margin:0 0 14px;font-size:16px}
.badgerow{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.badgerow .flag{font-size:12px;padding:5px 10px}

.spectbl{width:100%;border-collapse:collapse;font-size:13.5px}
.spectbl th,.spectbl td{text-align:left;padding:9px 0;border-bottom:1px solid var(--line-2);vertical-align:top}
.spectbl th{width:170px;color:var(--fg-2);font-weight:600}
.spectbl tr:last-child th,.spectbl tr:last-child td{border:0}

.prose p{margin:0 0 12px;color:var(--fg-2)}
.prose ul{list-style:disc;padding-left:20px;color:var(--fg-2);margin:0 0 12px}
.prose li{margin-bottom:4px}
.prose img{border-radius:var(--r);margin:12px 0}

/* Thanh liên hệ cố định trên mobile */
.mbuy{display:none}

/* ============================================================
   FOOTER
   ============================================================ */
.ft{background:var(--ink);color:#C6CCD6;margin-top:36px;padding:34px 0 0}
.ft .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.3fr;gap:28px;padding-bottom:26px}
.ft h5{color:#fff;font-size:13px;letter-spacing:.06em;text-transform:uppercase;margin:0 0 12px}
.ft li{padding:4px 0;font-size:13.5px}
.ft a:hover{color:var(--brand)}
.ft .logo{margin-bottom:12px}
.ft-about{font-size:13px;color:#98A1AE;margin:0 0 12px}
.paylist{display:flex;gap:8px;flex-wrap:wrap}
.paylist .pill{border-color:#2A323E;color:#C6CCD6}
.ft .br{font-size:13px;padding:8px 0;border-bottom:1px solid #212934}
.ft .br:last-child{border:0}
.ft .br b{display:block;color:#fff;font-weight:600}
.ft .br span{color:var(--brand);font-weight:600}
.ft .bottom{border-top:1px solid #212934;padding:14px 0;font-size:12px;color:#79828F;
  display:flex;gap:16px;flex-wrap:wrap}

/* ============================================================
   BIẾN THỂ THIẾT KẾ
   Điều khiển bằng class trên <body>, đặt trong
   Tuỳ biến → VioStore → Thiết kế.
   Biến màu (--brand, --price…) do inc/customizer.php in ra ở <head>.
   ============================================================ */

/* ---------- Kiểu nút ---------- */
.vio-btn-solid .btn-primary,
.vio-btn-solid .cardbtn,
.vio-btn-solid .checkout-button,
.vio-btn-solid #place_order{background:var(--price);color:var(--price-ink);border:0}

.vio-btn-outline .btn-primary,
.vio-btn-outline .cardbtn,
.vio-btn-outline .checkout-button,
.vio-btn-outline #place_order{
  background:#fff;color:var(--price);border:2px solid var(--price)}

.vio-btn-gradient .btn-primary,
.vio-btn-gradient .cardbtn,
.vio-btn-gradient .checkout-button,
.vio-btn-gradient #place_order{
  background:linear-gradient(135deg,var(--price),rgba(var(--brand-rgb),.95));
  color:var(--price-ink);border:0}

.vio-btn-raised .btn-primary,
.vio-btn-raised .cardbtn,
.vio-btn-raised .checkout-button,
.vio-btn-raised #place_order{
  background:var(--price);color:var(--price-ink);border:0;
  box-shadow:0 4px 0 rgba(var(--price-rgb),.45)}
.vio-btn-raised .btn-primary:active,
.vio-btn-raised .cardbtn:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(var(--price-rgb),.45)}

.vio-btn-soft .btn-primary,
.vio-btn-soft .cardbtn,
.vio-btn-soft .checkout-button,
.vio-btn-soft #place_order{
  background:rgba(var(--price-rgb),.12);color:var(--price);border:0;font-weight:800}

/* Nút "Chọn tuỳ chọn" (.cardbtn-opt) luôn giữ dạng viền, bất kể Customizer
   chọn kiểu nút nào — theo đúng bản thiết kế: nền TRẮNG, chỉ khi rê chuột mới
   đổi sang chữ đỏ + viền đỏ.

   Vì sao phải lặp lại ở đây: các khối .vio-btn-* phía trên có specificity
   (0,2,0), cao hơn .cardbtn-opt (0,1,0) ở phần thẻ sản phẩm, nên chúng thắng và
   tô đặc nút. Phải viết TRÙNG DẠNG selector (cũng 2 class) rồi đặt sau để thắng
   nhờ thứ tự nạp — hạ xuống .cardbtn-opt đơn thuần là thua lại ngay.
   box-shadow:none để gỡ bóng của .vio-btn-raised, font-weight để gỡ 800 của
   .vio-btn-soft. */
.vio-btn-solid .cardbtn-opt,
.vio-btn-outline .cardbtn-opt,
.vio-btn-gradient .cardbtn-opt,
.vio-btn-raised .cardbtn-opt,
.vio-btn-soft .cardbtn-opt{
  background:#fff;border:1.5px solid var(--line);color:var(--fg-2);
  font-weight:700;box-shadow:none}
.vio-btn-solid .cardbtn-opt:hover,
.vio-btn-outline .cardbtn-opt:hover,
.vio-btn-gradient .cardbtn-opt:hover,
.vio-btn-raised .cardbtn-opt:hover,
.vio-btn-soft .cardbtn-opt:hover{
  background:#fff;border-color:var(--price);color:var(--price)}

/* ---------- Hình dáng ---------- */
.vio-shape-square .btn,.vio-shape-square .cardbtn,.vio-shape-square .cta,
.vio-shape-square .chip,.vio-shape-square .pill,.vio-shape-square .obtn,
.vio-shape-square .paybtn,.vio-shape-square .button,.vio-shape-square #place_order{border-radius:0}

.vio-shape-soft .btn,.vio-shape-soft .cardbtn,.vio-shape-soft .cta,
.vio-shape-soft .obtn,.vio-shape-soft .paybtn{border-radius:var(--r)}

.vio-shape-pill .btn,.vio-shape-pill .cardbtn,.vio-shape-pill .cta,
.vio-shape-pill .obtn,.vio-shape-pill .paybtn,
.vio-shape-pill .button,.vio-shape-pill #place_order{border-radius:999px}

/* ---------- Kích cỡ ---------- */
.vio-bsize-sm .btn,.vio-bsize-sm .checkout-button,.vio-bsize-sm #place_order{min-height:42px;font-size:14px}
.vio-bsize-sm .cardbtn{min-height:34px;font-size:12.5px}
.vio-bsize-sm .cta{min-height:40px;font-size:13.5px}

.vio-bsize-lg .btn,.vio-bsize-lg .checkout-button,.vio-bsize-lg #place_order{min-height:58px;font-size:16.5px}
.vio-bsize-lg .cardbtn{min-height:44px;font-size:14px}
.vio-bsize-lg .cta{min-height:52px;font-size:16px}

/* ---------- Hiệu ứng rê chuột ---------- */
.vio-hover-lift .btn,.vio-hover-lift .cardbtn,.vio-hover-lift .cta{transition:transform .16s,box-shadow .16s}
.vio-hover-lift .btn:hover,.vio-hover-lift .cardbtn:hover,.vio-hover-lift .cta:hover{
  transform:translateY(-2px);box-shadow:var(--sh-2)}

.vio-hover-fill .btn,.vio-hover-fill .cardbtn,.vio-hover-fill .cta{transition:filter .16s}
.vio-hover-fill .btn:hover,.vio-hover-fill .cardbtn:hover,.vio-hover-fill .cta:hover{filter:brightness(.9)}

.vio-hover-scale .btn,.vio-hover-scale .cardbtn,.vio-hover-scale .cta{transition:transform .16s}
.vio-hover-scale .btn:hover,.vio-hover-scale .cardbtn:hover,.vio-hover-scale .cta:hover{transform:scale(1.03)}

.vio-hover-glow .btn,.vio-hover-glow .cardbtn,.vio-hover-glow .cta{transition:box-shadow .2s}
.vio-hover-glow .btn-primary:hover,.vio-hover-glow .cardbtn:hover{box-shadow:0 0 0 4px rgba(var(--price-rgb),.25)}
.vio-hover-glow .cta:hover{box-shadow:0 0 0 4px rgba(var(--brand-rgb),.35)}

.vio-hover-none .btn,.vio-hover-none .cardbtn,.vio-hover-none .cta{transition:none}
.vio-hover-none .btn:hover,.vio-hover-none .cardbtn:hover,.vio-hover-none .cta:hover{transform:none;filter:none}

/* ---------- Kiểu thẻ sản phẩm ---------- */
.vio-card-shadow .pcard{box-shadow:var(--sh-1);border:0}
.vio-card-border .pcard{box-shadow:none;border:1px solid var(--line)}
.vio-card-border .pcard:hover{border-color:var(--price);transform:none;box-shadow:none}
.vio-card-flat .pcard{box-shadow:none;border:0;background:transparent;--pcard-pad:0 0 12px}
.vio-card-flat .pcard:hover{transform:none;box-shadow:none}
.vio-card-flat .pcard .thumb{background:var(--line-2)}
.vio-card-raised .pcard{box-shadow:0 6px 0 var(--line);border:1px solid var(--line)}
.vio-card-raised .pcard:hover{transform:translateY(-3px);box-shadow:0 9px 0 var(--line)}

/* ---------- Nút trong thẻ ---------- */
.vio-cardbtn-hide .cardbtn{display:none}
.vio-cardbtn-hover .cardbtn{opacity:0;transform:translateY(4px);transition:opacity .16s,transform .16s}
.vio-cardbtn-hover .pcard:hover .cardbtn,
.vio-cardbtn-hover .pcard:focus-within .cardbtn{opacity:1;transform:none}
@media (hover:none){
  /* Không có chuột thì "hiện khi rê" nghĩa là không bao giờ hiện. */
  .vio-cardbtn-hover .cardbtn{opacity:1;transform:none}
}

/* ---------- Ẩn bớt thông tin trong thẻ ---------- */
.vio-hide-specs .pcard .specs{display:none}
.vio-hide-rating .pcard .foot .stars,
.vio-hide-rating .pcard .foot .stars + b{display:none}
.vio-hide-sold .pcard .foot .sold{display:none}

/* ============================================================
   RESPONSIVE — mobile · tablet · desktop · safe-area
   Breakpoints: 1200 / 1080 / 860 / 640 / 480 / 380
   ============================================================ */

/* Bảng / panel không tràn ngang */
.panel,.spectbl,.woocommerce table.shop_table{max-width:100%}
/* Bài viết trải hết bề ngang `.wrap` trên desktop (trước đây khoá 80ch ≈ 647px
   theo bản demo, user thấy hẹp). `.panel{max-width:100%}` ở trên cùng độ ưu
   tiên nên vẫn phải ghi lại ở đây cho chắc. */
.panel.page-article{max-width:100%}
/* KHÔNG đặt display:block cho .spectbl.
   <table> mà `display:block` thì phần ruột bảng sinh ra một hộp bảng ẩn danh
   co lại vừa nội dung, trong khi hộp block vẫn rộng 100%. Hậu quả:
   `border-bottom` của từng hàng chỉ dài bằng chữ, không hết bề ngang khung.
   Đo trên trang thật: khung rộng 748px nhưng hàng chỉ 302px — đường kẻ hụt 446px.
   Luật cũ đặt display:block để cuộn ngang, nhưng bảng này chỉ có 2 cột
   nhãn/giá trị và chữ tự xuống dòng nên không cần cuộn. */
.spectbl{width:100%}
.panel .spectbl{width:100%}
/* Chuỗi dài không dấu cách (mã máy, URL) thì bẻ dòng thay vì đội bảng ra. */
.spectbl td{overflow-wrap:anywhere}

/* Touch target tối thiểu ~44px cho nút chính */
.cat,.chip,.obtn,.cardbtn,.filters-toggle{min-height:36px}
.btn,.cta,.hbtn,.paybtn{min-height:44px}

/* ---------- Laptop / màn vừa (≤1200) ---------- */
@media (max-width:1200px){
  .pdp{grid-template-columns:minmax(0,1fr) 360px;gap:20px}
  .mega{grid-template-columns:200px 1fr 220px;gap:18px;padding:16px}
  .mega .series{grid-template-columns:repeat(2,1fr)}
  .mega .series .serie-kids{grid-template-columns:repeat(2,1fr)}
}

/* ---------- Tablet ngang / laptop nhỏ (≤1080) ---------- */
@media (max-width:1080px){
  .pdp{grid-template-columns:minmax(0,1fr) 320px}
  .plp{grid-template-columns:200px minmax(0,1fr);gap:16px}
  .ft .cols{grid-template-columns:1fr 1fr}
  .hero-main h1{font-size:30px}
  .trust{grid-template-columns:repeat(2,1fr)}
  ul.products,.grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}
}

/* ---------- Tablet dọc / mobile lớn (≤860) — layout chính mobile ---------- */
@media (max-width:860px){
  :root{--hdr-h:auto;--logo-h:34px;--logo-mark:34px;--logo-mw:140px}

  .topbar .wrap{height:auto;min-height:32px;padding:6px 0;flex-wrap:wrap;gap:6px 12px}
  .topbar .usps span:nth-child(n+3){display:none}
  .topbar-links{font-size:11.5px;gap:10px}
  .topbar-links a:first-child{display:none}

  .hdr{position:sticky;top:0}
  .hdr .wrap{
    padding-top:10px;padding-bottom:10px;flex-wrap:wrap;gap:10px;
    align-items:center;
  }
  .logo{max-width:min(52vw,200px)}
  .logo .txt b{font-size:16px}
  .logo .txt small{font-size:9px;letter-spacing:.08em}
  .hsearch{order:3;flex-basis:100%;max-width:none}
  .hsearch input[type=search]{height:44px}
  .hbtn{padding:8px 8px;min-width:44px;min-height:44px}
  .hbtn .l1{display:none}
  .hbtn .l2{font-size:11.5px;max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .hact{gap:0;flex:none;margin-left:auto}
  /* Ẩn “cửa hàng” trên mobile — giữ gọi · zalo · giỏ */
  .hact .hbtn-stores{display:none}
  .hact .hbtn.call .l2{max-width:88px}

  .catbar{position:sticky;top:0;z-index:89}
  .catbar .wrap{
    height:44px;gap:4px;
    scroll-snap-type:x proximity;
    -webkit-overflow-scrolling:touch;
    padding-bottom:2px;
  }
  .cat{scroll-snap-align:start;height:36px;padding:0 12px;font-size:13px}
  .mega{display:none !important}   /* mobile: cuộn ngang catbar, không mega */

  .page-pad{padding-top:12px;padding-bottom:12px}

  .hero{grid-template-columns:minmax(0,1fr);margin:10px 0}
  .hero-main{padding:20px 18px;min-height:auto;border-radius:var(--r-lg)}
  .hero-main h1{font-size:clamp(22px,6.2vw,28px);max-width:none}
  .hero-main p{font-size:14px}
  .hero-cta .cta{flex:1 1 auto;justify-content:center;min-height:46px}
  .hero-side{flex-direction:row;gap:10px}
  .promo{padding:14px;min-height:88px}
  .trust{grid-template-columns:1fr 1fr;gap:10px}
  .trust .t{padding:12px}

  .pdp,.plp{grid-template-columns:minmax(0,1fr)}
  .pdp-media,.pdp .buybox,.pdp-detail{grid-column:1;grid-row:auto}
  .buybox{position:static;padding:16px;margin-top:4px}
  .gallery .big{aspect-ratio:1;min-height:0}
  .gallery .thumbs{gap:6px}
  .gthumb{width:56px;height:56px}
  .spectbl th{width:38%;min-width:100px}
  .optrow{gap:8px}
  .obtn{min-height:42px;padding:8px 12px}

  ul.products,.grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
  }
  .pcard{--pcard-pad:10px;--pcard-title:13px;border-radius:12px}
  .pcard h3{line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .cardbtn{min-height:40px;font-size:13px}

  /* Bộ lọc: drawer trượt từ trái + safe area */
  .filters{
    position:fixed;
    top:0;bottom:0;left:0;
    width:min(88vw,340px);
    max-width:100%;
    z-index:200;border-radius:0;
    overflow-y:auto;-webkit-overflow-scrolling:touch;
    transform:translateX(-105%);
    transition:transform .22s ease;
    box-shadow:var(--sh-3);
    padding-left:max(14px, env(safe-area-inset-left));
    padding-right:14px;
    padding-bottom:max(16px, env(safe-area-inset-bottom));
  }
  .filters.open{transform:none}
  .filters-head{display:flex;align-items:center;justify-content:space-between;
    padding:14px 0 10px;border-bottom:1px solid var(--line-2);position:sticky;top:0;background:#fff;z-index:1}
  .filters-close{font-size:18px;width:44px;height:44px;border-radius:50%;background:var(--line-2);display:grid;place-items:center}
  .filters-toggle{display:inline-flex;min-height:40px}
  body.filters-open{overflow:hidden;touch-action:none}
  body.filters-open::after{
    content:"";position:fixed;inset:0;background:rgba(14,17,22,.45);z-index:150;
    backdrop-filter:blur(1px);
  }

  .toolbar{gap:8px}
  /* Cũng phải 2 class: luật đè Woo ở dòng ~707 là (0,2,0), luật 1 class ở đây
     sẽ thua và dòng "Hiển thị…" vẫn bị đẩy sang phải trên điện thoại. */
  .woocommerce .woocommerce-result-count,
  .woocommerce-page .woocommerce-result-count{width:100%;margin:0}
  .woocommerce-result-count{width:100%;margin:0;font-size:12.5px}
  .woocommerce-ordering{flex:1;min-width:0}
  .woocommerce-ordering select{width:100%;max-width:100%;min-height:40px}

  .buy{grid-template-columns:1fr}

  /* Thanh mua đáy + tai thỏ / home indicator */
  .mbuy{
    display:flex;position:fixed;bottom:0;left:0;right:0;z-index:140;background:#fff;
    box-shadow:0 -6px 20px rgba(14,17,22,.12);
    padding:9px 12px calc(9px + env(safe-area-inset-bottom));
    gap:8px;align-items:center;
  }
  .mbuy .p{
    font-weight:850;color:var(--price);font-size:15px;line-height:1.15;flex:0 1 auto;
    max-width:34%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .mbuy .btn{min-height:46px;font-size:13.5px;flex:1;padding:0 8px}
  .mbuy .mcall,.mbuy .mcart{flex:0 0 48px;padding:0;font-size:18px;min-width:48px}
  body.single-product{padding-bottom:calc(76px + env(safe-area-inset-bottom))}

  .checkout .col2-set{grid-template-columns:1fr}
  /* Bảng giỏ hàng trên mobile do woocommerce-smallscreen.css lo: ẩn thead, xếp
     mỗi ô thành một dòng và in nhãn bằng `td::before{content:attr(data-title)}`
     — nhãn tiếng Việt lấy từ data-title trong woocommerce/cart/cart.php.
     Selector của nó là `.woocommerce table.shop_table_responsive tr td` nên
     mọi rule dạng `.shop_table tr` ở đây đều thua; chỉ chỉnh phần còn thiếu. */
  .woocommerce-cart-form__contents .product-name .variation{text-align:right}
  /* woocommerce-smallscreen.css ẩn hẳn ô ảnh trên mobile; bản demo vẫn hiện.
     Rule của nó là `.woocommerce #content table.cart .product-thumbnail` — CÓ ID
     nên phải kèm `#content` mới đè nổi. `text-align` cũng cần !important vì bản
     gốc dùng !important. */
  #content .woocommerce table.shop_table td.product-thumbnail{
    display:block;width:auto;padding:12px 12px 0;text-align:left!important}
  .vio-cart-actions-in{flex-direction:column;align-items:stretch}
  .shop_table td.actions .coupon .input-text{width:100%}
  .vio-toast{bottom:calc(84px + env(safe-area-inset-bottom));left:12px;right:12px;max-width:none}

  .ft{padding-bottom:max(24px, env(safe-area-inset-bottom))}
  .ft .cols{grid-template-columns:1fr;gap:20px}
  .ft .bottom{flex-direction:column;align-items:flex-start;gap:6px;font-size:12px}

  .postgrid{grid-template-columns:1fr}
  .vio-modal-box{width:min(100%,420px);margin:12px;max-height:min(90vh,640px)}
  .sec-head{flex-wrap:wrap;gap:8px}
  .sec-head h2{font-size:18px}
}

/* ---------- Phone thường (≤640) ---------- */
@media (max-width:640px){
  .hero-side{flex-direction:column}
  .trust .t span{font-size:12px}
  .hact .hbtn.call span{display:none} /* icon only cho gọn */
  .hact .hbtn.call{justify-content:center}
  .hact .hbtn.cart .l2{display:none}
  .catbar .wrap{padding-left:4px;padding-right:4px}
  .promo b{font-size:14px}
  .price-line .price{font-size:26px}
  .paybtn{padding:10px 12px}
}

/* ---------- Phone nhỏ (≤520) ---------- */
@media (max-width:520px){
  .trust{grid-template-columns:1fr}
  .archive-head h1{font-size:18px}
  .buybox h1{font-size:17px;line-height:1.25}
  .price-line .price{font-size:22px}
  .hero-main{padding:16px}
  .hero-cta{flex-direction:column}
  .hero-cta .cta{width:100%}
  .mbuy .p{font-size:14px;max-width:30%}
  .gthumb{width:48px;height:48px}
  .notfound{padding:20px 16px}
}

/* ---------- Phone rất nhỏ / fold hẹp (≤380) ---------- */
@media (max-width:380px){
  ul.products,.grid{gap:8px}
  .pcard{--pcard-pad:8px;--pcard-title:12px}
  .cardbtn{font-size:12px;min-height:38px}
  .hbtn{padding:6px}
  .wrap{padding-left:12px;padding-right:12px}
  .mbuy{gap:6px;padding-left:8px;padding-right:8px}
  .mbuy .btn{font-size:12.5px}
}

/* ---------- Landscape phone: bớt chiếm chiều dọc ---------- */
@media (max-width:860px) and (max-height:430px) and (orientation:landscape){
  .hero-main{min-height:0;padding:14px 16px}
  .hero-main h1{font-size:20px}
  .mbuy{padding-top:6px;padding-bottom:6px}
  body.single-product{padding-bottom:60px}
  .gallery .big{max-height:42vh}
}

/* ---------- Desktop lớn: giữ grid sp rộng hơn ---------- */
@media (min-width:1081px){
  ul.products,.grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
}
@media (min-width:1400px){
  .pdp{grid-template-columns:minmax(0,1fr) 420px;gap:28px}
}

/* Hover chỉ khi có chuột thật — tránh sticky hover trên cảm ứng */
@media (hover:none){
  .pcard:hover{transform:none}
  .btn:hover,.cardbtn:hover,.cta:hover{transform:none}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none !important;animation:none !important}
}

/* In ấn / lưu PDF — ẩn chrome */
@media print{
  .topbar,.hdr,.catbar,.mbuy,.vio-chat,.vio-totop,.filters,.hact,.hsearch{display:none !important}
  body.single-product{padding:0 !important}
  .buybox{position:static;box-shadow:none;border:1px solid #ccc}
  a[href]::after{content:""}
}

/* ------------------------------------------------------------------
   Gỡ layout float của WooCommerce trên MOBILE.

   Khối reset ở trên dùng selector `.woocommerce ul.products li.product`
   — specificity (0,3,2). Nhưng woocommerce-smallscreen.css (nạp kèm
   media="only screen and (max-width:768px)") lại dùng
   `.woocommerce ul.products[class*="columns-"] li.product` — (0,4,2),
   cao hơn, nên nó thắng và ép lại float:left;width:48%.

   Trong grid container, float bị bỏ qua nhưng width:48% thì KHÔNG: thẻ co
   còn 48% bề rộng ô lưới của chính nó, khiến giá vỡ giữa con số
   ("6,390,0" / "00đ"), nút xuống 2 dòng và ảnh bị bóp.

   Vì thế phải lặp lại đúng bộ selector của Woo để bằng specificity.
   ------------------------------------------------------------------ */
@media screen and (max-width:768px){
  .woocommerce ul.products[class*="columns-"] li.product,
  .woocommerce-page ul.products[class*="columns-"] li.product{
    float:none;width:auto;margin:0;padding:var(--pcard-pad,12px);
  }
  .woocommerce ul.products[class*="columns-"] li.product:nth-child(2n),
  .woocommerce-page ul.products[class*="columns-"] li.product:nth-child(2n){
    float:none;margin-right:0;
  }
  .woocommerce ul.products[class*="columns-"] li.product:nth-child(2n+1),
  .woocommerce-page ul.products[class*="columns-"] li.product:nth-child(2n+1){
    clear:none;
  }

  /* Giá là số dài, không được ngắt giữa chừng. */
  .price-row,.pcard .price,.price-row .price{white-space:nowrap}
}

/* ==================================================================
   TRANG THANH TOÁN
   Bám bản demo: trái = thông tin nhận hàng, phải = đơn hàng + thanh toán.
   Phần khung thẻ (.woocommerce-billing-fields, .woocommerce-checkout-review-order)
   và lưới .checkout .col2-set nằm ở khối "Form thanh toán" phía trên.
   ================================================================== */
.vio-co-col{min-width:0}
.vio-co-side{display:flex;flex-direction:column}

/* Bảng "Đơn hàng của bạn" nằm sẵn trong thẻ trắng — không lồng thêm nền/đổ bóng. */
.woocommerce table.shop_table.vio-review{background:#fff;box-shadow:var(--sh-1);border-radius:var(--r-lg);
  border-collapse:collapse;font-size:14px;margin:0;overflow:hidden}
.woocommerce table.vio-review th,.woocommerce table.vio-review td{padding:13px 16px;
  border-bottom:1px solid var(--line-2);border-top:0;vertical-align:top}
.woocommerce table.vio-review th{text-align:left;font-weight:600;color:var(--fg-2)}
.woocommerce table.vio-review td{text-align:right;font-weight:700;white-space:nowrap}
.woocommerce table.vio-review tbody th{font-weight:600;color:var(--fg-2);line-height:1.45}
.vio-review .product-quantity{color:var(--fg-3);font-weight:700;white-space:nowrap}
.vio-review .product-meta{display:block;margin-top:3px;font-size:11.5px;color:var(--fg-3);line-height:1.45}
.vio-review tfoot th,.vio-review tfoot td{color:var(--fg-2)}
.woocommerce table.vio-review .order-total th{color:var(--fg);font-weight:800;font-size:15px}
.woocommerce table.vio-review .order-total td{font-size:20px;color:var(--price);font-weight:850;letter-spacing:-.02em}
.woocommerce table.vio-review tfoot tr:last-child th,.woocommerce table.vio-review tfoot tr:last-child td{border-bottom:0}

.vio-co-back{display:inline-block;margin-top:14px;font-size:13px;color:var(--fg-3);text-decoration:none}
.vio-co-back:hover{color:var(--brand)}

/* Ô quốc gia cố định VN — giữ trong DOM cho WooCommerce, ẩn khỏi mắt khách. */
.vio-hidden-field{display:none!important}
.woocommerce-invalid input,.woocommerce-invalid select{border-color:var(--price)}

#payment .wc_payment_method:has(input:checked){border-color:var(--price);background:var(--price-soft)}

/* Nút đặt hàng: bản demo là nút ĐỎ rộng theo chữ (inline-flex), một dòng,
   không phải nút full-width. */
.woocommerce #payment .vio-co-btn,
.vio-co-btn{display:inline-flex;align-items:center;justify-content:center;width:auto;
  min-height:48px;padding:0 22px;border-radius:12px;
  background:var(--price);color:#fff;font-size:15px;font-weight:750;line-height:1.55}
/* Bọc nút là `.form-row` (flex column) nên align-items mặc định `stretch` kéo
   nút rộng hết hàng; demo để nút vừa bằng chữ. */
.vio-co-submit{align-items:flex-start}
.vio-co-note{font-size:12px;color:var(--fg-2);line-height:1.55;margin:10px 0 12px}
.vio-co-note a{color:var(--fg-2);text-decoration:underline}

/* ==================================================================
   TRANG TÀI KHOẢN
   Cùng ngôn ngữ với trang chủ: thẻ trắng bo 16, nút đỏ, chữ phụ xám.
   ================================================================== */
.vio-acc-card{padding:18px 20px}
.vio-acc-h{font-size:16px;font-weight:800;margin:0 0 6px;letter-spacing:-.01em}
.vio-acc-lead{font-size:13px;color:var(--fg-2);margin:0 0 14px;line-height:1.55}

/* --- chưa đăng nhập: hai thẻ --- */
.vio-acc-login{display:grid;gap:16px;align-items:start}
.vio-acc-login-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.vio-acc-login .form-row{display:flex;flex-direction:column;gap:6px;margin:0 0 13px}
.vio-acc-login label{font-size:12.5px;font-weight:650;color:var(--fg-2)}
.vio-acc-login .required{color:var(--price)}
.vio-acc-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:4px}
.vio-acc-remember{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;
  font-size:13px;font-weight:500;color:var(--fg-2);margin:0}
.vio-acc-remember input{width:17px;height:17px;accent-color:var(--price)}
/* Nút của WooCommerce mặc định là xám bo 3px; kéo về nút của theme.
   `.woocommerce button.button` thắng class `.btn` nên phải chỉ rõ như dưới. */
.woocommerce .vio-acc-btn.btn{display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;padding:0 20px;border:0;border-radius:12px;
  font-size:14.5px;font-weight:750;line-height:1;cursor:pointer}
.woocommerce .vio-acc-btn.btn-primary{background:var(--price);color:#fff}
.woocommerce .vio-acc-btn.btn-primary:hover{background:var(--price);filter:brightness(1.06)}
.woocommerce .vio-acc-btn.btn-ghost{background:#fff;color:var(--fg);border:1.5px solid var(--line)}
.woocommerce .vio-acc-btn.btn-ghost:hover{background:#fff;border-color:var(--price);color:var(--price)}
.vio-acc-login .lost_password{margin:12px 0 0;font-size:13px}
.vio-acc-login .lost_password a{color:var(--fg-3)}
.vio-acc-login .lost_password a:hover{color:var(--price)}
.vio-acc-help{margin-top:16px;font-size:13px;color:var(--fg-2);line-height:1.6}
.vio-acc-help a{color:var(--price)}

/* --- đã đăng nhập: menu trái + nội dung phải --- */
.vio-acc-grid{display:grid;grid-template-columns:250px minmax(0,1fr);gap:16px;align-items:start}
/* woocommerce-layout.css thả `float:left;width:30%` lên menu và `width:68%` lên
   nội dung. Trong lưới, hai % đó tính theo BỀ RỘNG CỘT nên menu co còn 75px.
   Selector của nó là `.woocommerce-account .woocommerce-MyAccount-navigation`
   (2 class) và nạp sau main.css — phải kèm `#content` mới đè nổi. */
#content .woocommerce-MyAccount-navigation,
#content .woocommerce-MyAccount-content{float:none;width:auto;margin:0}
.vio-acc-nav{padding:10px}
.vio-acc-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.vio-acc-nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;
  font-size:14px;font-weight:600;color:var(--fg);text-decoration:none}
.vio-acc-nav a:hover{background:var(--line-2)}
.vio-acc-nav .is-active a{background:var(--price-soft);color:var(--price)}
.vio-acc-ico{font-size:15px;line-height:1;width:20px;text-align:center;flex:none}

.vio-acc-hello{margin-bottom:16px}
.vio-acc-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.vio-acc-tile{display:flex;flex-direction:column;gap:4px;padding:16px;border-radius:var(--r);
  border:1px solid var(--line);text-decoration:none;color:var(--fg);background:#fff;
  transition:border-color .15s,box-shadow .15s}
.vio-acc-tile:hover{border-color:var(--price);box-shadow:var(--sh-1)}
.vio-acc-tile-ico{font-size:22px;line-height:1;margin-bottom:4px}
.vio-acc-tile b{font-size:14.5px;font-weight:750}
.vio-acc-tile small{font-size:12.5px;color:var(--fg-2);line-height:1.5}

/* ---- BẢNG ĐƠN HÀNG TRONG TÀI KHOẢN ---- */

/* Thông báo / cảnh báo trong khung tài khoản — đè woocommerce.css */
.woocommerce .woocommerce-MyAccount-content .woocommerce-message,
.woocommerce .woocommerce-MyAccount-content .woocommerce-info,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-message,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-info{
  font-size:13.5px;border-radius:var(--r) !important;padding:14px 18px !important;
  border:1.5px solid var(--line) !important;background:var(--line-2) !important;
  line-height:1.6;margin:0 0 18px;display:flex;align-items:center;
  gap:12px;flex-wrap:wrap;color:var(--fg-2);box-shadow:none !important
}
.woocommerce .woocommerce-MyAccount-content .woocommerce-message::before,
.woocommerce .woocommerce-MyAccount-content .woocommerce-info::before,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-message::before,
.woocommerce-account .woocommerce-MyAccount-content .woocommerce-info::before{
  content:none !important;display:none !important
}
.woocommerce .woocommerce-MyAccount-content .woocommerce-info .button,
.woocommerce .woocommerce-MyAccount-content .woocommerce-message .button,
.woocommerce .woocommerce-MyAccount-content .woocommerce-info .wc-forward,
.woocommerce .woocommerce-MyAccount-content .woocommerce-message .wc-forward{
  margin-left:auto;padding:8px 18px !important;border-radius:var(--r-sm) !important;
  background:var(--fg) !important;color:#fff !important;font-size:13px;font-weight:700;
  border:0 !important;cursor:pointer;text-decoration:none;white-space:nowrap;
  transition:background .15s;float:none !important
}
.woocommerce .woocommerce-MyAccount-content .woocommerce-info .button:hover,
.woocommerce .woocommerce-MyAccount-content .woocommerce-message .button:hover,
.woocommerce .woocommerce-MyAccount-content .woocommerce-info .wc-forward:hover,
.woocommerce .woocommerce-MyAccount-content .woocommerce-message .wc-forward:hover{
  background:var(--ink-2) !important
}

/* Bảng đơn hàng — đè mặc định của woocommerce */
.woocommerce-MyAccount-content table.shop_table{
  width:100%;border-collapse:separate;border-spacing:0;
  border:0;border-radius:var(--r);overflow:hidden;
  font-size:14px;background:#fff;margin:0
}
.woocommerce-MyAccount-content table.shop_table thead th{
  background:var(--line-2);font-size:11.5px;text-transform:uppercase;
  letter-spacing:.07em;color:var(--fg-3);font-weight:700;
  padding:12px 16px;border-bottom:1.5px solid var(--line);
  white-space:nowrap
}
.woocommerce-MyAccount-content table.shop_table td{
  padding:14px 16px;border-bottom:1px solid var(--line-2);
  vertical-align:middle;color:var(--fg)
}
.woocommerce-MyAccount-content table.shop_table tbody tr:last-child td{
  border-bottom:0
}
.woocommerce-MyAccount-content table.shop_table tbody tr{
  transition:background .12s
}
.woocommerce-MyAccount-content table.shop_table tbody tr:hover{
  background:var(--line-2)
}

/* Mã đơn hàng */
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-number a{
  font-weight:800;color:var(--price);text-decoration:none;
  letter-spacing:-.01em
}
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-number a:hover{
  text-decoration:underline
}

/* Ngày đặt */
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-date{
  color:var(--fg-2);font-size:13.5px
}

/* Trạng thái — badge dạng pill */
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-status{
  font-size:12.5px;font-weight:700
}
/* Xóa pseudo mặc định — dùng .vio-order-badge thay thế */
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-status::before{
  content:none
}

/* Badge trạng thái có chấm màu — dùng biến --dot inline từ PHP */
.vio-order-badge{
  display:inline-flex;align-items:center;gap:7px;
  padding:4px 12px;border-radius:999px;font-size:12.5px;font-weight:700;
  background:var(--line-2);color:var(--fg);white-space:nowrap
}
.vio-order-badge::before{
  content:'';display:block;width:8px;height:8px;border-radius:50%;
  background:var(--dot, var(--fg-3));flex:none
}

/* Tổng tiền */
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-total{
  font-weight:800;color:var(--price);white-space:nowrap
}

/* Nút Xem */
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-actions a.button,
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-actions a.wc-forward{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:68px;height:36px;padding:0 16px;
  border-radius:var(--r-sm);border:1.5px solid var(--line);
  background:#fff;color:var(--fg);font-size:13px;font-weight:700;
  text-decoration:none;cursor:pointer;white-space:nowrap;
  transition:border-color .15s,color .15s,box-shadow .15s
}
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-actions a.button:hover,
.woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-actions a.wc-forward:hover{
  border-color:var(--price);color:var(--price);box-shadow:0 0 0 3px var(--price-soft)
}

/* Nút phân trang (Kế tiếp / Trở về) */
.woocommerce-MyAccount-content .woocommerce-pagination{
  margin-top:18px;display:flex;justify-content:center;gap:10px
}
.woocommerce-MyAccount-content .woocommerce-pagination a,
.woocommerce-MyAccount-content .woocommerce-pagination span,
.woocommerce-MyAccount-content .woocommerce-button--next,
.woocommerce-MyAccount-content .woocommerce-button--previous,
.woocommerce-MyAccount-content .woocommerce-Button--next,
.woocommerce-MyAccount-content .woocommerce-Button--previous{
  display:inline-flex;align-items:center;height:40px;padding:0 22px;
  border-radius:var(--r-sm);border:1.5px solid var(--line);background:#fff;
  font-size:13.5px;font-weight:700;color:var(--fg);text-decoration:none;
  transition:border-color .15s,color .15s,box-shadow .15s;cursor:pointer
}
.woocommerce-MyAccount-content .woocommerce-pagination a:hover,
.woocommerce-MyAccount-content .woocommerce-button--next:hover,
.woocommerce-MyAccount-content .woocommerce-button--previous:hover,
.woocommerce-MyAccount-content .woocommerce-Button--next:hover,
.woocommerce-MyAccount-content .woocommerce-Button--previous:hover{
  border-color:var(--price);color:var(--price);box-shadow:0 0 0 3px var(--price-soft)
}

/* Form chỉnh sửa tài khoản & địa chỉ: cùng phong cách */
.woocommerce-MyAccount-content fieldset{
  border:1.5px solid var(--line);border-radius:var(--r);
  padding:18px;margin:18px 0
}
.woocommerce-MyAccount-content fieldset legend{
  font-size:14px;font-weight:800;padding:0 8px;color:var(--fg)
}
.woocommerce-MyAccount-content .woocommerce-address-fields .form-row input,
.woocommerce-MyAccount-content .woocommerce-address-fields .form-row select,
.woocommerce-MyAccount-content .woocommerce-EditAccountForm .form-row input,
.woocommerce-MyAccount-content .woocommerce-EditAccountForm .form-row select{
  width:100%;min-height:44px;border:1.5px solid var(--line);border-radius:10px;
  padding:10px 12px;font:inherit;font-size:14.5px;background:#fff;color:var(--fg)
}
.woocommerce-MyAccount-content .woocommerce-address-fields .form-row input:focus,
.woocommerce-MyAccount-content .woocommerce-address-fields .form-row select:focus,
.woocommerce-MyAccount-content .woocommerce-EditAccountForm .form-row input:focus,
.woocommerce-MyAccount-content .woocommerce-EditAccountForm .form-row select:focus{
  outline:none;border-color:var(--price);box-shadow:0 0 0 3px var(--price-soft)
}
.woocommerce-MyAccount-content button[type=submit],
.woocommerce-MyAccount-content input[type=submit]{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;padding:0 28px;border-radius:var(--r-sm);border:0;
  background:var(--price);color:#fff;font-size:14px;font-weight:750;
  cursor:pointer;transition:filter .15s
}
.woocommerce-MyAccount-content button[type=submit]:hover,
.woocommerce-MyAccount-content input[type=submit]:hover{
  filter:brightness(1.06)
}

/* Bảng chi tiết đơn (trang xem đơn cụ thể) */
.woocommerce-MyAccount-content .woocommerce-table--order-details{
  margin-top:12px
}
.woocommerce-MyAccount-content .order-again .button{
  display:inline-flex;align-items:center;height:40px;padding:0 22px;
  border-radius:var(--r-sm);border:1.5px solid var(--price);background:var(--price-soft);
  color:var(--price);font-size:13px;font-weight:700;text-decoration:none;
  transition:background .15s
}
.woocommerce-MyAccount-content .order-again .button:hover{
  background:var(--price);color:#fff
}

/* Trạng thái đơn trong trang chi tiết */
.woocommerce-MyAccount-content mark.order-status{
  background:var(--line-2);color:var(--fg);padding:3px 10px;
  border-radius:999px;font-size:13px
}

/* Danh sách ghi chú đơn hàng */
.woocommerce-MyAccount-content .woocommerce-OrderUpdates{
  list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:10px
}
.woocommerce-MyAccount-content .woocommerce-OrderUpdate{
  padding:12px 16px;background:var(--line-2);border-radius:var(--r);
  border:1px solid var(--line);font-size:13.5px
}
.woocommerce-MyAccount-content .woocommerce-OrderUpdate-meta{
  font-size:12px;color:var(--fg-3);margin-bottom:6px
}

/* ---- trang cảm ơn ---- */
.vio-ty{max-width:720px;margin:0 auto}
.vio-ty-head{text-align:center;padding:26px 20px 22px}
.vio-ty-tick{width:62px;height:62px;margin:0 auto 14px;border-radius:999px;
  display:grid;place-items:center;background:var(--ok-soft);color:var(--ok);font-size:30px;font-weight:800}
.vio-ty-head h1{font-size:23px;font-weight:850;margin:0 0 8px;letter-spacing:-.02em}
.vio-ty-head p{font-size:14px;color:var(--fg-2);margin:0;line-height:1.6}
.vio-ty-code{display:inline-block;margin-top:14px;padding:8px 16px;border-radius:999px;
  background:var(--line-2);font-size:14px;font-weight:800;letter-spacing:.02em}
.vio-ty-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}
.vio-ty-box h3{font-size:13px;font-weight:800;margin:0 0 10px;text-transform:uppercase;
  letter-spacing:.04em;color:var(--fg-3)}
.vio-ty-box dl{margin:0;display:flex;flex-direction:column;gap:7px}
.vio-ty-box .r{display:flex;justify-content:space-between;gap:12px;font-size:13.5px}
.vio-ty-box .r dt{color:var(--fg-3);flex:none}
.vio-ty-box .r dd{margin:0;font-weight:650;text-align:right}
.vio-ty-cta{display:flex;gap:10px;justify-content:center;margin-top:20px;flex-wrap:wrap}

@media (max-width:900px){
  .vio-acc-login-2{grid-template-columns:1fr}
  /* Menu tài khoản thành hàng ngang cuộn được, nhường chỗ cho nội dung. */
  .vio-acc-grid{grid-template-columns:1fr}
  .vio-acc-nav ul{flex-direction:row;overflow-x:auto;gap:6px;-webkit-overflow-scrolling:touch}
  .vio-acc-nav a{white-space:nowrap;padding:9px 12px}

  .checkout .col2-set{grid-template-columns:1fr}
  /* Một cột: ĐƠN HÀNG lên đầu để khách xác nhận lại thứ mình mua, rồi mới tới
     form, cuối cùng là khối thanh toán — nút ĐẶT HÀNG phải nằm sau các ô nhập.
     `display:contents` để ba thẻ tự xếp trong lưới thay vì kẹt trong cột phải. */
  .checkout .col2-set .vio-co-side{display:contents}
  .checkout .col2-set .woocommerce-checkout-review-order{order:-1}
  .checkout .col2-set .vio-co-paycard{order:1}
  .vio-ty-grid{grid-template-columns:1fr}

  /* Đơn hàng responsive: bảng WooCommerce chuyển sang dạng card xếp chồng */
  .woocommerce-MyAccount-content table.shop_table thead{display:none}
  .woocommerce-MyAccount-content table.shop_table,
  .woocommerce-MyAccount-content table.shop_table tbody{display:block}
  .woocommerce-MyAccount-content table.shop_table tr{
    display:flex;flex-wrap:wrap;gap:4px 12px;padding:14px 16px;
    border-bottom:1px solid var(--line-2);align-items:center
  }
  .woocommerce-MyAccount-content table.shop_table tr:last-child{border-bottom:0}
  .woocommerce-MyAccount-content table.shop_table td{
    display:inline;padding:0;border:0;font-size:13.5px
  }
  .woocommerce-MyAccount-content table.shop_table td::before{
    content:attr(data-title);font-size:11px;text-transform:uppercase;
    letter-spacing:.05em;color:var(--fg-3);font-weight:700;
    display:block;margin-bottom:2px
  }
  .woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-number{
    font-size:15px;flex:none
  }
  .woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-actions{
    margin-left:auto;flex:none
  }
  .woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-actions a.button,
  .woocommerce-MyAccount-content table.shop_table .woocommerce-orders-table__cell-order-actions a.wc-forward{
    height:32px;min-width:auto;padding:0 14px;font-size:12px
  }
}

/* ============================================================
   BÌNH LUẬN — dùng lại tông panel/nút của trang chủ
   ============================================================ */
.vio-comments{max-width:100%}
.vio-comments .sec-head{margin-bottom:14px}
.vio-comments .sec-head h2{font-size:18px}

.vio-comments .comment-list{list-style:none;margin:0 0 6px;padding:0;display:flex;flex-direction:column;gap:12px}
.vio-comments .comment-list .children{list-style:none;margin:12px 0 0;padding:0 0 0 16px;
  border-left:2px solid var(--line-2);display:flex;flex-direction:column;gap:12px}
.vio-comments .comment-body{background:var(--line-2);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.vio-comments .comment-meta{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.vio-comments .comment-author{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:700}
.vio-comments .comment-author img.avatar{width:36px;height:36px;border-radius:50%;flex:none;background:#fff}
.vio-comments .comment-author .says{display:none}
.vio-comments .comment-metadata{margin-left:auto;font-size:12px;color:var(--fg-3)}
.vio-comments .comment-metadata a{color:var(--fg-3)}
.vio-comments .comment-content p{margin:0 0 8px;font-size:14px;color:var(--fg-2)}
.vio-comments .comment-content p:last-child{margin-bottom:0}
.vio-comments .comment-awaiting-moderation{display:inline-block;margin-bottom:8px;font-size:12px;font-weight:650;
  color:var(--price);background:var(--price-soft);border-radius:999px;padding:3px 10px}
.vio-comments .reply{margin-top:10px}
.vio-comments .reply a{display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:999px;
  border:1.5px solid var(--line);background:#fff;font-size:12.5px;font-weight:700;color:var(--fg)}
.vio-comments .reply a:hover{border-color:var(--price);color:var(--price)}
.vio-comments .bypostauthor > .comment-body{border-color:var(--brand);background:var(--brand-soft)}

.vio-comments .comment-respond{margin-top:18px;padding-top:18px;border-top:1px solid var(--line-2)}
.vio-comments .comment-list + .comment-respond,
.vio-comments .comment-list .comment-respond{border-top:0;padding-top:0}
.vio-comments .comment-list .comment-respond{margin-top:12px}
.vio-comments .comment-reply-title small{margin-left:10px;font-size:12.5px;font-weight:600}
.vio-comments .comment-reply-title small a{color:var(--info)}
.vio-cf-note{margin:0}

/* Một cột dọc — 3 ô rộng bằng nhau, xếp chồng lên nhau */
.vio-cform{display:flex;flex-direction:column;gap:14px;align-items:stretch}
.vio-cf-row{margin:0;width:100%;display:flex;flex-direction:column;gap:6px}
.vio-cf-row label{font-size:12.5px;font-weight:650;color:var(--fg-2)}
.vio-cf-row .req{color:var(--price)}
.vio-cform input[type=text],.vio-cform input[type=email],.vio-cform input[type=url],.vio-cform textarea{
  width:100%;min-height:44px;border:1.5px solid var(--line);border-radius:10px;
  padding:10px 12px;font:inherit;font-size:14.5px;background:#fff;color:var(--fg)}
.vio-cform textarea{min-height:120px;resize:vertical}
.vio-cform input:focus,.vio-cform textarea:focus{
  outline:none;border-color:var(--price);box-shadow:0 0 0 3px var(--price-soft)}
.vio-cform .comment-form-cookies-consent{display:flex;align-items:center;gap:8px;margin:0;
  font-size:13px;color:var(--fg-2)}
.vio-cform .comment-form-cookies-consent input{width:16px;height:16px;accent-color:var(--price)}
.vio-cform .comment-form-cookies-consent label{margin:0}
.vio-cform .form-submit{margin:0}
.vio-cf-submit{min-height:48px;padding:0 26px;border-radius:12px;border:0;cursor:pointer;
  background:var(--price);color:#fff;font-weight:750;font-size:15px}
.vio-cf-submit:hover{filter:brightness(1.06)}

@media (max-width:640px){
  .vio-comments .comment-metadata{margin-left:0;width:100%;order:3}
  .vio-comments .comment-list .children{padding-left:10px}
}
