/* TOP NUONG OEM R1 FOUNDATION - staff/admin only. QR customer style unchanged. */
:root { --topnuong-blue: #1262b4; --topnuong-blue-dark: #084b91; }
#login .login-wordmark, #login .login-wordmark .pos { color: var(--topnuong-blue) !important; }
#login .login-pill.on { border-color: var(--topnuong-blue) !important; }
#login .login-pills [data-pill="shop"] { display:none !important; }
/* Keep other POS layout and existing status colors untouched until regression-tested. */

/* TOPNUONG R5: Chỉ hiển thị lựa chọn nhà hàng, không hỗ trợ mô hình khác */
#login .login-pills button:not([data-pill="fnb"]) { display: none !important; }
#login .login-pills [data-pill="fnb"] { pointer-events: none; cursor: default; }

/* R9 - bảng bàn trơn, không đưa hình ảnh vào ô bàn */
#tableList .tcard .top-table-plain-face{display:none}
#tableList .tcard{background:#edf5ff;border-color:#b4d4f2;color:#153d69}
#tableList .tcard.empty{background:#f7fbff;border-color:#d8e6f4}
#tableList .tcard.busy{background:#c9e4ff;border-color:#78b5ec}
#tableList .tcard.prebill{background:#fff0c2;border-color:#dfb64e}
#tableList .tcard .qr-table-badge{background:#e84c22;color:white}


/* R10 OEM: xanh dương/trắng cho màn hình nhân viên và quản trị.
   Các trang khách QR có CSS riêng và KHÔNG tải tệp này. */
:root {
 --blue:#1262b4; --blue2:#084b91; --ink:#183653; --muted:#687f96;
 --bg:#f1f7ff; --card:#ffffff; --line:#c7dcf2;
 --kz-orange:#1262b4; --kz-gold:#2478ca; --kz-ink:#183653;
 --kz-muted:#687f96; --kz-bg:#f1f7ff; --kz-card:#fff; --kz-line:#c7dcf2;
}
body, body.kz-home {background:#f1f7ff;color:#183653}
#page-home {background:#f1f7ff}
#page-home .home-hero, #page-home .home-hero.hero {
 background:linear-gradient(120deg,#0b428c 0%,#1262b4 55%,#3a90db 100%) !important;
 color:#fff; border-bottom:0;
}
#page-home .home-hero::before {background:radial-gradient(ellipse at 87% 0%,rgba(255,255,255,.15),transparent 60%)}
#page-home .hero-waves {opacity:.15}
#page-home .hello,#page-home .hero-shop,#page-home .hero-shop-line {color:#fff;text-shadow:none}
#page-home .hero-shop-line.branch-switch {color:#fff !important;border-color:rgba(255,255,255,.7) !important}
#page-home .brand-mark {color:#09509c;background:#fff;box-shadow:0 4px 15px rgba(0,25,65,.15)}
#page-home .brand-mark .cart {display:none !important}
#page-home .brand-mark::before {content:'';display:block;width:30px;height:30px;background:url('/img/topnuong-logo.png') center/contain no-repeat}
#page-home .hero-logout {color:#0b559e;box-shadow:none}
#page-home .kpi {background:#fff;border:1px solid #d5e5f5 !important;box-shadow:0 2px 7px rgba(13,71,132,.08)}
#page-home .kpi-ico {background:#267cca;box-shadow:none}
#page-home .kpi b {color:#145da8}
#page-home .kpi small {color:#667e95}
#page-home .sheet-home,#page-home .metrics {color:#183653}
#page-home .date-row,#page-home .metrics b {color:#183653}
#page-home .mod {border-color:#c7dff5;background:#fff;color:#14518f;box-shadow:0 3px 10px rgba(15,78,140,.065)}
#page-home .mod .mod-lab {color:#164e87}
#page-home .mod:focus-visible {outline:3px solid #4e9ce1;outline-offset:2px}
#page-home .chip {color:#145da8;border:1px solid #9bc4e9;background:#fff}
.tabbar,body.wide .tabbar,body.phone .tabbar {background:#fff;border-color:#2f83cf !important;box-shadow:0 3px 10px rgba(20,89,156,.13)}
.tabbar button {color:#73859a}
.tabbar button.on:not(.plus),body.wide .tabbar button.on:not(.plus) {color:#115baa;background:#e8f3ff !important}
.tabbar button.on span {color:#115baa}
.tabbar .plus,body.phone .tabbar .plus {background:#1972c4 !important;box-shadow:0 3px 8px rgba(7,87,164,.22) !important}
.bar-blue {background:linear-gradient(90deg,#0a509e,#207ccc) !important;color:white !important}
.btn:not(.redbtn),.btn-mini,.btn-primary {accent-color:#1262b4}
input:focus-visible,select:focus-visible,button:focus-visible {outline-color:#1262b4}
#login .login-logo {width:76px;height:76px;margin:0 auto 4px;display:flex;align-items:center;justify-content:center}
#login .login-logo .topnuong-real-logo {width:74px;height:74px;object-fit:contain}
#login .login-wordmark {color:#1262b4 !important}
#tableList .tcard.busy {background:#cce5ff;border-color:#80b8eb}
#tableList .tcard.prebill {background:#fff1c7;border-color:#ddb54b}
@media (max-width:600px) {#page-home .brand-mark::before {width:23px;height:23px}#login .login-logo {height:65px}}
/* R11: mẫu khung bàn và bộ tăng/giảm số lượng */
.top-shape-pick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:7px}
.top-shape-opt{min-width:0;background:white;border:1px solid #cbd9eb;border-radius:10px;padding:9px 3px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;color:#174b80}
.top-shape-opt.on{border:2px solid #0967c4;background:#edf5ff}
.top-shape-opt small{font-size:11px;font-weight:600}
.top-shape-demo{position:relative;width:62px;height:40px;border:2px solid #287dc5;border-radius:8px;background:#dfedff;display:grid;place-items:center}
.top-shape-demo>span{font-size:9px}
.top-table-face{width:82%;height:58px;margin:8px auto 3px;border:2px solid currentColor;background:rgba(255,255,255,.30);border-radius:9px;display:grid;place-items:center;position:relative;color:#367cbe;box-sizing:border-box}
.top-table-inner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;line-height:1.1;text-align:center}
.top-table-inner b{font-size:12px}.top-table-inner small{font-size:10px}
.top-table-face:before,.top-table-face:after{content:"";position:absolute;width:55%;height:4px;border-radius:4px;background:currentColor;left:22.5%}
.top-table-face:before{top:-6px}.top-table-face:after{bottom:-6px}
.top-table-shape-round{border-radius:50%!important;width:62px!important;height:62px!important}
.top-table-shape-square{width:62px!important;height:62px!important;border-radius:8px!important}
.top-table-shape-oval{border-radius:50%!important}
.top-table-shape-double{outline:2px solid currentColor;outline-offset:3px}
.top-table-shape-sofa{border-radius:16px!important;border-top-width:7px!important}
.top-table-shape-long{width:95%!important;height:41px!important;border-radius:7px!important}
.top-table-shape-vip{border-style:double!important;border-width:5px!important;border-radius:13px!important}
.top-shape-demo.top-table-shape-round,.top-shape-demo.top-table-shape-square{width:40px!important;height:40px!important}
.top-shape-demo.top-table-shape-long{width:65px!important;height:29px!important}
.tcard.empty .top-table-face{color:#94a9bc}.tcard.busy .top-table-face{color:#146fc8}.tcard.prebill .top-table-face{color:#db9e22}
.top-menu-card{min-width:0;position:relative;display:flex;flex-direction:column}
.top-menu-card>.pcard{width:100%;flex:1;min-height:88px;padding-bottom:34px}
.top-menu-stepper{position:absolute;bottom:5px;left:5px;right:5px;display:flex;align-items:center;justify-content:center;gap:5px;z-index:2}
.top-menu-stepper button,.top-bill-stepper>button:first-child,.top-bill-stepper>button:last-child{width:29px;min-width:29px;height:28px;border:1px solid #8bbbe8;border-radius:7px;color:#075baa;background:#eaf4ff;font-size:18px;font-weight:800;cursor:pointer;padding:0}
.top-menu-stepper span{min-width:25px;text-align:center;font-weight:800;color:#124d82}
.top-bill-stepper{display:flex;align-items:center;gap:3px;min-width:0}
.top-bill-stepper>[data-qty]{min-width:38px;padding:3px}
@media(max-width:480px){.top-shape-pick{grid-template-columns:repeat(4,minmax(0,1fr))}.top-bill-stepper>button:first-child,.top-bill-stepper>button:last-child{width:24px;min-width:24px}}
/* Đồng bộ lưới phòng/bàn theo hình đối tác */
#tableList .table-grid{grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:10px}
#tableList .tcard{aspect-ratio:auto;min-height:150px;padding:12px 6px 10px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;border-color:#bdd2e5;background:#f8fbff;box-shadow:0 2px 0 #dae6f0}
#tableList .tcard .top-table-face{flex:0 0 auto}
#tableList .tcard .tmeta{position:static;background:none!important;color:#164a7c!important;padding:8px 2px 0;text-align:center;margin-top:auto}
#tableList .tcard .tname b,#tableList .tcard .tsub{color:#164a7c!important;text-shadow:none!important;font-size:12px}
#tableList .tcard .tstate{position:absolute;top:5px;left:5px;font-size:9px}
#tableList .tcard.busy{background:#e1f0ff;border-color:#5da1de}
#tableList .tcard.prebill{background:#fff2d2;border-color:#e7b33c}
@media(max-width:560px){#tableList .table-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* R13 QA: thanh ban hang theo bo cuc tham khao doi tac, GIU NGUYEN DOM/API nghiep vu */
body.wide.pos-dual #page-pos{background:#eef5fc!important;gap:8px!important}
body.wide.pos-dual #posShop:not(.hidden){flex:1 1 55%!important;min-width:0!important}
body.wide.pos-dual #posConfirm:not(.hidden){flex:0 0 41%!important;width:41%!important;max-width:41%!important;min-width:370px!important}
#page-pos .mo-card{background:#fff!important;border:1px solid #d4e4f3!important;border-radius:12px!important;box-shadow:0 2px 12px rgba(11,79,146,.055)!important}
#page-pos .mo-banner{background:#eef6ff!important;border:1px solid #d0e5f8!important;border-radius:9px!important;color:#124d89!important}
#page-pos .mo-banner b{color:#0b4e94!important;font-size:16px!important}
#page-pos .mo-top{padding:9px 12px!important;border-bottom:1px solid #e1edf8!important}
#page-pos .mo-search{margin:10px 12px!important}
#page-pos #posSearch{background:#fff!important;border:1px solid #bbd5eb!important;border-radius:22px!important;min-height:46px!important;padding-left:16px!important;font-size:14px!important}
#page-pos #posCatWrap{padding:4px 12px 12px!important}
#page-pos #posCats{display:flex!important;gap:8px!important;overflow-x:auto!important;flex-wrap:nowrap!important;padding-bottom:3px!important}
#page-pos #posCats button{flex-shrink:0!important;background:#fff!important;border:1px solid #b9d5ee!important;color:#12508c!important;border-radius:24px!important;text-transform:none!important;padding:8px 14px!important;font-weight:650!important}
#page-pos #posCats button.on{background:#1167c0!important;color:#fff!important;border-color:#1167c0!important}
body.wide.pos-dual #posItems.mo-grid,body.pos10.pos-dual #posItems.mo-grid,body.pos12.pos-dual #posItems.mo-grid,body.pos15.pos-dual #posItems.mo-grid,body.desk.pos-dual #posItems.mo-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;padding:8px 12px 16px!important;align-content:start!important}
#posItems .top-menu-card{border:1px solid #cfe0f0!important;background:#fff!important;border-radius:12px!important;overflow:hidden!important;min-height:106px!important;box-shadow:0 2px 5px rgba(13,81,144,.04)!important}
#posItems .top-menu-card>.pcard.sell{min-height:106px!important;max-height:none!important;height:auto!important;padding:12px 12px 44px!important;border:0!important;border-radius:0!important;background:#fff!important;color:#153b63!important;text-shadow:none!important;box-shadow:none!important;display:flex!important;justify-content:space-between!important;align-items:stretch!important;text-align:left!important}
#posItems .pcard.sell b{font-size:14px!important;line-height:1.4!important;font-weight:700!important;display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical!important;overflow:hidden!important}
#posItems .pcard.sell .price{font-size:14px!important;color:#0c60ad!important;font-weight:800!important;padding-top:7px!important}
#posItems .pcard.sell.has-bg .sell-bg{display:none!important}
#posItems .pcard.sell.has-bg:after{display:none!important}
#posItems .top-menu-stepper{border-top:1px solid #eef3f9!important;bottom:4px!important;justify-content:flex-end!important;right:9px!important;left:9px!important;gap:8px!important}
#posItems .top-menu-stepper button{height:32px!important;width:32px!important;border-radius:50%!important;background:#e6f2ff!important;border:1px solid #a8cee9!important;color:#0865b9!important}
#posItems .top-menu-stepper button:last-child{background:#116fc9!important;color:#fff!important;border-color:#116fc9!important}
#posItems .top-menu-stepper span{font-size:14px!important}
#posConfirm .bill-shell{border-radius:13px!important;background:#fff!important}
#posConfirm .bill-top{padding:10px 12px!important;border-bottom:1px solid #e4eff9!important}
#posConfirm .mo-kh #btnPickKh,#posConfirm .mo-kh #khQuick{border-color:#d0e0ef!important;border-radius:9px!important}
#posConfirm .mo-plus,#posConfirm .mo-add{background:#1274cf!important;color:#fff!important;border-radius:9px!important}
#posConfirm .bill-lines{padding:4px 12px!important}
#posConfirm .mo-line{border-bottom:1px solid #eaf0f6!important;padding:12px 3px!important}
#posConfirm .mo-line-top{gap:10px!important;font-size:14px!important;color:#153b63!important}
#posConfirm .mo-line-top .amt{color:#0a5fae!important;font-size:14px!important}
#posConfirm .mo-tools{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,.7fr) minmax(0,1.1fr)!important;gap:5px!important}
#posConfirm .mo-tools button{border:1px solid #d5e4f2!important;min-height:38px!important;border-radius:9px!important}
#posConfirm .top-bill-stepper button{background:#e7f3ff!important;border-color:#bdd9ef!important;color:#085aa5!important}
#posConfirm .bill-dock{background:#fff!important;border-top:1px solid #dce9f6!important;padding:10px 12px!important}
#posConfirm .mo-3 button{border-color:#d0e2f2!important;min-height:48px!important;border-radius:9px!important}
#posConfirm .mo-sum .tot b{color:#075db0!important}
#posConfirm .mo-btn{border-radius:9px!important;min-height:42px!important;height:auto!important;font-size:13px!important}
#posConfirm .mo-btn.prebill{background:#e8f3ff!important;color:#0b5faa!important;border:1px solid #1c75c5!important}
#posConfirm .mo-btn.pay{background:#0c6ac4!important;color:#fff!important}
#posConfirm .mo-btn.save{background:#2c88ca!important;color:#fff!important}
#posConfirm .mo-btn.kitchen{background:#e6f2ff!important;color:#0d579c!important;border:1px solid #b2d2ed!important}
#posConfirm .mo-btn.split{background:#eaf4fe!important;color:#135796!important;border:1px solid #c1d9ee!important}
#posConfirm .mo-btn.void{background:#fff1f0!important;color:#b33430!important;border:1px solid #e6b1ad!important}
@media(max-width:1050px){body.wide.pos-dual #posConfirm:not(.hidden){min-width:320px!important;flex-basis:42%!important;width:42%!important;max-width:42%!important}body.wide.pos-dual #posItems.mo-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:760px){body.pos-dual #posConfirm:not(.hidden){min-width:0!important;max-width:none!important;width:auto!important}#posItems.mo-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}


/* R14 OEM: nhận diện độc lập, không hiển thị hình quảng cáo đa ngành cũ */
#login .login-scene,body.login-wide #login .login-scene{
 background-color:#e9f3fd!important;
 background-image:radial-gradient(circle at 24% 26%,rgba(38,119,205,.15),transparent 33%),linear-gradient(120deg,#f4faff 0%,#dcecfb 55%,#b7d9f7 100%)!important;
 background-size:cover!important;
 background-position:center!important;
}
#login .login-scene::before{
 content:"";position:absolute;left:7%;top:13%;width:43%;height:65%;
 background:url('/img/topnuong-logo.png') center/contain no-repeat;
 filter:drop-shadow(0 15px 24px rgba(12,59,112,.15));opacity:.97;
}
#login .login-scene::after{background:none!important}
#login .login-pill[data-pill]:not([data-pill="fnb"]){display:none!important}
#login .login-pill[data-pill="fnb"]{border-color:#9dc9ee!important;color:#075b9f!important}
#login .login-hero-foot{color:#124e84!important}
/* Trang chủ và khu quản lý dùng xanh - trắng, không để viền/nút cam cũ */
#page-home{background:#f2f7ff!important}
#page-home .mod,#page-home .home-stats,#page-home .sheet-home{border-color:#bfd8ef!important}
#page-home .mod .mod-lab{color:#0d559b!important}
#page-tables{background:#f1f7ff!important}
#page-tables .bar-blue{border-bottom:0!important}
#page-tables .table-toolbar{background:#fff!important;border-bottom:1px solid #d1e3f5!important}
#page-tables .channel-row button,#page-tables .chips-wrap button{border-color:#b2d4f3!important;color:#17568f!important;background:#fff!important}
#page-tables .channel-row button.on,#page-tables .chips-wrap button.on{background:#1268bb!important;color:#fff!important;border-color:#1268bb!important}
#tableList .tcard .top-table-face{border-width:2px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.8)}
#tableList .tcard .tstate{border-radius:999px}
#tableList .tcard.busy{background:#d5eafe!important;border-color:#5d9ddc!important}
#tableList .tcard.prebill{background:#fff1ca!important;border-color:#e2b245!important}
/* Giao diện POS PC: bill dòng đơn giản, dễ nhìn; giữ handler JS hiện hữu */
body.wide.pos-dual #page-pos{background:#f0f6fd!important}
body.wide.pos-dual #posConfirm:not(.hidden){border-color:#c6def3!important}
#page-pos .mo-banner{background:#eaf4ff!important;border-color:#bcd8ef!important}
#posConfirm .mo-line-top b{font-size:14px!important;line-height:1.4!important}
#posConfirm .mo-line .top-bill-stepper button{border-radius:20px!important}
#posConfirm .bill-dock{box-shadow:0 -3px 14px rgba(16,76,135,.05)!important}
@media(max-width:800px){#login .login-scene::before{opacity:.15;width:65%;left:17%;top:4%;height:45%}}

/* R15 - Thay đổi cấu trúc POS: thanh tab, danh sách phòng bàn trong POS, hóa đơn cùng màn hình */
@media(min-width:900px){
 body.wide.pos-dual #page-pos{display:grid!important;grid-template-columns:minmax(0, 57fr) minmax(365px,43fr)!important;grid-template-rows:46px minmax(0,1fr)!important;gap:0!important;padding:6px!important;background:#edf4fc!important}
 body.wide.pos-dual #tnPosTabs{grid-column:1!important;grid-row:1!important}
 body.wide.pos-dual #posShop{grid-column:1!important;grid-row:2!important;width:100%!important;min-width:0!important;max-width:none!important;flex:unset!important}
 body.wide.pos-dual #tnPosTableBrowser{grid-column:1!important;grid-row:2!important;min-width:0!important;overflow:auto!important;background:white!important;border:1px solid #d6e5f6!important;border-radius:0 0 12px 12px!important}
 body.wide.pos-dual #posConfirm{grid-column:2!important;grid-row:1/span 2!important;width:100%!important;max-width:none!important;min-width:0!important;flex:unset!important;margin-left:6px!important}
 body.wide.pos-dual #posShop.tn-menu-hidden{display:none!important}
}
#tnPosTabs{display:flex;align-items:stretch;gap:4px;background:#0c58a7;border-radius:12px 12px 0 0;padding:4px 8px;color:white}
#tnPosTabs.hidden,#tnPosTableBrowser.hidden{display:none!important}
#tnPosTabs button{border:0;background:transparent;color:#deecff;font-weight:700;border-radius:9px 9px 0 0;padding:7px 20px;cursor:pointer}
#tnPosTabs button.tn-active{background:white;color:#075ba9}
.tn-pos-search-help{margin-left:auto;font-size:11px;align-self:center;opacity:.9}
.tn-area-filters,.tn-state-filters{display:flex;gap:7px;overflow:auto;white-space:nowrap;padding:12px 14px 4px}
.tn-area-filters button,.tn-state-filters button{padding:8px 12px;border:1px solid #c7d9ea;border-radius:20px;background:white;color:#134877;white-space:nowrap;cursor:pointer}
.tn-area-filters button.tn-active,.tn-state-filters button.tn-active{background:#0867bd;color:#fff;border-color:#0867bd}
.tn-table-cards{padding:14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));align-content:start;gap:10px}
.tn-table-card{border:1px solid #d1dfed;border-radius:11px;min-height:138px;padding:14px 9px;background:#f4f8fe;color:#143854;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer}
.tn-table-card.tn-new{background:#cce6ff;color:#084a86}.tn-table-card.tn-checked{background:#fff2cc;color:#855800}.tn-table-card.tn-selected{outline:3px solid #116ac4}
.tn-table-frame{position:relative;border:3px double currentColor;border-radius:13px;min-height:65px;width:100%;max-width:112px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:12px}
.tn-table-frame:before,.tn-table-frame:after{content:"";position:absolute;left:18%;right:18%;height:4px;background:currentColor;border-radius:2px}.tn-table-frame:before{top:-8px}.tn-table-frame:after{bottom:-8px}
.tn-table-price{font-weight:800}.tn-table-details{font-size:11px}.tn-table-card strong{font-size:13px}.tn-empty-message{grid-column:1/-1;color:#567}
@media(max-width:899px){#tnPosTabs{display:none!important}#tnPosTableBrowser{display:none!important}}

/* R15A — BƯỚC 1: Khắc phục vùng POS bị co ngang và điều khiển bill đè nhau.
   Chỉ tác động POS trên PC, không thay đổi nghiệp vụ và không ảnh hưởng QR khách. */
@media (min-width: 900px) {
  body.wide.pos-on #app {width:100%!important;max-width:none!important;min-width:0!important;display:flex!important;flex-direction:row!important}
  body.wide.pos-dual #app > #page-pos:not(.hidden) {
    flex:1 1 0%!important;width:0!important;min-width:0!important;max-width:none!important;
    box-sizing:border-box!important;overflow:hidden!important;
    grid-template-columns:minmax(0, 3fr) minmax(405px, 2fr)!important;
    grid-template-rows:46px minmax(0,1fr)!important;
    column-gap:8px!important;
  }
  body.wide.pos-dual #page-pos > #posShop:not(.hidden),
  body.wide.pos-dual #page-pos > #posConfirm:not(.hidden),
  body.wide.pos-dual #page-pos > #tnPosTableBrowser:not(.hidden) {
    min-width:0!important;max-width:none!important;width:100%!important;box-sizing:border-box!important;
    margin:0!important;flex:none!important;
  }
  body.wide.pos-dual #posConfirm .mo-tools {
    display:grid!important;
    grid-template-columns:minmax(96px,1.2fr) minmax(90px,1fr) minmax(65px,.75fr) minmax(95px,1.1fr)!important;
    gap:6px!important;
  }
  body.wide.pos-dual #posConfirm .mo-line,
  body.wide.pos-dual #posConfirm .mo-tools > *,
  body.wide.pos-dual #posConfirm .top-bill-stepper {min-width:0!important;box-sizing:border-box!important}
  body.wide.pos-dual #posConfirm .top-bill-stepper {display:flex!important;justify-content:flex-start!important;flex-wrap:nowrap!important;gap:4px!important}
  body.wide.pos-dual #posConfirm .top-bill-stepper button {flex:0 0 29px!important;width:29px!important;min-width:29px!important;padding:0!important}
  body.wide.pos-dual #posConfirm .top-bill-stepper [data-qty] {flex:1 1 auto!important;min-width:26px!important;max-width:52px!important}
  body.wide.pos-dual #posCats button {white-space:nowrap!important;line-height:1.2!important;min-height:34px!important}
}
@media (min-width:900px) and (max-width:1170px) {
  body.wide.pos-dual #app > #page-pos:not(.hidden) {grid-template-columns:minmax(0,1fr) minmax(395px, 0.95fr)!important}
  body.wide.pos-dual #posConfirm .mo-tools {grid-template-columns:minmax(85px,1.2fr) minmax(78px,1fr) minmax(55px,.7fr) minmax(86px,1.1fr)!important}
}

/* R15B: Menu chỉ chọn món, số lượng chỉ trên bill. Giữ handlers nghiệp vụ cũ. */
#posItems .top-menu-stepper{display:none!important}
body.pos-dual #posItems.mo-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
#posItems .top-menu-card{min-height:68px!important;height:auto!important;border:1px solid #dce7f3!important;border-radius:8px!important;box-shadow:none!important}
#posItems .top-menu-card>.pcard.sell{min-height:68px!important;padding:10px 14px!important;display:flex!important;flex-direction:column!important;justify-content:center!important;gap:7px!important;cursor:pointer!important}
#posItems .pcard.sell b{font-size:14px!important;-webkit-line-clamp:2!important}
#posItems .pcard.sell .price{padding:0!important;font-size:13px!important}
#posConfirm .mo-line{display:block!important;padding:11px 4px!important}
#posConfirm .mo-line-top{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;align-items:start!important;gap:14px!important;margin-bottom:7px!important}
#posConfirm .mo-line-top .tn-bill-name{font-size:14px!important;font-weight:650!important;min-width:0!important;overflow-wrap:anywhere!important}
#posConfirm .mo-line-top .amt{white-space:nowrap!important;font-weight:750!important}
#posConfirm .mo-tools{display:grid!important;grid-template-columns:minmax(108px,1.25fr) minmax(78px,.9fr) minmax(58px,.6fr) minmax(78px,.9fr)!important;gap:8px!important;align-items:center!important}
#posConfirm .top-bill-stepper{display:flex!important;align-items:center!important;gap:4px!important;min-width:0!important}
#posConfirm .top-bill-stepper button[data-bill-minus],#posConfirm .top-bill-stepper button[data-bill-plus]{flex:0 0 28px!important;min-width:28px!important;width:28px!important;height:30px!important;padding:0!important;border-radius:16px!important}
#posConfirm .top-bill-stepper button[data-qty]{min-width:30px!important;flex:1 1 auto!important;max-width:none!important;min-height:35px!important;border:0!important;background:transparent!important}
#posConfirm .mo-tools>button,#posConfirm .mo-tools>.mo-price-lock{min-width:0!important;overflow:hidden!important;box-sizing:border-box!important}
#posConfirm .mo-tools small{font-size:10px!important}
#posConfirm .mo-tools b{font-size:12px!important}
@media(min-width:900px) and (max-width:1160px){#posConfirm .mo-tools{grid-template-columns:minmax(105px,1.3fr) minmax(70px,.85fr)!important}#posConfirm .mo-tools>button,#posConfirm .mo-tools>.mo-price-lock{min-height:34px!important}}
@media(max-width:899px){#posConfirm .mo-tools{grid-template-columns:minmax(105px,1.3fr) minmax(75px,.9fr)!important}}

/* R15C — Danh mục không xuống hàng, phân biệt đơn chưa lưu */
#posCats{display:flex!important;flex-wrap:nowrap!important;overflow-x:auto!important;overflow-y:hidden!important;gap:7px!important;scrollbar-width:thin;min-width:0!important}
#posCats button{white-space:nowrap!important;flex:0 0 auto!important;min-width:max-content!important;line-height:1.2!important;padding:8px 13px!important}
.tn-table-card.tn-draft{background:#fff7e6!important;border-color:#f0b85e!important}
.tn-table-card.tn-draft .tn-table-frame{border-color:#d99529!important}
.tn-table-card.tn-draft .tn-table-details{color:#935a0a!important;font-weight:700!important}

/* R15D: Phòng bàn chiếm toàn bộ không gian; chọn bàn mới xem menu + bill.
   Không tác động các API, thanh toán, in, kho hoặc QR khách. */
@media (min-width:900px) {
 body.wide.pos-dual.tn-tables-only #app>#page-pos:not(.hidden){
  display:grid!important;grid-template-columns:minmax(0,1fr)!important;
  grid-template-rows:46px minmax(0,1fr)!important;width:0!important;
  flex:1 1 0%!important;column-gap:0!important;
 }
 body.wide.pos-dual.tn-tables-only #tnPosTabs{grid-column:1!important;grid-row:1!important}
 body.wide.pos-dual.tn-tables-only #tnPosTableBrowser:not(.hidden){
  display:block!important;grid-column:1!important;grid-row:2!important;
  width:100%!important;min-width:0!important;max-width:none!important;
  margin:0!important;overflow-y:auto!important;
 }
 body.wide.pos-dual.tn-tables-only #posShop,
 body.wide.pos-dual.tn-tables-only #posConfirm{display:none!important}
 body.wide.pos-dual #posConfirm.tn-bill-hidden{display:none!important}
 body.wide.pos-dual #page-tables.hidden,body.wide.pos-dual #page-pos.hidden{display:none!important}
 body.wide.pos-dual.tn-tables-only .tn-table-cards{
  grid-template-columns:repeat(auto-fill,minmax(145px,1fr))!important;
  gap:12px!important;align-content:start!important
 }
}
#tnPosTabs button{white-space:nowrap!important;flex-shrink:0!important}

/* R15E: Khôi phục đúng ảnh đối tác — trái Phòng bàn / Thực đơn, bill luôn ở phải.
   Gỡ hiệu lực quy tắc R15D ẩn bill; không chồng 3 cột. */
@media(min-width:900px){
 body.wide.pos-dual.tn-tables-only #app>#page-pos:not(.hidden),
 body.wide.pos-dual #app>#page-pos:not(.hidden){
   display:grid!important;grid-template-columns:minmax(0, 58%) minmax(390px,42%)!important;
   grid-template-rows:46px minmax(0,1fr)!important;gap:0!important;
   width:0!important;flex:1 1 0%!important;min-width:0!important;
 }
 body.wide.pos-dual #tnPosTabs{grid-column:1!important;grid-row:1!important;min-width:0!important}
 body.wide.pos-dual #tnPosTableBrowser:not(.hidden){grid-column:1!important;grid-row:2!important;display:block!important;min-width:0!important;width:100%!important;overflow:auto!important}
 body.wide.pos-dual #posShop:not(.hidden):not(.tn-menu-hidden){grid-column:1!important;grid-row:2!important;min-width:0!important;width:100%!important}
 body.wide.pos-dual #posConfirm:not(.hidden),
 body.wide.pos-dual.tn-tables-only #posConfirm:not(.hidden){display:block!important;grid-column:2!important;grid-row:1/span 2!important;min-width:0!important;width:calc(100% - 6px)!important;max-width:none!important;margin-left:6px!important}
 body.wide.pos-dual #posShop.tn-menu-hidden{display:none!important}
 body.wide.pos-dual #posConfirm.tn-bill-hidden{display:block!important}
 .tn-table-cards{grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:6px!important;padding:9px!important}
 .tn-table-card{min-height:126px!important;padding:12px 3px!important;gap:6px!important;border-radius:8px!important;background:#fff7e8}
 .tn-table-card.tn-new{background:#c8e5ff!important}
 .tn-table-card.tn-checked{background:#fff0c8!important}
 .tn-table-card.tn-draft{background:#ece0ff!important}
 .tn-table-frame{max-width:100px!important;min-height:58px!important}
}
@media(min-width:900px) and (max-width:1350px){.tn-table-cards{grid-template-columns:repeat(5,minmax(0,1fr))!important}}
@media(min-width:900px) and (max-width:1100px){.tn-table-cards{grid-template-columns:repeat(4,minmax(0,1fr))!important}}

/* R15F – tinh chỉnh bố cục PC, không thay đổi luồng bàn/bill. */
@media (min-width:900px){
 body.wide.pos-dual #app>#page-pos:not(.hidden){
  grid-template-columns:minmax(0,58%) minmax(390px,42%)!important;
  grid-template-rows:48px minmax(0,1fr)!important;gap:0!important;
  padding:8px!important;background:#f1f6fc!important;
 }
 body.wide.pos-dual #tnPosTabs{min-height:48px!important;height:48px!important;padding:5px 10px!important;box-sizing:border-box!important;border-radius:12px 12px 0 0!important}
 #tnPosTabs button{padding:7px 19px!important;font-size:14px!important;line-height:1.1!important;border-radius:8px 8px 0 0!important}
 #tnPosTabs .tn-pos-search-help{font-size:11px!important;max-width:44%!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
 body.wide.pos-dual #tnPosTableBrowser:not(.hidden){border:1px solid #dce7f4!important;border-top:0!important;border-radius:0 0 12px 12px!important;background:#fff!important;overflow-y:auto!important;min-height:0!important}
 .tn-area-filters{padding:12px 13px 6px!important;gap:7px!important}
 .tn-state-filters{padding:4px 13px 9px!important;gap:7px!important;border-bottom:1px solid #edf2f8!important}
 .tn-area-filters button,.tn-state-filters button{padding:7px 12px!important;font-size:12px!important;line-height:1.2!important;min-height:32px!important;border-radius:18px!important}
 .tn-table-cards{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:8px!important;padding:12px!important;align-content:start!important}
 .tn-table-card{min-height:132px!important;padding:12px 5px 9px!important;gap:8px!important;border:1px solid #d9e4f0!important;border-radius:10px!important;box-shadow:none!important;transition:background .12s,border-color .12s!important}
 .tn-table-card:hover{border-color:#237bd0!important;box-shadow:0 2px 8px rgba(22,96,169,.09)!important}
 .tn-table-card.tn-selected{outline:2px solid #126ac0!important;outline-offset:-2px!important}
 .tn-table-frame{width:90%!important;max-width:112px!important;min-height:58px!important;border-width:3px!important;box-sizing:border-box!important;padding:4px!important;line-height:1.22!important}
 .tn-table-card strong{font-size:13px!important;line-height:1.2!important;text-align:center!important}
 .tn-table-price{font-size:12px!important;overflow-wrap:anywhere!important;text-align:center!important}
 .tn-table-details{font-size:10px!important;text-align:center!important;line-height:1.25!important}
 body.wide.pos-dual #posConfirm:not(.hidden){height:100%!important;min-height:0!important;border:1px solid #dce7f4!important;border-radius:12px!important;box-sizing:border-box!important;overflow:hidden!important}
 #posConfirm .bill-shell{height:100%!important;min-height:0!important}
 #posConfirm .bill-top{padding:11px 12px!important}
 #posConfirm .bill-lines{min-height:0!important;overflow-y:auto!important}
 #posConfirm .bill-dock{padding:10px 12px 12px!important;border-top:1px solid #e2edf8!important;box-shadow:0 -2px 8px rgba(18,80,140,.035)!important}
 #posConfirm .mo-btn{min-height:43px!important;border-radius:8px!important}
}
@media(min-width:900px) and (max-width:1180px){.tn-table-cards{grid-template-columns:repeat(4,minmax(0,1fr))!important}}
@media(min-width:900px) and (max-width:1020px){.tn-table-cards{grid-template-columns:repeat(3,minmax(0,1fr))!important}}

/* R15G: restore area/table creation controls on the POS table tab. */
.tn-area-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding-right:13px;border-bottom:0}
.tn-area-toolbar .tn-area-filters{flex:1;min-width:0;overflow-x:auto;padding-right:0!important}
.tn-manage-actions{display:flex;flex-shrink:0;align-items:center;gap:6px}
.tn-manage-btn{border:1px solid #1672cc;background:#fff;color:#0758a7;border-radius:9px;padding:7px 10px;font-size:12px;font-weight:700;white-space:nowrap;cursor:pointer}
.tn-manage-btn:hover{background:#e8f3ff}
.tn-manage-btn.hidden{display:none!important}
@media(max-width:900px){.tn-area-toolbar{flex-wrap:wrap;padding:0 10px 5px}.tn-area-toolbar .tn-area-filters{width:100%;flex-basis:100%}.tn-manage-actions{margin-left:auto}}

/* R15H — Layout KZPOS, skin TOP NUONG. Restore compact F&B menu grid.
   Scoped to POS menu only; table browser and bill retain R15G behavior. */
body.pos-dual #posShop #posItems.mo-grid,
body.wide.pos-dual #posShop #posItems.mo-grid,
body.desk.pos-dual #posShop #posItems.mo-grid,
body.pos10.pos-dual #posShop #posItems.mo-grid,
body.pos12.pos-dual #posShop #posItems.mo-grid,
body.pos15.pos-dual #posShop #posItems.mo-grid {
  display:grid!important;
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
  gap:6px!important;
  padding:8px 10px 14px!important;
  align-content:start!important;
}
#posShop #posItems .top-menu-card {
  min-width:0!important;
  min-height:96px!important;
  height:96px!important;
  border:0!important;
  border-radius:0!important;
  overflow:visible!important;
  box-shadow:none!important;
  background:transparent!important;
}
#posShop #posItems .top-menu-card>.pcard.sell {
  box-sizing:border-box!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:space-between!important;
  align-items:stretch!important;
  width:100%!important;
  height:96px!important;
  min-height:96px!important;
  max-height:96px!important;
  padding:7px 6px!important;
  gap:2px!important;
  border:1px solid #c8ddec!important;
  border-radius:13px!important;
  background:#fff!important;
  color:#123e67!important;
  text-align:left!important;
  box-shadow:0 1px 3px rgba(15,75,135,.06)!important;
  cursor:pointer!important;
}
#posShop #posItems .pcard.sell b {
  font-size:12px!important;
  line-height:1.23!important;
  padding:0!important;
  overflow:hidden!important;
  display:-webkit-box!important;
  -webkit-line-clamp:3!important;
  -webkit-box-orient:vertical!important;
  overflow-wrap:anywhere!important;
}
#posShop #posItems .pcard.sell .price {
  margin-top:auto!important;
  padding:0!important;
  font-size:12px!important;
  line-height:1.2!important;
  font-weight:750!important;
  color:#0864ad!important;
}
#posShop #posItems .pcard.sell.picked {
  border-color:#0868c3!important;
  box-shadow:0 0 0 2px #75b5f0!important;
}
#posShop #posItems .top-menu-stepper{display:none!important}
#posShop #posCats{display:flex!important;flex-wrap:nowrap!important;overflow-x:auto!important;overflow-y:hidden!important;gap:6px!important;min-width:0!important;padding:3px 0 7px!important}
#posShop #posCats button{flex:0 0 auto!important;min-width:max-content!important;white-space:nowrap!important;line-height:1.25!important;padding:6px 11px!important;min-height:32px!important;border-radius:18px!important;font-size:12px!important}
@media(min-width:900px) and (max-width:1180px){
 body.pos-dual #posShop #posItems.mo-grid,body.wide.pos-dual #posShop #posItems.mo-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important}
}
@media(min-width:700px) and (max-width:899px){
 body.pos-dual #posShop #posItems.mo-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
}
@media(max-width:699px){
 body.pos-dual #posShop #posItems.mo-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}

/* R15I: Layout KZPOS / Skin TỐP NƯỚNG – giữ nguyên chuyển tab, sửa tỷ lệ PC.
   Override duy nhất ở cuối CSS, không đổi xử lý menu/bàn/hóa đơn. */
@media (min-width: 900px) {
  body.wide.pos-dual #app > #page-pos:not(.hidden),
  body.wide.pos-dual.tn-tables-only #app > #page-pos:not(.hidden) {
    grid-template-columns: minmax(0, 68fr) minmax(370px, 32fr) !important;
    column-gap: 6px !important;
  }
  body.wide.pos-dual #posConfirm:not(.hidden),
  body.wide.pos-dual.tn-tables-only #posConfirm:not(.hidden) {
    width:100% !important; margin-left:0 !important;
    min-width:0 !important; box-sizing:border-box !important;
  }
  body.wide.pos-dual #posConfirm .bill-top {padding:9px 10px !important;}
  body.wide.pos-dual #posConfirm .bill-dock {padding:8px 10px 10px !important;}
  body.wide.pos-dual #posConfirm .mo-line {padding:8px 2px !important;}
  body.wide.pos-dual #posConfirm .mo-tools {
    grid-template-columns:minmax(100px,1.15fr) minmax(68px,.75fr) minmax(48px,.55fr) minmax(66px,.8fr) !important;
    gap:4px !important;
  }
  body.wide.pos-dual #posConfirm .top-bill-stepper {gap:2px !important;}
  body.wide.pos-dual #posConfirm .top-bill-stepper button[data-bill-minus],
  body.wide.pos-dual #posConfirm .top-bill-stepper button[data-bill-plus] {
    width:25px !important;min-width:25px !important;flex:0 0 25px !important;
  }
  body.wide.pos-dual #posConfirm .mo-btn {min-height:39px !important;}
}
@media (min-width:900px) and (max-width:1199px) {
  body.wide.pos-dual #app > #page-pos:not(.hidden),
  body.wide.pos-dual.tn-tables-only #app > #page-pos:not(.hidden) {
    grid-template-columns:minmax(0,1fr) minmax(365px, .48fr) !important;
  }
  body.wide.pos-dual #posConfirm .mo-tools {
    grid-template-columns:minmax(96px,1fr) minmax(70px,.75fr) !important;
  }
}


/* R15L: đưa ô tìm kiếm lên cùng hàng với banner bàn, kéo cụm nhóm món lên trên,
   và hiển thị 8 ô nhóm/hàng để tránh che hoặc mờ chữ. */
@media (min-width: 900px) {
  body.wide.pos-dual #posShop > .mo-card {
    display: grid !important;
    grid-template-columns: minmax(250px, 300px) minmax(0, 1fr) !important;
    grid-template-areas:
      "head search"
      "cats cats"
      "items items" !important;
    column-gap: 10px !important;
    row-gap: 8px !important;
    align-items: start !important;
    padding: 10px 12px 12px !important;
  }
  body.wide.pos-dual #posShop .mo-top {
    grid-area: head !important;
    margin: 0 !important;
    padding: 0 !important;
    border-bottom: 0 !important;
    min-width: 0 !important;
  }
  body.wide.pos-dual #posShop .mo-top .back {
    flex: 0 0 28px !important;
    width: 28px !important;
    min-width: 28px !important;
    height: 44px !important;
    align-self: stretch !important;
  }
  body.wide.pos-dual #posShop .mo-banner {
    min-width: 0 !important;
    padding: 10px 12px !important;
  }
  body.wide.pos-dual #posShop .mo-go {
    display: none !important;
  }
  body.wide.pos-dual #posShop .mo-search {
    grid-area: search !important;
    margin: 0 !important;
    min-width: 0 !important;
    align-self: stretch !important;
  }
  body.wide.pos-dual #posShop .mo-search input {
    height: 44px !important;
    min-width: 0 !important;
  }
  body.wide.pos-dual #posShop .scan-btn {
    flex: 0 0 44px !important;
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    margin-left: 2px !important;
  }
  body.wide.pos-dual #posShop #posCatWrap {
    grid-area: cats !important;
    margin: 0 !important;
    min-width: 0 !important;
  }
  body.wide.pos-dual #posShop #posCats {
    display: grid !important;
    grid-template-columns: repeat(8, minmax(0, 1fr)) !important;
    gap: 8px !important;
    overflow: visible !important;
    padding: 0 !important;
  }
  body.wide.pos-dual #posShop #posCats button {
    min-width: 0 !important;
    width: 100% !important;
    min-height: 44px !important;
    height: auto !important;
    padding: 6px 8px !important;
    white-space: normal !important;
    line-height: 1.15 !important;
    text-align: center !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    word-break: break-word !important;
    overflow-wrap: anywhere !important;
    border-radius: 16px !important;
    font-size: 11px !important;
  }
  body.wide.pos-dual #posShop #posItems.mo-grid {
    grid-area: items !important;
    padding: 4px 0 10px !important;
  }
}
@media (min-width: 900px) and (max-width: 1180px) {
  body.wide.pos-dual #posShop #posCats button {
    font-size: 10.5px !important;
    padding: 6px 6px !important;
  }
}

/* R15N: chỉ bổ sung cảnh báo tồn kho, không thay đổi POS. */
.tn-stock-filter{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 10px 4px}
.tn-stock-filter button{background:#fff;color:#0b5fa9;border:1px solid #8bb7df;padding:8px 12px;border-radius:9px;font-weight:700;cursor:pointer}
.tn-stock-filter button.on{background:#0b68bc;color:white}
.tn-stock-filter small{color:#61738a}
.tn-stock-low{background:#fff2dc!important}
.tn-stock-low strong{color:#b45309}

/* R15V: tab lọc tồn dương/âm dùng chung hai loại kho */
.tn-stock-filter button[id="tnStockPositive"]{border-color:#67aa83;color:#18723a}
.tn-stock-filter button[id="tnStockNegative"]{border-color:#dc9595;color:#a52727}
.tn-stock-filter button[id="tnStockPositive"].on{background:#217f4c;color:white}
.tn-stock-filter button[id="tnStockNegative"].on{background:#c03535;color:white}

/* R15W: tra cuu ton kho - bang gia von bao mat theo quyen */
.tn-stock-search {display:flex;align-items:center;gap:5px;min-width:210px;flex:1 1 220px;max-width:390px;border:1px solid #9ab7d1;background:#fff;border-radius:8px;padding:4px 10px;color:#0b5fa9}
.tn-stock-search input{min-width:0;width:100%;border:0;background:transparent;outline:0;padding:5px;font:inherit;color:#153e68}
.tn-stock-search:focus-within{border-color:#0b68bc;box-shadow:0 0 0 2px #c8e3fa}
.tn-stock-table-wrap{width:100%;overflow-x:auto;padding-bottom:6px}
.tn-stock-book-table{min-width:720px}
.tn-stock-book-table td.tn-stock-money{white-space:nowrap;font-variant-numeric:tabular-nums;color:#0a5d9b}
.tn-stock-book-table th:nth-child(4),.tn-stock-book-table td:nth-child(4){width:auto}
.tn-stock-book-table[data-type="nvl"] tr[data-nl]{cursor:pointer}
