/*
Theme Name: MayXanh Electronics
Theme URI: https://mayxanh.vn
Author: MayXanh Electronics
Description: Theme WordPress bán lẻ điện máy — trang chủ đầy đủ (banner, deal hot, danh mục, sản phẩm bán chạy, thương hiệu, tin tức), custom post type Sản phẩm với 48 sản phẩm mẫu, 15 trang nội dung và toàn bộ ảnh định dạng WebP. Responsive desktop / tablet / mobile.
Version: 1.0.65
Requires at least: 6.0
Tested up to: 6.6
Requires PHP: 7.4
License: GPLv2 or later
Text Domain: mayxanh
Tags: e-commerce, responsive, vietnamese, electronics
*/

*{box-sizing:border-box}
/* ⚠️ Thuộc tính hidden chỉ được UA stylesheet đặt display:none, mà LUẬT TÁC GIẢ
   luôn thắng luật UA — nên .mx-cart-body{display:flex} khiến el.hidden=true không
   giấu được gì. Đã vấp: xoá sạch giỏ mà khung giỏ vẫn nằm đó. Chốt lại một lần. */
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{background:#f1f4f8;color:#1a2332;font-family:'Be Vietnam Pro','Segoe UI',Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.6}
a{color:#0d5cd6;text-decoration:none}
a:hover{color:#0a47a8}
img{max-width:100%;height:auto;display:block}
input,button,select,textarea{font-family:inherit}
::-webkit-scrollbar{height:6px;width:6px}
::-webkit-scrollbar-thumb{background:#c9d2de;border-radius:6px}
.mx-wrap{max-width:1200px;margin:0 auto;padding:0 14px}
.mx-mi{font-family:'Material Symbols Outlined';font-weight:400;font-style:normal;line-height:1;display:inline-flex;align-items:center;justify-content:center;overflow:hidden}
@keyframes mxpulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}

/* ---------- Top bar ---------- */
.mx-topbar{background:#0a2342;color:#c4d2e6;font-size:12px}
.mx-topbar .mx-wrap{height:34px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.mx-topbar ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:22px}
.mx-topbar li{display:flex;align-items:center;gap:6px;white-space:nowrap}
.mx-topbar .mx-mi{font-size:15px;color:#5b9dff;width:16px;height:16px}
.mx-topbar strong{color:#fff;font-weight:600;white-space:nowrap}

/* ---------- Header ---------- */
.mx-header{position:sticky;top:0;z-index:40;background:#fff;box-shadow:0 1px 0 #e6e9ef}
.mx-header .mx-wrap{padding:12px 14px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.mx-logo{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.mx-logo-mark{width:38px;height:38px;border-radius:9px;background:linear-gradient(150deg,#1d74f5,#0b45a8);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.mx-logo-mark .mx-mi{font-size:22px;color:#fff;width:24px;height:24px}
.mx-logo-txt{line-height:1.05}
.mx-logo-txt b{display:block;font-size:19px;font-weight:800;color:#0a2342;letter-spacing:.01em}
.mx-logo-txt span{display:block;font-size:9.5px;font-weight:700;color:#e0281c;letter-spacing:.24em}
/* Logo chủ site tự tải lên (Tùy biến ▸ Nhận diện trang web). Ảnh thay CẢ ruột
   .mx-logo nên gap 10px giữa ô icon và chữ không còn ai dùng — để lại là thừa 10px
   bên phải logo, đủ để nhìn ra lệch.
   ⚠️ object-fit:contain là bắt buộc chứ không phải trang trí: logo quá rộng bị
   max-width kẹp lại, mà height:38px vẫn giữ nguyên → ảnh bị BÓP NGANG. contain
   biến khung 210×38 thành khung chứa, ảnh nằm vừa bên trong đúng tỉ lệ. */
.mx-logo--img{gap:0}
/* ⚠️ PHẢI viết `.mx-logo .mx-logo-img` chứ không `.mx-logo-img` trần. WooCommerce nạp
   `.woocommerce img,.woocommerce-page img{height:auto;max-width:100%}` — độ ưu tiên
   (0,1,1), hơn (0,1,0) của một tên lớp đơn. Mà MỌI trang của Woo (cửa hàng, sản phẩm,
   giỏ, thanh toán, tài khoản) đều mang lớp `woocommerce-page` trên thẻ <body>, nên ở
   những trang ấy `height:38px` của theme THUA và logo bung ra đúng cỡ gốc của tệp —
   ảnh khách tải lên là 2046×569 nên nó phủ kín đầu trang, đẩy ô tìm kiếm và cụm giỏ
   hàng rớt xuống dòng. Trang chủ không có lớp đó nên vẫn đẹp, và đó là lý do lỗi này
   sống sót: nhìn trang chủ thì không thấy gì.
   ⚠️ Đừng "sửa" bằng !important — nâng đúng độ ưu tiên thì chủ site vẫn còn đường đè
   lại bằng CSS riêng, còn !important thì bịt luôn. */
.mx-logo .mx-logo-img{display:block;width:auto;height:38px;max-width:210px;object-fit:contain}
.mx-footer .mx-logo .mx-logo-img{height:34px;max-width:190px}
.mx-search{flex:1 1 320px;min-width:240px;margin-left:68px;display:flex;height:40px;border:1.5px solid #0d5cd6;border-radius:6px;overflow:hidden;background:#fff}
.mx-search select{flex:0 0 auto;width:146px;border:0;background:#f4f7fb;color:#3d4a5c;font-size:12px;padding:0 10px 0 14px;border-right:1px solid #e2e8f0;cursor:pointer}
.mx-search input{flex:1 1 auto;min-width:0;border:0;outline:none;padding:0 12px;font-size:13px;color:#1a2332}
.mx-search button{flex:0 0 auto;border:0;background:#0d5cd6;color:#fff;font-size:13px;font-weight:600;padding:0 18px;cursor:pointer;display:flex;align-items:center;gap:6px}
.mx-search button:hover{background:#0a47a8}
.mx-search button .mx-mi{font-size:17px;width:17px;height:17px}
.mx-actions{flex:0 0 auto;display:flex;align-items:center;gap:20px}
.mx-act{display:flex;align-items:center;gap:7px;cursor:pointer;position:relative;color:#1a2332}
.mx-act .mx-mi{font-size:24px;color:#0d5cd6;width:25px;height:25px}
.mx-act b{display:block;font-size:12.5px;font-weight:600}
.mx-act small{display:block;font-size:11px;color:#7b8797}
.mx-badge{position:absolute;top:-5px;left:16px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:#e0281c;color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}

/* ---------- Nav + mega menu ---------- */
.mx-navbar{background:#fff;border-bottom:1px solid #e6e9ef}
.mx-navbar .mx-wrap{display:flex;align-items:stretch;gap:16px;padding:0 14px}
.mx-catbtn-wrap{position:relative;flex:0 0 auto}
.mx-catbtn{width:212px;background:#0d5cd6;color:#fff;border:0;border-radius:6px 6px 0 0;padding:0 14px;height:42px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;font-weight:700;letter-spacing:.02em;cursor:pointer}
.mx-catbtn .mx-mi{font-size:19px;width:20px;height:20px}
.mx-mega-panel{width:660px;flex:0 0 auto;padding:20px 24px;display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.mx-mega-panel h4{margin:0 0 4px;font-size:12.5px;font-weight:800;color:#0a2342}
.mx-mega-panel .mx-mp-sub{font-size:11px;color:#7b8797;margin-bottom:12px}
.mx-chips{display:flex;flex-wrap:wrap;gap:8px}
.mx-chips a{border:1px solid #eef1f5;border-radius:5px;padding:7px 11px;font-size:11.5px;font-weight:600;color:#3d4a5c}
.mx-chips a:hover{border-color:#0d5cd6;color:#0d5cd6}
.mx-nav{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:4px;overflow-x:auto}
.mx-nav a,.mx-nav li a{padding:0 12px;height:42px;display:inline-flex;align-items:center;font-size:13px;font-weight:600;color:#3d4a5c;white-space:nowrap;border-bottom:2px solid transparent}
.mx-nav a:hover{color:#0d5cd6;border-bottom-color:#0d5cd6}
.mx-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:4px}

/* ---------- Dropdown danh mục trên desktop (trang không phải trang chủ) ---------- */
.mx-catdrop{position:absolute;top:100%;left:0;z-index:60;width:212px;display:none}
.mx-catdrop.is-open{display:block}
/* ⚠️ .mx-sidebar bị ẩn ở ≤1080px cho bố cục trang chủ; trong dropdown thì phải
   hiện lại. Luật hai lớp này thắng nhờ ĐỘ ƯU TIÊN (0,2,0 > 0,1,0), không phụ
   thuộc thứ tự — media query không làm đổi độ ưu tiên. */
.mx-catdrop .mx-sidebar{display:block;box-shadow:0 16px 40px rgba(10,35,80,.18)}
@media (max-width:860px){.mx-catdrop{display:none!important}}

/* ---------- Mobile category drawer ---------- */
.mx-catbtn-short{display:none}
.mx-dw{position:fixed;inset:0;z-index:80;display:none}
.mx-dw.is-open{display:block}
.mx-dw-bd{position:absolute;inset:0;background:rgba(10,35,66,.5)}
.mx-dw-panel{position:absolute;inset:0;background:#fff;display:flex;flex-direction:column}
.mx-dw-hd{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid #e6e9ef}
.mx-dw-hd b{font-size:15px;font-weight:700;color:#0a2342}
.mx-dw-x{flex:0 0 auto;border:0;background:#eef1f5;color:#5d7590;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}
.mx-dw-body{flex:1 1 auto;min-height:0;display:flex}
.mx-dw-tabs{flex:0 0 41%;max-width:200px;margin:0;padding:0;list-style:none;overflow-y:auto;background:#f4f7fb;border-right:1px solid #e6e9ef}
.mx-dw-tabs button{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:0;background:none;border-bottom:1px solid #e6e9ef;padding:12px 13px;font-size:12.5px;line-height:1.35;font-weight:500;color:#3d4a5c;cursor:pointer}
/* Icon không được co, phần chữ phải xuống dòng được — nhãn dài nhất là
   "Điện thoại – Máy tính bảng" và cột chỉ rộng 41%. */
.mx-dw-tabs button>.mx-mi{flex:0 0 auto}
.mx-dw-tabs button>span{flex:1 1 auto;min-width:0}
.mx-dw-tabs button.is-on{background:#fff;color:#0d5cd6;font-weight:700;box-shadow:inset 3px 0 0 #0d5cd6}
.mx-dw-panes{flex:1 1 auto;min-width:0;overflow-y:auto;padding:16px 16px 26px}
.mx-dw-pane{display:none}
.mx-dw-pane.is-on{display:block}
.mx-dw-pane .mx-mega-panel{width:auto;padding:0;grid-template-columns:minmax(0,1fr);gap:20px}
.mx-dw-all{display:inline-block;margin-top:18px;font-size:12.5px;line-height:1.5;font-weight:700;color:#0d5cd6}
.mx-dw-all .mx-mi{vertical-align:-3px;margin-left:5px}
body.mx-noscroll{overflow:hidden}

/* ---------- Layout ---------- */
.mx-main{max-width:1200px;margin:0 auto;padding:16px 14px 0}
.mx-hero-grid{display:grid;grid-template-columns:212px minmax(0,1fr);gap:14px;align-items:start}
.mx-hero-row{display:flex;gap:14px;align-items:stretch;min-width:0}
.mx-sidebar{position:relative;background:#fff;border:1px solid #e6e9ef;border-radius:0 0 8px 8px;border-top:0}
.mx-sidebar .mx-side-item{position:relative}
.mx-sidebar a{display:flex;align-items:center;gap:9px;padding:0 12px;height:35px;border-bottom:1px solid #f0f2f6;font-size:12.5px;font-weight:500;color:#3d4a5c}
.mx-sidebar a:hover{background:#f4f8ff;color:#0d5cd6}
.mx-flyout{position:absolute;top:-1px;left:100%;z-index:50;display:none;background:#fff;box-shadow:0 16px 40px rgba(10,35,80,.18);border:1px solid #e6e9ef;border-radius:0 8px 8px 0}
.mx-side-item:hover .mx-flyout{display:flex}
.mx-sidebar .mx-mi{flex:0 0 auto;font-size:18px!important;width:19px!important;height:19px!important}
.mx-sidebar a>.mx-mi:last-child{font-size:16px!important;width:16px!important;height:16px!important;color:#b6bfcc}
.mx-sidebar span{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mx-sidebar .mx-mi{font-size:16px;color:#b6bfcc;width:16px;height:16px}

/* ---------- Hero slider ---------- */
.mx-hero{flex:1 1 auto;min-width:0;position:relative;border-radius:8px;overflow:hidden;background:#0b2b6b;min-height:300px}
.mx-hero-track{display:flex;width:100%;transition:transform .55s cubic-bezier(.4,0,.2,1)}
.mx-slide{flex:0 0 100%;min-width:100%;position:relative;min-height:300px;background:#08204f}
.mx-slide-bg{position:absolute;inset:0}
.mx-slide-bg img{width:100%;height:100%;object-fit:cover}
.mx-scrim{position:absolute;inset:0;pointer-events:none;background:linear-gradient(96deg,rgba(6,26,66,.94) 0%,rgba(6,26,66,.82) 28%,rgba(6,26,66,.34) 54%,rgba(6,26,66,0) 76%)}
.mx-slide-txt{position:relative;z-index:2;padding:26px 24px 42px;max-width:56%}
.mx-slide-txt h2{margin:0;font-size:clamp(21px,2.5vw,31px);font-weight:800;line-height:1.16;color:#fff}
.mx-slide-txt h2 em{display:block;font-style:normal;color:#ffc529}
.mx-slide-txt p{font-size:13px;line-height:1.6;color:#c3d6f5;max-width:330px;margin:12px 0 14px}
.mx-feats{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:7px}
.mx-feats li{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:500;color:#e7effc}
.mx-feats i{width:16px;height:16px;border-radius:3px;background:#2f7bef;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.mx-feats i .mx-mi{font-size:13px;color:#fff;width:13px;height:13px}
/* ⚠️ `cursor:pointer` là bắt buộc, không phải trang trí. `.mx-btn` dùng cho CẢ thẻ <a>
   lẫn thẻ <button>: thẻ <a> có href thì trình duyệt tự cho bàn tay, còn <button> thì
   mặc định là mũi tên. Nên trong ba nút mua, chỉ "TRẢ GÓP 0%" (một thẻ <a>) hiện bàn
   tay, hai nút kia hiện mũi tên — nhìn ra là hai nút ấy không bấm được. */
.mx-btn{display:inline-flex;align-items:center;gap:8px;background:#0d5cd6;color:#fff;font-size:13px;font-weight:700;padding:10px 18px;border-radius:5px;letter-spacing:.03em;cursor:pointer}
/* Nhãn có `for` là bấm được (bấm vào chữ thì con trỏ nhảy vào ô) — form đăng nhập của
   WooCommerce không tự đặt, nên chuột vẫn là mũi tên. */
.woocommerce label[for]{cursor:pointer}
.mx-btn:hover{background:#1d74f5;color:#fff}
.mx-btn .mx-mi{font-size:17px;width:17px;height:17px}
.mx-btn-light{background:#fff;color:#0a3a95;font-size:11.5px;font-weight:800;letter-spacing:.05em;padding:9px 16px;border-radius:4px;display:inline-flex;align-items:center;gap:6px}
.mx-btn-light:hover{background:#ffc529;color:#0a2342}
.mx-dots{position:absolute;left:24px;bottom:14px;display:flex;gap:6px;z-index:3}
.mx-dots button{width:7px;height:7px;border-radius:4px;border:0;padding:0;cursor:pointer;background:rgba(255,255,255,.45);transition:all .3s}
.mx-dots button.is-on{width:20px;background:#ffc529}

/* ---------- Hero side cards ---------- */
.mx-heroside{flex:0 0 200px;display:flex;flex-direction:column;gap:14px}
.mx-heroside>div{flex:1 1 0;min-height:0;background:#eaf2ff;border:1px solid #d5e4fb;border-radius:8px;padding:14px;display:flex;align-items:center;gap:10px}
.mx-heroside .mx-hs-txt{flex:1 1 auto;min-width:0}
.mx-heroside small{display:block;font-size:11.5px;color:#5d7590;font-weight:500}
.mx-heroside b{display:block;font-size:14.5px;font-weight:800;color:#0a2342;line-height:1.25}
.mx-heroside em{display:block;font-style:normal;font-size:11px;color:#6b7c94;margin-top:2px}
.mx-heroside .mx-mi{flex:0 0 auto;font-size:52px!important;width:54px!important;height:54px!important;color:#2f7bef}

/* ---------- Trust / services ---------- */
.mx-strip{margin-top:14px;background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:14px;display:flex;flex-wrap:wrap;gap:12px}
.mx-strip>div{flex:1 1 180px;display:flex;align-items:center;gap:10px;min-width:0}
.mx-strip .mx-mi{font-size:25px!important;width:26px!important;height:26px!important;color:#0d5cd6;flex:0 0 auto}
.mx-strip b{display:block;font-size:12.5px;font-weight:700;color:#1a2332}
.mx-strip small{display:block;font-size:11px;color:#7b8797}

/* ---------- Section head ---------- */
.mx-sec{margin-top:24px}
.mx-sechead{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.mx-sechead h2{margin:0;font-size:16.5px;font-weight:800;color:#0a2342;letter-spacing:.02em}
.mx-sechead .mx-all{margin-left:auto;font-size:12.5px;font-weight:600;color:#0d5cd6;display:inline-flex;align-items:center;gap:4px}
.mx-sechead .mx-all .mx-mi{font-size:16px;width:16px;height:16px}
.mx-bolt{font-size:21px;color:#ffb020;width:22px;height:22px;animation:mxpulse 1.6s ease-in-out infinite}
.mx-clock{display:flex;align-items:flex-start;gap:5px}
.mx-clock div{text-align:center}
.mx-clock b{min-width:26px;height:24px;border-radius:4px;background:#0a2342;color:#fff;font-size:13.5px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 5px}
.mx-clock small{display:block;font-size:9.5px;color:#8a95a5;margin-top:2px}

/* ---------- Deal ---------- */
.mx-dealwrap{display:flex;gap:14px;align-items:stretch}
.mx-dealpromo{flex:0 1 336px;max-width:336px;min-height:250px;border-radius:8px;overflow:hidden;background:#062a72;position:relative}
.mx-dealpromo>.mx-dp-img{position:absolute;top:0;bottom:0;right:0;left:-26%}
.mx-dealpromo>.mx-dp-img img{width:100%;height:100%;object-fit:cover}
.mx-dealpromo .mx-dp-scrim{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(7,32,88,.78) 0%,rgba(7,32,88,.42) 32%,rgba(7,32,88,.06) 58%,rgba(7,32,88,.40) 100%)}
.mx-dealpromo .mx-dp-txt{position:relative;z-index:2;height:100%;min-height:250px;padding:20px 18px;display:flex;flex-direction:column}
.mx-dealpromo small{font-size:14px;font-weight:700;color:#fff;letter-spacing:.03em}
.mx-dealpromo b{font-size:clamp(46px,7vw,62px);font-weight:800;color:#ffc529;line-height:.95;letter-spacing:-.02em}
.mx-dealpromo em{font-style:normal;font-size:12px;color:#cfe0fb;margin-top:4px}
.mx-dealpromo .mx-btn-light{margin-top:auto;align-self:flex-start}
.mx-dealcol{flex:3 1 620px;min-width:0;display:flex;flex-direction:column;gap:12px}
.mx-dealgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:12px}

/* ---------- Product card ---------- */
.mx-card{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:10px;display:flex;flex-direction:column;position:relative;transition:box-shadow .2s,transform .2s}
.mx-card:hover{box-shadow:0 8px 22px rgba(13,92,214,.14);transform:translateY(-3px)}
.mx-card .mx-tag{position:absolute;top:0;left:0;z-index:2;background:#e0281c;color:#fff;font-size:11px;font-weight:700;padding:2px 7px;border-radius:8px 0 8px 0}
.mx-card .mx-tag-top{background:#f97316;font-size:10px;font-weight:800;letter-spacing:.04em;padding:3px 8px}
.mx-card .mx-thumb{height:118px;margin-bottom:9px;background:#fff;border-radius:6px;overflow:hidden}
.mx-card .mx-thumb img{width:100%;height:100%;object-fit:contain}
.mx-card h3{margin:0 0 7px;font-size:12px;font-weight:500;line-height:1.42;color:#33404f;min-height:34px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mx-card h3 a{color:inherit}
.mx-card h3 a:hover{color:#0d5cd6}
.mx-price{font-size:14px;font-weight:800;color:#e0281c;letter-spacing:-.01em}
.mx-old{font-size:11px;color:#9aa5b4;text-decoration:line-through}
.mx-cardfoot{margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:8px;padding-top:8px}
.mx-rate{display:flex;align-items:center;gap:3px;font-size:11px;color:#6b7c94}
.mx-rate .mx-star{flex:0 0 auto}
.mx-rate b{font-weight:600;color:#33404f}
.mx-addcart{flex:0 0 auto;width:29px;height:29px;border-radius:50%;border:0;background:#0d5cd6;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.mx-addcart:hover{background:#0a47a8}
.mx-addcart .mx-mi{font-size:16px;width:16px;height:16px}

/* ---------- Category tiles ---------- */
.mx-cats{display:grid;grid-template-columns:repeat(11,minmax(0,1fr));gap:11px}
.mx-cats a{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:14px 8px 11px;display:flex;flex-direction:column;align-items:center;gap:9px;text-align:center;transition:box-shadow .2s,transform .2s}
.mx-cats a:hover{box-shadow:0 8px 20px rgba(13,92,214,.13);transform:translateY(-3px)}
.mx-cats img{width:46px;height:40px;object-fit:contain}
.mx-cats .mx-mi{font-size:33px!important;width:34px!important;height:34px!important}
.mx-cats span{font-size:11.5px;font-weight:600;color:#33404f;line-height:1.3}

/* ---------- Promo banners ---------- */
.mx-promos{margin-top:16px;display:flex;flex-wrap:wrap;gap:14px}
.mx-promo{flex:1 1 300px;min-width:0;position:relative;border-radius:8px;overflow:hidden;background:#062a72;min-height:150px}
.mx-promo>.mx-pb-img{position:absolute;inset:0}
.mx-promo>.mx-pb-img img{width:100%;height:100%;object-fit:cover}
.mx-promo .mx-pb-scrim{position:absolute;inset:0;pointer-events:none;background:linear-gradient(95deg,rgba(6,32,80,.95) 0%,rgba(6,32,80,.80) 32%,rgba(6,32,80,.24) 64%,rgba(6,32,80,0) 88%)}
.mx-promo .mx-pb-txt{position:relative;z-index:2;padding:18px;max-width:66%}
.mx-promo b{display:block;font-size:15.5px;font-weight:800;color:#fff;line-height:1.22;margin-bottom:6px}
.mx-promo p{font-size:11.5px;color:#c6d9f8;line-height:1.55;margin:0 0 12px}
.mx-promo .mx-btn-light{font-size:10.5px;padding:8px 13px}

/* ---------- Tabs ---------- */
.mx-tabs{background:#fff;border:1px solid #e6e9ef;border-radius:8px 8px 0 0;border-bottom:0;display:flex;gap:2px;overflow-x:auto;padding:0 6px}
.mx-tabs button{flex:0 0 auto;border:0;background:transparent;padding:12px 14px;font-size:12.5px;font-weight:500;color:#5d7590;cursor:pointer;border-bottom:2.5px solid transparent;white-space:nowrap}
.mx-tabs button.is-on{font-weight:700;color:#0d5cd6;border-bottom-color:#0d5cd6}
.mx-tabbody{background:#fff;border:1px solid #e6e9ef;border-radius:0 0 8px 8px;padding:14px}
.mx-pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
/* ⚠️ Luật cắt ô phải nằm trong media query CÓ CẬN, đừng để bản desktop ở gốc:
   luật gốc vẫn áp xuống mobile, mà luật mobile chỉ THÊM lệnh ẩn chứ không gỡ được
   lệnh ẩn cũ, nên mobile bị cắt theo con số của desktop. Đã vấp: mobile lẽ ra 10 ô
   thì chỉ hiện 5. Hai khối dưới đây không giao nhau nên không thể lặp lại. */
@media (min-width:641px){
  /* Mục thứ 6 của dải tiêu chí thứ hai chỉ để cân đối lưới 2 cột trên mobile;
     desktop giữ đúng 5 mục như trước. Đặt trong khối min-width để không giao với
     khối ≤640px — hai luật chồng nhau đã gây lỗi một lần ở .mx-clamp.
     ⚠️ Phải viết .mx-strip>.mx-strip-m chứ KHÔNG .mx-strip-m trần: luật nền
     .mx-strip>div{display:flex} có độ ưu tiên (0,1,1), hơn (0,1,0) của một tên
     lớp đơn — đặt trần thì lệnh ẩn thua và desktop vẫn hiện đủ 6 mục. */
  .mx-strip>.mx-strip-m{display:none}
  /* Desktop giữ nguyên 5 ô như trước khi dải Deal nâng lên 14 món — thẻ khuyến
     mãi bên cạnh dựng theo MỘT hàng sản phẩm, ba hàng là kéo nó cao gấp ba. */
  .mx-clamp>*:nth-child(n+6){display:none}
}
/* Kiểu dáng nút để ở BASE nhưng ẩn sẵn; khối mobile và khối desktop chỉ bật
   display. Trước đây toàn bộ khai báo nằm trong khối ≤640px nên desktop muốn
   dùng nút là phải chép lại cả cụm. */
/* Nút gọn theo bề ngang chữ rồi căn giữa, KHÔNG kéo hết bề ngang thân trang.
   ⚠️ Cần CẢ HAI cách căn giữa vì nút nằm trong hai kiểu khung khác nhau:
     .mx-tabpane  là block  → width:fit-content + margin auto mới co lại
     .mx-dealcol  là flex   → align-self:center mới thoát khỏi stretch
   Thiếu một trong hai thì đúng một trong hai dải vẫn kéo dài hết khung. */
.mx-more{display:none;align-items:center;justify-content:center;gap:6px;width:fit-content;max-width:100%;margin-left:auto;margin-right:auto;align-self:center;border:1px solid #d5e4fb;background:#fff;border-radius:8px;padding:11px 28px;font-size:13.5px;font-weight:700;color:#0d5cd6;cursor:pointer}
.mx-more:active{background:#f4f7fb}
.mx-tabpane .mx-more{margin-top:12px}
.mx-tabpane{display:none}
.mx-tabpane.is-on{display:block}   /* pane nay boc mot .mx-pgrid + nut, khong con tu la luoi */

/* ---------- Brands ---------- */
.mx-brands{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:12px;display:flex;align-items:center;gap:10px}
.mx-brands .mx-arrow{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:1px solid #e2e8f0;background:#fff;color:#5d7590;display:flex;align-items:center;justify-content:center;cursor:pointer}
.mx-brands .mx-arrow:hover{border-color:#0d5cd6;color:#0d5cd6}
.mx-brands .mx-arrow .mx-mi{font-size:19px;width:19px;height:19px}
.mx-brandtrack{flex:1 1 auto;min-width:0;display:flex;gap:10px;overflow-x:auto;scroll-behavior:smooth;padding:2px}
.mx-brandtrack span{flex:0 0 auto;width:110px;height:48px;border:1px solid #eef1f5;border-radius:6px;display:flex;align-items:center;justify-content:center;background:#fff;font-size:13px;font-weight:800;letter-spacing:.06em;white-space:nowrap;transition:border-color .2s,box-shadow .2s}
.mx-brandtrack span:hover{border-color:#c8dbf8;box-shadow:0 4px 12px rgba(13,92,214,.1)}

/* ---------- Feature cards ---------- */
.mx-features{margin-top:16px;display:flex;flex-wrap:wrap;gap:14px}
.mx-feature{flex:1 1 320px;min-width:0;position:relative;background:#fff;border:1px solid #e6e9ef;border-radius:8px;overflow:hidden}
.mx-feature .mx-fbg{position:absolute;inset:0;background-repeat:no-repeat;background-size:auto 82%;background-position:right 72%}
.mx-feature .mx-fbg-map{background-size:auto 100%;background-position:right center}
.mx-feature .mx-fscrim{position:absolute;inset:0;pointer-events:none;background:linear-gradient(94deg,#fff 0%,rgba(255,255,255,.96) 42%,rgba(255,255,255,.62) 62%,rgba(255,255,255,0) 82%)}
.mx-feature .mx-fbody{position:relative;z-index:2;padding:16px;min-height:186px}
.mx-feature h3{margin:0;font-size:13.5px;font-weight:800;color:#0a2342;letter-spacing:.02em}
.mx-feature .mx-fsub{font-size:11px;color:#7b8797;margin:3px 0 12px}
.mx-perks{max-width:62%;display:flex;flex-direction:column;gap:11px}
.mx-perks>div{display:flex;align-items:flex-start;gap:9px}
.mx-perks .mx-mi{font-size:20px!important;width:21px!important;height:21px!important;color:#0d5cd6;flex:0 0 auto;margin-top:1px}
.mx-perks b{display:block;font-size:12px;font-weight:700;color:#1a2332;line-height:1.35}
.mx-perks small{display:block;font-size:11px;color:#7b8797;line-height:1.45}
.mx-stats{max-width:58%}
.mx-stats .mx-big{font-size:26px;font-weight:800;color:#0d5cd6;line-height:1}
.mx-stats small{display:block;font-size:11px;color:#7b8797;margin-bottom:10px}
.mx-stats .mx-btn-sm{display:inline-block;background:#0d5cd6;color:#fff;font-size:10.5px;font-weight:800;letter-spacing:.05em;padding:9px 14px;border-radius:4px;margin-top:2px}
.mx-stats .mx-btn-sm:hover{background:#0a47a8;color:#fff}

/* ---------- News ---------- */
.mx-news{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:14px}
.mx-post{background:#fff;border:1px solid #e6e9ef;border-radius:8px;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .2s,transform .2s}
.mx-post:hover{box-shadow:0 8px 22px rgba(13,92,214,.13);transform:translateY(-3px)}
.mx-post .mx-pimg{height:132px;background:#fff}
.mx-post .mx-pimg img{width:100%;height:100%;object-fit:cover}
.mx-post .mx-pbody{padding:12px 13px 14px;display:flex;flex-direction:column;flex:1 1 auto}
.mx-post .mx-meta{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.mx-post .mx-cat{background:#eaf2ff;color:#0d5cd6;font-size:10px;font-weight:700;padding:3px 7px;border-radius:3px}
.mx-post .mx-date{font-size:10.5px;color:#9aa5b4}
.mx-post h3{margin:0 0 6px;font-size:12.5px;font-weight:700;line-height:1.45}
.mx-post h3 a{color:#1a2332}
.mx-post h3 a:hover{color:#0d5cd6}
.mx-post p{margin:0;font-size:11px;color:#7b8797;line-height:1.55}

/* ---------- Giỏ hàng & Thanh toán ---------- */
.mx-btn-block{display:flex;justify-content:center;width:100%;margin-top:12px;border:0;cursor:pointer;font-family:inherit}
.mx-btn-block.is-busy{opacity:.6;pointer-events:none}
.mx-btn-alt2{background:#fff;color:#0d5cd6;border:1.5px solid #0d5cd6}
/* ⚠️ Phải đặt CẢ color. .mx-btn:hover ở trên đã khai color:#fff và cùng độ ưu
   tiên (0,2,0), nên luật này chỉ đổi background thì chữ vẫn trắng — trắng trên
   nền #f4f8ff là tỉ lệ tương phản 1.04:1, chữ biến mất. Nút .mx-btn-alt ngay
   dưới vốn đã làm đúng; chỉ mỗi luật này sót. */
.mx-btn-alt2:hover{background:#f4f8ff;color:#0a47a8}
.mx-free{color:#16a34a}

.mx-cart-empty{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:46px 20px;text-align:center;margin-bottom:26px}
.mx-cart-empty p{margin:12px 0 18px;font-size:14px;color:#7b8797}

.mx-cart-body,.mx-co{display:flex;gap:16px;align-items:flex-start;margin-bottom:26px}
.mx-cart-list,.mx-co-main{flex:1 1 auto;min-width:0}
.mx-cart-list{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:4px 16px 8px}
.mx-cart-head{padding:14px 0 10px;border-bottom:1px solid #eef1f5;font-size:13px;color:#3d4a5c}
.mx-cart-side,.mx-co-side{flex:0 0 320px;background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:16px 18px 18px;position:sticky;top:16px}
.mx-cart-side h2,.mx-co-side h2{margin:0 0 12px;font-size:15px;font-weight:800;color:#0a2342}
.mx-cart-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;font-size:13px;color:#3d4a5c}
.mx-cart-total{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:12px 0 4px;margin-top:6px;border-top:1px solid #eef1f5;font-size:13.5px;color:#3d4a5c}
.mx-cart-total b{font-size:20px;font-weight:800;color:#e0281c}
.mx-cart-more{display:block;text-align:center;margin-top:12px;font-size:12.5px;font-weight:600}

/* Một dòng hàng — dùng chung cho giỏ (sửa được) và tóm tắt đơn (chỉ đọc) */
.mx-ci{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #eef1f5}
.mx-ci:last-child{border-bottom:0}
.mx-ci-img{flex:0 0 auto;width:64px;height:64px;border:1px solid #eef1f5;border-radius:6px;overflow:hidden;background:#fff}
.mx-ci-img img{width:100%;height:100%;object-fit:contain}
.mx-ci-main{flex:1 1 auto;min-width:0}
.mx-ci-t{display:block;font-size:12.5px;font-weight:600;color:#1a2332;line-height:1.4}
.mx-ci-t:hover{color:#0d5cd6}
.mx-ci-p{font-size:12px;color:#7b8797;margin-top:3px}
.mx-ci-qty{flex:0 0 auto;display:flex;align-items:center;border:1px solid #e2e8f0;border-radius:5px;overflow:hidden}
.mx-ci-qty button{width:28px;height:30px;border:0;background:#f4f7fb;color:#3d4a5c;font-size:15px;line-height:1;cursor:pointer;font-family:inherit}
.mx-ci-qty button:hover{background:#e8eef7}
.mx-ci-qty input{width:38px;height:30px;border:0;border-left:1px solid #e2e8f0;border-right:1px solid #e2e8f0;text-align:center;font-size:12.5px;font-family:inherit;color:#1a2332;outline:none}
.mx-ci-line{flex:0 0 auto;min-width:96px;text-align:right;font-size:13.5px;font-weight:700;color:#e0281c}
.mx-ci-q{flex:0 0 auto;font-size:12px;color:#7b8797}
.mx-ci-del{flex:0 0 auto;width:26px;height:26px;border:0;background:none;color:#b6bfcc;font-size:19px;line-height:1;cursor:pointer;font-family:inherit}
.mx-ci-del:hover{color:#e0281c}

/* Biểu mẫu thanh toán */
.mx-co-box{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:16px 18px 18px;margin-bottom:14px}
.mx-co-box h2{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:15px;font-weight:800;color:#0a2342}
.mx-co-box h2 .mx-mi{color:#0d5cd6}
.mx-fgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.mx-f{display:block}
.mx-f-wide{grid-column:1 / -1}
.mx-f>span{display:block;font-size:12px;font-weight:600;color:#3d4a5c;margin-bottom:5px}
.mx-f>span i{font-style:normal;color:#e0281c}
.mx-f input,.mx-f select,.mx-f textarea{width:100%;border:1px solid #e2e8f0;border-radius:5px;padding:9px 11px;font-size:13px;font-family:inherit;color:#1a2332;background:#fff;outline:none}
.mx-f input:focus,.mx-f select:focus,.mx-f textarea:focus{border-color:#0d5cd6;box-shadow:0 0 0 3px rgba(13,92,214,.11)}
.mx-f select:disabled{background:#f4f7fb;color:#9aa5b4}
.mx-f textarea{resize:vertical}

/* Ô chọn hình thức thanh toán.
   ⚠️ .mx-pay-b phải chiếm TRỌN ô lưới (width:100%), không co theo chữ — bốn nhãn dài
   ngắn khác nhau nên co theo chữ là mép phải lởm chởm, nhìn ra "trang bị lỗi".
   ⚠️ Ô radio thật bị ẩn nên phải VẼ LẠI một vòng tròn: chỉ đổi viền thì trên màn
   hình ngoài nắng gần như không thấy ô nào đang chọn, mà đây là chỗ khách phải biết
   chắc mình đang trả tiền kiểu gì. */
.mx-pays{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.mx-pay{position:relative;display:block;cursor:pointer}
.mx-pay input{position:absolute;opacity:0;width:0;height:0}
.mx-pay-b{position:relative;display:flex;align-items:center;gap:11px;width:100%;min-height:64px;box-sizing:border-box;
  border:1px solid #e2e8f0;border-radius:10px;padding:12px 30px 12px 13px;background:#fff;
  font-size:13px;font-weight:600;color:#3d4a5c;transition:border-color .12s,background .12s}
/* Dấu tích ở góc phải trên, CHỈ hiện khi đang chọn. Chừa sẵn padding-right 30px cho
   nó ngay từ đầu — hiện ra mới chừa chỗ thì chữ nhảy một nhịp mỗi lần đổi lựa chọn. */
.mx-pay-b::after{content:"check_circle";position:absolute;top:7px;right:8px;
  font-family:"Material Symbols Outlined";font-size:18px;line-height:1;color:#0d5cd6;
  opacity:0;transform:scale(.7);transition:opacity .12s,transform .12s}
.mx-pay-ic{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:36px;height:36px;
  border-radius:9px;background:#f1f5fb;color:#7b8797}
.mx-pay-ic .mx-mi{color:inherit}
.mx-pay-b b{font-weight:700;line-height:1.35}
.mx-pay:hover .mx-pay-b{border-color:#b9d0f4}
/* ⚠️ Viền ĐÚNG 1px — không kèm box-shadow inset thêm một vòng nữa. Hai thứ cộng lại
   ra nét dày 2px, nhìn nặng hơn hẳn các ô còn lại. Dấu tích và nền xanh nhạt đã đủ
   để biết ô nào đang chọn. */
.mx-pay input:checked + .mx-pay-b{border-color:#0d5cd6;background:#f4f8ff;color:#0a2342}
.mx-pay input:checked + .mx-pay-b::after{opacity:1;transform:scale(1)}
.mx-pay input:checked + .mx-pay-b .mx-pay-ic{background:#0d5cd6;color:#fff}
.mx-pay input:focus-visible + .mx-pay-b{box-shadow:0 0 0 3px rgba(13,92,214,.22)}
/* Câu hướng dẫn của hình thức đang chọn — gắn liền vào khối trên bằng dải xanh nhạt
   để đọc ra là "nói về lựa chọn của bạn", không phải một dòng chú thích chung. */
.mx-paynote{display:flex;gap:9px;margin:12px 0 0;padding:11px 13px;border-radius:9px;
  background:#f4f8ff;border:1px solid #e1ecfd;font-size:12.5px;color:#40536e;line-height:1.6}
.mx-paynote:empty{display:none}
.mx-paynote::before{content:"info";font-family:"Material Symbols Outlined";font-size:17px;line-height:1.25;color:#0d5cd6;flex:0 0 auto}
.mx-co-msg{margin:10px 0 0;padding:9px 11px;border-radius:5px;background:#fdecea;color:#b3261e;font-size:12px;line-height:1.55}

.mx-ok{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:34px 24px;text-align:center;margin-bottom:26px}
.mx-ok h2{margin:12px 0 6px;font-size:20px;font-weight:800;color:#0a2342}
.mx-ok>p{margin:0 0 16px;font-size:13.5px;color:#3d4a5c}
.mx-ok ul{list-style:none;margin:0 auto 14px;padding:0;max-width:430px;text-align:left}
.mx-ok li{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid #eef1f5;font-size:13px;color:#7b8797}
.mx-ok li b{color:#1a2332;text-align:right}
.mx-ok-note{margin:0 0 18px;font-size:12.5px;color:#7b8797}
/* Ô mã giảm giá trong khung tóm tắt đơn.
   ⚠️ Nút "Áp dụng" là type="button", KHÔNG phải submit — nằm trong <form> đặt hàng
   nên để mặc định là bấm áp mã lại gửi luôn cả đơn. Cũng vì thế phím Enter trong ô
   mã bị chặn và chuyển thành bấm "Áp dụng". */
.mx-coupon{margin:12px 0;padding:12px 0;border-top:1px solid #eef1f6;border-bottom:1px solid #eef1f6}
.mx-coupon-in{display:flex;gap:8px}
.mx-coupon-in input{flex:1 1 auto;min-width:0;border:1px solid #dfe6f0;border-radius:6px;padding:9px 11px;font:inherit;font-size:13px;color:#0a2342;text-transform:uppercase}
.mx-coupon-in input::placeholder{text-transform:none}
.mx-coupon-in input:focus{outline:0;border-color:#0d5cd6;box-shadow:0 0 0 3px rgba(13,92,214,.14)}
.mx-coupon-in button{flex:0 0 auto;border:1px solid #0d5cd6;background:#fff;color:#0d5cd6;border-radius:6px;padding:0 16px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.mx-coupon-in button:hover{background:#f4f8ff}
.mx-coupon-in button[disabled]{opacity:.55;cursor:default}
.mx-coupon-msg{margin:8px 0 0;font-size:12px;line-height:1.55;color:#b3261e}
.mx-coupon-msg.is-ok{color:#16a34a}
.mx-cart-disc b{color:#b3261e}
/* Khối thông tin chuyển khoản — dùng chung ở màn "Đặt hàng thành công" và trang
   Tra cứu đơn hàng. Căn TRÁI dù nằm trong .mx-ok vốn text-align:center: dãy số tài
   khoản căn giữa thì mắt phải dò lại từ đầu mỗi dòng, mà đây đúng là chỗ người ta
   chép từng ký tự sang app ngân hàng.
   ⚠️ <dd> của trình duyệt mặc định thụt 40px — không đặt margin:0 là cột giá trị
   lệch hẳn sang phải khỏi lưới. */
/* Nút Yêu thích trên thẻ sản phẩm — góc phải trên của thẻ.
   ⚠️ .mx-card phải là position:relative sẵn (nhãn TOP/-50% đã dựa vào), nút này chỉ
   dùng ké. Kiểm lại trước khi đổi position của .mx-card. */
.mx-wish{position:absolute;top:8px;right:8px;z-index:2;width:30px;height:30px;padding:0;
  display:flex;align-items:center;justify-content:center;border:1px solid #e6e9ef;border-radius:50%;
  background:rgba(255,255,255,.92);color:#c3ccd8;cursor:pointer;transition:color .12s,border-color .12s}
.mx-wish:hover{color:#e0281c;border-color:#f3c9c5}
.mx-wish.is-on{color:#e0281c;border-color:#f3c9c5;background:#fff5f4}
/* Nút Yêu thích ở trang chi tiết — ghim góc phải trên cột thông tin, chỉ còn icon.
   ⚠️ Cột thông tin phải có position:relative (.mx-pdp-main) — bỏ nó là nút nhảy ra
   góc của cả khối .mx-pdp và nằm đè lên ảnh sản phẩm. */
.mx-wishbtn{position:absolute;top:0;right:0;z-index:2;width:36px;height:36px;padding:0;
  display:flex;align-items:center;justify-content:center;border:1px solid #e6e9ef;border-radius:9px;
  background:#fff;color:#c3ccd8;cursor:pointer;transition:color .12s,border-color .12s,background .12s}
.mx-wishbtn:hover{color:#e0281c;border-color:#f3c9c5}
.mx-wishbtn.is-on{color:#e0281c;border-color:#f3c9c5;background:#fff5f4}

/* Trang Tài khoản. */
.mx-acc-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start;margin-bottom:26px}
.mx-acc-box{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:18px 20px 20px}
.mx-acc-box h2{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:15px;font-weight:800;color:#0a2342}
.mx-acc-box h2 .mx-mi{color:#0d5cd6}
.mx-acc-box label{display:block;margin-bottom:12px;font-size:12.5px;font-weight:600;color:#5d7590}
.mx-acc-box label i{color:#e0281c;font-style:normal}
.mx-acc-box input{display:block;width:100%;box-sizing:border-box;margin-top:5px;border:1px solid #dfe6f0;
  border-radius:6px;padding:9px 11px;font:inherit;font-size:13px;color:#0a2342}
.mx-acc-box input:focus{outline:0;border-color:#0d5cd6;box-shadow:0 0 0 3px rgba(13,92,214,.14)}
.mx-acc-box input[disabled]{background:#f7f8fa;color:#7b8797}
.mx-acc-link{display:inline-block;margin-top:12px;font-size:12.5px;color:#0d5cd6}
.mx-acc-note{margin:12px 0 0;font-size:12px;color:#7b8797;line-height:1.6}
.mx-acc-orders .mx-look-tb{width:100%}

/* Thư viện ảnh sản phẩm: ảnh lớn + dải ảnh nhỏ. */
.mx-pdp-thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.mx-pdp-thumbs button{width:64px;height:64px;padding:0;border:1px solid #e6e9ef;border-radius:8px;background:#fff;cursor:pointer;overflow:hidden}
.mx-pdp-thumbs button:hover{border-color:#b9d0f4}
/* ⚠️ Chỉ đổi MÀU viền, không thêm `box-shadow` vòng ngoài. Bản trước có thêm
   `box-shadow:0 0 0 1px` cùng màu — cộng với viền 1px thành một vệt dày 2px, nhìn ra
   là ô đang chọn có viền đậm hơn hẳn ba ô kia. */
.mx-pdp-thumbs button.is-on{border-color:#0d5cd6}
.mx-pdp-thumbs img{width:100%;height:100%;object-fit:contain;display:block}

/* Đánh giá sản phẩm. */
.mx-stars{display:inline-flex;align-items:center;gap:1px;vertical-align:middle}
/* Ngôi sao vẽ bằng SVG (xem mx_star_svg trong functions.php). Cỡ đã nằm trong thuộc
   tính width/height của chính thẻ svg, ở đây chỉ lo chỗ đứng. */
.mx-star{display:inline-block;flex:0 0 auto;vertical-align:middle}
.mx-rvsec{margin-top:8px}
.mx-rv-flash{margin:0 0 14px;padding:11px 14px;border-radius:8px;background:#eefbf2;border:1px solid #c9ecd6;color:#15803d;font-size:13px}

/* --- Bảng tổng: điểm bên trái, chip lọc + thanh phân bố bên phải --- */
.mx-rv-panel{display:flex;flex-wrap:wrap;gap:22px;align-items:flex-start;background:#fff;
  border:1px solid #e6e9ef;border-radius:10px;padding:20px;margin-bottom:16px}
.mx-rv-score{flex:0 0 auto;width:214px;text-align:left;display:flex;flex-direction:column;
  align-items:flex-start;gap:7px}
.mx-rv-score strong{display:block;font-size:40px;font-weight:800;color:#0a2342;line-height:1}
.mx-rv-score strong small{font-size:16px;font-weight:700;color:#7b8797;margin-left:4px}
.mx-rv-score>span{font-size:12.5px;color:#7b8797}
.mx-rv-note{font-size:11px;color:#a9b4c2;font-style:normal}
/* Nút mở popup. Nền tối để nổi hẳn trên khung trắng — đây là hành động chính của
   cả khối, để nó thành nút viền mảnh là không ai thấy. */
.mx-rv-open{margin-top:3px;border:0;border-radius:999px;padding:10px 24px;background:#0a2342;
  color:#fff;font:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:background .12s}
.mx-rv-open:hover{background:#0d5cd6}
/* Nút trải hết bề ngang cột trái — cột chỉ rộng 214px nên nút co lại theo chữ sẽ
   lệch hẳn sang một bên dưới khối điểm căn trái. */
.mx-rv-score .mx-rv-open{align-self:stretch;margin-top:11px;text-align:center}
.mx-rv-right{flex:1 1 320px;min-width:0;display:flex;flex-direction:column;gap:14px}
/* Chưa có đánh giá: điểm về 0,0 và sao xám, còn chip + thanh phân bố vẫn hiện đủ.
   Lời mời nằm NGOÀI khung, ngay dưới. */
.mx-rv-score.is-zero strong{color:#8b97a6}
.mx-rv-empty{margin:-6px 0 18px;font-size:13.5px;color:#7b8797}

/* Chip lọc */
.mx-rvchips{display:flex;flex-wrap:wrap;gap:8px}
.mx-rvchip{border:1px solid #dfe6f0;border-radius:999px;padding:7px 15px;background:#fff;
  font:inherit;font-size:12.5px;font-weight:600;color:#3d4a5c;cursor:pointer;
  transition:border-color .12s,background .12s,color .12s}
.mx-rvchip:hover{border-color:#b9d0f4}
.mx-rvchip.is-on{border-color:#0d5cd6;background:#f4f8ff;color:#0d5cd6}
/* Chip 0 lượt: mờ và KHÔNG bấm được. Cho bấm thì danh sách trống trơn và khách
   tưởng trang hỏng — số 0 in ngay trên chip đã nói đủ rồi. */
.mx-rvchip.is-off{opacity:.45;cursor:default;background:#f7f9fc}
.mx-rvchip.is-off:hover{border-color:#dfe6f0}

/* Thanh phân bố 5→1 */
.mx-rv-bars{display:flex;flex-direction:column;gap:6px}
.mx-rv-bar{display:flex;align-items:center;gap:9px;font-size:12px;color:#5d7590}
.mx-rv-bs{flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;width:26px;font-weight:700;color:#3d4a5c}
.mx-rv-bar i{flex:1 1 auto;min-width:0;height:8px;border-radius:4px;background:#eef1f6;overflow:hidden}
.mx-rv-bar b{display:block;height:100%;background:#ffb020;border-radius:4px}
.mx-rv-bp{flex:0 0 auto;width:34px;text-align:right;font-weight:700;color:#3d4a5c}
.mx-rv-bn{flex:0 0 auto;width:74px;text-align:right}

/* --- Danh sách đánh giá --- */
.mx-rv-list{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:12px}
.mx-rv-list li{background:#fff;border:1px solid #e6e9ef;border-radius:10px;padding:15px 17px}
.mx-rv-head{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:7px}
/* Icon người trước tên — chủ site yêu cầu. flex:0 0 auto để vòng tròn không bị bóp
   méo thành bầu dục khi tên dài đẩy hàng. */
.mx-rv-ava{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;background:#eef4ff;color:#0d5cd6}
.mx-rv-head b{font-size:13.5px;color:#0a2342}
.mx-rv-date{font-size:12px;color:#a9b4c2}
.mx-rv-buy{display:inline-flex;align-items:center;gap:3px;border-radius:999px;padding:2px 9px;
  background:#eefbf2;color:#15803d;font-size:11.5px;font-weight:700}
.mx-rv-list p{margin:0;font-size:13.5px;line-height:1.65;color:#3d4a5c;white-space:pre-line}
.mx-rv-media{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.mx-rv-media img,.mx-rv-media video{width:84px;height:84px;object-fit:cover;display:block;
  border:1px solid #e6e9ef;border-radius:8px;background:#f7f9fc}
.mx-rv-media video{width:150px}
/* Phản hồi của cửa hàng. Thụt vào + vạch trái để phân biệt hẳn với lời khách —
   cùng một khung trắng thì đọc lướt không biết ai đang nói. */
.mx-rv-reply{margin-top:11px;padding:10px 13px;border-left:3px solid #0d5cd6;border-radius:0 8px 8px 0;background:#f7f9fc}
.mx-rv-reply b{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:#0d5cd6}
.mx-rv-reply>span{margin-left:8px;font-size:11.5px;color:#a9b4c2}
.mx-rv-reply p{margin-top:4px;font-size:13px}
.mx-rv-none{margin:0 0 18px;font-size:13.5px;color:#7b8797}

/* --- Popup gửi đánh giá --- */
.mx-rvmodal{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:18px}
.mx-rvmodal[hidden]{display:none}
.mx-rvmodal-bd{position:absolute;inset:0;background:rgba(10,35,66,.55)}
.mx-rvmodal-box{position:relative;width:100%;max-width:560px;max-height:calc(100vh - 36px);
  overflow:auto;background:#fff;border-radius:12px;box-shadow:0 24px 60px rgba(10,35,66,.28);padding:20px 22px 22px}
.mx-rvmodal-hd{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}
.mx-rvmodal-hd h3{flex:1 1 auto;min-width:0;margin:0;font-size:16px;font-weight:800;color:#0a2342;line-height:1.35}
.mx-rvmodal-x{flex:0 0 auto;width:30px;height:30px;padding:0;border:0;border-radius:8px;background:#f2f5f9;
  color:#5d7590;font-size:21px;line-height:1;cursor:pointer;transition:background .12s,color .12s}
.mx-rvmodal-x:hover{background:#e6ecf4;color:#0a2342}
.mx-rvmodal textarea,.mx-rvmodal input[type=text],.mx-rvmodal input[type=email],.mx-rvmodal input[type=tel]{
  display:block;width:100%;box-sizing:border-box;border:1px solid #dfe6f0;border-radius:8px;
  padding:11px 13px;font:inherit;font-size:13.5px;color:#0a2342;background:#fff}
.mx-rvmodal textarea{resize:vertical;line-height:1.6}
.mx-rvmodal textarea:focus,.mx-rvmodal input:focus{outline:0;border-color:#0d5cd6;box-shadow:0 0 0 3px rgba(13,92,214,.14)}

/* Khối gửi ảnh/video */
.mx-rvup{margin-top:10px}
.mx-rvup-btns{display:flex;flex-wrap:wrap;gap:9px}
.mx-rvup-b{display:inline-flex;align-items:center;gap:6px;border:1px solid #dfe6f0;border-radius:8px;
  padding:8px 14px;background:#fff;font-size:12.5px;font-weight:600;color:#0d5cd6;cursor:pointer;
  transition:border-color .12s,background .12s}
.mx-rvup-b:hover{border-color:#b9d0f4;background:#f4f8ff}
/* Ô tệp thật nằm TRONG nhãn nên bấm nhãn là mở hộp chọn tệp — ẩn bằng width/height 0
   chứ không display:none để Tab vẫn tới được. */
.mx-rvup-b input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.mx-rvup-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:7px;
  font-size:11.5px;color:#a9b4c2}
.mx-rvup-foot .is-short{color:#e0281c}
.mx-rvup-list{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.mx-rvup-list:empty{margin-top:0}
.mx-rvup-i{font-size:12px;color:#5d7590}
.mx-rvup-i.is-bad{color:#e0281c}
.mx-rvup-w{font-size:12px;color:#a9754a}

/* Bộ chọn sao trong popup: sao to, nhãn chữ dưới mỗi sao. Lớp .is-on do JS gán
   (tô từ sao 1 tới sao đang chọn — CSS không có bộ chọn "đứng trước"); .is-hv là
   lượt rê chuột. Tắt JS thì radio vẫn chạy, chỉ mất phần tô màu. */
.mx-rvpick{margin-top:16px;border-top:1px solid #eef1f6;padding-top:14px}
.mx-rvpick-t{display:block;font-size:13px;font-weight:700;color:#0a2342;margin-bottom:9px}
.mx-rvpick-t em{font-weight:600;font-style:normal;color:#a9b4c2}
.mx-rvpick-s{display:flex;gap:6px}
.mx-rvpick-s label{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;
  padding:9px 2px;border-radius:9px;color:#d8dfe8;cursor:pointer;text-align:center;transition:background .12s,color .12s}
.mx-rvpick-s label:hover{background:#f7f9fc}
.mx-rvpick-s label span{font-size:11px;font-weight:600;color:#a9b4c2;line-height:1.25}
.mx-rvpick-s label.is-on,.mx-rvpick-s label.is-hv{color:#ffb020}
.mx-rvpick-s label.is-on span{color:#3d4a5c}
/* Dự phòng cho lúc JS chưa chạy: ít nhất sao ĐANG CHỌN phải vàng, bằng không khách
   bấm xong không thấy gì đổi và bấm tiếp sao khác. */
.mx-rvpick-s label:has(input:checked){color:#ffb020}
.mx-rvpick-s input{position:absolute;width:1px;height:1px;opacity:0}
.mx-rvpick-s input:focus-visible ~ span{outline:2px solid #0d5cd6;outline-offset:2px;border-radius:3px}

.mx-rvfull{margin-top:14px}
.mx-rvgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}
/* ⚠️ display:flex chứ không để mặc định: ô tick và dòng chữ hai dòng phải thẳng đầu
   nhau, không thì tick tụt xuống giữa đoạn văn. */
.mx-rvremember{display:flex;align-items:flex-start;gap:8px;margin-top:13px;
  font-size:12px;line-height:1.5;color:#7b8797;cursor:pointer}
.mx-rvremember input{flex:0 0 auto;margin:2px 0 0}
.mx-rv-send{margin-top:16px;width:100%;border:0;border-radius:9px;padding:13px;background:#0d5cd6;
  color:#fff;font:inherit;font-size:14px;font-weight:700;cursor:pointer;transition:background .12s}
.mx-rv-send:hover{background:#0a48a8}
/* Ô bẫy bot — đẩy khỏi màn hình chứ KHÔNG display:none: vài bot bỏ qua ô ẩn hẳn,
   nhưng vẫn điền ô chỉ bị đẩy đi. */
.mx-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
/* Bộ chọn biến thể trên trang chi tiết sản phẩm.
   ⚠️ .is-off (tổ hợp không bán / hết hàng) phải khác hẳn .is-on về CẢ màu lẫn nét
   gạch — chỉ làm mờ thì trên màn hình ngoài nắng nhìn y như nút bình thường, khách
   bấm mãi không ăn rồi kết luận trang hỏng. */
.mx-vpick{margin:0 0 18px}
.mx-vgroup{margin-bottom:12px}
.mx-vname{display:block;margin-bottom:7px;font-size:12.5px;font-weight:700;color:#5d7590}
.mx-vopts{display:flex;flex-wrap:wrap;gap:8px}
.mx-vopt{border:1.5px solid #d5e4fb;background:#fff;border-radius:8px;padding:9px 16px;font:inherit;font-size:13.5px;font-weight:600;color:#0a2342;cursor:pointer}
.mx-vopt:hover{border-color:#0d5cd6}
.mx-vopt.is-on{border-color:#0d5cd6;background:#f4f8ff;color:#0a47a8;box-shadow:inset 0 0 0 1px #0d5cd6}
.mx-vopt.is-off{border-color:#e6e9ef;color:#b6bfcc;background:#f7f8fa;cursor:not-allowed;text-decoration:line-through}
.mx-vstock{margin:10px 0 0;font-size:12.5px;font-weight:600;color:#16a34a}
.mx-vstock.is-out{color:#b3261e}
/* Nút mua bị khoá khi chưa chọn đủ phiên bản hoặc hết hàng. */
.mx-buybox .mx-btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none}
/* Thẻ sản phẩm: chữ "từ" khi các biến thể lệch giá, và nhãn hết hàng thay nút giỏ. */
.mx-price .mx-from{font-size:11.5px;font-weight:600;color:#7b8797}
/* ⚠️ Cùng lớp .mx-from nhưng KHÁC cha, nên phải khai riêng. Luật trên chỉ ăn dưới
   .mx-price của thẻ sản phẩm; trên trang chi tiết cha là .mx-pdp-price và chữ "từ"
   rơi về <small> mặc định — 80% của một khối không đặt cỡ chữ, nằm cạnh con số
   28px. Không lỗi, chỉ là chữ bé tí lệch hàng. */
.mx-pdp-price .mx-from{align-self:flex-end;margin-right:-6px;font-size:13px;font-weight:600;color:#7b8797}
.mx-soldout{font-size:11.5px;font-weight:700;color:#b3261e}
/* Desktop rộng: bốn hình thức xếp MỘT hàng. Ngưỡng 1200px chứ không 1081px — đo trên
   Chromium: ở 1100px mỗi ô còn 167px và ba trong bốn nhãn xuống hai dòng. Từ 1200px
   trở lên cột trái đã đạt bề rộng tối đa (836px) nên ô rộng 192px, nhãn một dòng. */
@media (min-width:1200px){
  .mx-pays{grid-template-columns:repeat(4,minmax(0,1fr))}
  .mx-pay-b{gap:9px;padding:12px 26px 12px 11px}
  .mx-pay-ic{width:32px;height:32px;border-radius:8px}
}

.mx-bankbox{margin:0 0 18px;padding:14px 16px;border:1px solid #d5e4fb;border-radius:8px;background:#f4f8ff;text-align:left}
.mx-bankbox>b{display:block;margin-bottom:8px;font-size:13.5px;color:#0a2342}
.mx-bankbox dl{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0;font-size:13px}
.mx-bankbox dt{color:#5d7590}
.mx-bankbox dd{margin:0;font-weight:700;color:#0a2342;word-break:break-word}
/* ⚠️ Bọc thêm một lớp cha cho đủ độ ưu tiên (0,2,0) — cùng lý do với logo:
   WooCommerce có `.woocommerce-page img{max-width:100%}` ở (0,1,1), hơn một tên lớp
   đơn. Trang tra cứu hôm nay chưa mang lớp ấy, nhưng chỉ cần Woo nhận trang này là
   một endpoint của nó thì ảnh QR bung ra hết bề ngang hộp thay vì 180px. */
.mx-bankbox .mx-bank-qr{display:block;margin:12px 0 0;max-width:180px;height:auto;border-radius:6px}
.mx-bank-note{margin:10px 0 0;font-size:12.5px;color:#5d7590;line-height:1.6}

/* ---------- Tra cứu đơn hàng ---------- */
.mx-look{margin-bottom:26px}
.mx-look-form{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:18px;display:grid;grid-template-columns:1fr 1fr auto;gap:14px;align-items:end}
.mx-look-form .mx-f span{display:block;font-size:12px;font-weight:600;color:#3d4a5c;margin-bottom:6px}
.mx-look-form .mx-f i{color:#e0281c;font-style:normal}
.mx-look-go{border:0;cursor:pointer;font-family:inherit;height:38px}
.mx-look-msg{margin:14px 0 0;background:#fff4f3;border:1px solid #f6d4d1;border-radius:8px;padding:13px 15px;font-size:13px;color:#a4261c}
.mx-look-res{margin-top:14px;background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:18px}
.mx-look-top{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid #eef1f5}
.mx-look-top small{display:block;font-size:11.5px;color:#7b8797}
.mx-look-top b{font-size:19px;font-weight:800;color:#0a2342;letter-spacing:.06em}
.mx-look-st{flex:0 0 auto;font-size:12px;font-weight:700;padding:6px 13px;border-radius:20px;background:#eef1f5;color:#3d4a5c}
.mx-look-st--new{background:#fff3e0;color:#b26a00}
.mx-look-st--shipping{background:#eaf2ff;color:#0d5cd6}
.mx-look-st--done{background:#e8f6ed;color:#1a7f42}
.mx-look-st--cancel{background:#fff4f3;color:#a4261c}
.mx-look-tb{width:100%;border-collapse:collapse;margin-top:14px;font-size:13px}
.mx-look-tb th,.mx-look-tb td{padding:9px 0;border-bottom:1px solid #f0f2f6;text-align:left;vertical-align:top}
.mx-look-tb th{font-weight:600;color:#5d7590;width:130px}
.mx-look-items th{width:auto;color:#3d4a5c}
.mx-look-tb .mx-num{text-align:right;white-space:nowrap}
.mx-look-sum th{border-bottom:0;padding-top:12px;font-size:14px;font-weight:800;color:#0a2342}
.mx-look-help{margin-bottom:26px}

/* ---------- Single / page content ---------- */
.mx-content{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:28px 30px;margin:16px 0 26px}
.mx-content h1{margin:0 0 6px;font-size:24px;font-weight:800;color:#0a2342;line-height:1.25}
.mx-content h2{margin:24px 0 8px;font-size:16px;font-weight:800;color:#0a2342}
.mx-content h3{margin:18px 0 6px;font-size:14px;font-weight:700;color:#1a2332}
.mx-content p,.mx-content li{font-size:13.5px;line-height:1.75;color:#3d4a5c}
.mx-content ul,.mx-content ol{padding-left:20px}
.mx-content li{margin-bottom:5px}
.mx-crumbs{font-size:11.5px;color:#7b8797;padding:12px 0 0}
.mx-crumbs a{color:#0d5cd6}
.mx-pmeta{font-size:11.5px;color:#8a95a5;margin-bottom:18px;display:flex;gap:10px;flex-wrap:wrap}

/* ---------- Single product ---------- */
.mx-pdp{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:26px;background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:24px;margin:16px 0 26px}
.mx-pdp-img{background:#fff;border:1px solid #eef1f5;border-radius:8px;padding:16px;display:flex;align-items:center;justify-content:center;min-height:340px;
  position:relative;overflow:hidden}
.mx-pdp-img img{max-height:340px;width:auto;object-fit:contain}

/* --- Rê chuột vào ảnh lớn thì phóng to --- */
/* ⚠️ Bọc trong `@media (hover:hover)`: trên điện thoại, "hover" xảy ra ngay lúc CHẠM,
   nên không có rào này thì khách chạm vào ảnh là nó phóng to rồi kẹt ở đó cho tới khi
   chạm chỗ khác — và trên màn hình nhỏ thì ảnh phóng to che mất nút mua. */
@media (hover:hover) and (pointer:fine){
  .mx-pdp-img{cursor:zoom-in}
  /* ⚠️ Chỉ động vào `transform`: nó chạy trên GPU nên rê chuột mượt. Đổi width/height
     hay `background-position` thì mỗi lần chuột nhích là trình duyệt tính lại bố cục
     cả trang — trên máy yếu là giật. */
  .mx-pdp-img img{transition:transform .18s ease;transform-origin:center center;will-change:transform}
  .mx-pdp-img.is-zoom img{transform:scale(2.2);transition:transform .06s linear}
}
/* ⚠️ padding-right 46px chừa chỗ cho nút Yêu thích ghim ở góc — không chừa thì tên
   sản phẩm dài chạy thẳng xuống dưới nút và hai thứ chồng lên nhau. */
.mx-pdp-main{position:relative}
.mx-pdp-main>.mx-pdp-brand,.mx-pdp-main>h1{padding-right:46px}
.mx-pdp h1{margin:0 0 10px;font-size:22px;font-weight:800;color:#0a2342;line-height:1.3}
.mx-pdp .mx-pdp-rate{display:flex;align-items:center;gap:6px;font-size:12px;color:#6b7c94;margin-bottom:14px}
.mx-pdp .mx-pdp-rate .mx-mi{font-size:16px;color:#ffb020;width:16px;height:16px}
.mx-pdp-price{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.mx-pdp-price .mx-now{font-size:28px;font-weight:800;color:#e0281c}
.mx-pdp-price .mx-was{font-size:14px;color:#9aa5b4;text-decoration:line-through}
.mx-pdp-price .mx-off{background:#e0281c;color:#fff;font-size:11.5px;font-weight:700;padding:3px 8px;border-radius:4px}
.mx-pdp-save{font-size:12px;color:#0d9c5b;font-weight:600;margin-bottom:16px}
.mx-specs{list-style:none;margin:0 0 20px;padding:0;display:flex;flex-direction:column;gap:8px}
.mx-specs li{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:#3d4a5c}
.mx-specs .mx-mi{font-size:16px;color:#0d5cd6;width:17px;height:17px;flex:0 0 auto;margin-top:2px}
.mx-buybox{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.mx-buybox .mx-btn{padding:13px 26px;font-size:14px}
.mx-buybox .mx-btn-alt{background:#fff;color:#0d5cd6;border:1.5px solid #0d5cd6}
.mx-buybox .mx-btn-alt:hover{background:#eaf2ff;color:#0a47a8}
/* Desktop: ba nút mua nằm CHUNG một hàng.
   ⚠️ Đo với ĐÚNG phông Be Vietnam Pro mới thấy: ba nút cộng lại 549px trong cột 548px
   — hụt đúng 1px nên nút "Trả góp" rớt xuống dòng ở MỌI khổ desktop. Bộ đo trước đó
   chặn phông web nên đo ra 546px và kết luận "vừa khít"; 3px chênh lệch của phông
   chính là toàn bộ câu chuyện. Nay hạ đệm ngang 26→14px: bề rộng tối thiểu còn 477px,
   vừa cả cột hẹp nhất của desktop (488px ở khổ 1080).
   ⚠️ `:not(.mx-woobuy)` là bắt buộc. `.mx-woobuy` là hộp mua của WooCommerce, xếp
   THEO CỘT — `flex:1 1 auto` ở đó tính theo trục dọc, tức là các nút bị kéo cao ra.
   ⚠️ Vẫn để `flex-wrap:wrap` làm lưới an toàn: nếu sau này chữ trên nút dài thêm thì
   nút rớt xuống dòng, còn hơn là tràn ra ngoài cột. */
@media (min-width:861px){
  .mx-buybox:not(.mx-woobuy) .mx-btn{flex:1 1 auto;justify-content:center;
    padding-left:14px;padding-right:14px;white-space:nowrap}
}
.mx-pdp-info{border-top:1px solid #f0f2f6;padding-top:14px;display:flex;flex-direction:column;gap:9px}
.mx-pdp-info div{display:flex;align-items:center;gap:9px;font-size:12.5px;color:#3d4a5c}
.mx-pdp-info .mx-mi{font-size:19px;color:#0d5cd6;width:20px;height:20px}
.mx-pdp-brand{display:inline-block;background:#eaf2ff;color:#0d5cd6;font-size:11px;font-weight:700;padding:4px 9px;border-radius:4px;margin-bottom:12px}

/* ---------- Archive ---------- */
/* Thanh lọc ở trang danh mục / tất cả sản phẩm.
   ⚠️ Toàn bộ là liên kết và một form GET — không JavaScript. Vì thế .mx-fgo (nút
   "Lọc") phải LUÔN hiện: giấu nó đi rồi trông cậy vào onchange là khách tắt JS sẽ
   đổi ô xong không có cách nào gửi đi. */
.mx-filters{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:13px 15px;margin-bottom:14px}
.mx-fchips{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.mx-flabel{font-size:12px;font-weight:700;color:#5d7590;margin-right:2px}
.mx-fchips a{border:1px solid #dfe6f0;border-radius:20px;padding:6px 14px;font-size:12.5px;font-weight:600;color:#3d4a5c;text-decoration:none;background:#fff}
.mx-fchips a:hover{border-color:#0d5cd6;color:#0a47a8}
.mx-fchips a.is-on{border-color:#0d5cd6;background:#0d5cd6;color:#fff}
.mx-frow{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:12px;padding-top:12px;border-top:1px solid #eef1f6}
.mx-fsel{display:flex;align-items:center;gap:7px;font-size:12.5px;color:#5d7590}
.mx-fsel select{border:1px solid #dfe6f0;border-radius:6px;padding:7px 9px;font:inherit;font-size:12.5px;color:#0a2342;background:#fff;cursor:pointer;max-width:190px}
.mx-fcheck{display:flex;align-items:center;gap:6px;font-size:12.5px;color:#3d4a5c;cursor:pointer}
.mx-fgo{border:0;background:#0d5cd6;color:#fff;border-radius:6px;padding:8px 18px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.mx-fgo:hover{background:#1d74f5}
.mx-fclear{font-size:12.5px;color:#b3261e;text-decoration:none}
.mx-fclear:hover{text-decoration:underline}
.mx-fcount{margin:0 0 12px;font-size:12.5px;color:#7b8797}
.mx-archive-head{background:#fff;border:1px solid #e6e9ef;border-radius:8px;padding:20px 22px;margin:16px 0 14px}
.mx-archive-head h1{margin:0 0 6px;font-size:22px;font-weight:800;color:#0a2342}
.mx-archive-head p{margin:0;font-size:13px;color:#7b8797}
.mx-archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-bottom:26px}
/* Desktop: ghim đúng 5 cột. auto-fill ở ≥1081px vốn đã ra 5, nhưng là do phép
   chia vừa khéo (190×5 + 14×4 = 1006 ≤ 1172) — đổi bề rộng thẻ hay .mx-wrap là
   nó lặng lẽ thành 4 hoặc 6. Dưới 1081px giữ nguyên auto-fill như cũ. */
@media (min-width:1081px){
  .mx-archive-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
  /* Tab bán chạy trên desktop: ĐÚNG một hàng 6 sản phẩm rồi tới nút Xem thêm.
     Phải ghim 6 cột CHỨ KHÔNG chỉ cắt còn 6 ô: auto-fill ở ≥1200px cho 7 cột
     (lưới 1142px / thẻ tối thiểu 140px), cắt 6 ô thì hàng hụt mất một ô cuối.
     Chỉ áp từ 1081px — ghim 6 cột xuống tới 641px thì mỗi thẻ còn ~87px. */
  .mx-pgrid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .mx-clamp-m>*:nth-child(n+7){display:none}
  .mx-tabpane .mx-more{display:flex}
}
.mx-pagination{display:flex;gap:6px;justify-content:center;margin:0 0 30px}
.mx-pagination .page-numbers{padding:8px 13px;border:1px solid #e6e9ef;border-radius:5px;background:#fff;font-size:12.5px;font-weight:600;color:#3d4a5c}
.mx-pagination .page-numbers.current,.mx-pagination .page-numbers:hover{background:#0d5cd6;color:#fff;border-color:#0d5cd6}

/* ---------- Footer ---------- */
.mx-footer{background:#0a2342;color:#b7c6dc}
.mx-footer .mx-fmain{max-width:1200px;margin:0 auto;padding:30px 14px 22px;display:flex;flex-wrap:wrap;gap:26px}
.mx-footer .mx-fcol{flex:1 1 160px;min-width:0}
.mx-footer .mx-fabout{flex:1 1 250px}
.mx-footer .mx-fabout p{font-size:11.5px;line-height:1.7;margin:0 0 14px;max-width:250px}
.mx-footer h4{margin:0 0 12px;font-size:12px;font-weight:800;color:#fff;letter-spacing:.05em}
.mx-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.mx-footer ul a{font-size:11.5px;color:#b7c6dc}
.mx-footer ul a:hover{color:#5b9dff}
.mx-social{display:flex;gap:8px}
.mx-social a{width:30px;height:30px;border-radius:6px;background:#123a68;display:flex;align-items:center;justify-content:center;color:#dbe7f7}
.mx-social a:hover{background:#0d5cd6;color:#fff}
.mx-social .mx-mi{font-size:17px;width:17px;height:17px}
.mx-newsletter form{display:flex;height:38px;border-radius:5px;overflow:hidden;background:#fff}
.mx-newsletter input{flex:1 1 auto;min-width:0;border:0;outline:none;padding:0 12px;font-size:12px;color:#1a2332}
.mx-newsletter button{flex:0 0 auto;width:42px;border:0;background:#0d5cd6;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}
.mx-newsletter button:hover{background:#1d74f5}
.mx-fbottom{border-top:1px solid #14365e}
.mx-fbottom .mx-wrap{padding:14px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px}
.mx-copy{font-size:11px;color:#8ea3c0}
.mx-paylogos{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.mx-paylogos span{height:24px;padding:0 9px;border-radius:4px;background:#fff;display:flex;align-items:center;font-size:9.5px;font-weight:800;letter-spacing:.03em}
.mx-moit{display:flex;align-items:center;gap:7px;border:1px solid #1d4576;border-radius:5px;padding:5px 10px}
.mx-moit .mx-mi{font-size:17px;color:#5b9dff;width:17px;height:17px}
.mx-moit b{display:block;font-size:9.5px;font-weight:700;color:#dbe7f7}
.mx-moit small{display:block;font-size:8px;color:#8ea3c0}
.mx-chat{position:fixed;right:18px;bottom:18px;z-index:60;width:48px;height:48px;border-radius:50%;background:#0d5cd6;box-shadow:0 8px 24px rgba(13,92,214,.42);display:flex;align-items:center;justify-content:center}
.mx-chat:hover{background:#1d74f5}
.mx-chat .mx-mi{font-size:24px;color:#fff;width:25px;height:25px}
.mx-chat--left{right:auto;left:18px}

/* ---------- Nút liên hệ nổi (bung ra Gọi / Zalo / Messenger) ---------- */
/* ⚠️ `align-items:center` để ba nút kênh (44px) và nút chính (52px) chung MỘT trục
   dọc. Để `flex-end` thì chúng thẳng mép phải mà lệch tâm 4px — nhìn ra ngay là một
   cột xộc xệch. */
.mx-fab{position:fixed;right:18px;bottom:18px;z-index:60;display:flex;flex-direction:column;
  align-items:center;gap:10px}
.mx-fab--left{right:auto;left:18px}
.mx-fab-list{display:flex;flex-direction:column;align-items:center;gap:10px}

.mx-fab-item{display:flex;text-decoration:none}
.mx-fab-ico{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;box-shadow:0 6px 18px rgba(10,35,66,.22);overflow:hidden}
.mx-fab-ico .mx-mi{color:#fff;font-size:21px;width:22px;height:22px}
/* Logo thương hiệu tự mang màu của nó, nên ngồi trên nền trắng chứ không nền màu. */
.mx-fab-ico--img{background:#fff}
.mx-fab-ico--img img{width:26px;height:26px;object-fit:contain;display:block}

/* Nút chính. Hai icon chồng lên nhau, chỉ một cái hiện — xem chú thích trong
   inc/contact-fab.php về việc vì sao không đổi chữ bằng JS. */
.mx-fab-btn{position:relative;width:52px;height:52px;border:0;border-radius:50%;padding:0;
  background:#0d5cd6;box-shadow:0 8px 24px rgba(13,92,214,.42);cursor:pointer;
  display:flex;align-items:center;justify-content:center}
.mx-fab-btn:hover{background:#1d74f5}
.mx-fab-btn .mx-mi{position:absolute;color:#fff;transition:opacity .18s,transform .22s}
.mx-fab-btn .mx-mi:first-of-type{font-size:25px;width:26px;height:26px}
.mx-fab-btn .mx-mi:last-of-type{font-size:24px;width:25px;height:25px;opacity:0;transform:rotate(-90deg)}
.mx-fab.is-open .mx-fab-btn .mx-mi:first-of-type{opacity:0;transform:rotate(90deg)}
.mx-fab.is-open .mx-fab-btn .mx-mi:last-of-type{opacity:1;transform:rotate(0)}

/* --- Hiệu ứng --- */
/* Nhịp đập mời bấm. ⚠️ Vẽ bằng ::after chứ không animate `box-shadow` của chính nút:
   box-shadow đổi mỗi khung hình bắt trình duyệt vẽ lại, còn transform/opacity thì
   chạy trên GPU — trên điện thoại yếu, cách kia làm giật cả trang khi cuộn. */
.mx-fab-btn::after{content:"";position:absolute;inset:0;border-radius:50%;
  background:#0d5cd6;opacity:.5;z-index:-1;animation:mxfabping 2.4s ease-out infinite}
.mx-fab.is-open .mx-fab-btn::after{animation:none;opacity:0}
@keyframes mxfabping{0%{transform:scale(1);opacity:.5}70%{transform:scale(1.55);opacity:0}100%{opacity:0}}

/* Bung ra: từng nút trượt lên và hiện dần, lệch nhau một nhịp cho có lớp lang. */
.mx-fab-item{opacity:0;transform:translateY(10px) scale(.9);
  transition:opacity .2s ease,transform .2s ease}
.mx-fab.is-open .mx-fab-item{opacity:1;transform:none}
.mx-fab.is-open .mx-fab-item:nth-child(1){transition-delay:.03s}
.mx-fab.is-open .mx-fab-item:nth-child(2){transition-delay:.08s}
.mx-fab.is-open .mx-fab-item:nth-child(3){transition-delay:.13s}
.mx-fab.is-open .mx-fab-item:nth-child(4){transition-delay:.18s}
.mx-fab-item:hover .mx-fab-ico{transform:scale(1.08)}
.mx-fab-ico{transition:transform .15s ease}

/* ⚠️ Người bật "giảm chuyển động" trong hệ điều hành thường bật vì chuyển động gây
   chóng mặt hoặc buồn nôn — một cái nút đập liên tục ở góc màn hình là đúng thứ họ
   tắt. Tắt hiệu ứng chứ KHÔNG tắt nút. */
@media (prefers-reduced-motion:reduce){
  .mx-fab-btn::after{animation:none;opacity:0}
  .mx-fab-item,.mx-fab-btn .mx-mi,.mx-fab-ico{transition:none}
  .mx-fab.is-open .mx-fab-item{transition-delay:0s}
}

/* ---------- Responsive ---------- */
@media (max-width:1080px){
  .mx-hero-grid{grid-template-columns:minmax(0,1fr)}
  .mx-sidebar{display:none}
  .mx-mega-panel{width:480px}
  .mx-feature:nth-child(3){flex:1 1 100%}
  .mx-cats{grid-template-columns:repeat(6,minmax(0,1fr))}
}
/* ⚠️ Dải "Hệ thống cửa hàng · Tải ứng dụng · 1900 1234" ở thanh trên cùng không xuống
   dòng được (mỗi mục `white-space:nowrap`), nên dưới một khổ nhất định nó chọc ra
   ngoài mép và kéo theo THANH CUỘN NGANG cho cả trang. Trước đây chỉ ẩn ở ≤640.
   ⚠️ Ngưỡng là 920px chứ không phải 860. Lần đo đầu ra 860 vì bộ đo chặn phông web
   nên chữ hẹp hơn thật; đo lại với đúng Be Vietnam Pro thì mép phải của dải đứng ở
   913px, tức từ 920px trở xuống là tràn (thừa 13px ở 900, 52px ở 861).
   ⚠️ Chỉ ẩn dải của THANH TRÊN CÙNG, không đụng năm chỗ khác cũng mang lớp
   `mx-hide-sm` trong header. */
@media (max-width:920px){ .mx-topbar .mx-hide-sm{display:none} }

@media (max-width:860px){
  .mx-hero-row{flex-direction:column}
  .mx-heroside{flex:0 0 auto;flex-direction:row}
  .mx-heroside>div{flex:1 1 0}
  .mx-dealwrap{flex-direction:column}
  .mx-dealpromo{flex:1 1 auto;max-width:none;width:100%;min-height:230px}
  .mx-pdp{grid-template-columns:minmax(0,1fr);gap:18px}
  .mx-flyout{display:none!important}
  .mx-content{padding:20px 18px}
}
@media (max-width:640px){
  .mx-hide-sm{display:none!important}
  .mx-catbtn{width:auto}
  .mx-catbtn-full{display:none}
  .mx-catbtn-short{display:inline}
  .mx-logo{order:1}
  /* Logo và cụm icon tài khoản/giỏ đứng chung một hàng ở khổ hẹp — logo rộng quá là
     đẩy cụm icon rớt xuống. 190px đo trên khổ 360px: 190 + 18 gap + 70 icon = 278 <
     332 lòng trong. ⚠️ CHỈ hạ max-width, KHÔNG hạ height: hạ height là đầu trang tụt
     4px so với lúc chưa tải logo, mà đó là thứ chủ site không hề ra lệnh. */
  .mx-logo .mx-logo-img{max-width:190px}
  .mx-actions{order:2;margin-left:auto}
  .mx-search{order:3;flex:1 1 100%;margin-left:0}
  .mx-heroside{flex-direction:column}
  .mx-heroside>div{flex:0 0 auto} /* column tro lai: flex-basis:0 se an vao chieu cao */
  .mx-slide-txt{max-width:100%;padding:20px 18px 40px}
  .mx-scrim{background:linear-gradient(180deg,rgba(6,26,66,.90) 0%,rgba(6,26,66,.78) 52%,rgba(6,26,66,.66) 100%)}
  .mx-perks,.mx-stats{max-width:100%}
  /* Ảnh nền dải tiêu chí: 0.28 → 0.7. Mức 0.28 làm ảnh gần như biến mất trên
     điện thoại, trong khi thẻ ở mobile rộng 292–358px, xấp xỉ thẻ desktop (~381px)
     vốn dùng opacity 1 mà chữ vẫn đọc tốt. Chữ không bị ảnh hưởng vì .mx-fscrim
     phủ trắng đặc từ mép trái tới 42% rồi mới nhạt dần — đã soi cả ba thẻ ở
     320/375/414px. Muốn rõ hơn nữa thì nâng số này, tối đa 1 là bằng desktop. */
  .mx-feature .mx-fbg{opacity:.7}
  .mx-newsletter{flex:1 1 100%}
  .mx-topbar ul li:nth-child(n+2){display:none}
  .mx-content h1{font-size:20px}
  .mx-pdp-price .mx-now{font-size:24px}
  /* Form tra cứu: xếp dọc, nút chiếm trọn bề ngang. Lưới 3 cột ở khổ 375px cho
     mỗi ô ~110px, không đủ gõ số điện thoại. */
  .mx-look-form{grid-template-columns:minmax(0,1fr);gap:12px}
  .mx-look-go{justify-content:center;width:100%}
  .mx-look-tb th{width:104px}
  /* Dải tiêu chí: chốt CỨNG 2 cột. Luật nền flex:1 1 180px quyết định xuống hàng
     theo BASIS chứ không theo bề rộng sau khi co, nên hai mục cần 180+180+12=372px
     — khổ ≤428px không đủ và rơi về MỘT cột, thành 6 hàng. Máy chủ site rộng 430px
     nên nhìn ra 2 cột, còn iPhone 390/414px thì không. calc(50% - 6px) là nửa bề
     ngang trừ nửa gap 12px. */
  .mx-strip>div{flex:0 0 calc(50% - 6px)}
  /* Giỏ hàng & thanh toán: xếp dọc, cột tóm tắt thôi dính.
     ⚠️ Phải trả align-items về stretch. Luật nền đặt align-items:flex-start để cột
     tóm tắt ở desktop không bị kéo cao bằng cột trái; nhưng khi đổi sang column thì
     flex-start lại co con theo BỀ RỘNG NỘI DUNG. Cột phải có width:100% nên vẫn đủ
     bề ngang, còn .mx-co-main / .mx-cart-list thì không — ba khối "Thông tin người
     nhận · Địa chỉ giao hàng · Hình thức thanh toán" co lại 246px và đứng thụt vào
     so với khối "Đơn hàng của bạn" ngay dưới. Đo trên Chromium: 360/390/414px đều
     ra ĐÚNG 246px vì đó là bề rộng nội dung, không dính gì tới bề rộng màn hình.
     Sửa ở CONTAINER chứ không vá width:100% cho từng con: con thứ ba thêm vào sau
     này sẽ dính đúng bẫy ấy mà không ai ngờ. */
  .mx-cart-body,.mx-co{flex-direction:column;align-items:stretch}
  .mx-cart-side,.mx-co-side{flex:1 1 auto;width:100%;position:static}
  .mx-fgrid,.mx-pays,.mx-rvgrid,.mx-acc-two{grid-template-columns:minmax(0,1fr)}
  /* Khối đánh giá ở khổ hẹp: cột điểm trải hết bề ngang (186px giữa màn 390px trông
     như bị lệch), thanh phân bố bỏ cột "n đánh giá" cho khỏi tràn. */
  .mx-rv-panel{gap:16px;padding:16px}
  .mx-rv-score{width:100%}
  .mx-rv-bn{display:none}
  .mx-rvpick-s label span{font-size:10px}
  .mx-rvmodal{padding:0;align-items:flex-end}
  .mx-rvmodal-box{max-width:none;max-height:92vh;border-radius:14px 14px 0 0}
  /* Thanh lọc ở khổ hẹp: hai ô chọn nằm chung một hàng, mỗi ô nửa bề ngang. Để
     nguyên flex-wrap thì "Thương hiệu" chiếm gần trọn hàng và "Sắp xếp" rớt xuống
     một mình, ra ba hàng cho một thanh lọc. */
  .mx-frow{gap:9px}
  /* Nhãn LÊN TRÊN ô chọn, không đứng cạnh: "Thương hiệu" đứng cạnh thì ở khổ 390px
     nó tự ngắt thành hai dòng và ô chọn tụt xuống lệch hẳn so với ô bên cạnh. */
  .mx-fsel{flex:1 1 calc(50% - 5px);min-width:0;flex-direction:column;align-items:stretch;gap:4px}
  .mx-fsel>span{font-size:11.5px;font-weight:600}
  .mx-fsel select{flex:1 1 auto;max-width:none;min-width:0;width:100%}
  .mx-fcheck{flex:1 1 auto}
  .mx-fgo{flex:0 0 auto}
  .mx-ci{flex-wrap:wrap}
  .mx-ci-line{min-width:0;margin-left:auto}
  /* Ẩn ba thẻ cam kết, đưa dải danh mục lên đúng chỗ chúng vừa nhường.
     .mx-main thành flex column để dùng order — mọi section chỉ có margin-top,
     không có margin-bottom, nên không mất margin collapsing nào. */
  .mx-heroside{display:none}
  .mx-main{display:flex;flex-direction:column}
  .mx-main>*{order:3}
  .mx-hero-grid{order:1}
  .mx-sec--cats{order:2}
  /* Tin tức: slider 2 bài một màn, vuốt ngang — cùng cơ chế với dải danh mục.
     calc(50% - 6px) là nửa bề ngang trừ nửa gap 12px: 2 thẻ + 1 gap ra đúng 100%,
     nên vừa KHÍT một màn, KHÔNG có thẻ nào ló ra. Đúng ý "2 bài 1 hàng", đổi lại
     là không còn dấu hiệu nhìn thấy được rằng vuốt tiếp được — muốn có thì hạ
     xuống calc(46% - 6px) cho thẻ thứ ba hở một mẩu. Thumb 132 → 150px. */
  .mx-news{display:flex;flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x proximity;gap:12px;padding-bottom:6px;-webkit-overflow-scrolling:touch}
  .mx-post{flex:0 0 calc(50% - 6px);scroll-snap-align:start}
  .mx-post .mx-pimg{height:150px}
  /* Slider vuốt ngang thay cho lưới */
  /* Lưới sản phẩm: 2 cột CỨNG. auto-fill+minmax(148px) ở khổ 320px chỉ đủ MỘT
     cột (292px < 148*2+12), nên phải chốt số cột chứ không để nó tự tính. */
  .mx-dealgrid,.mx-pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mx-clamp>*:nth-child(n+7){display:none}   /* 6 ô = 3 hàng × 2, phải khớp MX_MOBILE_CARDS */
  /* .mx-clamp-m: cắt CHỈ ở mobile. Tab bán chạy dùng lớp này chứ không dùng
     .mx-clamp, vì .mx-clamp còn một luật ở khối min-width:641px cắt xuống 5 ô —
     desktop phải hiện đủ cả 7 sản phẩm của mỗi danh mục. */
  .mx-clamp-m>*:nth-child(n+7){display:none}
  .mx-more{display:flex}
  .mx-cats{display:flex;flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x proximity;gap:10px;padding-bottom:6px;-webkit-overflow-scrolling:touch}
  .mx-cats a{flex:0 0 88px;scroll-snap-align:start;padding:12px 6px 10px}
  .mx-cats span{font-size:11px}
}

/* ============================================================================
   WOOCOMMERCE — sơn markup gốc của plugin theo giao diện MayXanh.

   ⚠️ Khối này dựa vào việc `mx-style` được nạp SAU mấy tệp CSS của WooCommerce
   (đo trên trang thật: wc-blocks-style → woocommerce-layout → woocommerce-general
   → mx-fonts → mx-style). Thứ tự ấy do WordPress quyết chứ không phải ta, nên các
   bộ chọn dưới đây đều bọc thêm một lớp ngữ cảnh (.mx-woopage / .woocommerce /
   .mx-pdp) để thắng bằng ĐỘ ĐẶC HIỆU, không phải nhờ đứng sau. Một plugin khác cài
   sau đẩy CSS xuống dưới là đủ để đảo thứ tự, và lúc ấy trang thanh toán trở lại
   dáng mặc định của Woo mà chẳng có lỗi nào.

   ⚠️ KHÔNG đụng tới cấu trúc markup của Woo — chỉ đổi phần nhìn. Ẩn hay đổi chỗ
   một phần tử của Woo là mấy plugin cắm vào đó (cổng thanh toán, vận chuyển, theo
   dõi chuyển đổi) mất chỗ bám.
   ============================================================================ */

.mx-woopage .woocommerce{max-width:none}
.mx-woopage form.checkout,.mx-woopage .woocommerce-cart-form{margin:0}

/* --- Thông báo --- */
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-error,
.mx-woopage .woocommerce-message,.mx-woopage .woocommerce-info,.mx-woopage .woocommerce-error{
  display:flex;align-items:center;flex-wrap:wrap;gap:10px;
  margin:0 0 16px;padding:12px 16px;border-radius:9px;border:1px solid #dfe6f0;
  background:#f4f8ff;color:#0a2342;font-size:13.5px;line-height:1.55;list-style:none}
.mx-woopage .woocommerce-message{background:#eefbf2;border-color:#c9ecd6;color:#15803d}
.mx-woopage .woocommerce-error{background:#fef2f2;border-color:#f6cfcb;color:#b91c1c}
.mx-woopage .woocommerce-message::before,.mx-woopage .woocommerce-info::before,
.mx-woopage .woocommerce-error::before{display:none}
.mx-woopage .woocommerce-error li{margin:0}

/* --- Nút: mượn nguyên dáng .mx-btn --- */
.mx-woopage .woocommerce a.button,.mx-woopage .woocommerce button.button,
.mx-woopage .woocommerce input.button,.mx-woopage .woocommerce a.button.alt,
.mx-woopage .woocommerce button.button.alt,.mx-pdp .single_add_to_cart_button{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  background:#0d5cd6;color:#fff;font:inherit;font-size:13px;font-weight:700;
  padding:11px 20px;border:0;border-radius:6px;letter-spacing:.03em;line-height:1.2;
  text-transform:none;cursor:pointer;transition:background .12s}
.mx-woopage .woocommerce a.button:hover,.mx-woopage .woocommerce button.button:hover,
.mx-woopage .woocommerce input.button:hover,.mx-pdp .single_add_to_cart_button:hover{
  background:#1d74f5;color:#fff}
/* Nút phụ (Cập nhật giỏ, Áp dụng mã) — viền, không nền đặc, để nút chính nổi hẳn. */
.mx-woopage .woocommerce button.button[name="update_cart"],
.mx-woopage .woocommerce .coupon button.button{
  background:#fff;color:#0d5cd6;border:1.5px solid #0d5cd6}
.mx-woopage .woocommerce button.button[name="update_cart"]:hover,
.mx-woopage .woocommerce .coupon button.button:hover{background:#f4f8ff;color:#0a47a8}
.mx-woopage .woocommerce button.button:disabled,
.mx-woopage .woocommerce button.button[disabled]{opacity:.5;cursor:default}

/* --- Bảng giỏ hàng --- */
.mx-woopage .shop_table{
  width:100%;border-collapse:collapse;background:#fff;
  border:1px solid #e6e9ef;border-radius:10px;overflow:hidden;margin:0 0 18px;font-size:13.5px}
.mx-woopage .shop_table th{
  padding:13px 14px;text-align:left;background:#f7f9fc;border-bottom:1px solid #e6e9ef;
  font-size:12px;font-weight:700;color:#5d7590;letter-spacing:.02em;text-transform:uppercase}
.mx-woopage .shop_table td{padding:14px;border-bottom:1px solid #eef1f5;color:#3d4a5c;vertical-align:middle}
.mx-woopage .shop_table tr:last-child td{border-bottom:0}
.mx-woopage .shop_table .product-thumbnail img{width:64px;height:64px;object-fit:contain;display:block;border-radius:8px;background:#f7f9fc}
.mx-woopage .shop_table .product-name a{color:#0a2342;font-weight:600}
.mx-woopage .shop_table .product-name a:hover{color:#0d5cd6}
.mx-woopage .shop_table .amount{color:#0a2342;font-weight:700}
.mx-woopage .shop_table .product-remove a.remove{
  display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border-radius:50%;background:#f2f5f9;color:#7b8797;font-size:17px;line-height:1;text-decoration:none}
.mx-woopage .shop_table .product-remove a.remove:hover{background:#fee2e2;color:#e0281c}
.mx-woopage .shop_table td.actions{background:#f7f9fc;padding:14px}
.mx-woopage .shop_table td.actions .coupon{display:flex;gap:8px;align-items:center;flex-wrap:wrap;float:none}
.mx-woopage .shop_table td.actions .coupon label{display:none}

/* Ô nhập số lượng + mọi ô nhập khác của Woo, cùng một dáng với ô của theme. */
.mx-woopage .quantity input.qty{
  width:72px;box-sizing:border-box;border:1px solid #dfe6f0;border-radius:7px;
  padding:9px 8px;font:inherit;font-size:13.5px;text-align:center;color:#0a2342}
.mx-woopage input.input-text,.mx-woopage textarea,.mx-woopage select,
.mx-pdp .variations select{
  box-sizing:border-box;width:100%;border:1px solid #dfe6f0;border-radius:8px;
  padding:11px 13px;font:inherit;font-size:13.5px;color:#0a2342;background:#fff}
.mx-woopage input.input-text:focus,.mx-woopage textarea:focus,.mx-woopage select:focus,
.mx-woopage .quantity input.qty:focus,.mx-pdp .variations select:focus{
  outline:0;border-color:#0d5cd6;box-shadow:0 0 0 3px rgba(13,92,214,.14)}
.mx-woopage .shop_table td.actions .coupon input.input-text{width:auto;min-width:190px;flex:0 1 auto}

/* --- Cột tổng tiền --- */
.mx-woopage .cart-collaterals{width:100%;display:flex;justify-content:flex-end}
.mx-woopage .cart_totals{
  width:340px;max-width:100%;background:#fff;border:1px solid #e6e9ef;border-radius:10px;padding:16px 18px 18px}
.mx-woopage .cart_totals h2{margin:0 0 12px;font-size:15px;font-weight:800;color:#0a2342}
.mx-woopage .cart_totals .shop_table{border:0;margin:0;font-size:13px}
.mx-woopage .cart_totals .shop_table th,.mx-woopage .cart_totals .shop_table td{
  padding:8px 0;background:none;border-bottom:1px solid #eef1f5;text-transform:none;
  font-size:13px;font-weight:600;color:#3d4a5c;letter-spacing:0}
.mx-woopage .cart_totals .shop_table td{text-align:right}
.mx-woopage .cart_totals .order-total th,.mx-woopage .cart_totals .order-total td{border-bottom:0;padding-top:12px}
.mx-woopage .cart_totals .order-total .amount{font-size:20px;font-weight:800;color:#e0281c}
.mx-woopage .wc-proceed-to-checkout{margin-top:14px}
.mx-woopage .wc-proceed-to-checkout a.checkout-button{width:100%}

/* --- Trang thanh toán --- */
.mx-woopage #customer_details{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.mx-woopage #customer_details .col-1,.mx-woopage #customer_details .col-2{
  flex:1 1 300px;min-width:0;width:auto;float:none;
  background:#fff;border:1px solid #e6e9ef;border-radius:10px;padding:18px 20px 20px}
.mx-woopage #customer_details h3,.mx-woopage #order_review_heading{
  margin:0 0 14px;font-size:15px;font-weight:800;color:#0a2342}
.mx-woopage #order_review_heading{margin-top:0}
.mx-woopage .form-row{display:block;margin:0 0 13px;padding:0}
.mx-woopage .form-row label{display:block;margin-bottom:5px;font-size:12.5px;font-weight:600;color:#5d7590}
.mx-woopage .form-row .required{color:#e0281c;text-decoration:none}
.mx-woopage .form-row-first,.mx-woopage .form-row-last{width:calc(50% - 6px);float:none;display:inline-block;vertical-align:top}
.mx-woopage .form-row-first{margin-right:8px}
.mx-woopage #order_review{background:#fff;border:1px solid #e6e9ef;border-radius:10px;padding:18px 20px 20px}
.mx-woopage #order_review .shop_table{border:0;margin-bottom:14px}
.mx-woopage #order_review .shop_table th,.mx-woopage #order_review .shop_table td{padding:9px 0;background:none}
.mx-woopage #order_review .order-total .amount{font-size:20px;font-weight:800;color:#e0281c}

/* Danh sách cách trả tiền — cùng dáng bốn ô .mx-pay-b của trang cũ. */
.mx-woopage .wc_payment_methods{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:10px}
.mx-woopage .wc_payment_method{position:relative;margin:0}
.mx-woopage .wc_payment_method>input[type=radio]{position:absolute;opacity:0;width:1px;height:1px}
.mx-woopage .wc_payment_method>label{
  display:flex;align-items:center;gap:10px;width:100%;min-height:56px;box-sizing:border-box;
  border:1px solid #e2e8f0;border-radius:10px;padding:12px 30px 12px 14px;background:#fff;
  font-size:13px;font-weight:600;color:#3d4a5c;cursor:pointer;
  transition:border-color .12s,background .12s}
.mx-woopage .wc_payment_method>label::after{
  content:"check_circle";position:absolute;top:7px;right:9px;
  font-family:"Material Symbols Outlined";font-size:18px;line-height:1;color:#0d5cd6;
  opacity:0;transform:scale(.7);transition:opacity .12s,transform .12s}
.mx-woopage .wc_payment_method>input:checked+label{border-color:#0d5cd6;background:#f4f8ff;color:#0a2342}
.mx-woopage .wc_payment_method>input:checked+label::after{opacity:1;transform:scale(1)}
.mx-woopage .wc_payment_method>label img{max-height:26px;width:auto}
.mx-woopage .payment_box{
  margin:8px 0 0;padding:12px 14px;border-radius:9px;background:#f7f9fc;
  font-size:12.5px;line-height:1.6;color:#5d7590}
.mx-woopage .payment_box::before{display:none}
.mx-woopage .payment_box p:last-child{margin-bottom:0}
.mx-woopage .place-order{margin:0}
.mx-woopage #place_order{width:100%;padding:14px;font-size:14px}
.mx-woopage .woocommerce-terms-and-conditions-wrapper{margin-bottom:12px;font-size:12.5px;color:#7b8797}

/* --- Tài khoản của tôi --- */
.mx-woopage .woocommerce-MyAccount-navigation{
  float:none;width:238px;flex:0 0 238px;
  background:#fff;border:1px solid #e6e9ef;border-radius:10px;padding:8px}
.mx-woopage .woocommerce-MyAccount-navigation ul{list-style:none;margin:0;padding:0}
.mx-woopage .woocommerce-MyAccount-navigation li a{
  display:block;padding:10px 13px;border-radius:8px;font-size:13.5px;font-weight:600;color:#3d4a5c}
.mx-woopage .woocommerce-MyAccount-navigation li a:hover{background:#f4f8ff;color:#0d5cd6}
.mx-woopage .woocommerce-MyAccount-navigation li.is-active a{background:#0d5cd6;color:#fff}
.mx-woopage .woocommerce-MyAccount-content{
  float:none;width:auto;flex:1 1 auto;min-width:0;
  background:#fff;border:1px solid #e6e9ef;border-radius:10px;padding:20px 22px;font-size:13.5px;line-height:1.65;color:#3d4a5c}
/* ⚠️ Woo dựng hai khối này bằng `float`. Bọc flex ở CHÍNH thẻ .woocommerce chứ không
   thêm div — thêm thẻ là phải override template, mà template ấy Woo còn đổi. */
.mx-woopage .woocommerce-account .woocommerce,
.mx-woopage .woocommerce:has(.woocommerce-MyAccount-navigation){display:flex;gap:16px;align-items:flex-start}
.mx-woopage .woocommerce-form-login,.mx-woopage .woocommerce-form-register{
  background:#fff;border:1px solid #e6e9ef;border-radius:10px;padding:20px 22px}
.mx-woopage .woocommerce-form-login__rememberme{font-weight:600;color:#5d7590}

/* --- Form mua trên trang chi tiết sản phẩm --- */
/* ⚠️ `flex-wrap:nowrap` là BẮT BUỘC, không phải cho gọn. Khối này mang cả hai lớp
   `mx-buybox mx-woobuy`, mà `.mx-buybox` đặt `flex-wrap:wrap` cho bố cục HÀNG của
   chế độ cũ. Ở đây hướng là CỘT, và một container cột CÓ wrap thì kéo giãn con theo
   chiều dọc: đo được form biến thể phình từ 232px lên 284px, đẻ ra 53px trắng ngay
   giữa nút mua và nút TRẢ GÓP — khoảng cách 10px thành 63px. Không lỗi, không cảnh
   báo, chỉ là một quãng trống trông như thiếu mất cái gì.
   Cùng lớp lỗi với `align-items:flex-start` rơi vào chế độ cột ở trang Giỏ hàng:
   thuộc tính flex viết cho HÀNG mà lọt sang CỘT thì nghĩa đổi hẳn. */
.mx-pdp .mx-woobuy{display:flex;flex-direction:column;flex-wrap:nowrap;gap:10px;align-items:stretch}
.mx-pdp form.cart{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0}
.mx-pdp form.cart .quantity input.qty{
  width:78px;box-sizing:border-box;border:1px solid #dfe6f0;border-radius:7px;
  padding:11px 8px;font:inherit;font-size:14px;text-align:center;color:#0a2342}
.mx-pdp .single_add_to_cart_button{flex:1 1 200px;padding:13px 20px;font-size:14px}
/* ⚠️ Form biến thể là một CHỒNG KHỐI DỌC, không phải một hàng — trả nó về block.
   Luật `.mx-pdp form.cart` ở trên đặt flex (đúng cho sản phẩm ĐƠN: ô số lượng và nút
   mua nằm chung một hàng), nhưng nó cũng kèm `flex-wrap:wrap`, và một flex container
   hướng cột CÓ wrap thì kéo giãn con theo chiều dọc: đo được `.single_variation_wrap`
   phình từ 46px lên 99px, đẻ ra một khoảng trắng 53px ngay dưới nút mua mà không có
   gì trong đó. Đổi flex-direction thôi thì không đủ — phải bỏ hẳn flex. */
.mx-pdp form.variations_form{display:block}
.mx-pdp .variations{width:100%;border-collapse:collapse;margin:0 0 12px}
.mx-pdp .variations th.label{
  padding:0 12px 10px 0;text-align:left;vertical-align:middle;white-space:nowrap;
  font-size:13px;font-weight:700;color:#0a2342}
.mx-pdp .variations td.value{padding:0 0 10px}

/* --- Ô bấm chọn biến thể thay cho dropdown của Woo ---
   Lớp .mx-vchips do JS gắn SAU khi dựng xong dải ô bấm. Nhờ vậy tắt JS thì <select>
   vẫn hiện và vẫn mua được — giấu nó bằng CSS trần là bộ chọn biến thể biến mất hẳn
   với ai chặn script.
   ⚠️ Chỉ GIẤU select, không gỡ khỏi DOM: xem chú thích ở wooVariationChips().
   Dùng lại đúng .mx-vopt / .mx-vopts của bộ chọn cũ nên hai chế độ nhìn giống hệt. */
.mx-pdp .mx-vchips .variations select{display:none}
/* Nhãn LÊN TRÊN dải ô bấm, không đứng cạnh: mấy ô bấm chiếm cả hàng, để nhãn bên
   trái thì cột nhãn kéo giãn theo hàng dài nhất và tên thuộc tính treo lơ lửng giữa
   một khoảng trắng. */
.mx-pdp .mx-vchips .variations,
.mx-pdp .mx-vchips .variations tbody,
.mx-pdp .mx-vchips .variations tr,
.mx-pdp .mx-vchips .variations th.label,
.mx-pdp .mx-vchips .variations td.value{display:block;width:auto}
.mx-pdp .mx-vchips .variations tr{margin-bottom:12px}
/* Hàng CUỐI thôi lề dưới: khối giá/nút mua ngay sau đã có khoảng cách riêng, cộng
   thêm 12px nữa là một quãng trống không ai đặt. */
.mx-pdp .mx-vchips .variations tr:last-child{margin-bottom:0}
.mx-pdp .mx-vchips .variations th.label{padding:0 0 7px;white-space:normal}
.mx-pdp .mx-vchips .variations th.label label{
  margin:0;font-size:12.5px;font-weight:700;color:#5d7590}
.mx-pdp .mx-vchips .variations td.value{padding:0}
.mx-pdp .mx-vchips .reset_variations{margin-top:2px}
.mx-pdp .reset_variations{display:inline-block;margin-top:6px;font-size:12px;color:#7b8797}
.mx-pdp .woocommerce-variation-price{margin-bottom:10px}
.mx-pdp .woocommerce-variation-price .amount{font-size:22px;font-weight:800;color:#e0281c}
.mx-pdp .woocommerce-variation-availability{font-size:12.5px;color:#5d7590;margin-bottom:8px}
.mx-pdp .woocommerce-variation-add-to-cart{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.mx-pdp .stock.out-of-stock{color:#e0281c;font-weight:700;font-size:13px}
/* ⚠️ Nút mua lúc CHƯA chọn đủ thuộc tính. WooCommerce đặt `disabled` lên nó, nhưng
   nếu không sơn thì nó vẫn xanh đậm, vẫn con trỏ tay — nhìn y hệt nút bấm được, mà
   bấm thì không có gì xảy ra và cũng không có lời nào giải thích. Đo được trên trang
   dựng thật: disabled=true mà opacity=1, cursor=pointer.
   ⚠️ Luật `:disabled` ở khối trang Giỏ/Thanh toán KHÔNG với tới đây: nó bọc trong
   .mx-woopage, còn trang chi tiết sản phẩm không mang lớp ấy. Đúng lớp lỗi "đặt tên
   lớp không phải là viết CSS" — tên có, phạm vi sai, không ai thấy. */
.mx-pdp .single_add_to_cart_button:disabled,
.mx-pdp form.cart .button:disabled{
  background:#c3ccd8;color:#fff;cursor:not-allowed;box-shadow:none}
.mx-pdp .single_add_to_cart_button:disabled:hover,
.mx-pdp form.cart .button:disabled:hover{background:#c3ccd8}
/* Ô số lượng cũng khoá theo — để nó sáng cạnh một nút xám là mời người ta gõ vào rồi
   bấm một cái nút không ăn. */
.mx-pdp form.cart .quantity input.qty:disabled{background:#f2f5f9;color:#9aa5b4;cursor:not-allowed}
/* Woo in lại giá + tồn kho của chính nó ngay trên form. Khối .mx-pdp-price ở trên đã
   nói đúng những con số ấy rồi, nên ẩn bản của Woo ĐI cho khỏi lặp — nhưng CHỈ ở
   trang chi tiết, và chỉ phần giá tĩnh (`p.price`), KHÔNG ẩn
   `.woocommerce-variation-price` vì nó là con số đổi theo biến thể khách vừa chọn. */
.mx-pdp>.mx-pdp-main>p.price,.mx-pdp .summary>p.price{display:none}

/* --- Phân trang của Woo, dùng lại dáng .mx-pagination --- */
.mx-woopage .woocommerce-pagination ul,.woocommerce-pagination ul.page-numbers{
  list-style:none;display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:0;padding:0;border:0}
.woocommerce-pagination ul.page-numbers li{border:0;margin:0}
.woocommerce-pagination ul.page-numbers li a,.woocommerce-pagination ul.page-numbers li span{
  display:block;padding:8px 13px;border:1px solid #e6e9ef;border-radius:7px;
  background:#fff;font-size:13px;font-weight:600;color:#3d4a5c}
.woocommerce-pagination ul.page-numbers li span.current{background:#0d5cd6;border-color:#0d5cd6;color:#fff}

@media (max-width:640px){
  .mx-woopage #customer_details{gap:12px}
  .mx-woopage .form-row-first,.mx-woopage .form-row-last{width:100%;margin-right:0}
  .mx-woopage .cart_totals{width:100%}
  .mx-woopage .cart-collaterals{justify-content:stretch}
  /* Cột menu tài khoản trải hết bề ngang, xếp trên nội dung. */
  .mx-woopage .woocommerce-account .woocommerce,
  .mx-woopage .woocommerce:has(.woocommerce-MyAccount-navigation){flex-direction:column}
  .mx-woopage .woocommerce-MyAccount-navigation{width:100%;flex:1 1 auto}
  .mx-woopage .woocommerce-MyAccount-navigation ul{display:flex;flex-wrap:wrap;gap:4px}
  /* ⚠️ Bảng giỏ ở khổ hẹp: Woo tự đổi sang kiểu "mỗi ô một dòng" bằng lớp
     shop_table_responsive và thuộc tính data-title. Đừng ép display:block cho <table>
     ở đây — làm thế là đè lên cơ chế ấy và mọi nhãn cột biến mất. */
  .mx-woopage .shop_table td{padding:11px 12px}
  .mx-woopage .shop_table .product-thumbnail img{width:52px;height:52px}
  .mx-woopage .shop_table td.actions .coupon input.input-text{min-width:0;flex:1 1 140px}
  .mx-pdp .single_add_to_cart_button{flex:1 1 100%}
}
