:root{
  --page-bg:#F5F6F8; --white:#FFFFFF; --ink:#282828; --ink-soft:#6B7280; --ink-faint:#9AA1AB;
  --line:#EBECEF; --blue:#E71C26; --blue-deep:#B8151D; --blue-tint:#FCE8E9;
  --moss:#1E9E5A; --amber:#B4790E; --red:#8B1116; --red-tint:#FBE7E7;
  --radius-lg:18px; --radius-md:14px; --radius-sm:10px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{font-family:'Inter',Arial,sans-serif;background:var(--page-bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:14px;}
a{text-decoration:none;color:inherit;}
h1,h2,h3,h4{margin:0;}

/* Layout */
.app{display:grid;grid-template-columns:224px 1fr;min-height:100vh;min-width:0;}
.sidebar{background:var(--white);border-right:1px solid var(--line);padding:22px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto;}
.brand{display:flex;align-items:center;gap:9px;padding:4px 8px 22px;}
.brand-mark{width:30px;height:30px;border-radius:9px;background:var(--ink);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:15px;flex-shrink:0;}
.brand-name{font-weight:800;font-size:16.5px;letter-spacing:-.01em;}
.brand-ver{font-size:10px;color:var(--ink-faint);margin-top:-2px;}
.nav{list-style:none;margin:0;padding:0;}
.nav-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);font-weight:600;margin:14px 10px 6px;}
.nav li a{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;font-size:13.3px;font-weight:500;color:#4B5157;margin-bottom:1px;}
.nav li a:hover{background:#F5F6F8;}
.nav li a.active{background:var(--blue-tint);color:var(--blue-deep);font-weight:600;}
.nav-ico{width:16px;height:16px;flex-shrink:0;}
.sidebar-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);}
.user-chip{display:flex;align-items:center;gap:9px;padding:8px 10px;}
.user-avatar{width:30px;height:30px;border-radius:50%;background:#E9ECF1;color:#3B4350;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;flex-shrink:0;}
.user-name{font-size:12.6px;font-weight:600;}
.user-role{font-size:11px;color:var(--ink-faint);text-transform:capitalize;}
.logout-link{font-size:12px;color:var(--ink-faint);margin-left:auto;}

.main{padding:22px 30px 46px;max-width:1200px;min-width:0;}
.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;flex-wrap:wrap;gap:10px;}
.greeting h1{font-size:20px;font-weight:700;margin-bottom:4px;}
.greeting p{margin:0;color:var(--ink-soft);font-size:13px;}
.topbar-right{display:flex;align-items:center;gap:10px;}
.icon-btn{width:36px;height:36px;border-radius:50%;background:var(--white);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;position:relative;}
.icon-btn .dot{position:absolute;top:6px;right:7px;width:6px;height:6px;border-radius:50%;background:var(--red);}

/* Cards / panels */
.panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;margin-bottom:18px;}
.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap;gap:8px;}
.panel-head h3{font-size:14.8px;font-weight:700;}
.panel-head .sub{font-size:12px;color:var(--ink-soft);margin-top:2px;}

.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;}
.kpi-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-md);padding:16px;}
.kpi-label{font-size:12px;color:var(--ink-soft);margin-bottom:6px;}
.kpi-value{font-size:23px;font-weight:800;}
.kpi-sub{font-size:11.4px;color:var(--ink-faint);margin-top:4px;}

/* Tables */
table{width:100%;border-collapse:collapse;}
th{text-align:left;font-size:10.8px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);font-weight:600;padding:0 10px 10px 0;border-bottom:1px solid var(--line);}
td{padding:11px 10px 11px 0;border-bottom:1px solid #F3F4F6;font-size:13px;vertical-align:middle;}
tr:last-child td{border-bottom:none;}
.tbl-wrap{overflow-x:auto;}
@media (max-width:900px){
  .tbl-wrap{position:relative;}
  .tbl-wrap.has-overflow::after{
    content:'';position:absolute;top:0;right:0;bottom:0;width:28px;pointer-events:none;
    background:linear-gradient(to right, rgba(255,255,255,0), rgba(255,255,255,.95));
  }
}

/* Badges */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;text-transform:capitalize;}
.dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.dot.moss,.badge-moss{background:var(--moss);color:var(--moss);}
.dot.blue{background:var(--blue);}
.dot.amber{background:var(--amber);}
.dot.red{background:var(--red);}
.dot.gray{background:var(--ink-faint);}

/* Forms */
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:12px;}
label{display:block;font-size:12px;font-weight:600;color:var(--ink-soft);margin-bottom:5px;}
input[type=text],input[type=tel],input[type=number],input[type=date],input[type=email],input[type=password],select,textarea{
  width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-size:13.3px;font-family:inherit;background:var(--white);color:var(--ink);
}
textarea{resize:vertical;min-height:60px;}
.btn{display:inline-flex;align-items:center;gap:7px;background:var(--ink);color:#fff;border:none;border-radius:10px;padding:10px 16px;font-size:13.3px;font-weight:600;cursor:pointer;}
.btn.blue{background:var(--blue);}
.btn.outline{background:var(--white);color:var(--ink);border:1px solid var(--line);}
.btn.danger{background:var(--red);}
.btn.sm{padding:6px 11px;font-size:12px;border-radius:8px;}
.btn:hover{opacity:.92;}

.alert{padding:12px 16px;border-radius:10px;font-size:13px;margin-bottom:14px;}
.alert-success{background:#E7F7EE;color:#1E9E5A;}
.alert-error{background:#FCEAE9;color:#E3453B;}

.grid-2{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;align-items:start;}
@media (max-width:900px){.grid-2{grid-template-columns:1fr;} .kpi-row{grid-template-columns:repeat(2,1fr);} .app{grid-template-columns:1fr;}
  .sidebar{
    position:fixed;top:0;left:0;height:100vh;width:270px;max-width:82vw;z-index:101;
    transform:translateX(-100%);transition:transform .25s ease;box-shadow:0 0 0 rgba(0,0,0,0);
  }
  .sidebar.open{transform:translateX(0);box-shadow:8px 0 30px rgba(0,0,0,.18);}
}

/* Mobile hamburger top bar — hidden on desktop/tablet-wide, shown under 900px */
.mobile-topbar{display:none;}
.hamburger-btn{
  width:38px;height:38px;border-radius:10px;background:var(--white);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;color:var(--ink);cursor:pointer;flex-shrink:0;
}
.mobile-brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:15px;}
.sidebar-close{display:none;}
.sidebar-overlay{display:none;}

@media (max-width:900px){
  .mobile-topbar{
    display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:100;
    background:var(--white);border-bottom:1px solid var(--line);padding:12px 16px;
  }
  .sidebar-close{
    display:flex;align-items:center;justify-content:center;position:absolute;top:18px;right:14px;
    width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--white);color:var(--ink-soft);cursor:pointer;
  }
  .sidebar-overlay{
    display:block;position:fixed;inset:0;background:rgba(16,19,23,.45);z-index:100;
    opacity:0;pointer-events:none;transition:opacity .25s ease;
  }
  .sidebar-overlay.open{opacity:1;pointer-events:auto;}
  .main{padding:18px 16px 40px;}
}
@media (max-width:480px){
  .kpi-row{grid-template-columns:1fr;}
  .topbar{flex-direction:column;align-items:flex-start;}
}

.muted{color:var(--ink-soft);}
.faint{color:var(--ink-faint);font-size:11.6px;}
.mt-16{margin-top:16px;}
.text-right{text-align:right;}

/* Modal */
.modal-overlay{position:fixed;inset:0;background:rgba(16,19,23,.5);display:flex;align-items:center;justify-content:center;z-index:50;}
.modal-box{background:#fff;border-radius:16px;padding:26px;width:420px;max-width:92vw;}
.modal-box h3{font-size:16px;margin-bottom:8px;}
.modal-box p{font-size:13px;color:var(--ink-soft);margin-bottom:16px;line-height:1.5;}
.modal-actions{display:flex;gap:10px;margin-top:18px;}

/* Login page */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--page-bg);}
.login-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:36px;width:380px;max-width:100%;}
@media (max-width:480px){.login-card{padding:26px 22px;} .login-left{padding:20px;}}
.login-card .brand{justify-content:center;padding-bottom:20px;}
.login-card h1{font-size:18px;text-align:center;margin-bottom:4px;}
.login-card p.sub{text-align:center;color:var(--ink-soft);font-size:12.8px;margin-bottom:22px;}
.demo-creds{background:#F5F6F8;border-radius:10px;padding:12px;font-size:11.6px;color:var(--ink-soft);margin-top:16px;line-height:1.6;}

/* Print / invoice */
.invoice-wrap{max-width:720px;margin:30px auto;background:#fff;padding:40px;border:1px solid var(--line);border-radius:14px;}
.invoice-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid var(--ink);padding-bottom:20px;margin-bottom:24px;}
.invoice-head .logo{font-weight:800;font-size:20px;}
.invoice-meta{text-align:right;font-size:12.6px;color:var(--ink-soft);}
.invoice-table td, .invoice-table th{border-bottom:1px solid var(--line);}
.invoice-total{text-align:right;font-size:18px;font-weight:800;margin-top:16px;}
@media print{ .no-print{display:none;} body{background:#fff;} .invoice-wrap{border:none;} }

/* Short image banners (undraw-style flat illustrations) */
.site-banner{position:relative;height:120px;border-radius:var(--radius-lg);overflow:hidden;background:#282828;margin-bottom:18px;display:flex;align-items:center;}
.site-banner svg.scene{position:absolute;inset:0;width:100%;height:100%;}
.site-banner-content{position:relative;z-index:1;padding:0 26px;max-width:56%;}
.site-banner-content .eyebrow{font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#8A93A6;margin-bottom:5px;}
.site-banner-content h2{font-size:16px;font-weight:700;color:#fff;margin:0 0 5px;line-height:1.3;}
.site-banner-content p{font-size:12.2px;color:#B6BCC8;margin:0;line-height:1.45;max-width:340px;}

/* Approval / spinner modal */
.spinner{width:44px;height:44px;border-radius:50%;border:4px solid #EAF0FF;border-top-color:var(--blue);animation:spin 0.9s linear infinite;margin:0 auto 16px;}
@keyframes spin{to{transform:rotate(360deg);}}
.modal-icon-success{width:52px;height:52px;border-radius:50%;background:#E7F7EE;color:var(--moss);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;}

/* Login split layout */
.login-split{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;}
.login-left{display:flex;align-items:center;justify-content:center;padding:40px;background:var(--page-bg);}
.login-right{position:relative;overflow:hidden;background:linear-gradient(160deg,#282828,#3A3A3A);display:flex;align-items:center;justify-content:center;}
.login-right .illo-wrap{position:relative;z-index:1;text-align:center;color:#fff;padding:0 40px;}
.login-right .illo-wrap h3{font-size:20px;font-weight:700;margin-bottom:10px;}
.login-right .illo-wrap p{font-size:13px;color:#B6BCC8;line-height:1.6;max-width:340px;margin:0 auto;}
@media (max-width:900px){.login-split{grid-template-columns:1fr;} .login-right{display:none;}}

/* Users page role/status pills */
.status-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:20px;}
.status-pill.pending{background:#FDF3E1;color:#B4790E;}
.status-pill.approved{background:#E7F7EE;color:#1E9E5A;}
.status-pill.rejected{background:#FCEAE9;color:#E3453B;}
.status-pill.suspended{background:#F3E8E8;color:#6B4A4A;}

/* Pagination */
.pagination{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);}

/* Icon action buttons */
.btn-icon{
  display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;
  border-radius:8px;border:1px solid var(--line);background:var(--white);color:var(--ink-soft);
  cursor:pointer;transition:background .15s,color .15s,border-color .15s;
}
.btn-icon:hover{background:#F5F6F8;color:var(--ink);}
.btn-icon.danger:hover{background:var(--red-tint);color:var(--red);border-color:var(--red);}
.btn-icon.blue:hover{background:var(--blue-tint);color:var(--blue-deep);border-color:var(--blue);}
.icon-row{display:flex;gap:6px;}
