:root{--blue:#0d6efd;--blue2:#60a5fa;--dark:#0f172a;--bg:#f4f7fb;--side:#0f172a;--side2:#111827;--sideText:#f8fafc;--sideMuted:#cbd5e1;--sideHover:#1e293b;--sideActive:#2563eb;--line:#e5e7eb;--card:#fff}.login-bg{background:linear-gradient(135deg,#0d6efd,#46b4ff)}.login-card{border:0;border-radius:18px}.app-shell{min-height:100vh;display:flex;background:var(--bg);color:#111827}.sidebar{width:292px;background:var(--side);color:var(--sideText);flex:0 0 292px;border-right:1px solid rgba(255,255,255,.06)}.sidebar .brand{background:#08111f;border-bottom:1px solid rgba(255,255,255,.08)}.brand-title{font-size:1.08rem;font-weight:800;color:#fff}.brand-sub{font-size:.78rem;color:#93c5fd;margin-top:2px}.sidebar .offcanvas-body{overflow-y:auto;max-height:100vh}.sidebar a.nav-link,.sidebar .nav-link{display:block;color:#f8fafc!important;text-decoration:none;padding:10px 18px;border-left:4px solid transparent;font-weight:700;line-height:1.25;border-radius:0}.sidebar a.nav-link.sub{padding:9px 18px 9px 42px;color:#e5e7eb!important;font-weight:650;font-size:.94rem}.sidebar a.nav-link:hover{background:var(--sideHover);border-left-color:#60a5fa;color:#fff!important}.sidebar a.nav-link.active{background:linear-gradient(90deg,rgba(37,99,235,.95),rgba(37,99,235,.22));border-left-color:#bfdbfe;color:#fff!important}.logout-link{margin-top:8px;color:#fecaca!important}.logout-link:hover{background:#7f1d1d!important;border-left-color:#f87171!important}.menu-toggle{width:100%;border:0;background:#172033;color:#f8fafc;text-align:left;padding:12px 16px;margin-top:6px;font-size:.82rem;text-transform:uppercase;font-weight:850;letter-spacing:.04em;display:flex;justify-content:space-between;align-items:center;border-top:1px solid rgba(255,255,255,.04);border-bottom:1px solid rgba(255,255,255,.04)}.menu-toggle:hover{background:#1f2a44;color:white}.menu-toggle span{transition:transform .2s ease;color:#bfdbfe}.menu-toggle[aria-expanded="true"] span{transform:rotate(180deg)}.main{flex:1;min-width:0}.topbar{height:62px;background:white;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:sticky;top:0;z-index:10;box-shadow:0 1px 5px rgba(15,23,42,.04)}.content{padding:18px}.page-title{font-size:1.55rem;font-weight:850;color:#0f172a}.card{border:0;border-radius:14px;box-shadow:0 2px 10px rgba(15,23,42,.06);background:#fff}.stat{padding:18px}.stat .num{font-size:1.7rem;font-weight:850}.table{margin-bottom:0}.table th{white-space:nowrap;cursor:pointer;background:#f8fafc;color:#334155;font-size:.82rem;text-transform:uppercase}.table td{vertical-align:middle}.table-hover tbody tr:hover{background:#f8fbff}.desc-line{font-size:.83rem;color:#64748b}.product-name-cell{min-width:260px}.modal-xl{--bs-modal-width:1120px}.qty-mode .btn.active{background:#0d6efd;color:white}.filter-row .form-control,.filter-row .form-select{min-width:150px}.btn{font-weight:650;border-radius:.55rem}.form-control,.form-select{border-radius:.55rem}.table-responsive{border-radius:14px;border:1px solid #edf2f7}.badge{font-weight:750}.toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:space-between}.toolbar-left,.toolbar-right{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.export-note{font-size:.78rem;color:#64748b}.selected-count{font-size:.78rem;font-weight:700;color:#2563eb}.required:after{content:' *';color:#dc2626}.sticky-actions{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--line);padding:12px;margin:16px -16px -16px}.print-only{display:none}@media print{.sidebar,.topbar,.btn,.toolbar,input[type=checkbox],.no-print{display:none!important}.main,.content{padding:0!important}.card{box-shadow:none;border:0}.table-responsive{border:0;overflow:visible}.print-only{display:block}.table th,.table td{font-size:11px;padding:4px}.sn{font-weight:700}}@media(max-width:991px){.app-shell{display:block}.main{width:100%}.sidebar{width:300px}.content{padding:12px}.table-responsive{font-size:.9rem}.topbar{height:auto;min-height:58px}.btn-group{flex-wrap:wrap}.toolbar{display:block}.toolbar-left,.toolbar-right{margin-top:.5rem}.card{border-radius:12px}.page-title{font-size:1.35rem}}/* Fallback if Bootstrap CSS is blocked */.collapse:not(.show){display:none}.collapse.show{display:block}.row{display:flex;flex-wrap:wrap;margin-left:-.5rem;margin-right:-.5rem}.g-2>*{padding:.25rem}.g-3>*{padding:.5rem}.col-6{width:50%}.col-md-3{width:25%}.col-md-4{width:33.3333%}.col-md-5{width:41.6667%}.col-md-7{width:58.3333%}.col-md-8{width:66.6667%}.col-lg-8{width:66.6667%}.col-lg-4{width:33.3333%}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:.5rem;border-bottom:1px solid #e5e7eb}.btn{display:inline-block;padding:.375rem .75rem;text-decoration:none;border:1px solid transparent}.btn-primary{background:#0d6efd;color:#fff}.btn-success{background:#198754;color:#fff}.btn-secondary{background:#6c757d;color:#fff}.btn-outline-danger{border-color:#dc3545;color:#dc3545}.btn-outline-primary{border-color:#0d6efd;color:#0d6efd}.btn-outline-secondary{border-color:#6c757d;color:#495057}.badge{display:inline-block;padding:.35em .65em;border-radius:.375rem}@media(max-width:991px){.col-md-3,.col-md-4,.col-md-5,.col-md-7,.col-md-8,.col-lg-8,.col-lg-4{width:100%}}


/* V18 sidebar readability and collapse menu fix */
html,body{margin:0;min-height:100%;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:#f4f7fb;color:#111827}
.app-shell{min-height:100vh;display:flex!important;background:#f4f7fb}.sidebar{width:300px!important;flex:0 0 300px!important;background:#0b1220!important;color:#f8fafc!important;border-right:1px solid rgba(255,255,255,.08);min-height:100vh}.sidebar .brand{padding:16px 18px!important;background:#07101d!important;border-bottom:1px solid rgba(255,255,255,.08)!important}.sidebar .brand,.sidebar .brand *,.brand-title{color:#fff!important}.brand-sub{font-size:.78rem;color:#93c5fd!important}.sidebar .offcanvas-body{display:block!important;background:#0b1220!important;padding:0!important;overflow-y:auto;max-height:100vh}.sidebar a,.sidebar a:link,.sidebar a:visited,.sidebar .nav-link{display:block!important;color:#e8f1ff!important;text-decoration:none!important;padding:10px 18px!important;border-left:4px solid transparent!important;font-weight:700!important;line-height:1.25!important}.sidebar a.sub,.sidebar a.nav-link.sub{padding-left:42px!important;color:#dbeafe!important;font-size:.94rem!important;font-weight:650!important}.sidebar a:hover,.sidebar .nav-link:hover{background:#172554!important;color:#fff!important;border-left-color:#60a5fa!important}.sidebar a.active,.sidebar .nav-link.active{background:linear-gradient(90deg,#2563eb,rgba(37,99,235,.25))!important;color:#fff!important;border-left-color:#bfdbfe!important}.sidebar .menu-head{padding:14px 18px 5px!important;color:#93c5fd!important;font-size:.76rem!important;text-transform:uppercase!important;font-weight:850!important;letter-spacing:.04em!important}.menu-toggle{width:100%!important;border:0!important;background:#111c31!important;color:#f8fafc!important;text-align:left!important;padding:12px 16px!important;margin:6px 0 0!important;font-size:.82rem!important;text-transform:uppercase!important;font-weight:850!important;letter-spacing:.04em!important;display:flex!important;justify-content:space-between!important;align-items:center!important;border-top:1px solid rgba(255,255,255,.05)!important;border-bottom:1px solid rgba(255,255,255,.05)!important;cursor:pointer!important}.menu-toggle:hover{background:#1e2a44!important;color:#fff!important}.menu-toggle span{color:#bfdbfe!important}.menu-toggle[aria-expanded="true"] span{transform:rotate(180deg)}.collapse:not(.show){display:none!important}.collapse.show{display:block!important}.main{flex:1!important;min-width:0!important}.topbar{height:62px;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:sticky;top:0;z-index:10}.content{padding:18px}.page-title{color:#0f172a!important}.card{background:#fff}.logout-link,.sidebar a.logout-link{color:#fecaca!important}.logout-link:hover{background:#7f1d1d!important;border-left-color:#f87171!important}@media(max-width:991px){.app-shell{display:block!important}.sidebar{position:fixed!important;left:-310px;top:0;bottom:0;z-index:1050;transition:left .2s ease;width:300px!important}.sidebar.show{left:0}.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:1040}.sidebar-backdrop.show{display:block}.mobile-menu-btn{display:inline-block}.main{width:100%!important}.content{padding:12px}}

/* V25 product image thumbnails and zoom */
.product-thumb{width:58px;height:58px;object-fit:cover;border-radius:10px;border:1px solid #e5e7eb;background:#fff;box-shadow:0 1px 4px rgba(15,23,42,.10)}
.product-thumb:hover{transform:scale(1.04);box-shadow:0 4px 12px rgba(15,23,42,.18)}
.product-image-gallery{display:flex;flex-wrap:wrap;gap:.5rem}.product-image-gallery a{display:inline-block}.zoomable-img{cursor:zoom-in}.image-url-cell{font-size:.75rem;color:#64748b;max-width:260px;word-break:break-all}

/* V42 Marketing targeting panels - does not change sidebar colours */
.target-box{border:1px solid #e5e7eb;border-radius:14px;padding:12px;background:#fff;min-height:260px;box-shadow:0 1px 4px rgba(15,23,42,.04)}
.target-title{font-weight:800;margin-bottom:8px;color:#0f172a}.target-list{max-height:210px;overflow:auto}.target-row{padding:4px 2px;border-radius:6px}.target-row:hover{background:#f8fafc}.target-box hr{margin:.45rem 0}.target-box label{cursor:pointer}.target-box input[type="checkbox"]{margin-right:6px}

/* V86 Global Sortable Tables */
.app-sortable-table thead th.sortable-th{cursor:pointer;position:relative;user-select:none;padding-right:1.35rem!important;background-clip:padding-box}
.app-sortable-table thead th.sortable-th::after{content:'↕';position:absolute;right:.45rem;top:50%;transform:translateY(-50%);font-size:.72rem;color:#94a3b8;font-weight:900}
.app-sortable-table thead th.sortable-th[data-sort-dir="asc"]::after{content:'▲';color:#0d6efd}
.app-sortable-table thead th.sortable-th[data-sort-dir="desc"]::after{content:'▼';color:#0d6efd}
.app-sortable-table thead th.no-sort{cursor:default!important}
.global-table-toolbar{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:.55rem .65rem;box-shadow:0 1px 4px rgba(15,23,42,.04)}
.global-table-toolbar .form-control{min-width:180px}
.app-table-editable thead th{cursor:default!important}
@media print{.global-table-toolbar{display:none!important}.app-sortable-table thead th::after{display:none!important}}

/* V87 Order Detail Product Table Sorting */
.app-table-editable-sortable thead th.sortable-th{cursor:pointer!important;background:#f8fafc!important}
.app-table-editable-sortable thead th.sortable-th:hover{background:#eef6ff!important;color:#0d6efd!important}
.app-table-editable-sortable tbody tr{transition:background .12s ease}
.app-table-editable-sortable tbody tr:hover{background:#f8fbff!important}

/* V96 Unified Sales + Compact App Layout */
@media(min-width:992px){
  .sidebar{position:sticky!important;top:0!important;height:100vh!important;width:258px!important;flex-basis:258px!important;overflow:hidden!important}
  .sidebar .offcanvas-body{height:100vh!important;max-height:100vh!important;overflow-y:auto!important;scrollbar-width:thin!important}
  .sidebar .brand{padding:12px 14px!important}.brand-title{font-size:.98rem!important}.brand-sub{font-size:.72rem!important}
  .menu-toggle{padding:8px 12px!important;margin-top:3px!important;font-size:.74rem!important}
  .sidebar a,.sidebar .nav-link{padding:7px 12px!important;font-size:.88rem!important;line-height:1.18!important}
  .sidebar a.sub,.sidebar a.nav-link.sub{padding:6px 12px 6px 30px!important;font-size:.83rem!important}
  .topbar{height:52px!important}.content{padding:12px!important}
}
.source-badge{font-weight:800}.app-filter-card .form-label{margin-bottom:.18rem}.unified-note{border-left:4px solid #0d6efd;background:#f8fbff}
body.app-compact .card{border-radius:10px!important;box-shadow:0 1px 5px rgba(15,23,42,.05)!important}
body.app-compact .card.p-3{padding:.65rem!important}
body.app-compact .table th,body.app-compact .table td{padding:.28rem .38rem!important;font-size:.82rem!important}
body.app-compact .form-control,body.app-compact .form-select,body.app-compact .btn{padding:.25rem .5rem!important;font-size:.84rem!important}
body.app-compact .page-title{font-size:1.15rem!important;margin-bottom:.25rem!important}
body.app-compact .row.g-3,body.app-compact .row.g-2{--bs-gutter-y:.35rem!important;--bs-gutter-x:.35rem!important}
body.app-compact .toolbar{gap:.3rem!important;margin-bottom:.35rem!important}.app-card-tools{display:flex;justify-content:flex-end;gap:.35rem;margin:-.15rem -.15rem .35rem 0}.app-card-collapse-btn{font-size:.72rem!important;padding:.15rem .4rem!important}.app-card-collapsed>*:not(.app-card-tools){display:none!important}
@media print{.app-card-tools,#compactModeBtn{display:none!important}}


/* V103 professional stabilization polish */
.page-title{letter-spacing:-.02em}.sidebar .brand-sub{letter-spacing:.01em}.content .alert{border-radius:12px}.table thead th{background:#f8fafc;color:#334155;border-bottom:1px solid #cbd5e1}.table-hover tbody tr:hover{background:#f8fbff}.btn-outline-danger:hover{color:#fff}.global-table-toolbar{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:.55rem}.no-print{print-color-adjust:exact}.app-sortable-table th.sortable-th::after{content:' ↕';font-size:.75em;color:#94a3b8}.app-sortable-table th[aria-sort="ascending"]::after{content:' ▲';color:#2563eb}.app-sortable-table th[aria-sort="descending"]::after{content:' ▼';color:#2563eb}.card h5{font-weight:800;color:#0f172a}.toolbar,.toolbar-left,.toolbar-right{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.export-note{font-size:.76rem;color:#64748b}

/* V122 live search suggestions near search bars */
.app-live-suggest-box{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:1060;background:#fff;border:1px solid #bfdbfe;border-radius:12px;box-shadow:0 16px 40px rgba(15,23,42,.14);max-height:280px;overflow:auto;padding:5px;color:#0f172a;min-width:240px}
.app-live-suggest-item{padding:8px 10px;border-radius:9px;cursor:pointer;font-size:.86rem;border-bottom:1px solid #eff6ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.app-live-suggest-item:hover{background:#eff6ff;color:#1e40af}.app-live-suggest-empty{padding:10px;color:#64748b;font-size:.84rem;font-weight:700}

/* V127 app optimization + Bootstrap-style helpers */
.v127-table-pager{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:.5rem .65rem}.v127-table-pager .btn{min-width:70px}.app-alert-modal .modal-content{border-radius:1rem}.global-table-toolbar .btn-group{margin-left:.25rem}

.pos-report-full .global-table-toolbar,.pos-report-full .v127-table-pager,[data-no-table-tools="1"] .global-table-toolbar,[data-no-table-tools="1"] .v127-table-pager{display:none!important}
@media print{.global-table-toolbar,.v127-table-pager,.toolbar,.toolbar-left,.toolbar-right,.no-pdf,.no-print{display:none!important}}
/* V162 product RSP alignment + hidden export columns */
.export-extra-col{display:none!important}
.rsp-analysis-grid .form-label{font-weight:700;color:#334155}.rsp-analysis-grid .form-control,.rsp-analysis-grid .form-select{min-height:42px}.rsp-analysis-grid .form-text{min-height:34px}
