/* Admin v2 catalogue (06/11/2026): products, photos, categories, descriptions. Same tokens as admin.css;
   nothing under 13px, every control at least 44px tall. */
:root{--cv-red:#df162a;--cv-ink:#142748;--cv-muted:#56627a;--cv-ground:#f4f6fa;--cv-line:#e7ecf5;--cv-ok:#287246;--cv-ok-bg:#eaf6ee;--cv-wait:#946414;--cv-wait-bg:#fff6e6;--cv-bad:#b04036;--cv-bad-bg:#fff0ef}
button.link{background:none;color:var(--navy);text-decoration:underline;padding:0 4px;min-height:0;font-weight:650}
code{background:var(--cv-ground);border-radius:6px;padding:1px 6px;font-size:13px}
.cv-products .table-wrap{margin-top:4px}
.cv-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:14px}
.cv-toolbar .search{flex:1 1 260px;max-width:none}
.cv-toolbar select{flex:0 1 240px}
.cv-actions{display:flex;flex-wrap:wrap;gap:10px;margin-left:auto}
.cv-tabs{display:flex;gap:6px;overflow-x:auto;border-bottom:1px solid var(--line);margin:0 0 14px;padding-bottom:8px}
.cv-tabs button{background:none;color:#627086;white-space:nowrap;padding:10px 14px;font-size:14px}
.cv-tabs button span{display:inline-block;min-width:24px;margin-left:4px;padding:1px 7px;border-radius:99px;background:#eef1f6;font-size:13px}
.cv-tabs button[aria-selected="true"]{background:#edf2fc;color:var(--navy)}
.cv-tabs button[aria-selected="true"] span{background:var(--navy);color:#fff}
.cv-bulkbar{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;padding:12px 14px;margin-bottom:12px;border-radius:12px;background:#152b50;color:#fff}
.cv-bulkbar>div{display:flex;flex-wrap:wrap;gap:8px}
.cv-bulkbar .secondary{background:#ffffff1f;color:#fff}.cv-bulkbar .danger{background:#ffe3e5;color:#a20f1d}.cv-bulkbar .primary{background:#fff;color:var(--navy)}
.cv-table td{vertical-align:top}
.cv-table tr.cv-selected td{background:#f3f7ff}
.cv-table tr.cv-warn td{background:#fffaf0}
.cv-table tr.cv-muted td{color:var(--muted)}
.cv-table input:not([type=checkbox]){min-width:120px}
.cv-table input.cv-short{min-width:90px;max-width:150px}
.cv-check{width:44px}.cv-check input{width:20px;height:20px;min-height:0;margin:12px 0}
.cv-product{display:flex;gap:12px;align-items:flex-start;min-width:240px}
.cv-product strong{display:block;line-height:1.4}
.cv-product .status{margin-top:6px}
.cv-thumb{position:relative;flex:none;display:grid;place-items:center;width:64px;height:64px;padding:0;min-height:0;border-radius:12px;background:#f4f6fa;border:1px solid var(--line);overflow:hidden}
.cv-thumb img{width:100%;height:100%;object-fit:contain;border-radius:0;background:transparent}
.cv-thumb>span:not(.cv-noimg){position:absolute;inset:auto 0 0;padding:3px 0;background:#0b2346cc;color:#fff;font-size:13px;font-weight:650;opacity:0;transition:opacity .15s}
button.cv-thumb:not([disabled]):hover>span,button.cv-thumb:focus-visible>span,.cv-thumb.cv-over>span{opacity:1}
.cv-thumb.cv-over{outline:3px solid #4267ac;outline-offset:2px}
.cv-thumb.cv-busy{opacity:.45;pointer-events:none}
.cv-thumb.cv-busy::after{content:"Đang tải…";position:absolute;inset:0;display:grid;place-items:center;font-size:13px;color:var(--navy);font-weight:700}
.cv-noimg{display:grid;place-items:center;width:100%;height:100%;color:var(--muted);font-size:13px;text-align:center;line-height:1.2}
.cv-catlist{max-width:220px}
.cv-row-actions{white-space:nowrap}.cv-row-actions button+button{margin-left:6px}
/* Sheet: large dialog for add/edit/bulk tools */
dialog.cv-sheet{width:min(780px,calc(100% - 24px));max-height:94dvh}
dialog.cv-sheet.cv-wide{width:min(1180px,calc(100% - 24px))}
dialog.cv-sheet .dialog-body{max-height:calc(94dvh - 76px)}
dialog.cv-sheet fieldset{border:0;margin:0;padding:0;min-width:0}
dialog.cv-sheet fieldset[disabled]{opacity:.55}
dialog.cv-sheet label small{font-weight:500}
.cv-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.cv-inline{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.cv-inline input{flex:1 1 200px}
.cv-found{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:16px 0 4px;padding:12px 14px;border-radius:12px;background:var(--cv-ground);font-size:14px;line-height:1.5}
.cv-found strong{flex-basis:100%}
.cv-found.ok{background:var(--cv-ok-bg);color:#1f5734}.cv-found.wait{background:var(--cv-wait-bg);color:#734c0c}.cv-found.bad{background:var(--cv-bad-bg);color:#8c2b23}
.cv-found span:has(button){margin-left:auto}
.cv-cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-top:8px}
.cv-cat-group{border:1px solid var(--line);border-radius:12px;padding:6px 10px}
.cv-cats label,.cv-branches label,.cv-segment label{display:flex;align-items:center;gap:8px;margin:0;font-weight:500;font-size:14px;min-height:40px}
.cv-cats input,.cv-branches input,.cv-segment input,.cv-tiha-list input{width:18px;height:18px;min-height:0;flex:none}
.cv-cat-root{font-weight:700!important}
.cv-cat-children{padding-left:22px;border-top:1px dashed var(--line)}
.cv-branches{display:flex;flex-wrap:wrap;gap:4px 22px;margin-top:6px}
.cv-segment{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.cv-segment label{border:1px solid var(--line);border-radius:12px;padding:6px 12px;flex-wrap:wrap}
.cv-segment label small{flex-basis:100%;padding-left:26px;color:var(--muted);margin-top:-6px}
.cv-segment label:has(input:checked){border-color:var(--navy);background:#edf2fc}
.cv-split{flex-wrap:wrap}.cv-split>span{flex:1}
.cv-hint{font-size:13px;margin:8px 0 0}
.cv-gallery{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}
.cv-gallery figure{margin:0;width:150px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.cv-gallery figure.main{border-color:var(--navy);box-shadow:0 0 0 2px #092e7c22}
.cv-gallery figure img,.cv-gallery figure .cv-noimg{display:block;width:150px;height:150px;object-fit:contain;background:#f4f6fa}
.cv-gallery figcaption{display:grid;gap:4px;padding:6px;font-size:13px}
.cv-gallery figcaption b{color:var(--navy);padding:6px 4px}
.cv-gallery figcaption button{padding:6px 8px;min-height:36px;font-size:13px;background:#eef2f8;color:var(--navy)}
.cv-gallery figcaption span{display:flex;gap:4px}.cv-gallery figcaption span button{flex:1}
.cv-gallery figcaption .danger{background:#fff0f1;color:#bc1223}
.cv-gallery .cv-uploading{display:grid;place-items:center;height:150px;color:var(--navy);font-weight:650;font-size:13px}
.cv-drop{display:grid;gap:4px;place-content:center;text-align:center;width:150px;min-height:150px;border:2px dashed #b9c4d8;border-radius:12px;background:#fafbfe;color:var(--navy);font-weight:500;font-size:13px}
.cv-drop strong{font-size:14px}
.cv-drop-big{width:100%;min-height:120px;margin:14px 0 4px}
.cv-over .cv-drop,.cv-drop.cv-over,[data-gallery].cv-over .cv-drop{border-color:var(--navy);background:#edf2fc}
.cv-steps{padding:12px 14px;border-radius:12px;background:var(--cv-ground);font-size:14px;line-height:1.9}
.cv-steps .cv-n{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:50%;background:var(--navy);color:#fff;font-size:13px;font-weight:700;margin:0 4px 0 8px}
.cv-steps .cv-n:first-child{margin-left:0}
.cv-summary{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0 10px}
.cv-progress{position:relative;height:30px;margin:12px 0 0;border-radius:99px;background:#eef1f6;overflow:hidden}
.cv-progress i{position:absolute;inset:0 auto 0 0;width:0;background:#4267ac;transition:width .2s}
.cv-progress span{position:relative;z-index:1;display:block;text-align:center;line-height:30px;font-size:13px;font-weight:700;color:#0b2346}
.cv-apply{margin-top:6px}.cv-apply-row{align-items:flex-end;gap:8px 32px}
.cv-tiha-list{max-height:46dvh;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:6px 12px;margin-top:10px}
.cv-tiha-list label{display:flex;gap:8px;align-items:center;margin:0;padding:8px 0;border-bottom:1px solid #f0f2f6;font-weight:500;font-size:14px}
.cv-tiha-list label small{color:var(--muted);margin-left:auto;white-space:nowrap}
.cv-tiha-list .cv-disabled{opacity:.5}
/* Toast with an action (Hoàn tác) */
.cv-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:40;display:flex;align-items:center;gap:12px;max-width:min(560px,calc(100% - 32px));padding:10px 10px 10px 18px;border-radius:14px;background:#152b50;color:#fff;font-size:14px;box-shadow:0 14px 40px #0b234340}
.cv-toast button{background:#fff;color:var(--navy);padding:8px 14px}
.cv-toast .cv-toast-x{background:none;color:#fff;font-size:20px;padding:4px 10px}
/* Categories */
.cv-cat-tree,.cv-cat-tree ul,.cv-order{list-style:none;margin:0;padding:0}
.cv-cat-sub>ul{margin-left:40px;border-left:2px solid var(--line)}
.cv-cat-row,.cv-order li{display:flex;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid #eef0f5;background:#fff}
.cv-cat-row>div,.cv-po-name{flex:1;min-width:0}
.cv-cat-row strong,.cv-po-name strong{display:block}
.cv-cat-row small,.cv-po-name small{display:block;color:var(--muted);font-size:13px;margin-top:3px}
.cv-cat-row .cv-thumb,.cv-order .cv-thumb{width:52px;height:52px}
.cv-grip{cursor:grab;color:#9aa6ba;font-size:18px;letter-spacing:-3px;padding:0 4px;user-select:none}
.cv-cat-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.cv-cat-actions button{padding:8px 12px}
.cv-order{counter-reset:po;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cv-order li::before{counter-increment:po;content:counter(po);min-width:26px;text-align:right;color:var(--muted);font-weight:700}
/* Description editor and phone preview */
.cv-desc{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:20px;align-items:start}
.cv-desc-tools{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.cv-desc-tools button{background:#eef2f8;color:var(--navy);padding:8px 12px;font-size:14px}
.cv-desc-tools .danger{background:#fff0f1;color:#bc1223}
.cv-desc-paste{font-size:13px;line-height:1.6;color:#5c4a1c;background:#fff9ed;border-left:3px solid #d7a443;border-radius:8px;padding:10px 14px;margin-bottom:10px}
.cv-editor{min-height:420px;max-height:62dvh;overflow:auto;border:1px solid #d9dfeb;border-radius:12px;padding:16px;background:#fff;outline:none}
.cv-editor:focus{border-color:#4267ac;box-shadow:0 0 0 3px #4267ac14}
.cv-editor:empty::before{content:attr(data-placeholder);color:#9aa6ba}
.cv-editor img{max-width:100%;height:auto;display:block;margin:12px auto;border-radius:10px}
.cv-editor img.dz-pending{opacity:.45;outline:3px dashed #d7a443}
.cv-editor img.dz-failed{opacity:.55;outline:3px solid var(--cv-red);cursor:pointer}
.cv-editor table{border-collapse:collapse;width:100%}.cv-editor td,.cv-editor th{border:1px solid var(--cv-line);padding:6px 8px}
.cv-phone{position:sticky;top:0;border:10px solid #172440;border-radius:34px;background:#fff;overflow:hidden;box-shadow:0 20px 60px #0b234326}
.cv-phone-head{padding:10px;text-align:center;font-size:13px;font-weight:700;color:#fff;background:#172440}
.cv-phone-screen{height:62dvh;overflow:auto;padding:16px;background:#fff}
.cv-phone-screen>h3{margin:0 0 12px;font-size:16px;color:var(--cv-ink)}
#d-history table{min-width:0}
/* Mini App description styles (src/product-description.css), so the preview matches the phone. */
.cv-phone .sg-rich,.cv-editor.sg-rich{font-size:15px;line-height:1.65;color:#34405a;text-align:left}
.sg-rich>:first-child{margin-top:0}.sg-rich>:last-child{margin-bottom:0}
.sg-rich p{margin:0 0 12px;overflow-wrap:break-word}
.sg-rich h2{margin:24px 0 10px;padding-left:10px;border-left:3px solid var(--cv-red);font-size:18px;line-height:1.4;font-weight:700;color:var(--cv-ink)}
.sg-rich h3{margin:20px 0 8px;font-size:16px;line-height:1.45;font-weight:700;color:var(--navy)}
.sg-rich h4{margin:16px 0 6px;font-size:15px;line-height:1.5;font-weight:700;color:var(--cv-ink)}
.sg-rich strong{font-weight:700;color:var(--cv-ink)}.sg-rich h2 strong,.sg-rich h3 strong{color:inherit}
.sg-rich ul,.sg-rich ol{margin:0 0 12px;padding-left:22px}.sg-rich li{margin:0 0 6px}.sg-rich li::marker{color:var(--cv-red)}
.sg-rich blockquote{margin:0 0 12px;padding:10px 14px;border-left:3px solid var(--navy);border-radius:0 10px 10px 0;background:var(--cv-ground)}
.sg-rich hr{height:0;margin:20px 0;border:0;border-top:1px solid var(--cv-line)}
.sg-rich figure{margin:16px 0}.sg-rich figcaption{margin:8px auto 0;max-width:300px;font-size:13px;color:var(--cv-muted);text-align:center}
.sg-rich .sg-rich-photo{display:block;width:100%;max-width:300px;aspect-ratio:1;margin:16px auto;overflow:hidden;border:1px solid var(--cv-line);border-radius:12px;background:#fff}
.sg-rich .sg-rich-photo img{width:100%;height:100%;object-fit:contain;display:block}
.sg-rich .sg-rich-media{display:block;margin:16px 0;overflow:hidden;border-radius:10px;background:#fff}
.sg-rich .sg-rich-media img{display:block;width:100%;height:auto;max-height:520px;object-fit:contain}
.sg-rich figure>.sg-rich-media{margin:0}
.sg-rich h2[style*="center"],.sg-rich h3[style*="center"],.sg-rich h4[style*="center"]{border-left:0;padding-left:0}
.sg-rich-table{max-width:100%;margin:0 0 14px;overflow-x:auto;border:1px solid var(--cv-line);border-radius:10px}
.cv-phone .sg-rich table{width:100%;min-width:280px;border-collapse:collapse;font-size:14px;line-height:1.5}
.cv-phone .sg-rich th,.cv-phone .sg-rich td{padding:9px 12px;border-top:1px solid var(--cv-line);vertical-align:top;text-align:left}
.cv-phone .sg-rich td:first-child{width:42%;color:var(--cv-muted)}.cv-phone .sg-rich th{background:var(--cv-ground)}
.cv-phone .sg-rich tbody>tr:nth-child(even){background:#f8fafd}
.sg-rich-summary{margin:0 0 18px;padding:12px 14px;border-radius:12px;background:var(--cv-ground)}
.sg-rich-summary>h4{margin:0 0 6px;font-size:13px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--cv-red)}
@media(max-width:980px){.cv-desc{grid-template-columns:1fr}.cv-phone{position:static}.cv-phone-screen{height:auto;max-height:70dvh}}
@media(max-width:720px){
  .cv-grid{grid-template-columns:1fr}
  .cv-actions{margin-left:0;width:100%}.cv-actions button{flex:1 1 auto}
  .cv-toolbar select{flex:1 1 100%}
  .cv-table td.cv-row-actions{display:flex;gap:8px;white-space:normal}
  .cv-table td.cv-row-actions button{flex:1;width:auto!important;margin:0!important}
  .cv-bulkbar>div button{flex:1 1 auto}
  .cv-table tbody tr{grid-template-columns:44px 1fr}
  .cv-table tbody td.cv-check{grid-row:span 6}
  .cv-cat-row{flex-wrap:wrap}.cv-cat-actions{width:100%;justify-content:flex-start}
  .cv-cat-sub>ul{margin-left:16px}
  dialog.cv-sheet,dialog.cv-sheet.cv-wide{width:100%;max-height:100dvh;border-radius:0}
}
/* Flyers */
.cv-flyers{display:grid;gap:12px}
.cv-flyer{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff}
.cv-flyer.is-shown{border-color:#2f8a52;box-shadow:0 0 0 2px #2f8a5222}
.cv-flyer-strip{display:flex;gap:6px}.cv-flyer-strip .cv-thumb{width:56px;height:72px}
.cv-flyer-body{display:grid;gap:4px}.cv-flyer-body small{color:var(--muted);font-size:13px}
.cv-flyer-actions{display:flex;gap:8px;flex-wrap:wrap}
.cv-flyer-edit select{min-height:36px;padding:6px 8px;font-size:13px}
.cv-flyer-preview{background:#0b1730b3!important;display:grid;place-items:center}
.cv-flyer-pop{position:relative;width:86%;border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 20px 50px #0008}
.cv-flyer-pop img{display:block;width:100%;height:auto}
.cv-flyer-x{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:50%;background:#fffffff0;display:grid;place-items:center;font-size:20px;color:#152b50}
.cv-flyer-dots{position:absolute;left:0;right:0;bottom:8px;display:flex;justify-content:center;gap:6px}.cv-flyer-dots i{width:8px;height:8px;border-radius:50%;background:#fff8}.cv-flyer-dots i.on{background:#fff}
@media(max-width:720px){.cv-flyer{grid-template-columns:1fr}}
/* Promotions */
.cv-promo{grid-template-columns:110px 1fr auto}
.cv-promo-kind{display:grid;place-items:center;min-height:64px;border-radius:12px;background:#fff1f2;color:#b3121f;font-weight:700;font-size:14px;text-align:center;padding:6px}
.cv-found s{color:var(--muted)}
@media(max-width:720px){.cv-promo{grid-template-columns:1fr}}
/* Orders page, change log, overview today (reports.js) */
.or-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}
.or-filters input[type="search"]{flex:1 1 280px;min-height:44px}
.or-filters select,.or-filters input[type="date"]{min-height:44px;width:auto;flex:0 1 auto}
.or-filters select{min-width:180px}
.or-custom{display:inline-flex;gap:6px;align-items:center}
.or-custom[hidden]{display:none}
.or-export{margin-left:auto}
.or-stats{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0 0 10px;color:var(--muted);font-size:14px}
.or-stats b{color:#182337}
.cv-tabs button.or-alert span{background:#fbe3e1;color:#a2342b}
.or-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:12px}
.or-table td:last-child button{white-space:nowrap}
@media (min-width:761px){.or-tabs{flex-wrap:wrap;overflow:visible}}
.or-promo{display:block;color:#b8322a;font-weight:600}
#or-table.is-loading,#au-table.is-loading{opacity:.55;transition:opacity .15s}
.or-today{margin-bottom:16px}
.or-todo{display:flex;flex-wrap:wrap;gap:10px}
.or-todo button{display:flex;align-items:center;gap:10px;min-height:48px;padding:10px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;color:#182337;font-weight:600}
.or-todo button b{font-size:20px;color:var(--navy)}
.or-todo button.or-alert{border-color:#f2c4bf;background:#fff6f5}
.or-todo button.or-alert b{color:#b8322a}
.or-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}
.or-split h3{margin-top:0}
.or-mini{width:100%;min-width:0;border-collapse:collapse;font-size:14px}
.or-mini td{padding:8px 4px;border-bottom:1px solid var(--line)}
.or-mini td:nth-child(n+2){text-align:right;white-space:nowrap;width:1%}
.au-table pre{max-width:520px;max-height:280px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:12px;background:#f6f8fb;padding:8px;border-radius:8px}
.au-table details summary{cursor:pointer;color:var(--navy);font-size:13px;white-space:nowrap}
.au-table tr.au-warn td{background:#fff6f5}
.od-items{width:100%;min-width:0;border-collapse:collapse;margin:12px 0;font-size:14px}
.od-items td{padding:8px 0;border-bottom:1px solid var(--line);vertical-align:top}
.od-items td small{display:block;color:var(--muted)}
.od-items td:last-child{text-align:right;white-space:nowrap}
.od-promo{margin:6px 0 12px;padding:8px 12px;border-radius:10px;background:#fff6f5;color:#8c2a22;font-size:14px}
@media (max-width:760px){.or-split{grid-template-columns:1fr}.or-filters select{flex:1 1 calc(50% - 4px);min-width:0}.or-export{margin-left:0;flex:1 1 100%}.or-custom{flex:1 1 100%}.or-custom input{flex:1;min-width:0}}
/* Banner trang chủ (banners.js) */
.cv-banner-group .toolbar{align-items:flex-start}
.cv-banner-group h3 small{font-weight:500;margin-left:6px}
.cv-banner-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cv-banner-tools .check{margin:0 6px 0 0;font-size:14px}
.cv-banner-drop{margin:0 0 14px;padding:14px;border:2px dashed #c9d3e6;border-radius:12px;color:var(--muted);font-size:14px;text-align:center;background:#fafbfd}
.cv-banner-group.cv-over .cv-banner-drop,.cv-banner-drop.cv-over{border-color:var(--navy);background:#edf2fc;color:var(--navy)}
.cv-banners{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.cv-banner{position:relative;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;background:#fff;overflow:hidden}
.cv-banner.is-off,.cv-banner.is-ended,.cv-banner.is-archived{opacity:.62}
.cv-banner.cv-over{outline:3px solid var(--navy)}
.cv-banner[draggable="true"]{cursor:grab}
.cv-banner-check{position:absolute;top:8px;left:8px;z-index:2;display:grid;place-items:center;width:32px;height:32px;margin:0;border-radius:8px;background:#ffffffe6}
.cv-banner-check input{width:18px;height:18px;margin:0}
.cv-banner-photo{position:relative;display:block;width:100%;aspect-ratio:3/2;padding:0;min-height:0;border:0;border-radius:0;background:#eef1f6;overflow:hidden;cursor:pointer}
.cv-banner-photo img{width:100%;height:100%;object-fit:cover;display:block}
.cv-banner-photo span:last-child{position:absolute;right:8px;bottom:8px;padding:4px 10px;border-radius:99px;background:#092e7ccc;color:#fff;font-size:13px;font-weight:600;opacity:0;transition:opacity .15s}
.cv-banner-photo:hover span:last-child,.cv-banner-photo:focus-visible span:last-child,.cv-banner-photo.cv-over span:last-child{opacity:1}
.cv-banner-body{display:grid;gap:4px;padding:10px 12px}
.cv-banner-body strong{font-size:14px;line-height:1.35}
.cv-banner-body small{color:var(--muted);font-size:13px}
.cv-banner-actions{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 12px}
.cv-banner-actions button{min-height:36px;padding:6px 12px;font-size:13px}
.cv-banner-big{max-width:520px;border-radius:12px;margin-bottom:12px}
.cv-banner-big span:last-child{opacity:1}
.cv-banner-preview{margin:12px;aspect-ratio:3/2;border-radius:14px;overflow:hidden;background:#eef1f6}
.cv-banner-preview img{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:720px){.cv-banners{grid-template-columns:1fr 1fr}.cv-banner-actions button{flex:1 1 auto}}
@media(max-width:420px){.cv-banners{grid-template-columns:1fr}}
/* Tờ rơi: replace one image in place */
.cv-fl-photo{position:relative;display:block;width:100%;padding:0;min-height:0;border:0;background:none;cursor:pointer}
.cv-fl-photo img{display:block;width:100%}
.cv-fl-photo span{position:absolute;right:6px;bottom:6px;padding:3px 9px;border-radius:99px;background:#092e7ccc;color:#fff;font-size:12px;font-weight:600}
/* 10/11/2026 review pass. Owner rules: every control at least 44px, every text at least 13px, no sideways
   scrolling at 390px. Later rules win over the ones above; nothing of the layout is redesigned. */
/* -- 44px targets -- */
button.link{min-height:44px;display:inline-flex;align-items:center}
.cv-gallery figure{width:168px}
.cv-gallery figure img,.cv-gallery figure .cv-noimg{width:168px;height:168px}
.cv-gallery figcaption button{min-height:44px;min-width:44px}
.cv-drop{width:168px;min-height:168px}
.cv-drop.cv-drop-big{width:100%;min-height:120px}
.cv-banner-actions button{min-height:44px;min-width:44px;font-size:14px}
.cv-cat-actions button{min-height:44px;min-width:44px}
.cv-flyer-edit select{min-height:44px;padding:8px 10px;font-size:14px}
.cv-cats label,.cv-branches label,.cv-segment label{min-height:44px}
.cv-tiha-list label{min-height:44px}
.check{min-height:44px;margin:10px 0}
.cv-banner-tools .check{min-height:44px}
.cv-banner-check{width:44px;height:44px;top:4px;left:4px;cursor:pointer}
.cv-banner-check input{width:22px;height:22px;min-height:0}
/* Tick boxes in tables sit in a 44px label, so the whole square takes the click. */
.cv-check{width:52px}
.cv-hit{display:grid;place-items:center;width:44px;height:44px;margin:0;cursor:pointer}
.cv-hit input,.cv-check .cv-hit input{width:22px;height:22px;min-height:0;margin:0;cursor:pointer}
.au-table details summary,.au-detail summary{display:inline-flex;align-items:center;min-height:44px;padding:0 6px;font-size:14px;font-weight:650}
.cv-toast button{min-height:44px}
.cv-toast .cv-toast-x{min-width:44px}
/* -- 13px text -- */
.cv-fl-photo span{font-size:13px}
.au-table pre{font-size:13px}
/* -- money / percent fields: what the Admin understood -- */
.cv-understood{display:block;margin-top:2px;font-size:13px;font-weight:650;line-height:1.5;color:var(--cv-ok)}
.cv-understood.bad{color:var(--cv-bad)}
.cv-understood:empty{display:none}
/* -- links to something deleted -- */
.cv-gone{margin:0 0 8px;padding:10px 12px;border-radius:12px;background:var(--cv-bad-bg);color:#8c2b23}
.cv-gone p{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 6px;font-size:14px;line-height:1.5}
.cv-gone label{border-bottom-color:#f3d2ce}
select.cv-bad{border-color:var(--cv-bad);background:var(--cv-bad-bg)}
.cv-bad-text{color:var(--cv-bad)!important;font-weight:650}
/* -- change log "Chi tiết": label / value lines -- */
.au-detail dl{display:grid;gap:6px;max-width:560px;margin:4px 0 8px;font-size:14px;line-height:1.5}
.au-detail dl>div{display:grid;grid-template-columns:minmax(120px,36%) minmax(0,1fr);gap:10px}
.au-detail dt{color:var(--muted)}
.au-detail dd{margin:0;overflow-wrap:anywhere}
/* -- order dialog: cancel request, customer note -- */
.od-heading{margin:18px 0 8px;font-size:15px}
.od-note{margin:12px 0;padding:10px 12px;border-radius:10px;background:#f6f8fb;font-size:14px;line-height:1.5}
.od-note label{display:block;margin:0 0 4px;font-size:13px;font-weight:650;color:var(--muted)}
.od-note p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.od-cancel{margin:0 0 14px;padding:12px 14px;border-radius:12px;background:#f6f8fb;font-size:14px;line-height:1.5}
.od-cancel strong{display:block;margin-bottom:4px;font-size:15px}
.od-cancel p{margin:4px 0;overflow-wrap:anywhere}
.od-cancel.wait{background:var(--cv-wait-bg);color:#734c0c}
.od-cancel.bad{background:var(--cv-bad-bg);color:#8c2b23}
/* -- "N mới" beside Đơn hàng in the menu when orders arrived since the list was loaded -- */
#nav button[data-new]::after{content:attr(data-new) " mới";display:inline-block;margin-left:8px;padding:2px 8px;border-radius:99px;background:var(--cv-red);color:#fff;font-size:13px;font-weight:700;line-height:1.5}
/* -- phone width -- */
.metric strong{overflow-wrap:anywhere}
@media(max-width:720px){
  /* Only tables with a tick column use the narrow first column; the others (bulk photos, description history) stack. */
  .cv-table tbody tr{grid-template-columns:minmax(0,1fr)}
  .cv-table.cv-pick tbody tr{grid-template-columns:44px minmax(0,1fr)}
  .cv-table tbody td.cv-check{grid-row:span 6;width:44px}
  .cv-table tbody td{min-width:0}
  .cv-product{min-width:0}
  .cv-table select,.cv-table input:not([type=checkbox]){width:100%;min-width:0;max-width:none}
  .cv-gallery figure,.cv-drop{width:calc(50% - 6px)}
  .cv-gallery figure img,.cv-gallery figure .cv-noimg{width:100%;height:auto;aspect-ratio:1}
  .cv-drop.cv-drop-big{width:100%}
  .cv-flyer-strip{flex-wrap:wrap}
  .au-detail dl>div{grid-template-columns:minmax(0,1fr);gap:0}
  .metric strong{font-size:22px}
  .cv-toast{left:16px;right:16px;transform:none;max-width:none}
}
