
:root {
  --bg: #060918;
  --surface: #0d1130;
  --surface2: #111535;
  --surface3: #161a40;
  --border: #1e2448;
  --border2: #252d5a;
  --accent: #3b82f6;
  --accent2: #6366f1;
  --accent3: #8b5cf6;
  --green: #10b981;
  --red: #ef4444;
  --orange: #f59e0b;
  --yellow: #eab308;
  --text: #e8eaf2;
  --text2: #9ca3af;
  --text3: #6b7280;
  --card-blue: linear-gradient(135deg, #1e3a8a 0%, #3730a3 50%, #1e1b4b 100%);
  --card-gold: linear-gradient(135deg, #78350f 0%, #b45309 50%, #92400e 100%);
  --card-dark: linear-gradient(135deg, #111827 0%, #1f2937 50%, #0f172a 100%);
  --glow: 0 0 40px rgba(99,102,241,0.15);
  --shadow: 0 4px 24px rgba(0,0,0,0.5);
}
body.light-mode {
  --bg: #f5f6fa;
  --surface: #ffffff;
  --surface2: #f0f2f9;
  --surface3: #e6eaf6;
  --border: #e2e5f0;
  --border2: #cbd2e8;
  --accent: #2563eb;
  --accent2: #4f46e5;
  --accent3: #7c3aed;
  --green: #059669;
  --red: #dc2626;
  --orange: #d97706;
  --yellow: #ca8a04;
  --text: #111827;
  --text2: #374151;
  --text3: #6b7280;
  --card-blue: linear-gradient(135deg,#1e3a8a,#3730a3);
  --card-gold: linear-gradient(135deg,#78350f,#b45309);
  --card-dark: linear-gradient(135deg,#111827,#1f2937);
  --glow: 0 0 30px rgba(37,99,235,0.08);
  --shadow: 0 2px 16px rgba(0,0,0,0.08);
}
body.light-mode body { background:var(--bg); }
body.light-mode .sidebar { background:#fff; border-right:1px solid var(--border); box-shadow:2px 0 12px rgba(0,0,0,0.04); }
body.light-mode .topbar { background:#fff; border-bottom:1px solid var(--border); box-shadow:0 1px 8px rgba(0,0,0,0.04); }
body.light-mode .card-block { background:#fff; border-color:var(--border); box-shadow:0 1px 6px rgba(0,0,0,0.05); }
body.light-mode .table-wrap { background:#fff; border-color:var(--border); }
body.light-mode table thead { background:var(--surface2); }
body.light-mode table tr:hover { background:#f8faff; }
body.light-mode .modal { background:#fff; box-shadow:0 8px 40px rgba(0,0,0,0.15); }
body.light-mode .sidebar-nav-item { color:var(--text2); }
body.light-mode .sidebar-nav-item:hover { background:var(--surface2); color:var(--accent); }
body.light-mode .sidebar-nav-item.active { background:rgba(37,99,235,0.08); color:var(--accent); }
body.light-mode input, body.light-mode select, body.light-mode textarea { background:#fff; border-color:var(--border); color:var(--text); }
body.light-mode input:focus, body.light-mode select:focus, body.light-mode textarea:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(37,99,235,0.10); }
body.light-mode .stat-card { background:#fff; border-color:var(--border); box-shadow:0 1px 6px rgba(0,0,0,0.05); }
.theme-toggle { width:40px; height:22px; background:var(--border2); border-radius:11px; position:relative; cursor:pointer; transition:background 0.3s; border:none; flex-shrink:0; }
.theme-toggle.dark  { background:var(--accent2); }
.theme-toggle-knob { position:absolute; top:3px; left:3px; width:16px; height:16px; background:#fff; border-radius:50%; transition:transform 0.25s; font-size:10px; display:flex; align-items:center; justify-content:center; }
body.light-mode .theme-toggle-knob { transform:translateX(18px); }
.theme-toggle-wrap { display:flex; align-items:center; gap:7px; }
.theme-toggle-label { font-size:11px; font-weight:600; color:var(--text3); white-space:nowrap; }
* { margin:0; padding:0; box-sizing:border-box; }
body {
  background:var(--bg);
  color:var(--text);
  font-family:'Sora',sans-serif;
  min-height:100vh;
  overflow-x:hidden;
  background-image:
    linear-gradient(rgba(99,102,241,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(99,102,241,0.04) 1px, transparent 1px);
  background-size: 44px 44px;
}
body.light-mode {
  background-image: none;
}
::-webkit-scrollbar { width:4px; }
::-webkit-scrollbar-track { background:var(--bg); }
::-webkit-scrollbar-thumb { background:var(--border2); border-radius:4px; }

/* Animations */
@keyframes fadeIn { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:translateY(0)} }

/* ── Mobile Hamburger ──────────────────────────────────────────── */
.hamburger { display:none; flex-direction:column; gap:5px; cursor:pointer; padding:8px; border-radius:8px; background:var(--surface2); border:1px solid var(--border); }
.hamburger span { display:block; width:20px; height:2px; background:var(--text); border-radius:2px; transition:all 0.3s; }
.sidebar-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,0.5); z-index:99; }

/* ── Mobile Responsive ─────────────────────────────────────────── */
@media (max-width: 768px) {
  .hamburger { display:flex; }
  .sidebar-overlay { display:block; }

  .app-layout { flex-direction:column; }

  .sidebar {
    position:fixed; left:-260px; top:0; bottom:0; z-index:100;
    width:260px; min-width:260px;
    transition:left 0.3s ease;
    box-shadow:none;
  }
  .sidebar.mobile-open {
    left:0;
    box-shadow:4px 0 24px rgba(0,0,0,0.4);
  }

  .main { width:100%; }

  .topbar {
    padding:10px 14px !important;
    position:sticky; top:0; z-index:50;
  }

  .content { padding:12px !important; }

  .grid-2 { grid-template-columns:1fr !important; }
  .stats-grid { grid-template-columns:1fr 1fr !important; }

  .form-row { flex-direction:column !important; }
  .form-row .form-group { width:100% !important; }

  .table-wrap { overflow-x:auto; }
  table { min-width:500px; }

  .modal { width:calc(100vw - 24px) !important; max-width:100% !important; margin:12px; max-height:90vh; overflow-y:auto; }
  .modal-overlay { padding:0; align-items:flex-end; }

  .credit-card { margin:0 !important; }

  .ledger-wrap { overflow-x:auto; }
  .ledger-wrap table { min-width:600px; }

  .topbar-date { display:none; }
}

@media (max-width: 480px) {
  .stats-grid { grid-template-columns:1fr 1fr !important; }
  .stat-value { font-size:18px !important; }
  .content { padding:8px !important; }
}
@keyframes slideIn { from{opacity:0;transform:translateX(-12px)} to{opacity:1;transform:translateX(0)} }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.5} }
@keyframes spin { to{transform:rotate(360deg)} }
@keyframes shimmer { 0%{background-position:-200% 0} 100%{background-position:200% 0} }
@keyframes ripple { 0%{transform:scale(0);opacity:1} 100%{transform:scale(4);opacity:0} }
@keyframes glow { 0%,100%{box-shadow:0 0 20px rgba(59,130,246,0.3)} 50%{box-shadow:0 0 40px rgba(99,102,241,0.5)} }
@keyframes float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-6px)} }
@keyframes cardFlip { 0%{transform:rotateY(0)} 50%{transform:rotateY(90deg)} 100%{transform:rotateY(0)} }
@keyframes countUp { from{opacity:0;transform:scale(0.8)} to{opacity:1;transform:scale(1)} }
@keyframes checkmark { 0%{stroke-dashoffset:50} 100%{stroke-dashoffset:0} }
@keyframes progress { 0%{width:0} 100%{width:100%} }

.fade-in { animation:fadeIn 0.35s ease forwards; }
.slide-in { animation:slideIn 0.3s ease forwards; }

/* Login Page */
.login-wrap { min-height:100vh; display:grid; grid-template-columns:3fr 2fr; overflow:hidden; }
.login-bg { display:none; }
.login-grid { display:none; }

/* ── LEFT PANEL — animated ── */
.login-left {
  position:relative; overflow:hidden;
  background:linear-gradient(160deg,#060918 0%,#0f1535 35%,#0d0a2e 70%,#060918 100%);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:60px 48px; gap:36px;
}
.login-left-grid {
  position:absolute; inset:0;
  background-image:linear-gradient(rgba(99,102,241,0.06) 1px,transparent 1px),linear-gradient(90deg,rgba(99,102,241,0.06) 1px,transparent 1px);
  background-size:44px 44px; pointer-events:none;
}
/* Orbs */
.login-orb { position:absolute; border-radius:50%; filter:blur(80px); pointer-events:none; }
.login-orb-1 { width:380px; height:380px; background:radial-gradient(circle,rgba(99,102,241,0.35),transparent 70%); top:-100px; left:-100px; animation:orbDrift 10s ease-in-out infinite; }
.login-orb-2 { width:300px; height:300px; background:radial-gradient(circle,rgba(139,92,246,0.3),transparent 70%); bottom:-80px; right:-80px; animation:orbDrift 13s ease-in-out infinite reverse; }
.login-orb-3 { width:200px; height:200px; background:radial-gradient(circle,rgba(56,189,248,0.2),transparent 70%); top:50%; left:50%; transform:translate(-50%,-50%); animation:orbDrift 8s ease-in-out infinite 2s; }
@keyframes orbDrift { 0%,100%{transform:translate(0,0);} 50%{transform:translate(25px,-25px);} }

/* Floating cards */
.login-cards-wrap { position:relative; width:260px; height:180px; z-index:2; }
.login-fc {
  position:absolute; width:220px; border-radius:18px; padding:18px 22px;
  box-shadow:0 25px 50px rgba(0,0,0,0.6); border:1px solid rgba(255,255,255,0.12);
}
.login-fc-1 { background:linear-gradient(135deg,#4f46e5,#2563eb); top:0; left:0; z-index:3; animation:fcFloat 5s ease-in-out infinite; }
.login-fc-2 { background:linear-gradient(135deg,#7c3aed,#4f46e5); top:24px; left:24px; z-index:2; animation:fcFloat 5s ease-in-out infinite 1.5s; }
.login-fc-3 { background:linear-gradient(135deg,rgba(6,182,212,0.6),rgba(79,70,229,0.6)); top:48px; left:48px; z-index:1; animation:fcFloat 5s ease-in-out infinite 3s; backdrop-filter:blur(8px); }
@keyframes fcFloat { 0%,100%{transform:translateY(0) rotate(-1deg);} 50%{transform:translateY(-10px) rotate(1deg);} }
.login-fc-chip { width:30px; height:22px; background:linear-gradient(135deg,#fbbf24,#d97706); border-radius:4px; margin-bottom:10px; }
.login-fc-num { font-family:'JetBrains Mono',monospace; font-size:12px; color:rgba(255,255,255,0.85); letter-spacing:0.2em; margin-bottom:6px; }
.login-fc-name { font-size:10px; color:rgba(255,255,255,0.5); text-transform:uppercase; letter-spacing:0.1em; }
.login-fc-logo { position:absolute; top:16px; right:18px; font-size:18px; }

/* Stats */
.login-stats { display:flex; gap:14px; z-index:2; animation:fadeIn 1s ease 0.4s both; }
.login-stat { background:rgba(255,255,255,0.05); border:1px solid rgba(255,255,255,0.08); border-radius:12px; padding:12px 18px; text-align:center; backdrop-filter:blur(12px); }
.login-stat-val { font-size:20px; font-weight:800; color:#fff; font-family:'Space Grotesk',sans-serif; }
.login-stat-lbl { font-size:10px; color:rgba(255,255,255,0.4); text-transform:uppercase; letter-spacing:0.08em; margin-top:2px; }

/* Tagline */
.login-tagline { text-align:center; z-index:2; animation:fadeIn 1s ease 0.2s both; }
.login-tagline h2 { font-size:26px; font-weight:800; color:#fff; font-family:'Space Grotesk',sans-serif; line-height:1.25; margin-bottom:8px; }
.login-tagline h2 span { background:linear-gradient(135deg,#818cf8,#38bdf8); -webkit-background-clip:text; -webkit-text-fill-color:transparent; }
.login-tagline p { font-size:13px; color:rgba(255,255,255,0.45); line-height:1.65; max-width:300px; }

/* Ticker */
.login-ticker { width:100%; overflow:hidden; z-index:2; }
.login-ticker-track { display:flex; gap:12px; animation:ticker 32s linear infinite; }
@keyframes ticker { from{transform:translateX(0)} to{transform:translateX(-50%)} }
.login-tick { flex-shrink:0; font-size:11px; color:rgba(255,255,255,0.3); padding:4px 12px; border:1px solid rgba(255,255,255,0.07); border-radius:20px; white-space:nowrap; }

/* Features Grid */
.login-features-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; z-index:2; width:100%; max-width:340px; animation:fadeIn 1s ease 0.5s both; }
.login-feat { display:flex; align-items:flex-start; gap:9px; background:rgba(255,255,255,0.04); border:1px solid rgba(255,255,255,0.07); border-radius:12px; padding:10px 12px; transition:all 0.2s; }
.login-feat:hover { background:rgba(99,102,241,0.1); border-color:rgba(99,102,241,0.25); }
.login-feat-icon { font-size:18px; line-height:1; flex-shrink:0; margin-top:1px; }
.login-feat-text { flex:1; }
.login-feat-title { font-size:11px; font-weight:700; color:rgba(255,255,255,0.85); letter-spacing:0.02em; margin-bottom:2px; }
.login-feat-desc { font-size:10px; color:rgba(255,255,255,0.35); line-height:1.4; }

/* ── RIGHT PANEL — form ── */
.login-right {
  background:var(--bg); display:flex; align-items:center; justify-content:center;
  padding:48px 40px; position:relative;
}
.login-card { width:100%; max-width:400px; animation:slideRight 0.5s cubic-bezier(0.16,1,0.3,1); }
.login-card .form-group label { display:block; }
@keyframes slideRight { from{opacity:0;transform:translateX(24px)} to{opacity:1;transform:translateX(0)} }
.login-card-inner { width:100%; }

@media(max-width:768px) {
  .login-wrap { grid-template-columns:1fr; }
  .login-left  { display:none; }
  .login-right { padding:40px 24px; min-height:100vh; }
}
.login-logo { display:flex; align-items:center; gap:12px; margin-bottom:32px; }
.login-logo-icon { width:44px; height:44px; background:linear-gradient(135deg,var(--accent),var(--accent3)); border-radius:12px; display:flex; align-items:center; justify-content:center; font-size:20px; animation:glow 3s ease-in-out infinite; }
.login-logo-text { font-family:'Space Grotesk',sans-serif; font-size:22px; font-weight:700; background:linear-gradient(135deg,#e8eaf2,#9ca3af); -webkit-background-clip:text; -webkit-text-fill-color:transparent; }
@keyframes welcomeFadeIn { from{opacity:0;transform:translateY(-16px)} to{opacity:1;transform:translateY(0)} }
@keyframes waveBounce { 0%,100%{transform:rotate(-10deg) scale(1)} 30%{transform:rotate(10deg) scale(1.15)} 60%{transform:rotate(-8deg) scale(1.05)} }
.login-title { font-size:26px; font-weight:700; margin-bottom:6px; }
.login-sub { color:var(--text2); font-size:14px; margin-bottom:32px; }
.role-tabs { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:28px; }
.role-tab { padding:10px; border:1px solid var(--border2); border-radius:10px; background:transparent; color:var(--text2); cursor:pointer; font-family:'Sora',sans-serif; font-size:13px; font-weight:500; transition:all 0.2s; }
.role-tab.active { background:linear-gradient(135deg,var(--accent),var(--accent2)); border-color:transparent; color:#fff; }
.form-group { margin-bottom:18px; }
.form-label { display:block; font-size:12px; font-weight:600; color:var(--text2); margin-bottom:8px; letter-spacing:0.05em; text-transform:uppercase; }
.form-input { width:100%; background:var(--surface2); border:1px solid var(--border); border-radius:10px; padding:12px 16px; color:var(--text); font-family:'Sora',sans-serif; font-size:14px; outline:none; transition:all 0.2s; }
.form-input:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(59,130,246,0.15); }
.form-input::placeholder { color:var(--text3); }
select.form-input option { background:var(--surface2); }
.btn { width:100%; padding:13px; border:none; border-radius:10px; cursor:pointer; font-family:'Sora',sans-serif; font-size:14px; font-weight:600; transition:all 0.2s; position:relative; overflow:hidden; }
.btn-primary { background:linear-gradient(135deg,var(--accent),var(--accent2)); color:#fff; }
.btn-primary:hover { transform:translateY(-1px); box-shadow:0 8px 25px rgba(59,130,246,0.35); }
.btn-secondary { background:var(--surface2); border:1px solid var(--border2); color:var(--text); }
.btn-secondary:hover { border-color:var(--accent); color:var(--accent); }
.btn-sm { width:auto; padding:7px 14px; font-size:12px; border-radius:8px; }
.btn-danger { background:rgba(239,68,68,0.15); border:1px solid rgba(239,68,68,0.3); color:var(--red); }
.btn-success { background:rgba(16,185,129,0.15); border:1px solid rgba(16,185,129,0.3); color:var(--green); }
.btn-outline { background:transparent; border:1px solid var(--border2); color:var(--text2); }
.btn-outline:hover { border-color:var(--accent); color:var(--accent); }
.forgot-link { text-align:center; margin-top:16px; color:var(--text2); font-size:13px; cursor:pointer; }
.forgot-link span { color:var(--accent); }
.otp-row { display:flex; gap:10px; }
.otp-input { flex:1; text-align:center; font-size:20px; font-family:'JetBrains Mono',monospace; letter-spacing:0.1em; }
.quick-btns { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:14px; }
.quick-btn { padding:11px 10px; border:none; border-radius:10px; cursor:pointer; font-family:'Sora',sans-serif; font-size:12px; font-weight:700; display:flex; flex-direction:column; align-items:center; gap:3px; transition:all 0.2s; }
.quick-btn:hover { transform:translateY(-2px); }
.quick-btn-admin { background:linear-gradient(135deg,rgba(59,130,246,0.18),rgba(99,102,241,0.18)); border:1px solid rgba(59,130,246,0.35); color:#60a5fa; }
.quick-btn-admin:hover { background:linear-gradient(135deg,rgba(59,130,246,0.3),rgba(99,102,241,0.3)); box-shadow:0 4px 16px rgba(59,130,246,0.3); }
.quick-btn-worker { background:linear-gradient(135deg,rgba(16,185,129,0.18),rgba(5,150,105,0.18)); border:1px solid rgba(16,185,129,0.35); color:#34d399; }
.quick-btn-worker:hover { background:linear-gradient(135deg,rgba(16,185,129,0.3),rgba(5,150,105,0.3)); box-shadow:0 4px 16px rgba(16,185,129,0.3); }
.quick-btn-icon { font-size:20px; }
.quick-btn-label { font-size:12px; font-weight:700; }
.quick-btn-sub { font-size:10px; opacity:0.7; font-family:'JetBrains Mono',monospace; }

/* Layout */
.app-layout { display:flex; height:100vh; overflow:hidden; }
.sidebar { width:240px; min-width:240px; background:linear-gradient(180deg,#0d1130 0%,#060918 100%); border-right:1px solid var(--border); display:flex; flex-direction:column; overflow-y:auto; }
.sidebar-logo { padding:20px; border-bottom:1px solid var(--border); display:flex; align-items:center; gap:10px; }
.sidebar-logo-icon { width:34px; height:34px; background:linear-gradient(135deg,var(--accent),var(--accent3)); border-radius:9px; display:flex; align-items:center; justify-content:center; font-size:16px; }
.sidebar-logo-text { font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:16px; }
.sidebar-user { padding:16px 20px; border-bottom:1px solid var(--border); }
.sidebar-user-name { font-weight:600; font-size:14px; }
.sidebar-user-role { font-size:11px; color:var(--text3); margin-top:2px; text-transform:uppercase; letter-spacing:0.08em; }
.sidebar-badge { display:inline-flex; align-items:center; padding:2px 8px; border-radius:20px; font-size:10px; font-weight:600; margin-top:6px; }
.badge-admin { background:rgba(139,92,246,0.2); color:#a78bfa; }
.badge-worker { background:rgba(59,130,246,0.2); color:#60a5fa; }
.sidebar-nav { padding:12px 10px; flex:1; }
.nav-section { font-size:10px; font-weight:700; color:var(--text3); letter-spacing:0.1em; text-transform:uppercase; padding:8px 10px 6px; }
.nav-item { display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:8px; cursor:pointer; color:var(--text2); font-size:13px; font-weight:500; transition:all 0.15s; margin-bottom:2px; }
.nav-item:hover { background:var(--surface2); color:var(--text); }
.nav-item.active { background:linear-gradient(135deg,rgba(59,130,246,0.2),rgba(99,102,241,0.2)); color:var(--accent); border:1px solid rgba(59,130,246,0.25); }
.nav-icon { font-size:15px; width:20px; text-align:center; }
.nav-badge { margin-left:auto; background:var(--red); color:#fff; border-radius:10px; padding:1px 6px; font-size:10px; font-weight:700; }
.sidebar-bottom { padding:16px; border-top:1px solid var(--border); }
.logout-btn { display:flex; align-items:center; gap:8px; color:var(--text3); cursor:pointer; font-size:13px; padding:8px 10px; border-radius:8px; transition:all 0.15s; }
.logout-btn:hover { background:rgba(239,68,68,0.1); color:var(--red); }

/* Main content */
.main { flex:1; overflow-y:auto; background:var(--bg); }
.topbar { height:60px; background:rgba(13,17,48,0.95); border-bottom:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; padding:0 28px; position:sticky; top:0; z-index:10; backdrop-filter:blur(12px); }
.topbar-title { font-size:16px; font-weight:700; }
.topbar-right { display:flex; align-items:center; gap:12px; }
.topbar-date { font-size:12px; color:var(--text2); font-family:'JetBrains Mono',monospace; }
.notif-btn { width:36px; height:36px; background:var(--surface2); border:1px solid var(--border); border-radius:9px; display:flex; align-items:center; justify-content:center; cursor:pointer; position:relative; font-size:15px; }
.notif-dot { position:absolute; top:6px; right:6px; width:7px; height:7px; background:var(--red); border-radius:50%; border:2px solid var(--surface); }
.content { padding:28px; animation:fadeIn 0.35s ease; }

/* Cards / Stats */
.stats-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:16px; margin-bottom:28px; }
.stat-card { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:20px; position:relative; overflow:hidden; transition:all 0.2s; }
.stat-card:hover { border-color:var(--border2); transform:translateY(-2px); box-shadow:var(--shadow); }
.stat-card::before { content:''; position:absolute; top:0; right:0; width:80px; height:80px; border-radius:50%; filter:blur(30px); opacity:0.3; }
.stat-card.blue::before { background:var(--accent); }
.stat-card.purple::before { background:var(--accent3); }
.stat-card.green::before { background:var(--green); }
.stat-card.orange::before { background:var(--orange); }
.stat-card.red::before { background:var(--red); }
.stat-label { font-size:11px; font-weight:600; color:var(--text3); text-transform:uppercase; letter-spacing:0.08em; margin-bottom:10px; }
.stat-value { font-size:26px; font-weight:700; font-family:'Space Grotesk',sans-serif; animation:countUp 0.5s ease; }
.stat-value.mono { font-family:'JetBrains Mono',monospace; font-size:20px; }
.stat-sub { font-size:12px; color:var(--text3); margin-top:6px; }
.stat-icon { position:absolute; top:18px; right:18px; font-size:24px; opacity:0.6; }
.stat-trend { display:inline-flex; align-items:center; gap:4px; padding:2px 8px; border-radius:20px; font-size:11px; font-weight:600; margin-top:8px; }
.trend-up { background:rgba(16,185,129,0.15); color:var(--green); }
.trend-down { background:rgba(239,68,68,0.15); color:var(--red); }

/* Tables */
.table-wrap { background:var(--surface); border:1px solid var(--border); border-radius:14px; overflow:hidden; }
.table-header { padding:18px 20px; border-bottom:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; }
.table-title { font-size:14px; font-weight:700; }
.table-actions { display:flex; gap:8px; align-items:center; }
.search-input { background:var(--surface2); border:1px solid var(--border); border-radius:8px; padding:7px 12px; color:var(--text); font-size:13px; font-family:'Sora',sans-serif; outline:none; width:200px; }
.search-input:focus { border-color:var(--accent); }
table { width:100%; border-collapse:collapse; }
th { padding:10px 16px; text-align:left; font-size:11px; font-weight:600; color:var(--text3); text-transform:uppercase; letter-spacing:0.06em; border-bottom:1px solid var(--border); }
td { padding:12px 16px; font-size:13px; border-bottom:1px solid rgba(37,43,56,0.5); }
tr:last-child td { border-bottom:none; }
tr:hover td { background:rgba(255,255,255,0.02); }
.status-badge { display:inline-flex; align-items:center; gap:5px; padding:3px 10px; border-radius:20px; font-size:11px; font-weight:600; }
.status-badge::before { content:''; width:5px; height:5px; border-radius:50%; flex-shrink:0; }
.status-active { background:rgba(16,185,129,0.15); color:var(--green); }
.status-active::before { background:var(--green); }
.status-inactive { background:rgba(107,114,128,0.15); color:var(--text3); }
.status-inactive::before { background:var(--text3); }
.status-pending { background:rgba(245,158,11,0.15); color:var(--orange); }
.status-pending::before { background:var(--orange); }
.status-fraud { background:rgba(239,68,68,0.15); color:var(--red); }
.status-fraud::before { background:var(--red); }
.status-success { background:rgba(16,185,129,0.15); color:var(--green); }
.status-success::before { background:var(--green); }
.action-btns { display:flex; gap:6px; }

/* Modal */
.modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.7); backdrop-filter:blur(4px); z-index:100; display:flex; align-items:center; justify-content:center; animation:fadeIn 0.2s ease; }
.modal { background:var(--surface); border:1px solid var(--border2); border-radius:18px; padding:32px; width:520px; max-width:90vw; max-height:90vh; overflow-y:auto; box-shadow:var(--shadow),var(--glow); animation:fadeIn 0.3s ease; }
.modal-lg { width:680px; }
.modal-title { font-size:18px; font-weight:700; margin-bottom:6px; }
.modal-sub { font-size:13px; color:var(--text2); margin-bottom:24px; }
.modal-footer { display:flex; gap:10px; margin-top:24px; }
.modal-footer .btn { flex:1; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form-row-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; }
select.form-input { cursor:pointer; }
textarea.form-input { resize:vertical; min-height:80px; }

/* Credit Cards Visual */
.cards-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:20px; margin-bottom:28px; }
.credit-card { width:100%; aspect-ratio:1.586; border-radius:16px; padding:24px; position:relative; overflow:hidden; cursor:pointer; transition:all 0.3s; box-shadow:0 10px 30px rgba(0,0,0,0.4); }
.credit-card:hover { transform:translateY(-4px) scale(1.02); box-shadow:0 20px 40px rgba(0,0,0,0.5); }
.credit-card.blue    { background:var(--card-blue); }
.credit-card.gold    { background:var(--card-gold); }
.credit-card.dark    { background:var(--card-dark); border:1px solid var(--border2); }
.credit-card.green   { background:linear-gradient(135deg,#064e3b 0%,#065f46 50%,#022c22 100%); }
.credit-card.purple  { background:linear-gradient(135deg,#4c1d95 0%,#6d28d9 50%,#2e1065 100%); }
.credit-card.red     { background:linear-gradient(135deg,#7f1d1d 0%,#991b1b 50%,#450a0a 100%); }
.credit-card.rose    { background:linear-gradient(135deg,#881337 0%,#be123c 50%,#4c0519 100%); }
.credit-card.cyan    { background:linear-gradient(135deg,#164e63 0%,#0e7490 50%,#083344 100%); }
.credit-card.orange  { background:linear-gradient(135deg,#7c2d12 0%,#c2410c 50%,#431407 100%); }
.credit-card.slate   { background:linear-gradient(135deg,#1e293b 0%,#334155 50%,#0f172a 100%); border:1px solid rgba(148,163,184,0.2); }
.card-chip { width:38px; height:30px; background:linear-gradient(135deg,#d4a017,#f5c842,#d4a017); border-radius:5px; margin-bottom:20px; position:relative; overflow:hidden; }
.card-chip::after { content:''; position:absolute; inset:0; background:repeating-linear-gradient(90deg,transparent,transparent 30%,rgba(0,0,0,0.1) 30%,rgba(0,0,0,0.1) 60%); }
.card-number { font-family:'JetBrains Mono',monospace; font-size:16px; letter-spacing:0.25em; color:rgba(255,255,255,0.9); margin-bottom:16px; }
.card-meta { display:flex; justify-content:space-between; }
.card-meta-label { font-size:9px; text-transform:uppercase; letter-spacing:0.1em; color:rgba(255,255,255,0.5); margin-bottom:3px; }
.card-meta-value { font-size:13px; font-weight:500; color:rgba(255,255,255,0.9); }
.card-bank { position:absolute; top:20px; right:20px; font-size:13px; font-weight:700; color:rgba(255,255,255,0.8); text-transform:uppercase; letter-spacing:0.1em; }
.card-logo { position:absolute; bottom:20px; right:20px; font-size:28px; }
.card-limit { font-size:11px; color:rgba(255,255,255,0.5); margin-top:4px; }
/* Card detail panel */
.card-detail-panel { background:var(--surface2); border:1px solid var(--border); border-radius:12px; padding:16px; margin-top:12px; animation:fadeIn 0.25s ease; }
.card-detail-tab { display:flex; background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:3px; margin-bottom:14px; }
.card-detail-tab-btn { flex:1; padding:6px 10px; border:none; border-radius:6px; cursor:pointer; font-family:'Sora',sans-serif; font-size:12px; font-weight:600; transition:all 0.15s; background:transparent; color:var(--text3); }
.card-detail-tab-btn.active { background:linear-gradient(135deg,var(--accent),var(--accent2)); color:#fff; }
/* Due priority badges on card */
.card-due-badge { position:absolute; top:12px; left:12px; padding:3px 9px; border-radius:20px; font-size:10px; font-weight:700; }
.due-overdue { background:#ef4444; color:#fff; }
.due-urgent { background:#f59e0b; color:#fff; }
.due-soon { background:#eab308; color:#fff; }
.due-ok { background:rgba(16,185,129,0.8); color:#fff; }
/* Customer dropdown inside card */
.card-cust-dropdown { position:absolute; bottom:0; left:0; right:0; background:rgba(0,0,0,0.85); backdrop-filter:blur(8px); border-radius:0 0 16px 16px; padding:14px 16px; transform:translateY(100%); transition:transform 0.3s ease; z-index:3; }
.card-cust-dropdown.open { transform:translateY(0); }
.card-wrap { position:relative; overflow:hidden; border-radius:16px; }

/* Ledger */
.ledger-wrap { background:var(--surface); border:1px solid var(--border); border-radius:14px; overflow:hidden; }
.ledger-header { padding:20px 24px; background:linear-gradient(135deg,rgba(59,130,246,0.1),rgba(99,102,241,0.1)); border-bottom:1px solid var(--border); display:flex; justify-content:space-between; align-items:center; }
.ledger-balance { font-size:28px; font-weight:700; font-family:'Space Grotesk',sans-serif; }
.balance-label { font-size:12px; color:var(--text2); margin-bottom:4px; }
.debit-col { color:var(--red); font-family:'JetBrains Mono',monospace; font-weight:500; }
.credit-col { color:var(--green); font-family:'JetBrains Mono',monospace; font-weight:500; }
.balance-col { font-family:'JetBrains Mono',monospace; font-weight:600; }

/* Payment Gateway */
.gateway-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg,#0f172a 0%,#1e1b4b 50%,#0f172a 100%); position:fixed; inset:0; z-index:200; }
.gateway-card { background:#fff; border-radius:20px; width:420px; overflow:hidden; box-shadow:0 30px 80px rgba(0,0,0,0.6); animation:fadeIn 0.4s ease; }
.gateway-header { background:linear-gradient(135deg,#1e3a8a,#3730a3); padding:20px 24px; color:#fff; }
.gateway-bank-name { font-size:18px; font-weight:700; margin-bottom:4px; }
.gateway-secure { display:flex; align-items:center; gap:6px; font-size:12px; opacity:0.8; }
.gateway-amount-row { background:linear-gradient(135deg,#1e40af,#4338ca); padding:14px 24px; color:#fff; display:flex; justify-content:space-between; align-items:center; }
.gateway-amount-label { font-size:12px; opacity:0.8; }
.gateway-amount-val { font-size:22px; font-weight:700; font-family:'JetBrains Mono',monospace; }
.gateway-body { padding:24px; background:#f8fafc; }
.gateway-input-group { margin-bottom:16px; }
.gateway-label { font-size:11px; font-weight:600; color:#64748b; text-transform:uppercase; letter-spacing:0.06em; margin-bottom:6px; display:block; }
.gateway-input { width:100%; border:2px solid #e2e8f0; border-radius:10px; padding:11px 14px; font-size:15px; font-family:'JetBrains Mono',monospace; outline:none; transition:all 0.2s; color:#1e293b; background:#fff; }
.gateway-input:focus { border-color:#3b82f6; box-shadow:0 0 0 3px rgba(59,130,246,0.15); }
.gateway-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.gateway-btn { width:100%; padding:14px; background:linear-gradient(135deg,#2563eb,#4f46e5); border:none; border-radius:12px; color:#fff; font-size:15px; font-weight:700; cursor:pointer; margin-top:8px; transition:all 0.2s; font-family:'Sora',sans-serif; }
.gateway-btn:hover { transform:translateY(-1px); box-shadow:0 8px 25px rgba(59,130,246,0.35); }
.gateway-powered { text-align:center; font-size:11px; color:#94a3b8; margin-top:12px; }
.gateway-card-icons { display:flex; gap:8px; margin-top:10px; }
.card-icon { width:36px; height:24px; border-radius:4px; background:#e2e8f0; display:flex; align-items:center; justify-content:center; font-size:10px; font-weight:700; }
.processing-overlay { position:absolute; inset:0; background:rgba(255,255,255,0.95); display:flex; flex-direction:column; align-items:center; justify-content:center; border-radius:20px; }
.spinner { width:40px; height:40px; border:3px solid #e2e8f0; border-top-color:#3b82f6; border-radius:50%; animation:spin 0.8s linear infinite; margin-bottom:16px; }
.success-check { width:60px; height:60px; background:#10b981; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:28px; animation:countUp 0.4s ease; margin-bottom:16px; }
.processing-text { color:#1e293b; font-size:15px; font-weight:600; }
.processing-sub { color:#64748b; font-size:13px; margin-top:6px; }

/* Daily Report */
.report-card { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:22px; }
.report-title { font-size:14px; font-weight:700; margin-bottom:18px; display:flex; align-items:center; gap:8px; }
.report-row { display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid rgba(37,43,56,0.4); }
.report-row:last-child { border-bottom:none; }
.report-label { font-size:13px; color:var(--text2); }
.report-value { font-size:13px; font-weight:600; font-family:'JetBrains Mono',monospace; }
.report-total { padding:14px 0 0; border-top:2px solid var(--border2); margin-top:8px; }
.report-total .report-label { font-weight:700; color:var(--text); }
.report-total .report-value { font-size:16px; color:var(--accent); }

/* Chips & Misc */
.chip { display:inline-flex; align-items:center; padding:3px 10px; border-radius:20px; font-size:11px; font-weight:600; }
.chip-blue { background:rgba(59,130,246,0.15); color:#60a5fa; }
.chip-green { background:rgba(16,185,129,0.15); color:var(--green); }
.chip-red { background:rgba(239,68,68,0.15); color:var(--red); }
.chip-yellow { background:rgba(234,179,8,0.15); color:var(--yellow); }
.chip-purple { background:rgba(139,92,246,0.15); color:#a78bfa; }
.divider { height:1px; background:var(--border); margin:20px 0; }
.empty-state { text-align:center; padding:60px 20px; color:var(--text3); }
.empty-icon { font-size:40px; margin-bottom:12px; opacity:0.5; }
.empty-text { font-size:14px; }
.section-title { font-size:16px; font-weight:700; margin-bottom:16px; display:flex; align-items:center; gap:8px; }
.section-title::after { content:''; flex:1; height:1px; background:var(--border); }
.tabs { display:flex; gap:4px; background:var(--surface2); border-radius:10px; padding:4px; margin-bottom:24px; }
.tab { flex:1; padding:8px; text-align:center; font-size:13px; font-weight:500; color:var(--text2); cursor:pointer; border-radius:7px; transition:all 0.2s; }
.tab.active { background:var(--surface); color:var(--text); box-shadow:0 2px 8px rgba(0,0,0,0.2); }
.alert-banner { padding:12px 16px; border-radius:10px; display:flex; align-items:center; gap:10px; margin-bottom:16px; font-size:13px; }
.alert-warn { background:rgba(245,158,11,0.1); border:1px solid rgba(245,158,11,0.3); color:var(--orange); }
.alert-danger { background:rgba(239,68,68,0.1); border:1px solid rgba(239,68,68,0.3); color:var(--red); }
.alert-success { background:rgba(16,185,129,0.1); border:1px solid rgba(16,185,129,0.3); color:var(--green); }
.kyc-upload { border:2px dashed var(--border2); border-radius:10px; padding:20px; text-align:center; cursor:pointer; transition:all 0.2s; color:var(--text3); font-size:13px; }
.kyc-upload:hover { border-color:var(--accent); color:var(--accent); }
/* Document Upload */
.doc-upload-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:14px; margin-bottom:18px; }
.doc-upload-box { border:2px dashed var(--border2); border-radius:12px; padding:0; overflow:hidden; transition:all 0.2s; cursor:pointer; position:relative; min-height:140px; display:flex; flex-direction:column; }
.doc-upload-box.required { border-color:rgba(239,68,68,0.4); }
.doc-upload-box.uploaded { border-color:var(--green); border-style:solid; }
.doc-upload-box.required.uploaded { border-color:var(--green); }
.doc-upload-box:hover { border-color:var(--accent); }
.doc-upload-header { padding:8px 10px; background:var(--surface2); display:flex; align-items:center; gap:6px; border-bottom:1px solid var(--border); }
.doc-upload-label { font-size:11px; font-weight:700; color:var(--text2); flex:1; }
.doc-required-badge { font-size:9px; background:rgba(239,68,68,0.2); color:var(--red); padding:1px 6px; border-radius:10px; font-weight:700; }
.doc-ok-badge { font-size:9px; background:rgba(16,185,129,0.2); color:var(--green); padding:1px 6px; border-radius:10px; font-weight:700; }
.doc-preview-area { flex:1; display:flex; align-items:center; justify-content:center; padding:10px; position:relative; min-height:100px; }
.doc-preview-img { width:100%; height:90px; object-fit:cover; border-radius:6px; display:block; }
.doc-placeholder { text-align:center; color:var(--text3); }
.doc-placeholder-icon { font-size:24px; margin-bottom:6px; }
.doc-placeholder-text { font-size:11px; }
.doc-remove-btn { position:absolute; top:4px; right:4px; width:20px; height:20px; background:rgba(239,68,68,0.8); border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:10px; color:#fff; cursor:pointer; z-index:2; }
.doc-status-row { display:flex; gap:6px; flex-wrap:wrap; margin-top:4px; }
/* View doc modal */
.doc-viewer-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; }
.doc-viewer-item { border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.doc-viewer-label { padding:7px 10px; background:var(--surface2); font-size:11px; font-weight:700; color:var(--text2); border-bottom:1px solid var(--border); }
.doc-viewer-img { width:100%; height:140px; object-fit:cover; display:block; }
.doc-viewer-empty { height:120px; display:flex; align-items:center; justify-content:center; color:var(--text3); font-size:12px; background:var(--surface2); }
.progress-bar { height:4px; background:var(--border); border-radius:4px; overflow:hidden; margin-top:8px; }
.progress-fill { height:100%; background:linear-gradient(90deg,var(--accent),var(--accent2)); border-radius:4px; }
.avatar { width:32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; flex-shrink:0; }
.avatar-blue { background:rgba(59,130,246,0.2); color:#60a5fa; }
.avatar-green { background:rgba(16,185,129,0.2); color:var(--green); }
.avatar-purple { background:rgba(139,92,246,0.2); color:#a78bfa; }
.flex-center { display:flex; align-items:center; gap:10px; }
.text-mono { font-family:'JetBrains Mono',monospace; }
.text-green { color:var(--green); }
.text-red { color:var(--red); }
.text-accent { color:var(--accent); }
.text-sm { font-size:12px; color:var(--text3); }
.fw-600 { font-weight:600; }
.mt-4 { margin-top:16px; }
.mb-4 { margin-bottom:16px; }
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.grid-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px; }
.card-block { background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:20px; }

/* Split Payment Parts */
.split-part { background:var(--surface2); border:1px solid var(--border); border-radius:12px; padding:14px 16px; margin-bottom:10px; position:relative; }
.split-part-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.split-part-label { font-size:12px; font-weight:700; color:var(--accent); letter-spacing:0.06em; text-transform:uppercase; }
.split-remove { width:22px; height:22px; background:rgba(239,68,68,0.15); border:1px solid rgba(239,68,68,0.3); border-radius:6px; color:var(--red); cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:12px; flex-shrink:0; }
.split-summary { background:linear-gradient(135deg,rgba(59,130,246,0.08),rgba(99,102,241,0.08)); border:1px solid rgba(59,130,246,0.2); border-radius:10px; padding:12px 14px; margin-top:10px; }
.split-summary-row { display:flex; justify-content:space-between; align-items:center; padding:4px 0; font-size:12px; }
.split-remaining { color:var(--orange); font-weight:600; }
.split-ok { color:var(--green); font-weight:600; }
.split-over { color:var(--red); font-weight:600; }
.add-part-btn { width:100%; padding:9px; background:rgba(59,130,246,0.08); border:1px dashed rgba(59,130,246,0.35); border-radius:10px; color:var(--accent); cursor:pointer; font-size:13px; font-family:'Sora',sans-serif; font-weight:600; transition:all 0.2s; margin-bottom:14px; }
.add-part-btn:hover { background:rgba(59,130,246,0.15); }

/* Bank Management */
.bank-item { background:var(--surface2); border:1px solid var(--border); border-radius:12px; padding:14px 16px; display:flex; align-items:center; gap:12px; margin-bottom:10px; }
.bank-icon { width:38px; height:38px; background:linear-gradient(135deg,var(--accent),var(--accent2)); border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:17px; flex-shrink:0; }
.bank-info { flex:1; }
.bank-name { font-weight:600; font-size:14px; }
.bank-detail { font-size:11px; color:var(--text3); margin-top:2px; font-family:'JetBrains Mono',monospace; }
.bank-actions { display:flex; gap:6px; }
.mode-toggle { display:flex; background:var(--surface2); border:1px solid var(--border); border-radius:10px; overflow:hidden; margin-bottom:16px; }
.mode-toggle-btn { flex:1; padding:8px 10px; font-size:12px; font-weight:600; cursor:pointer; text-align:center; color:var(--text3); border:none; background:transparent; font-family:'Sora',sans-serif; transition:all 0.2s; }
.mode-toggle-btn.active { background:linear-gradient(135deg,var(--accent),var(--accent2)); color:#fff; }
