:root{--green:#178a4b;--sidebar:#10251a;--bg:#f4f7f5}.login-bg{background:linear-gradient(135deg,#0f5132,#20a866);min-height:100vh}.app-shell{display:flex;min-height:100vh;background:var(--bg)}.sidebar{width:250px;background:var(--sidebar);color:#fff;position:fixed;inset:0 auto 0 0;z-index:20}.brand{font-size:20px;font-weight:800;padding:24px}.sidebar nav{padding:0 12px}.sidebar nav a{display:flex;gap:12px;align-items:center;color:#d9e7df;text-decoration:none;padding:12px 14px;border-radius:10px;margin-bottom:5px}.sidebar nav a:hover,.sidebar nav a.active{background:var(--green);color:#fff}.main{margin-left:250px;min-width:0;width:calc(100% - 250px)}.topbar{height:76px;background:#fff;border-bottom:1px solid #e9efeb;display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:10}.content{padding:24px}.metric-card{background:#fff;border-radius:14px;padding:22px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 .25rem 1rem rgba(22,50,35,.06)}.card{border-radius:14px}.table thead th{background:#f7faf8;color:#577063;font-size:13px;text-transform:uppercase;white-space:nowrap}.search-box{max-width:390px}.form-control,.form-select,.btn{border-radius:9px}.badge{padding:.55em .8em}@media(max-width:991px){.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.show{transform:translateX(0)}.main{margin-left:0;width:100%}.content{padding:15px}.topbar{padding:0 15px}}@media print{.sidebar,.topbar,.btn{display:none!important}.main{margin:0;width:100%}.content{padding:0}.card{box-shadow:none!important}}
.print-sheet{background:#fff;padding:32px;border-radius:14px;box-shadow:0 .25rem 1rem rgba(22,50,35,.08)}
.signatures{min-height:130px}.table td,.table th{vertical-align:middle}.line-total{min-width:120px}
@media print{@page{size:A4;margin:10mm}body{background:#fff}.no-print,.sidebar,.topbar{display:none!important}.main{margin:0!important;width:100%!important}.content{padding:0!important}.print-sheet{box-shadow:none!important;padding:0!important;border-radius:0!important}.print-sheet table{font-size:12px}.signatures{min-height:120px}}
.sidebar{overflow-y:auto}.sidebar nav{padding-bottom:30px}.table td,.table th{vertical-align:middle}.metric-card{min-height:108px}.content{max-width:1600px;margin:0 auto}.badge{font-weight:600}.print-sheet h3,.print-sheet h4{margin-bottom:.35rem}
@media print{
  @page{size:A4;margin:0}
  html,body{margin:0!important;padding:0!important;background:#fff!important}
  .print-sheet,.print-report-title,.report-summary,.card{margin:10mm!important}
  .print-sheet a[href]:after,.print-report-title a[href]:after,table a[href]:after{content:""!important}
  a{color:#000!important;text-decoration:none!important}
}

.debt-hero{background:linear-gradient(135deg,#eaf8f0,#fff);border:1px solid #dcefe4;border-radius:18px;padding:24px;display:flex;justify-content:space-between;align-items:center}.debt-eyebrow{display:block;font-size:12px;font-weight:800;letter-spacing:.12em;color:var(--green);margin-bottom:5px}.debt-stat{position:relative;overflow:hidden;background:#fff;border-radius:16px;padding:20px;box-shadow:0 .25rem 1rem rgba(22,50,35,.06);border-left:4px solid #6c757d}.debt-stat span{display:block;color:#718078;font-size:13px;margin-bottom:6px}.debt-stat strong{font-size:22px}.debt-stat i{position:absolute;right:18px;top:18px;font-size:28px;opacity:.18}.debt-stat.success{border-left-color:#198754}.debt-stat.danger{border-left-color:#dc3545}.debt-stat.warning{border-left-color:#ffc107}@media(max-width:767px){.debt-hero{display:block}.debt-hero .btn{margin-top:15px}}
@media print{html,body{margin:0!important;padding:0!important}.print-sheet{margin:0!important}.print-sheet .print-generated-time,.print-generated-time{display:none!important}}
.delivery-print-table th,.delivery-print-table td{padding:12px 10px}.delivery-print-table tbody td{font-size:15px}.delivery-print-table thead th{font-size:13px}@media print{.delivery-print-table th,.delivery-print-table td{padding:9px 8px!important}.delivery-print-table tbody td{font-size:13px!important}}

/* V13: sidebar scroll fix */
.sidebar{
  height:100vh;
  height:100dvh;
  display:flex;
  flex-direction:column;
  overflow:hidden!important;
  overscroll-behavior:contain;
}
.sidebar .brand{
  flex:0 0 auto;
  position:sticky;
  top:0;
  z-index:2;
  background:var(--sidebar);
  border-bottom:1px solid rgba(255,255,255,.08);
}
.sidebar nav{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  padding:12px 12px 36px;
  scrollbar-width:thin;
  scrollbar-color:rgba(255,255,255,.35) transparent;
}
.sidebar nav::-webkit-scrollbar{width:7px}
.sidebar nav::-webkit-scrollbar-track{background:transparent}
.sidebar nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.28);border-radius:999px}
.sidebar nav::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.45)}
.sidebar nav a{flex:0 0 auto}
.sidebar-backdrop{display:none}
body.sidebar-open{overflow:hidden}
@media(max-width:991px){
  .sidebar{width:min(86vw,300px);box-shadow:12px 0 35px rgba(0,0,0,.28)}
  .sidebar-backdrop{position:fixed;inset:0;background:rgba(5,18,11,.52);z-index:19;display:block;opacity:0;visibility:hidden;transition:.2s}
  .sidebar-backdrop.show{opacity:1;visibility:visible}
  .sidebar nav{padding-bottom:max(36px,env(safe-area-inset-bottom))}
}


/* V19: stable mobile off-canvas sidebar */
@media(max-width:991px){
  .sidebar{
    left:0;
    right:auto;
    transform:translate3d(-105%,0,0)!important;
    visibility:hidden;
    transition:transform .24s ease,visibility .24s ease;
    z-index:1055!important;
    will-change:transform;
  }
  .sidebar.show{
    transform:translate3d(0,0,0)!important;
    visibility:visible;
  }
  .sidebar-backdrop{z-index:1050!important}
  #menuBtn{
    position:relative;
    z-index:1060;
    min-width:44px;
    min-height:44px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    touch-action:manipulation;
  }
  #menuBtn .bi{font-size:1.45rem;line-height:1}
}

/* V38 - PWA / iPhone standalone */
html{background:#f4f7f5}
body{padding-bottom:env(safe-area-inset-bottom)}
.pwa-standalone body{overscroll-behavior-y:none}
.pwa-standalone .topbar{padding-top:max(12px,env(safe-area-inset-top))}
.pwa-install-trigger{align-items:center;gap:.4rem;white-space:nowrap}
.pwa-install-icon{text-align:center;margin-bottom:20px}.pwa-install-icon img{width:92px;height:92px;border-radius:22px;box-shadow:0 10px 28px rgba(25,135,84,.2)}
.pwa-step{display:flex;gap:14px;align-items:flex-start;padding:12px 0;border-bottom:1px solid #edf1ee}.pwa-step:last-child{border-bottom:0}.pwa-step span{width:30px;height:30px;border-radius:50%;background:#198754;color:#fff;display:inline-grid;place-items:center;font-weight:800;flex:0 0 auto}
@media(max-width:767px){.pwa-install-trigger{min-height:44px}.topbar{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}.content{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}}

/* V55 - searchable customer and product selectors */
.searchable-select-wrap{position:relative;min-width:0}
.searchable-select-wrap .searchable-select-input{padding-right:42px;background:#fff}
.searchable-select-wrap .searchable-select-toggle{position:absolute;right:1px;top:1px;bottom:1px;width:40px;border:0;background:transparent;color:#6c757d;z-index:3}
.searchable-select-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;left:0!important;bottom:0!important}
.searchable-select-menu{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:1090;max-height:280px;overflow:auto;background:#fff;border:1px solid #d9dee3;border-radius:.5rem;box-shadow:0 12px 30px rgba(0,0,0,.14);display:none}
.searchable-select-menu.show{display:block}
.searchable-select-option{display:block;width:100%;border:0;background:#fff;text-align:left;padding:.65rem .8rem;line-height:1.25;border-bottom:1px solid #f0f2f4}
.searchable-select-option:last-child{border-bottom:0}
.searchable-select-option:hover,.searchable-select-option.active{background:#eaf7ef;color:#146c43}
.searchable-select-empty{padding:.8rem;color:#6c757d;text-align:center}
@media(max-width:767px){.searchable-select-menu{max-height:220px}.searchable-select-option{padding:.8rem;font-size:1rem}}

/* V57 - balanced delivery item columns */
.delivery-items-table{table-layout:fixed;min-width:980px}
.delivery-items-table .col-product{width:43%}
.delivery-items-table .col-unit{width:8%}
.delivery-items-table .col-quantity{width:9%}
.delivery-items-table .col-price{width:14%}
.delivery-items-table .col-total{width:14%}
.delivery-items-table .col-note{width:9%}
.delivery-items-table .col-action{width:3%}
.delivery-items-table th,.delivery-items-table td{padding:.7rem .55rem}
.delivery-items-table .product-cell .searchable-select-wrap{width:100%}
.delivery-items-table .unit-cell .form-control,
.delivery-items-table .quantity-cell .form-control{padding-left:.4rem;padding-right:.4rem;min-width:0}
.delivery-items-table .price-cell .form-control{min-width:0}
.delivery-items-table .action-cell{padding-left:.25rem;padding-right:.25rem}
@media(max-width:767px){
  .delivery-items-table{min-width:850px}
  .delivery-items-table .col-product{width:46%}
  .delivery-items-table .col-unit{width:8%}
  .delivery-items-table .col-quantity{width:9%}
  .delivery-items-table .col-price{width:14%}
  .delivery-items-table .col-total{width:14%}
  .delivery-items-table .col-note{width:6%}
  .delivery-items-table .col-action{width:3%}
}

/* V63 - robust collapsed grouped sidebar menu */
.sidebar-menu{display:flex;flex-direction:column;gap:4px}
.sidebar-menu .menu-direct,.sidebar-menu .menu-group-toggle,.sidebar-menu .menu-submenu a{width:100%;display:flex;align-items:center;gap:11px;color:#d9e7df;text-decoration:none;border:0;background:transparent;border-radius:10px;transition:background .18s ease,color .18s ease}
.sidebar-menu .menu-direct,.sidebar-menu .menu-group-toggle{padding:12px 14px;margin:0}
.sidebar-menu .menu-direct:hover,.sidebar-menu .menu-direct.active,.sidebar-menu .menu-group-toggle:hover,.sidebar-menu .menu-group-toggle.active{background:rgba(255,255,255,.09);color:#fff}
.sidebar-menu .menu-direct.active,.sidebar-menu .menu-group.open>.menu-group-toggle{background:var(--green);color:#fff}
.menu-group{width:100%}
.menu-group-toggle{justify-content:space-between;text-align:left;font-weight:650;cursor:pointer}
.menu-group-label{display:flex;align-items:center;gap:11px;min-width:0}
.menu-group-label>span:not(.menu-badge){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.menu-chevron{font-size:.8rem;transition:transform .18s ease;flex:0 0 auto}
.menu-group.open .menu-chevron{transform:rotate(90deg)}
/* hidden is the source of truth: submenu can never leak open from older CSS */
.menu-submenu[hidden]{display:none!important}
.menu-submenu{display:block;overflow:hidden;padding-top:3px;animation:menuSlideDown .16s ease both}
@keyframes menuSlideDown{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.menu-submenu a{padding:10px 12px 10px 43px;margin:3px 0;font-size:14px;position:relative}
.menu-submenu a:before{content:"";position:absolute;left:25px;top:50%;width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.28);transform:translateY(-50%)}
.menu-submenu a:hover{background:rgba(255,255,255,.08);color:#fff}
.menu-submenu a.active{background:rgba(23,138,75,.5);color:#fff;font-weight:700}
.menu-submenu a.active:before{background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.12)}
.menu-submenu a>i{display:none}
.menu-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#dc3545;color:#fff;font-size:11px;font-weight:800;line-height:1}
@media(max-width:991px){.sidebar-menu .menu-direct,.sidebar-menu .menu-group-toggle{min-height:46px}.menu-submenu a{min-height:43px;padding-top:11px;padding-bottom:11px}}
