:root{--bg:#f5f7fb;--dark:#111827;--blue:#2f80ed;--green:#27ae60;--teal:#00a6a6;--purple:#7b61ff;--orange:#f2994a;--red:#eb5757;--violet:#9b51e0;--gray:#64748b}*{font-family:'Rubik',Tahoma,Arial,sans-serif}body{background:var(--bg);color:#1f2937}.sidebar{width:285px;background:#101828;color:#fff;position:fixed;right:0;top:0;bottom:0;z-index:1040;overflow:auto}.sidebar .brand{padding:1.2rem;border-bottom:1px solid rgba(255,255,255,.08);font-weight:800}.sidebar a{display:flex;align-items:center;gap:.65rem;color:rgba(255,255,255,.78);text-decoration:none;margin:.22rem .75rem;padding:.72rem 1rem;border-radius:1rem}.sidebar a:hover,.sidebar a.active{background:rgba(255,255,255,.12);color:#fff}.main{margin-right:285px;padding:1rem 1.25rem 2rem}.topbar,.card-soft{background:rgba(255,255,255,.96);border:1px solid #e8edf5;border-radius:1.25rem;box-shadow:0 12px 28px rgba(15,23,42,.06)}.topbar{padding:.85rem 1rem;margin-bottom:1rem}.form-control,.form-select,.btn,.ts-control{border-radius:.9rem!important}.form-control,.form-select,.ts-control{border-color:#d7deea!important;background:#fff!important;min-height:42px}.form-label{font-weight:600;color:#475569}.btn-icon{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center}.section-card{color:#fff;border:0;border-radius:1.35rem;min-height:125px;transition:.16s;overflow:hidden;position:relative}.section-card:hover{transform:translateY(-4px);box-shadow:0 16px 32px rgba(15,23,42,.16)}.section-card i{font-size:2.15rem}.watermark{position:absolute;left:-12px;bottom:-30px;font-size:8rem!important;opacity:.1}.bg-products{background:linear-gradient(135deg,#2f80ed,#56ccf2)}.bg-invoices{background:linear-gradient(135deg,#27ae60,#6fcf97)}.bg-companies{background:linear-gradient(135deg,#00a6a6,#00d2d2)}.bg-reps{background:linear-gradient(135deg,#7b61ff,#b388ff)}.bg-payments{background:linear-gradient(135deg,#f2994a,#f2c94c)}.bg-expenses{background:linear-gradient(135deg,#eb5757,#ff8a80)}.bg-reports{background:linear-gradient(135deg,#9b51e0,#bb6bd9)}.bg-users{background:linear-gradient(135deg,#4f4f4f,#828282)}.table thead th{background:#f1f5f9;color:#334155;white-space:nowrap}.table td,.table th{vertical-align:middle}.badge-pill{border-radius:999px;padding:.45rem .7rem}.invoice-item{background:#fff;border:1px solid #e5ebf4;border-radius:1.1rem;padding:1rem;margin-bottom:.85rem}.drag-handle{cursor:grab;color:#94a3b8;font-size:1.3rem}.breadcrumb{font-size:.9rem}.wallet-tab{border-radius:1rem!important}.movement-debit{border-right:4px solid var(--red)}.movement-credit,.movement-payment{border-right:4px solid var(--green)}.movement-invoice{border-right:4px solid var(--blue)}@media(max-width:991px){.sidebar{transform:translateX(100%);transition:.2s}.sidebar.open{transform:none}.main{margin-right:0}}@media print{.sidebar,.topbar,.no-print,.btn{display:none!important}.main{margin:0;padding:0}.card-soft{box-shadow:none;border:1px solid #ddd}body{background:#fff}}

/* V2.1 UI refinements */
.company-logo{width:76px;height:76px;border-radius:22px;object-fit:cover;border:1px solid #e2e8f0;background:#f8fafc}.avatar-lg{width:68px;height:68px;border-radius:22px;display:flex;align-items:center;justify-content:center;background:#eef2ff;color:#4f46e5;font-size:2rem}.stat-card{border-radius:1.15rem;padding:1rem;color:#fff;display:flex;justify-content:space-between;align-items:center;min-height:92px}.stat-card small{opacity:.86}.stat-card strong{font-size:1.35rem}.stat-blue{background:linear-gradient(135deg,#2563eb,#60a5fa)}.stat-green{background:linear-gradient(135deg,#059669,#34d399)}.stat-red{background:linear-gradient(135deg,#dc2626,#fb7185)}.invoice-line-card{border:1px solid #dfe7f3;background:linear-gradient(180deg,#fff,#fbfdff);box-shadow:0 10px 22px rgba(15,23,42,.045)}.invoice-line-top{display:grid;grid-template-columns:42px minmax(260px,1fr) auto;gap:.85rem;align-items:center}.drag-pill{height:42px;border-radius:14px;background:#f1f5f9;display:flex;align-items:center;justify-content:center}.line-actions{display:flex;gap:.45rem}.invoice-metrics-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));gap:.75rem;align-items:end}.metric-readonly,.metric-total{min-height:42px;border:1px dashed #cbd5e1;border-radius:.9rem;padding:.45rem .65rem;background:#f8fafc;display:flex;flex-direction:column;justify-content:center}.metric-readonly span,.metric-total span{font-size:.78rem;color:#64748b}.metric-readonly strong,.metric-total strong{font-size:1.05rem}.metric-total{background:#ecfdf5;border-color:#86efac}.invoice-info-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem}.invoice-info-strip>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:1rem;padding:.75rem}.invoice-info-strip span{display:block;color:#64748b;font-size:.82rem}.summary-box{border:1px solid #dbe3ef;border-radius:14px;padding:12px;background:#f8fafc}.permission-card{display:flex;align-items:center;gap:.55rem;border:1px solid #e2e8f0;background:#fff;border-radius:1rem;padding:.75rem;height:100%;cursor:pointer}.permission-card:hover{background:#f8fafc}.permission-card input{transform:scale(1.15)}
@media(max-width:1200px){.invoice-metrics-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:768px){.invoice-line-top{grid-template-columns:1fr}.line-actions{justify-content:flex-end}.invoice-metrics-grid,.invoice-info-strip{grid-template-columns:1fr}}


/* V2.3 refinements */
.btn-primary{--bs-btn-bg:var(--app-primary);--bs-btn-border-color:var(--app-primary);--bs-btn-hover-bg:color-mix(in srgb,var(--app-primary),#000 12%);--bs-btn-hover-border-color:color-mix(in srgb,var(--app-primary),#000 12%)}
.text-primary{color:var(--app-primary)!important}.bg-primary{background-color:var(--app-primary)!important}.border-primary{border-color:var(--app-primary)!important}
.sidebar a.active{background:color-mix(in srgb,var(--app-primary),transparent 72%)}.btn-sidebar-logout{display:flex;align-items:center;gap:.65rem;color:rgba(255,255,255,.78);border:0;border-radius:1rem;padding:.72rem 1rem}.btn-sidebar-logout:hover{background:rgba(255,255,255,.12);color:#fff}.toast-container{direction:rtl}.app-toast{border-radius:1rem!important;overflow:hidden}.actions-cell .btn{min-width:42px}.dropdown-menu .dropdown-item{display:flex;align-items:center;gap:.45rem}.filter-action-bar{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.9rem}.summary-card{border:0;border-radius:1.25rem;color:#fff;box-shadow:0 12px 26px rgba(15,23,42,.08);overflow:hidden;position:relative}.summary-card .icon{font-size:2rem;opacity:.9}.summary-card small{opacity:.85}.summary-card a{color:#fff;text-decoration:underline}.summary-sales{background:linear-gradient(135deg,#2563eb,#60a5fa)}.summary-payments{background:linear-gradient(135deg,#059669,#34d399)}.summary-debt{background:linear-gradient(135deg,#dc2626,#fb7185)}.summary-expenses{background:linear-gradient(135deg,#ea580c,#fdba74)}.summary-cost{background:linear-gradient(135deg,#475569,#94a3b8)}.summary-gross{background:linear-gradient(135deg,#7c3aed,#c084fc)}.summary-net{background:linear-gradient(135deg,#0f766e,#5eead4)}.summary-area{background:linear-gradient(135deg,#4338ca,#818cf8)}.company-wallet-card{background:linear-gradient(180deg,#fff,#f8fbff);border:1px solid #e2e8f0;border-radius:1.25rem}.wallet-adjust-button{border-style:dashed}.modal-form-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:1.1rem;padding:1rem}.user-avatar{width:42px;height:42px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;background:#eef2ff;color:#4f46e5;font-weight:800}.action-split .btn{height:34px}.muted-field[disabled],.muted-field[readonly]{background:#f8fafc!important;color:#64748b;opacity:1}.representative-mini-card{border:1px solid #e2e8f0;border-radius:1.2rem;background:#fff;padding:1rem}.balance-due{color:#dc2626}.balance-credit{color:#059669}.balance-zero{color:#64748b}


/* V2.4 unified split action buttons */
.actions-cell{white-space:nowrap}
.btn-group.action-split, .btn-group.split-actions{direction:rtl;display:inline-flex;vertical-align:middle}
.btn-group.action-split>.btn, .btn-group.split-actions>.btn{border-radius:0!important;min-height:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;gap:.35rem;box-shadow:none!important}
.btn-group.action-split>.btn:first-child, .btn-group.split-actions>.btn:first-child{border-top-right-radius:.48rem!important;border-bottom-right-radius:.48rem!important;border-top-left-radius:0!important;border-bottom-left-radius:0!important}
.btn-group.action-split>.dropdown-toggle-split, .btn-group.split-actions>.dropdown-toggle-split{border-top-left-radius:.48rem!important;border-bottom-left-radius:.48rem!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;padding-inline:.55rem!important;min-width:34px;width:34px}
.btn-group.action-split>.dropdown-toggle-split::after, .btn-group.split-actions>.dropdown-toggle-split::after{margin-inline-start:0}
.btn-group.action-split .dropdown-menu, .btn-group.split-actions .dropdown-menu{border-radius:.65rem;box-shadow:0 14px 30px rgba(15,23,42,.12);border-color:#e2e8f0;padding:.35rem}
.btn-group.action-split .dropdown-item, .btn-group.split-actions .dropdown-item{border-radius:.45rem;padding:.55rem .75rem}
.btn-group.action-split .dropdown-item:hover, .btn-group.split-actions .dropdown-item:hover{background:#f1f5f9}



/* V2.5 dropdown + theme fixes */
.dropdown-menu.dropdown-portal{
    position: fixed !important;
    z-index: 3000 !important;
    display: block !important;
    inset: auto auto auto auto !important;
    max-height: 70vh;
    overflow-y: auto;
    min-width: 190px;
}
.actions-cell .btn-outline-info,
.btn-group.action-split>.btn-outline-info,
.btn-group.split-actions>.btn-outline-info{
    --bs-btn-color: var(--app-primary);
    --bs-btn-border-color: var(--app-primary);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--app-primary);
    --bs-btn-hover-border-color: var(--app-primary);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--app-primary);
    --bs-btn-active-border-color: var(--app-primary);
    --bs-btn-disabled-color: var(--app-primary);
    --bs-btn-disabled-border-color: var(--app-primary);
}
.btn-group.action-split>.btn,
.btn-group.split-actions>.btn{
    border-radius:0!important;
    min-height:34px;
    height:34px;
}
.color-choice-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(120px,1fr));
    gap:.55rem;
}
.color-choice{
    border:1px solid #dbe3ef;
    background:#fff;
    border-radius:.85rem;
    padding:.55rem .65rem;
    display:flex;
    align-items:center;
    gap:.55rem;
    cursor:pointer;
    transition:.15s ease;
}
.color-choice:hover{background:#f8fafc;border-color:var(--app-primary)}
.color-choice input{accent-color:var(--app-primary)}
.color-swatch{
    width:22px;
    height:22px;
    border-radius:50%;
    border:2px solid #fff;
    outline:1px solid #cbd5e1;
    flex:0 0 22px;
}


/* V2.6 fix: action dropdowns are positioned by custom JS, not Bootstrap Popper. */
.dropdown-menu.dropdown-portal{
    position:fixed!important;
    inset:auto!important;
    transform:none!important;
    z-index:9999!important;
    max-height:70vh;
    overflow-y:auto;
    min-width:190px;
}
.actions-cell{position:relative;overflow:visible!important}


/* V2.7 effective dropdown fix: do not portal menus to body.
   The previous portal approach could miscalculate positions in RTL layouts.
   Keep Bootstrap menus beside the real button and allow table containers to show them. */
.table-responsive,
.card-soft,
.js-live-target,
.actions-cell,
.filter-action-bar{
    overflow: visible !important;
}
.table-responsive .dropdown-menu,
.actions-cell .dropdown-menu,
.btn-group.action-split .dropdown-menu,
.btn-group.split-actions .dropdown-menu{
    z-index: 1085 !important;
}
.dropdown-menu.dropdown-portal{
    position:absolute!important;
    transform:none!important;
}
@media(max-width: 768px){
    .table-responsive{overflow-x:auto!important;overflow-y:visible!important;}
}

/* Keep compact numeric fields free of browser spinner controls. */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button{
    -webkit-appearance:none;
    margin:0;
}
input[type="number"]{
    appearance:textfield;
    -moz-appearance:textfield;
}
