body.spviet-retail-pos-fullscreen-page .spviet-header,body.spviet-retail-pos-fullscreen-page .spviet-site-header,body.spviet-retail-pos-fullscreen-page .spviet-mobile-footer-nav,body.spviet-retail-pos-fullscreen-page .spviet-footer,body.spviet-retail-pos-fullscreen-page #wpadminbar~.spviet-header{display:none!important}.spviet-retail-pos-app{--spv-green:#0f766e;--spv-green2:#10b981;--spv-red:#ef4444;--spv-dark:#0f172a;--spv-muted:#64748b;--spv-bg:#f4f7fb;--spv-card:#fff;position:relative;z-index:2147483600;min-height:86vh;background:var(--spv-bg);border-radius:28px;padding:18px;font-family:"Inter","Noto Sans","Noto Sans JP",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision;color:var(--spv-dark);box-sizing:border-box}.spviet-retail-pos-app *{box-sizing:border-box}.spviet-retail-pos-app-header{display:flex;justify-content:space-between;gap:16px;align-items:center;background:linear-gradient(135deg,#0f766e,#0f172a);color:#fff;padding:20px 22px;border-radius:24px;margin-bottom:16px;box-shadow:0 18px 40px rgba(15,23,42,.18)}.spviet-retail-pos-app-header h2{color:#fff;margin:4px 0 0;font-size:26px}.spviet-retail-pos-app-header p{margin:6px 0 0;color:#cffafe}.spviet-retail-pos-app-kicker{font-size:12px;letter-spacing:.18em;color:#a7f3d0;font-weight:900}.spviet-retail-pos-app-status{background:rgba(255,255,255,.15);padding:10px 14px;border-radius:999px;font-weight:800;display:flex;align-items:center;gap:8px}.spviet-retail-pos-app-status .dot{width:10px;height:10px;background:#22c55e;border-radius:50%;box-shadow:0 0 0 6px rgba(34,197,94,.18)}.spviet-retail-pos-app-main{display:grid;grid-template-columns:minmax(0,1fr) 430px;gap:16px}.spviet-retail-pos-products-panel,.spviet-retail-pos-cart-panel{background:#fff;border:1px solid #dbe5ef;border-radius:24px;padding:18px;box-shadow:0 10px 30px rgba(15,23,42,.07)}.spviet-retail-pos-toolbar{display:flex;align-items:end;justify-content:space-between;gap:12px}.spviet-retail-pos-shortcuts{font-size:12px;color:#64748b;font-weight:800}.spviet-retail-pos-search-label{display:block;font-weight:900;margin-bottom:8px;color:#0f172a}.spviet-retail-pos-search{width:100%;font-size:21px;border:2px solid #99f6e4;border-radius:18px;padding:16px 18px;outline:none}.spviet-retail-pos-search:focus{border-color:#0f766e;box-shadow:0 0 0 5px rgba(15,118,110,.12)}.spviet-retail-pos-results{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-top:16px}.spviet-retail-pos-product{border:1px solid #dbe5ef;border-radius:18px;padding:12px;background:#fff;cursor:pointer;transition:.15s;min-height:172px;text-align:left}.spviet-retail-pos-product:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(15,23,42,.1);border-color:#0f766e}.spviet-retail-pos-product img,.spviet-retail-pos-noimg{width:100%;height:82px;object-fit:cover;border-radius:13px;background:#f1f5f9;display:flex;align-items:center;justify-content:center;color:#94a3b8;font-weight:900}.spviet-retail-pos-product strong{display:block;margin:8px 0 4px;font-size:14px;line-height:1.25}.spviet-retail-pos-product small{display:block;color:#64748b}.spviet-retail-pos-product .price{font-weight:900;color:#0f766e;margin-top:6px}.spviet-retail-pos-cart-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.spviet-retail-pos-cart-head h3{margin:0;font-size:22px}.spviet-retail-pos-cart-head button{border:0;border-radius:999px;background:#fee2e2;color:#991b1b;font-weight:800;padding:8px 12px;cursor:pointer}.spviet-retail-pos-cart{display:flex;flex-direction:column;gap:8px;min-height:230px;max-height:420px;overflow:auto}.spviet-retail-pos-cart-line{display:grid;grid-template-columns:1fr auto;gap:8px;border:1px solid #e2e8f0;border-radius:16px;padding:11px;background:#f8fafc}.spviet-retail-pos-cart-line strong{font-size:14px}.spviet-retail-pos-cart-line .meta{color:#64748b;font-size:12px}.spviet-retail-pos-cart-line small{color:#94a3b8}.spviet-retail-pos-qty{display:flex;align-items:center;gap:5px}.spviet-retail-pos-qty button{width:34px;height:34px;border:0;border-radius:10px;background:#0f766e;color:#fff;font-size:18px;font-weight:900;cursor:pointer}.spviet-retail-pos-qty button.danger{background:#ef4444}.spviet-retail-pos-qty input{width:58px;height:34px;border:1px solid #cbd5e1;border-radius:10px;text-align:center;font-weight:900}.spviet-retail-pos-summary{border-top:2px dashed #dbe5ef;margin-top:14px;padding-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.spviet-retail-pos-summary label{display:flex;flex-direction:column;gap:5px;font-weight:800;color:#334155}.spviet-retail-pos-summary input,.spviet-retail-pos-summary select{border:1px solid #cbd5e1;border-radius:12px;padding:10px;font-size:15px}.spviet-retail-pos-summary label:last-child{grid-column:1/-1}.spviet-retail-pos-total-row,.spviet-retail-pos-change-row{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #e2e8f0;margin-top:10px;padding-top:10px;font-size:16px}.spviet-retail-pos-total-row strong{font-size:25px;color:#0f766e}.spviet-retail-pos-change-row strong{font-size:25px;color:#dc2626}.spviet-retail-pos-pay{width:100%;border:0;border-radius:18px;background:linear-gradient(135deg,#10b981,#0f766e);color:#fff;font-size:20px;font-weight:900;padding:18px;margin-top:14px;cursor:pointer;box-shadow:0 12px 22px rgba(16,185,129,.22)}.spviet-retail-pos-pay:disabled{opacity:.65;cursor:wait}.spviet-retail-pos-last-order{margin-top:10px;background:#ecfdf5;border:1px solid #bbf7d0;color:#065f46;border-radius:14px;padding:10px;font-weight:800}.spviet-retail-pos-empty{color:#64748b;border:1px dashed #cbd5e1;border-radius:18px;padding:18px;text-align:center;background:#f8fafc}.spviet-retail-pos-login{background:#fff3cd;border:1px solid #ffe69c;color:#664d03;padding:18px;border-radius:16px;font-weight:800}.spviet-retail-pos-modal{position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:2147483640;display:flex;align-items:center;justify-content:center;padding:20px}.spviet-retail-pos-modal[hidden]{display:none}.spviet-retail-pos-modal-card{position:relative;background:#fff;border-radius:26px;max-width:560px;width:100%;padding:28px;box-shadow:0 35px 80px rgba(15,23,42,.35);text-align:center}.spviet-retail-pos-modal-card h2{margin:0 0 12px;color:#0f172a}.spviet-retail-pos-modal-close{position:absolute;right:14px;top:12px;width:38px;height:38px;border:0;border-radius:50%;background:#f1f5f9;color:#0f172a;font-size:26px;cursor:pointer}.spviet-retail-pos-change-big{background:#fee2e2;color:#991b1b;border-radius:22px;padding:20px;font-weight:900;font-size:22px;margin:14px 0}.spviet-retail-pos-change-big b{font-size:42px}.spviet-retail-pos-modal .ok{color:#047857;font-weight:900}.spviet-retail-pos-modal .warn{color:#b45309;font-weight:900}@media(max-width:980px){.spviet-retail-pos-app-main{grid-template-columns:1fr}.spviet-retail-pos-cart-panel{order:-1}.spviet-retail-pos-app-header,.spviet-retail-pos-toolbar{flex-direction:column;align-items:flex-start}.spviet-retail-pos-results{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.spviet-retail-pos-summary{grid-template-columns:1fr}}

.spviet-retail-pos-shift-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:8px}
.spviet-retail-pos-shift-actions button,.spviet-retail-pos-print-last{border:0;border-radius:12px;padding:10px 14px;font-weight:800;background:#e8f7f1;color:#06664b;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.08)}
.spviet-retail-pos-print-last{width:100%;margin-top:10px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa}
.spviet-retail-pos-cashdrawer{margin-top:8px;padding:8px 10px;border-radius:12px;background:#f8fafc;color:#64748b;font-size:12px;text-align:center}
.spviet-retail-pos-pay:disabled{opacity:.55;cursor:not-allowed;filter:grayscale(.2)}
@media print{body{background:#fff!important}.spviet-retail-pos-receipt{box-shadow:none!important;margin:0!important}}
.spviet-retail-pos-cash-move{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}.spviet-retail-pos-cash-move button,[data-spviet-pos-test-agent]{border:0;border-radius:12px;padding:12px;font-weight:800;background:#e0f2fe;color:#075985;cursor:pointer}.spviet-retail-pos-product small{word-break:break-all}

/* v0.7.0 Supplier + Purchase Order UI */
.spviet-retail-pos-customer-box{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;background:#fff7ed;border:1px solid #fed7aa;border-radius:16px;padding:10px 12px;margin-bottom:10px}
.spviet-retail-pos-customer-box b{display:block;color:#7c2d12;font-size:13px}.spviet-retail-pos-customer-box span{display:block;font-weight:800;color:#111827;margin-top:2px}.spviet-retail-pos-customer-box button{border:0;border-radius:12px;padding:9px 10px;font-weight:800;background:#ea580c;color:#fff}.spviet-retail-pos-customer-box button[data-spviet-pos-customer-clear]{background:#64748b}.spviet-retail-pos-member-ok{padding:12px;border-radius:12px;background:#dcfce7;color:#14532d;border:1px solid #86efac}.spviet-retail-pos-member-error{padding:12px;border-radius:12px;background:#fee2e2;color:#7f1d1d;border:1px solid #fecaca}
@media(max-width:900px){.spviet-retail-pos-customer-box{grid-template-columns:1fr}.spviet-retail-pos-customer-box button{width:100%}}
/* v1.3.0 multi-payment split */
.spviet-retail-pos-split-pay{border:1px solid rgba(15,118,110,.25);background:#f0fdfa;border-radius:14px;padding:10px;margin:8px 0;display:grid;gap:8px}
.spviet-retail-pos-split-pay[hidden]{display:none!important}
.spviet-retail-pos-split-pay b{color:#0f766e}

/* v1.7.0 kiosk fullscreen cashier mode */
.spviet-retail-pos-kiosk-html,.spviet-retail-pos-kiosk-body{width:100%;height:100%;overflow:hidden!important;background:#eef4f8!important}
.spviet-retail-pos-kiosk-body .spviet-retail-pos-app{height:100vh;max-height:100vh;border-radius:0!important;margin:0!important;display:flex;flex-direction:column}
.spviet-retail-pos-kiosk-body .spviet-retail-pos-app-main{flex:1;min-height:0;overflow:hidden}
.spviet-retail-pos-kiosk-body .spviet-retail-pos-products-panel,.spviet-retail-pos-kiosk-body .spviet-retail-pos-cart-panel{min-height:0;overflow:auto;-webkit-overflow-scrolling:touch}
.spviet-retail-pos-agent-alert{position:fixed;z-index:2147483647;left:18px;right:18px;bottom:18px;background:#991b1b;color:#fff;border-radius:18px;padding:14px 18px;font-size:15px;font-weight:900;box-shadow:0 22px 60px rgba(0,0,0,.3);text-align:center}
.spviet-retail-pos-agent-alert[hidden]{display:none!important}
.spviet-retail-pos-agent-offline .spviet-retail-pos-cashdrawer{background:#fee2e2!important;color:#991b1b!important;border-color:#fecaca!important;font-weight:900}
@media(max-width:900px){.spviet-retail-pos-agent-alert{left:8px;right:8px;bottom:8px;font-size:13px}}

/* v1.8.0 POS Checkout UI Pro */
.spviet-retail-pos-quickbar,.spviet-retail-pos-category-mini{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.spviet-retail-pos-quickbar button,.spviet-retail-pos-category-mini button{border:0;border-radius:999px;padding:10px 14px;font-weight:800;cursor:pointer;background:#eef6ff;color:#12324a;box-shadow:0 4px 14px rgba(15,23,42,.08)}
.spviet-retail-pos-quickbar button:hover,.spviet-retail-pos-category-mini button:hover{transform:translateY(-1px)}
.spviet-retail-pos-category-mini button small{opacity:.65;margin-left:4px}
.spviet-retail-pos-member-error{background:#fee2e2;border:1px solid #fecaca;color:#991b1b;border-radius:14px;padding:14px;line-height:1.5}
.spviet-retail-pos-member-ok{background:#dcfce7;border:1px solid #86efac;color:#065f46;border-radius:14px;padding:14px;line-height:1.5}
.spviet-retail-pos-agent-alert{position:fixed;left:24px;right:24px;bottom:24px;z-index:2147483647;background:#fff7ed;border:1px solid #fdba74;color:#9a3412;border-radius:18px;padding:14px 18px;font-weight:800;box-shadow:0 20px 50px rgba(15,23,42,.2)}

/* v2.0.0 Real Store RC */
.spviet-retail-pos-doctor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:14px 0}
.spviet-retail-pos-doctor-card{border:1px solid #dbe7ef;border-radius:14px;padding:12px;background:#f8fafc;display:flex;flex-direction:column;gap:6px}
.spviet-retail-pos-doctor-card b{font-size:12px;color:#475569;text-transform:uppercase;letter-spacing:.04em}.spviet-retail-pos-doctor-card span{font-size:24px;font-weight:900;color:#0f172a}
.spviet-retail-pos-table-wrap{max-height:340px;overflow:auto;border:1px solid #e2e8f0;border-radius:14px}.spviet-retail-pos-table-wrap table{width:100%;border-collapse:collapse}.spviet-retail-pos-table-wrap th,.spviet-retail-pos-table-wrap td{padding:9px;border-bottom:1px solid #e2e8f0;text-align:left;font-size:13px}.spviet-retail-pos-table-wrap th{position:sticky;top:0;background:#f1f5f9;z-index:1}
.spviet-retail-pos-fastkey-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:14px}.spviet-retail-pos-fastkey-grid button{border:1px solid #dbe7ef;border-radius:16px;padding:12px;background:#fff;text-align:left;box-shadow:0 8px 18px rgba(15,23,42,.08);cursor:pointer}.spviet-retail-pos-fastkey-grid button:hover{border-color:#0f766e;transform:translateY(-1px)}.spviet-retail-pos-fastkey-grid b{display:block;color:#0f172a}.spviet-retail-pos-fastkey-grid span{display:block;color:#0f766e;font-weight:900;margin-top:6px}.spviet-retail-pos-fastkey-grid small{display:block;color:#64748b;margin-top:4px}
/* v2.1.0 Real Device QA */
.spviet-retail-pos-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-weight:900;font-size:12px;background:#e2e8f0;color:#0f172a}.spviet-retail-pos-badge.ok{background:#dcfce7;color:#166534}.spviet-retail-pos-badge.warn{background:#fef3c7;color:#92400e}.spviet-retail-pos-badge.danger{background:#fee2e2;color:#991b1b}

/* v2.6.0 variation hardening */
.spviet-retail-pos-product.is-parent-variable{border:2px dashed #f59e0b;background:#fffbeb}
.spviet-retail-pos-var-warn,.spviet-retail-pos-var-ok{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:3px 8px;margin:4px 0;font-size:11px;font-weight:800}
.spviet-retail-pos-var-warn{background:#fef3c7;color:#92400e}.spviet-retail-pos-var-ok{background:#dcfce7;color:#166534}


/* v2.6.0 SPVIET Pro-Style POS Screen Polish */
.spviet-retail-pos-category-mini.is-hidden{display:none!important}
.spviet-retail-pos-modal-card{max-width:min(920px,96vw)}
.spviet-retail-pos-category-grid,.spviet-retail-pos-variation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-top:12px}
.spviet-retail-pos-category-grid button,.spviet-retail-pos-variation-grid button,.spviet-retail-pos-quickselect-actions button,.spviet-retail-pos-doctor-actions button,[data-spviet-modal-ok],[data-spviet-run-preflight],[data-stock-continue],[data-stock-cancel]{border:0;border-radius:16px;padding:12px 14px;font-weight:900;background:#eef6ff;color:#12324a;cursor:pointer;box-shadow:0 8px 18px rgba(15,23,42,.08);text-align:left}
.spviet-retail-pos-category-grid button:hover,.spviet-retail-pos-variation-grid button:hover,.spviet-retail-pos-quickselect-actions button:hover,.spviet-retail-pos-doctor-actions button:hover{transform:translateY(-1px);border-color:#0f766e}
.spviet-retail-pos-category-grid b,.spviet-retail-pos-variation-grid b{display:block;color:#0f172a}.spviet-retail-pos-category-grid small,.spviet-retail-pos-variation-grid small{display:block;color:#64748b;margin-top:5px}.spviet-retail-pos-variation-grid span{display:block;color:#0f766e;font-weight:900;margin-top:6px}.spviet-retail-pos-quickselect-actions,.spviet-retail-pos-doctor-actions{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}.spviet-retail-pos-quickselect-actions button:first-child{background:#fff7ed;color:#9a3412}.spviet-retail-pos-doctor-actions button{background:#ecfdf5;color:#065f46}[data-stock-continue]{background:#fee2e2;color:#991b1b}[data-stock-cancel]{background:#f1f5f9;color:#334155}


/* v2.6.0 SPVIET Pro POS Screen Polish */
.spviet-retail-pos-app{height:100vh;max-height:100vh;min-height:0;border-radius:0;padding:10px;overflow:hidden;background:#eef4f8}
.spviet-retail-pos-app-header{padding:10px 16px;margin-bottom:8px;border-radius:0;min-height:58px}.spviet-retail-pos-app-header h2{font-size:20px}.spviet-retail-pos-app-kicker{font-size:10px}.spviet-retail-pos-app-header p{margin:2px 0 0}.spviet-retail-pos-shift-actions button{padding:8px 10px}
.spviet-retail-pos-compact-layout{display:grid!important;grid-template-columns:minmax(680px,1fr) 390px;grid-template-rows:minmax(0,1fr) 178px;gap:8px;height:calc(100vh - 86px);min-height:0;overflow:hidden}.spviet-retail-pos-order-side{grid-column:1;grid-row:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.spviet-retail-pos-pay-side{grid-column:2;grid-row:1 / span 2;display:flex;flex-direction:column;min-height:0;overflow:hidden}.spviet-retail-pos-action-dock{grid-column:1;grid-row:2;background:#fff;border:1px solid #dbe5ef;border-radius:14px;padding:10px;box-shadow:0 8px 24px rgba(15,23,42,.06);min-height:0;overflow:hidden}.spviet-retail-pos-products-panel,.spviet-retail-pos-cart-panel{border-radius:14px;padding:12px;box-shadow:0 8px 24px rgba(15,23,42,.06)}
.spviet-retail-pos-scan-row{display:grid;grid-template-columns:190px minmax(0,1fr);gap:8px;align-items:center}.spviet-retail-pos-scan-menu-button{height:46px;width:100%;border:0;background:#0b63ce;color:#fff;font-weight:900;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:0 12px}.spviet-retail-pos-scan-mode-wrap{position:relative}.spviet-retail-pos-scan-menu{position:absolute;z-index:50;left:0;top:50px;width:220px;background:#fff;border:1px solid #dbe5ef;border-radius:12px;box-shadow:0 18px 42px rgba(15,23,42,.18);padding:8px}.spviet-retail-pos-scan-menu button{display:block;width:100%;border:0;background:#fff;text-align:left;padding:10px;border-radius:8px;font-weight:700;cursor:pointer}.spviet-retail-pos-scan-menu button:hover{background:#eef6ff}.spviet-retail-pos-search{height:46px;border-radius:12px;font-size:19px;padding:10px 14px}
.spviet-retail-pos-bill-tabs{display:flex;align-items:center;gap:2px;border-bottom:1px solid #e2e8f0;margin:8px -12px 0;padding-left:12px}.spviet-retail-pos-bill-tabs button{border:0;background:#e8f1fb;padding:10px 16px;font-weight:900;border-radius:10px 10px 0 0;cursor:pointer}.spviet-retail-pos-bill-tabs button.active{background:#fff;color:#0f172a;border:1px solid #dbe5ef;border-bottom-color:#fff}.spviet-retail-pos-bill-tabs button[data-spviet-pos-new-bill]{font-size:24px;line-height:1;background:#0b63ce;color:#fff}
.spviet-retail-pos-results{margin-top:8px;max-height:168px;overflow:auto;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.spviet-retail-pos-product{min-height:130px;padding:9px;border-radius:12px}.spviet-retail-pos-product img,.spviet-retail-pos-noimg{height:58px}.spviet-retail-pos-product strong{font-size:13px}.spviet-retail-pos-cart{flex:1;min-height:0;overflow:auto;margin-top:8px;border-top:1px solid #e2e8f0;padding-top:8px}.spviet-retail-pos-cart-line{grid-template-columns:minmax(0,1fr) 100px!important;border-radius:10px;padding:9px}.spviet-retail-pos-cart-line .line-main strong{font-size:15px}.spviet-retail-pos-empty-center{font-size:18px;min-height:130px;display:flex;flex-direction:column;align-items:center;justify-content:center;grid-column:1/-1}.spviet-retail-pos-empty-center button{margin-top:12px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;padding:10px 20px;font-weight:900;cursor:pointer}
.spviet-retail-pos-terminal-head{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:8px}.spviet-retail-pos-terminal-head b{display:block;font-size:16px}.spviet-retail-pos-terminal-head small{display:block;color:#64748b;font-weight:700}.spviet-retail-pos-mini-status{display:flex;align-items:center;gap:6px;background:#e8f7f1;color:#06664b;border-radius:999px;padding:6px 10px;font-weight:900}.spviet-retail-pos-mini-status .dot{width:9px;height:9px;background:#22c55e;border-radius:50%}.spviet-retail-pos-customer-box{grid-template-columns:1fr auto;gap:6px;padding:8px;margin-bottom:8px}.spviet-retail-pos-customer-box button[data-spviet-pos-customer-clear]{display:none}.spviet-retail-pos-compact-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.spviet-retail-pos-compact-summary .span2{grid-column:1/-1}.spviet-retail-pos-summary label span{font-size:13px}.spviet-retail-pos-summary input,.spviet-retail-pos-summary select{padding:9px;border-radius:9px}.spviet-retail-pos-total-row,.spviet-retail-pos-change-row{padding:10px 0;font-size:15px}.spviet-retail-pos-total-row strong,.spviet-retail-pos-change-row strong{font-size:24px}.spviet-retail-pos-pay{height:58px;border-radius:12px;font-size:22px;margin-top:8px}.spviet-retail-pos-change-method{width:100%;border:0;border-radius:12px;background:#eef6ff;color:#0b3b70;font-weight:900;padding:10px 12px;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.spviet-retail-pos-change-method small{font-weight:800;color:#64748b}.spviet-retail-pos-cashdrawer{margin-top:auto}
.spviet-retail-pos-action-tabs{display:flex;gap:8px;margin-bottom:10px}.spviet-retail-pos-action-tabs button{border:1px solid #cbd5e1;background:#fff;border-radius:8px;padding:9px 14px;font-weight:900;cursor:pointer}.spviet-retail-pos-action-tabs button.active{background:#0b63ce;color:#fff;border-color:#0b63ce}.spviet-retail-pos-action-panel{display:none;grid-template-columns:repeat(6,minmax(120px,1fr));gap:10px;overflow:auto;max-height:120px}.spviet-retail-pos-action-panel.active{display:grid}.spviet-retail-pos-action-panel button{border:1px solid #cfe0f3;background:#e8f1fb;border-radius:8px;min-height:48px;padding:10px 12px;font-weight:900;color:#0f172a;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;line-height:1.15}.spviet-retail-pos-action-panel button[data-spviet-pos-quick-icon]::before{content:attr(data-spviet-pos-quick-icon);display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;border-radius:9px;background:rgba(255,255,255,.72);box-shadow:inset 0 0 0 1px rgba(15,23,42,.06);font-size:17px;line-height:1;flex:0 0 auto}.spviet-retail-pos-action-panel button:hover{background:#dbeafe}.spviet-retail-pos-quickbar{display:none!important}.spviet-retail-pos-print-last,.spviet-retail-pos-cash-move{display:none!important}
.spviet-retail-pos-payment-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:14px 0}.spviet-retail-pos-payment-grid button{border:1px solid #dbe5ef;border-radius:12px;background:#f8fafc;padding:14px;font-weight:900;cursor:pointer}.spviet-retail-pos-payment-grid button.active{background:#0b63ce;color:#fff;border-color:#0b63ce}.spviet-retail-pos-modal-split{display:grid;gap:8px;text-align:left;background:#f8fafc;border-radius:12px;padding:12px;margin:12px 0}.spviet-retail-pos-modal-split[hidden]{display:none}.spviet-retail-pos-modal-split label{display:grid;grid-template-columns:120px 1fr;align-items:center;gap:8px}.spviet-retail-pos-modal-split input{padding:10px;border:1px solid #cbd5e1;border-radius:8px}.spviet-retail-pos-modal-primary{border:0;border-radius:12px;background:#10b981;color:#fff;font-weight:900;padding:12px 18px;cursor:pointer}
@media(max-width:1100px){.spviet-retail-pos-compact-layout{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto auto}.spviet-retail-pos-pay-side{grid-column:1;grid-row:2;max-height:360px}.spviet-retail-pos-action-dock{grid-column:1;grid-row:3}.spviet-retail-pos-action-panel{grid-template-columns:repeat(3,1fr)}}

/* v2.6.0 SPVIET Pro Search Cart Polish */
.spviet-retail-pos-product-browser{display:grid;grid-template-columns:270px minmax(0,1fr);gap:16px;text-align:left;max-height:78vh}.spviet-retail-pos-product-browser aside{overflow:auto;border-right:1px solid #e2e8f0;padding-right:12px}.spviet-retail-pos-product-browser aside>button{width:100%;border:0;border-radius:14px;padding:12px;margin:0 0 8px;background:#e0f2fe;color:#075985;font-weight:900;text-align:left;cursor:pointer}.spviet-retail-pos-category-grid.compact{display:grid;grid-template-columns:1fr;gap:8px}.spviet-retail-pos-category-grid.compact button{border:1px solid #dbeafe;background:#f8fafc;border-radius:14px;padding:10px;text-align:left;cursor:pointer}.spviet-retail-pos-category-grid.compact button b{display:block;color:#0f172a}.spviet-retail-pos-category-grid.compact button small{color:#64748b}.spviet-retail-pos-browser-toolbar{display:flex;gap:8px;margin-bottom:10px}.spviet-retail-pos-browser-toolbar input{flex:1;border:1px solid #cbd5e1;border-radius:14px;padding:12px;font-size:16px}.spviet-retail-pos-browser-toolbar button,.spviet-retail-pos-browser-pager button{border:0;border-radius:14px;background:#0f766e;color:#fff;font-weight:900;padding:10px 14px;cursor:pointer}.spviet-retail-pos-browser-title{font-weight:900;margin:8px 0 12px;color:#0f172a}.spviet-retail-pos-browser-products{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;overflow:auto;max-height:58vh;padding-right:4px}.spviet-retail-pos-quick-product{border:1px solid #dbe5ef;border-radius:18px;background:#fff;text-align:left;padding:10px;min-height:205px;cursor:pointer;box-shadow:0 10px 22px rgba(15,23,42,.06)}.spviet-retail-pos-quick-product:hover{border-color:#0f766e;transform:translateY(-1px)}.spviet-retail-pos-quick-product img,.spviet-retail-pos-quick-product .spviet-retail-pos-noimg{width:100%;height:98px;object-fit:cover;border-radius:14px;background:#f1f5f9;display:flex;align-items:center;justify-content:center;color:#94a3b8;font-weight:900}.spviet-retail-pos-quick-product b{display:block;margin:8px 0 4px;line-height:1.25}.spviet-retail-pos-quick-product small{display:block;color:#64748b;min-height:32px}.spviet-retail-pos-quick-product strong{display:block;color:#0f766e;font-size:17px;margin-top:6px}.spviet-retail-pos-browser-pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}.spviet-retail-pos-browser-pager span{font-weight:900;color:#334155}.spviet-retail-pos-profile-touch_large{font-size:17px}.spviet-retail-pos-profile-touch_large .spviet-retail-pos-search{font-size:24px;padding:20px}.spviet-retail-pos-profile-touch_large .spviet-retail-pos-action-panel button,.spviet-retail-pos-profile-touch_large .spviet-retail-pos-pay{min-height:64px;font-size:19px}.spviet-retail-pos-profile-touch_large .spviet-retail-pos-cart{max-height:52vh}.spviet-retail-pos-profile-spviet_pro .spviet-retail-pos-app-header{background:linear-gradient(135deg,#0f766e,#064e3b 45%,#111827)}.spviet-retail-pos-profile-spviet_pro .spviet-retail-pos-action-panel button{background:#ecfdf5}.spviet-retail-pos-profile-spviet_compact .spviet-retail-pos-app-header{padding:14px 18px}.spviet-retail-pos-profile-spviet_compact .spviet-retail-pos-cart-line{padding:8px}.spviet-retail-pos-profile-spviet_compact .spviet-retail-pos-action-panel button{min-height:48px}.spviet-retail-pos-scan-menu-button[data-mode="serial"]{background:#ede9fe}.spviet-retail-pos-scale-hint{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:12px;padding:10px;margin-top:8px;font-weight:800}@media(max-width:1100px){.spviet-retail-pos-product-browser{grid-template-columns:1fr;max-height:none}.spviet-retail-pos-product-browser aside{border-right:0;border-bottom:1px solid #e2e8f0;padding-right:0;padding-bottom:10px}.spviet-retail-pos-browser-products{max-height:50vh}}

/* v2.6.0 SPVIET Pro realtime search + wide cart table polish */
.spviet-retail-pos-order-side{position:relative}.spviet-retail-pos-scan-row-v26{grid-template-columns:170px minmax(360px,1fr) auto;align-items:stretch;position:relative;z-index:30}.spviet-retail-pos-bill-tabs-inline{margin:0!important;padding:0!important;border:0!important;white-space:nowrap;align-self:stretch}.spviet-retail-pos-bill-tabs-inline button{height:46px;border-radius:8px!important;margin-left:2px}.spviet-retail-pos-results{display:none;position:absolute;left:12px;right:12px;top:64px;z-index:25;max-height:42vh!important;overflow:auto!important;margin:0!important;background:#fff;border:1px solid #cbd5e1;border-radius:0 0 12px 12px;box-shadow:0 18px 42px rgba(15,23,42,.18);grid-template-columns:none!important;gap:0!important;padding:0!important}.spviet-retail-pos-results.is-open{display:block}.spviet-retail-pos-search-suggest-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid #e2e8f0;background:#f8fafc}.spviet-retail-pos-search-suggest-head b{font-size:14px}.spviet-retail-pos-search-suggest-head small{color:#64748b;font-weight:700}.spviet-retail-pos-search-row{width:100%;display:grid;grid-template-columns:40px minmax(0,1fr) 130px;gap:10px;align-items:center;border:0;border-bottom:1px solid #e5e7eb;background:#fff;text-align:left;padding:8px 12px;cursor:pointer}.spviet-retail-pos-search-row:hover,.spviet-retail-pos-search-row:focus{background:#eaf3ff;outline:none}.spviet-retail-pos-search-row .thumb img,.spviet-retail-pos-search-row .thumb .spviet-retail-pos-noimg{width:34px;height:34px;border-radius:4px;object-fit:cover}.spviet-retail-pos-search-row .info b{display:block;font-size:15px;color:#0f172a;line-height:1.25}.spviet-retail-pos-search-row .info small,.spviet-retail-pos-search-row .price small{display:block;color:#64748b;font-size:12px}.spviet-retail-pos-search-row .price{text-align:right;font-weight:900;color:#0f172a}.spviet-retail-pos-search-empty{margin:8px}
.spviet-retail-pos-cart{border-top:1px solid #e2e8f0;background:#fff;overflow:auto!important}.spviet-retail-pos-cart-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px;min-width:980px}.spviet-retail-pos-cart-table th{position:sticky;top:0;z-index:3;background:#fff;text-align:left;padding:8px 10px;border-bottom:1px solid #cbd5e1;font-weight:900}.spviet-retail-pos-cart-table td{padding:10px;border-bottom:1px solid #e5e7eb;vertical-align:middle}.spviet-retail-pos-cart-table tr:hover td{background:#f8fafc}.spviet-retail-pos-cart-table .name strong{display:block;font-size:15px}.spviet-retail-pos-cart-table .name small{display:block;font-style:italic;color:#64748b}.spviet-retail-pos-cart-img img,.spviet-retail-pos-cart-img .spviet-retail-pos-noimg{width:38px;height:38px;border-radius:4px;object-fit:cover}.spviet-retail-pos-cart-trash{border:0;background:transparent;font-size:17px;cursor:pointer}.spviet-retail-pos-cart-table select{border:0;border-bottom:1px solid #cbd5e1;background:#fff;padding:6px;min-width:80px}.spviet-retail-pos-cart-table .spviet-retail-pos-qty{justify-content:center}.spviet-retail-pos-cart-table .spviet-retail-pos-qty input{height:34px}.spviet-retail-pos-cart-table .spviet-retail-pos-qty button{width:30px;height:30px;border-radius:8px}.spviet-retail-pos-cart-table .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#334155}
@media(max-width:1200px){.spviet-retail-pos-scan-row-v26{grid-template-columns:160px minmax(260px,1fr)}.spviet-retail-pos-bill-tabs-inline{grid-column:1/-1;margin-top:6px!important}.spviet-retail-pos-results{top:112px}.spviet-retail-pos-cart-table{min-width:860px}}


/* v2.7.0 Serial + scale + multi bill polish */
.spviet-retail-pos-cart-table-v27{min-width:1120px;width:100%;table-layout:auto}
.spviet-retail-pos-cart-table-v27 th,.spviet-retail-pos-cart-table-v27 td{vertical-align:middle;white-space:nowrap}
.spviet-retail-pos-cart-table-v27 td.name{white-space:normal;min-width:260px}
.spviet-retail-pos-cart-table-v27 .spviet-retail-pos-serials{width:160px;min-height:38px;resize:vertical;border:1px solid #cbd5e1;border-radius:8px;padding:6px;font-size:12px}
.spviet-retail-pos-cart-table-v27 input[data-line-discount]{width:86px;border:1px solid #cbd5e1;border-radius:8px;padding:7px;text-align:right}
.spviet-retail-pos-bill-tabs-inline{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow-x:auto;max-width:460px}
.spviet-retail-pos-bill-tabs-inline button{white-space:nowrap}
@media (max-width: 1366px){.spviet-retail-pos-app-header{padding:10px 14px}.spviet-retail-pos-scan-row-v26{gap:6px}.spviet-retail-pos-bill-tabs-inline{max-width:360px}.spviet-retail-pos-payment-side{width:330px}.spviet-retail-pos-cart-table-v27 td.name{min-width:220px}}
@media (min-width: 1800px){.spviet-retail-pos-payment-side{width:430px}.spviet-retail-pos-cart-table-v27 td.name{min-width:360px}.spviet-retail-pos-cart-table-v27 .spviet-retail-pos-serials{width:220px}}
.spviet-retail-pos-app{height:100vh;max-height:100vh;overflow:hidden}.spviet-retail-pos-cart-panel{min-height:0}.spviet-retail-pos-cart-list{overflow:auto}


/* v2.8.0 Touch portrait / narrow cashier screen polish */
@media (orientation: portrait), (max-width: 1100px) {
  .spviet-retail-pos-app .spviet-retail-pos-main { grid-template-columns: 1fr !important; height: auto !important; min-height: calc(100vh - 120px); }
  .spviet-retail-pos-app .spviet-retail-pos-side { position: sticky; bottom: 0; z-index: 50; max-height: 42vh; overflow: auto; border-top: 2px solid #dbeafe; }
  .spviet-retail-pos-app .spviet-retail-pos-cart-list { max-height: 48vh; overflow: auto; }
  .spviet-retail-pos-app [data-spviet-bill-tabs] { flex-wrap: nowrap; overflow-x: auto; white-space: nowrap; }
  .spviet-retail-pos-app .spviet-retail-pos-cart-row { min-height: 58px; }
  .spviet-retail-pos-app .spviet-retail-pos-actions { max-height: 28vh; overflow: auto; }
}

.spviet-retail-pos-portrait .spviet-retail-pos-app .spviet-retail-pos-main{grid-template-columns:1fr!important;height:auto!important;}
.spviet-retail-pos-portrait .spviet-retail-pos-app .spviet-retail-pos-side{position:sticky;bottom:0;z-index:50;max-height:42vh;overflow:auto;}

/* v2.8.1 POS search/cart/bill-tabs hotfix
   - Search keyword clears after product select.
   - No fixed "Không tìm thấy" box when there is no active keyword.
   - Bill tabs have close buttons and get more width on the top row.
   - Cart table rows are forced back to real table rows, not old grid cards. */
.spviet-retail-pos-scan-row-v26{
  grid-template-columns:170px minmax(260px,.72fr) minmax(520px,1.28fr)!important;
  align-items:stretch;
}
.spviet-retail-pos-bill-tabs-inline{
  display:flex!important;
  align-items:stretch!important;
  gap:6px!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  scrollbar-width:thin;
}
.spviet-retail-pos-bill-tab{
  display:inline-flex;
  align-items:stretch;
  flex:0 0 auto;
  border:1px solid #dbe5ef;
  border-radius:10px;
  background:#e8f1fb;
  overflow:hidden;
  height:46px;
}
.spviet-retail-pos-bill-tab.active{
  background:#fff;
  border-color:#b6c9df;
  box-shadow:0 0 0 2px rgba(15,118,110,.08);
}
.spviet-retail-pos-bill-tab > button[data-bill-tab]{
  height:46px!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  padding:0 14px!important;
  min-width:64px;
  font-weight:900;
  color:#0f172a;
}
.spviet-retail-pos-bill-tab.active > button[data-bill-tab]{color:#0f766e}
.spviet-retail-pos-bill-close{
  height:46px!important;
  width:28px!important;
  min-width:28px!important;
  margin:0!important;
  border:0!important;
  border-left:1px solid rgba(100,116,139,.22)!important;
  border-radius:0!important;
  background:rgba(255,255,255,.58)!important;
  color:#64748b!important;
  font-size:18px!important;
  line-height:1!important;
  padding:0!important;
  cursor:pointer;
}
.spviet-retail-pos-bill-close:hover{background:#fee2e2!important;color:#991b1b!important}
.spviet-retail-pos-bill-tabs-inline > button[data-spviet-pos-hold],
.spviet-retail-pos-bill-tabs-inline > button[data-spviet-pos-recall]{
  flex:0 0 auto;
  min-width:84px;
  padding-left:12px!important;
  padding-right:12px!important;
}
.spviet-retail-pos-bill-tabs-inline > button[data-spviet-pos-new-bill]{
  flex:0 0 46px;
  min-width:46px;
}
.spviet-retail-pos-results:empty{display:none!important}
.spviet-retail-pos-cart{width:100%;max-height:calc(100vh - 330px);min-height:360px;overflow:auto!important}
.spviet-retail-pos-cart-table-v27{width:100%;min-width:1120px;border-collapse:separate;border-spacing:0;table-layout:auto}
.spviet-retail-pos-cart-table-v27 tr.spviet-retail-pos-cart-table-row{
  display:table-row!important;
  grid-template-columns:none!important;
  border:0!important;
  border-radius:0!important;
  padding:0!important;
  background:transparent!important;
}
.spviet-retail-pos-cart-table-v27 tr.spviet-retail-pos-cart-table-row td{display:table-cell!important}
.spviet-retail-pos-cart-table-v27 th,.spviet-retail-pos-cart-table-v27 td{white-space:nowrap}
.spviet-retail-pos-cart-table-v27 td.name{white-space:normal;min-width:280px}
@media (max-width:1366px){
  .spviet-retail-pos-scan-row-v26{grid-template-columns:160px minmax(220px,.64fr) minmax(460px,1.36fr)!important}
  .spviet-retail-pos-cart-table-v27 td.name{min-width:240px}
}
@media (max-width:1200px){
  .spviet-retail-pos-scan-row-v26{grid-template-columns:160px minmax(0,1fr)!important}
  .spviet-retail-pos-bill-tabs-inline{grid-column:1/-1;margin-top:6px!important}
  .spviet-retail-pos-results{top:112px}
}

/* v2.8.3 POS compact header + dynamic unit / permission discount */
.spviet-retail-pos-app{padding:14px}
.spviet-retail-pos-app-header{
  padding:12px 16px!important;
  border-radius:18px!important;
  display:grid!important;
  grid-template-columns:minmax(240px,1fr) auto auto;
  gap:14px;
  align-items:center;
}
.spviet-retail-pos-app-header h2{margin:0!important;font-size:22px!important;line-height:1.2}
.spviet-retail-pos-app-header p{margin:6px 0 0!important;font-size:16px}
.spviet-retail-pos-header-left,.spviet-retail-pos-header-middle,.spviet-retail-pos-header-right{display:flex;align-items:center;gap:12px;min-width:0}
.spviet-retail-pos-header-left{flex-direction:column;align-items:flex-start}
.spviet-retail-pos-header-middle{justify-content:center;flex-wrap:wrap}
.spviet-retail-pos-header-right{justify-content:flex-end;flex-wrap:wrap}
.spviet-retail-pos-header-meta{display:flex;flex-direction:column;gap:4px;min-width:170px;text-align:right}
.spviet-retail-pos-header-branch,.spviet-retail-pos-header-staff{font-size:13px;color:#c7f9e8;font-weight:800;white-space:nowrap}
.spviet-retail-pos-shift-actions{display:flex;gap:8px;flex-wrap:wrap}
.spviet-retail-pos-shift-actions button,.spviet-retail-pos-tool-btn{border:0;border-radius:12px;padding:10px 14px;background:#ecfdf5;color:#065f46;font-weight:900;cursor:pointer}
.spviet-retail-pos-tool-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:rgba(255,255,255,.10);color:#fff;min-height:42px;border:1px solid rgba(255,255,255,.14)}
.spviet-retail-pos-tool-btn.icon-only{width:44px;padding:0;font-size:20px}
.spviet-retail-pos-tool-btn b{font-size:14px}
.spviet-retail-pos-header-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.spviet-retail-pos-tool-menu-wrap{position:relative}
.spviet-retail-pos-tool-menu{position:absolute;right:0;top:52px;min-width:240px;background:#fff;border:1px solid #dbe5ef;border-radius:14px;box-shadow:0 18px 32px rgba(15,23,42,.16);padding:8px;z-index:40}
.spviet-retail-pos-tool-menu button{display:block;width:100%;text-align:left;border:0;background:#fff;border-radius:10px;padding:12px 14px;font-weight:800;color:#0f172a;cursor:pointer}
.spviet-retail-pos-tool-menu button:hover{background:#eff6ff}
.spviet-retail-pos-network-offline .spviet-retail-pos-app-status{background:rgba(239,68,68,.18)!important;color:#fee2e2}
.spviet-retail-pos-network-offline .spviet-retail-pos-app-status .dot{background:#ef4444;box-shadow:0 0 0 6px rgba(239,68,68,.18)}
.spviet-retail-pos-compact-layout{grid-template-rows:minmax(0,1fr) auto!important;height:calc(100vh - 72px)!important}
.spviet-retail-pos-action-dock{padding:4px 12px 12px!important;transition:all .18s ease}
.spviet-retail-pos-action-toggle{display:flex;align-items:center;justify-content:center;width:56px;height:22px;margin:0 auto;border:0;border-radius:0 0 12px 12px;background:#dbeafe;color:#0b63ce;font-size:18px;font-weight:900;cursor:pointer}
.spviet-retail-pos-action-toggle span{display:block;transition:transform .18s ease}
.spviet-retail-pos-action-dock.is-collapsed{padding:0 12px 6px!important;background:transparent!important;border-color:transparent!important;box-shadow:none!important}
.spviet-retail-pos-action-dock.is-collapsed .spviet-retail-pos-action-dock-inner{display:none}
.spviet-retail-pos-action-dock:not(.is-collapsed) .spviet-retail-pos-action-toggle span{transform:rotate(180deg)}
.spviet-retail-pos-action-panel{grid-template-columns:repeat(var(--spviet-pos-dock-columns,3),minmax(120px,1fr))!important;grid-auto-rows:minmax(52px,auto);max-height:calc((var(--spviet-pos-dock-rows,2) * 58px) + ((var(--spviet-pos-dock-rows,2) - 1) * 10px))!important;padding-right:4px}
.spviet-retail-pos-action-panel.active{display:grid!important}
.spviet-retail-pos-shortcuts-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:10px;text-align:left}
.spviet-retail-pos-shortcuts-grid div{display:flex;align-items:center;gap:10px;border:1px solid #dbe5ef;border-radius:14px;padding:10px 12px;background:#f8fafc}
.spviet-retail-pos-shortcuts-grid b{display:inline-flex;align-items:center;justify-content:center;min-width:48px;padding:8px 10px;border:1px solid #cbd5e1;border-radius:10px;background:#fff}
.spviet-retail-pos-modal-primary{border:0;border-radius:12px;background:#0f766e;color:#fff;padding:12px 16px;font-weight:900;cursor:pointer}
.spviet-retail-pos-table-wrap{max-height:52vh;overflow:auto;text-align:left}
.spviet-retail-pos-table-wrap table{width:100%;border-collapse:collapse}
.spviet-retail-pos-table-wrap th,.spviet-retail-pos-table-wrap td{padding:10px 8px;border-bottom:1px solid #e2e8f0}
@media (max-width: 1500px){
  .spviet-retail-pos-app-header{grid-template-columns:minmax(200px,1fr) auto!important}
  .spviet-retail-pos-header-right{grid-column:1/-1;justify-content:space-between}
}
@media (max-width: 1200px){
  .spviet-retail-pos-app-header{grid-template-columns:1fr!important}
  .spviet-retail-pos-header-middle,.spviet-retail-pos-header-right{justify-content:flex-start}
  .spviet-retail-pos-header-meta{text-align:left}
  .spviet-retail-pos-action-panel{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .spviet-retail-pos-shortcuts-grid{grid-template-columns:1fr}
}

/* v2.8.3 POS compact header + dynamic unit UI */
.spviet-retail-pos-app{padding:0 6px 8px!important;border-radius:0!important}
.spviet-retail-pos-app-header{margin-top:0!important;padding:8px 14px!important;border-radius:0 0 18px 18px!important;min-height:54px;box-shadow:0 10px 24px rgba(15,23,42,.16)!important}
.spviet-retail-pos-app-header h2{font-size:19px!important}
.spviet-retail-pos-app-header p{margin:2px 0 0!important;font-size:14px!important}
.spviet-retail-pos-app-main{margin-top:8px}
.spviet-retail-pos-header-left{gap:4px!important}
.spviet-retail-pos-header-middle{gap:10px!important}
.spviet-retail-pos-header-right{gap:10px!important}
.spviet-retail-pos-header-meta{min-width:220px!important;gap:5px!important}
.spviet-retail-pos-header-meta-row{display:flex;align-items:center;justify-content:flex-end;gap:8px;font-size:12px;color:#d7fff1;font-weight:800;white-space:nowrap}
.spviet-retail-pos-header-meta-row .meta-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:rgba(255,255,255,.12);font-size:12px}
.spviet-retail-pos-header-meta-row .meta-label{opacity:.85;text-transform:uppercase;letter-spacing:.04em}
.spviet-retail-pos-header-meta-row b{color:#fff;font-size:15px}
.spviet-retail-pos-app-status{padding:8px 12px!important}
.spviet-retail-pos-shift-actions button,.spviet-retail-pos-tool-btn{min-height:40px!important;padding:8px 12px!important}
.spviet-retail-pos-tool-btn.icon-only{width:40px!important;height:40px!important}
.spviet-retail-pos-cart-table-v27 td.name small{display:block;margin-top:4px;color:#64748b}
.spviet-retail-pos-cart-table-v27 td.spviet-retail-pos-unit-cell select{min-width:138px;max-width:180px;border:1px solid #cbd5e1;border-radius:10px;padding:8px 10px;background:#fff;font-weight:700}
.spviet-retail-pos-cart-table-v27 td.spviet-retail-pos-unit-cell select:disabled{background:#f8fafc;color:#475569;cursor:not-allowed}
.spviet-retail-pos-locked-value{display:inline-flex;align-items:center;justify-content:flex-end;min-width:86px;padding:7px 10px;border-radius:8px;background:#f8fafc;border:1px dashed #cbd5e1;color:#64748b;font-weight:800}
@media(max-width:1280px){
  .spviet-retail-pos-app{padding:0 4px 6px!important}
  .spviet-retail-pos-app-header{padding:8px 10px!important;grid-template-columns:minmax(170px,1fr) auto auto!important;gap:10px!important}
  .spviet-retail-pos-header-meta{min-width:180px!important}
}
@media(max-width:980px){
  .spviet-retail-pos-app-header{border-radius:0 0 14px 14px!important}
  .spviet-retail-pos-header-meta-row{justify-content:flex-start}
}

/* v2.8.4 Shift handover / end-session / cash in-out dialogs */
.spviet-retail-pos-pay.is-disabled{background:#94a3b8!important;box-shadow:none!important;cursor:not-allowed!important}
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-shift{max-width:min(1120px,96vw);text-align:left;padding:0;overflow:hidden}
.spviet-retail-pos-shift-modal{background:#f8fafc;color:#0f172a}
.spviet-retail-pos-shift-modal h2{margin:0!important;padding:18px 22px;background:linear-gradient(135deg,#0f766e,#0f172a);color:#fff!important;font-size:24px;display:flex;align-items:center;gap:8px}
.spviet-retail-pos-shift-modal h2 small{font-size:15px;color:#d9fff4;font-weight:800}
.spviet-retail-pos-modal-help{margin:14px 22px 12px;padding:12px 14px;border-radius:14px;background:#ecfeff;border:1px solid #a5f3fc;color:#0f4a5c;font-weight:800}
.spviet-retail-pos-shift-table,.spviet-retail-pos-ledger-table{width:calc(100% - 44px);margin:0 22px 14px;border-collapse:collapse;background:#fff;border:1px solid #94a3b8;box-shadow:0 12px 30px rgba(15,23,42,.08)}
.spviet-retail-pos-shift-table th,.spviet-retail-pos-shift-table td,.spviet-retail-pos-ledger-table th,.spviet-retail-pos-ledger-table td{border:1px solid #94a3b8;padding:10px;font-size:15px;vertical-align:middle}
.spviet-retail-pos-shift-table th{background:#6daa48;color:#06170b;text-align:center;font-size:18px}.spviet-retail-pos-ledger-table th{background:#4472c4;color:#07142c;text-align:center}
.spviet-retail-pos-shift-table input,.spviet-retail-pos-ledger-table input,.spviet-retail-pos-ledger-table select,.spviet-retail-pos-shift-note textarea{width:100%;border:1px solid #64748b;border-radius:6px;padding:10px 12px;font-size:18px;font-weight:900;background:#fff;color:#0f172a}
.spviet-retail-pos-yellow{background:#ffff00!important}.spviet-retail-pos-shift-table .spviet-retail-pos-total td{background:#f8fafc}.spviet-retail-pos-shift-table .spviet-retail-pos-grand td{background:#fff;font-weight:900;font-size:18px}.spviet-retail-pos-shift-table .spviet-retail-pos-grand b{font-size:24px;color:#dc2626}.spviet-retail-pos-shift-table em{display:inline-flex;margin-left:12px;padding:6px 12px;border-radius:999px;font-style:normal;font-weight:1000;background:#e2e8f0;color:#0f172a}.spviet-retail-pos-shift-table em.ok{background:#dcfce7;color:#047857}.spviet-retail-pos-shift-table em.pos{background:#dbeafe;color:#1d4ed8}.spviet-retail-pos-shift-table em.neg{background:#fee2e2;color:#b91c1c}
.spviet-retail-pos-shift-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px;margin:0 22px 14px}.spviet-retail-pos-shift-cards div{background:#fff;border:1px solid #dbe5ef;border-radius:14px;padding:12px;box-shadow:0 8px 18px rgba(15,23,42,.06)}.spviet-retail-pos-shift-cards span{display:block;color:#64748b;font-weight:800;font-size:12px}.spviet-retail-pos-shift-cards b{display:block;margin-top:4px;font-size:20px;color:#0f766e}.spviet-retail-pos-shift-cards .strong{background:#0f172a}.spviet-retail-pos-shift-cards .strong span{color:#cbd5e1}.spviet-retail-pos-shift-cards .strong b{color:#facc15}
.spviet-retail-pos-shift-note{display:block;margin:0 22px 14px;font-weight:900}.spviet-retail-pos-shift-note textarea{margin-top:8px;min-height:82px;resize:vertical;font-weight:700;font-size:15px}.spviet-retail-pos-shift-staff{margin:0 22px 16px;padding:10px 12px;background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;color:#9a3412;font-weight:900}.spviet-retail-pos-modal-actions{display:flex;justify-content:flex-end;gap:12px;padding:16px 22px 20px;background:#fff;border-top:1px solid #e2e8f0}.spviet-retail-pos-modal-actions button{border:0;border-radius:14px;padding:13px 22px;font-weight:1000;cursor:pointer;background:#e2e8f0;color:#0f172a}.spviet-retail-pos-modal-actions button.primary{background:#10b981;color:#fff}.spviet-retail-pos-modal-actions button.danger{background:#ef4444;color:#fff}.spviet-retail-pos-modal-actions button:disabled{opacity:.65;cursor:wait}.spviet-retail-pos-ledger-kind{display:inline-flex;align-items:center;justify-content:center;min-width:60px;border-radius:999px;padding:7px 10px;color:#fff}.spviet-retail-pos-ledger-kind.in{background:#16a34a}.spviet-retail-pos-ledger-kind.out{background:#dc2626}.spviet-retail-pos-modal-pre{max-height:340px;overflow:auto;background:#0f172a;color:#e2e8f0;border-radius:12px;padding:12px;text-align:left}
@media(max-width:1100px){.spviet-retail-pos-shift-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.spviet-retail-pos-ledger-table{display:block;overflow:auto}.spviet-retail-pos-ledger-table table{min-width:860px}.spviet-retail-pos-shift-modal h2{font-size:20px}}

/* v2.8.5 Receipt choice + electronic QR receipt */
.spviet-retail-pos-receipt-choice{max-width:760px;margin:0 auto;text-align:center}
.spviet-retail-pos-receipt-choice h2{font-size:28px;margin:0 0 10px;color:#047857}
.receipt-choice-code{font-size:16px;margin-bottom:12px;color:#334155}
.receipt-choice-amounts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0 16px}
.receipt-choice-amounts>div{border:1px solid #dbeafe;background:#f8fafc;border-radius:18px;padding:16px 18px;min-height:96px;display:flex;flex-direction:column;justify-content:center;gap:8px}
.receipt-choice-amounts span{font-size:16px;color:#475569;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.receipt-choice-amounts b{font-size:34px;color:#0f766e;line-height:1.08;white-space:nowrap}
.receipt-choice-amounts .change{background:#fff7ed;border-color:#fed7aa}
.receipt-choice-amounts .change b{font-size:42px;color:#dc2626}
.receipt-choice-sync{min-height:24px;margin:8px 0 12px;font-weight:700}
.spviet-retail-pos-receipt-choice h3{font-size:22px;margin:16px 0 14px;color:#0f172a}
.receipt-choice-actions{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:12px;margin-top:10px}
.receipt-choice-actions button{border:0;border-radius:16px;padding:18px 14px;font-size:18px;font-weight:900;cursor:pointer;background:#e2e8f0;color:#0f172a;box-shadow:0 8px 18px rgba(15,23,42,.12)}
.receipt-choice-actions button.primary{background:linear-gradient(135deg,#10b981,#0f766e);color:#fff}
.receipt-choice-actions button.accent{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff}
.spviet-retail-pos-e-receipt-modal{text-align:center;max-width:620px;margin:0 auto}
.spviet-retail-pos-e-receipt-modal h2{font-size:28px;margin:0 0 10px;color:#0f766e}
.spviet-retail-pos-e-qr{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#f8fafc;border:1px dashed #93c5fd;border-radius:22px;padding:18px;margin:16px auto;max-width:340px}
.spviet-retail-pos-e-qr img{width:260px;height:260px;max-width:100%;background:#fff;border:10px solid #fff;border-radius:14px;box-shadow:0 8px 24px rgba(15,23,42,.15)}
.spviet-retail-pos-e-qr a{font-weight:900;color:#1d4ed8;text-decoration:none;word-break:break-all}
.spviet-retail-pos-e-expire{font-size:14px;color:#64748b}
@media(max-width:760px){.receipt-choice-amounts,.receipt-choice-actions{grid-template-columns:1fr}.receipt-choice-amounts b{font-size:28px}.receipt-choice-amounts .change b{font-size:34px}}


/* v2.8.73 Payment screen mode - manual / auto */
.spviet-retail-pos-payment-auto [data-spviet-pos-tendered-wrap]{display:none!important}
.spviet-retail-pos-payment-auto .spviet-retail-pos-change-row{display:none!important}
.spviet-retail-pos-payment-auto .spviet-retail-pos-change-method{display:none!important}
.spviet-retail-pos-auto-pay-modal{position:relative;overflow:hidden;text-align:center;padding:8px 4px 4px}
.spviet-retail-pos-auto-pay-modal:before{content:"";position:absolute;inset:-80px -80px auto auto;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(16,185,129,.18),rgba(11,99,206,.04) 66%,transparent 70%);pointer-events:none}
.spviet-retail-pos-auto-pay-modal .auto-pay-badge{display:inline-flex;align-items:center;justify-content:center;padding:8px 14px;border-radius:999px;background:#ecfdf5;color:#047857;font-weight:950;letter-spacing:.08em;font-size:12px;margin-bottom:8px}
.spviet-retail-pos-auto-pay-modal h2{font-size:30px!important;line-height:1.18!important;margin:6px 0 6px!important;color:#0f172a!important;font-weight:1000!important}
.spviet-retail-pos-auto-pay-modal p{margin:0 0 14px!important;color:#64748b!important;font-size:16px!important;font-weight:800!important}
.spviet-retail-pos-auto-pay-modal .auto-pay-total{margin:10px auto 18px;max-width:420px;border:1px solid #dbeafe;background:linear-gradient(135deg,#f8fafc,#eff6ff);border-radius:20px;padding:14px 18px;display:flex;justify-content:space-between;align-items:center;gap:16px;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.spviet-retail-pos-auto-pay-modal .auto-pay-total span{font-weight:900;color:#475569}.spviet-retail-pos-auto-pay-modal .auto-pay-total b{font-size:30px;color:#0f766e;font-weight:1000}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:720px;margin:0 auto}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions button{border:0;border-radius:24px;min-height:116px;padding:18px 14px;color:#fff;font-size:22px;font-weight:1000;cursor:pointer;box-shadow:0 18px 34px rgba(15,23,42,.18);transform:translateY(0);transition:transform .14s ease,box-shadow .14s ease,filter .14s ease;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions button:hover,.spviet-retail-pos-auto-pay-modal .auto-pay-actions button:focus{transform:translateY(-2px);box-shadow:0 24px 44px rgba(15,23,42,.24);filter:saturate(1.08);outline:0}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions button span{font-size:34px;line-height:1}.spviet-retail-pos-auto-pay-modal .auto-pay-actions button b{font-size:22px;line-height:1.15}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions .cash{background:linear-gradient(135deg,#10b981,#047857)}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions .card{background:linear-gradient(135deg,#2563eb,#1d4ed8)}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions .qr{background:linear-gradient(135deg,#7c3aed,#4f46e5)}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions .cancel{background:linear-gradient(135deg,#ef4444,#b91c1c)}
@media(max-width:640px){.spviet-retail-pos-auto-pay-modal h2{font-size:22px!important}.spviet-retail-pos-auto-pay-modal .auto-pay-actions{grid-template-columns:1fr}.spviet-retail-pos-auto-pay-modal .auto-pay-actions button{min-height:88px}.spviet-retail-pos-auto-pay-modal .auto-pay-total{flex-direction:column;gap:6px}}


/* v2.8.74 Payment receipt: add received amount card */
.spviet-retail-pos-receipt-choice .receipt-choice-amounts-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.spviet-retail-pos-receipt-choice .receipt-choice-amounts-3 .received{background:linear-gradient(135deg,#ecfeff,#f0fdfa);border:1px solid #67e8f9}
.spviet-retail-pos-receipt-choice .receipt-choice-amounts-3 .received b{color:#0f766e}
@media(max-width:720px){.spviet-retail-pos-receipt-choice .receipt-choice-amounts-3{grid-template-columns:1fr}}
/* v2.8.75 Auto cash machine confirmation */
.spviet-retail-pos-cash-machine-modal{position:relative;overflow:hidden;text-align:center;padding:8px 4px 2px}
.spviet-retail-pos-cash-machine-modal:before{content:"";position:absolute;inset:-90px auto auto -80px;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(16,185,129,.16),rgba(37,99,235,.06) 65%,transparent 72%);pointer-events:none}
.spviet-retail-pos-cash-machine-modal .cash-machine-badge{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:999px;background:#ecfdf5;color:#047857;font-weight:1000;letter-spacing:.08em;font-size:12px;margin-bottom:8px}
.spviet-retail-pos-cash-machine-modal h2{font-size:28px!important;line-height:1.18!important;margin:8px 0 14px!important;color:#0f172a!important;font-weight:1000!important}
.spviet-retail-pos-cash-machine-modal .cash-machine-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 auto 16px;max-width:860px}
.spviet-retail-pos-cash-machine-modal .cash-machine-summary>div{border:1px solid #dbeafe;background:linear-gradient(135deg,#f8fafc,#eff6ff);border-radius:20px;padding:14px 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.spviet-retail-pos-cash-machine-modal .cash-machine-summary span{display:block;color:#475569;font-weight:900;font-size:13px;margin-bottom:6px}.spviet-retail-pos-cash-machine-modal .cash-machine-summary b{font-size:26px;font-weight:1000;color:#0f766e}.spviet-retail-pos-cash-machine-modal .cash-machine-summary>div:nth-child(3) b{color:#dc2626}
.cash-machine-denom-table{width:100%;max-width:760px;margin:0 auto;border-collapse:separate;border-spacing:0;overflow:hidden;border-radius:16px;border:1px solid #dbe5f1;background:#fff;box-shadow:0 14px 34px rgba(15,23,42,.10)}
.cash-machine-denom-table th{background:#0f766e;color:#fff;font-weight:1000;padding:10px 12px;text-align:center}.cash-machine-denom-table td{padding:9px 12px;border-top:1px solid #e2e8f0;text-align:right;font-size:16px;font-weight:850}.cash-machine-denom-table td:first-child{text-align:left;color:#0f172a}.cash-machine-denom-table tr:nth-child(even) td{background:#f8fafc}
.spviet-retail-pos-cash-machine-modal .cash-machine-status{margin:12px auto;color:#64748b;font-weight:800;font-size:13px;max-width:760px}.spviet-retail-pos-cash-machine-modal .cash-machine-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:14px}.spviet-retail-pos-cash-machine-modal .cash-machine-actions button{border:0;border-radius:18px;min-width:220px;padding:16px 22px;color:#fff;font-size:18px;font-weight:1000;cursor:pointer;box-shadow:0 16px 34px rgba(15,23,42,.18)}.spviet-retail-pos-cash-machine-modal .cash-machine-actions .cancel{background:linear-gradient(135deg,#ef4444,#b91c1c)}.spviet-retail-pos-cash-machine-modal .cash-machine-actions .confirm{background:linear-gradient(135deg,#10b981,#047857)}.spviet-retail-pos-cash-machine-modal .cash-machine-actions .confirm:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.2)}
@media(max-width:720px){.spviet-retail-pos-cash-machine-modal .cash-machine-summary{grid-template-columns:1fr}.spviet-retail-pos-cash-machine-modal .cash-machine-actions{flex-direction:column}.spviet-retail-pos-cash-machine-modal .cash-machine-actions button{width:100%}}
/* v2.8.77 Auto payment disabled/realtime QA */
.spviet-retail-pos-auto-pay-modal .auto-pay-actions button.disabled{filter:grayscale(.35) brightness(.86);opacity:.68;position:relative;cursor:not-allowed;box-shadow:none!important}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions button.disabled:hover,.spviet-retail-pos-auto-pay-modal .auto-pay-actions button.disabled:focus{transform:none;filter:grayscale(.35) brightness(.86)}
.spviet-retail-pos-auto-pay-modal .auto-pay-actions button em{font-style:normal;font-size:12px;border-radius:999px;padding:4px 10px;background:rgba(255,255,255,.22);font-weight:1000;letter-spacing:.04em;text-transform:uppercase}
.spviet-retail-pos-auto-pay-locked{text-align:center;padding:10px 20px}.spviet-retail-pos-auto-pay-locked h2{color:#dc2626!important}.spviet-retail-pos-auto-pay-locked p{font-size:16px;font-weight:850;color:#334155}
.spviet-retail-pos-cash-machine-modal[data-cash-status="receiving"] .cash-machine-summary>div:nth-child(2){animation:spvietCashPulse 1.2s ease-in-out infinite}
@keyframes spvietCashPulse{0%,100%{box-shadow:0 0 0 rgba(16,185,129,0)}50%{box-shadow:0 0 0 6px rgba(16,185,129,.10)}}
.spviet-retail-pos-cash-machine-modal .cash-machine-actions .retry{background:linear-gradient(135deg,#2563eb,#1d4ed8)}.spviet-retail-pos-cash-machine-modal .cash-machine-actions .safe-exit{background:linear-gradient(135deg,#f59e0b,#b45309);min-width:250px}
.spviet-retail-pos-cash-machine-modal[data-cash-status="timeout"] .cash-machine-status{color:#dc2626;font-weight:1000}
.spviet-retail-pos-cash-commit-modal{text-align:center;padding:8px 16px}.spviet-retail-pos-cash-commit-modal h2{color:#0f172a!important}.spviet-retail-pos-cash-commit-modal p{font-size:15px;font-weight:850;color:#475569}.spviet-retail-pos-cash-commit-modal .cash-commit-change{max-width:380px;margin:12px auto;padding:16px;border:1px solid #fecaca;background:#fff7ed;border-radius:18px;display:flex;justify-content:space-between;align-items:center}.spviet-retail-pos-cash-commit-modal .cash-commit-change b{font-size:28px;color:#dc2626}.spviet-retail-pos-cash-commit-modal label{display:block;text-align:left;max-width:420px;margin:12px auto;font-weight:900;color:#334155}.spviet-retail-pos-cash-commit-modal input{width:100%;font-size:20px;padding:12px 14px;border:1px solid #cbd5e1;border-radius:14px;margin-top:6px;text-transform:uppercase}

/* v2.8.79 Payment Provider QA / webcam / provider bridge modal */
.spviet-retail-pos-provider-payment-modal{position:relative;overflow:hidden;text-align:center;padding:8px 4px 2px}
.spviet-retail-pos-provider-payment-modal:before{content:"";position:absolute;inset:-80px -80px auto auto;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,.16),rgba(16,185,129,.05) 66%,transparent 72%);pointer-events:none}
.spviet-retail-pos-provider-payment-modal .auto-pay-badge{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:999px;background:#ecfdf5;color:#047857;font-weight:1000;letter-spacing:.08em;font-size:12px;margin-bottom:8px}
.spviet-retail-pos-provider-payment-modal h2{font-size:30px!important;line-height:1.18!important;margin:8px 0 8px!important;color:#0f172a!important;font-weight:1000!important}
.spviet-retail-pos-provider-payment-modal p{margin:0 0 14px!important;color:#64748b!important;font-size:16px!important;font-weight:850!important}
.spviet-retail-pos-provider-payment-modal .auto-pay-total{margin:10px auto 18px;max-width:420px;border:1px solid #dbeafe;background:linear-gradient(135deg,#f8fafc,#eff6ff);border-radius:20px;padding:14px 18px;display:flex;justify-content:space-between;align-items:center;gap:16px;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.spviet-retail-pos-provider-payment-modal .auto-pay-total span{font-weight:900;color:#475569}.spviet-retail-pos-provider-payment-modal .auto-pay-total b{font-size:30px;color:#0f766e;font-weight:1000}
.provider-payment-grid{display:grid;grid-template-columns:1fr;gap:10px;max-width:720px;margin:0 auto 16px;text-align:left}
.provider-payment-grid>div{border:1px solid #dbe5f1;background:#fff;border-radius:16px;padding:12px 14px;box-shadow:0 10px 24px rgba(15,23,42,.08)}
.provider-payment-grid span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#64748b;font-weight:1000;margin-bottom:4px}.provider-payment-grid b{display:block;color:#0f172a;font-weight:1000;word-break:break-all}
.spviet-retail-pos-provider-payment-modal[data-provider-status="paid"] .provider-payment-grid>div:first-child{border-color:#86efac;background:#f0fdf4}.spviet-retail-pos-provider-payment-modal[data-provider-status="paid"] .provider-payment-grid>div:first-child b{color:#047857}
.spviet-retail-pos-provider-payment-modal[data-provider-status="failed"] .provider-payment-grid>div:first-child,.spviet-retail-pos-provider-payment-modal[data-provider-status="timeout"] .provider-payment-grid>div:first-child{border-color:#fecaca;background:#fef2f2}.spviet-retail-pos-provider-payment-modal[data-provider-status="failed"] .provider-payment-grid>div:first-child b,.spviet-retail-pos-provider-payment-modal[data-provider-status="timeout"] .provider-payment-grid>div:first-child b{color:#dc2626}
.spviet-retail-pos-provider-payment-modal .cash-machine-actions{display:flex;gap:14px;justify-content:center;margin-top:14px}.spviet-retail-pos-provider-payment-modal .cash-machine-actions button{border:0;border-radius:18px;min-width:200px;padding:16px 22px;color:#fff;font-size:18px;font-weight:1000;cursor:pointer;box-shadow:0 16px 34px rgba(15,23,42,.18)}.spviet-retail-pos-provider-payment-modal .cash-machine-actions .cancel{background:linear-gradient(135deg,#ef4444,#b91c1c)}.spviet-retail-pos-provider-payment-modal .cash-machine-actions .retry{background:linear-gradient(135deg,#2563eb,#1d4ed8)}.spviet-retail-pos-provider-payment-modal .cash-machine-actions .confirm{background:linear-gradient(135deg,#10b981,#047857)}.spviet-retail-pos-provider-payment-modal .cash-machine-actions .confirm:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.2)}
@media(max-width:720px){.spviet-retail-pos-provider-payment-modal .cash-machine-actions{flex-direction:column}.spviet-retail-pos-provider-payment-modal .cash-machine-actions button{width:100%}}

.spviet-retail-pos-webcam-panel{margin-top:12px;border:1px solid #d8e7e4;border-radius:18px;background:#f7fbfa;padding:10px;min-height:220px;display:flex;flex-direction:column;gap:10px}
.spviet-retail-pos-webcam-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.spviet-retail-pos-webcam-head b{display:block;font-size:15px;color:#0d4f4f}
.spviet-retail-pos-webcam-head small{display:block;font-size:12px;color:#567}
.spviet-retail-pos-webcam-refresh{border:0;background:#0f766e;color:#fff;border-radius:12px;width:36px;height:36px;font-size:18px;cursor:pointer}
.spviet-retail-pos-webcam-body{position:relative;border-radius:14px;overflow:hidden;background:#081016;min-height:190px}
.spviet-retail-pos-webcam-body video{display:block;width:100%;height:260px;object-fit:cover;background:#081016}
.spviet-retail-pos-webcam-panel.is-mirrored .spviet-retail-pos-webcam-body video{transform:scaleX(-1)}
.spviet-retail-pos-webcam-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:14px;text-align:center;color:#d7e9ea;font-size:13px;background:linear-gradient(180deg,rgba(8,16,22,.35),rgba(8,16,22,.6))}
.spviet-retail-pos-webcam-body video[src-object],
.spviet-retail-pos-webcam-body video:not([src=""]) + .spviet-retail-pos-webcam-placeholder{display:none}

/* v2.8.83 POS Main UI Optimization + Cashier Workflow Polish Pro */
.spviet-retail-pos-cashier-status-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:-6px 0 12px}
.spviet-retail-pos-status-card{display:flex;align-items:center;gap:9px;min-width:0;background:#fff;border:1px solid #dbe7ee;border-radius:16px;padding:10px 12px;box-shadow:0 8px 22px rgba(15,23,42,.06)}
.spviet-retail-pos-status-card span{width:12px;height:12px;border-radius:999px;background:#94a3b8;color:transparent;box-shadow:0 0 0 5px rgba(148,163,184,.12);flex:0 0 auto}
.spviet-retail-pos-status-card b{font-size:13px;white-space:nowrap;color:#0f172a}
.spviet-retail-pos-status-card small{font-size:12px;color:#64748b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.spviet-retail-pos-status-card.is-online span{background:#22c55e;box-shadow:0 0 0 5px rgba(34,197,94,.14)}
.spviet-retail-pos-status-card.is-warning span{background:#f59e0b;box-shadow:0 0 0 5px rgba(245,158,11,.16)}
.spviet-retail-pos-status-card.is-offline span{background:#ef4444;box-shadow:0 0 0 5px rgba(239,68,68,.16)}
.spviet-retail-pos-status-card.is-muted{opacity:.7}
.spviet-retail-pos-cashier-mini-board{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0 2px}
.spviet-retail-pos-cashier-mini-board div{border:1px solid #dbeafe;border-radius:14px;background:linear-gradient(180deg,#f8fbff,#eef6ff);padding:9px 8px;text-align:center}
.spviet-retail-pos-cashier-mini-board span{display:block;font-size:11px;color:#64748b;font-weight:800;margin-bottom:3px}
.spviet-retail-pos-cashier-mini-board b{display:block;font-size:18px;color:#0f766e;line-height:1.1}
.spviet-retail-pos-payable-highlight{background:linear-gradient(90deg,#f0fdfa,#fff);border-radius:14px;padding:12px!important;border:1px solid #b6f0df!important}
.spviet-retail-pos-payable-highlight strong{font-size:30px!important;letter-spacing:.02em}
.spviet-retail-pos-toast-stack{position:fixed;right:22px;bottom:22px;z-index:2147483641;display:flex;flex-direction:column;gap:10px;max-width:360px;pointer-events:none}
.spviet-retail-pos-toast{pointer-events:auto;position:relative;background:#fff;border:1px solid #dbe7ee;border-left:6px solid #0ea5e9;border-radius:16px;padding:12px 42px 12px 14px;box-shadow:0 18px 45px rgba(15,23,42,.18);animation:spvietToastIn .18s ease-out both}
.spviet-retail-pos-toast.success{border-left-color:#10b981}.spviet-retail-pos-toast.warning{border-left-color:#f59e0b}.spviet-retail-pos-toast.error{border-left-color:#ef4444}
.spviet-retail-pos-toast b{display:block;font-size:14px;color:#0f172a}.spviet-retail-pos-toast span{display:block;font-size:13px;color:#475569;margin-top:3px;line-height:1.35}.spviet-retail-pos-toast button{position:absolute;right:8px;top:8px;width:26px;height:26px;border:0;border-radius:50%;background:#f1f5f9;color:#64748b;font-weight:900;cursor:pointer}
.spviet-retail-pos-toast.is-out{animation:spvietToastOut .18s ease-in both}@keyframes spvietToastIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@keyframes spvietToastOut{to{opacity:0;transform:translateY(8px) scale(.98)}}
.spviet-retail-pos-cart-table-v27 th{box-shadow:0 2px 0 rgba(15,23,42,.04)}
.spviet-retail-pos-cart-table-v27 tr.spviet-retail-pos-cart-table-row td:first-child{border-left:3px solid transparent}.spviet-retail-pos-cart-table-v27 tr.spviet-retail-pos-cart-table-row:hover td:first-child{border-left-color:#0f766e}
.spviet-retail-pos-pay-side{display:flex;flex-direction:column;max-height:calc(100vh - 128px);overflow:auto}.spviet-retail-pos-pay{position:sticky;bottom:8px;z-index:5}
@media(max-width:1280px){.spviet-retail-pos-cashier-status-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.spviet-retail-pos-status-card{padding:8px 10px}.spviet-retail-pos-app-main{grid-template-columns:minmax(0,1fr) 380px!important}}
@media(max-width:900px){.spviet-retail-pos-cashier-status-strip{grid-template-columns:1fr}.spviet-retail-pos-toast-stack{left:12px;right:12px;bottom:12px;max-width:none}}

/* v2.8.84 POS Product Search / Fast Product Grid UX Pro */
.spviet-retail-pos-fast-grid-panel{margin:10px 0 12px;border:1px solid #d9ebe9;border-radius:18px;background:linear-gradient(180deg,#ffffff,#f5fbfa);box-shadow:0 8px 22px rgba(8,72,68,.08);padding:12px;display:flex;flex-direction:column;gap:10px}
.spviet-retail-pos-fast-grid-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.spviet-retail-pos-fast-grid-head b{display:block;font-size:15px;color:#0f524f}
.spviet-retail-pos-fast-grid-head small{display:block;font-size:12px;color:#607577}
.spviet-retail-pos-fast-grid-actions{display:flex;gap:8px;align-items:center}
.spviet-retail-pos-fast-grid-actions button{border:0;border-radius:12px;background:#e6f4f1;color:#0f524f;font-weight:800;padding:8px 10px;cursor:pointer}
.spviet-retail-pos-fast-grid-actions button:hover{background:#d1eeea}
.spviet-retail-pos-fast-grid-cats{display:flex;gap:8px;overflow:auto;padding-bottom:2px;scrollbar-width:thin}
.spviet-retail-pos-fast-grid-cats button{white-space:nowrap;border:1px solid #d6e8e5;background:#fff;border-radius:999px;padding:8px 12px;font-weight:800;color:#255;cursor:pointer;box-shadow:0 3px 10px rgba(0,0,0,.04)}
.spviet-retail-pos-fast-grid-cats button.active{background:#0f766e;color:#fff;border-color:#0f766e}
.spviet-retail-pos-fast-grid-cats small{opacity:.78;margin-left:4px}
.spviet-retail-pos-fast-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px;max-height:286px;overflow:auto;padding-right:3px}
.spviet-retail-pos-fast-grid-card{position:relative;min-height:172px;border:1px solid #ddebea;background:#fff;border-radius:16px;padding:8px;display:flex;flex-direction:column;gap:5px;text-align:left;cursor:pointer;box-shadow:0 6px 14px rgba(0,0,0,.055);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}
.spviet-retail-pos-fast-grid-card:hover,.spviet-retail-pos-fast-grid-card:focus{transform:translateY(-1px);border-color:#0f766e;box-shadow:0 10px 22px rgba(15,118,110,.16);outline:none}
.spviet-retail-pos-fast-grid-card .pic{height:72px;border-radius:12px;background:#eef6f5;display:flex;align-items:center;justify-content:center;overflow:hidden}
.spviet-retail-pos-fast-grid-card img{width:100%;height:100%;object-fit:cover;display:block}
.spviet-retail-pos-fast-grid-card .name{font-size:13px;line-height:1.24;font-weight:900;color:#18393d;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:32px}
.spviet-retail-pos-fast-grid-card .meta,.spviet-retail-pos-fast-grid-card .stock{font-size:11px;color:#6c7f82;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.spviet-retail-pos-fast-grid-card strong{margin-top:auto;font-size:15px;color:#c2410c;font-weight:950}
.spviet-retail-pos-fast-grid-card em{position:absolute;top:8px;left:8px;background:#f59e0b;color:#fff;border-radius:999px;padding:3px 7px;font-size:10px;font-style:normal;font-weight:900}
.spviet-retail-pos-fast-grid-loading,.spviet-retail-pos-fast-grid-empty{grid-column:1/-1;background:#f8fbfb;border:1px dashed #cddfdf;border-radius:14px;padding:18px;text-align:center;color:#617477;font-weight:700}
@media (max-width: 980px){.spviet-retail-pos-fast-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));max-height:238px}.spviet-retail-pos-fast-grid-card{min-height:156px}.spviet-retail-pos-fast-grid-card .pic{height:60px}}

/* v2.8.85 POS Cart / Quantity / Discount Touch UX Pro */
.spviet-retail-pos-cart-table .name{position:relative;min-width:210px}
.spviet-retail-pos-line-edit-btn{margin-top:6px;border:0;border-radius:999px;background:#0f766e;color:#fff;padding:7px 12px;font-weight:800;cursor:pointer;box-shadow:0 6px 14px rgba(15,118,110,.18)}
.spviet-retail-pos-qty-touch{display:flex;gap:4px;align-items:center;justify-content:center;flex-wrap:nowrap}
.spviet-retail-pos-qty-touch button{min-width:38px;min-height:38px;border-radius:12px;border:1px solid #cfe0df;background:#fff;font-size:16px;font-weight:900;cursor:pointer}
.spviet-retail-pos-qty-touch button[data-inc-fast],.spviet-retail-pos-qty-touch button[data-inc]{background:#e7f8ef;color:#096b39;border-color:#bce8cc}
.spviet-retail-pos-qty-touch button[data-dec-fast],.spviet-retail-pos-qty-touch button[data-dec]{background:#fff3f0;color:#b42318;border-color:#ffd4cc}
.spviet-retail-pos-qty-touch input{width:70px;text-align:center;font-size:17px;font-weight:900;border-radius:12px;border:1px solid #cfe0df;min-height:38px}
.spviet-retail-pos-line-editor{display:grid;gap:16px;min-width:min(860px,92vw)}
.spviet-retail-pos-line-editor-head{display:grid;grid-template-columns:94px 1fr;gap:16px;align-items:center;padding:14px;border-radius:20px;background:linear-gradient(135deg,#edfdf9,#eef5ff)}
.spviet-retail-pos-line-editor-head .thumb{width:94px;height:94px;border-radius:18px;overflow:hidden;background:#fff;display:flex;align-items:center;justify-content:center;color:#789;font-weight:900}
.spviet-retail-pos-line-editor-head img{width:100%;height:100%;object-fit:cover}
.spviet-retail-pos-line-editor-head p{margin:0 0 4px;color:#0f766e;font-weight:900;letter-spacing:.06em;font-size:12px}
.spviet-retail-pos-line-editor-head h2{margin:0;font-size:22px;color:#0b2533}
.spviet-retail-pos-line-editor-head small{display:block;margin-top:4px;color:#667085}
.spviet-retail-pos-line-editor-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px}
.spviet-retail-pos-line-editor-grid label,.spviet-retail-pos-line-editor-serial{display:grid;gap:6px;color:#344054;font-size:13px;font-weight:800}
.spviet-retail-pos-line-editor-grid input,.spviet-retail-pos-line-editor-grid select,.spviet-retail-pos-line-editor-serial textarea{border:1px solid #cfe0df;border-radius:14px;padding:12px;font-size:16px;background:#fff}
.spviet-retail-pos-line-editor-grid input[data-line-edit-qty],.spviet-retail-pos-line-editor-grid input[data-line-edit-discount]{font-size:22px;font-weight:900;text-align:center;background:#fffbe6;border-color:#ffd966}
.spviet-retail-pos-line-editor-quick{border:1px solid #e1eceb;border-radius:18px;padding:12px;background:#fbfefe}
.spviet-retail-pos-line-editor-quick b{display:block;margin-bottom:8px;color:#0b4f4a}
.spviet-retail-pos-line-editor-quick div{display:flex;gap:8px;flex-wrap:wrap}
.spviet-retail-pos-line-editor-quick button{border:0;border-radius:14px;background:#eef5ff;color:#12355b;min-width:76px;min-height:46px;font-weight:900;font-size:16px;cursor:pointer}
.spviet-retail-pos-line-editor-total{display:flex;align-items:center;justify-content:space-between;border-radius:18px;padding:16px;background:#0f766e;color:#fff}
.spviet-retail-pos-line-editor-total span{font-weight:800;opacity:.9}.spviet-retail-pos-line-editor-total strong{font-size:26px}
.spviet-retail-pos-line-editor-actions{justify-content:flex-end}.spviet-retail-pos-line-editor-actions .danger{background:#dc2626;color:#fff;border-color:#dc2626}
@media(max-width:900px){.spviet-retail-pos-line-editor-grid{grid-template-columns:repeat(2,minmax(140px,1fr))}.spviet-retail-pos-line-editor-head{grid-template-columns:72px 1fr}.spviet-retail-pos-line-editor-head .thumb{width:72px;height:72px}}

.spviet-retail-pos-header-staff{gap:6px;align-items:center}
.spviet-retail-pos-staff-switch{border:0;border-radius:999px;background:#e7f7f4;color:#0f766e;font-weight:800;padding:4px 9px;cursor:pointer;font-size:11px}
.spviet-retail-pos-staff-login-modal{min-width:min(520px,92vw);display:grid;gap:12px}
.spviet-retail-pos-staff-login-modal h2{margin:0;color:#0f4f4a;font-size:24px}
.spviet-retail-pos-staff-login-modal p{margin:0;color:#52666b}
.spviet-retail-pos-staff-login-modal label{display:grid;gap:6px;font-weight:800;color:#17323a}
.spviet-retail-pos-staff-login-modal select,.spviet-retail-pos-staff-login-modal input{border:1px solid #cfe3e0;border-radius:14px;padding:12px 14px;font-size:18px;background:#fff}
.spviet-retail-pos-staff-login-note{min-height:20px;color:#b42318!important;font-weight:800}
.spviet-retail-pos-manager-override-modal{border-top:6px solid #f59e0b}

/* v2.8.96 Local POS Indexed Search + POS layout restoration
   - Không hiển thị gợi ý nhanh mặc định.
   - Trả lại dock tiện ích bên dưới, ẩn mặc định.
   - Khóa scroll toàn màn hình; chỉ giỏ hàng được cuộn khi nhiều sản phẩm. */
.spviet-retail-pos-fast-grid-panel[hidden]{display:none!important}
.spviet-retail-pos-app{height:100dvh!important;max-height:100dvh!important;min-height:0!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;padding:6px!important;gap:6px!important;box-sizing:border-box!important}
.spviet-retail-pos-fullscreen-page,.spviet-retail-pos-fullscreen-page body{overflow:hidden!important;height:100dvh!important;max-height:100dvh!important}
.spviet-retail-pos-app-header,.spviet-retail-pos-cashier-status-strip{flex:0 0 auto!important}
.spviet-retail-pos-app-main.spviet-retail-pos-compact-layout{flex:1 1 auto!important;min-height:0!important;height:auto!important;overflow:hidden!important;display:grid!important;grid-template-columns:minmax(0,1fr) clamp(330px,22vw,390px)!important;grid-template-rows:minmax(0,1fr) auto!important;gap:8px!important;align-items:stretch!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important}
.spviet-retail-pos-order-side,.spviet-retail-pos-pay-side{min-height:0!important;max-height:100%!important;overflow:hidden!important;box-sizing:border-box!important}
.spviet-retail-pos-order-side{display:flex!important;flex-direction:column!important}
.spviet-retail-pos-scan-row-v26{flex:0 0 auto!important;grid-template-columns:170px minmax(260px,1fr) auto!important;gap:8px!important;align-items:center!important}
.spviet-retail-pos-bill-tabs-inline{max-width:none!important;overflow:visible!important;flex-wrap:nowrap!important;gap:7px!important}
.spviet-retail-pos-bill-tabs-inline .spviet-retail-pos-fast-grid-open{background:#eefaf7!important;border:1px solid #9de2d7!important;color:#0f766e!important;font-weight:900!important}
.spviet-retail-pos-bill-tabs-inline .spviet-retail-pos-fast-grid-open.active{background:#0f766e!important;color:#fff!important;border-color:#0f766e!important}
.spviet-retail-pos-results{flex:0 0 auto!important;max-height:190px!important;overflow:auto!important}
.spviet-retail-pos-fast-grid-panel{flex:0 0 auto!important;max-height:250px!important;overflow:hidden!important;margin:6px 0!important}
.spviet-retail-pos-fast-grid{max-height:152px!important;overflow:auto!important}
.spviet-retail-pos-fast-grid-cats{overflow:hidden!important;flex-wrap:wrap!important;max-height:42px!important}
.spviet-retail-pos-cart{flex:1 1 auto!important;min-height:0!important;overflow:auto!important;overscroll-behavior:contain!important;border-top:1px solid #e2e8f0!important}
.spviet-retail-pos-cart-table-v27{min-width:0!important;width:100%!important;table-layout:auto!important}
.spviet-retail-pos-cart-table-v27 th,.spviet-retail-pos-cart-table-v27 td{padding:8px 10px!important}
.spviet-retail-pos-cart-table-v27 td.name{min-width:220px!important;white-space:normal!important}
.spviet-retail-pos-qty-touch{gap:5px!important;justify-content:center!important}
.spviet-retail-pos-qty-touch button{min-width:38px!important;min-height:38px!important}
.spviet-retail-pos-pay-side{display:flex!important;flex-direction:column!important;gap:7px!important}
.spviet-retail-pos-pay-side .spviet-retail-pos-terminal-head,.spviet-retail-pos-pay-side .spviet-retail-pos-customer-box,.spviet-retail-pos-pay-side .spviet-retail-pos-summary,.spviet-retail-pos-pay-side .spviet-retail-pos-cashier-mini-board,.spviet-retail-pos-pay-side .spviet-retail-pos-total-row,.spviet-retail-pos-pay-side .spviet-retail-pos-change-row,.spviet-retail-pos-pay-side .spviet-retail-pos-change-method,.spviet-retail-pos-pay-side .spviet-retail-pos-pay,.spviet-retail-pos-pay-side .spviet-retail-pos-cashdrawer,.spviet-retail-pos-pay-side .spviet-retail-pos-last-order{flex:0 0 auto!important}
.spviet-retail-pos-webcam-panel{flex:1 1 auto!important;min-height:110px!important;max-height:none!important;overflow:hidden!important}
.spviet-retail-pos-webcam-body{height:100%!important;min-height:110px!important;overflow:hidden!important}
.spviet-retail-pos-webcam-body video,.spviet-retail-pos-webcam-placeholder{width:100%!important;height:100%!important;object-fit:cover!important}
.spviet-retail-pos-action-dock{grid-column:1/-1!important;grid-row:2!important;position:relative!important;z-index:20!important;min-height:40px!important;max-height:190px!important;overflow:hidden!important;align-self:end!important}
.spviet-retail-pos-action-dock.is-collapsed{height:42px!important;min-height:42px!important;max-height:42px!important;background:transparent!important;border-color:transparent!important;box-shadow:none!important;pointer-events:none!important}
.spviet-retail-pos-action-dock.is-collapsed .spviet-retail-pos-action-toggle{pointer-events:auto!important;display:flex!important;visibility:visible!important;opacity:1!important}
.spviet-retail-pos-action-dock.is-collapsed .spviet-retail-pos-action-dock-inner{display:none!important}
@media(max-width:1366px){.spviet-retail-pos-app-main.spviet-retail-pos-compact-layout{grid-template-columns:minmax(0,1fr) 330px!important}.spviet-retail-pos-scan-row-v26{grid-template-columns:150px minmax(220px,1fr) auto!important}.spviet-retail-pos-cart-table{font-size:13px!important}.spviet-retail-pos-cart-table-v27 td.name{min-width:190px!important}.spviet-retail-pos-summary{gap:6px!important}.spviet-retail-pos-pay{min-height:54px!important}}
@media(max-width:980px){.spviet-retail-pos-app{height:auto!important;max-height:none!important;overflow:auto!important}.spviet-retail-pos-app-main.spviet-retail-pos-compact-layout{display:flex!important;flex-direction:column!important;overflow:visible!important}.spviet-retail-pos-pay-side{min-height:auto!important}.spviet-retail-pos-action-dock{position:sticky!important;bottom:0!important}}


/* v2.8.97 POS Layout Real-device QA + Offline Search Evidence Auto-save
   - Dock tiện ích chỉ nằm trong khu bên trái, không chiếm khu thanh toán/camera.
   - Bỏ header Online/thông tin cửa hàng ở panel phải để camera có thêm chiều cao.
   - Giảm giá/Dùng điểm/Ghi chú nằm trong khung Tiện Ích, ẩn mặc định. */
.spviet-retail-pos-app-main.spviet-retail-pos-compact-layout{grid-template-columns:minmax(0,1fr) clamp(330px,22vw,390px)!important;grid-template-rows:minmax(0,1fr) auto!important;overflow:hidden!important}
.spviet-retail-pos-pay-side{grid-column:2!important;grid-row:1 / span 2!important;min-height:0!important;padding-top:0!important}
.spviet-retail-pos-action-dock{grid-column:1!important;grid-row:2!important;width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;max-height:calc(48px + (var(--spviet-pos-dock-rows,2) * 58px) + 46px)!important;border-radius:14px!important;background:#fff!important}
.spviet-retail-pos-action-dock.is-collapsed{height:34px!important;min-height:34px!important;max-height:34px!important;background:transparent!important;border-color:transparent!important;box-shadow:none!important;padding:0 12px 4px!important}
.spviet-retail-pos-action-toggle{height:24px!important;border-radius:0 0 12px 12px!important;box-shadow:0 8px 20px rgba(59,130,246,.12)!important}
.spviet-retail-pos-action-dock-inner{min-height:0!important;overflow:hidden!important}
.spviet-retail-pos-action-tabs{margin:0 0 8px!important;flex-wrap:wrap!important}
.spviet-retail-pos-action-panel{grid-template-columns:repeat(var(--spviet-pos-dock-columns,3),minmax(180px,1fr))!important;grid-auto-rows:minmax(52px,auto)!important;max-height:calc((var(--spviet-pos-dock-rows,2) * 58px) + ((var(--spviet-pos-dock-rows,2) - 1) * 10px))!important;overflow:auto!important}
.spviet-retail-pos-action-panel button{min-height:52px!important}
.spviet-retail-pos-terminal-head{display:none!important}
.spviet-retail-pos-customer-box{margin-top:0!important}
.spviet-retail-pos-utility-collapse{border:1px solid #dbeafe;border-radius:14px;background:#f8fbff;overflow:hidden;flex:0 0 auto!important}
.spviet-retail-pos-utility-toggle{width:100%;border:0;background:linear-gradient(135deg,#eff6ff,#ecfdf5);color:#0f4f4a;min-height:44px;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;font-weight:950;cursor:pointer}
.spviet-retail-pos-utility-toggle b{transition:transform .15s ease;font-size:17px}.spviet-retail-pos-utility-collapse:not(.is-collapsed) .spviet-retail-pos-utility-toggle b{transform:rotate(180deg)}
.spviet-retail-pos-utility-body{margin:0!important;border-top:1px solid #dbeafe!important;padding:10px!important;background:#fff!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important}
.spviet-retail-pos-utility-body[hidden]{display:none!important}
.spviet-retail-pos-utility-body .span2,.spviet-retail-pos-utility-body .spviet-retail-pos-split-pay{grid-column:1/-1!important}
.spviet-retail-pos-pay-side .spviet-retail-pos-summary{flex:0 0 auto!important}
@media(max-width:1366px){.spviet-retail-pos-app-main.spviet-retail-pos-compact-layout{grid-template-columns:minmax(0,1fr) 330px!important}.spviet-retail-pos-action-panel{grid-template-columns:repeat(3,minmax(150px,1fr))!important}}
@media(max-width:980px){.spviet-retail-pos-pay-side{grid-column:1!important;grid-row:auto!important}.spviet-retail-pos-action-dock{grid-column:1!important;grid-row:auto!important;position:sticky!important;bottom:0!important}.spviet-retail-pos-action-panel{grid-template-columns:repeat(2,minmax(140px,1fr))!important}}

/* v2.8.98 POS Layout Device Matrix Closeout + Offline Local Payment Speed QA
   - Bỏ 2 khung thừa dưới Webcam: Local Printer Agent và Last Order để mở rộng view camera.
   - Sửa modal Sửa sản phẩm không vỡ khung trên màn hình POS thực tế.
   - Giữ dock tiện ích chỉ trong khu bán hàng bên trái. */
.spviet-retail-pos-pay-side .spviet-retail-pos-cashdrawer,
.spviet-retail-pos-pay-side .spviet-retail-pos-last-order{display:none!important;height:0!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;overflow:hidden!important}
.spviet-retail-pos-pay-side{gap:6px!important;min-height:0!important;overflow:hidden!important}
.spviet-retail-pos-webcam-panel{flex:1 1 auto!important;min-height:160px!important;margin-top:6px!important;padding:8px!important}
.spviet-retail-pos-webcam-body{flex:1 1 auto!important;min-height:150px!important;border-radius:14px!important}
.spviet-retail-pos-webcam-body video{min-height:150px!important}
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-line-editor{max-width:min(920px,calc(100vw - 56px))!important;width:min(920px,calc(100vw - 56px))!important;text-align:left!important;padding:26px 28px!important;max-height:calc(100dvh - 40px)!important;overflow:auto!important;overflow-x:hidden!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor{min-width:0!important;width:100%!important;max-width:100%!important;gap:14px!important;box-sizing:border-box!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head{grid-template-columns:88px minmax(0,1fr)!important;align-items:center!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head > div:not(.thumb){min-width:0!important;text-align:center!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid{grid-template-columns:minmax(88px,.8fr) minmax(130px,1fr) minmax(130px,1fr) minmax(160px,1.15fr)!important;gap:10px!important;align-items:end!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid label{min-width:0!important;width:100%!important;box-sizing:border-box!important;overflow:hidden!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid input,
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid select{width:100%!important;min-width:0!important;max-width:100%!important;box-sizing:border-box!important;height:52px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid input[data-line-edit-qty]{font-size:24px!important;text-align:center!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-quick{padding:12px!important;overflow:hidden!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-quick div{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(74px,1fr))!important;gap:8px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-quick button{min-width:0!important;width:100%!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-serial textarea{width:100%!important;max-width:100%!important;box-sizing:border-box!important;min-height:68px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-actions{display:flex!important;gap:10px!important;flex-wrap:wrap!important;justify-content:flex-end!important}
@media(max-width:760px){
  .spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-line-editor{width:calc(100vw - 24px)!important;max-width:calc(100vw - 24px)!important;padding:18px!important}
  .spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head{grid-template-columns:70px minmax(0,1fr)!important}
  .spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head .thumb{width:70px!important;height:70px!important}
  .spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid{grid-template-columns:1fr 1fr!important}
  .spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-actions button{flex:1 1 140px!important}
}
@media(max-width:1366px){
  .spviet-retail-pos-webcam-panel{min-height:145px!important}
  .spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-line-editor{max-width:min(900px,calc(100vw - 44px))!important;width:min(900px,calc(100vw - 44px))!important;padding:22px!important}
}


/* v2.8.99 POS Real-device Final UI Polish + Offline Payment Evidence Closeout
   Khóa lần cuối UI POS thật: webcam rộng hơn, panel phải sạch, modal Sửa sản phẩm không vỡ khung trên màn hình cao/thấp khác nhau. */
.spviet-retail-pos-pay-side .spviet-retail-pos-cashdrawer,
.spviet-retail-pos-pay-side [data-spviet-pos-cashdrawer],
.spviet-retail-pos-pay-side .spviet-retail-pos-last-order,
.spviet-retail-pos-pay-side [data-spviet-pos-last-order]{display:none!important;height:0!important;min-height:0!important;max-height:0!important;margin:0!important;padding:0!important;border:0!important;overflow:hidden!important;visibility:hidden!important}
.spviet-retail-pos-pay-side{overflow:hidden!important;gap:5px!important;padding-bottom:8px!important}
.spviet-retail-pos-webcam-panel{flex:1 1 100%!important;min-height:220px!important;margin-top:5px!important;display:flex!important;flex-direction:column!important}
.spviet-retail-pos-webcam-body{flex:1 1 auto!important;min-height:200px!important;height:auto!important;display:block!important}
.spviet-retail-pos-webcam-body video,.spviet-retail-pos-webcam-placeholder{min-height:200px!important;height:100%!important;max-height:100%!important;object-fit:cover!important}
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-line-editor{width:min(860px,calc(100vw - 48px))!important;max-width:min(860px,calc(100vw - 48px))!important;max-height:calc(100dvh - 32px)!important;padding:20px 24px!important;overflow:auto!important;overflow-x:hidden!important;box-sizing:border-box!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor{display:grid!important;grid-template-rows:auto auto auto auto auto auto!important;gap:12px!important;min-width:0!important;width:100%!important;max-width:100%!important;overflow:hidden!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head{padding:12px!important;border-radius:18px!important;grid-template-columns:78px minmax(0,1fr)!important;gap:12px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head .thumb{width:78px!important;height:78px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head h2{font-size:20px!important;white-space:normal!important;overflow-wrap:anywhere!important;line-height:1.2!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:8px!important;align-items:end!important;overflow:visible!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid label{min-width:0!important;overflow:visible!important;font-size:12px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid input,
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid select{height:46px!important;padding:8px 10px!important;font-size:15px!important;border-radius:12px!important;min-width:0!important;max-width:100%!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-quick{padding:10px!important;border-radius:16px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-quick div{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(62px,1fr))!important;gap:6px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-quick button{min-height:40px!important;border-radius:12px!important;font-size:14px!important;padding:6px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-serial textarea{min-height:58px!important;max-height:90px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-total{padding:12px 14px!important;border-radius:16px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-total strong{font-size:24px!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-actions{padding-top:8px!important;gap:8px!important;border-top:1px solid #e2e8f0!important}
.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-actions button{min-height:44px!important;border-radius:14px!important;padding:9px 16px!important}
@media(max-height:780px){.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-line-editor{padding:16px 20px!important}.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head{grid-template-columns:64px minmax(0,1fr)!important;padding:10px!important}.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head .thumb{width:64px!important;height:64px!important}.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-head h2{font-size:18px!important}.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-quick button{min-height:36px!important}.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-total{padding:10px 12px!important}}
@media(max-width:900px){.spviet-retail-pos-modal-card-line-editor .spviet-retail-pos-line-editor-grid{grid-template-columns:1fr 1fr!important}.spviet-retail-pos-webcam-panel{min-height:180px!important}.spviet-retail-pos-webcam-body{min-height:165px!important}}


/* v2.9.00 POS Final Production Closeout - payment modal typography and close policy */
.spviet-retail-pos-modal-card-auto-payment{max-width:min(920px,calc(100vw - 48px))!important;padding:30px 28px!important;border-radius:24px!important;font-family:"Inter","Noto Sans","Noto Sans JP",system-ui,-apple-system,"Segoe UI",Arial,sans-serif!important;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}
.spviet-retail-pos-modal-card-auto-payment .spviet-retail-pos-modal-close{display:none!important}
.spviet-retail-pos-modal-card-auto-payment .spviet-retail-pos-auto-pay-modal{padding:0!important}
.spviet-retail-pos-modal-card-auto-payment .spviet-retail-pos-auto-pay-modal h2{font-size:32px!important;letter-spacing:.01em!important;font-weight:950!important;line-height:1.16!important;margin:8px 0 8px!important}
.spviet-retail-pos-modal-card-auto-payment .spviet-retail-pos-auto-pay-modal p{font-size:15px!important;font-weight:760!important;letter-spacing:.01em!important}
.spviet-retail-pos-modal-card-auto-payment .auto-pay-total span,.spviet-retail-pos-modal-card-auto-payment .auto-pay-total b{font-feature-settings:"tnum" 1,"kern" 1}
.spviet-retail-pos-modal-card-auto-payment .auto-pay-actions button{letter-spacing:.01em!important;text-shadow:none!important}
.spviet-retail-pos-modal-card-auto-payment .auto-pay-actions button b{font-size:23px!important;font-weight:950!important}
.spviet-retail-pos-modal-card-auto-payment .auto-pay-actions button em{font-size:12px!important;font-weight:900!important}
@media(max-width:760px){.spviet-retail-pos-modal-card-auto-payment{max-width:calc(100vw - 20px)!important;padding:22px 18px!important}.spviet-retail-pos-modal-card-auto-payment .spviet-retail-pos-auto-pay-modal h2{font-size:24px!important}.spviet-retail-pos-modal-card-auto-payment .auto-pay-actions{grid-template-columns:1fr!important}.spviet-retail-pos-modal-card-auto-payment .auto-pay-actions button{min-height:88px!important}}

/* v2.9.01 Offline Search Speed Fix / POS Cache Doctor */
.spviet-retail-pos-cache-doctor{
  margin:8px 12px 0;
  padding:10px 12px;
  border:1px solid #bae6fd;
  background:linear-gradient(135deg,#eff6ff,#ecfeff);
  border-radius:14px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  box-shadow:0 8px 20px rgba(15,23,42,.05);
}
.spviet-retail-pos-cache-doctor[hidden]{display:none!important}
.spviet-retail-pos-cache-doctor b{display:block;color:#075985;font-size:13px;font-weight:900;letter-spacing:.01em}
.spviet-retail-pos-cache-doctor small{display:block;color:#475569;font-weight:700;margin-top:2px}
.spviet-retail-pos-cache-doctor.is-danger{border-color:#fecaca;background:linear-gradient(135deg,#fff1f2,#fff7ed)}
.spviet-retail-pos-cache-doctor.is-danger b{color:#991b1b}
.spviet-retail-pos-cache-doctor.is-warning{border-color:#fde68a;background:linear-gradient(135deg,#fffbeb,#fefce8)}
.spviet-retail-pos-cache-doctor.is-warning b{color:#92400e}
.spviet-retail-pos-cache-doctor.is-ok{border-color:#bbf7d0;background:linear-gradient(135deg,#ecfdf5,#f0fdfa)}
.spviet-retail-pos-cache-doctor.is-ok b{color:#047857}
.spviet-retail-pos-cache-doctor-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.spviet-retail-pos-cache-doctor-actions button{
  border:1px solid #a7f3d0;
  background:#fff;
  color:#0f766e;
  border-radius:10px;
  padding:8px 10px;
  font-weight:900;
  cursor:pointer;
}
.spviet-retail-pos-cache-doctor-actions button[data-spviet-cache-doctor-full-sync]{background:#0f766e;color:#fff;border-color:#0f766e}
.spviet-retail-pos-cache-doctor-actions button:disabled{opacity:.55;cursor:wait}
@media(max-width:980px){.spviet-retail-pos-cache-doctor{align-items:stretch;flex-direction:column}.spviet-retail-pos-cache-doctor-actions{justify-content:flex-start}}

/* v2.9.08: Money-safety lock for VT-330 cash modal. No top-right close/X; cashier must use HỦY so the device receives cancel/return command. */
.spviet-retail-pos-modal-card-cash-machine [data-spviet-pos-modal-close]{display:none!important;}
.spviet-retail-pos-cash-machine-modal[data-cash-status="insufficient_amount"] [data-cash-machine-confirm]{display:none!important;}
.spviet-retail-pos-cash-machine-modal[data-cash-status="cancelling"] [data-cash-machine-confirm],
.spviet-retail-pos-cash-machine-modal[data-cash-status="finalizing"] [data-cash-machine-confirm]{opacity:.55;pointer-events:none;}
/* v2.9.09: VT-330 money-safety cancel refund workflow */
.spviet-retail-pos-cash-machine-modal .cash-machine-safety-note{margin:12px auto 0;max-width:860px;padding:10px 12px;border-radius:14px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;font-weight:900;font-size:13px;line-height:1.45}
.spviet-retail-pos-cash-machine-modal[data-cash-status="manual_refund_required"]{border:2px solid #ef4444;border-radius:22px;padding:10px;background:linear-gradient(135deg,#fff1f2,#fff7ed)}
.spviet-retail-pos-cash-machine-modal[data-cash-status="manual_refund_required"] .cash-machine-status{color:#991b1b;font-size:16px;font-weight:1000}
.spviet-retail-pos-cash-machine-modal[data-cash-status="cancelling"] .cash-machine-status,
.spviet-retail-pos-cash-machine-modal[data-cash-status="refund_dispensing"] .cash-machine-status{color:#92400e;font-weight:1000}
.spviet-retail-pos-cash-machine-modal[data-cash-status="cancelling"] [data-cash-machine-cancel],
.spviet-retail-pos-cash-machine-modal[data-cash-status="refund_dispensing"] [data-cash-machine-cancel]{opacity:.55;pointer-events:none}

/* v2.9.15 - VT-330 refund denomination customer confirm hard lock */
.spviet-retail-pos-cashier-status-strip{grid-template-columns:repeat(5,minmax(0,1fr));}
.spviet-retail-pos-status-card[data-spviet-device-status="vt330"]{border-left:4px solid #f59e0b;}
.spviet-retail-pos-status-card[data-spviet-device-status="vt330"].is-online{border-left-color:#10b981;}
.spviet-retail-pos-status-card[data-spviet-device-status="vt330"].is-offline{border-left-color:#ef4444;background:linear-gradient(135deg,#fff7ed,#fff1f2);}
.spviet-retail-pos-status-card[data-spviet-device-status="vt330"].is-warning{border-left-color:#f59e0b;background:linear-gradient(135deg,#fffbeb,#fff7ed);}
.spviet-retail-pos-open-shift.is-shift-open,[data-spviet-pos-open-shift].is-shift-open{background:linear-gradient(135deg,#e0f2fe,#ecfeff)!important;color:#0f766e!important;border:1px solid rgba(15,118,110,.18)!important;}
.spviet-retail-pos-pro-notice{display:grid;grid-template-columns:auto 1fr;gap:18px;text-align:left;align-items:flex-start;padding:8px 2px;}
.spviet-retail-pos-pro-notice .notice-icon{width:58px;height:58px;border-radius:22px;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:1000;color:#fff;background:linear-gradient(135deg,#0f766e,#10b981);box-shadow:0 18px 35px rgba(15,118,110,.18);}
.spviet-retail-pos-pro-notice.danger .notice-icon{background:linear-gradient(135deg,#dc2626,#ef4444);box-shadow:0 18px 35px rgba(239,68,68,.18);}
.spviet-retail-pos-pro-notice.warning .notice-icon{background:linear-gradient(135deg,#d97706,#f59e0b);box-shadow:0 18px 35px rgba(245,158,11,.18);}
.spviet-retail-pos-pro-notice.info .notice-icon{background:linear-gradient(135deg,#2563eb,#06b6d4);box-shadow:0 18px 35px rgba(37,99,235,.16);}
.spviet-retail-pos-pro-notice h2{margin:0 0 8px!important;font-size:25px;line-height:1.2;color:#0f172a;}
.spviet-retail-pos-pro-notice p{margin:0 0 10px;color:#334155;font-size:15px;line-height:1.6;font-weight:700;}
.spviet-retail-pos-pro-notice small{display:block;background:#f8fafc;border:1px solid #dbe5ef;border-radius:16px;padding:10px 12px;color:#475569;font-weight:800;line-height:1.5;}
.spviet-retail-pos-pro-notice .spviet-retail-pos-modal-actions{margin-top:16px;justify-content:flex-end;}
@media(max-width:980px){.spviet-retail-pos-cashier-status-strip{grid-template-columns:repeat(2,minmax(0,1fr));}.spviet-retail-pos-pro-notice{grid-template-columns:1fr;text-align:center}.spviet-retail-pos-pro-notice .notice-icon{margin:0 auto}.spviet-retail-pos-pro-notice .spviet-retail-pos-modal-actions{justify-content:center}}

.spviet-retail-pos-cash-refund-confirm-modal{border:2px solid #0f766e;border-radius:24px;background:linear-gradient(135deg,#f8fafc,#ecfdf5);padding:12px 8px 6px!important}
.spviet-retail-pos-cash-refund-confirm-modal h2{color:#064e3b!important}
.spviet-retail-pos-cash-refund-confirm-modal .cash-refund-status{font-size:15px!important;color:#115e59!important;background:#ecfdf5;border:1px solid #99f6e4;border-radius:16px;padding:12px 14px}
.spviet-retail-pos-cash-refund-confirm-modal .cash-refund-summary>div:nth-child(2) b{color:#dc2626!important;font-size:30px!important}
.spviet-retail-pos-cash-refund-confirm-modal .cash-refund-summary>div:nth-child(3) b{color:#0f766e!important;font-size:20px!important}
.cash-refund-table-wrap{max-height:44vh;overflow:auto;padding:4px 0}
.cash-refund-denom-table th{background:#b91c1c!important}.cash-refund-denom-table td{font-size:17px!important}.cash-refund-hard-note{background:#fff1f2!important;border-color:#fecdd3!important;color:#991b1b!important}
.spviet-retail-pos-cash-refund-confirm-modal .cash-refund-actions .confirm{min-width:360px;background:linear-gradient(135deg,#059669,#047857)!important;font-size:20px!important}
@media(max-width:720px){.spviet-retail-pos-cash-refund-confirm-modal .cash-refund-actions .confirm{min-width:0;width:100%}.cash-refund-table-wrap{max-height:38vh}}

/* v2.9.17 - VT-330 zero-cash recovery + professional amount cards */
.spviet-retail-pos-cash-machine-modal .cash-machine-due-card b{color:#2563eb!important;}
.spviet-retail-pos-cash-machine-modal .cash-machine-session-info{max-width:860px;margin:6px auto 12px;color:#64748b;font-size:12px;font-weight:800;line-height:1.4;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:12px;padding:8px 10px;}
.spviet-retail-pos-cash-machine-modal[data-cash-status="no_cash_cancel_recovery"]{border:2px solid #f59e0b;border-radius:22px;padding:10px;background:linear-gradient(135deg,#fffbeb,#fff7ed)}
.spviet-retail-pos-cash-machine-modal[data-cash-status="no_cash_cancel_recovery"] .cash-machine-status{color:#92400e;font-size:15px;font-weight:1000;}
.cash-machine-admin-reset-btn{position:absolute;left:28px;top:18px;z-index:8;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:112px;height:38px;padding:0 14px;border-radius:999px;border:2px solid #f59e0b;background:linear-gradient(135deg,#fff7ed,#fffbeb);color:#92400e;font-size:13px;font-weight:1000;letter-spacing:.02em;box-shadow:0 12px 26px rgba(146,64,14,.18);cursor:pointer;transition:all .16s ease;}
.cash-machine-admin-reset-btn:hover,.cash-machine-admin-reset-btn:focus{transform:translateY(-1px);background:#f59e0b;color:#fff;outline:3px solid rgba(245,158,11,.22);}
.spviet-retail-pos-cash-machine-modal[data-cash-status="no_cash_cancel_recovery"] .cash-machine-admin-reset-btn,.spviet-retail-pos-cash-machine-modal[data-cash-status="bridge_error"] .cash-machine-admin-reset-btn{background:linear-gradient(135deg,#dc2626,#f59e0b);border-color:#dc2626;color:#fff;animation:spvietCashPulse 1.2s ease-in-out infinite;}.spviet-retail-pos-cash-machine-modal[data-cash-status="no_cash_cancel_recovery"] .cash-machine-actions .safe-exit,.spviet-retail-pos-cash-machine-modal[data-cash-status="bridge_error"] .cash-machine-actions .safe-exit{animation:spvietCashPulse 1.2s ease-in-out infinite;}
.spviet-retail-pos-cash-admin-recovery{max-width:900px;margin:0 auto;text-align:left!important;}
.spviet-retail-pos-cash-admin-recovery h2{text-align:center!important;}
.cash-machine-admin-ok,.cash-machine-admin-danger{max-width:860px;margin:12px auto;padding:12px 14px;border-radius:16px;font-size:14px;font-weight:950;line-height:1.55;}
.cash-machine-admin-ok{background:#ecfdf5;border:1px solid #99f6e4;color:#065f46;}
.cash-machine-admin-danger{background:#fff1f2;border:1px solid #fecdd3;color:#991b1b;}
.cash-machine-admin-field,.cash-machine-admin-check{display:block;max-width:680px;margin:12px auto;font-weight:900;color:#0f172a;}
.cash-machine-admin-field span{display:block;margin-bottom:6px;color:#334155;}
.cash-machine-admin-field input{width:100%;box-sizing:border-box;border:2px solid #cbd5e1;border-radius:14px;padding:14px 16px;font-size:18px;font-weight:900;outline:none;background:#fff;}
.cash-machine-admin-field input:focus{border-color:#2563eb;box-shadow:0 0 0 4px rgba(37,99,235,.12);}
.cash-machine-admin-check{display:flex;gap:10px;align-items:flex-start;background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:12px 14px;color:#9a3412;line-height:1.45;}
.cash-machine-admin-check input{margin-top:4px;transform:scale(1.25);}
@media(max-width:720px){.cash-machine-admin-reset-btn{left:12px;top:12px;min-width:96px;height:34px;font-size:12px;padding:0 10px}.spviet-retail-pos-cash-machine-modal .cash-machine-session-info{font-size:11px}.cash-machine-admin-field input{font-size:16px}}

/* v2.9.27 - VT330 refund customer-confirm button + accepted click feedback */
.spviet-retail-pos-cash-machine-modal .cash-machine-actions button.spviet-btn-signal-accepted,
.spviet-retail-pos-auto-pay-modal .auto-pay-actions button.spviet-btn-signal-accepted,
.spviet-retail-pos-cash-refund-confirm-modal button.spviet-btn-signal-accepted{
  opacity:.72!important;filter:grayscale(.18)!important;cursor:wait!important;transform:translateY(1px);box-shadow:inset 0 2px 8px rgba(15,23,42,.24)!important;
}
.spviet-retail-pos-cash-machine-modal .cash-machine-actions button.spviet-btn-signal-accepted:after,
.spviet-retail-pos-cash-refund-confirm-modal button.spviet-btn-signal-accepted:after{content:" ✓";font-weight:1000}
.cash-refund-ready-panel,.cash-refund-progress-panel{max-width:860px;margin:10px auto 12px;border-radius:20px;padding:16px 18px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:14px;text-align:left;box-shadow:0 16px 34px rgba(15,23,42,.10)}
.cash-refund-ready-panel{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:2px solid #34d399;color:#064e3b}
.cash-refund-progress-panel{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:2px solid #f59e0b;color:#92400e;display:block;text-align:center}
.cash-refund-ready-panel b,.cash-refund-progress-panel b{display:block;font-size:18px;font-weight:1000;margin-bottom:4px}.cash-refund-ready-panel span,.cash-refund-progress-panel span{display:block;font-size:13px;font-weight:850;line-height:1.4}.cash-refund-ready-panel .cash-refund-top-ok{border:0;border-radius:18px;min-width:260px;padding:16px 22px;color:#fff;font-size:18px;font-weight:1000;cursor:pointer;background:linear-gradient(135deg,#10b981,#047857);box-shadow:0 16px 34px rgba(15,23,42,.18)}
.spviet-retail-pos-cash-refund-confirm-modal .cash-refund-actions{position:sticky;bottom:0;z-index:8;background:linear-gradient(180deg,rgba(236,253,245,.68),#ecfdf5 40%);padding:10px 0 4px;border-radius:0 0 18px 18px}
@media(max-width:720px){.cash-refund-ready-panel{grid-template-columns:1fr;text-align:center}.cash-refund-ready-panel .cash-refund-top-ok{width:100%;min-width:0}}

/* v2.9.29 - VT330 machine tools dashboard / stock / thresholds / manual dispense/import */
.spviet-vt330-tools{padding:4px;text-align:left}.spviet-vt330-tools .vt330-hero{border-radius:24px;padding:20px;background:linear-gradient(135deg,#ecfdf5,#eff6ff);border:1px solid #bfdbfe;box-shadow:0 18px 42px rgba(15,23,42,.10);text-align:center}.spviet-vt330-tools .vt330-hero h2{margin:4px 0 8px!important;font-size:28px!important;color:#0f172a!important}.spviet-vt330-tools .vt330-hero p{margin:0;color:#475569;font-weight:850}.spviet-vt330-tools-grid{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:14px;margin:16px 0}.spviet-vt330-tools-grid button{min-height:116px;border:0;border-radius:22px;padding:18px;text-align:left;background:#fff;color:#0f172a;box-shadow:0 16px 34px rgba(15,23,42,.12);cursor:pointer;font-weight:1000;border:1px solid #dbeafe}.spviet-vt330-tools-grid button span{display:block;font-size:34px;margin-bottom:8px}.spviet-vt330-tools-grid button b{display:block;font-size:18px;margin-bottom:5px}.spviet-vt330-tools-grid button small{display:block;color:#64748b;font-size:13px;line-height:1.35}.spviet-vt330-stock-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:12px 0 16px}.spviet-vt330-stock-summary>div{border:1px solid #dbeafe;background:#f8fafc;border-radius:18px;padding:14px;text-align:center}.spviet-vt330-stock-summary span{display:block;color:#64748b;font-weight:900}.spviet-vt330-stock-summary b{font-size:24px;color:#0f766e}.spviet-vt330-tools .is-low,.cash-machine-denom-table tr.is-low td{background:#fff1f2!important;color:#991b1b!important}.spviet-vt330-form{display:grid;gap:12px;max-width:720px;margin:12px auto;text-align:left}.spviet-vt330-form label{font-weight:950;color:#0f172a}.spviet-vt330-form input,.spviet-vt330-form select,.spviet-vt330-form textarea{width:100%;box-sizing:border-box;border:2px solid #cbd5e1;border-radius:14px;padding:13px 14px;font-size:16px;font-weight:850;background:#fff}.spviet-vt330-form input:focus,.spviet-vt330-form select:focus,.spviet-vt330-form textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 4px rgba(37,99,235,.12)}.spviet-vt330-threshold-grid{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:10px;max-width:760px;margin:12px auto;text-align:left}.spviet-vt330-threshold-grid label{background:#f8fafc;border:1px solid #dbeafe;border-radius:16px;padding:12px;font-weight:950}.spviet-vt330-threshold-grid input{margin-top:6px;width:100%;box-sizing:border-box;border:2px solid #cbd5e1;border-radius:12px;padding:11px;font-weight:900}.spviet-vt330-wait{padding:18px;border-radius:18px;background:#eff6ff;color:#1d4ed8;text-align:center;font-weight:1000;margin:12px auto;max-width:760px}.spviet-vt330-error{padding:14px;border-radius:16px;background:#fff1f2;border:1px solid #fecdd3;color:#991b1b;font-weight:950;margin:12px auto;max-width:760px}.spviet-vt330-success{padding:14px;border-radius:16px;background:#ecfdf5;border:1px solid #99f6e4;color:#065f46;font-weight:950;margin:12px auto;max-width:760px}@media(max-width:760px){.spviet-vt330-tools-grid,.spviet-vt330-stock-summary,.spviet-vt330-threshold-grid{grid-template-columns:1fr}.spviet-vt330-tools-grid button{min-height:96px}}

/* v2.9.47 Cache POS slide guard: keep doctor collapsed by default, open only from small middle arrow. */
.spviet-retail-pos-cache-doctor-toggle{
  width:100%;
  margin:8px 12px 0;
  border:1px solid #bfdbfe;
  background:linear-gradient(135deg,#f8fafc,#eff6ff);
  color:#0f3b78;
  border-radius:999px;
  padding:7px 12px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  font-weight:950;
  cursor:pointer;
  box-shadow:0 8px 18px rgba(15,23,42,.06);
}
.spviet-retail-pos-cache-doctor-toggle[hidden]{display:none!important}
.spviet-retail-pos-cache-doctor-toggle span{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:999px;background:#dbeafe;color:#1d4ed8;font-weight:950}
.spviet-retail-pos-cache-doctor-toggle small{color:#64748b;font-weight:800}
.spviet-retail-pos-cache-doctor-toggle.is-danger{border-color:#fecaca;background:#fff1f2;color:#991b1b}.spviet-retail-pos-cache-doctor-toggle.is-danger span{background:#fee2e2;color:#991b1b}
.spviet-retail-pos-cache-doctor-toggle.is-warning{border-color:#fde68a;background:#fffbeb;color:#92400e}.spviet-retail-pos-cache-doctor-toggle.is-warning span{background:#fef3c7;color:#92400e}
.spviet-retail-pos-cache-doctor.is-collapsed{display:none!important}

/* v2.9.71 Scanner Engine debug inside Cache POS doctor */
.spviet-retail-pos-scanner-debug{display:block;margin-top:8px;padding:8px 10px;border:1px dashed #93c5fd;border-radius:12px;background:rgba(239,246,255,.82)}
.spviet-retail-pos-scanner-debug b{display:block;color:#1d4ed8;font-weight:950;font-size:12px}
.spviet-retail-pos-scanner-debug small{display:block;color:#334155;font-weight:800;line-height:1.35}

/* v2.9.72 Scanner Hardware Profile test panel */
.spviet-retail-pos-scanner-test{margin-top:8px;display:grid;gap:6px;background:#f8fafc;border:1px dashed rgba(15,23,42,.22);border-radius:12px;padding:8px}
.spviet-retail-pos-scanner-test[hidden]{display:none!important}
.spviet-retail-pos-scanner-test input{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:8px 10px;font-weight:800;background:#fff}
.spviet-retail-pos-scanner-test small.is-ok{color:#047857;font-weight:800}
.spviet-retail-pos-scanner-test small.is-error{color:#b91c1c;font-weight:800}

/* v2.9.73 Scanner QA Evidence / Device Binding */
.spviet-retail-pos-scanner-test-actions{display:flex;gap:6px;flex-wrap:wrap}
.spviet-retail-pos-scanner-test-actions button{border:0;border-radius:10px;background:#dbeafe;color:#1d4ed8;font-weight:950;padding:7px 10px;cursor:pointer}
.spviet-retail-pos-scanner-test [data-spviet-scanner-evidence-status]{color:#475569;font-weight:800}


/* v2.9.76 Scanner instant cart notice + Gateway stable UI */
.spviet-retail-pos-scan-inline-notice{display:flex;align-items:center;gap:10px;min-height:44px;border-radius:14px;padding:8px 12px;font-weight:950;border:2px solid #bfdbfe;background:linear-gradient(135deg,#eff6ff,#f8fafc);color:#0f172a;box-shadow:0 10px 24px rgba(15,23,42,.08)}
.spviet-retail-pos-scan-inline-notice[hidden]{display:none!important}
.spviet-retail-pos-scan-inline-notice.is-success{border-color:#34d399;background:linear-gradient(135deg,#ecfdf5,#d1fae5);color:#064e3b}
.spviet-retail-pos-scan-inline-notice.is-error{border-color:#fca5a5;background:linear-gradient(135deg,#fff1f2,#fee2e2);color:#991b1b}
.spviet-retail-pos-scan-inline-notice.is-wait{border-color:#93c5fd;background:linear-gradient(135deg,#eff6ff,#dbeafe);color:#1d4ed8}
.spviet-retail-pos-scan-inline-notice b{font-size:14px}
.spviet-retail-pos-scan-inline-notice small{display:block;font-size:12px;font-weight:800;opacity:.86}
@media(max-width:900px){.spviet-retail-pos-scan-row-v26{grid-template-columns:auto 1fr}.spviet-retail-pos-scan-inline-notice{grid-column:1/-1}}

/* v3.0.34 - VT-330 background deep readiness prewarm in auto payment chooser */
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm{max-width:720px;margin:0 auto 16px;display:flex;align-items:center;gap:12px;text-align:left;border:1px solid #fed7aa;background:linear-gradient(135deg,#fffbeb,#fff7ed);color:#92400e;border-radius:18px;padding:12px 14px;box-shadow:inset 0 1px 0 rgba(255,255,255,.72)}
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm .dot{width:14px;height:14px;flex:0 0 14px;border-radius:50%;background:#f59e0b;box-shadow:0 0 0 6px rgba(245,158,11,.14);animation:spvietCashPulse 1.1s ease-in-out infinite}
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm b{display:block;color:#78350f;font-size:14px;font-weight:950;line-height:1.3}
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm small{display:block;margin-top:2px;color:#92400e;font-size:12px;font-weight:800;line-height:1.35}
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm[data-status="ready"]{border-color:#99f6e4;background:linear-gradient(135deg,#ecfdf5,#f0fdfa);color:#065f46}
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm[data-status="ready"] .dot{background:#10b981;box-shadow:0 0 0 6px rgba(16,185,129,.14);animation:none}
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm[data-status="ready"] b,.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm[data-status="ready"] small{color:#065f46}
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm[data-status="warning"]{border-color:#fecdd3;background:linear-gradient(135deg,#fff1f2,#fff7ed);color:#991b1b}
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm[data-status="warning"] .dot{background:#ef4444;box-shadow:0 0 0 6px rgba(239,68,68,.14);animation:none}
.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm[data-status="warning"] b,.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm[data-status="warning"] small{color:#991b1b}
@media(max-width:640px){.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm{align-items:flex-start;margin-bottom:12px}.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm b{font-size:13px}.spviet-retail-pos-auto-pay-modal .auto-pay-vt330-prewarm small{font-size:11px}}

/* v3.0.35 - POS VT-330 real-machine timing evidence / payment choice runtime trace */
.spviet-vt330-runtime-trace{max-width:720px;margin:0 auto 14px;border:1px solid #dbeafe;background:linear-gradient(135deg,#f8fafc,#eef6ff);border-radius:16px;padding:10px 12px;text-align:left;box-shadow:inset 0 1px 0 rgba(255,255,255,.72)}
.spviet-vt330-runtime-trace .vt330-runtime-trace-head{display:grid;grid-template-columns:1fr;gap:3px;margin-bottom:7px}
.spviet-vt330-runtime-trace .vt330-runtime-trace-head b{color:#0f172a;font-size:13px;font-weight:950;letter-spacing:.01em}
.spviet-vt330-runtime-trace .vt330-runtime-trace-head span{color:#475569;font-size:11px;font-weight:800;line-height:1.35}
.spviet-vt330-runtime-trace .vt330-runtime-trace-head em{justify-self:start;font-style:normal;border-radius:999px;padding:3px 8px;background:#ecfdf5;color:#047857;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.04em}
.spviet-vt330-runtime-trace ol{margin:0;padding:0;list-style:none;display:grid;gap:5px;max-height:132px;overflow:auto}
.spviet-vt330-runtime-trace li{display:grid;grid-template-columns:64px 1fr;gap:8px;align-items:start;border-top:1px dashed rgba(148,163,184,.42);padding-top:5px}
.spviet-vt330-runtime-trace li:first-child{border-top:0;padding-top:0}
.spviet-vt330-runtime-trace li span{font-feature-settings:"tnum" 1,"kern" 1;color:#2563eb;font-size:11px;font-weight:950}
.spviet-vt330-runtime-trace li b{color:#334155;font-size:12px;font-weight:900;line-height:1.3}
.spviet-vt330-runtime-trace li small{grid-column:2;color:#64748b;font-size:10px;font-weight:800;line-height:1.25}
.spviet-retail-pos-cash-machine-modal .spviet-vt330-runtime-trace{max-width:100%;margin:8px 0 12px;background:linear-gradient(135deg,#f8fafc,#f0fdfa);border-color:#ccfbf1}
@media(max-width:640px){.spviet-vt330-runtime-trace li{grid-template-columns:54px 1fr}.spviet-vt330-runtime-trace .vt330-runtime-trace-head span{font-size:10px}.spviet-vt330-runtime-trace li b{font-size:11px}}

/* v3.0.37: keep VT-330 timing evidence hidden behind QA button; never push cashier buttons/table down by default. */
.spviet-vt330-trace-toolbar{max-width:720px;margin:0 auto 12px;display:flex;align-items:center;justify-content:flex-end;gap:8px;position:relative;z-index:2}
.spviet-vt330-trace-toolbar button{border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:7px 12px;font-size:12px;font-weight:950;line-height:1;cursor:pointer;box-shadow:0 6px 16px rgba(15,23,42,.08)}
.spviet-vt330-trace-toolbar button:hover,.spviet-vt330-trace-toolbar button:focus{background:#dbeafe;outline:0}
.spviet-vt330-runtime-trace[hidden]{display:none!important}
.spviet-retail-pos-cash-machine-modal .spviet-vt330-trace-toolbar{max-width:860px;margin:4px auto 8px}
.spviet-retail-pos-cash-machine-modal .spviet-vt330-runtime-trace{max-width:860px;margin:0 auto 10px}
@media(max-width:640px){.spviet-vt330-trace-toolbar{justify-content:center;flex-wrap:wrap}.spviet-vt330-trace-toolbar button{font-size:11px;padding:7px 10px}}

/* v3.0.38: VT-330 QA trace is a hidden slide/drawer and must not push cashier POS controls down. */
.spviet-vt330-trace-toolbar{margin:4px auto 6px!important;min-height:0!important;justify-content:flex-end!important;}
.spviet-vt330-trace-toolbar button{padding:6px 10px!important;font-size:11px!important;box-shadow:none!important;}
.spviet-vt330-runtime-trace{position:fixed!important;right:18px!important;top:86px!important;bottom:18px!important;width:min(560px,92vw)!important;max-width:none!important;margin:0!important;z-index:99999!important;overflow:auto!important;box-shadow:0 24px 80px rgba(15,23,42,.32)!important;border-radius:18px!important;background:linear-gradient(135deg,#f8fafc,#eef6ff)!important;}
.spviet-vt330-runtime-trace[hidden]{display:none!important;}
.spviet-vt330-trace-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px;}
.spviet-vt330-trace-actions button{border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:7px 12px;font-size:12px;font-weight:950;cursor:pointer;}
@media(max-width:760px){.spviet-vt330-runtime-trace{left:10px!important;right:10px!important;top:72px!important;bottom:10px!important;width:auto!important;}}

/* v3.0.40 - Shift VT-330 stock update controls */
.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row td:first-child{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row button[data-shift-vt330-refresh]{border:0;border-radius:999px;background:#0f766e;color:#fff;font-weight:1000;padding:8px 14px;cursor:pointer;white-space:nowrap;box-shadow:0 8px 18px rgba(15,118,110,.18);}
.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row button[data-shift-vt330-refresh]:disabled{opacity:.65;cursor:wait;}
.spviet-retail-pos-shift-vt330-status{margin:0 22px 12px;padding:11px 14px;border-radius:14px;border:1px solid #bae6fd;background:#f0f9ff;color:#075985;font-weight:900;}
.spviet-retail-pos-shift-vt330-status.is-loading{border-color:#fde68a;background:#fffbeb;color:#92400e;}
.spviet-retail-pos-shift-vt330-status.is-ok{border-color:#bbf7d0;background:#f0fdf4;color:#047857;}
.spviet-retail-pos-shift-vt330-status.is-error{border-color:#fecaca;background:#fef2f2;color:#b91c1c;}
@media(max-width:760px){.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row td:first-child{flex-direction:column;align-items:flex-start}.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row button[data-shift-vt330-refresh]{width:100%;}}

/* v3.0.41 Shift Local Gateway history / one-machine VT-330 guard */
.spviet-retail-pos-shift-toolrow{display:flex;justify-content:flex-end;align-items:center;margin:-4px 22px 12px;gap:10px}
.spviet-retail-pos-shift-toolrow button{border:0;border-radius:14px;background:#0f766e;color:#fff;font-weight:1000;padding:10px 16px;cursor:pointer;box-shadow:0 8px 18px rgba(15,118,110,.18)}
.spviet-retail-pos-shift-table-history th:nth-child(2),.spviet-retail-pos-shift-table-history td:nth-child(2){width:26%;max-width:280px}.spviet-retail-pos-shift-table-history th:nth-child(3),.spviet-retail-pos-shift-table-history th:nth-child(4),.spviet-retail-pos-shift-table-history td:nth-child(3),.spviet-retail-pos-shift-table-history td:nth-child(4){width:21%}
.spviet-retail-pos-shift-table-history th small{display:block;color:#0f3d1c;font-size:11px;font-weight:900;opacity:.82;margin-top:2px}.spviet-retail-pos-shift-history-cell{background:#f8fafc!important;text-align:center;color:#0f172a}.spviet-retail-pos-shift-history-cell b{display:block;font-size:18px;color:#0f766e;margin-bottom:5px}.spviet-retail-pos-shift-history-cell small{display:block;font-size:12px;color:#64748b;font-weight:800;line-height:1.35}.spviet-retail-pos-vt330-row.is-left-disabled span::after{content:' Tạm tắt';display:inline-flex;margin-left:8px;padding:3px 8px;border-radius:999px;background:#e2e8f0;color:#475569;font-size:11px;font-weight:1000}.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row.is-left-disabled button[data-shift-vt330-refresh]{background:#94a3b8!important;color:#e2e8f0!important;box-shadow:none!important;cursor:not-allowed!important}.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row.is-left-disabled input[readonly]{background:#f1f5f9!important;color:#64748b!important;cursor:not-allowed!important}.spviet-retail-pos-shift-modal{position:relative}.spviet-retail-pos-shift-history-drawer{position:absolute;inset:0;z-index:30;background:rgba(15,23,42,.35);display:flex;justify-content:flex-end}.spviet-retail-pos-shift-history-panel{width:min(620px,92vw);height:100%;background:#fff;color:#0f172a;box-shadow:-20px 0 60px rgba(15,23,42,.25);padding:18px;overflow:auto}.spviet-retail-pos-shift-history-panel h3{margin:0 42px 4px 0;font-size:22px;color:#0f766e}.spviet-retail-pos-shift-history-panel p{margin:0 0 12px;color:#64748b;font-weight:800}.spviet-retail-pos-shift-history-close{position:absolute;right:16px;top:14px;border:0;border-radius:999px;width:34px;height:34px;background:#ef4444;color:#fff;font-size:24px;font-weight:1000;cursor:pointer}.spviet-retail-pos-shift-history-table{width:100%;border-collapse:collapse;border:1px solid #cbd5e1}.spviet-retail-pos-shift-history-table th,.spviet-retail-pos-shift-history-table td{border-bottom:1px solid #e2e8f0;padding:9px;text-align:left;font-size:13px}.spviet-retail-pos-shift-history-table th{background:#ecfdf5;color:#065f46;font-weight:1000}.spviet-retail-pos-shift-history-table td b{display:block}.spviet-retail-pos-shift-history-table td small{display:block;color:#64748b;font-weight:800}.spviet-retail-pos-shift-history-empty{background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:14px;color:#9a3412;font-weight:900}
@media(max-width:900px){.spviet-retail-pos-shift-table-history{display:block;overflow:auto}.spviet-retail-pos-shift-table-history thead,.spviet-retail-pos-shift-table-history tbody{min-width:920px}.spviet-retail-pos-shift-toolrow{justify-content:stretch}.spviet-retail-pos-shift-toolrow button{width:100%}}

/* v3.0.42 - Shift settlement compact layout / swapped history columns / footer visibility guard */
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-shift{max-height:calc(100dvh - 24px)!important;overflow-y:auto!important;overflow-x:hidden!important;scrollbar-gutter:stable;}
.spviet-retail-pos-shift-modal h2{padding:13px 18px!important;font-size:22px!important;line-height:1.2!important;}
.spviet-retail-pos-modal-help{margin:10px 18px 8px!important;padding:9px 12px!important;border-radius:12px!important;line-height:1.32!important;font-size:14px!important;}
.spviet-retail-pos-shift-toolrow{margin:-2px 18px 8px!important;}
.spviet-retail-pos-shift-toolrow button{padding:8px 14px!important;border-radius:12px!important;font-size:13px!important;}
.spviet-retail-pos-shift-cards{gap:7px!important;margin:0 18px 9px!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;}
.spviet-retail-pos-shift-cards div{padding:8px 9px!important;border-radius:12px!important;min-height:66px!important;}
.spviet-retail-pos-shift-cards span{font-size:10.5px!important;line-height:1.2!important;}
.spviet-retail-pos-shift-cards b{font-size:17px!important;margin-top:3px!important;}
.spviet-retail-pos-shift-vt330-status{margin:0 18px 8px!important;padding:8px 11px!important;border-radius:12px!important;font-size:14px!important;}
.spviet-retail-pos-shift-table{width:calc(100% - 36px)!important;margin:0 18px 9px!important;}
.spviet-retail-pos-shift-table th,.spviet-retail-pos-shift-table td{padding:7px 9px!important;font-size:14px!important;line-height:1.22!important;}
.spviet-retail-pos-shift-table th{font-size:16px!important;}
.spviet-retail-pos-shift-table-history th:nth-child(1),.spviet-retail-pos-shift-table-history td:nth-child(1){width:32%!important;}
.spviet-retail-pos-shift-table-history th:nth-child(2),.spviet-retail-pos-shift-table-history td:nth-child(2){width:25%!important;max-width:260px!important;}
.spviet-retail-pos-shift-table-history th:nth-child(3),.spviet-retail-pos-shift-table-history th:nth-child(4),.spviet-retail-pos-shift-table-history td:nth-child(3),.spviet-retail-pos-shift-table-history td:nth-child(4){width:21.5%!important;}
.spviet-retail-pos-shift-table input,.spviet-retail-pos-ledger-table input,.spviet-retail-pos-ledger-table select{padding:7px 10px!important;font-size:17px!important;min-height:38px!important;}
.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row button[data-shift-vt330-refresh]{padding:7px 12px!important;font-size:12px!important;}
.spviet-retail-pos-shift-history-cell b{font-size:16px!important;margin-bottom:3px!important;}
.spviet-retail-pos-shift-history-cell small{font-size:10.5px!important;line-height:1.22!important;}
.spviet-retail-pos-shift-table .spviet-retail-pos-grand td{font-size:16px!important;}
.spviet-retail-pos-shift-table .spviet-retail-pos-grand b{font-size:21px!important;}
.spviet-retail-pos-shift-table em{padding:4px 9px!important;margin-left:9px!important;font-size:13px!important;}
.spviet-retail-pos-shift-note{margin:0 18px 8px!important;font-size:14px!important;}
.spviet-retail-pos-shift-note textarea{min-height:54px!important;margin-top:5px!important;padding:8px 10px!important;font-size:14px!important;}
.spviet-retail-pos-shift-staff{margin:0 18px 8px!important;padding:8px 10px!important;border-radius:12px!important;font-size:14px!important;}
.spviet-retail-pos-modal-actions{position:sticky!important;bottom:0!important;z-index:4!important;padding:10px 18px 12px!important;box-shadow:0 -10px 22px rgba(15,23,42,.06)!important;}
.spviet-retail-pos-modal-actions button{padding:11px 20px!important;border-radius:12px!important;}
@media(max-width:1180px){.spviet-retail-pos-shift-cards{grid-template-columns:repeat(4,minmax(0,1fr))!important;}.spviet-retail-pos-shift-cards div{min-height:60px!important;}.spviet-retail-pos-shift-table-history{display:block;overflow:auto}.spviet-retail-pos-shift-table-history thead,.spviet-retail-pos-shift-table-history tbody{min-width:850px!important;}}


/* v3.0.43 - Shift settlement row alignment / cash input fit guard
   Scope: Mở Ca / Kết Phiên layout only. Keep payment, scanner, gateway runtime, VT-330 money flow unchanged. */
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-shift{
  max-width:min(1060px,98vw)!important;
}
.spviet-retail-pos-shift-table-history{
  table-layout:fixed!important;
  border-collapse:collapse!important;
}
.spviet-retail-pos-shift-table-history th:nth-child(1),
.spviet-retail-pos-shift-table-history td:nth-child(1){
  width:34%!important;
}
.spviet-retail-pos-shift-table-history th:nth-child(2),
.spviet-retail-pos-shift-table-history td:nth-child(2){
  width:24%!important;
  max-width:none!important;
}
.spviet-retail-pos-shift-table-history th:nth-child(3),
.spviet-retail-pos-shift-table-history th:nth-child(4),
.spviet-retail-pos-shift-table-history td:nth-child(3),
.spviet-retail-pos-shift-table-history td:nth-child(4){
  width:21%!important;
}
.spviet-retail-pos-shift-table th,
.spviet-retail-pos-shift-table td{
  height:40px!important;
  min-height:40px!important;
  box-sizing:border-box!important;
}
.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row td:first-child{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 96px!important;
  align-items:center!important;
  gap:8px!important;
  min-width:0!important;
}
.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row td:first-child > span{
  display:block!important;
  min-width:0!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  line-height:1.2!important;
}
.spviet-retail-pos-vt330-row.is-left-disabled span::after{
  content:none!important;
}
.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row button[data-shift-vt330-refresh]{
  width:96px!important;
  min-width:96px!important;
  max-width:96px!important;
  padding:6px 8px!important;
  font-size:11px!important;
  line-height:1.05!important;
  text-align:center!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row.is-left-disabled button[data-shift-vt330-refresh]{
  opacity:.7!important;
}
.spviet-retail-pos-shift-table input{
  min-height:34px!important;
  height:34px!important;
  padding:5px 9px!important;
  font-size:16px!important;
  line-height:1.1!important;
}
.spviet-retail-pos-shift-history-cell{
  padding:5px 6px!important;
  vertical-align:middle!important;
}
.spviet-retail-pos-shift-history-cell b{
  font-size:15px!important;
  line-height:1.15!important;
  margin-bottom:2px!important;
}
.spviet-retail-pos-shift-history-cell small{
  font-size:10px!important;
  line-height:1.15!important;
  word-break:break-word!important;
}
.spviet-retail-pos-shift-table .spviet-retail-pos-grand td{
  height:38px!important;
  min-height:38px!important;
}
.spviet-retail-pos-shift-table .spviet-retail-pos-grand b{
  font-size:20px!important;
  line-height:1.1!important;
}
.spviet-retail-pos-shift-note textarea{
  min-height:48px!important;
}
@media(max-width:1180px){
  .spviet-retail-pos-shift-table-history th:nth-child(1),
  .spviet-retail-pos-shift-table-history td:nth-child(1){width:35%!important;}
  .spviet-retail-pos-shift-table-history th:nth-child(2),
  .spviet-retail-pos-shift-table-history td:nth-child(2){width:23%!important;}
  .spviet-retail-pos-shift-table-history th:nth-child(3),
  .spviet-retail-pos-shift-table-history th:nth-child(4),
  .spviet-retail-pos-shift-table-history td:nth-child(3),
  .spviet-retail-pos-shift-table-history td:nth-child(4){width:21%!important;}
  .spviet-retail-pos-shift-table-history{display:table!important;overflow:visible!important;}
  .spviet-retail-pos-shift-table-history thead,
  .spviet-retail-pos-shift-table-history tbody{min-width:0!important;}
}
@media(max-width:820px){
  .spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row td:first-child{
    grid-template-columns:1fr!important;
  }
  .spviet-retail-pos-shift-table tr.spviet-retail-pos-vt330-row button[data-shift-vt330-refresh]{
    width:100%!important;max-width:100%!important;
  }
}

/* v3.0.44 - Shift settlement pro format / icon table / no-rowspan history cells
   Scope: only Mở Ca / Kết Phiên layout. Keep VT-330 payment, Cash Bridge, Local Gateway runtime, scanner, checkout and transfer unchanged. */
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-shift{
  max-width:min(1420px,98.8vw)!important;
  border-radius:22px!important;
  overflow:hidden!important;
  background:#fff!important;
}
.spviet-retail-pos-shift-modal h2{
  display:flex!important;align-items:center!important;gap:12px!important;
  background:linear-gradient(135deg,#078577,#061a36)!important;color:#fff!important;
  margin:0!important;padding:15px 24px!important;font-size:27px!important;font-weight:1000!important;
}
.spviet-retail-pos-shift-modal h2 small{font-size:15px!important;color:rgba(255,255,255,.92)!important;font-weight:900!important;}
.spviet-retail-pos-shift-title-icon{display:inline-flex!important;width:38px!important;height:38px!important;align-items:center!important;justify-content:center!important;border-radius:13px!important;background:rgba(255,255,255,.16)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)!important;font-size:22px!important;}
.spviet-retail-pos-modal-help.spviet-retail-pos-shift-help{display:flex!important;align-items:center!important;gap:12px!important;margin:14px 28px 8px!important;padding:13px 16px!important;background:#f0fbff!important;border:1px solid #9eeafd!important;border-radius:13px!important;color:#073763!important;font-weight:900!important;font-size:15px!important;}
.spviet-retail-pos-help-icon{display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 28px!important;width:28px!important;height:28px!important;border-radius:999px!important;border:2px solid #60a5fa!important;color:#2563eb!important;background:#fff!important;font-weight:1000!important;font-size:18px!important;}
.spviet-retail-pos-shift-toolrow{margin:0 28px 8px!important;display:flex!important;justify-content:flex-end!important;}
.spviet-retail-pos-shift-toolrow button{border-radius:12px!important;padding:9px 18px!important;background:linear-gradient(135deg,#0f766e,#047857)!important;color:#fff!important;font-size:14px!important;font-weight:1000!important;box-shadow:0 8px 20px rgba(15,118,110,.22)!important;}
.spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro{grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:10px!important;margin:10px 28px 10px!important;}
.spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro div{display:grid!important;grid-template-columns:34px minmax(0,1fr)!important;grid-template-rows:auto auto!important;column-gap:9px!important;align-items:center!important;min-height:74px!important;padding:12px 13px!important;border-radius:12px!important;border:1px solid #dbeafe!important;background:#fff!important;box-shadow:0 7px 18px rgba(15,23,42,.08)!important;}
.spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro div i{grid-row:1 / span 2!important;display:inline-flex!important;width:28px!important;height:28px!important;align-items:center!important;justify-content:center!important;border-radius:9px!important;background:#eff6ff!important;color:#2563eb!important;font-style:normal!important;font-size:19px!important;}
.spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro div span{font-size:12px!important;color:#475569!important;font-weight:900!important;line-height:1.15!important;}
.spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro div b{font-size:18px!important;color:#0f766e!important;line-height:1.1!important;margin:0!important;}
.spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro div.strong{background:#061236!important;border-color:#061236!important;}
.spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro div.strong span{color:#fff!important;}
.spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro div.strong b{color:#facc15!important;}
.spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro div.strong i{background:rgba(255,255,255,.12)!important;color:#facc15!important;}
.spviet-retail-pos-shift-vt330-status{margin:6px 28px 9px!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro{width:calc(100% - 56px)!important;margin:0 28px 9px!important;table-layout:fixed!important;border-collapse:separate!important;border-spacing:0!important;border:1px solid #b8c7dc!important;border-radius:14px!important;overflow:hidden!important;background:#fff!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th{height:42px!important;background:linear-gradient(135deg,#3f962c,#67ad49)!important;color:#061236!important;font-size:17px!important;font-weight:1000!important;text-align:center!important;border-right:1px solid rgba(255,255,255,.28)!important;line-height:1.15!important;padding:8px 10px!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th small{display:block!important;font-size:11px!important;color:#164e19!important;font-weight:1000!important;margin-top:3px!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td{height:50px!important;min-height:50px!important;padding:7px 10px!important;border-right:1px solid #b8c7dc!important;border-bottom:1px solid #cbd5e1!important;background:#fff!important;vertical-align:middle!important;box-sizing:border-box!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro tr:last-child td{border-bottom:0!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(1),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(1){width:31%!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(2),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(2){width:24%!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(3),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(4),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(3),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(4){width:22.5%!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro tr.spviet-retail-pos-vt330-row td:first-child{display:grid!important;grid-template-columns:minmax(0,1fr) 128px!important;align-items:center!important;gap:12px!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro tr.spviet-retail-pos-vt330-row td:first-child > .spviet-retail-pos-shift-label,
.spviet-retail-pos-shift-label{display:flex!important;align-items:center!important;gap:9px!important;min-width:0!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;color:#0f172a!important;font-weight:900!important;line-height:1.18!important;}
.spviet-retail-pos-shift-row-icon{display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 31px!important;width:31px!important;height:31px!important;border-radius:8px!important;background:#eff6ff!important;color:#2563eb!important;border:1px solid #bfdbfe!important;font-size:17px!important;}
.spviet-retail-pos-left-off-badge{display:inline-flex!important;align-items:center!important;justify-content:center!important;margin-left:2px!important;padding:2px 7px!important;border-radius:999px!important;background:#e2e8f0!important;color:#475569!important;font-size:10px!important;font-style:normal!important;font-weight:1000!important;white-space:nowrap!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro tr.spviet-retail-pos-vt330-row button[data-shift-vt330-refresh]{width:128px!important;min-width:128px!important;max-width:128px!important;height:36px!important;border-radius:11px!important;padding:0 10px!important;background:#0f766e!important;color:#fff!important;font-size:13px!important;font-weight:1000!important;box-shadow:0 8px 16px rgba(15,118,110,.20)!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro tr.spviet-retail-pos-vt330-row.is-left-disabled button[data-shift-vt330-refresh]{background:#94a3b8!important;color:#e2e8f0!important;box-shadow:none!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro input{width:100%!important;height:42px!important;min-height:42px!important;padding:6px 12px!important;border-radius:8px!important;border:1px solid #f59e0b!important;font-size:18px!important;font-weight:900!important;background:#fff400!important;color:#061236!important;box-shadow:inset 0 1px 2px rgba(15,23,42,.06)!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro input[readonly]{background:#f1f5f9!important;border-color:#cbd5e1!important;color:#64748b!important;}
.spviet-retail-pos-shift-history-empty-cell{color:#0f172a!important;text-align:center!important;font-size:20px!important;font-weight:900!important;background:#fff!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-shift-history-cell{background:#fff!important;text-align:center!important;padding:6px 8px!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-shift-history-cell b{font-size:18px!important;color:#0f766e!important;margin:0 0 4px!important;line-height:1.1!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-shift-history-cell small{font-size:11px!important;color:#64748b!important;line-height:1.15!important;font-weight:900!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-grand td{height:42px!important;min-height:42px!important;background:#fff!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-grand td:first-child{font-size:17px!important;font-weight:1000!important;color:#061236!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-grand b{font-size:23px!important;color:#dc2626!important;line-height:1.1!important;}
.spviet-retail-pos-shift-note{margin:0 28px 8px!important;color:#0f172a!important;font-weight:1000!important;}
.spviet-retail-pos-shift-note textarea{min-height:58px!important;border-radius:9px!important;padding:12px 14px!important;font-size:15px!important;}
.spviet-retail-pos-shift-staff{margin:0 28px 9px!important;}
.spviet-retail-pos-modal-actions{padding:10px 28px 12px!important;background:#fff!important;}
@media(max-width:1180px){
  .spviet-retail-pos-shift-cards.spviet-retail-pos-shift-cards-pro{grid-template-columns:repeat(4,minmax(0,1fr))!important;}
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro{display:table!important;overflow:visible!important;}
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(1),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(1){width:32%!important;}
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(2),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(2){width:22%!important;}
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(3),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(4),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(3),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(4){width:23%!important;}
}


/* v3.0.45 - Shift settlement itemized history / no-overlap cash rows
   Scope: only POS cashier Mở Ca / Kết Phiên layout. Keep VT-330 payment, Cash Bridge,
   Local Gateway runtime, scanner, checkout, transfer and DB schema unchanged. */
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-shift{
  width:calc(100vw - 16px)!important;
  max-width:min(1420px,calc(100vw - 16px))!important;
  max-height:calc(100dvh - 12px)!important;
  overflow-x:hidden!important;
}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro{
  width:calc(100% - 56px)!important;
  max-width:calc(100% - 56px)!important;
  table-layout:fixed!important;
}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(1),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(1){width:31%!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(2),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(2){width:25%!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(3),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(4),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(3),
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(4){width:22%!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td{height:47px!important;min-height:47px!important;padding:6px 10px!important;overflow:hidden!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro tr.spviet-retail-pos-vt330-row td:first-child{display:table-cell!important;}
.spviet-retail-pos-shift-money-line{
  display:grid!important;
  grid-template-columns:34px minmax(0,1fr) 124px!important;
  align-items:center!important;
  gap:10px!important;
  width:100%!important;
  min-width:0!important;
  min-height:40px!important;
}
.spviet-retail-pos-shift-money-line.is-reserve{grid-template-columns:34px minmax(0,1fr)!important;}
.spviet-retail-pos-shift-money-line .spviet-retail-pos-shift-row-icon{grid-column:1!important;}
.spviet-retail-pos-shift-money-title{
  grid-column:2!important;
  display:block!important;
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:normal!important;
  line-height:1.16!important;
  font-size:15px!important;
  font-weight:950!important;
  color:#0f172a!important;
}
.spviet-retail-pos-shift-money-title b{font-weight:950!important;}
.spviet-retail-pos-vt330-row.is-left-disabled span::after{content:none!important;display:none!important;}
.spviet-retail-pos-shift-money-line button[data-shift-vt330-refresh]{
  grid-column:3!important;
  justify-self:end!important;
  width:124px!important;
  min-width:124px!important;
  max-width:124px!important;
  height:34px!important;
  line-height:1!important;
  white-space:nowrap!important;
}
.spviet-retail-pos-shift-money-line button[data-shift-vt330-refresh]:disabled{cursor:not-allowed!important;}
.spviet-retail-pos-shift-money-line .spviet-retail-pos-left-off-badge{
  display:inline-flex!important;
  vertical-align:middle!important;
  margin-left:6px!important;
  transform:translateY(-1px)!important;
}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro input{height:38px!important;min-height:38px!important;font-size:18px!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-shift-history-cell{padding:4px 6px!important;line-height:1.12!important;overflow:hidden!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-shift-history-part b{
  display:block!important;
  font-size:16px!important;
  color:#0f172a!important;
  margin:0!important;
  line-height:1.1!important;
}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-shift-history-total b{
  display:block!important;
  font-size:17px!important;
  color:#0f766e!important;
  margin:0!important;
  line-height:1.1!important;
}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-shift-history-meta small{
  display:block!important;
  font-size:10.5px!important;
  color:#64748b!important;
  font-weight:900!important;
  line-height:1.16!important;
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.spviet-retail-pos-shift-history-dash{display:block!important;color:#64748b!important;font-weight:900!important;font-size:13px!important;line-height:1.15!important;text-align:center!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-shift-meta-row td{height:42px!important;min-height:42px!important;}
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-grand b[data-shift-open-total],
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-grand b[data-shift-close-total],
.spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro .spviet-retail-pos-grand b[data-shift-close-diff]{font-size:22px!important;}
@media(max-width:1180px){
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(1),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(1){width:34%!important;}
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(2),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(2){width:24%!important;}
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(3),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro th:nth-child(4),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(3),
  .spviet-retail-pos-shift-table.spviet-retail-pos-shift-table-pro td:nth-child(4){width:21%!important;}
  .spviet-retail-pos-shift-money-line{grid-template-columns:30px minmax(0,1fr) 108px!important;gap:7px!important;}
  .spviet-retail-pos-shift-money-line.is-reserve{grid-template-columns:30px minmax(0,1fr)!important;}
  .spviet-retail-pos-shift-money-line button[data-shift-vt330-refresh]{width:108px!important;min-width:108px!important;max-width:108px!important;font-size:12px!important;padding:0 8px!important;}
  .spviet-retail-pos-shift-money-title{font-size:13.5px!important;}
  .spviet-retail-pos-shift-row-icon{width:28px!important;height:28px!important;flex-basis:28px!important;font-size:15px!important;}
}

/* v3.0.56 - POS Auto Payment VT-330 change-return flow restore.
   Scope: only POS cashier Auto Payment / Tiền Mặt / VT-330 confirmation flow. */
.spviet-retail-pos-cash-change-return-modal .cash-change-summary{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
}
.spviet-retail-pos-cash-change-return-modal .cash-change-summary b{
  color:#dc2626!important;
  font-size:22px!important;
}
.spviet-retail-pos-cash-change-return-modal .cash-change-progress{
  margin:18px 0 6px!important;
  padding:18px 20px!important;
  border:2px dashed #93c5fd!important;
  background:#eff6ff!important;
  border-radius:18px!important;
  color:#0f172a!important;
  text-align:center!important;
  display:flex!important;
  flex-direction:column!important;
  gap:7px!important;
}
.spviet-retail-pos-cash-change-return-modal .cash-change-progress b{
  font-size:18px!important;
  color:#1d4ed8!important;
}
.spviet-retail-pos-cash-change-return-modal.is-error .cash-machine-status.danger{
  color:#b91c1c!important;
  background:#fee2e2!important;
  border:1px solid #fecaca!important;
  border-radius:14px!important;
  padding:12px!important;
}
.spviet-retail-pos-cash-change-return-modal [data-cash-change-retry]{
  min-width:260px!important;
  background:#2563eb!important;
  color:#fff!important;
}
.receipt-choice-actions button[data-receipt-print],
.receipt-choice-actions button[data-receipt-none],
.receipt-choice-actions button[data-receipt-electronic]{
  min-height:52px!important;
  font-size:17px!important;
  font-weight:900!important;
}
@media(max-width:900px){
  .spviet-retail-pos-cash-change-return-modal .cash-change-summary{grid-template-columns:1fr!important;}
}

/* v3.0.58 POS VT-330 receipt QR polish / payment freeze evidence */
.spviet-retail-pos-e-receipt-v3058{text-align:center}.spviet-retail-pos-e-receipt-v3058 .spviet-retail-pos-e-guide{font-size:16px;font-weight:700}.spviet-retail-pos-e-receipt-v3058 .spviet-retail-pos-e-qr{display:flex;flex-direction:column;align-items:center;gap:10px;margin:14px auto}.spviet-retail-pos-e-receipt-v3058 .spviet-retail-pos-e-qr img{width:min(320px,70vw);height:min(320px,70vw);border:10px solid #fff;border-radius:18px;box-shadow:0 16px 38px rgba(15,23,42,.18)}.spviet-retail-pos-e-receipt-v3058 .spviet-retail-pos-e-expire{background:#f8fafc;border:1px solid #dbeafe;border-radius:14px;padding:12px}.spviet-retail-pos-cash-change-return-modal[data-cash-status="no_regression_guard"]{border:2px solid #ef4444}.spviet-retail-pos-cash-change-return-modal[data-cash-status="no_regression_guard"] .cash-machine-safety-note{font-size:15px;font-weight:700}

/* v3.0.59 POS VT-330 persistent cash error lock / manager manual resolve */
.spviet-retail-pos-cash-money-lock-modal{border:3px solid #dc2626!important;box-shadow:0 24px 80px rgba(127,29,29,.28)!important}
.spviet-retail-pos-cash-money-lock-modal h2{color:#991b1b!important}
.spviet-retail-pos-cash-money-lock-modal .cash-machine-status.danger{background:#fee2e2!important;border:1px solid #fecaca!important;color:#991b1b!important;border-radius:16px!important;padding:14px!important;font-weight:900!important}
.spviet-retail-pos-cash-money-lock-modal .cash-machine-safety-note{background:#fff7ed!important;border:1px solid #fed7aa!important;color:#9a3412!important;border-radius:16px!important;padding:14px!important;font-weight:800!important}
.spviet-retail-pos-cash-admin-box{margin-top:16px!important;padding:16px!important;border:2px dashed #f59e0b!important;background:#fffbeb!important;border-radius:18px!important;text-align:left!important}
.spviet-retail-pos-cash-admin-box label{display:block!important;margin:10px 0!important;font-weight:800!important;color:#0f172a!important}
.spviet-retail-pos-cash-admin-box input[type="password"],.spviet-retail-pos-cash-admin-box input[type="text"]{width:100%!important;min-height:48px!important;border:2px solid #334155!important;border-radius:12px!important;padding:10px 12px!important;font-size:17px!important}


/* v3.0.62 POS VT-330 pending sync receipt closeout / change-return UI refresh */
.spviet-retail-pos-cash-change-return-modal-v3062{max-width:980px!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-hero{display:grid;grid-template-columns:180px 1fr;gap:24px;align-items:center;margin-bottom:16px}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-hero-icon{width:150px;height:150px;border-radius:36px;background:linear-gradient(135deg,#dbeafe,#ecfeff);display:flex;align-items:center;justify-content:center;font-size:76px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.85),0 18px 40px rgba(37,99,235,.16)}
.spviet-retail-pos-cash-change-return-modal-v3062 h2{font-size:40px!important;line-height:1.08!important;margin:8px 0 10px!important;color:#0f2248!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-machine-status{font-size:18px!important;font-weight:800!important;color:#4a6794!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-summary-v3062{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:20px!important;margin-top:18px!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-summary-v3062>div{position:relative;background:#fff!important;border:1px solid #dbeafe!important;border-radius:26px!important;min-height:148px!important;padding:26px 20px 24px!important;box-shadow:0 16px 40px rgba(15,23,42,.07)!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-summary-v3062>div:before{content:'💳';display:flex;align-items:center;justify-content:center;width:68px;height:68px;border-radius:999px;background:linear-gradient(135deg,#eff6ff,#ecfeff);font-size:34px;margin:0 auto 12px}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-summary-v3062>div.received:before{content:'💵'}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-summary-v3062>div.change:before{content:'🪙'}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-summary-v3062 span{display:block;text-align:center;font-size:16px!important;color:#475569!important;font-weight:900!important;margin-bottom:10px!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-summary-v3062 b{display:block;text-align:center;font-size:30px!important;color:#ef4444!important;line-height:1.08!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-progress{margin-top:26px!important;border-top:2px solid #dbeafe!important;border-left:0!important;border-right:0!important;border-bottom:0!important;background:linear-gradient(180deg,rgba(239,246,255,.35),rgba(255,255,255,.96))!important;padding:22px 18px 10px!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:12px!important;flex-direction:column!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-progress b{font-size:20px!important;color:#2563eb!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-progress span{font-size:18px!important;color:#64748b!important}
.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-spinner{width:34px;height:34px;border-radius:999px;border:4px solid #bfdbfe;border-top-color:#2563eb;animation:spvietSpin .9s linear infinite}
@keyframes spvietSpin{to{transform:rotate(360deg)}}
.spviet-retail-pos-server-retry-modal{text-align:center;max-width:760px;margin:0 auto}.spviet-retail-pos-server-retry-modal h2{font-size:30px;margin:0 0 10px;color:#0f2248}.spviet-retail-pos-server-retry-modal .server-retry-guide{font-size:17px;font-weight:700;color:#475569}.spviet-retail-pos-server-retry-modal .server-retry-box{margin:18px 0;padding:18px;border-radius:18px;background:#eff6ff;border:1px solid #bfdbfe;display:flex;flex-direction:column;gap:8px}.spviet-retail-pos-server-retry-modal .server-retry-box b{font-size:20px;color:#1d4ed8}.spviet-retail-pos-server-retry-modal .server-retry-box span{font-size:15px;color:#334155}.spviet-retail-pos-server-retry-modal .server-retry-hint{font-size:15px;color:#64748b}.spviet-retail-pos-e-receipt-v3062{text-align:center}.spviet-retail-pos-e-receipt-v3062 h2{font-size:30px;color:#0f766e;margin:0 0 10px}.spviet-retail-pos-e-receipt-v3062 .spviet-retail-pos-e-guide{font-size:16px;font-weight:700;color:#334155}.spviet-retail-pos-e-receipt-v3062 .spviet-retail-pos-e-qr{display:flex;flex-direction:column;align-items:center;gap:10px;margin:16px auto}.spviet-retail-pos-e-receipt-v3062 .spviet-retail-pos-e-qr img{width:min(320px,70vw);height:min(320px,70vw);border:10px solid #fff;border-radius:18px;box-shadow:0 16px 38px rgba(15,23,42,.18)}
@media(max-width:900px){.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-hero{grid-template-columns:1fr;justify-items:center;text-align:center}.spviet-retail-pos-cash-change-return-modal-v3062 .cash-change-summary-v3062{grid-template-columns:1fr!important}.spviet-retail-pos-cash-change-return-modal-v3062 h2{font-size:32px!important}}


/* v3.0.63 e-receipt official recovery guard */
.spviet-retail-pos-e-receipt-v3063{text-align:center}.spviet-retail-pos-e-receipt-v3063 h2{font-size:30px;color:#0f766e;margin:0 0 12px}.spviet-retail-pos-e-receipt-v3063 .spviet-retail-pos-e-guide{font-size:16px;font-weight:800;color:#334155;line-height:1.55}.spviet-retail-pos-e-receipt-v3063 .spviet-retail-pos-e-error{margin:16px auto;padding:16px 18px;border-radius:18px;border:1px solid #fecaca;background:#fef2f2;color:#991b1b;max-width:720px;display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap}.spviet-retail-pos-e-receipt-v3063 .spviet-retail-pos-e-error b{font-size:16px}.spviet-retail-pos-e-receipt-v3063 .spviet-retail-pos-e-error span{font-size:15px}.spviet-retail-pos-e-receipt-v3063 .spviet-retail-pos-e-qr{display:flex;flex-direction:column;align-items:center;gap:10px;margin:16px auto}.spviet-retail-pos-e-receipt-v3063 .spviet-retail-pos-e-qr img{width:min(320px,70vw);height:min(320px,70vw);border:10px solid #fff;border-radius:18px;box-shadow:0 16px 38px rgba(15,23,42,.18)}

/* v3.0.64 VT-330 paid cash commit lock / official order before receipt */
.spviet-retail-pos-paid-cash-commit-lock{max-width:920px;margin:0 auto;text-align:center;border:3px solid #dc2626;border-radius:26px;padding:20px;background:#fff;box-shadow:0 24px 80px rgba(127,29,29,.25)}
.spviet-retail-pos-paid-cash-commit-lock h2{font-size:30px;line-height:1.15;color:#991b1b;margin:8px 0 14px;font-weight:1000}
.spviet-retail-pos-paid-cash-commit-lock .danger{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:16px;padding:14px 16px;font-weight:900;line-height:1.45}
.spviet-retail-pos-paid-cash-commit-lock label{display:block;text-align:left;margin:12px auto 6px;max-width:660px;font-weight:900;color:#0f172a}
.spviet-retail-pos-paid-cash-commit-lock input[type="password"],.spviet-retail-pos-paid-cash-commit-lock input[type="text"]{width:min(660px,100%);min-height:50px;border:2px solid #334155;border-radius:14px;padding:10px 12px;font-size:17px}
.spviet-retail-pos-paid-cash-commit-lock .spviet-retail-pos-e-error{margin:14px auto;padding:14px 16px;border-radius:16px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;display:flex;gap:8px;justify-content:center;flex-wrap:wrap;font-weight:800}
.spviet-retail-pos-paid-cash-commit-lock .receipt-choice-amounts{margin:16px 0!important}

/* v3.0.65 - VT-330 payment reconciliation evidence */
.spviet-retail-pos-reconcile-evidence .spviet-retail-pos-e-ok{margin:10px 0 14px;padding:12px 14px;border-radius:14px;border:1px solid #bbf7d0;background:#f0fdf4;color:#166534;font-weight:900;text-align:center}
.spviet-retail-pos-shift-toolrow [data-shift-revenue-evidence]{background:#eef6ff;border:1px solid #bfdbfe;color:#1d4ed8;font-weight:900;border-radius:12px;padding:10px 14px;margin-left:8px}

/* v3.0.72.4 POS scanner blocking product alert / Gateway not-found status hotfix */
.spviet-retail-pos-blocking-alert{width:min(580px,calc(100vw - 56px));margin:0 auto;text-align:center;background:#fff;border-radius:22px;padding:24px 28px 24px;box-shadow:0 28px 78px rgba(15,23,42,.26);border:1px solid rgba(226,232,240,.95)}
.spviet-retail-pos-blocking-alert-icon{width:88px;height:88px;border-radius:999px;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#ef4444,#dc2626);color:#fff;font-size:54px;font-weight:1000;line-height:1;box-shadow:0 0 0 12px rgba(239,68,68,.14),0 18px 36px rgba(220,38,38,.20)}
.spviet-retail-pos-blocking-alert h2{margin:6px 0 10px!important;font-size:27px!important;line-height:1.16!important;color:#dc2626!important;font-weight:1000!important;letter-spacing:-.02em!important}
.spviet-retail-pos-blocking-alert-message{margin:0 auto 12px!important;padding-top:14px!important;border-top:1px solid #e5e7eb!important;color:#111827!important;font-size:18px!important;font-weight:800!important;line-height:1.44!important;max-width:500px!important}
.spviet-retail-pos-blocking-alert ul{margin:10px auto 14px!important;padding:0!important;list-style:none!important;text-align:left!important;max-width:500px!important;color:#111827!important;font-size:17px!important;line-height:1.48!important}
.spviet-retail-pos-blocking-alert li{position:relative;margin:6px 0!important;padding-left:26px!important;font-weight:650!important}
.spviet-retail-pos-blocking-alert li:before{content:'';position:absolute;left:4px;top:.72em;width:8px;height:8px;border-radius:999px;background:#dc2626;box-shadow:0 0 0 5px rgba(220,38,38,.12)}
.spviet-retail-pos-blocking-alert code{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:10px;padding:2px 8px;font-weight:900}
.spviet-retail-pos-blocking-alert-ok{width:min(460px,100%);min-height:64px;border:0;border-radius:13px;background:linear-gradient(180deg,#ef4444,#dc2626);color:#fff;font-size:23px;font-weight:1000;letter-spacing:.02em;box-shadow:0 16px 32px rgba(220,38,38,.23);cursor:pointer}
.spviet-retail-pos-blocking-alert-ok:active{transform:translateY(1px)}
@media(max-width:700px){.spviet-retail-pos-blocking-alert{width:calc(100vw - 28px);padding:26px 20px 22px}.spviet-retail-pos-blocking-alert-icon{width:94px;height:94px;font-size:58px}.spviet-retail-pos-blocking-alert h2{font-size:26px!important}.spviet-retail-pos-blocking-alert-message{font-size:18px!important}.spviet-retail-pos-blocking-alert ul{font-size:16px!important}.spviet-retail-pos-blocking-alert-ok{min-height:64px;font-size:21px}}

/* v3.0.72.6 POS scanner closeout / Gateway stability archive / Manager product repair deep-link verify */
.spviet-retail-pos-product-repair-shortcuts{margin:12px auto 14px;padding:0;border-radius:16px;border:1px solid #fed7aa;background:#fff7ed;max-width:500px;text-align:left}
.spviet-retail-pos-product-repair-shortcuts summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;color:#9a3412;font-size:15px;font-weight:1000;padding:12px 14px;text-align:left}.spviet-retail-pos-product-repair-shortcuts summary::-webkit-details-marker{display:none}.spviet-retail-pos-product-repair-shortcuts[open] summary b{transform:rotate(180deg)}
.spviet-retail-pos-product-repair-shortcuts>small{display:block;color:#7c2d12;font-size:12px;font-weight:750;line-height:1.42;text-align:center;padding:0 14px 10px}
.spviet-retail-pos-product-repair-shortcuts>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;padding:0 12px 12px}
.spviet-retail-pos-product-repair-shortcuts button{min-height:38px;border:1px solid #fdba74;border-radius:11px;background:#fff;color:#9a3412;font-weight:950;font-size:12px;cursor:pointer;box-shadow:0 8px 18px rgba(154,52,18,.08)}
.spviet-retail-pos-product-repair-shortcuts button:active{transform:translateY(1px)}
.spviet-retail-pos-scanner-uat-panel,.spviet-retail-pos-gateway-offline-panel,.spviet-retail-pos-scanner-closeout-panel{max-width:980px;margin:0 auto;text-align:left}
.spviet-retail-pos-scanner-uat-panel h2,.spviet-retail-pos-gateway-offline-panel h2,.spviet-retail-pos-scanner-closeout-panel h2{text-align:center;font-size:30px;color:#0f172a;margin:0 0 10px;font-weight:1000}
.spviet-retail-pos-scanner-uat-panel p,.spviet-retail-pos-gateway-offline-panel p,.spviet-retail-pos-scanner-closeout-panel p{font-size:15px;line-height:1.55;color:#334155;font-weight:750}
.spviet-retail-pos-uat-actions{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:16px!important}
.spviet-retail-pos-uat-actions button{min-height:46px;border:1px solid #bfdbfe;border-radius:14px;background:#eff6ff;color:#1d4ed8;font-weight:950;padding:10px 15px;cursor:pointer}
.spviet-retail-pos-uat-actions button:first-child{background:linear-gradient(180deg,#10b981,#059669);border-color:#059669;color:#fff}
.spviet-retail-pos-gateway-offline-panel ol{background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;padding:14px 16px 14px 38px;color:#0f172a;font-weight:750;line-height:1.55}
@media(max-width:760px){.spviet-retail-pos-product-repair-shortcuts>div{grid-template-columns:repeat(2,minmax(0,1fr))}.spviet-retail-pos-uat-actions button{width:100%}}

/* v3.0.72.7 POS scanner real-store sign-off / operator guide / Gateway cache freeze */
.spviet-retail-pos-scanner-signoff-panel,.spviet-retail-pos-product-guide-panel,.spviet-retail-pos-gateway-freeze-panel{max-width:1040px;margin:0 auto;text-align:left}
.spviet-retail-pos-scanner-signoff-panel h2,.spviet-retail-pos-product-guide-panel h2,.spviet-retail-pos-gateway-freeze-panel h2{text-align:center;font-size:30px;color:#0f172a;margin:0 0 10px;font-weight:1000}
.spviet-retail-pos-scanner-signoff-panel p,.spviet-retail-pos-product-guide-panel p,.spviet-retail-pos-gateway-freeze-panel p{font-size:15px;line-height:1.55;color:#334155;font-weight:750}
.spviet-retail-pos-signoff-form{background:#f8fafc;border:1px solid #dbeafe;border-radius:18px;padding:16px;margin:14px 0}
.spviet-retail-pos-signoff-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px}
.spviet-retail-pos-signoff-grid label,.spviet-retail-pos-signoff-note{display:flex;flex-direction:column;gap:6px;color:#0f172a;font-weight:950;font-size:13px}
.spviet-retail-pos-signoff-grid input,.spviet-retail-pos-signoff-note textarea{border:1px solid #cbd5e1;border-radius:12px;padding:10px 12px;font-weight:800;background:#fff;color:#0f172a}
.spviet-retail-pos-signoff-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.spviet-retail-pos-signoff-checks label{display:flex;align-items:flex-start;gap:10px;border:1px solid #e2e8f0;background:#fff;border-radius:14px;padding:10px 12px;color:#0f172a;font-weight:800;line-height:1.38}
.spviet-retail-pos-signoff-checks input[type="checkbox"]{width:20px;height:20px;accent-color:#059669;flex:0 0 auto}
.spviet-retail-pos-guide-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0}
.spviet-retail-pos-guide-card{border:1px solid #bfdbfe;background:linear-gradient(180deg,#eff6ff,#fff);border-radius:18px;padding:16px;box-shadow:0 12px 26px rgba(37,99,235,.08)}
.spviet-retail-pos-guide-card h3{margin:0 0 8px;color:#1e40af;font-size:18px;font-weight:1000}
.spviet-retail-pos-guide-card ol{margin:0;padding-left:22px;color:#0f172a;font-weight:800;line-height:1.55}
@media(max-width:760px){.spviet-retail-pos-signoff-grid,.spviet-retail-pos-signoff-checks,.spviet-retail-pos-guide-grid{grid-template-columns:1fr}}

/* v3.0.74 Shift staff meta: show opener/closer below shift code/date in Vào Ca and Kết Phiên history cells */
.spviet-retail-pos-shift-history-meta small{display:block;line-height:1.35;color:#64748b;font-weight:800}
.spviet-retail-pos-shift-staff{margin:10px 0 8px;padding:9px 12px;border:1px solid #bbf7d0;background:#ecfdf5;color:#065f46;border-radius:12px;font-weight:850}


/* v3.0.97 POS Price Source Badge Pro */
.spviet-retail-pos-price-source-badge{display:inline-flex;align-items:center;justify-content:center;gap:4px;width:max-content;max-width:100%;margin:4px 0 3px;padding:3px 8px;border-radius:999px;border:1px solid #cbd5e1;background:#f8fafc;color:#334155;font-size:10px;font-weight:1000;letter-spacing:.04em;line-height:1.15;white-space:nowrap}
.spviet-retail-pos-price-source-badge.branch{border-color:#86efac;background:#ecfdf5;color:#166534}
.spviet-retail-pos-price-source-badge.global{border-color:#bfdbfe;background:#eff6ff;color:#1d4ed8}
.spviet-retail-pos-price-source-badge.cache{border-color:#fed7aa;background:#fff7ed;color:#9a3412}
.spviet-retail-pos-search-row .price,.spviet-retail-pos-fast-grid-card strong{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.spviet-retail-pos-fast-grid-card .spviet-retail-pos-price-source-badge{align-self:center}.spviet-retail-pos-cart-table td.name .spviet-retail-pos-price-source-badge{display:flex;margin:5px 0 6px}.spviet-retail-pos-price-source-popup{margin-top:8px}

/* v3.0.106 branch mismatch hard guard */
.spviet-retail-pos-branch-mismatch-banner{display:flex;align-items:center;gap:14px;margin:10px 6px 12px;padding:16px 18px;border:3px solid #dc2626;border-radius:18px;background:linear-gradient(135deg,#fff1f2,#fee2e2);color:#7f1d1d;box-shadow:0 14px 34px rgba(220,38,38,.18);position:relative;z-index:20}
.spviet-retail-pos-branch-mismatch-banner[hidden]{display:none!important}
.spviet-retail-pos-branch-mismatch-banner b{font-size:18px;letter-spacing:.04em}
.spviet-retail-pos-branch-mismatch-banner p{margin:4px 0 0;font-size:14px;font-weight:700}
.spviet-retail-pos-branch-mismatch-icon{font-size:32px;line-height:1}
.spviet-retail-pos-app.spviet-pos-branch-mismatch-locked .spviet-retail-pos-pay{background:#991b1b!important;color:#fff!important;cursor:not-allowed!important;box-shadow:0 0 0 4px rgba(220,38,38,.18)!important}
.spviet-retail-pos-app.spviet-pos-branch-mismatch-locked .spviet-retail-pos-header-branch{outline:3px solid #ef4444;background:#450a0a!important;color:#fff!important}

/* v3.0.416 POS Maintenance / Cleaning / Replacement local-first bridge */
.spviet-pos-maintenance-alert-v30416{margin:10px 12px 0;border:1px solid #f59e0b;background:linear-gradient(135deg,#fff7ed,#fffbeb);color:#7c2d12;border-radius:18px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 12px 28px rgba(245,158,11,.16);font-weight:900;z-index:8;position:relative}.spviet-pos-maintenance-alert-v30416 b{display:block;color:#9a3412}.spviet-pos-maintenance-alert-v30416 span{display:block;color:#92400e;font-size:13px;margin-top:3px}.spviet-pos-maintenance-alert-actions{display:flex;gap:8px;flex-wrap:wrap}.spviet-pos-maintenance-alert-actions button{border:0;border-radius:14px;padding:10px 13px;font-weight:900;cursor:pointer;background:#fff;color:#9a3412}.spviet-pos-maintenance-alert-actions button:first-child{background:#ea580c;color:#fff}.spviet-pos-maintenance-modal-v30416{text-align:left}.spviet-pos-maintenance-modal-v30416 h2{margin:0 0 8px;color:#0f172a}.spviet-pos-maintenance-modal-v30416 p{color:#475569}.spviet-pos-maintenance-modal-v30416 section{border:1px solid #e2e8f0;border-radius:18px;padding:14px;margin:12px 0;background:#fbfdff}.spviet-pos-maintenance-modal-v30416 section h3{margin:0 0 10px;color:#0f766e}.spviet-pos-maintenance-grid-v30416{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.spviet-pos-maintenance-grid-v30416 button,.spviet-pos-maintenance-tasklist-v30416 button{border:1px solid #dbeafe;border-radius:18px;background:#f8fafc;padding:14px;text-align:left;cursor:pointer;box-shadow:0 8px 18px rgba(15,23,42,.06);font-weight:900}.spviet-pos-maintenance-grid-v30416 button:hover,.spviet-pos-maintenance-tasklist-v30416 button:hover{transform:translateY(-1px);border-color:#0f766e;background:#ecfdf5}.spviet-pos-maintenance-grid-v30416 button:disabled{opacity:.48;cursor:not-allowed;filter:grayscale(.4)}.spviet-pos-maintenance-grid-v30416 b,.spviet-pos-maintenance-tasklist-v30416 b{display:block;color:#0f172a}.spviet-pos-maintenance-grid-v30416 small,.spviet-pos-maintenance-tasklist-v30416 span{display:block;color:#64748b;margin-top:5px;font-size:13px}.spviet-pos-maintenance-status-v30416{background:#eef6ff;border:1px solid #cfe5ff;color:#075985;border-radius:14px;padding:10px 12px;font-weight:900;margin:10px 0}.spviet-pos-maintenance-form-v30416{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.spviet-pos-maintenance-form-v30416 label,.spviet-pos-maintenance-modal-v30416 label{display:block;color:#334155;font-weight:900;margin:8px 0}.spviet-pos-maintenance-form-v30416 input,.spviet-pos-maintenance-form-v30416 select,.spviet-pos-maintenance-form-v30416 textarea,.spviet-pos-maintenance-modal-v30416 input,.spviet-pos-maintenance-modal-v30416 textarea{width:100%;border:1px solid #cbd5e1;border-radius:14px;padding:11px 12px;margin-top:6px;font:inherit;background:#fff}.spviet-pos-maintenance-form-v30416 textarea{min-height:86px}.spviet-pos-maintenance-list-v30416{display:grid;gap:8px;padding-left:0;list-style:none}.spviet-pos-maintenance-list-v30416 li{border:1px solid #fee2e2;background:#fff7f7;border-radius:14px;padding:10px}.spviet-pos-maintenance-list-v30416 b{display:block;color:#991b1b}.spviet-pos-maintenance-list-v30416 small{display:block;color:#64748b}.spviet-pos-maintenance-tasklist-v30416{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin:12px 0}.spviet-pos-maintenance-checks-v30416{display:grid;gap:8px;border:1px solid #e2e8f0;border-radius:16px;padding:12px;background:#f8fafc;margin:12px 0}.spviet-pos-maintenance-checks-v30416 label{display:flex;align-items:center;gap:8px;margin:0!important}@media(max-width:760px){.spviet-pos-maintenance-alert-v30416{align-items:flex-start;flex-direction:column}.spviet-pos-maintenance-form-v30416{grid-template-columns:1fr}.spviet-pos-maintenance-grid-v30416,.spviet-pos-maintenance-tasklist-v30416{grid-template-columns:1fr}.spviet-pos-maintenance-modal-v30416 .spviet-retail-pos-modal-actions{display:grid;grid-template-columns:1fr;gap:8px}}
/* v3.0.424 POS Maintenance upcoming schedule polish */
.spviet-pos-maintenance-grid-v30416 button{background:linear-gradient(135deg,#ffffff,#eef6ff)!important;border:1px solid #c7ddff!important;box-shadow:0 12px 26px rgba(15,23,42,.10), inset 0 1px 0 rgba(255,255,255,.75)!important;min-height:86px;transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease}
.spviet-pos-maintenance-grid-v30416 button:hover{transform:translateY(-2px);box-shadow:0 16px 32px rgba(15,23,42,.16)!important;border-color:#0f766e!important;background:linear-gradient(135deg,#ecfdf5,#ffffff)!important}
.spviet-pos-maintenance-grid-v30416 button b{font-size:15px;line-height:1.35}.spviet-pos-maintenance-grid-v30416 button small{font-weight:800;color:#64748b}
.spviet-pos-maintenance-toolbar-v30424{display:grid;grid-template-columns:1fr 220px;gap:10px;align-items:end;margin:12px 0;padding:12px;border-radius:16px;border:1px solid #dbeafe;background:#f8fbff}
.spviet-pos-maintenance-toolbar-v30424 label{margin:0!important}.spviet-pos-maintenance-toolbar-v30424 strong{display:block;color:#075985;margin-top:6px}.spviet-pos-maintenance-toolbar-v30424 select{width:100%;border:1px solid #cbd5e1;border-radius:14px;padding:10px 12px;margin-top:6px;background:#fff;font:inherit;font-weight:900}
.spviet-pos-maintenance-upcoming-v30424 button{background:linear-gradient(135deg,#fff,#f8fafc)!important}.spviet-pos-maintenance-status-v30416{font-size:15px;background:linear-gradient(135deg,#eef6ff,#eff6ff);box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
@media(max-width:760px){.spviet-pos-maintenance-toolbar-v30424{grid-template-columns:1fr}}

/* v3.0.463: Preflight workday memory / WARN action guidance */
.spviet-retail-pos-preflight-ok{margin:12px 0;padding:10px 12px;border:1px solid #bbf7d0;background:#f0fdf4;border-radius:12px;color:#14532d}
.spviet-retail-pos-preflight-actions{margin:12px 0;display:grid;gap:8px;text-align:left}
.spviet-retail-pos-preflight-actions h3{margin:0 0 4px;font-size:15px}
.spviet-retail-pos-preflight-action{border:1px solid #fde68a;background:#fffbeb;border-radius:12px;padding:10px 12px;display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center}
.spviet-retail-pos-preflight-action.danger{border-color:#fecaca;background:#fef2f2}
.spviet-retail-pos-preflight-action span{font-weight:900;font-size:12px;border-radius:999px;padding:3px 8px;background:#fff7ed;color:#92400e}
.spviet-retail-pos-preflight-action.danger span{background:#fee2e2;color:#991b1b}
.spviet-retail-pos-preflight-action p{grid-column:1/-1;margin:0;color:#334155;font-size:13px;line-height:1.45}
.spviet-retail-pos-modal-actions-line{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}

/* v3.0.468 Staff Identity quick switch + POS access guard */
.spviet-retail-pos-staff-login-modal-v30468{min-width:min(860px,94vw)}
.spviet-staff-login-grid-v30468{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.spviet-staff-login-grid-v30468>div{border:1px solid #dbeaf7;border-radius:18px;background:#f8fbff;padding:16px;display:grid;gap:12px}
.spviet-staff-login-grid-v30468 h3{margin:0;color:#0d3556;font-size:18px}
.spviet-staff-login-grid-v30468 button.primary{border:0;border-radius:14px;padding:13px 16px;background:linear-gradient(135deg,#006f63,#0a9f8b);color:#fff;font-weight:900;cursor:pointer;box-shadow:0 8px 18px rgba(0,121,107,.18)}
.spviet-staff-login-grid-v30468 button.disabled{opacity:.45;pointer-events:none}
.spviet-pos-access-guard-modal-v30468{min-width:min(650px,92vw);display:grid;gap:12px}
.spviet-pos-access-guard-modal-v30468 h2{margin:0;color:#b42318;font-size:26px}
body.spviet-pos-access-locked-v30468 [data-spviet-pos-pay],
body.spviet-pos-access-locked-v30468 [data-spviet-pos-search],
body.spviet-pos-access-locked-v30468 [data-spviet-pos-fast-grid] button{filter:grayscale(.5);opacity:.72}
@media(max-width:760px){.spviet-staff-login-grid-v30468{grid-template-columns:1fr}.spviet-retail-pos-staff-login-modal-v30468{min-width:92vw}}

/* v3.0.469 Staff Identity UAT Evidence / POS Lock UX / Shift Login Guard */
.spviet-pos-lock-modal-v30469{max-width:900px;margin:0 auto;text-align:left;border:2px solid #dbeafe;border-radius:28px;background:linear-gradient(180deg,#ffffff,#f8fbff);padding:24px;box-shadow:0 24px 70px rgba(15,23,42,.20)}
.spviet-pos-lock-modal-v30469 .lock-hero{display:grid;grid-template-columns:82px 1fr;gap:18px;align-items:center;margin-bottom:16px}
.spviet-pos-lock-modal-v30469 .lock-icon{width:82px;height:82px;border-radius:24px;background:linear-gradient(135deg,#0f766e,#0f3a5b);color:#fff;display:flex;align-items:center;justify-content:center;font-size:42px;box-shadow:0 14px 30px rgba(15,118,110,.22)}
.spviet-pos-lock-modal-v30469 h2{margin:0 0 7px!important;font-size:30px!important;line-height:1.12!important;color:#0f172a!important;font-weight:1000!important}
.spviet-pos-lock-modal-v30469 .lock-hero p{margin:0!important;color:#475569!important;font-size:16px!important;font-weight:800!important;line-height:1.5!important}
.spviet-pos-lock-modal-v30469 .lock-detail{border:1px solid #fed7aa;background:#fff7ed;color:#9a3412;border-radius:16px;padding:12px 14px;margin:10px 0 16px;font-weight:900}
.spviet-pos-lock-modal-v30469 .lock-checks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}
.spviet-pos-lock-modal-v30469 .lock-checks>div{border:1px solid #e2e8f0;border-radius:18px;background:#fff;padding:14px;box-shadow:0 8px 20px rgba(15,23,42,.06)}
.spviet-pos-lock-modal-v30469 .lock-checks>div.ok{border-color:#bbf7d0;background:#f0fdf4}.spviet-pos-lock-modal-v30469 .lock-checks>div.bad{border-color:#fecaca;background:#fef2f2}
.spviet-pos-lock-modal-v30469 .lock-checks b{display:block;color:#0f172a;margin-bottom:6px;font-size:15px}.spviet-pos-lock-modal-v30469 .lock-checks>div.bad b{color:#991b1b}.spviet-pos-lock-modal-v30469 .lock-checks span{display:block;color:#475569;font-size:13px;font-weight:800;line-height:1.45}
.spviet-pos-lock-modal-v30469 .lock-note{margin:14px 0 0;color:#64748b;font-weight:800;font-size:13px;line-height:1.45;text-align:center}
body.spviet-pos-staff-locked-v30469 [data-spviet-pos-pay],body.spviet-pos-staff-locked-v30469 [data-spviet-pos-open-shift],body.spviet-pos-staff-locked-v30469 [data-spviet-pos-close-shift]{box-shadow:0 0 0 4px rgba(239,68,68,.18)!important;filter:grayscale(.25)}
@media(max-width:760px){.spviet-pos-lock-modal-v30469 .lock-hero{grid-template-columns:1fr;text-align:center;justify-items:center}.spviet-pos-lock-modal-v30469 .lock-checks{grid-template-columns:1fr}.spviet-pos-lock-modal-v30469 h2{font-size:24px!important}}

/* v3.0.480: POS credential fields must not trigger browser password save/autofill prompts. */
.spviet-no-password-manager-v30480{
  -webkit-text-security: disc;
  text-security: disc;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.spviet-no-save-warning-v30480{
  border:1px solid #ffdf9a;
  background:linear-gradient(135deg,#fff9e9,#fff3cd);
  color:#8a5200;
  border-radius:14px;
  padding:10px 12px;
  font-size:13px;
  font-weight:900;
}

/* v3.0.493 Office Supplies Quick Center Pro */
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-office-supplies{width:min(1240px,96vw)!important;max-width:96vw!important;text-align:left!important;padding:0!important;overflow:hidden!important;max-height:calc(100dvh - 34px)!important}
.spviet-pos-vpp-modal-v30493{background:#f8fafc;color:#0f172a;min-width:min(1180px,94vw);max-height:calc(100dvh - 44px);overflow:auto;border-radius:26px;font-family:"Inter","Noto Sans",system-ui,sans-serif}.spviet-pos-vpp-modal-v30493 *{box-sizing:border-box}.spviet-pos-vpp-modal-v30493 .vpp-hero{display:flex;align-items:center;gap:16px;padding:20px 22px;background:linear-gradient(135deg,#065f46,#0f172a);color:#fff}.spviet-pos-vpp-modal-v30493 .vpp-hero-icon{width:58px;height:58px;border-radius:20px;background:rgba(255,255,255,.16);display:flex;align-items:center;justify-content:center;font-size:30px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}.spviet-pos-vpp-modal-v30493 h2{margin:0 0 5px!important;color:#fff!important;font-size:24px!important}.spviet-pos-vpp-modal-v30493 .vpp-hero p{margin:0;color:#ccfbf1}.spviet-pos-vpp-modal-v30493 .vpp-close{margin-left:auto;border:0;border-radius:14px;background:rgba(255,255,255,.16);color:#fff;font-weight:900;padding:11px 14px;cursor:pointer}.spviet-pos-vpp-modal-v30493 .vpp-stats{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:10px;padding:14px 18px;background:#ecfeff;border-bottom:1px solid #bae6fd}.spviet-pos-vpp-modal-v30493 .vpp-stats div{background:#fff;border:1px solid #dbeafe;border-radius:18px;padding:13px;text-align:center;box-shadow:0 8px 20px rgba(15,23,42,.05)}.spviet-pos-vpp-modal-v30493 .vpp-stats b{display:block;color:#0f766e;font-size:22px}.spviet-pos-vpp-modal-v30493 .vpp-stats span{font-size:12px;color:#64748b;font-weight:800}.spviet-pos-vpp-modal-v30493 .vpp-nav{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:10px;padding:16px 18px;background:#f8fafc}.spviet-pos-vpp-modal-v30493 .vpp-nav button{border:1px solid #dbe5ef;border-radius:18px;background:#fff;box-shadow:0 10px 25px rgba(15,23,42,.06);padding:12px;text-align:left;cursor:pointer}.spviet-pos-vpp-modal-v30493 .vpp-nav button.active{border-color:#0f766e;background:#ecfdf5;box-shadow:0 14px 32px rgba(15,118,110,.14)}.spviet-pos-vpp-modal-v30493 .vpp-nav i{font-style:normal;font-size:22px;display:block}.spviet-pos-vpp-modal-v30493 .vpp-nav b{display:block;margin-top:4px}.spviet-pos-vpp-modal-v30493 .vpp-nav small{display:block;color:#64748b;margin-top:3px}.spviet-pos-vpp-modal-v30493 section{padding:0 18px 18px}.spviet-pos-vpp-modal-v30493 section[hidden]{display:none!important}.spviet-pos-vpp-modal-v30493 .vpp-table-wrap{background:#fff;border:1px solid #dbe5ef;border-radius:20px;overflow:auto;box-shadow:0 12px 28px rgba(15,23,42,.06)}.spviet-pos-vpp-modal-v30493 table{width:100%;border-collapse:separate;border-spacing:0;min-width:900px}.spviet-pos-vpp-modal-v30493 th{background:#f1f5f9;color:#334155;font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:12px;text-align:left}.spviet-pos-vpp-modal-v30493 td{border-top:1px solid #e2e8f0;padding:12px;vertical-align:middle}.spviet-pos-vpp-modal-v30493 td small{display:block;color:#64748b;margin-top:4px}.spviet-pos-vpp-modal-v30493 .vpp-badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:900}.spviet-pos-vpp-modal-v30493 .vpp-badge.ok{background:#dcfce7;color:#166534}.spviet-pos-vpp-modal-v30493 .vpp-badge.warn{background:#fef3c7;color:#92400e}.spviet-pos-vpp-modal-v30493 .vpp-badge.danger{background:#fee2e2;color:#991b1b}.spviet-pos-vpp-modal-v30493 .vpp-empty{text-align:center;color:#64748b;font-weight:800;padding:26px!important}.spviet-pos-vpp-modal-v30493 .vpp-issue-card{background:#fff;border:1px solid #dbe5ef;border-radius:22px;padding:18px;box-shadow:0 12px 28px rgba(15,23,42,.06)}.spviet-pos-vpp-modal-v30493 .vpp-staff-lock{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:16px;padding:12px;margin-bottom:14px;font-weight:900}.spviet-pos-vpp-modal-v30493 .vpp-staff-lock button{float:right;border:0;border-radius:12px;background:#ea580c;color:#fff;font-weight:900;padding:8px 12px;cursor:pointer}.spviet-pos-vpp-modal-v30493 .vpp-form-grid{display:grid;grid-template-columns:repeat(3,minmax(170px,1fr));gap:12px}.spviet-pos-vpp-modal-v30493 label{font-weight:900;color:#334155;font-size:13px}.spviet-pos-vpp-modal-v30493 input,.spviet-pos-vpp-modal-v30493 select,.spviet-pos-vpp-modal-v30493 textarea{width:100%;margin-top:6px;border:1px solid #cbd5e1;border-radius:14px;padding:12px;background:#fff;color:#0f172a;font-weight:800}.spviet-pos-vpp-modal-v30493 textarea{min-height:90px;resize:vertical}.spviet-pos-vpp-modal-v30493 .wide{grid-column:1/-1}.spviet-pos-vpp-modal-v30493 .vpp-actions{display:flex;justify-content:flex-end;margin-top:14px}.spviet-pos-vpp-modal-v30493 .vpp-actions .primary{border:0;border-radius:16px;background:linear-gradient(135deg,#10b981,#0f766e);color:#fff;font-weight:900;padding:14px 18px;cursor:pointer;box-shadow:0 12px 25px rgba(16,185,129,.22)}.spviet-pos-vpp-modal-v30493 .vpp-actions .primary:disabled{opacity:.55;cursor:not-allowed}.spviet-pos-vpp-modal-v30493 .vpp-note{color:#64748b;font-size:13px;margin:12px 0 0}.spviet-pos-vpp-modal-v30493 .vpp-dashboard{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:12px}.spviet-pos-vpp-modal-v30493 .vpp-dashboard div{background:#fff;border:1px solid #dbe5ef;border-radius:22px;padding:18px;text-align:center;box-shadow:0 12px 28px rgba(15,23,42,.06)}.spviet-pos-vpp-modal-v30493 .vpp-dashboard i{font-style:normal;font-size:34px}.spviet-pos-vpp-modal-v30493 .vpp-dashboard b{display:block;font-size:28px;color:#0f766e;margin:8px 0}.spviet-pos-vpp-modal-v30493 .vpp-dashboard span{color:#64748b;font-weight:800}.spviet-pos-vpp-modal-v30493 select[data-vpp-issue-source],.spviet-pos-vpp-modal-v30493 input[data-vpp-unit],.spviet-pos-vpp-modal-v30493 input[data-vpp-current],.spviet-pos-vpp-modal-v30493 input[data-vpp-after],.spviet-pos-vpp-modal-v30493 input[data-vpp-staff]{background:#f8fafc!important;color:#475569!important;-webkit-text-fill-color:#475569!important;font-weight:700!important;opacity:1!important}.spviet-pos-vpp-modal-v30493 input[data-vpp-unit][readonly],.spviet-pos-vpp-modal-v30493 input[data-vpp-current][readonly],.spviet-pos-vpp-modal-v30493 input[data-vpp-after][readonly],.spviet-pos-vpp-modal-v30493 input[data-vpp-staff][readonly]{border-color:#cbd5e1!important;box-shadow:inset 0 1px 2px rgba(15,23,42,.03)}.spviet-pos-vpp-modal-v30493 input[data-vpp-qty]{background:#fff!important;color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;font-weight:900!important;opacity:1!important}.spviet-pos-vpp-modal-v30493 input[data-vpp-qty]::placeholder{color:#94a3b8!important;opacity:1!important;font-weight:700}.spviet-pos-vpp-modal-v30493 textarea[data-vpp-reason]{color:#0f172a!important;-webkit-text-fill-color:#0f172a!important;font-weight:700}.spviet-pos-vpp-modal-v30493.is-loading{padding:0;overflow:hidden}.spviet-pos-vpp-modal-v30493.is-loading .vpp-hero{min-height:170px}@media(max-width:980px){.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-office-supplies{width:calc(100vw - 20px)!important;max-width:calc(100vw - 20px)!important}.spviet-pos-vpp-modal-v30493{min-width:0}.spviet-pos-vpp-modal-v30493 .vpp-stats{grid-template-columns:repeat(2,1fr)}.spviet-pos-vpp-modal-v30493 .vpp-nav{grid-template-columns:repeat(2,1fr)}.spviet-pos-vpp-modal-v30493 .vpp-form-grid{grid-template-columns:1fr}.spviet-pos-vpp-modal-v30493 .vpp-dashboard{grid-template-columns:1fr}.spviet-pos-vpp-modal-v30493 .vpp-staff-lock button{float:none;margin-top:8px;width:100%}}

.spviet-pos-lock-modal-v30469 .spviet-retail-pos-modal-actions .warning{background:#f59e0b;color:#fff;border-color:#f59e0b}

.spviet-pos-lock-modal-v30469 .lock-bg-diagnostic-v30497{margin:12px 0;background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:12px;display:grid;gap:6px;color:#7c2d12;font-size:13px}.spviet-pos-lock-modal-v30469 .lock-bg-diagnostic-v30497 b{font-size:14px;color:#9a3412}.spviet-pos-lock-modal-v30469 .lock-bg-diagnostic-v30497 span{display:block;word-break:break-word}.spviet-pos-lock-modal-v30469 .spviet-retail-pos-modal-actions .warning{background:#f59e0b!important;color:#fff!important;border-color:#f59e0b!important}

/* v3.0.512 Customer quick actions: Fanpage QR + bank transfer info */
.spviet-pos-customer-quick-v30512{display:grid;gap:14px;max-width:760px;margin:0 auto;color:#0f172a}
.spviet-pos-customer-quick-v30512 h2{margin:0;font-size:26px;color:#075e59}
.spviet-pos-customer-quick-v30512 h3{margin:4px 0 0;font-size:18px;color:#0b4f4a}
.spviet-pos-customer-quick-v30512 ol{margin:0;padding-left:22px;line-height:1.6;font-weight:700;color:#334155}
.spviet-pos-customer-quick-v30512 a{word-break:break-all;color:#0561c9;font-weight:900}
.spviet-pos-customer-qr-wrap-v30512{display:flex;align-items:center;justify-content:center;min-height:260px;border:1px solid #c7f1ea;background:#f4fffd;border-radius:24px;padding:18px}
.spviet-pos-customer-qr-v30512{width:245px;height:245px;object-fit:contain;background:#fff;border-radius:18px;border:1px solid #dbeafe;padding:10px;box-shadow:0 12px 28px rgba(15,118,110,.12)}
.spviet-pos-customer-qr-fallback-v30512{display:none;text-align:center;font-weight:900;color:#9a3412;background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:14px}.spviet-pos-customer-qr-wrap-v30512.is-qr-missing .spviet-pos-customer-qr-fallback-v30512{display:block}
.spviet-pos-bank-account-v30512{border:1px solid #dbeafe;background:linear-gradient(135deg,#ffffff,#f8fbff);border-radius:20px;padding:14px;display:grid;gap:9px}.spviet-pos-bank-account-v30512 div{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;border-bottom:1px dashed #dbeafe;padding-bottom:7px}.spviet-pos-bank-account-v30512 b{color:#475569}.spviet-pos-bank-account-v30512 span{font-weight:900;color:#0f172a;word-break:break-all}.spviet-pos-bank-account-v30512 p{margin:4px 0 0;color:#475569;white-space:pre-wrap}.spviet-pos-transfer-steps-v30512{background:#ecfdf5;border:1px solid #a7f3d0;border-radius:18px;padding:12px}.spviet-pos-customer-warning-v30512{background:#fff7ed;border:1px solid #fdba74;color:#9a3412;border-radius:14px;padding:12px;font-weight:900}.spviet-pos-customer-muted-v30512{font-size:12px;color:#64748b;font-weight:700;margin:0}

/* v3.0.513 Fanpage QR production polish / app deeplink guard */
.spviet-pos-fanpage-polish-v30513{max-width:820px!important;text-align:center}
.spviet-pos-fanpage-polish-v30513.is-large-qr{max-width:min(980px,96vw)!important}
.spviet-pos-fanpage-polish-v30513.is-large-qr .spviet-pos-customer-qr-wrap-v30512{min-height:540px;padding:24px;background:#fff}
.spviet-pos-fanpage-polish-v30513.is-large-qr .spviet-pos-customer-qr-v30512{width:min(520px,76vw);height:min(520px,76vw);padding:16px;border-radius:28px;box-shadow:0 22px 60px rgba(15,118,110,.22)}
.spviet-pos-fanpage-choice-v30513{display:grid;gap:5px;border:1px solid #bbf7d0;background:linear-gradient(135deg,#f0fdf4,#ecfeff);border-radius:18px;padding:12px 14px;text-align:left;color:#0f3d3a}
.spviet-pos-fanpage-choice-v30513 b{font-size:16px;color:#047857}.spviet-pos-fanpage-choice-v30513 span{font-size:13px;color:#475569;font-weight:800;line-height:1.45}.spviet-pos-fanpage-link-v30513{display:grid;gap:5px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;padding:10px 12px;text-align:left}.spviet-pos-fanpage-link-v30513 b{color:#334155}.spviet-pos-fanpage-link-v30513 a{font-size:14px}.spviet-pos-fanpage-polish-v30513 .spviet-retail-pos-modal-actions{justify-content:center!important}
/* v3.0.515 - Bank Transfer Amount-Aware UX / Copy / Staff Confirmation */
.spviet-pos-bank-transfer-v30515{max-width:860px!important;text-align:left}
.spviet-pos-bank-transfer-summary-v30515{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:10px 0 14px}
.spviet-pos-bank-transfer-summary-v30515>div{display:grid;grid-template-columns:1fr auto;gap:6px 10px;align-items:center;padding:14px;border:1px solid #99f6e4;background:linear-gradient(135deg,#ecfdf5,#eff6ff);border-radius:16px}
.spviet-pos-bank-transfer-summary-v30515 b{font-size:13px;color:#0f766e;text-transform:uppercase;letter-spacing:.02em}.spviet-pos-bank-transfer-summary-v30515 strong{font-size:24px;color:#0f172a;line-height:1.2}.spviet-pos-bank-transfer-summary-v30515 button,.spviet-pos-bank-account-v30515 button{border:0;background:#e0f2fe;color:#075985;border-radius:10px;padding:8px 11px;font-weight:900;cursor:pointer}.spviet-pos-bank-account-v30515>div{grid-template-columns:130px 1fr auto!important}.spviet-pos-bank-qr-v30515{margin-top:10px;padding:12px;border:1px dashed #99f6e4;border-radius:14px;background:#f8fafc;text-align:center}.spviet-pos-bank-qr-v30515 img{max-width:180px;max-height:180px;border-radius:14px;background:#fff}.spviet-pos-bank-safe-note-v30515{display:block;margin-top:8px;text-align:center;color:#64748b;font-weight:800}.spviet-pos-bank-transfer-v30515 .primary[disabled]{opacity:.45;cursor:not-allowed;background:#cbd5e1!important;color:#475569!important}
@media(max-width:820px){.spviet-pos-bank-transfer-summary-v30515{grid-template-columns:1fr}.spviet-pos-bank-account-v30515>div{grid-template-columns:1fr!important}}

/* v3.0.517 Customer Display Mode / QR Fullscreen Mode Pro */
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-customer-display-v30517{
  width:100vw!important;max-width:100vw!important;height:100dvh!important;max-height:100dvh!important;border-radius:0!important;padding:0!important;overflow:hidden!important;background:#f8fffd!important;box-shadow:none!important;
}
.spviet-retail-pos-modal-card-customer-display-v30517 [data-spviet-pos-modal-close]{display:none!important}
.spviet-retail-pos-modal-card-customer-display-v30517 [data-spviet-pos-modal-body]{height:100%!important;overflow:auto!important}
.spviet-pos-customer-display-v30517{min-height:100dvh!important;max-width:none!important;width:100%!important;display:grid!important;grid-template-rows:auto auto minmax(0,1fr) auto auto!important;align-items:center!important;justify-items:center!important;gap:18px!important;padding:28px clamp(24px,5vw,72px)!important;background:radial-gradient(circle at top left,#dcfce7 0,#f8fffd 32%,#eff6ff 100%)!important;text-align:center!important;color:#0f172a!important}
.spviet-pos-customer-display-head-v30517{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;background:rgba(255,255,255,.82);border:1px solid #bbf7d0;border-radius:22px;padding:14px 18px;box-shadow:0 16px 36px rgba(15,118,110,.09)}
.spviet-pos-customer-display-head-v30517 div{display:grid;text-align:left;gap:3px}.spviet-pos-customer-display-head-v30517 b{font-size:18px;color:#065f46}.spviet-pos-customer-display-head-v30517 span{font-size:13px;font-weight:800;color:#64748b}.spviet-pos-customer-display-head-v30517 button,.spviet-pos-customer-display-v30517 .spviet-retail-pos-modal-actions button{border:0;border-radius:18px;background:#0f766e;color:#fff;font-size:18px;font-weight:950;padding:16px 24px;cursor:pointer;box-shadow:0 16px 30px rgba(15,118,110,.18)}
.spviet-pos-customer-display-v30517 h2{font-size:clamp(34px,5vw,58px)!important;color:#064e3b!important;margin:0!important;letter-spacing:.01em!important}.spviet-pos-customer-display-v30517 h3{font-size:clamp(26px,3vw,42px)!important;margin:0!important;color:#0f766e!important}.spviet-pos-customer-display-v30517 .spviet-pos-fanpage-choice-v30513{width:min(980px,92vw);background:#ecfdf5!important;border:2px solid #86efac!important;border-radius:28px!important;padding:20px 24px!important}.spviet-pos-customer-display-v30517 .spviet-pos-fanpage-choice-v30513 b{font-size:26px!important}.spviet-pos-customer-display-v30517 .spviet-pos-fanpage-choice-v30513 span{font-size:17px!important;color:#334155!important}.spviet-pos-customer-display-v30517 .spviet-pos-customer-qr-wrap-v30512{width:min(760px,90vw)!important;min-height:min(62dvh,680px)!important;border:3px solid #99f6e4!important;border-radius:38px!important;background:#fff!important;padding:28px!important;box-shadow:0 28px 70px rgba(15,118,110,.18)!important}.spviet-pos-customer-display-v30517 .spviet-pos-customer-qr-v30512{width:min(520px,62vw,58dvh)!important;height:min(520px,62vw,58dvh)!important;border:8px solid #0f766e!important;border-radius:26px!important;padding:16px!important;box-shadow:none!important}.spviet-pos-customer-display-v30517 .spviet-pos-fanpage-link-v30513{width:min(900px,92vw);background:#fff!important;border:1px solid #dbeafe!important;border-radius:22px!important;padding:16px 20px!important}.spviet-pos-customer-display-v30517 ol{font-size:clamp(18px,2vw,28px)!important;line-height:1.45!important;text-align:left!important;max-width:min(980px,92vw)!important;background:rgba(255,255,255,.78)!important;border-radius:22px!important;padding:18px 34px!important}
.spviet-pos-bank-customer-display-v30517{grid-template-rows:auto auto auto auto minmax(0,1fr) auto!important}.spviet-pos-bank-display-amount-v30517{display:grid;gap:8px;background:#ecfdf5;border:3px solid #86efac;border-radius:30px;padding:22px 38px;min-width:min(720px,92vw);box-shadow:0 22px 55px rgba(15,118,110,.16)}.spviet-pos-bank-display-amount-v30517 span{font-size:24px;font-weight:900;color:#047857}.spviet-pos-bank-display-amount-v30517 strong{font-size:clamp(48px,7vw,92px);color:#0f766e;letter-spacing:.02em}.spviet-pos-bank-display-card-v30517{width:min(980px,94vw);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;background:#fff;border:1px solid #dbeafe;border-radius:30px;padding:20px;box-shadow:0 22px 55px rgba(15,23,42,.08)}.spviet-pos-bank-display-card-v30517 div{display:grid;gap:6px;text-align:left;border:1px dashed #cbd5e1;border-radius:20px;padding:16px}.spviet-pos-bank-display-card-v30517 b{color:#64748b;font-size:16px}.spviet-pos-bank-display-card-v30517 strong{font-size:clamp(20px,3vw,34px);color:#0f172a;word-break:break-word}.spviet-pos-bank-display-qr-v30517 img{width:min(320px,42vw);height:min(320px,42vw);object-fit:contain;background:#fff;border-radius:24px;border:4px solid #0f766e;padding:12px}
@media(max-width:760px){.spviet-pos-customer-display-v30517{padding:18px 12px!important;gap:12px!important}.spviet-pos-customer-display-head-v30517{border-radius:18px}.spviet-pos-customer-display-head-v30517 button{padding:12px 14px;font-size:15px}.spviet-pos-bank-display-card-v30517{grid-template-columns:1fr}.spviet-pos-customer-display-v30517 .spviet-pos-customer-qr-wrap-v30512{min-height:auto!important}.spviet-pos-customer-display-v30517 .spviet-pos-customer-qr-v30512{width:min(86vw,420px)!important;height:min(86vw,420px)!important}}

/* v3.0.520 Fanpage popup uses bottom Close only; no duplicate header X. */
.spviet-retail-pos-modal-card:has(.spviet-pos-fanpage-no-header-close-v30514) [data-spviet-pos-modal-close],
.spviet-pos-fanpage-no-header-close-v30514 ~ [data-spviet-pos-modal-close]{display:none!important}

/* v3.0.521 POS Loyalty Member Lookup Professional Modal / No Default Browser-Looking Form */
.spviet-retail-pos-modal-card.spviet-retail-pos-modal-card-member-lookup-v30521{width:min(840px,calc(100vw - 36px))!important;max-width:min(840px,calc(100vw - 36px))!important;padding:0!important;text-align:left!important;overflow:hidden!important;border-radius:28px!important;background:#f8fafc!important;box-shadow:0 32px 90px rgba(15,23,42,.34)!important}.spviet-retail-pos-modal-card-member-lookup-v30521 [data-spviet-pos-modal-close]{display:none!important}.spviet-retail-pos-member-lookup-v30521{font-family:"Inter","Noto Sans","Noto Sans JP",system-ui,sans-serif;color:#0f172a}.spviet-retail-pos-member-lookup-v30521 .member-hero{display:flex;gap:16px;align-items:center;padding:22px 24px;background:linear-gradient(135deg,#0f766e,#0f172a);color:#fff}.spviet-retail-pos-member-lookup-v30521 .member-hero-icon{width:56px;height:56px;border-radius:20px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.16);font-size:30px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}.spviet-retail-pos-member-lookup-v30521 h2{margin:0 0 6px!important;color:#fff!important;font-size:25px!important;font-weight:950!important;letter-spacing:.01em}.spviet-retail-pos-member-lookup-v30521 p{margin:0!important;color:#ccfbf1!important;font-weight:750!important;line-height:1.45}.spviet-retail-pos-member-lookup-v30521 .member-current{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:18px 22px 0;padding:16px 18px;border:1px solid #bae6fd;border-radius:22px;background:#ecfeff}.spviet-retail-pos-member-lookup-v30521 .member-current span,.spviet-retail-pos-member-lookup-v30521 .member-search-card label span{display:block;color:#64748b;font-weight:900;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.spviet-retail-pos-member-lookup-v30521 .member-current b{display:block;color:#0f766e;font-size:22px;margin-top:3px}.spviet-retail-pos-member-lookup-v30521 .member-current small{display:block;color:#475569;font-weight:750;margin-top:3px}.spviet-retail-pos-member-lookup-v30521 .member-current button{border:0;border-radius:16px;background:#f97316;color:#fff;font-weight:950;padding:12px 16px;white-space:nowrap;box-shadow:0 12px 24px rgba(249,115,22,.2);cursor:pointer}.spviet-retail-pos-member-lookup-v30521 .member-search-card{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:12px;align-items:end;margin:14px 22px 0;padding:18px;border:1px solid #dbeafe;border-radius:24px;background:#fff;box-shadow:0 12px 30px rgba(15,23,42,.06)}.spviet-retail-pos-member-lookup-v30521 .member-search-card input{width:100%;height:58px;border:2px solid #99f6e4;border-radius:18px;padding:0 18px;font-size:22px;font-weight:800;color:#0f172a;background:#fff;outline:none}.spviet-retail-pos-member-lookup-v30521 .member-search-card input:focus{border-color:#0f766e;box-shadow:0 0 0 5px rgba(15,118,110,.12)}.spviet-retail-pos-member-lookup-v30521 .member-search-card button.primary{height:58px;border:0;border-radius:18px;background:linear-gradient(135deg,#10b981,#0f766e);color:#fff;font-weight:950;font-size:17px;cursor:pointer;box-shadow:0 14px 26px rgba(16,185,129,.2)}.spviet-retail-pos-member-lookup-v30521 .member-help-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 22px 0}.spviet-retail-pos-member-lookup-v30521 .member-help-grid div{display:flex;gap:10px;align-items:flex-start;border:1px solid #e2e8f0;border-radius:18px;background:#fff;padding:12px;min-height:76px}.spviet-retail-pos-member-lookup-v30521 .member-help-grid b{width:28px;height:28px;border-radius:11px;background:#e0f2fe;color:#0369a1;display:flex;align-items:center;justify-content:center;flex:0 0 auto;font-weight:950}.spviet-retail-pos-member-lookup-v30521 .member-help-grid span{color:#475569;font-weight:750;font-size:13px;line-height:1.35}.spviet-retail-pos-member-lookup-v30521 .member-result{min-height:46px;margin:14px 22px 0}.spviet-retail-pos-member-ok-v30521{display:flex!important;justify-content:space-between;gap:14px;align-items:center;border-radius:20px!important;padding:16px 18px!important}.spviet-retail-pos-member-ok-v30521 b{display:block;font-size:20px}.spviet-retail-pos-member-ok-v30521 span{display:block;font-weight:850;margin-top:3px}.spviet-retail-pos-member-ok-v30521 strong{font-size:28px;color:#047857}.spviet-retail-pos-member-error-v30521{display:grid;gap:5px;border-radius:20px!important;padding:16px 18px!important}.spviet-retail-pos-member-error-v30521 span{font-weight:800}.spviet-retail-pos-member-lookup-v30521 .member-actions{margin:18px 22px 22px!important;padding-top:14px!important;border-top:1px solid #e2e8f0!important;justify-content:flex-end!important}.spviet-retail-pos-member-lookup-v30521 .member-actions button{border:0;border-radius:16px;background:#e2e8f0;color:#0f172a;font-weight:950;padding:13px 22px;min-width:120px;cursor:pointer}@media(max-width:720px){.spviet-retail-pos-member-lookup-v30521 .member-current{align-items:stretch;flex-direction:column}.spviet-retail-pos-member-lookup-v30521 .member-current button{width:100%}.spviet-retail-pos-member-lookup-v30521 .member-search-card{grid-template-columns:1fr}.spviet-retail-pos-member-lookup-v30521 .member-help-grid{grid-template-columns:1fr}.spviet-retail-pos-member-lookup-v30521 .member-search-card input{font-size:18px}}

/* v3.0.522 - POS Loyalty Member Realtime Lookup Polish */
.spviet-retail-pos-member-lookup-v30521 .member-search-card-realtime-v30522{grid-template-columns:minmax(0,1fr) 164px!important;position:relative!important;padding-bottom:34px!important}
.spviet-retail-pos-member-lookup-v30521 .member-realtime-note{position:absolute!important;left:20px!important;bottom:10px!important;color:#0f766e!important;font-weight:850!important;font-size:12px!important}
.spviet-retail-pos-member-searching-v30522,.spviet-retail-pos-member-muted-v30522{display:flex!important;align-items:center!important;gap:10px!important;border:1px dashed #99f6e4!important;border-radius:18px!important;background:#f0fdfa!important;color:#0f766e!important;padding:14px 16px!important;font-weight:900!important}
.spviet-retail-pos-member-searching-v30522{display:grid!important;grid-template-columns:22px minmax(0,1fr)!important;grid-template-areas:'spin title' 'spin sub'!important;align-items:center!important}
.spviet-retail-pos-member-searching-v30522 span{grid-area:spin;width:18px;height:18px;border-radius:999px;border:3px solid rgba(15,118,110,.22);border-top-color:#0f766e;animation:spvietMemberSpinV30522 .78s linear infinite}.spviet-retail-pos-member-searching-v30522 b{grid-area:title}.spviet-retail-pos-member-searching-v30522 small{grid-area:sub;color:#64748b;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spviet-retail-pos-member-ok-realtime-v30522 em{display:inline-flex;margin-top:6px;padding:4px 9px;border-radius:999px;background:#d1fae5;color:#047857;font-style:normal;font-weight:950;font-size:12px}.spviet-retail-pos-member-soft-error-v30522{border:1px dashed #fed7aa!important;background:#fff7ed!important;color:#9a3412!important}.spviet-retail-pos-member-soft-error-v30522 small{color:#9a3412!important}@keyframes spvietMemberSpinV30522{to{transform:rotate(360deg)}}@media(max-width:720px){.spviet-retail-pos-member-lookup-v30521 .member-search-card-realtime-v30522{grid-template-columns:1fr!important;padding-bottom:40px!important}.spviet-retail-pos-member-lookup-v30521 .member-realtime-note{right:20px!important}}

/* v3.0.524 - Loyalty Search Result List / Select Correct Member Pro */
.spviet-retail-pos-member-list-v30524{display:grid!important;gap:10px!important;border:1px solid #bae6fd!important;border-radius:20px!important;background:#f8fafc!important;padding:12px!important;box-shadow:0 12px 30px rgba(15,23,42,.06)!important}
.spviet-retail-pos-member-list-v30524 .member-list-head{display:grid!important;gap:4px!important;padding:4px 6px 8px!important;border-bottom:1px dashed #cbd5e1!important}
.spviet-retail-pos-member-list-v30524 .member-list-head b{font-size:16px!important;color:#0f766e!important;font-weight:950!important}
.spviet-retail-pos-member-list-v30524 .member-list-head small{color:#475569!important;font-weight:800!important;line-height:1.35!important}
.spviet-retail-pos-member-candidate-v30524{width:100%!important;display:grid!important;grid-template-columns:minmax(0,1.35fr) minmax(180px,.9fr) 86px!important;gap:12px!important;align-items:center!important;border:1px solid #dbeafe!important;border-radius:18px!important;background:#fff!important;color:#0f172a!important;text-align:left!important;padding:12px 14px!important;cursor:pointer!important;box-shadow:0 8px 18px rgba(15,23,42,.04)!important;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease!important}
.spviet-retail-pos-member-candidate-v30524:hover,.spviet-retail-pos-member-candidate-v30524:focus{transform:translateY(-1px)!important;border-color:#14b8a6!important;box-shadow:0 14px 28px rgba(20,184,166,.14)!important;outline:none!important}
.spviet-retail-pos-member-candidate-v30524.is-exact{border-color:#86efac!important;background:linear-gradient(135deg,#fff,#f0fdf4)!important}
.spviet-retail-pos-member-candidate-v30524 .candidate-main b{display:block!important;color:#0f766e!important;font-size:17px!important;font-weight:950!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.spviet-retail-pos-member-candidate-v30524 .candidate-main small,.spviet-retail-pos-member-candidate-v30524 .candidate-meta small{display:block!important;color:#475569!important;font-weight:850!important;margin-top:2px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.spviet-retail-pos-member-candidate-v30524 .candidate-action{justify-self:end!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;min-width:72px!important;border-radius:14px!important;background:#0f766e!important;color:#fff!important;font-weight:950!important;padding:10px 12px!important;box-shadow:0 10px 22px rgba(15,118,110,.16)!important}
@media(max-width:720px){.spviet-retail-pos-member-candidate-v30524{grid-template-columns:1fr!important}.spviet-retail-pos-member-candidate-v30524 .candidate-action{justify-self:stretch!important}.spviet-retail-pos-member-candidate-v30524 .candidate-meta small{white-space:normal!important}}

/* v3.0.525 - Loyalty F4 scanner mode guard */
.spviet-retail-pos-member-scan-warning-v30525,.spviet-retail-pos-member-scan-ok-v30525{display:grid!important;gap:5px!important;border-radius:18px!important;padding:14px 16px!important;font-weight:850!important;line-height:1.35!important}
.spviet-retail-pos-member-scan-warning-v30525{border:1px solid #fed7aa!important;background:#fff7ed!important;color:#9a3412!important}
.spviet-retail-pos-member-scan-warning-v30525 b{font-size:15px!important;color:#9a3412!important;font-weight:950!important}
.spviet-retail-pos-member-scan-warning-v30525 span,.spviet-retail-pos-member-scan-warning-v30525 small{color:#9a3412!important;font-weight:850!important}
.spviet-retail-pos-member-scan-ok-v30525{border:1px solid #bbf7d0!important;background:#f0fdf4!important;color:#166534!important}
.spviet-retail-pos-member-scan-ok-v30525 b{font-size:15px!important;color:#166534!important;font-weight:950!important}

/* v3.0.526 - Loyalty Member Card / Customer Summary Panel Pro */
.spviet-retail-pos-customer-box.has-member-v30526,.spviet-retail-pos-customer-box.is-walkin-v30526{display:block!important;padding:0!important;border:0!important;background:transparent!important;margin-bottom:10px!important;box-shadow:none!important}
.spviet-retail-pos-customer-box.has-member-v30526>div,.spviet-retail-pos-customer-box.is-walkin-v30526>div{min-width:0!important}
.spviet-retail-pos-customer-box [data-spviet-pos-customer-lookup],.spviet-retail-pos-customer-box [data-spviet-pos-customer-clear]{display:none!important}
.spviet-retail-pos-member-card-v30526{display:grid!important;gap:10px!important;border:1px solid #bbf7d0!important;border-radius:20px!important;background:linear-gradient(135deg,#ecfdf5,#ffffff 58%,#eff6ff)!important;box-shadow:0 14px 32px rgba(15,118,110,.09)!important;padding:13px!important;color:#0f172a!important;overflow:hidden!important}
.spviet-retail-pos-member-card-v30526.is-walkin{border-color:#fed7aa!important;background:linear-gradient(135deg,#fff7ed,#ffffff)!important;box-shadow:0 10px 26px rgba(249,115,22,.08)!important}
.spviet-retail-pos-member-card-v30526.is-blocked{border-color:#fecaca!important;background:linear-gradient(135deg,#fff1f2,#ffffff)!important;box-shadow:0 12px 30px rgba(239,68,68,.1)!important}
.spviet-retail-pos-member-card-v30526 .member-card-top{display:grid!important;grid-template-columns:42px minmax(0,1fr) auto!important;gap:10px!important;align-items:center!important}
.spviet-retail-pos-member-card-v30526 .member-avatar{width:42px!important;height:42px!important;border-radius:16px!important;background:linear-gradient(135deg,#10b981,#0f766e)!important;color:#fff!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:20px!important;font-weight:950!important;box-shadow:0 12px 24px rgba(15,118,110,.18)!important}
.spviet-retail-pos-member-card-v30526.is-walkin .member-avatar{background:linear-gradient(135deg,#fb923c,#ea580c)!important}.spviet-retail-pos-member-card-v30526.is-blocked .member-avatar{background:linear-gradient(135deg,#f87171,#dc2626)!important}
.spviet-retail-pos-member-card-v30526 b{display:block!important;margin:0!important;color:#064e3b!important;font-size:17px!important;font-weight:950!important;line-height:1.2!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.spviet-retail-pos-member-card-v30526.is-blocked b{color:#991b1b!important}
.spviet-retail-pos-member-card-v30526 small{display:block!important;margin-top:3px!important;color:#475569!important;font-size:12px!important;font-weight:850!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.spviet-retail-pos-member-card-v30526 em{font-style:normal!important;border-radius:999px!important;background:#dcfce7!important;color:#166534!important;font-size:11px!important;font-weight:950!important;padding:6px 8px!important;white-space:nowrap!important}.spviet-retail-pos-member-card-v30526.is-blocked em{background:#fee2e2!important;color:#991b1b!important}
.spviet-retail-pos-member-card-v30526 .member-card-stats{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important}.spviet-retail-pos-member-card-v30526 .member-card-stats div{background:rgba(255,255,255,.82)!important;border:1px solid #dbeafe!important;border-radius:15px!important;padding:8px!important;min-width:0!important}.spviet-retail-pos-member-card-v30526 .member-card-stats span{display:block!important;color:#64748b!important;font-size:11px!important;font-weight:900!important;text-transform:uppercase!important;letter-spacing:.03em!important}.spviet-retail-pos-member-card-v30526 .member-card-stats strong{display:block!important;margin-top:3px!important;color:#0f172a!important;font-size:13px!important;font-weight:950!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.spviet-retail-pos-member-card-v30526 .member-card-alert{border:1px solid #fecaca!important;background:#fee2e2!important;color:#991b1b!important;border-radius:14px!important;padding:9px 10px!important;font-size:12px!important;font-weight:950!important;line-height:1.35!important}.spviet-retail-pos-member-card-v30526 .member-card-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}.spviet-retail-pos-member-card-v30526 .member-card-actions button{border:0!important;border-radius:14px!important;background:#0f766e!important;color:#fff!important;font-size:12px!important;font-weight:950!important;padding:10px 8px!important;cursor:pointer!important;box-shadow:0 10px 20px rgba(15,118,110,.14)!important}.spviet-retail-pos-member-card-v30526 .member-card-actions button[data-spviet-member-card-clear]{background:#64748b!important}.spviet-retail-pos-member-card-v30526 .member-card-actions button[data-spviet-member-card-history]{background:#0369a1!important}.spviet-retail-pos-member-card-v30526.is-walkin .member-card-actions{grid-template-columns:1fr!important}.spviet-retail-pos-member-card-v30526.is-walkin .member-card-actions button{font-size:14px!important;padding:12px!important;background:#ea580c!important}
.spviet-retail-pos-member-history-v30526{text-align:left!important;color:#0f172a!important}.spviet-retail-pos-member-history-v30526 h2{color:#0f766e!important}.spviet-retail-pos-member-history-v30526 table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid #dbeafe;border-radius:16px;overflow:hidden;background:#fff}.spviet-retail-pos-member-history-v30526 th{background:#ecfdf5;color:#0f766e;text-align:left;padding:10px;font-size:12px;text-transform:uppercase}.spviet-retail-pos-member-history-v30526 td{border-top:1px solid #e2e8f0;padding:10px;font-weight:800;color:#334155}
@media(max-width:760px){.spviet-retail-pos-member-card-v30526 .member-card-top{grid-template-columns:38px minmax(0,1fr)!important}.spviet-retail-pos-member-card-v30526 .member-card-top em{grid-column:1/-1;justify-self:start}.spviet-retail-pos-member-card-v30526 .member-card-stats,.spviet-retail-pos-member-card-v30526 .member-card-actions{grid-template-columns:1fr!important}}

/* v3.0.528 - Loyalty Offline Conflict / Point Balance Reconcile Pro */
.spviet-retail-pos-loyalty-offline-guard-v30528{text-align:left!important;color:#0f172a!important;max-width:680px!important}
.spviet-retail-pos-loyalty-offline-guard-v30528 h2{color:#b45309!important;margin-bottom:8px!important}
.spviet-retail-pos-loyalty-offline-guard-v30528 p{font-weight:850!important;line-height:1.55!important;color:#334155!important}
.spviet-retail-pos-loyalty-offline-guard-v30528 .guard-card{display:grid!important;gap:5px!important;border:1px solid #fed7aa!important;background:#fff7ed!important;color:#9a3412!important;border-radius:18px!important;padding:14px 16px!important;margin:12px 0!important;box-shadow:0 12px 24px rgba(245,158,11,.12)!important}
.spviet-retail-pos-loyalty-offline-guard-v30528 .guard-card b{font-size:17px!important;font-weight:950!important;color:#92400e!important}
.spviet-retail-pos-loyalty-offline-guard-v30528 .guard-card span{font-weight:900!important;color:#9a3412!important}
.spviet-retail-pos-loyalty-offline-guard-v30528 [data-spviet-loyalty-clear-points]{background:#0f766e!important;color:#fff!important;border:0!important;border-radius:14px!important;padding:12px 16px!important;font-weight:950!important;box-shadow:0 10px 22px rgba(15,118,110,.14)!important}

/* v3.0.536: POS Unicode font + no forced uppercase */
.spviet-retail-pos-app,
.spviet-retail-pos-app *{font-family:"Segoe UI","Noto Sans","Noto Sans JP","Arial Unicode MS",Arial,sans-serif!important;text-transform:none!important;letter-spacing:normal!important;text-rendering:auto!important;font-variant-ligatures:normal!important;unicode-bidi:plaintext}
.spviet-retail-pos-app button,
.spviet-retail-pos-app input,
.spviet-retail-pos-app select,
.spviet-retail-pos-app textarea{font-family:"Segoe UI","Noto Sans","Noto Sans JP","Arial Unicode MS",Arial,sans-serif!important;text-transform:none!important;letter-spacing:normal!important}
.spviet-retail-pos-header-meta-row .meta-label,.spviet-retail-pos-app-kicker,.spviet-retail-pos-card.metric span,.receipt-choice-amounts span{font-weight:800!important;text-transform:none!important;letter-spacing:normal!important}


/* v3.0.538 POS large action text + bank transfer close usability */
.spviet-retail-pos-app .spviet-retail-pos-member-card-v30526.is-walkin .member-card-actions button,
.spviet-retail-pos-app .spviet-retail-pos-member-card-v30526 .member-card-actions button[data-spviet-member-card-f4],
.spviet-retail-pos-app [data-spviet-pos-customer-lookup],
.spviet-retail-pos-app [data-spviet-member-card-f4]{
  min-height:48px!important;
  font-size:18px!important;
  line-height:1.2!important;
  font-weight:950!important;
}
.spviet-retail-pos-app .spviet-retail-pos-pay,
.spviet-retail-pos-app [data-spviet-pos-pay]{
  min-height:66px!important;
  height:auto!important;
  font-size:28px!important;
  line-height:1.15!important;
  font-weight:950!important;
}
.spviet-retail-pos-app .spviet-retail-pos-pay.is-disabled,
.spviet-retail-pos-app .spviet-retail-pos-pay:disabled{
  font-size:28px!important;
  color:#fff!important;
}
.spviet-retail-pos-modal .spviet-pos-bank-transfer-v30515 .spviet-retail-pos-modal-actions button[data-modal-cancel]{
  min-width:96px;
  min-height:48px;
  font-size:16px;
  font-weight:950;
}
@media(max-width:1366px){
  .spviet-retail-pos-app .spviet-retail-pos-pay,
  .spviet-retail-pos-app [data-spviet-pos-pay]{min-height:62px!important;font-size:26px!important;}
  .spviet-retail-pos-app .spviet-retail-pos-member-card-v30526.is-walkin .member-card-actions button,
  .spviet-retail-pos-app .spviet-retail-pos-member-card-v30526 .member-card-actions button[data-spviet-member-card-f4],
  .spviet-retail-pos-app [data-spviet-member-card-f4]{font-size:17px!important;min-height:46px!important;}
}

/* v3.0.542 Fanpage quick action modal: icon-rich left aligned customer UX */
.spviet-pos-fanpage-left-v30542{max-width:860px!important;text-align:left!important;gap:16px!important}
.spviet-pos-fanpage-left-v30542 h2{margin:0!important;text-align:left!important;font-size:28px!important;line-height:1.15!important;color:#075e54!important;font-weight:950!important}
.spviet-pos-fanpage-head-v30542{display:flex;align-items:center;gap:14px;margin-bottom:2px;text-align:left!important}
.spviet-pos-fanpage-head-v30542>i{font-style:normal;flex:0 0 54px;width:54px;height:54px;border-radius:20px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#dcfce7,#e0f2fe);border:1px solid #99f6e4;font-size:28px;box-shadow:0 12px 28px rgba(15,118,110,.12)}
.spviet-pos-fanpage-head-v30542 p{margin:5px 0 0;color:#475569;font-weight:800;line-height:1.35}
.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-choice-v30513{grid-template-columns:auto 1fr!important;align-items:center!important;gap:12px!important;padding:14px 16px!important;border-radius:18px!important;background:linear-gradient(135deg,#ecfdf5,#eff6ff)!important;border-color:#99f6e4!important;text-align:left!important}
.spviet-pos-fanpage-choice-v30513>i{font-style:normal;width:44px;height:44px;border-radius:16px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #bae6fd;font-size:24px;box-shadow:0 10px 22px rgba(14,165,233,.1)}
.spviet-pos-fanpage-choice-v30513 div{display:grid;gap:4px}.spviet-pos-fanpage-choice-v30513 b{font-size:17px!important}.spviet-pos-fanpage-choice-v30513 span{font-size:13px!important;line-height:1.45!important}
.spviet-pos-fanpage-branch-v30542{display:flex;align-items:center;gap:10px;margin:0;text-align:left!important;color:#075e54;font-weight:950;font-size:18px;padding:0 4px}
.spviet-pos-fanpage-branch-v30542 i{font-style:normal;width:32px;height:32px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:#ecfdf5;border:1px solid #a7f3d0}
.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-link-v30513{grid-template-columns:auto 1fr!important;align-items:start!important;gap:12px!important;padding:13px 14px!important;background:#f8fafc!important;border:1px solid #dbeafe!important;border-radius:18px!important;text-align:left!important}
.spviet-pos-fanpage-link-v30513>i{font-style:normal;width:40px;height:40px;border-radius:14px;display:flex;align-items:center;justify-content:center;background:#eff6ff;border:1px solid #bfdbfe;font-size:20px}.spviet-pos-fanpage-link-v30513 div{display:grid;gap:4px}.spviet-pos-fanpage-link-v30513 b{font-size:14px!important;color:#334155!important}.spviet-pos-fanpage-link-v30513 a{font-size:14px!important;line-height:1.35!important}
.spviet-pos-fanpage-guides-v30542{display:grid;gap:10px;text-align:left!important;margin:2px 0 0}
.spviet-pos-fanpage-guides-v30542>div{display:grid;grid-template-columns:34px 42px 1fr;align-items:center;gap:10px;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:10px 12px;box-shadow:0 8px 22px rgba(15,23,42,.05)}
.spviet-pos-fanpage-guides-v30542 em{font-style:normal;width:28px;height:28px;border-radius:999px;display:flex;align-items:center;justify-content:center;background:#0f766e;color:#fff;font-weight:950;font-size:13px}.spviet-pos-fanpage-guides-v30542 span{font-size:23px;line-height:1}.spviet-pos-fanpage-guides-v30542 b{font-size:14px;line-height:1.35;color:#334155;font-weight:900}
.spviet-pos-fanpage-left-v30542 .spviet-retail-pos-modal-actions{justify-content:flex-end!important;border-top:1px solid #eef2f7;padding-top:12px;margin-top:2px}.spviet-pos-fanpage-left-v30542 .spviet-retail-pos-modal-actions button{min-width:132px;font-weight:950}
.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542{align-content:start!important;justify-items:stretch!important;padding:0!important}.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-head-v30542{width:min(980px,92vw);margin:0 auto}.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-head-v30542 h2{font-size:clamp(34px,5vw,58px)!important}.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-head-v30542 p{font-size:clamp(16px,1.7vw,22px)}.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-branch-v30542{width:min(900px,92vw);margin:0 auto;font-size:clamp(24px,3vw,38px)}.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-guides-v30542{width:min(980px,92vw);margin:0 auto}.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-guides-v30542>div{grid-template-columns:44px 54px 1fr;border-radius:22px;padding:16px 18px}.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-guides-v30542 em{width:38px;height:38px;font-size:18px}.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-guides-v30542 span{font-size:32px}.spviet-pos-customer-display-v30517.spviet-pos-fanpage-left-v30542 .spviet-pos-fanpage-guides-v30542 b{font-size:clamp(18px,2vw,28px)}
@media(max-width:720px){.spviet-pos-fanpage-head-v30542{align-items:flex-start}.spviet-pos-fanpage-head-v30542>i{width:48px;height:48px;flex-basis:48px}.spviet-pos-fanpage-left-v30542 h2{font-size:24px!important}.spviet-pos-fanpage-guides-v30542>div{grid-template-columns:30px 36px 1fr;padding:9px}.spviet-pos-fanpage-left-v30542 .spviet-retail-pos-modal-actions{justify-content:stretch!important}.spviet-pos-fanpage-left-v30542 .spviet-retail-pos-modal-actions button{width:100%;min-width:0}}


/* v3.0.562 - Compact branch header + manual authoritative FULL cache sync */
.spviet-retail-pos-header-branch .meta-label{text-transform:none!important;letter-spacing:normal!important}
.spviet-retail-pos-header-sync{gap:6px!important;align-items:center!important}
.spviet-retail-pos-header-sync .spviet-retail-pos-cache-sync-btn{border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.16);color:#fff;border-radius:999px;padding:5px 10px;font-weight:900;line-height:1;cursor:pointer;box-shadow:none;min-height:28px}
.spviet-retail-pos-header-sync .spviet-retail-pos-cache-sync-btn:hover{background:rgba(255,255,255,.24)}
.spviet-retail-pos-header-sync .spviet-retail-pos-cache-sync-btn:disabled{opacity:.65;cursor:wait}
.spviet-retail-pos-header-sync small{font-size:11px;color:#c7f9e8;font-weight:800;white-space:nowrap;opacity:.92}
.spviet-retail-pos-header-sync.is-syncing .spviet-retail-pos-cache-sync-btn{background:#f59e0b;color:#111827;border-color:#fbbf24}
.spviet-retail-pos-header-sync.is-ok .spviet-retail-pos-cache-sync-btn{background:#059669;color:#fff;border-color:#34d399}
.spviet-retail-pos-header-sync.is-error .spviet-retail-pos-cache-sync-btn{background:#dc2626;color:#fff;border-color:#fca5a5}
@media(max-width:1500px){.spviet-retail-pos-header-sync small{display:inline!important}.spviet-retail-pos-header-meta{min-width:260px!important}}
@media(max-width:1100px){.spviet-retail-pos-header-sync{justify-content:flex-start!important}.spviet-retail-pos-header-meta{min-width:0!important}}


/* v3.0.570 - POS header sync as standalone compact column before Chi Nhánh */
.spviet-retail-pos-header-right{align-items:center!important;gap:10px!important}
.spviet-retail-pos-header-sync-column{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:3px!important;min-width:82px!important;max-width:96px!important;align-self:center!important;text-align:center!important;padding:0!important;margin:0!important;color:#d7fff1!important;white-space:nowrap!important;line-height:1.05!important}
.spviet-retail-pos-header-sync-column .meta-icon{display:none!important}
.spviet-retail-pos-header-sync-column .meta-label{display:none!important}
.spviet-retail-pos-header-sync-column .spviet-retail-pos-cache-sync-btn{min-height:28px!important;padding:5px 12px!important;border-radius:999px!important;font-size:12px!important;line-height:1!important;white-space:nowrap!important}
.spviet-retail-pos-header-sync-column small{display:block!important;max-width:96px!important;overflow:hidden!important;text-overflow:ellipsis!important;font-size:10px!important;line-height:1.05!important;color:#c7f9e8!important;font-weight:800!important;opacity:.95!important;white-space:nowrap!important}
.spviet-retail-pos-header-identity-column{min-width:190px!important;max-width:330px!important;text-align:right!important;gap:3px!important}
@media(max-width:1500px){.spviet-retail-pos-header-sync-column{min-width:78px!important;max-width:90px!important}.spviet-retail-pos-header-identity-column{min-width:180px!important}.spviet-retail-pos-header-sync small{display:block!important}.spviet-retail-pos-header-meta{min-width:180px!important}}
@media(max-width:1100px){.spviet-retail-pos-header-sync-column{align-items:flex-start!important;text-align:left!important}.spviet-retail-pos-header-identity-column{text-align:left!important;min-width:0!important}.spviet-retail-pos-header-right{align-items:flex-start!important}}
