/* ==========================================================
   Shop Đồ Lưu Niệm (/shop) – khớp bản demo đã duyệt.
   Mọi lớp đều có tiền tố sh- để không đụng giao diện trang chủ (style.css).
   ========================================================== */
/* Thang chữ riêng của /shop, chỉnh sát bản demo (đợt U1a). Vẫn theo quy tắc css/type.css: không dùng độ đậm 900, đơn vị rem. */
:root{--fs-shbanner:clamp(2.125rem,4vw,4rem);--fs-shlead:clamp(1rem,1.3vw,1.25rem);--fs-shsec:clamp(1.625rem,2.4vw,2.5rem)}
.sh-page{position:relative;z-index:1;min-height:100vh}
.sh-page a{color:var(--accent-ink)}
.sh-page a.sh-btn{color:inherit}
.sh-img{display:block;width:100%;height:100%;object-fit:cover}
.sh-toprow{background:#2A52D9;color:#fff;padding:11px 0;font-size:var(--fs-sm);font-weight:600;line-height:18px}
.sh-tbrow{display:flex;align-items:center;justify-content:space-between;gap:16px;white-space:nowrap}
.sh-tb-left{min-width:0;overflow:hidden;text-overflow:ellipsis}      /* điện thoại hẹp (≤ 380px): chữ dài cắt bằng "…" thay vì làm cả trang trượt ngang */
.sh-toprow{overflow:hidden}
.sh-toprow a{color:#fff;text-decoration:underline;font-weight:700}
.sh-tb-right{color:#A7F3E4;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font-variant-numeric:tabular-nums}
.sh-hdr .themebtn,.sh-hdr .musicbtn{width:50px;height:50px;flex:none}
.sh-user{border:1.5px solid var(--line2);background:var(--surface);color:var(--deep-ink);border-radius:12px;padding:0 22px;height:50px;cursor:pointer;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis;flex:none;font-size:var(--fs-lg);font-weight:700;line-height:1.3;transition:transform .2s,background .25s,border-color .25s,color .25s}
.sh-user:hover{background:var(--soft-blue);border-color:#2A52D9;color:var(--accent-ink)}
.sh-user.pri{background:#2A52D9;color:#fff;border-color:#2A52D9;margin-left:calc(8px - clamp(14px,2.4vw,40px))}
.sh-user.pri:hover{background:#1E3A9E;color:#fff;border-color:#1E3A9E}
.sh-user[hidden]{display:none}
.sh-wallet{display:none;align-items:center;gap:8px;height:50px;border-radius:999px;border:1.5px solid #2DD4BF;background:var(--soft-teal);color:var(--ink);padding:0 6px 0 16px;flex:none;white-space:nowrap;font-size:var(--fs-md);font-weight:700}
.sh-wallet.show{display:inline-flex}
.sh-wallet button{border:0;background:#2DD4BF;color:#053D3A;border-radius:999px;padding:8px 14px;cursor:pointer;font-size:var(--fs-sm);font-weight:700}
.sh-tile-ph{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.sh-pimg .sh-ph{display:none}
.sh-pimg{overflow:hidden}
.sh-thumbs{display:flex;gap:8px;padding:10px;flex-wrap:wrap}
.sh-thumb{width:56px;height:56px;border-radius:10px;border:2px solid var(--line2);overflow:hidden;padding:0;background:var(--surface);cursor:pointer}
.sh-thumb.on{border-color:#2A52D9}
.sh-panel .sh-pic{overflow:hidden;position:relative}
.sh-pwrap{display:flex;flex-direction:column;min-width:0}
.sh-pricerow{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.sh-old{color:var(--muted);text-decoration:line-through;font-size:var(--fs-md);font-weight:500}
.sh-oldsm{color:var(--muted);text-decoration:line-through;margin-left:6px;font-size:var(--fs-xs);font-weight:500}
.sh-err{background:#FDECEA;color:var(--danger);border-radius:12px;padding:10px 12px;font-size:var(--fs-sm);font-weight:600;line-height:1.5}
.dark .sh-err{background:#4A1F1C;color:#FF9C94}
.sh-ok{background:var(--soft-teal);border:1px solid #2DD4BF;color:var(--ink);border-radius:14px;padding:14px 16px;text-align:center;font-weight:700;line-height:1.5}
.sh-qrimg{width:200px;height:200px;max-width:70vw;border-radius:16px;background:#fff;border:1px solid var(--line);padding:6px;object-fit:contain;align-self:center}
.sh-bankrow{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sh-bankrow span{min-width:0;overflow-wrap:anywhere}
.sh-copy{flex:none;border:1.5px solid var(--line2);background:var(--surface);color:var(--accent-ink);border-radius:999px;padding:5px 12px;cursor:pointer;font-size:var(--fs-sm);font-weight:700}
.sh-pill{display:inline-block;border-radius:999px;padding:3px 10px;background:var(--soft-blue);color:var(--accent-ink);font-size:var(--fs-xs);font-weight:600}
.sh-pill.paid,.sh-pill.done{background:var(--soft-teal);color:var(--teal-ink)}
.sh-pill.cancelled{background:#ECEFF5;color:#5B6580}
.dark .sh-pill.cancelled{background:#3A4868;color:#C3CCE2}
.sh-pill.pending{background:#FFF3D1;color:#7A4A00}
.dark .sh-pill.pending{background:#4A3308;color:#FFE8B0}
.sh-ord{border:1px solid var(--line);border-radius:16px;padding:14px;background:var(--bg);display:flex;flex-direction:column;gap:8px}
.sh-ord small{color:var(--muted);font-size:var(--fs-xs);line-height:1.5}
.sh-ordtop{display:flex;justify-content:space-between;gap:10px;align-items:center}
.sh-ordact{display:flex;gap:8px;flex-wrap:wrap}
.sh-ordact .sh-btn{padding:10px 14px;font-size:var(--fs-sm)}
.sh-mini{display:flex;flex-direction:column;gap:2px;font-size:var(--fs-sm)}
.sh-skel{height:300px;border-radius:22px;background:linear-gradient(90deg,var(--soft-blue),var(--surface),var(--soft-blue));background-size:200% 100%;animation:shsk 1.4s linear infinite}
@keyframes shsk{to{background-position:-200% 0}}
body.sh-lock{overflow:hidden}

.sh-wrap{max-width:none;width:100%;margin:0;padding:0 clamp(20px,3.2vw,64px);box-sizing:border-box;position:relative}
.sh-hdr{background:var(--header-bg);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:40}
.sh-hdrrow{display:flex;align-items:center;gap:clamp(14px,2.4vw,40px);padding-top:14px;padding-bottom:14px}
.sh-brand{display:flex;align-items:center;gap:10px;flex:none}
.sh-brand img{width:60px;height:59px;object-fit:contain}
.sh-brandtxt{font-family:'Lobster',cursive;font-size:42px;line-height:1;color:var(--accent-ink);text-shadow:2px 2px 0 #2DD4BF,3px 3px 0 rgba(30,58,158,.25)}
.sh-shoptag{letter-spacing:2px;color:var(--teal-ink);background:var(--soft-teal);padding:5px 12px;border-radius:999px;white-space:nowrap;font-size:var(--fs-xs);font-weight:600}
.sh-search{flex:1;display:flex;align-items:center;gap:10px;background:var(--surface);border:1.5px solid var(--line2);border-radius:999px;padding:0 18px;height:50px;min-width:0;max-width:620px;margin:0 auto}
.sh-search input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);outline:0;height:100%;font-family:'Be Vietnam Pro',sans-serif;font-size:var(--fs-lg);font-weight:500;line-height:1.3}
.sh-search input::placeholder{color:var(--muted);font-weight:400}
.sh-iconbtn{position:relative;width:50px;height:50px;border-radius:50%;border:1.5px solid var(--line2);background:var(--surface);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;flex:none;transition:transform .2s,background .25s,border-color .25s}
.sh-iconbtn:hover{background:var(--soft-blue);border-color:#2A52D9;transform:scale(1.06)}
.sh-badge{position:absolute;top:-4px;right:-4px;min-width:21px;height:21px;border-radius:999px;background:#2DD4BF;color:#053D3A;display:flex;align-items:center;justify-content:center;padding:0 5px;box-sizing:border-box;font-size:var(--fs-xs);font-weight:600}
.sh-backlink{color:var(--ink);white-space:nowrap;display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-md);font-weight:700}
.sh-catbar{display:flex;gap:10px;overflow-x:auto;padding-top:14px;padding-bottom:14px;scrollbar-width:none}
.sh-catbar::-webkit-scrollbar{display:none}
.sh-chip{flex:none;border:1.5px solid var(--line2);background:var(--surface);color:var(--ink);border-radius:999px;padding:10px 20px;cursor:pointer;transition:transform .2s,background .25s,color .25s,border-color .25s;font-size:var(--fs-md);font-weight:700;line-height:1.3}
.sh-chip:hover{background:var(--soft-blue);border-color:#2A52D9;transform:translateY(-1px)}
.sh-chip.on{background:#2A52D9;color:#fff;border-color:#2A52D9}
.sh-chip.t.on{background:#0E7C86;border-color:#0E7C86}
.sh-chip.gold{border-color:#F59E0B;color:#3B2400;background:linear-gradient(110deg,#FFF1C9 0%,#FFD978 45%,#FFF1C9 90%);background-size:220% 100%;position:relative;animation:goldShine 3.2s linear infinite}
.sh-chip.gold::before{content:'\2605';margin-right:6px;color:#C26A00}
.sh-chip.gold:hover{border-color:#D97706;transform:translateY(-2px) scale(1.04)}
.sh-chip.gold.on{background:#F59E0B;border-color:#F59E0B;color:#3B2400;animation:none}
.sh-chip.gold::after{content:'';position:absolute;inset:-1px;border-radius:inherit;border:2px solid rgba(245,158,11,.7);opacity:0;pointer-events:none;animation:goldRing 2s ease-out infinite;will-change:transform,opacity}
@keyframes goldRing{0%{opacity:.8;transform:scale(1)}70%,100%{opacity:0;transform:scale(1.18,1.5)}}
.sh-chip.gold.on::before{color:#3B2400}
@keyframes goldPulse{0%{box-shadow:0 0 0 0 rgba(245,158,11,.6)}70%,100%{box-shadow:0 0 0 10px rgba(245,158,11,0)}}
@keyframes goldShine{to{background-position:-220% 0}}
.sh-banner{position:relative;border-radius:28px;overflow:hidden;background:linear-gradient(120deg,#2A52D9 0%,#1E3A9E 55%,#0E7C86 100%);color:#fff;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:center;gap:20px;padding:clamp(28px,4vw,64px)}
.sh-banner h1{margin:0;font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:var(--fs-shbanner);font-weight:800;line-height:1.1}
.sh-banner h1 span{color:#A7F3E4}
.sh-banner p{margin:14px 0 0;color:#E3EAFF;max-width:560px;font-size:var(--fs-shlead);line-height:1.7}
.sh-bbtns{display:flex;gap:12px;margin-top:24px;flex-wrap:wrap}
.sh-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:14px;padding:15px 26px;border:0;cursor:pointer;transition:transform .2s,box-shadow .2s,background-color .25s,color .25s;font-family:inherit;font-size:var(--fs-lg);font-weight:700;line-height:1.3}
.sh-btn:hover{transform:translateY(-2px)}
.sh-btn.teal{background:#2DD4BF;color:#053D3A}.sh-btn.teal:hover{background:#fff}
.sh-btn.ghost{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.65)}.sh-btn.ghost:hover{background:rgba(255,255,255,.15)}
.sh-btn.blue{background:#2A52D9;color:#fff}.sh-btn.blue:hover{background:#0E7C86}
.sh-btn.teal2{background:#0E7C86;color:#fff}.sh-btn.teal2:hover{background:#2A52D9}
.sh-btn.outline{background:var(--surface);color:var(--accent-ink);border:1.5px solid var(--line2)}.sh-btn.outline:hover{background:var(--soft-blue);border-color:#2A52D9}
.sh-btn[disabled],.sh-btn.off{background:#9AA3B8;color:#fff;cursor:not-allowed;transform:none;pointer-events:none}
/* ===== Đợt U1a: khối hình banner (SH-D4) ===== */
.sh-btn.hot{position:relative;overflow:hidden;isolation:isolate;padding-left:24px;padding-right:30px;font-size:17px;font-weight:800;letter-spacing:.2px;background:linear-gradient(110deg,#14C2AB 0%,#5EEAD4 28%,#E9FFF9 50%,#5EEAD4 72%,#14C2AB 100%);background-size:260% 100%;background-position:0% 0;box-shadow:0 10px 26px rgba(45,212,191,.55),0 0 0 4px rgba(255,255,255,.22);animation:shk-hotbeat 1.9s ease-in-out infinite,shk-hotflow 3.2s linear infinite}
.sh-btn.hot:hover{animation:shk-hotflow 1.4s linear infinite;transform:translateY(-3px) scale(1.07);box-shadow:0 16px 34px rgba(45,212,191,.7),0 0 0 6px rgba(255,255,255,.3)}
.sh-btn.hot:active{transform:translateY(0) scale(.97)}
.sh-btn.hot::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;border:3px solid #fff;opacity:0;animation:shk-hotring 1.9s ease-out infinite}
.sh-btn.hot::after{content:'';position:absolute;top:-25%;left:0;width:42%;height:150%;z-index:1;pointer-events:none;background:linear-gradient(100deg,transparent,rgba(255,255,255,.95),transparent);transform:translateX(-150%) skewX(-18deg);animation:shk-hotshine 2.2s ease-in-out infinite}
.sh-btn.hot .hs{flex:none;width:24px;height:24px;filter:none;animation:shk-hottw 1.2s ease-in-out infinite}
.sh-btn.hot .sk{position:absolute;z-index:2;pointer-events:none;width:9px;height:9px;opacity:0;animation:shk-hotsk 2.4s ease-in-out infinite}
.sh-btn.hot .sk.a{top:6px;right:12px}
.sh-btn.hot .sk.b{bottom:6px;right:34px;animation-delay:1.2s}
.sh-btn.hot .sk.c{top:8px;left:46px;animation-delay:.6s}
.sh-btn.hot > span{position:relative;z-index:2}
@keyframes shk-hotbeat{0%,100%{transform:scale(1)}8%{transform:scale(1.07)}16%{transform:scale(1)}24%{transform:scale(1.05)}32%{transform:scale(1)}}
@keyframes shk-hotflow{0%{background-position:0% 0}100%{background-position:-260% 0}}
@keyframes shk-hotshine{0%,45%{transform:translateX(-150%) skewX(-18deg)}100%{transform:translateX(480%) skewX(-18deg)}}
@keyframes shk-hotring{0%{opacity:.9;transform:scale(1)}80%,100%{opacity:0;transform:scale(1.28,1.7)}}
@keyframes shk-hottw{0%,100%{transform:scale(1) rotate(0)}50%{transform:scale(1.35) rotate(35deg)}}
@keyframes shk-hotsk{0%,100%{opacity:0;transform:scale(.3) rotate(0)}45%{opacity:1;transform:scale(1.2) rotate(90deg)}70%{opacity:0;transform:scale(.4) rotate(180deg)}}
.sh-btn.dip{background:linear-gradient(120deg,#FFD3E8 0%,#FFE6C2 100%);color:#7A1D4A;box-shadow:0 6px 18px rgba(244,114,182,.35)}
.sh-btn.dip svg{flex:none}
.sh-bart{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;font-size:inherit;line-height:1.2;filter:none}
.sh-stage{position:relative;width:min(100%,460px);aspect-ratio:460/330}
.sh-hs{position:absolute;inset:0;opacity:0;transform:translateX(9%);transition:opacity .6s ease,transform .6s ease;pointer-events:none}
.sh-hs.on{opacity:1;transform:none}
.sh-hs.prev{transform:translateX(-9%)}
.sh-hs svg{width:100%;height:100%;display:block;overflow:visible}
.sh-hs:not(.on) *{animation-play-state:paused}
.sh-hs .sv-lid,.sh-hs .sv-spk,.sh-hs .sv-tw,.sh-hs .sv-bear,.sh-hs .sv-armr,.sh-hs .sv-eye,.sh-hs .sv-hg,.sh-hs .sv-crd,.sh-hs .sv-hp,.sh-hs .sv-beat,.sh-hs .sv-av,.sh-hs .sv-hop{transform-box:fill-box}
.sh-bctl{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap}
.sh-dots{display:flex;gap:8px;align-items:center}
.sh-dot{position:relative;width:12px;height:12px;border-radius:999px;border:0;padding:0;background:rgba(255,255,255,.45);cursor:pointer;transition:width .25s,background .25s}
.sh-dot::after{content:'';position:absolute;inset:-16px -5px}
.sh-dot.on{width:32px;background:#2DD4BF}
.sh-capbtn{border:1.5px solid rgba(255,255,255,.7);background:transparent;color:#fff;border-radius:999px;padding:9px 18px;font:700 14px 'Be Vietnam Pro',sans-serif;cursor:pointer;transition:background .2s}
.sh-capbtn:hover{background:rgba(255,255,255,.16)}
.sv-lid{animation:shk-lidpop 4s ease-in-out infinite;transform-origin:50% 100%}
.sv-spk{opacity:0;animation:shk-spburst 4s ease-out infinite;transform-origin:center}
.sv-tw{opacity:.2;animation:shk-tw 2.6s ease-in-out infinite;transform-origin:center}
.sv-bear{animation:shk-sbob 2.6s ease-in-out infinite}
.sv-armr{animation:shk-wave 1.3s ease-in-out infinite;transform-origin:10% 10%}
.sv-eye{animation:shk-blink 4.2s infinite;transform-origin:center}
.sv-hg{animation:shk-hfloat 3.4s ease-in-out infinite;transform-origin:50% 100%}
.sv-crd{animation:shk-cardrise 5s ease-in-out infinite}
.sv-hp{opacity:0;animation:shk-hpop 3.6s ease-out infinite}
.sv-beat{animation:shk-beat 1.2s ease-in-out infinite;transform-origin:center}
.sv-av{animation:shk-sbob 2.4s ease-in-out infinite}
.sv-hop{animation:shk-hop 3s ease-in-out infinite}
@keyframes shk-lidpop{0%,55%,100%{transform:translateY(0) rotate(0)}65%{transform:translateY(-28px) rotate(-7deg)}75%{transform:translateY(2px) rotate(0)}85%{transform:translateY(-10px) rotate(3deg)}93%{transform:translateY(0) rotate(0)}}
@keyframes shk-spburst{0%,58%{opacity:0;transform:scale(.2)}68%{opacity:1;transform:scale(1.2)}88%{opacity:0;transform:scale(.6)}100%{opacity:0}}
@keyframes shk-tw{0%,100%{opacity:.15;transform:scale(.4)}50%{opacity:1;transform:scale(1.15)}}
@keyframes shk-sbob{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes shk-wave{0%,100%{transform:rotate(0)}50%{transform:rotate(-26deg)}}
@keyframes shk-blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
@keyframes shk-hfloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-14px) rotate(3deg)}}
@keyframes shk-cardrise{0%,8%{transform:translateY(46px)}35%,72%{transform:translateY(-58px)}100%{transform:translateY(46px)}}
@keyframes shk-hpop{0%{opacity:0;transform:translateY(0) scale(.6)}20%{opacity:1}100%{opacity:0;transform:translateY(-70px) scale(1.2)}}
@keyframes shk-beat{0%,100%{transform:scale(1)}30%{transform:scale(1.16)}60%{transform:scale(.97)}}
@keyframes shk-hop{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.sh-hs .sd0{animation-delay:0s}
.sh-hs .sd1{animation-delay:.15s}
.sh-hs .sd2{animation-delay:.3s}
.sh-hs .sd3{animation-delay:.4s}
.sh-hs .sd4{animation-delay:1.1s}
.sh-hs .sd5{animation-delay:.7s}
.sh-hs .sd6{animation-delay:1.6s}
.sh-hs .sd7{animation-delay:1.2s}
.sh-hs .sd8{animation-delay:2.4s}
.sh-hs .sd9{animation-delay:.6s}
.sh-hs .sd10{animation-delay:1.8s}
.sh-hs .sd11{animation-delay:.5s}
.sh-hs .sd12{animation-delay:1s}
.sh-hs .sd13{animation-delay:1.5s}
.sh-hs .sd14{animation-delay:.9s}
/* ===== Đợt U1a (SH-D4 / SH-07 / SH-08 / SH-09): banner 3 hình SVG + chấm + nút chú thích + hai nút Thịnh Hành / Quà Tặng (cổng từ demo Main.dc.html, thêm tiền tố sh-/sv-/shk- để không đụng lớp cũ) ===== */
.sh-capbtn{display:inline-block;text-decoration:none}
.sh-page a.sh-capbtn,.sh-page a.sh-capbtn:hover{color:#fff}      /* thắng luật liên kết chung ".sh-page a" (màu chữ xanh) — nút nằm trên nền banner xanh */
.sh-capbtn:focus-visible,.sh-dot:focus-visible{outline:3px solid #A7F3E4;outline-offset:3px}
.sh-bbtns .sh-btn{line-height:24px}
/* ===== hết đợt U1a (khối hình banner) ===== */
/* ===== Đợt U1a (SH-24): chân trang như demo: logo + tên Doki, 3 cột chữ 14,5px; liên kết pháp lý gom MỘT dòng nhỏ ===== */
.sh-footbrand{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.sh-footbrand img{width:52px;height:51px;object-fit:contain}
.sh-footlinks{display:flex;flex-wrap:wrap;gap:2px 18px;margin-top:12px;font-size:.8125rem;line-height:1.6}
.sh-foot .sh-footlinks .foot-extra{display:contents}
.sh-foot .sh-footlinks .foot-extra a{display:inline}
.sh-footlinks .sh-linkbtn{font-size:inherit;line-height:inherit}
@media (min-width:761px){.sh-footlinks{justify-content:flex-end}}      /* máy tính: dòng liên kết nằm bên phải, tránh ô "0/10 xu" cố định ở góc trái dưới màn hình */
/* ===== hết đợt U1a (chân trang) ===== */
.sh-pcard.dim .sh-pimg .sh-tile-ph{filter:grayscale(.8) opacity(.75)}      /* (U1a / SH-12) thẻ hết hàng hoặc đang bảo trì: khung ảnh xám + mờ như demo; nhãn và nút giữ nguyên */
.sh-feats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.sh-feat{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:16px 18px;box-shadow:0 6px 18px var(--card-shadow)}
.sh-feat b{display:block;color:var(--ink);font-size:var(--fs-md);font-weight:700;line-height:19px}
.sh-feat small{display:block;color:var(--muted);margin-top:2px;font-size:var(--fs-sm);line-height:18px}
.sh-feat .sh-fi{width:46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:24px;background:var(--soft-blue);flex:none}
.sh-feat:nth-child(even) .sh-fi{background:var(--soft-teal)}
.sh-sechead{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:22px}
.sh-sechead h2{margin:0;font-family:'Baloo 2','Be Vietnam Pro',sans-serif;color:var(--ink);font-size:var(--fs-shsec);font-weight:800;line-height:1.6}
.sh-more{white-space:nowrap;font-size:var(--fs-md);font-weight:600}
.sh-cats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.sh-cat{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;border-radius:24px;padding:26px 16px;border:1.5px solid var(--line2);background:var(--surface);cursor:pointer;transition:transform .25s,box-shadow .25s,background .25s;font-family:inherit;color:var(--ink)}
.sh-cat:hover{transform:translateY(-4px);background:var(--soft-blue);box-shadow:0 16px 30px var(--card-shadow)}
.sh-cat.t{border-color:#2DD4BF}.sh-cat.t:hover{background:var(--soft-teal)}
.sh-cat .sh-ce{font-size:48px;line-height:1;min-height:64px;display:flex;align-items:center;justify-content:center}
.sh-cat b{font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:var(--fs-h3)}
.sh-cat small{color:var(--muted);font-size:var(--fs-xs)}
.sh-pgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.sh-pcard{display:flex;flex-direction:column;background:var(--surface);border:1.5px solid var(--line);border-radius:22px;overflow:hidden;transition:transform .25s,box-shadow .25s,border-color .25s;box-shadow:0 8px 22px var(--card-shadow)}
.sh-pcard:hover{transform:translateY(-5px);border-color:#2A52D9;box-shadow:0 18px 34px var(--card-shadow)}
.sh-pcard.t:hover{border-color:#0E7C86}
.sh-pimg{position:relative;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;font-size:clamp(64px,7vw,104px);border:0;width:100%;cursor:pointer;padding:0}
.sh-pimg .sh-ph{position:absolute;left:10px;bottom:8px;color:var(--muted);background:var(--surface);border-radius:999px;padding:3px 9px;opacity:.9;font-family:'Be Vietnam Pro',sans-serif;font-size:var(--fs-xs);font-weight:600}
.sh-tile-ph.fr .sh-img{width:78%;height:78%;object-fit:contain;transition:transform .35s ease;pointer-events:none}
.sh-pcard:hover .sh-tile-ph.fr .sh-img{transform:scale(1.07) rotate(-2deg)}
.sh-tag{position:absolute;top:12px;left:12px;border-radius:999px;padding:4px 10px;background:#2DD4BF;color:#053D3A;font-size:var(--fs-xs);font-weight:600;line-height:16px}
.sh-tag.out{background:#5B6478;color:#fff}
.sh-tag.sale{background:#F59E0B;color:#3B2400}
.sh-pbody{display:flex;flex-direction:column;gap:8px;padding:16px 16px 18px;flex:1}
.sh-pname{margin:0;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer;background:none;border:0;text-align:left;padding:0;font-family:inherit;font-size:var(--fs-lg);font-weight:700;line-height:1.35}
.sh-pname.nm-s{font-size:var(--fs-md)}.sh-pname.nm-xs{font-size:var(--fs-sm)}
.sh-pname:hover{color:var(--accent-ink)}
.sh-pcard .sh-price{font-family:'Baloo 2','Be Vietnam Pro',sans-serif;color:var(--accent-ink);font-weight:800;font-size:1.375rem;line-height:1.64}
.sh-pcard .sh-price small{font-family:'Be Vietnam Pro',sans-serif;color:var(--muted);margin-right:4px;font-size:var(--fs-sm);font-weight:600}
.sh-sizes{color:var(--muted);font-size:.84375rem;font-weight:600;line-height:18px}
.sh-pbody .sh-btn{margin-top:auto;padding:12px 16px;width:100%;font-size:var(--fs-md);line-height:19px}
.sh-note{background:var(--soft-teal);border:1px dashed #2DD4BF;color:var(--deep-ink);border-radius:14px;padding:12px 16px;font-size:var(--fs-sm);font-weight:600;line-height:1.55}
.dark .sh-note{color:var(--ink)}
.sh-foot{border-top:4px solid #2A52D9;background:var(--footer-bg);padding:40px 0 26px;margin-top:60px;color:var(--muted);font-size:.90625rem;line-height:1.7}
.sh-foot b{color:var(--ink)}
.sh-footgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px}
.sh-ov{position:fixed;inset:0;z-index:100;background:rgba(15,27,61,.6);display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}
.sh-panel{background:var(--surface);color:var(--ink);border:1px solid var(--line2);border-radius:26px;max-width:960px;width:100%;max-height:calc(100vh - 40px);overflow:auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);position:relative;box-shadow:0 30px 80px rgba(0,0,0,.4)}
.sh-panel .sh-pic{aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;font-size:150px}
.sh-pinfo{padding:30px 30px 28px;display:flex;flex-direction:column;gap:14px}
.sh-pinfo h3{margin:0;font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:var(--fs-h2);font-weight:800;line-height:1.25}
.sh-pinfo p{margin:0;color:var(--muted);font-size:var(--fs-md);line-height:1.65}
.sh-lbl{color:var(--ink);margin-bottom:8px;font-size:var(--fs-sm);font-weight:600}
.sh-opts{display:flex;flex-wrap:wrap;gap:8px}
.sh-opt{border:1.5px solid var(--line2);background:var(--surface);color:var(--ink);border-radius:12px;padding:9px 14px;cursor:pointer;font-family:inherit;transition:background .2s,border-color .2s,color .2s;font-size:var(--fs-md);font-weight:600;line-height:1.3}
.sh-opt:hover{background:var(--soft-blue);border-color:#2A52D9}
.sh-opt.on{background:#2A52D9;color:#fff;border-color:#2A52D9}
.sh-opt small{display:block;opacity:.85;font-size:var(--fs-xs);font-weight:500}
.sh-qty{display:inline-flex;align-items:center;border:1.5px solid var(--line2);border-radius:12px;overflow:hidden;background:var(--surface)}
.sh-qty button{width:40px;height:40px;border:0;background:transparent;color:var(--accent-ink);cursor:pointer;font-size:var(--fs-h3);font-weight:700}
.sh-qty button:hover{background:var(--soft-blue)}
.sh-qty span{min-width:40px;text-align:center;font-size:var(--fs-md);font-weight:700}
.sh-field{display:flex;flex-direction:column;gap:6px}
.sh-field label{font-size:var(--fs-sm);font-weight:600}
.sh-field input,.sh-field textarea{border:1.5px solid var(--line2);background:var(--bg);color:var(--ink);border-radius:12px;padding:12px 14px;outline:0;box-sizing:border-box;width:100%;font-family:'Be Vietnam Pro',sans-serif;font-size:var(--fs-lg);font-weight:500;line-height:1.3}
.sh-field input:focus,.sh-field textarea:focus{border-color:#2A52D9}
.sh-x{position:absolute;top:14px;right:14px;z-index:2;width:42px;height:42px;border-radius:50%;border:1.5px solid var(--line2);background:var(--surface);color:var(--ink);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.sh-x:hover{background:var(--soft-blue)}
.sh-drawer{position:fixed;top:0;right:0;bottom:0;z-index:110;width:min(440px,100vw);background:var(--surface);color:var(--ink);border-left:1px solid var(--line2);box-shadow:-20px 0 60px rgba(0,0,0,.35);display:flex;flex-direction:column}
.sh-dhead{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}
.sh-dhead h3{margin:0;font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:var(--fs-h2);font-weight:800;line-height:1.25}
.sh-dbody{flex:1;overflow:auto;padding:18px 22px;display:flex;flex-direction:column;gap:14px}
.sh-dfoot{border-top:1px solid var(--line);padding:16px 22px 20px;display:flex;flex-direction:column;gap:12px}
.sh-line{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:16px;padding:10px;background:var(--bg)}
.sh-line .sh-th{width:72px;height:72px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:38px}
.sh-line b{display:block;font-size:var(--fs-md);font-weight:700;line-height:1.3}
.sh-line small{color:var(--muted);display:block;margin:2px 0 6px;font-size:var(--fs-xs)}
.sh-line .sh-rm{border:0;background:transparent;color:var(--muted);cursor:pointer;text-decoration:underline;padding:0;font-family:inherit;font-size:var(--fs-sm);font-weight:600}
.sh-line .sh-rm:hover{color:#E11D48}
.sh-line .sh-qty button{width:30px;height:30px;font-size:var(--fs-lg)}
.sh-line .sh-qty span{min-width:28px;font-size:var(--fs-sm)}
.sh-sum{display:flex;justify-content:space-between;align-items:baseline;font-weight:700}
.sh-sum b{font-family:'Baloo 2','Be Vietnam Pro',sans-serif;color:var(--accent-ink);font-size:var(--fs-h2);font-weight:800}
.sh-bank{border:1.5px dashed #2DD4BF;background:var(--soft-teal);border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:6px;font-size:var(--fs-sm)}
.dark .sh-bank{color:var(--ink)}
.sh-bank .sh-code{font-family:ui-monospace,Menlo,monospace;color:var(--deep-ink);letter-spacing:1px;font-size:var(--fs-xl);font-weight:800}
.sh-qr{flex:none;width:170px;height:170px;border-radius:16px;border:1.5px solid var(--line2);background:repeating-conic-gradient(var(--ink) 0 25%,var(--surface) 0 50%) 0 0/22px 22px;opacity:.85;align-self:center;position:relative}
.sh-qr::after{content:'QR VietQR';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#0B1220;background:rgba(255,255,255,.85);border-radius:16px;font-family:'Be Vietnam Pro',sans-serif;font-size:var(--fs-xs);font-weight:600}
.sh-empty{text-align:center;color:var(--muted);padding:40px 10px;font-weight:600}
@media (max-width:1200px){
.sh-pgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.sh-feats,.sh-cats{grid-template-columns:repeat(2,minmax(0,1fr))}
.sh-banner{grid-template-columns:minmax(0,1fr)}
.sh-bart{order:-1}
.sh-banner{text-align:center}
.sh-banner p{margin-left:auto;margin-right:auto}
.sh-bbtns{justify-content:center}
.sh-stage{width:min(100%,380px)}
.sh-brand img{width:46px;height:45px}.sh-brandtxt{font-size:34px}
.sh-shoptag{display:none}
.sh-footgrid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:760px){
.sh-hdrrow{flex-wrap:wrap;gap:10px 12px}
.sh-search{order:5;flex:1 1 100%;max-width:none;height:46px}
.sh-backlink span{display:none}
.sh-hdrrow .sh-sp{flex:1}
.sh-panel{grid-template-columns:minmax(0,1fr)}
.sh-panel .sh-pic{aspect-ratio:16/10;font-size:100px}
.sh-pinfo{padding:22px 20px}
.sh-ov{padding:10px}
}
@media (max-width:600px){
.sh-pgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.sh-pbody{padding:12px 12px 14px}
.sh-pname{font-size:.90625rem}.sh-pname.nm-s,.sh-pname.nm-xs{font-size:var(--fs-sm)}
.sh-pcard .sh-price{font-size:var(--fs-xl)}
.sh-pbody .sh-btn{padding:11px 8px;font-size:var(--fs-sm)}
.sh-feats{grid-template-columns:minmax(0,1fr)}
.sh-cats{gap:12px}
.sh-cat{padding:20px 10px}
.sh-btn{padding:14px 14px}
.sh-bbtns{flex-direction:column;align-items:stretch}
.sh-bbtns .sh-btn{flex:none;width:100%;white-space:nowrap}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media (prefers-reduced-motion:reduce){.sh-btn.hot,.sh-btn.hot::before,.sh-btn.hot::after,.sh-btn.hot .hs,.sh-btn.hot .sk{animation:none!important}.sh-btn.hot .sk{display:none}.sh-hs svg *{animation:none!important}.sh-hs .sv-spk{opacity:0}}
.sh-search{min-width:200px}
@media (max-width:1500px){.sh-shoptag{display:none}}
@media (max-width:1100px){.sh-backlink span{display:none}}
.sh-pricerow .sh-price{font-size:var(--fs-h2)}
:root.dark .sh-toprow a:not([class]){color:#fff}

/* ---- Đợt 4a: nhãn sản phẩm, lưới ảnh 1/2/3+, chữ do admin sửa ---- */
.sh-tags{position:absolute;top:12px;left:12px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;z-index:1;max-width:calc(100% - 24px)}
.sh-tags .sh-tag{position:static}
.sh-tag.best{background:#1E3A9E;color:#fff}
.dark .sh-tag.best{background:#A5C0FF;color:#0F1B3D}
.sh-tag.low{background:#F59E0B;color:#3B2400}
.sh-linkbtn{border:0;background:none;padding:0;color:var(--accent-ink);text-decoration:underline;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:600}
.sh-gal{display:flex;flex-direction:column;min-width:0}
.sh-gal .sh-pic{cursor:zoom-in;border:0;padding:0;width:100%}
.sh-gal.n2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px;align-content:start;background:var(--line)}
.sh-gal.n2 .sh-pic{aspect-ratio:3/4}
.sh-gal.n1 .sh-pic{aspect-ratio:1/1}
.sh-thumbs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}
.sh-thumb{flex:none}
.sh-pic-zoom{position:absolute;right:10px;bottom:10px;border-radius:999px;padding:4px 10px;background:rgba(15,27,61,.72);color:#fff;font-size:var(--fs-xs);font-weight:600;pointer-events:none}
.sh-stockline{color:var(--danger);font-size:var(--fs-sm);font-weight:600}
@media (max-width:760px){.sh-gal.n1 .sh-pic{aspect-ratio:16/10}}

/* Thay cho thuộc tính style="" trong shop.html: CSP không còn 'unsafe-inline' cho CSS (đợt 5, bảo mật) */
.u-sh-ico{color:var(--accent-ink);flex:none}
#themeBtn{width:50px;height:50px}
.sh-wrap.u-pt28{padding-top:28px}
.sh-feats.u-mt22{margin-top:22px}
.u-mt48{margin-top:48px}
.sh-more.u-muted{color:var(--muted)}
.u-brand-lobster{font-family:'Lobster',cursive;font-size:30px;font-weight:400;line-height:1.2;color:var(--accent-ink)}
#shDrawerOv{justify-content:flex-end;padding:0;z-index:105}
#shDrawerX{position:static}
.sh-foot .u-brand-lobster{font-family:'Lobster',cursive;font-size:30px;font-weight:400;line-height:1.2;color:var(--accent-ink)}

/* ---- Đợt A: biểu mẫu giao hàng, phí ship, giữ hàng + đếm ngược ---- */
.sh-sumbox{display:flex;flex-direction:column;gap:6px}
.sh-sumrow{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:var(--fs-md);font-weight:600;line-height:1.4}
.sh-sumrow span{color:var(--muted)}
.sh-sumrow b{color:var(--ink);font-weight:700}
.sh-sumrow b.sh-free{color:var(--teal-ink)}
.sh-hint{display:block;color:var(--muted);font-size:var(--fs-sm);font-weight:400;line-height:1.55}
.sh-hint.ok{color:var(--teal-ink)}
.sh-field small.sh-ferr{display:block;color:var(--danger);font-size:var(--fs-sm);font-weight:500;line-height:1.45}
.sh-field small.sh-ferr[hidden]{display:none}
.sh-field.bad input,.sh-field.bad textarea{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 7%,var(--bg))}
.sh-field.off input{opacity:.55;cursor:not-allowed}
.sh-field[hidden]{display:none}
.sh-field input:disabled{background:var(--soft-blue)}
.sh-chk{display:flex;align-items:center;gap:10px;font-size:var(--fs-md);font-weight:600;cursor:pointer;min-height:44px}
.sh-chk input{width:20px;height:20px;accent-color:#2A52D9;flex:none;margin:0}
.sh-hold{border:1.5px solid #2DD4BF;background:var(--soft-teal);border-radius:16px;padding:12px 16px;display:flex;flex-direction:column;gap:8px;transition:background .25s,border-color .25s}
.sh-holdtop{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;font-size:var(--fs-md);font-weight:600;line-height:1.4}
.sh-holdt{font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:var(--fs-h2);font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--teal-ink)}
.sh-bar{height:8px;border-radius:999px;background:rgba(15,27,61,.12);overflow:hidden}
.dark .sh-bar{background:rgba(255,255,255,.16)}
.sh-bar i{display:block;height:100%;width:100%;border-radius:999px;background:#0E7C86;transition:width .5s linear}
.sh-hold.warn{border-color:#F59E0B;background:#FFF3D1}
.sh-hold.warn .sh-holdt{color:#7A4A00}
.sh-hold.warn .sh-bar i{background:#F59E0B}
.dark .sh-hold.warn{background:#4A3308;border-color:#F59E0B}
.dark .sh-hold.warn .sh-holdt{color:#FFE8B0}
.sh-hold.over{border-color:var(--danger);background:#FDECEA}
.sh-hold.over .sh-holdt{color:var(--danger)}
.dark .sh-hold.over{background:#4A1F1C}
.sh-holdmini{font-size:var(--fs-sm);font-weight:600;color:var(--teal-ink);line-height:1.5}
.sh-holdmini b{font-variant-numeric:tabular-nums;font-weight:700}
.sh-holdmini.warn{color:#7A4A00}
.dark .sh-holdmini.warn{color:#FFE8B0}
.sh-holdmini.over{color:var(--danger)}
.sh-ord small.sh-cancelnote{color:var(--danger);font-size:var(--fs-sm);line-height:1.55}
.sh-ord small{font-size:var(--fs-sm)}
.sh-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* Đợt A: khách đã đăng nhập (ví + đơn hàng + giỏ) làm hàng đầu trang rộng quá ở 1280px (tràn 5px). Thu nhỏ khoảng cách và ô tìm kiếm ở cỡ này. */
@media (min-width:761px) and (max-width:1400px){.sh-hdrrow{gap:clamp(10px,1.4vw,18px)}.sh-search{min-width:140px}}

/* ===== Mã giảm giá trong giỏ / thanh toán (đợt B) – cỡ chữ theo thang type.css ===== */
.sh-vch{display:flex;flex-direction:column;gap:8px;background:var(--soft-teal);border:1.5px dashed #2DD4BF;border-radius:16px;padding:12px 14px}
.sh-vlab{font-size:var(--fs-sm);font-weight:600;line-height:1.4}
.sh-vrow{display:flex;gap:8px;align-items:stretch}
.sh-vrow input{flex:1 1 0;min-width:0;border:1.5px solid var(--line2);background:var(--surface);color:var(--ink);border-radius:12px;padding:10px 12px;outline:0;font-family:ui-monospace,Menlo,monospace;font-size:var(--fs-lg);font-weight:600;letter-spacing:.06em;text-transform:uppercase;box-sizing:border-box}
.sh-vrow input::placeholder{letter-spacing:0;text-transform:none;font-family:'Be Vietnam Pro',sans-serif;font-weight:400}
.sh-vrow input:focus{border-color:#2A52D9}
.sh-vbtn{flex:none;width:auto;padding:0 18px;white-space:nowrap}
.sh-vmsg{font-size:var(--fs-sm);font-weight:600;line-height:1.5}
.sh-vmsg.ok{color:var(--teal-ink)}
.sh-vmsg.bad{color:var(--danger)}
.sh-vchip{display:flex;align-items:center;justify-content:space-between;gap:2px 10px;flex-wrap:wrap}
.sh-vchip-t{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:var(--fs-sm);line-height:1.45;overflow-wrap:anywhere}
.sh-vchip-t b{font-size:var(--fs-lg);font-weight:700;letter-spacing:.04em}
.sh-vchip .sh-rm{border:0;background:transparent;color:var(--muted);cursor:pointer;text-decoration:underline;padding:4px 0;min-height:32px;font-family:inherit;font-size:var(--fs-sm);font-weight:600}
.sh-vchip .sh-rm:hover{color:#E11D48}
.sh-sumrow b.sh-disc{color:var(--teal-ink)}

/* ===== Đợt C: sắp xếp, bảo trì, danh mục động – cỡ chữ theo thang type.css ===== */
.sh-sechead{flex-wrap:wrap}
.sh-sechead-r{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap}
.sh-sort{display:flex;align-items:center;gap:8px;font-size:var(--fs-md);font-weight:600;color:var(--muted)}
.sh-sort[hidden]{display:none}
.sh-sort select{border:1.5px solid var(--line2);background:var(--surface);color:var(--ink);border-radius:999px;padding:9px 34px 9px 16px;font-family:inherit;font-size:var(--fs-md);font-weight:600;min-height:44px;cursor:pointer;max-width:100%}
.sh-sort select:focus-visible{outline:2px solid #2A52D9;outline-offset:2px}
.sh-chip.maint{border-style:dashed}
.sh-cat.maint{border-style:dashed;opacity:.9}
.sh-cat small{font-size:var(--fs-sm);line-height:18px}
.sh-tag.maint{background:#FDEBC8;color:#6B3F00}
.dark .sh-tag.maint{background:#5A3C0A;color:#FFE8B0}
.sh-maintline{font-size:var(--fs-sm);line-height:1.45;color:#6B3F00;background:#FFF4DC;border-radius:10px;padding:6px 10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dark .sh-maintline{background:#3D2B08;color:#FFE8B0}
.sh-maintbar,.sh-maintbox{background:#FFF4DC;color:#6B3F00;border:1.5px dashed #F59E0B;border-radius:14px;padding:12px 16px;font-size:var(--fs-md);font-weight:600;line-height:1.55}
.sh-maintbar[hidden]{display:none}
.sh-maintbar{margin-bottom:18px}
.sh-maintbox{display:flex;flex-direction:column;gap:2px}
.sh-maintbox span{font-weight:500}
.dark .sh-maintbar,.dark .sh-maintbox{background:#3D2B08;color:#FFE8B0;border-color:#B7791F}
.sh-line.maint{background:#FFF4DC;border-radius:14px}
.dark .sh-line.maint{background:#3D2B08}
small.sh-maintnote{display:block;color:#6B3F00;font-size:var(--fs-sm);line-height:1.5;font-weight:600}
.dark small.sh-maintnote{color:#FFE8B0}
.sh-btn[aria-disabled="true"]{cursor:not-allowed}

/* ===== Đợt D: trả chia đôi ví + ngân hàng ===== */
.sh-walletbox{background:var(--bg);border-style:solid;border-color:var(--line2)}
.sh-bankhd{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:var(--fs-md)}
.sh-balnum{color:var(--accent-ink)}
.sh-walletrow{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap}
.sh-walletrow .sh-btn{padding:12px 16px}
.sh-walletrow .sh-grow{flex:1 1 180px}
.sh-or{text-align:center;font-weight:600;color:var(--muted);font-size:var(--fs-md)}
.sh-held{border:2px solid var(--accent-ink);background:var(--soft-blue);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.sh-heldt{font-size:var(--fs-lg);line-height:1.4}
.sh-relbtn{padding:11px 14px;font-size:var(--fs-sm)}
/* Đợt N: ví vừa nhận tiền mà đơn chưa tự trả (chuyển khoản thiếu / vừa nạp ví) → nhắc bấm "Trả từ ví". Chữ ≥ 14px theo thang type.css. */
.sh-recv{display:flex;flex-direction:column;gap:8px;border:1.5px solid #F59E0B;background:#FFF3D1;color:#4A2E00;border-radius:16px;padding:12px 16px;font-size:var(--fs-md);line-height:1.55}
.dark .sh-recv{background:#4A3308;color:#FFE8B0}
.sh-recv.ok{border-color:#2DD4BF;background:var(--soft-teal);color:var(--ink)}
.sh-recv.ok.warn{border-color:#F59E0B;background:#FFF3D1;color:#4A2E00}
.dark .sh-recv.ok.warn{background:#4A3308;color:#FFE8B0}
.sh-recv.over{border-color:var(--danger)}
.sh-recvt{font-size:var(--fs-lg);font-weight:700;line-height:1.35}
.sh-recvm{font-size:var(--fs-md);font-weight:500;line-height:1.55}
.sh-recvh{font-size:var(--fs-sm);font-weight:500;line-height:1.55}
.sh-recvh b{font-variant-numeric:tabular-nums;font-weight:700}
.sh-recv .sh-recvgo{width:100%;margin-top:2px}
.sh-split{border:1.5px solid var(--line2);border-radius:16px;padding:10px;display:flex;flex-direction:column;gap:10px;background:var(--bg)}
.sh-splittg{width:100%;justify-content:flex-start;text-align:left;padding:13px 14px;font-size:var(--fs-md)}
.sh-splitrow{display:flex;gap:10px;flex-wrap:wrap}
.sh-splitrow input{flex:1 1 140px;min-width:0}
.sh-splitrow .sh-btn{padding:12px 16px;font-size:var(--fs-sm)}
.sh-splitres{display:flex;flex-direction:column;gap:4px}
.sh-splitres:empty{display:none}

/* ---------- Đợt J: Xu Doki / lời chào / nền theo dịp trên /shop ---------- */
/* Lớp hình Xu bay nằm TRONG .sh-page (z-index 5): dưới thanh đầu trang (40), ngăn giỏ hàng (110) và mọi lớp phủ (100+).
   Thẻ sản phẩm, nút, ô nhóm, ô sắp xếp nằm TRÊN lớp này (z-index 6) nên hình bay không bao giờ chắn nút Mua / giỏ hàng. */
.sh-page .sh-pcard,.sh-page .sh-btn,.sh-page .sh-cat,.sh-page .sh-feat,.sh-page .sh-sort{position:relative;z-index:6}
/* Hộp xu cố định ở góc dưới trái: chỉ huy hiệu và bảng chi tiết nhận cú chạm; khung và bong bóng gợi ý cho cú chạm "xuyên qua" để không chặn nút Mua / nút trong banner nằm ngay dưới */
.sh-page~.xubox{pointer-events:none}
.sh-page~.xubox .xubadge,.sh-page~.xubox .xupnl{pointer-events:auto}
/* Điện thoại: huy hiệu xu góc dưới trái chỉ còn đồng xu tròn (chữ "x/10 xu" nằm trong bảng chi tiết khi chạm) để không che nút Mua của thẻ sản phẩm */
@media (max-width:600px){
  .sh-page~.xubox .xuhint{display:none}      /* bong bóng "Bấm vào hình đang bay" đè lên nút banner ở màn hình nhỏ: bỏ; đồng xu và hình bay đã đủ gợi ý */
  .sh-page~.xubox .xubadge{width:46px;height:46px;padding:0;justify-content:center;border-radius:50%}
  .sh-page~.xubox .xubadge b{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
}

/* ---------- Đợt K: một cách thanh toán đang bảo trì (ví / QR / chia đôi) ---------- */
.sh-paymaint{display:flex;flex-direction:column;gap:4px;background:#FFF4DC;color:#6B3F00;border:1.5px dashed #F59E0B;border-radius:14px;padding:12px 16px;font-size:var(--fs-sm);font-weight:600;line-height:1.55}
.sh-paymaint span{font-weight:500}
.dark .sh-paymaint{background:#3D2B08;color:#FFE8B0;border-color:#B7791F}

/* ---------- Đợt M: banner trình chiếu, nhãn Hot, chân trang sửa được ---------- */
.sh-slides{position:relative;border-radius:28px;overflow:hidden;background:#0F1B3D;aspect-ratio:21/8;margin-bottom:22px;box-shadow:0 12px 32px var(--card-shadow)}
.sh-slides[hidden]{display:none}
.sh-sl-view{position:absolute;inset:0}
.sh-sl{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .6s ease,visibility 0s linear .6s}
.sh-sl.on{opacity:1;visibility:visible;transition:opacity .6s ease,visibility 0s}
.sh-sl.noimg{background:linear-gradient(120deg,#2A52D9 0%,#1E3A9E 55%,#0E7C86 100%)}
.sh-sl-in{display:block;position:absolute;inset:0;color:#fff;text-decoration:none}
.sh-sl-in:focus-visible{outline:3px solid #A7F3E4;outline-offset:-6px}
.sh-sl-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.sh-sl-cap{position:absolute;left:0;right:0;bottom:0;padding:72px clamp(64px,8vw,96px) 54px;background:linear-gradient(to top,rgba(8,16,40,.86),rgba(8,16,40,.5) 62%,rgba(8,16,40,0))}
.sh-sl.noimg .sh-sl-cap{background:none;top:0;display:flex;flex-direction:column;justify-content:center;padding-top:20px}
.sh-sl-t{margin:0;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.4);font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:var(--fs-h2);font-weight:800;line-height:1.2;max-width:760px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sh-sl-d{margin:8px 0 0;max-width:640px;color:#EEF3FF;text-shadow:0 1px 8px rgba(0,0,0,.4);font-size:var(--fs-md);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sh-sl-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:1.5px solid rgba(255,255,255,.55);background:rgba(10,20,50,.55);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2;padding:0}
.sh-sl-nav.prev{left:12px}.sh-sl-nav.next{right:12px}
.sh-sl-nav:hover{background:rgba(10,20,50,.85)}
.sh-sl-nav:focus-visible,.sh-sl-dot:focus-visible,.sh-sl-pause:focus-visible{outline:3px solid #A7F3E4;outline-offset:2px}
.sh-sl-bar{position:absolute;left:0;right:0;bottom:8px;display:flex;align-items:center;justify-content:center;gap:6px;z-index:2;pointer-events:none}
.sh-sl-bar>*{pointer-events:auto}
.sh-sl-dots{display:flex;align-items:center;gap:0}
.sh-sl-dot{width:32px;height:32px;border:0;background:none;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer}
.sh-sl-dotc{display:block;width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.5);border:1.5px solid rgba(255,255,255,.9);transition:width .25s,background .25s}
.sh-sl-dot.on .sh-sl-dotc{width:26px;border-radius:999px;background:#fff}
.sh-sl-pause{width:32px;height:32px;border-radius:50%;border:1.5px solid rgba(255,255,255,.7);background:rgba(10,20,50,.55);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.sh-sl-pause[hidden]{display:none}
.sh-sl-pi{display:block;width:11px;height:12px;border-left:4px solid currentColor;border-right:4px solid currentColor;box-sizing:border-box}
.sh-sl-pause.is-paused .sh-sl-pi{width:0;height:0;border-left:11px solid currentColor;border-right:0;border-top:6.5px solid transparent;border-bottom:6.5px solid transparent}
@media (max-width:760px){
.sh-slides{aspect-ratio:16/11;border-radius:20px}
.sh-sl-cap{padding:48px 18px 50px}
.sh-sl-nav{width:40px;height:40px;top:42%}
.sh-sl-nav.prev{left:8px}.sh-sl-nav.next{right:8px}
}
@media (prefers-reduced-motion:reduce){.sh-sl,.sh-sl.on,.sh-sl-dotc{transition:none!important}}
.sh-tag.hot{background:#FFE2C2;color:#7A2E00;border:1px solid #F59E0B}
.dark .sh-tag.hot{background:#5A2A0A;color:#FFD9B8;border-color:#B45309}
.sh-footdesc{display:block;margin-top:4px}
.sh-footdesc[hidden]{display:none}
.sh-footcod{display:block;margin-top:6px}      /* dòng tự động "tiền mặt khi nhận hàng (COD)" dưới chữ Thanh Toán (shop.js renderPayFoot) */
.sh-footcod[hidden]{display:none}
.sh-foot .foot-extra{display:contents}
.sh-foot .foot-extra[hidden]{display:none}
.sh-foot .foot-extra a{display:block}

/* ---------- Giữ chỗ khi tải lần đầu (đợt T4: giảm xê dịch bố cục) ---------- */
/* Khung xương ô nhóm: có sẵn trong shop.html để khu "Chọn Theo Nhóm" đúng chỗ ngay từ lần vẽ đầu; shop.js (renderTiles) xóa hết khi dữ liệu về. Cùng thẻ <button> với ô thật nên cao bằng ô thật */
.sh-cat.sk{pointer-events:none;border-color:transparent;background:linear-gradient(90deg,var(--soft-blue),var(--surface),var(--soft-blue));background-size:200% 100%;animation:shsk 1.4s linear infinite}
.sh-cat.sk>*{visibility:hidden}
.sh-cat.sk b br{display:none}
@media (max-width:440px){.sh-cat.sk b br{display:inline}}      /* điện thoại: tên nhóm thường xuống 2 dòng (ô thật cao hơn 1 dòng) */
@media (prefers-reduced-motion:reduce){.sh-cat.sk{animation:none}}
/* /shop?cat=…: khối giới thiệu (hiện sẵn cho khách thường) ẩn ngay từ lần vẽ đầu để không nháy; appmode.js đặt class, shop.js gỡ sau khi đã áp dụng nhóm */
html.sh-deep #shHome{display:none}

/* ===== Đầu trang trên điện thoại (đợt U1a, theo demo): thanh trên căn giữa không đồng hồ; hàng 1 logo + giao diện + giỏ; hàng 2 "Đăng Nhập | Đăng Ký"
   đầy hàng; hàng 3 ô tìm + đơn hàng (+ chuông, nhạc); header KHÔNG dính; chip nhóm xuống dòng; nút giỏ nổi khi header đã cuộn khỏi màn hình.
   07/11/2026 (chủ shop yêu cầu): áp dụng cho mọi bề rộng ĐẾN 1000px (máy tính bảng, cửa sổ thu nhỏ) thay vì xếp chật một hàng rồi xuống dòng lộn xộn. ===== */
.sh-brk{display:none}
.sh-fab{display:none;position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:35;width:56px;height:56px;border-radius:50%;border:0;background:#2A52D9;color:#fff;align-items:center;justify-content:center;padding:0;cursor:pointer;box-shadow:0 10px 24px rgba(30,58,158,.4)}
.sh-fab .sh-badge{top:-2px;right:-2px}
html.app-shell .sh-fab{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
@media (max-width:760px){
.sh-tb-right{display:none}
.sh-tbrow{justify-content:center}
}
@media (max-width:1000px){
.sh-hdr{position:relative}
.sh-hdrrow{flex-wrap:wrap;gap:0 10px;padding-top:4px}
.sh-hdrrow>*{margin-top:10px}
.sh-hdrrow>.sh-brk{display:block;order:6;flex:0 0 100%;height:0;margin:0}
.sh-backlink{order:-1}
.sh-brand{order:0}
.sh-hdrrow .sh-sp{flex:1;order:1}
#themeBtn{order:3}
#shCartBtn{order:4}
.sh-wallet{order:5;height:46px}
.sh-user{order:5;flex:1 1 calc(50% - 5px);max-width:none;height:46px;padding:0 12px;font-size:var(--fs-md)}
.sh-user.pri{margin-left:0}
.sh-search{order:7;flex:1 1 0;min-width:0;max-width:none;height:46px;margin:10px 0 0}
#shOrdersBtn{order:8}
.bellbtn{order:9}
#musicBtn{order:10}
.sh-iconbtn,.sh-hdr .themebtn,.sh-hdr .musicbtn,#themeBtn{width:44px;height:44px}
/* trong app (appshell.css gom logo + đơn hàng + giỏ + nhạc trên MỘT hàng, ô tìm một hàng riêng): giữ nguyên cách xếp đó */
html.app-mode .sh-hdr .sh-hdrrow.sh-wrap{padding-top:14px}
html.app-mode .sh-hdr .sh-hdrrow>*{margin-top:0}
html.app-mode .sh-hdr .sh-hdrrow>.sh-brk{display:none}
html.app-mode #shOrdersBtn{order:2}
html.app-mode #musicBtn{order:3}
html.app-mode .sh-search{order:5;flex:1 1 100%}
.sh-catbar{flex-wrap:wrap;overflow:visible;gap:8px 10px;align-content:flex-start;min-height:152px}
.sh-chip{padding:8px 14px;font-size:var(--fs-sm)}
.sh-fab:not([hidden]){display:flex}
}
@media (prefers-reduced-motion:reduce){.sh-chip.gold,.sh-chip.gold.on{animation:none}}
/* 601–1000px (máy tính bảng / cửa sổ thu nhỏ): cùng bố cục điện thoại, hàng nút đăng nhập / ví nằm GIỮA và không kéo dài hết bề ngang */
@media (min-width:601px) and (max-width:1000px){
.sh-hdrrow{justify-content:center}
.sh-user{max-width:320px}
html:not(.app-mode) .sh-hdrrow::before{content:'';order:5;flex:0 0 100%;height:0;margin:0}      /* ngắt dòng cố định: hàng 2 luôn là "Đăng Nhập | Đăng Ký" (hoặc Ví + tên) đi cặp như demo điện thoại */
.sh-catbar{min-height:0}      /* chiều cao chừa sẵn 152px chỉ cần cho điện thoại (nhiều hàng chip); màn rộng hơn chip ít hàng → không để khoảng trống */
}

/* ===== Đợt U1b (SH-15 / SH-16): hộp chi tiết sản phẩm gọn như demo ===== */
.sh-panel .sh-pic{aspect-ratio:auto;min-height:420px;align-self:stretch}      /* cột ảnh cao bằng cột chữ (tối thiểu 420px) như demo, không ép vuông */
.sh-pwrap>.sh-pic{flex:1}
.sh-gal.n1 .sh-pic{aspect-ratio:auto;min-height:420px}
.sh-gal.n2 .sh-pic{aspect-ratio:3/4;min-height:0}
.sh-gal.n3 .sh-pic{aspect-ratio:1/1;min-height:0;flex:none}
.sh-pic.fr .sh-img{width:76%;height:auto;max-height:86%;object-fit:contain;pointer-events:none}      /* ảnh nằm trong khung pastel (nền do shop.js đặt) như demo */
.sh-pic-zoom{width:30px;height:30px;padding:0;display:flex;align-items:center;justify-content:center;font-size:.875rem;line-height:1}      /* chỉ còn biểu tượng nhỏ */
.sh-pinfo h3{line-height:1.2;padding-right:44px}
.sh-pricerow .sh-price{font-family:'Baloo 2','Be Vietnam Pro',sans-serif;color:var(--accent-ink);font-weight:800;font-size:1.875rem}
.sh-stockline{color:var(--muted);font-size:var(--fs-xs);font-weight:600;line-height:1.5}
.sh-stockline.low{color:var(--danger)}
.sh-outmsg{padding:11px 14px;font-weight:700}
.sh-pinfo .sh-note-f{gap:4px}
.sh-pinfo .sh-note-f label{color:var(--muted);font-size:var(--fs-xs);font-weight:600;line-height:1.4}
.sh-pinfo .sh-note-f input{padding:8px 12px;border-radius:10px;font-size:var(--fs-sm);line-height:1.4}
@media (max-width:760px){.sh-panel .sh-pic,.sh-gal.n1 .sh-pic{aspect-ratio:16/10;min-height:0;align-self:auto}.sh-gal.n3 .sh-pic{aspect-ratio:16/10}}
/* ===== hết đợt U1b (hộp chi tiết) ===== */
/* ===== Đợt U1b (SH-21 / SH-22): bước thông tin nhận hàng như demo ===== */
.sh-field .req{color:#D92D20;font-style:normal;font-weight:700}
.dark .sh-field .req{color:#F97066}
.sh-chk span{font-weight:700;font-size:var(--fs-sm)}
/* ===== hết đợt U1b (thông tin nhận hàng) ===== */
/* ===== Đợt U1b (dịch vụ trong shop): bốn chip nhóm dịch vụ + thẻ dịch vụ dùng lại khung thẻ sản phẩm ===== */
.sh-pcard.sh-svc a.sh-pimg,.sh-pcard.sh-svc a.sh-pname,.sh-pcard.sh-svc a.sh-btn{text-decoration:none}
.sh-page .sh-svc a.sh-pname{color:var(--ink)}      /* thắng luật liên kết chung ".sh-page a" (chữ xanh): thẻ dịch vụ dùng <a> thay cho <button> */
.sh-page .sh-svc a.sh-pname:hover{color:var(--accent-ink)}
.sh-page .sh-svc a.sh-btn.blue,.sh-page .sh-svc a.sh-btn.teal2,.sh-page .sh-svc a.sh-btn.blue:hover,.sh-page .sh-svc a.sh-btn.teal2:hover{color:#fff}
.sh-pcard.sh-svc .sh-tile-ph.fr .sh-img{width:46%;height:46%}      /* biểu tượng dịch vụ (đã là ô vuông bo góc) nằm giữa khung pastel */
.sh-tag.svc{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line2)}
.sh-pcard .sh-price.q{font-size:1.125rem;line-height:1.5}      /* "Báo giá qua Zalo" / "Từ …đ" */
.sh-sdesc{color:var(--muted);font-size:var(--fs-sm);font-weight:500;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.sh-svcnote{margin-bottom:20px}
.sh-svcnote[hidden]{display:none}
@media (max-width:600px){.sh-pcard .sh-price.q{font-size:var(--fs-md);font-weight:700}}
/* Hàng chip dịch vụ (#shSvcChips, shop.js tạo ngay dưới #shChips): xuống dòng như demo. Chỗ của nó được chừa sẵn TỪ LẦN VẼ ĐẦU bằng ::after (cùng chiều cao với thanh thật) nên khi dữ liệu về
   không xê dịch bố cục (tests/cls-shift.test.js). Chiều cao chừa = đủ cho 4 chip: 1 hàng trên màn rộng, 2 hàng trên điện thoại. Hết dịch vụ thì shop.js ẩn thanh (hidden). */
.sh-wrap:has(> #shChips):not(.has-svc)::after{content:'';display:block;min-height:58px;margin-top:-4px}
#shSvcChips{flex-wrap:wrap;overflow:visible;align-content:flex-start;gap:8px 10px;padding-top:0;min-height:58px;margin-top:-4px}      /* margin âm: khoảng cách giữa hai hàng chip bằng khoảng cách giữa các hàng (10px) như demo */
#shSvcChips[hidden]{display:none}
@media (max-width:777px){.sh-wrap:has(> #shChips):not(.has-svc)::after,#shSvcChips{min-height:108px}}
@media (max-width:600px){.sh-wrap:has(> #shChips):not(.has-svc)::after,#shSvcChips{min-height:96px;margin-top:-6px}}
/* ===== hết đợt U1b (dịch vụ trong shop) ===== */

/* ===== Đợt FC: miễn phí giao theo khu vực + thanh toán khi nhận hàng (COD, tiền mặt). Chữ theo thang type.css (≥ 14px, không đậm 900). ===== */
.sh-zonehint{font-weight:600}
small.sh-zonenote{color:var(--teal-ink);font-weight:600}
.sh-cod{border-style:solid;border-color:#2DD4BF;background:var(--bg)}
.sh-cod .sh-codbtn{margin-top:8px;width:100%;padding:12px 16px;min-height:44px}
.sh-cod .sh-codwhy{display:block;color:var(--muted);line-height:1.55}
.sh-codok{text-align:left}
.sh-codstage{line-height:1.55}
small.sh-codstage{display:block;color:var(--teal-ink);font-weight:600}
.sh-pill.cod{background:#E7F7EE;color:#0E5A33}
.dark .sh-pill.cod{background:#14432C;color:#BFF0D4}

/* Khung ảnh sản phẩm có LỀ + bo góc (chủ shop duyệt 07/11/2026): ảnh không còn dính sát viền hộp. Áp dụng cho mọi hộp xem sản phẩm: web, điện thoại, app. */
.sh-panel .sh-gal,.sh-panel .sh-pwrap{padding:20px 0 16px 20px;box-sizing:border-box}
.sh-panel .sh-gal .sh-pic,.sh-panel .sh-pwrap>.sh-pic{border-radius:20px;overflow:hidden}
.sh-panel .sh-gal.n2{background:none;gap:10px}
.sh-panel .sh-thumbs{padding:14px 0 0;justify-content:safe center}      /* ảnh nhỏ căn GIỮA (nhiều ảnh quá thì tự cuộn ngang, không bị cắt mất ảnh đầu) */
.sh-panel .sh-count{text-align:center;padding:8px 0 0;font-size:var(--fs-sm);font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:.04em}
.sh-panel .sh-thumb{transition:transform .15s ease,border-color .15s ease}
.sh-panel .sh-thumb:hover{transform:translateY(-2px)}
.sh-panel .sh-thumb{width:62px;height:62px;border-radius:12px}
@media (max-width:760px){
  .sh-panel .sh-gal,.sh-panel .sh-pwrap{padding:16px 16px 0}
  .sh-panel .sh-thumbs{padding:12px 0 0}
}
/* Chữ 2 khối "dịch vụ đi kèm" + "Chọn Theo Nhóm" thiết kế lại (chủ shop duyệt 07/11/2026): phông Be Vietnam Pro, chữ to + thoáng, viết hoa đều, biểu tượng trong ô màu, số sản phẩm thành nhãn */
.sh-feats{gap:18px}
.sh-feat{padding:18px 20px;gap:16px;border-radius:20px;align-items:center}
.sh-feat .sh-fi{width:54px;height:54px;border-radius:17px;font-size:27px}
.sh-feat b{font-family:'Be Vietnam Pro',sans-serif;font-size:1.0625rem;font-weight:700;line-height:1.35;letter-spacing:-.01em;text-transform:capitalize}
.sh-feat small{font-size:.9375rem;font-weight:500;line-height:1.5;margin-top:4px}
.sh-cat{gap:12px;padding:26px 16px 22px;border-radius:26px}
.sh-cat .sh-ce{width:88px;height:88px;min-height:0;border-radius:26px;background:var(--soft-blue);font-size:48px}
.sh-cat.t .sh-ce{background:var(--soft-teal)}
.sh-cat b{font-family:'Be Vietnam Pro',sans-serif;font-size:1.125rem;font-weight:700;line-height:1.35;letter-spacing:-.01em}
.sh-cat small{display:inline-block;padding:4px 12px;border-radius:999px;background:var(--soft-blue);color:var(--accent-ink);font-size:.8125rem;font-weight:600;line-height:1.4}
.sh-cat.t small{background:var(--soft-teal);color:var(--teal-ink)}
.sh-cat.sk .sh-ce{background:none}
@media (max-width:600px){.sh-cat{padding:20px 10px 18px}.sh-cat .sh-ce{width:76px;height:76px;border-radius:22px;font-size:42px}}

/* Thẻ sản phẩm: khung ảnh BO TRÒN, cách mép thẻ (kiểu A, chủ shop chọn 07/11/2026) — không còn cạnh thẳng giữa ảnh và phần chữ */
.sh-pcard .sh-pimg{margin:10px 10px 0;width:calc(100% - 20px);border-radius:18px;overflow:hidden}
@media (max-width:600px){.sh-pcard .sh-pimg{margin:8px 8px 0;width:calc(100% - 16px);border-radius:16px}}

/* ==================== 07/11/2026 — bộ thiết kế chủ shop duyệt: 1C · 2B · 3 · 4A · 5 · 6A · 7B ==================== */

/* ----- 1C: nhãn nổi bật — huy hiệu góc trái (Best Seller / Hot / Hàng mới) + tem đỏ răng cưa góc phải "GIẢM x%"; thẻ Best Seller viền vàng.
   Hiệu ứng (ánh sáng lướt, tem lắc nhẹ) tắt được trong admin (body.sh-nofx) và tự tắt khi máy bật "giảm chuyển động". ----- */
.sh-pimg .sh-tags{top:auto;bottom:10px;left:10px}
.sh-tag.sh-medal{position:absolute;top:10px;left:10px;z-index:2;display:inline-flex;align-items:center;gap:7px;padding:4px 13px 4px 4px;border-radius:999px;font-size:var(--fs-xs);font-weight:800;line-height:18px;overflow:hidden;white-space:nowrap;max-width:calc(100% - 20px)}
.sh-tag.sh-medal::before{flex:none;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.875rem;line-height:1}
.sh-tag.sh-medal.best{background:#FCD34D linear-gradient(135deg,#FFF6D1,#FCD34D);color:#4A2A00;border:1.5px solid #F59E0B;box-shadow:0 6px 16px rgba(245,158,11,.45)}
.sh-tag.sh-medal.best::before{content:'\2605';background:linear-gradient(135deg,#F59E0B,#B45309);color:#FFF6D1}
.sh-tag.sh-medal.new{background:#6EE7B7 linear-gradient(135deg,#D1FAE5,#6EE7B7);color:#064E3B;border:1.5px solid #10B981;box-shadow:0 6px 16px rgba(16,185,129,.35)}
.sh-tag.sh-medal.new::before{content:'\2726';background:linear-gradient(135deg,#10B981,#047857);color:#fff}
.sh-tag.sh-medal.hot{padding:5px 13px;background:#FFE2C2 linear-gradient(135deg,#FFEDD5,#FFE2C2);color:#7A2E00;border:1.5px solid #F59E0B;box-shadow:0 6px 16px rgba(249,115,22,.35)}
.dark .sh-tag.sh-medal.hot{background:#5A2A0A;color:#FFD9B8;border-color:#B45309}
.sh-tag.sh-medal::after{content:'';position:absolute;top:0;bottom:0;left:0;width:40%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.85),transparent);transform:translateX(-160%) skewX(-20deg);animation:shMedalShine 3.4s ease-in-out infinite;pointer-events:none;will-change:transform}
@keyframes shMedalShine{0%,55%{transform:translateX(-160%) skewX(-20deg)}100%{transform:translateX(420%) skewX(-20deg)}}
.sh-medals{display:flex;gap:6px;flex-wrap:wrap}
.sh-tag.sh-medal.inl{position:relative;top:auto;left:auto;max-width:none}
.sh-stkw{position:absolute;top:6px;right:6px;z-index:2;transform:rotate(-12deg);animation:shStkWob 2.6s ease-in-out infinite;pointer-events:none;will-change:transform}
@keyframes shStkWob{0%,100%{transform:rotate(-12deg) scale(1)}50%{transform:rotate(-5deg) scale(1.07)}}
.sh-stk{width:74px;height:74px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:#fff;background:radial-gradient(circle at 35% 30%,#FF8A8A,#E11D48 60%,#BE123C);clip-path:polygon(50% 0%,60.6% 10.4%,75% 6.7%,79% 21%,93.3% 25%,89.6% 39.4%,100% 50%,89.6% 60.6%,93.3% 75%,79% 79%,75% 93.3%,60.6% 89.6%,50% 100%,39.4% 89.6%,25% 93.3%,21% 79%,6.7% 75%,10.4% 60.6%,0% 50%,10.4% 39.4%,6.7% 25%,21% 21%,25% 6.7%,39.4% 10.4%)}
.sh-stk small{font-family:'Be Vietnam Pro',sans-serif;font-size:.6875rem;font-weight:800;letter-spacing:.04em;line-height:1}
.sh-stk b{font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:1.3125rem;font-weight:800;line-height:1.05}
.sh-pcard.is-best{border-color:#FBBF24;box-shadow:0 0 0 1.5px #FBBF24,0 14px 32px rgba(245,158,11,.28)}
.sh-pcard.is-best:hover{border-color:#F59E0B}
.dark .sh-pcard.is-best{border-color:#B7791F;box-shadow:0 0 0 1.5px #B7791F,0 14px 32px rgba(0,0,0,.35)}
.sh-offpill{display:inline-flex;align-items:center;align-self:center;padding:3px 10px;border-radius:999px;background:#E11D48 linear-gradient(135deg,#FF6B6B,#E11D48);color:#fff;font-size:var(--fs-sm);font-weight:800;line-height:1.4}
body.sh-nofx .sh-tag.sh-medal::after,body.sh-nofx .sh-stkw{animation:none}
@media (prefers-reduced-motion:reduce){.sh-tag.sh-medal::after,.sh-stkw{animation:none!important}}
@media (max-width:600px){
  .sh-stk{width:60px;height:60px}.sh-stk b{font-size:1.0625rem}.sh-stk small{font-size:.625rem}
  .sh-tag.sh-medal{font-size:.75rem;padding:3px 10px 3px 3px;gap:5px;top:8px;left:8px}.sh-tag.sh-medal::before{width:22px;height:22px;font-size:.75rem}.sh-tag.sh-medal.hot{padding:4px 10px}
  .sh-stkw{top:4px;right:4px}
}

/* ----- 2B: ô Sắp xếp — nút bo tròn nền xanh nhạt, ⇅ bên trái, ▾ bên phải; số sản phẩm thành nhãn ----- */
.sh-sechead-r{gap:10px 12px}
#shListCount:not(:empty){background:var(--soft-teal);color:var(--teal-ink);padding:9px 16px;border-radius:999px;font-size:var(--fs-sm);font-weight:700;line-height:1.2}
.sh-sort{position:relative;gap:0}
.sh-sort select{appearance:none;-webkit-appearance:none;border:1.5px solid rgba(42,82,217,.25);background:var(--soft-blue);color:var(--accent-ink);height:46px;min-height:46px;padding:0 44px 0 46px;border-radius:999px;font-weight:700;box-shadow:0 6px 16px rgba(42,82,217,.14)}
.dark .sh-sort select{border-color:rgba(165,192,255,.35);box-shadow:none}
.sh-sort select option{color:var(--ink);background:var(--surface)}
.sh-sort svg{position:absolute;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--accent-ink)}
.sh-sorti{left:17px}
.sh-sortv{right:16px}

/* ----- 4A: chân trang 4 cột cân đối + dòng bản quyền ----- */
.sh-foot{padding:46px 0 0}
.sh-footgrid{grid-template-columns:minmax(0,1.1fr) minmax(0,1.4fr) minmax(0,1.15fr) minmax(0,.95fr);gap:44px;align-items:start}
.sh-fcol{display:flex;flex-direction:column;gap:12px;min-width:0}
.sh-fh{display:block;font-size:1.0625rem;font-weight:800;color:var(--ink);margin:2px 0 4px}
.sh-fbrandcol #shFootLine{line-height:1.6}
.sh-fsoc{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
.sh-fsoc a{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--surface);border:1.5px solid var(--line2);font-size:18px;text-decoration:none;transition:transform .2s,border-color .2s}
.sh-fsoc a:hover{transform:translateY(-2px);border-color:#2A52D9}
.sh-fsoc a[hidden]{display:none}
.sh-fpm{display:flex;gap:12px;align-items:flex-start}
.sh-fpm[hidden]{display:none}
.sh-fpi{width:40px;height:40px;border-radius:12px;background:var(--soft-blue);display:flex;align-items:center;justify-content:center;font-size:19px;flex:none}
.sh-fpt{display:flex;flex-direction:column;line-height:1.45;min-width:0}
.sh-fpt b{color:var(--ink);font-weight:700}
.sh-fpt small{color:var(--muted);font-size:var(--fs-sm)}
.sh-fpay{display:block;color:var(--muted);font-size:var(--fs-sm);line-height:1.55}
.sh-fpay:empty{display:none}
.sh-foot .sh-footlinks{display:flex;flex-direction:column;flex-wrap:nowrap;align-items:flex-start;justify-content:flex-start;gap:11px;margin:0;font-size:inherit;line-height:1.5}
.sh-foot .sh-footlinks a,.sh-foot .sh-footlinks .sh-linkbtn{text-decoration:none;font-weight:500;text-align:left}
.sh-foot .sh-footlinks a:hover,.sh-foot .sh-footlinks .sh-linkbtn:hover{text-decoration:underline}
.sh-fbot{margin-top:34px;border-top:1px solid var(--line);padding:18px 0 22px;display:flex;justify-content:space-between;gap:6px 16px;flex-wrap:wrap;color:var(--muted);font-size:var(--fs-sm)}
@media (max-width:1200px){.sh-footgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 40px}}
@media (max-width:600px){.sh-footgrid{grid-template-columns:minmax(0,1fr);gap:28px}.sh-fbot{flex-direction:column}}

/* ----- 7B: banner — 3 thẻ ảnh quà Best Seller / đang giảm giá xòe ra, thẻ giữa tự đổi (js/shophero.js) ----- */
.sh-bart.has-prod .sh-stage{display:none}
/* máy tính: khối chữ và khối ảnh gom vào giữa banner, cách nhau vừa phải (chủ shop: "kéo khung chữ sang phải, đang cách xa ảnh quá", 07/11/2026) */
@media (min-width:1201px){.sh-banner{grid-template-columns:minmax(0,560px) minmax(0,480px);justify-content:center;column-gap:clamp(90px,12vw,220px);text-align:center}.sh-banner p{margin-left:auto;margin-right:auto}.sh-bbtns{justify-content:center}
.sh-banner{gap:24px clamp(90px,12vw,220px);padding:clamp(40px,5vw,84px) clamp(32px,4vw,64px)}
.sh-banner h1{line-height:1.22}
.sh-banner p{margin-top:26px;max-width:500px;line-height:1.85;letter-spacing:.01em}
.sh-bbtns{gap:18px;margin-top:40px}}      /* chữ + hai nút căn GIỮA khối chữ (chủ shop yêu cầu 07/11/2026) */
.sh-fan{position:relative;width:min(100%,480px);height:360px;margin-top:6px}
.sh-fc{position:absolute;top:30px;left:50%;width:200px;margin-left:-100px;padding:0;border:0;border-radius:22px;background:#fff;color:#0F1B3D;box-shadow:0 22px 44px rgba(8,20,70,.42);overflow:hidden;cursor:pointer;text-align:left;font-family:inherit;display:flex;flex-direction:column;transition:transform .6s cubic-bezier(.2,.8,.2,1),opacity .6s ease,box-shadow .3s,top .6s ease,width .6s ease,margin-left .6s ease}
.sh-fc.c{z-index:3;width:236px;margin-left:-118px;top:6px;box-shadow:0 30px 60px rgba(8,20,70,.5)}
.sh-fc.l{z-index:2;transform:translateX(-122px) translateY(18px) rotate(-10deg) scale(.88)}
.sh-fc.r{z-index:2;transform:translateX(122px) translateY(18px) rotate(10deg) scale(.88)}
.sh-fc.h{z-index:1;opacity:0;transform:translateY(30px) scale(.8);pointer-events:none}
.sh-fc.c:hover{transform:translateY(-4px)}
.sh-fc:focus-visible{outline:3px solid #A7F3E4;outline-offset:3px}
.sh-fci{position:relative;display:block;aspect-ratio:1/1;overflow:hidden;background:#EEF2FF}
.sh-fci img{width:100%;height:100%;object-fit:cover;display:block}
.sh-fcb{position:absolute;top:10px;left:10px;padding:5px 11px;border-radius:999px;font-size:var(--fs-xs);font-weight:800;line-height:16px;box-shadow:0 4px 12px rgba(0,0,0,.2)}
.sh-fcb.best{background:#FCD34D linear-gradient(135deg,#FFE58F,#F59E0B);color:#4A2A00}
.sh-fcb.best::before{content:'\2605\00a0'}
.sh-fcb.sale{background:#E11D48 linear-gradient(135deg,#FF6B6B,#E11D48);color:#fff}
.sh-fct{display:flex;flex-direction:column;gap:2px;padding:10px 12px 12px;min-width:0}
.sh-fcn{font-size:var(--fs-sm);font-weight:800;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh-fcs{color:#475569;font-size:var(--fs-xs);font-weight:600}
.sh-fcp{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.sh-fcp b{font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:1.1875rem;font-weight:800;color:#2A52D9;line-height:1.2}
.sh-fcp b.sale{color:#E11D48}
.sh-fcp s{color:#64748B;font-size:var(--fs-xs)}
@media (max-width:600px){
  .sh-fan{height:300px}
  .sh-fc{width:150px;margin-left:-75px;top:34px}.sh-fc.c{width:190px;margin-left:-95px}
  .sh-fc.l{transform:translateX(-88px) translateY(16px) rotate(-10deg) scale(.86)}.sh-fc.r{transform:translateX(88px) translateY(16px) rotate(10deg) scale(.86)}
}
@media (prefers-reduced-motion:reduce){.sh-fc{transition:none}}

/* ----- 3: đầu trang có nút "☰ Mục lục" (js/shopnav.js) — chỉ web; app giữ đầu trang riêng. Mục ẩn bằng data-pm="off". ----- */
[data-pm="off"]{display:none!important}
.sh-menubtn,.sh-catmore{display:none}
html:not(.app-mode) .sh-menubtn:not([hidden]),html:not(.app-mode) .sh-catmore:not([hidden]){display:inline-flex}
html:not(.app-mode) .sh-hdrrow{flex-wrap:nowrap;gap:10px;justify-content:flex-start}
html:not(.app-mode) .sh-hdrrow>.sh-sp,html:not(.app-mode) .sh-hdrrow>.sh-brk{display:none}
html:not(.app-mode) .sh-hdrrow>*{order:0;margin-top:0}
html:not(.app-mode) #themeBtn,html:not(.app-mode) #shCartBtn,html:not(.app-mode) #musicBtn{order:0}
html:not(.app-mode) .sh-hdrrow::before{display:none}
html:not(.app-mode) .sh-search{flex:1 1 auto;min-width:240px;max-width:760px;margin:0 auto;height:48px}
html:not(.app-mode) .sh-backlink{flex:none;height:44px;padding:0 10px;border-radius:12px}
html:not(.app-mode) .sh-backlink:hover{background:var(--soft-blue)}
.sh-igrp{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:999px;border:1.5px solid var(--line2);background:var(--surface);flex:none}
.sh-igrp>*{order:0!important}
.sh-igrp>button{width:40px!important;height:40px!important;border:0!important;background:transparent!important;border-radius:50%!important;box-shadow:none!important;transform:none!important}
.sh-igrp>button:hover{background:var(--soft-blue)!important}
/* ô tài khoản + ví đầu trang Shop = mẫu B1 "ví vàng" (chủ shop duyệt 08/11/2026, thay mẫu 8B): ảnh chữ cái + huy hiệu đồng xu, tên và số dư CÙNG MÉP TRÁI,
   mũi tên ▾ (bấm = cửa sổ nhỏ #shAccMenu: xem tài khoản, nhạc nền, nền tối, đăng xuất — js/shopnav.js), nút "+" vàng = nạp tiền. App Android ẩn khung này (appshell.css). */
html:not(.app-mode) .sh-wallet{--sw-ring:#FFF9E8;height:54px;gap:6px;padding:5px;box-sizing:border-box;border:1.5px solid #F2C14E;border-radius:999px;background:linear-gradient(135deg,#FFFDF5 0%,#FEF3C7 50%,#FDE68A 100%);box-shadow:0 8px 20px rgba(217,119,6,.20),inset 0 1px 0 rgba(255,255,255,.9)}
.sh-wallet .sh-wmain{display:flex;align-items:center;gap:12px;height:100%;padding:0 10px 0 0;border:0;border-radius:999px;background:none;color:inherit;cursor:pointer;font-family:inherit;text-align:left;transition:background .2s}
.sh-wallet .sh-wmain:hover,.sh-wallet .sh-wmain[aria-expanded="true"]{background:rgba(217,119,6,.11)}
.sh-wallet .sh-wmain:focus-visible,.sh-wallet .sh-wtop:focus-visible{outline:2px solid #2A52D9;outline-offset:2px}
.sh-wava{position:relative;width:42px;height:42px;padding:2px;box-sizing:border-box;border-radius:50%;flex:none;display:grid;place-items:center;background:linear-gradient(135deg,#FCD34D,#D97706)}
.sh-wini{width:100%;height:100%;border-radius:50%;display:grid;place-items:center;font-size:17px;font-weight:800;line-height:1;background:linear-gradient(135deg,#B45309,#78350F);color:#FFF7E0;box-shadow:inset 0 0 0 2px #FFF7E0}
.sh-wbadge{position:absolute;right:-5px;bottom:-4px;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;background:var(--sw-ring,#FFF9E8);box-shadow:0 2px 5px rgba(120,80,0,.25)}
.sh-wcoin{flex:none;display:block}
.sh-wt{display:grid;justify-items:start;align-content:center;row-gap:1px}
.sh-wl{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:16px;font-weight:700;color:#92400E}
.sh-wt b{font-size:16.5px;line-height:20px;font-weight:800;color:#3A2500;font-variant-numeric:tabular-nums;letter-spacing:.01em;white-space:nowrap}
.sh-wchev{flex:none;color:#B45309;transition:transform .2s}
.sh-wmain[aria-expanded="true"] .sh-wchev{transform:rotate(180deg)}
.sh-wallet .sh-wtop{width:44px;height:44px;padding:0;align-self:center;flex:none;display:grid;place-items:center;border:0;border-radius:50%;cursor:pointer;color:#fff;background:radial-gradient(circle at 35% 30%,#FDE68A,#F59E0B 55%,#D97706);box-shadow:0 4px 12px rgba(217,119,6,.40),inset 0 1px 0 rgba(255,255,255,.6);transition:transform .15s,box-shadow .15s}
.sh-wallet .sh-wtop:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(217,119,6,.48),inset 0 1px 0 rgba(255,255,255,.6)}
.sh-wtop svg{display:block}
html.dark:not(.app-mode) .sh-wallet{--sw-ring:#2C2410;border-color:#A16207;background:linear-gradient(135deg,#2A2310 0%,#3A2C0C 55%,#4A3508 100%);box-shadow:0 8px 20px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.06)}
html.dark .sh-wallet .sh-wmain:hover,html.dark .sh-wallet .sh-wmain[aria-expanded="true"]{background:rgba(252,211,77,.10)}
html.dark .sh-wl,html.dark .sh-wchev{color:#FCD34D}
html.dark .sh-wt b{color:#FFF7E0}
/* đã đăng nhập (màn ≥701px): ô tài khoản thay nút tên và khung nhạc / giao diện (hai nút này nằm trong cửa sổ của ô); ngoài ô chỉ còn chuông + giỏ hàng.
   Điện thoại (≤700px) giữ cách cũ: nút tên 👤 + Mục lục. Lớp .sh-acc-on do js/shopnav.js gắn theo trạng thái đăng nhập. */
@media (min-width:701px){
  html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-igrp,html:not(.app-mode) .sh-hdrrow.sh-acc-on>#shUser{display:none!important}
}
/* cửa sổ tài khoản (mẫu C, chủ shop duyệt 08/11/2026): ảnh + tên + "Xem tài khoản ›", hai nút tròn Nhạc nền / Nền tối (bấm = bấm đúng nút gốc), Đăng xuất */
.sh-accmenu{position:absolute;z-index:61;box-sizing:border-box;width:262px;padding:8px;border-radius:20px;background:var(--surface);color:var(--ink);border:1.5px solid var(--line);box-shadow:0 22px 48px rgba(15,27,61,.24)}
.sh-accmenu[hidden]{display:none}
.sh-accmenu::before{content:'';position:absolute;top:-8px;left:var(--ax,28px);width:13px;height:13px;background:var(--surface);border-left:1.5px solid var(--line);border-top:1.5px solid var(--line);border-top-left-radius:3px;transform:rotate(45deg)}
.sh-accmenu button{margin:0;border:0;background:none;color:inherit;font-family:inherit;cursor:pointer}
.sh-accmenu .sh-amhead{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px 10px;box-sizing:border-box;border-radius:14px;text-align:left}
.sh-amhead .sh-wava{width:44px;height:44px}
.sh-amht{display:grid;justify-items:start;min-width:0;line-height:1.3}
.sh-amht b{max-width:168px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:800}
.sh-amht small{font-size:13px;font-weight:600;color:var(--accent-ink)}
.sh-ampair{display:flex;gap:6px;padding:4px 4px 8px}
.sh-accmenu .sh-amrb{flex:1 1 0;min-width:0;display:grid;justify-items:center;gap:4px;padding:10px 4px;border-radius:16px;text-align:center}
.sh-accmenu .sh-amrb[hidden]{display:none}
.sh-amic{width:58px;height:58px;margin-bottom:4px;border-radius:50%;display:grid;place-items:center;box-shadow:0 4px 12px rgba(15,27,61,.10);transition:background .2s,color .2s}
.sh-amic svg{display:block}
.sh-amic.mu{background:#FFF4D6;color:#B45309}
.sh-amic.th{background:#ECEBFF;color:#4338CA}
.sh-amrb .am-on,.sh-amrb[aria-checked="true"] .am-off{display:none}
.sh-amrb[aria-checked="true"] .am-on{display:block}
.sh-amrb[aria-checked="true"] .sh-amic.mu{background:#2DD4BF;color:#053D3A}
.sh-amrb[aria-checked="true"] .sh-amic.th{background:#4338CA;color:#fff}
.sh-amrb b{font-size:14px;font-weight:700}
.sh-amrb small{font-size:13px;color:var(--muted)}
.sh-amhr{height:1px;margin:0 10px 6px;background:var(--line)}
.sh-accmenu .sh-amout{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:10px;border-radius:12px;font-size:14px;font-weight:700;color:#E11D48}
.sh-accmenu .sh-amhead:hover,.sh-accmenu .sh-amhead:focus-visible,.sh-accmenu .sh-amrb:hover,.sh-accmenu .sh-amrb:focus-visible{background:var(--soft-blue);outline:0}
.sh-accmenu .sh-amout:hover,.sh-accmenu .sh-amout:focus-visible{background:#FFF1F2;outline:0}
html.dark .sh-amic.mu{background:#3D2E0E;color:#FCD34D}
html.dark .sh-amic.th{background:#29295A;color:#C7C4FF}
html.dark .sh-amrb[aria-checked="true"] .sh-amic.mu{background:#2DD4BF;color:#053D3A}
html.dark .sh-amrb[aria-checked="true"] .sh-amic.th{background:#6366F1;color:#fff}
html.dark .sh-accmenu .sh-amout{color:#FB7185}
html.dark .sh-accmenu .sh-amout:hover,html.dark .sh-accmenu .sh-amout:focus-visible{background:rgba(251,113,133,.12)}
.sh-amfoot{display:flex;gap:6px}
.sh-accmenu .sh-amfoot>button{flex:1 1 0;min-width:0}
/* thẻ số dư + Nạp và nút Trang chủ trong cửa sổ: chỉ điện thoại (máy tính: ô đã hiện số dư, "Trang Chủ" nằm ở đầu trang) */
.sh-sbtn,.sh-amwal,.sh-accmenu .sh-amhome{display:none}
.sh-amwal{align-items:center;gap:10px;margin:10px 4px 10px;padding:10px 8px 10px 12px;border-radius:16px;border:1.5px solid #F2C14E;background:linear-gradient(135deg,#FFFDF5 0%,#FEF3C7 55%,#FDE68A 100%)}
.sh-amwt{display:grid;justify-items:start;flex:1;min-width:0;line-height:1.2}
.sh-amwt small{font-size:13px;font-weight:700;color:#92400E}
.sh-amwt b{font-size:18px;font-weight:800;color:#3A2500;font-variant-numeric:tabular-nums;white-space:nowrap}
.sh-accmenu .sh-amnap{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 16px 0 12px;border-radius:999px;flex:none;color:#fff;font-size:14px;font-weight:800;background:radial-gradient(circle at 35% 30%,#FDE68A,#F59E0B 55%,#D97706);box-shadow:0 4px 12px rgba(217,119,6,.35)}
.sh-accmenu .sh-amnap:focus-visible{outline:2px solid #2A52D9;outline-offset:2px}
.sh-accmenu .sh-amhome{align-items:center;justify-content:center;gap:8px;padding:10px;border-radius:12px;font-size:14px;font-weight:700;color:var(--accent-ink)}
.sh-accmenu .sh-amhome:hover,.sh-accmenu .sh-amhome:focus-visible{background:var(--soft-blue);outline:0}
html.bal-hidden #shAmBal{filter:blur(7px);-webkit-user-select:none;user-select:none}
html.dark .sh-amwal{border-color:#A16207;background:linear-gradient(135deg,#2A2310 0%,#3A2C0C 55%,#4A3508 100%)}
html.dark .sh-amwt small{color:#FCD34D}
html.dark .sh-amwt b{color:#FFF7E0}
/* ----- điện thoại (≤700px) đã đăng nhập = mẫu C "gọn chiều cao" (chủ shop duyệt 08/11/2026): hàng 1 logo · 🔍 · chuông · giỏ · ảnh đại diện
   (bấm = cửa sổ: số dư + Nạp, Nhạc nền, Nền tối, Trang chủ, Đăng xuất); ô tìm kiếm chỉ hiện khi bấm 🔍 (lớp .sh-sopen, js/shopnav.js). Chưa đăng nhập: giữ như cũ. ----- */
@media (max-width:700px){
  .sh-tbs{display:none}          /* thanh xanh trên cùng chỉ còn "Hotline / Zalo: …" (câu khẩu hiệu bị cắt "…" trên điện thoại) */
  .sh-amwal,.sh-accmenu .sh-amhome{display:flex}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on{column-gap:6px}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-igrp,html:not(.app-mode) .sh-hdrrow.sh-acc-on>#shUser,html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-backlink{display:none!important}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on:not(.sh-sopen)>.sh-search{display:none}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-wallet{order:2}          /* ảnh đại diện đứng cuối hàng (sau 🔍 · chuông · giỏ) như mẫu */
  html:not(.app-mode) .sh-hdrrow.sh-acc-on>#shMenuBtn{order:3}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-sbtn{display:flex}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-sbtn,html:not(.app-mode) .sh-hdrrow.sh-acc-on>.bellbtn,html:not(.app-mode) .sh-hdrrow.sh-acc-on>#shCartBtn{width:42px;height:42px}
  html:not(.app-mode) .sh-hdrrow.sh-sopen>.sh-sbtn{background:var(--soft-blue);border-color:#2A52D9}
  /* ô tài khoản thu thành ảnh đại diện tròn (số dư + Nạp nằm trong cửa sổ) */
  html:not(.app-mode) .sh-wallet,html.dark:not(.app-mode) .sh-wallet{height:42px;padding:0;gap:0;border:0;border-radius:50%;background:none;box-shadow:none}
  .sh-wallet .sh-wmain{padding:0;gap:0}
  .sh-wallet .sh-wmain:hover,.sh-wallet .sh-wmain[aria-expanded="true"],html.dark .sh-wallet .sh-wmain:hover,html.dark .sh-wallet .sh-wmain[aria-expanded="true"]{background:none}
  .sh-wallet .sh-wt,.sh-wallet .sh-wchev,.sh-wallet .sh-wtop{display:none}
  .sh-wallet .sh-wmain[aria-expanded="true"] .sh-wava{box-shadow:0 0 0 4px rgba(245,158,11,.28)}
}
@media (max-width:389px){          /* máy nhỏ (360–389px): logo + nút nhỏ lại một chút cho vừa một hàng */
  html:not(.app-mode) .sh-hdrrow.sh-acc-on{column-gap:5px}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-brand{gap:7px}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-brand img{width:40px;height:39px}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on .sh-brandtxt{font-size:30px}
  html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-sbtn,html:not(.app-mode) .sh-hdrrow.sh-acc-on>.bellbtn,html:not(.app-mode) .sh-hdrrow.sh-acc-on>#shCartBtn,html:not(.app-mode) .sh-hdrrow.sh-acc-on>.sh-wallet,html:not(.app-mode) .sh-hdrrow.sh-acc-on .sh-wava{width:40px;height:40px}
}
html:not(.app-mode) .sh-user{height:46px;padding:0 16px;border-radius:999px;max-width:200px;font-size:var(--fs-md);flex:none}
html:not(.app-mode) .sh-user.pri{margin-left:0}
html:not(.app-mode) #shCartBtn,html:not(.app-mode) .sh-hdrrow>.bellbtn{width:48px;height:48px}
.sh-menubtn{flex:none;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 16px 0 13px;border-radius:999px;border:1.5px solid var(--line2);background:var(--surface);color:var(--ink);font-family:inherit;font-size:var(--fs-md);font-weight:700;cursor:pointer;white-space:nowrap;position:relative}
.sh-menubtn:hover{background:var(--soft-blue);border-color:#2A52D9}
.sh-mdot{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#2A52D9;color:#fff;font-size:.75rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}
.dark .sh-mdot{background:#A5C0FF;color:#0F1B3D}
.sh-mdot[hidden]{display:none}
.sh-menu,.sh-catmenu{position:absolute;z-index:60;background:var(--surface);color:var(--ink);border:1.5px solid var(--line);border-radius:20px;box-shadow:0 22px 48px rgba(15,27,61,.24);padding:8px;max-height:calc(100vh - 140px);overflow:auto;box-sizing:border-box}
.sh-menu[hidden],.sh-catmenu[hidden]{display:none}
.sh-mhead{padding:8px 12px 6px;font-size:var(--fs-xs);font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.sh-mrow{display:flex;align-items:center;gap:12px;width:100%;padding:9px 10px;border:0;border-radius:14px;background:none;color:var(--ink);font-family:inherit;text-align:left;cursor:pointer}
.sh-mrow:hover,.sh-mrow:focus-visible{background:var(--soft-blue);outline:0}
.sh-mri{width:40px;height:40px;border-radius:12px;background:var(--soft-blue);display:flex;align-items:center;justify-content:center;font-size:19px;flex:none}
.sh-mrow:hover .sh-mri,.sh-mrow:focus-visible .sh-mri{background:var(--surface)}
.sh-mrt{display:flex;flex-direction:column;flex:1;min-width:0;line-height:1.35}
.sh-mrt b{font-size:var(--fs-md);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sh-mrt small{color:var(--muted);font-size:var(--fs-sm)}
.sh-mrb{background:#2DD4BF;color:#053D3A;border-radius:999px;padding:6px 14px;font-weight:800;font-size:var(--fs-sm)}
html:not(.app-mode) .sh-chipwrap{display:flex;flex-wrap:nowrap;align-items:center;gap:10px;overflow:hidden;padding-top:12px;padding-bottom:12px}
html:not(.app-mode) .sh-chipwrap>#shChips,html:not(.app-mode) .sh-chipwrap>#shSvcChips{display:contents}
html:not(.app-mode) .sh-chipwrap::after{display:none!important}
html:not(.app-mode) .sh-chipwrap .sh-chip{flex:none;white-space:nowrap}
.sh-catmore{order:99;margin-left:auto;align-items:center;gap:6px;background:var(--soft-blue);color:var(--accent-ink);border-color:rgba(42,82,217,.35)}
.sh-cgrid{display:flex;flex-wrap:wrap;gap:8px;padding:4px 6px 10px}
.sh-catmenu .sh-chip{white-space:normal;text-align:left}
@media (max-width:1000px){
  html:not(.app-mode) .sh-hdr{position:sticky;top:0}
  html:not(.app-mode) .sh-hdrrow{padding-top:10px;padding-bottom:10px}
  html:not(.app-mode) .sh-user{max-width:220px}
  html:not(.app-mode) .sh-iconbtn{width:44px;height:44px}
  html:not(.app-mode) #shCartBtn,html:not(.app-mode) .sh-hdrrow>.bellbtn{width:46px;height:46px}
}
@media (max-width:700px){
  html:not(.app-mode) .sh-hdrrow{flex-wrap:wrap;gap:8px}
  html:not(.app-mode) .sh-search{order:20;flex:1 1 100%;min-width:0;max-width:none;margin:2px 0 0;height:46px}
  html:not(.app-mode) .sh-brand{margin-right:auto}
  html:not(.app-mode) .sh-menubtn{width:46px;height:46px;padding:0}
  html:not(.app-mode) .sh-menubtn .sh-mt{display:none}
  html:not(.app-mode) .sh-menubtn .sh-mdot{position:absolute;top:-4px;right:-4px}
  html:not(.app-mode) .sh-user{max-width:130px;padding:0 12px}
  html:not(.app-mode) .sh-chipwrap{padding-top:8px;padding-bottom:10px;gap:8px}
}

/* ----- 6A: giỏ hàng / thông tin nhận hàng / thanh toán / đơn hàng — nền dịu, thẻ bo tròn, thanh 3 bước ----- */
.sh-drawer{background:var(--bg)}
.sh-dhead{border-bottom:0;padding:18px 20px 12px}
.sh-dhead:has(+ .sh-steps[hidden]){border-bottom:1px solid var(--line)}
.sh-steps{display:flex;gap:6px;margin:0;padding:0 20px 12px;list-style:none}
.sh-steps[hidden]{display:none}
.sh-steps li{flex:1;display:flex;flex-direction:column;gap:6px;font-size:var(--fs-xs);font-weight:700;color:var(--muted);line-height:1.3}
.sh-steps li::before{content:'';height:5px;border-radius:999px;background:var(--line)}
.sh-steps li.done::before,.sh-steps li.on::before{background:linear-gradient(90deg,#3B6CFF,#2DD4BF)}
.sh-steps li.on{color:var(--ink)}
.sh-dbody{padding:6px 20px 16px;gap:12px}
.sh-dfoot{background:var(--surface);padding:14px 20px 18px;gap:10px}
.sh-dfoot .sh-btn{border-radius:16px;min-height:50px}
/* giỏ */
.sh-line{grid-template-columns:76px minmax(0,1fr);gap:14px;align-items:start;padding:12px;border-radius:20px;background:var(--surface);border:1px solid var(--line)}
.sh-line .sh-th{width:76px;height:76px;border-radius:16px;font-size:38px}
.sh-line b.sh-lname{font-size:var(--fs-md);font-weight:700;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sh-line small{margin:3px 0 0}
.sh-lctl{display:flex;align-items:center;gap:8px;margin-top:10px}
.sh-lctl .sh-qty{border-radius:999px;background:var(--bg)}
.sh-line .sh-qty button{width:34px;height:34px}
.sh-line b.sh-ltot{display:block;margin:0 0 0 auto;font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:var(--fs-lg);font-weight:800;color:var(--accent-ink);white-space:nowrap}
.sh-line .sh-rm{width:36px;height:36px;min-height:0;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);text-decoration:none;flex:none}
.sh-line .sh-rm:hover{background:rgba(225,29,72,.12);color:#E11D48}
.sh-cban{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:16px;background:#ECFDF5;color:#065F46;font-weight:700;font-size:var(--fs-sm);line-height:1.5}
.dark .sh-cban{background:rgba(16,185,129,.14);color:#A7F3D0}
.sh-cban.dg{background:var(--soft-blue);color:var(--deep-ink)}
.dark .sh-cban.dg{color:var(--ink)}
.sh-cempty{display:flex;flex-direction:column;align-items:center;gap:10px}
.sh-cei{font-size:44px;line-height:1}
.sh-dfoot .sh-sumbox{gap:8px}
.sh-dfoot .sh-sum{padding-top:10px;border-top:1px dashed var(--line2);align-items:center}
.sh-dfoot .sh-sumbox>.sh-sum:first-child,.sh-sum.sh-sumc{border-top:0;padding-top:0}
.sh-sum.sh-sumc>span{font-weight:700}
.sh-sum .sh-free,.sh-sumrow b.sh-free{color:#059669;font-weight:800}
.dark .sh-sum .sh-free,.dark .sh-sumrow b.sh-free{color:#34D399}
.sh-gobtn{width:100%;background:#2A52D9 linear-gradient(135deg,#3B6CFF,#2A52D9);box-shadow:0 10px 22px rgba(42,82,217,.3)}
.sh-gobtn.off{box-shadow:none;background:#9AA3B8}
.sh-gotot{font-weight:700;opacity:.92}
.sh-lnk{display:block;text-align:center;font-weight:700;font-size:var(--fs-sm);color:var(--accent-ink);text-decoration:none;padding:4px 0}
.sh-lnk:hover{text-decoration:underline}
/* thông tin nhận hàng */
.sh-drawer .sh-note{border:0;background:var(--soft-blue);color:var(--ink2);border-radius:16px;padding:12px 14px;font-weight:500}
.dark .sh-drawer .sh-note{color:var(--ink)}
.sh-info{display:flex;gap:10px;align-items:flex-start}
.sh-info::before{content:'\2139\FE0F';flex:none}
.sh-sec{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:20px;background:var(--surface);border:1px solid var(--line)}
.sh-sec[hidden]{display:none}
.sh-sech{display:flex;align-items:center;gap:8px;font-weight:800;font-size:var(--fs-md)}
.sh-seci{width:28px;height:28px;border-radius:9px;background:var(--soft-blue);display:inline-flex;align-items:center;justify-content:center;font-size:14px}
.sh-drawer .sh-field input,.sh-drawer .sh-field textarea{border-radius:14px}
.sh-switch{justify-content:space-between;position:relative;min-height:40px}
.sh-switch input{position:absolute;right:0;top:50%;transform:translateY(-50%);width:46px;height:26px;margin:0;opacity:0;cursor:pointer;z-index:1}
.sh-tg{width:46px;height:26px;border-radius:999px;background:var(--line2);position:relative;flex:none;transition:background .2s}
.sh-tg::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .2s}
.sh-switch input:checked+.sh-tg{background:#14B8A6}
.sh-switch input:checked+.sh-tg::after{left:23px}
.sh-switch input:focus-visible+.sh-tg{outline:2px solid #2A52D9;outline-offset:2px}
.sh-sec .sh-vch{background:transparent;border:0;padding:0}
/* thanh toán */
.sh-paytop{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;align-items:center;padding:16px;border-radius:22px;border:1px solid var(--line);background:#E3EAFF linear-gradient(135deg,#E3EAFF,#DDF7F3)}
.dark .sh-paytop{background:#232D4A linear-gradient(135deg,rgba(59,108,255,.25),rgba(45,212,191,.16))}
.sh-ptl{min-width:0}
.sh-ptk{font-size:var(--fs-sm);color:var(--muted);font-weight:600;line-height:1.7}
.sh-ptk b{color:var(--ink)}
.sh-ptk .sh-pill{margin-left:2px}
.sh-ptv{font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:1.875rem;font-weight:800;color:var(--ink);line-height:1.15;margin:2px 0}
.sh-ptk2{display:block;color:var(--muted);font-size:var(--fs-sm);line-height:1.5}
.sh-ptnote{grid-column:1/-1}
.sh-ring{--p:100;width:84px;height:84px;border-radius:50%;background:conic-gradient(#14B8A6 calc(var(--p) * 1%),rgba(15,27,61,.12) 0);display:flex;align-items:center;justify-content:center;flex:none}
.dark .sh-ring{background:conic-gradient(#2DD4BF calc(var(--p) * 1%),rgba(255,255,255,.14) 0)}
.sh-ringi{width:68px;height:68px;border-radius:50%;background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center}
.sh-ring .sh-holdt{font-size:1.125rem;line-height:1.1}
.sh-ringi small{font-size:.6875rem;font-weight:700;color:var(--muted)}
.sh-paytop.warn .sh-ring{background:conic-gradient(#F59E0B calc(var(--p) * 1%),rgba(15,27,61,.12) 0)}
.sh-pmhd{margin:4px 0 0;font-weight:800;font-size:var(--fs-md);color:var(--ink)}
.sh-pmlist{display:flex;flex-direction:column;gap:10px}
.sh-pm{border-radius:18px;border:1.5px solid var(--line);background:var(--surface);overflow:hidden;transition:border-color .2s,box-shadow .2s}
.sh-pm.on{border-color:#14B8A6;box-shadow:0 0 0 3px rgba(20,184,166,.18)}
.dark .sh-pm.on{border-color:#2DD4BF;box-shadow:0 0 0 3px rgba(45,212,191,.18)}
.sh-pm.dis{opacity:.75}
.sh-pmh{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px}
.sh-pmh[role="radio"]{cursor:pointer}
.sh-pmh:focus-visible{outline:2px solid #2A52D9;outline-offset:-3px;border-radius:18px}
.sh-pmi{width:42px;height:42px;border-radius:12px;background:var(--soft-blue);display:flex;align-items:center;justify-content:center;font-size:20px}
.sh-pmt{display:flex;flex-direction:column;gap:2px;min-width:0}
.sh-pmt b{font-size:var(--fs-md);font-weight:700;line-height:1.35}
.sh-pmt small{color:var(--muted);font-size:var(--fs-sm);line-height:1.45}
.sh-warnc{color:#DC2626;font-weight:700}
.dark .sh-warnc{color:#FCA5A5}
.sh-okc{color:#059669;font-weight:700}
.dark .sh-okc{color:#34D399}
.sh-rd{width:22px;height:22px;border-radius:50%;border:2px solid var(--line2);box-sizing:border-box;transition:border-width .2s,border-color .2s}
.sh-pm.on .sh-rd{border:7px solid #14B8A6}
.dark .sh-pm.on .sh-rd{border-color:#2DD4BF}
.sh-pmnote{padding:0 14px 14px}
.sh-pmd{display:flex;flex-direction:column;gap:10px;padding:12px 14px 14px;border-top:1px dashed var(--line)}
.sh-pmd .sh-walletrow{margin:0}
.sh-pmd .sh-codbtn{margin:0;min-height:48px}
.sh-pm .sh-bank{border:1.5px dashed var(--line2);background:var(--bg);color:var(--ink)}
.sh-wait{border-radius:14px;padding:10px 12px;background:var(--soft-teal);color:var(--ink2);font-size:var(--fs-sm);font-weight:600;text-align:center;line-height:1.5}
.dark .sh-wait{color:var(--ink)}
.sh-lnkrow{display:flex;justify-content:center;gap:24px}
.sh-lnkbtn{border:0;background:none;padding:8px 4px;color:var(--accent-ink);font-family:inherit;font-size:var(--fs-md);font-weight:700;cursor:pointer;min-height:40px}
.sh-lnkbtn:hover{text-decoration:underline}
.sh-lnkbtn.red{color:#DC2626}
.dark .sh-lnkbtn.red{color:#FCA5A5}
.sh-btn.outline.red{color:#DC2626;border-color:rgba(220,38,38,.35)}
.dark .sh-btn.outline.red{color:#FCA5A5;border-color:rgba(248,113,113,.45)}
/* đơn hàng của tôi */
.sh-otabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;flex:none;padding-bottom:2px}
.sh-otabs::-webkit-scrollbar{display:none}
.sh-otab{flex:none;padding:8px 14px;border-radius:999px;border:1.5px solid var(--line2);background:var(--surface);color:var(--muted);font-family:inherit;font-size:var(--fs-sm);font-weight:700;cursor:pointer;white-space:nowrap}
.sh-otab.on{background:#2A52D9;border-color:#2A52D9;color:#fff}
.sh-olist{display:flex;flex-direction:column;gap:12px}
.sh-ord{position:relative;overflow:hidden;border-radius:20px;background:var(--surface);padding:16px 16px 14px 20px}
.sh-ord::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--line2)}
.sh-ord.st-pending::before{background:#F59E0B}
.sh-ord.st-paid::before,.sh-ord.st-preparing::before,.sh-ord.st-shipped::before{background:#3B6CFF}
.sh-ord.st-cod::before{background:#14B8A6}
.sh-ord.st-done::before{background:#10B981}
.sh-ord.st-cancelled::before{background:#94A3B8}
.sh-ordtop b{font-size:var(--fs-md);letter-spacing:.02em}
.sh-orow{display:flex;gap:12px;align-items:center}
.sh-othumb{width:52px;height:52px;border-radius:12px;object-fit:cover;flex:none;background:var(--soft-blue)}
.sh-ord .sh-mini{font-weight:600;min-width:0}
.sh-holdmini{display:block;align-self:flex-start;padding:7px 12px;border-radius:14px;background:var(--soft-teal)}
.sh-ofoot{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:4px}
.sh-otl{display:flex;flex-direction:column}
.sh-otl small{color:var(--muted);font-size:var(--fs-xs)}
.sh-otot{font-family:'Baloo 2','Be Vietnam Pro',sans-serif;font-size:1.25rem;font-weight:800;color:var(--accent-ink);line-height:1.2}
.sh-ofoot .sh-ordact .sh-btn{padding:10px 16px;font-size:var(--fs-sm);border-radius:12px;min-height:42px}
/* Mở hộp mượt (07/11/2026): đang có hộp / giỏ hàng / chi tiết sản phẩm che trên thì hiệu ứng trang trí nằm dưới (ánh sáng lướt, tem lắc, nút Thịnh Hành…) tạm dừng cho đỡ nặng máy. Hình nền động và xu bay vẫn chạy. */
body.sh-lock .sh-tag.sh-medal::after,body.sh-lock .sh-stkw,body.sh-lock .sh-chip.gold,body.sh-lock .sh-chip.gold::after,body.sh-lock .sh-btn.hot,body.sh-lock .sh-btn.hot::before,body.sh-lock .sh-btn.hot::after,body.sh-lock .sh-btn.hot .hs,body.sh-lock .sh-btn.hot .sk,body:has(dialog[open]) .sh-tag.sh-medal::after,body:has(dialog[open]) .sh-stkw,body:has(dialog[open]) .sh-chip.gold,body:has(dialog[open]) .sh-chip.gold::after,body:has(dialog[open]) .sh-btn.hot,body:has(dialog[open]) .sh-btn.hot::before,body:has(dialog[open]) .sh-btn.hot::after,body:has(dialog[open]) .sh-btn.hot .hs,body:has(dialog[open]) .sh-btn.hot .sk{animation-play-state:paused}
.sh-ov,.sh-drawer{contain:layout paint style}
