:root{--bg:#f4f7fb;--card:#fff;--ink:#1f2937;--muted:#6b7280;--primary:#0f6b8f;--primary-dark:#09445d;--line:#d9e2ec;--danger:#b91c1c;--ok:#15803d;--warn:#b45309}*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:250px;background:linear-gradient(180deg,#0b2c44,#092337);color:#fff;padding:18px;position:sticky;top:0;height:100vh;overflow:auto}.brand{width:54px;height:54px;border-radius:16px;background:#fff;color:#0b2c44;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:22px;margin-bottom:20px}.sidebar a{display:block;text-decoration:none;padding:10px 12px;border-radius:9px;margin:3px 0;color:#e5edf5}.sidebar a:hover{background:rgba(255,255,255,.12)}.nav-title{font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:#9fb8c9;margin:18px 0 6px}.content{flex:1;padding:24px;overflow:auto}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:18px}.topbar h1{margin:0;font-size:28px}.topbar p{margin:4px 0 0;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;margin-bottom:18px;box-shadow:0 8px 22px rgba(15,35,55,.04)}.card h2,.card h3{margin-top:0}.grid{display:grid;gap:14px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}label{display:block;font-weight:700;font-size:13px;color:#374151}input,select,textarea{width:100%;padding:10px 11px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;margin-top:6px;font:inherit}textarea{min-height:82px}.btn,button{display:inline-block;border:0;border-radius:9px;padding:10px 14px;background:var(--primary);color:#fff;text-decoration:none;cursor:pointer;font-weight:700}.btn:hover,button:hover{background:var(--primary-dark)}.btn.secondary{background:#475569}.btn.danger,.danger{background:var(--danger)!important}.btn.success{background:var(--ok)}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:#eef4f8;font-size:13px}.badge{display:inline-block;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700}.badge.ok{background:#dcfce7;color:#166534}.badge.warn{background:#fef3c7;color:#92400e}.badge.danger{background:#fee2e2;color:#991b1b}.alert{padding:12px 14px;border-radius:10px;margin-bottom:14px}.alert.success{background:#dcfce7;color:#166534}.alert.error{background:#fee2e2;color:#991b1b}.readonly-box{border:1px solid var(--line);background:#f8fafc;border-radius:10px;padding:12px}.filter-form{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:16px}.line-table input,.line-table select{min-width:110px}.summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.summary .tile{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}.summary .num{font-size:24px;font-weight:800;margin-top:6px}@media(max-width:900px){.app-shell{display:block}.sidebar{position:relative;width:100%;height:auto}.grid.two,.grid.three,.grid.four,.summary{grid-template-columns:1fr}.topbar{align-items:flex-start}.content{padding:16px}}@media print{.sidebar,.topbar,.filter-form,.actions .btn,button{display:none!important}.content{padding:0}.card{box-shadow:none;border:0}.app-shell{display:block}}

/* V3 role portal additions */
.login-page { background: linear-gradient(135deg, #0f172a, #0e7490); min-height: 100vh; }
.login-shell { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; }
.login-card { width: min(480px, 100%); background: #ffffff; border-radius: 20px; padding: 32px; box-shadow: 0 24px 80px rgba(15, 23, 42, .28); }
.login-logo { width: 58px; height: 58px; border-radius: 18px; background: #0e7490; color: #fff; display: grid; place-items: center; font-weight: 800; font-size: 22px; margin-bottom: 14px; }
.muted { color: #64748b; }
.stacked-form label { display: block; margin: 14px 0; font-weight: 700; }
.stacked-form input, .stacked-form select { width: 100%; margin-top: 6px; }
.demo-box { margin-top: 18px; padding: 12px; background: #f1f5f9; border-radius: 12px; color: #475569; font-size: 13px; }
.module-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 14px; }
.module-card { display: block; padding: 16px; border: 1px solid #e2e8f0; border-radius: 14px; background: #f8fafc; text-decoration: none; color: #0f172a; }
.module-card:hover { background: #ecfeff; border-color: #67e8f9; }
.module-card strong { display: block; margin-bottom: 6px; }
.module-card span { color: #64748b; font-size: 13px; }
/* V4 enhancements */
.inline-form{display:inline;margin:0}.actions.compact{gap:6px;margin:0;flex-wrap:nowrap}.actions.compact .btn,.actions.compact button{padding:7px 10px;font-size:12px}.permission-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin:12px 0}.permission-grid label{border:1px solid var(--line);background:#f8fafc;padding:10px;border-radius:10px}.company-header{display:flex;gap:16px;align-items:center;border-bottom:2px solid var(--line);padding-bottom:14px;margin-bottom:16px}.company-header h2{margin:0}.company-header p{margin:3px 0;color:#475569}.company-logo{width:86px;max-height:86px;object-fit:contain;border-radius:10px;border:1px solid var(--line);background:#fff}.login-logo-img{width:82px;max-height:82px;object-fit:contain;border-radius:16px;margin-bottom:14px}.receipt-card{max-width:1000px}.muted{color:#64748b}.filter-form label{min-width:145px}.filter-form input[type="search"]{min-width:240px}
@media print{.company-header{break-inside:avoid}.receipt-card{max-width:none}.btn.danger,.inline-form{display:none!important}}

/* V5 dashboard and payment enhancements */
.dashboard-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px;background:linear-gradient(135deg,#ffffff,#f4f0ff);border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:0 14px 35px rgba(15,23,42,.06)}.dashboard-hero h2{margin:0 0 5px;font-size:30px}.dashboard-hero p{margin:0;color:#64748b}.fy-pill{background:#fff;border:1px solid #e5e7eb;border-radius:999px;padding:10px 16px;font-weight:800;color:#312e81}.balance-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}.balance-card{border-radius:18px;padding:18px;color:#0f172a;border:1px solid #e5e7eb;background:#fff;box-shadow:0 12px 28px rgba(15,23,42,.05)}.balance-card span{display:block;color:#64748b;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.balance-card strong{display:block;font-size:25px;margin:8px 0 5px}.balance-card small{color:#64748b}.balance-card.cash{background:linear-gradient(135deg,#ecfdf5,#fff)}.balance-card.bank{background:linear-gradient(135deg,#eff6ff,#fff)}.balance-card.mpesa{background:linear-gradient(135deg,#f5f3ff,#fff)}.balance-card.total{background:linear-gradient(135deg,#fff7ed,#fff)}.dashboard-summary .tile{position:relative;overflow:hidden}.trend{display:block;margin-top:6px;font-size:12px;font-weight:700}.trend.good,.good{color:#16a34a}.trend.warn{color:#b45309}.danger-text{color:#dc2626}.dashboard-grid{display:grid;grid-template-columns:1.35fr .95fr;gap:16px;margin-bottom:16px}.dashboard-grid .wide{min-width:0}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.card-head h3{margin:0}.card-head span,.card-head a{color:#64748b;font-size:13px}.cash-flow-chart{height:210px;display:flex;align-items:end;gap:5px;border-left:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;padding:12px 8px 0;background:linear-gradient(180deg,#fff,#f8fafc);border-radius:14px}.flow-day{flex:1;display:flex;align-items:end;justify-content:center;gap:2px;min-width:6px}.flow-day i{width:7px;border-radius:999px 999px 0 0;display:block}.flow-day i.in{background:#22c55e}.flow-day i.out{background:#f43f5e}.chart-legend{display:flex;gap:18px;margin-top:10px;color:#64748b;font-size:13px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}.dot.in,.dot.green{background:#22c55e}.dot.out{background:#f43f5e}.dot.orange{background:#f97316}.dot.purple{background:#8b5cf6}.dot.blue{background:#3b82f6}.donut-wrap{display:grid;place-items:center;margin:12px 0}.donut{width:190px;height:190px;border-radius:50%;display:grid;place-items:center}.donut>div{width:108px;height:108px;border-radius:50%;background:#fff;display:grid;place-items:center;text-align:center;font-weight:900;padding:10px;box-shadow:inset 0 0 0 1px #e5e7eb}.donut small{display:block;font-weight:600;color:#64748b;margin-top:3px}.pl-list{list-style:none;padding:0;margin:10px 0 0}.pl-list li{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #eef2f7;padding:8px 0}.expense-bar{margin:12px 0}.expense-bar div{display:flex;justify-content:space-between;gap:12px;font-size:13px}.expense-bar p{height:9px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin:6px 0 0}.expense-bar i{display:block;height:100%;background:linear-gradient(90deg,#4f46e5,#c084fc);border-radius:999px}.creditor-field,.debtor-field{transition:.2s}.service-item-qty{min-width:105px}@media(max-width:1050px){.balance-grid,.dashboard-grid{grid-template-columns:1fr}.dashboard-hero{display:block}.fy-pill{display:inline-block;margin-top:12px}}@media(max-width:900px){.balance-grid{grid-template-columns:1fr}.cash-flow-chart{gap:3px}.flow-day i{width:5px}}


/* Searchable dropdowns */
.searchable-select-ui{position:relative;width:100%;}
.searchable-select-input{width:100%;box-sizing:border-box;background:#fff;}
.searchable-select-list{display:none;position:absolute;z-index:50;left:0;right:0;top:calc(100% + 4px);max-height:240px;overflow:auto;background:#fff;border:1px solid #d8dee9;border-radius:12px;box-shadow:0 16px 35px rgba(15,23,42,.15);padding:6px;}
.searchable-select-ui.open .searchable-select-list{display:block;}
.searchable-select-option{display:block;width:100%;border:0;background:#fff;text-align:left;padding:9px 10px;border-radius:9px;color:#172554;font-size:.92rem;cursor:pointer;}
.searchable-select-option:hover,.searchable-select-option.selected{background:#eef2ff;color:#312e81;}
.searchable-select-empty{padding:10px;color:#64748b;font-size:.9rem;}
.native-select-hidden{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;margin:0!important;padding:0!important;border:0!important;}

/* V7 sales searchable dropdown fix */
.searchable-table-wrap{overflow:visible;}
.line-table td{position:relative;}
.line-table .searchable-select-list{min-width:280px;z-index:999;}
.line-table .searchable-select-input{min-width:220px;}

.version-badge{display:inline-block;margin:8px 0 12px;padding:6px 10px;border-radius:999px;background:#eef2ff;color:#3730a3;font-weight:700;font-size:12px;}

/* PWA install and network status */
.pwa-install-btn{
  position:fixed;
  right:18px;
  bottom:18px;
  z-index:9999;
  align-items:center;
  justify-content:center;
  gap:8px;
  border:0;
  border-radius:999px;
  padding:12px 18px;
  background:#0ea5e9;
  color:#fff;
  font-weight:800;
  box-shadow:0 14px 35px rgba(14,165,233,.35);
  cursor:pointer;
}
.pwa-install-btn:hover{background:#0284c7;}
.network-status-banner{
  display:none;
  position:fixed;
  left:50%;
  bottom:18px;
  transform:translateX(-50%);
  z-index:9998;
  max-width:92vw;
  border-radius:999px;
  padding:10px 16px;
  font-size:14px;
  font-weight:700;
  box-shadow:0 14px 35px rgba(15,23,42,.16);
}
.network-status-banner.offline{display:block;background:#fee2e2;color:#991b1b;border:1px solid #fecaca;}
.network-status-banner.online{display:block;background:#dcfce7;color:#166534;border:1px solid #bbf7d0;}
@media (max-width: 700px){
  .pwa-install-btn{right:12px;bottom:12px;padding:11px 15px;}
  .network-status-banner{bottom:70px;border-radius:16px;text-align:center;}
}
/* Mobile/tablet collapsible sidebar */
.mobile-sidebar-toggle,
.sidebar-overlay {
    display: none;
}

@media (max-width: 900px) {
    body {
        overflow-x: hidden;
    }

    .app-shell {
        display: block;
        min-height: 100vh;
    }

    .content {
        padding: 74px 16px 16px;
    }

    .mobile-sidebar-toggle {
        display: inline-flex;
        position: fixed;
        top: 12px;
        left: 12px;
        z-index: 10001;
        align-items: center;
        justify-content: center;
        gap: 8px;
        border: 0;
        border-radius: 12px;
        padding: 10px 14px;
        background: #0b2c44;
        color: #ffffff;
        font-weight: 800;
        box-shadow: 0 10px 28px rgba(15, 23, 42, .25);
        cursor: pointer;
    }

    .mobile-sidebar-toggle:hover {
        background: #092337;
    }

    .sidebar {
        position: fixed;
        top: 0;
        left: 0;
        width: min(84vw, 320px);
        height: 100vh;
        z-index: 10000;
        padding-top: 72px;
        transform: translateX(-105%);
        transition: transform .25s ease;
        box-shadow: 18px 0 45px rgba(15, 23, 42, .32);
    }

    body.sidebar-open .sidebar {
        transform: translateX(0);
    }

    .sidebar-overlay {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 9999;
        background: rgba(15, 23, 42, .45);
        opacity: 0;
        pointer-events: none;
        transition: opacity .25s ease;
    }

    body.sidebar-open .sidebar-overlay {
        opacity: 1;
        pointer-events: auto;
    }

    body.sidebar-open {
        overflow: hidden;
    }

    .topbar {
        align-items: flex-start;
    }

    .topbar h1 {
        font-size: 22px;
    }

    .topbar p {
        font-size: 13px;
    }
}

@media (min-width: 901px) {
    .mobile-sidebar-toggle,
    .sidebar-overlay {
        display: none !important;
    }

    body.sidebar-open {
        overflow: auto;
    }
}