/* ==========================================================================
   KEBABADATAHUB — Design System
   ========================================================================== */

:root{
  --brand-50:  #eaf1fe;
  --brand-100: #d3e3fc;
  --brand-400: #6b9bf5;
  --brand-500: #4a84f0;
  --brand-600: #2F6FED;
  --brand-700: #2558c4;
  --brand-900: #16305e;

  /* Warm accent — reserved for the single primary call-to-action per screen */
  --cta-500: #ff6b4a;
  --cta-600: #e5502f;

  --accent-500: #10b981;
  --accent-600: #059669;

  --ink-900: #0f172a;
  --ink-800: #1e293b;
  --ink-700: #334155;
  --ink-500: #64748b;
  --ink-400: #94a3b8;

  --surface: #f7f6f3;
  --card: #ffffff;
  --border: #e6e9f2;

  --danger: #ef4444;
  --danger-bg: #fef2f2;
  --warning: #f59e0b;
  --warning-bg: #fffbeb;
  --success: #10b981;
  --success-bg: #ecfdf5;
  --info: #3b82f6;
  --info-bg: #eff6ff;

  --radius-sm: 8px;
  --radius: 14px;
  --radius-lg: 20px;
  --shadow-sm: 0 1px 2px rgba(15,23,42,.06), 0 1px 1px rgba(15,23,42,.04);
  --shadow-md: 0 8px 24px -8px rgba(15,23,42,.16), 0 2px 8px -2px rgba(15,23,42,.08);
  --shadow-lg: 0 24px 48px -16px rgba(15,23,42,.24);
  --shadow-brand: 0 12px 28px -10px rgba(47,111,237,.45);
}

/* Dark mode — opt-in via [data-theme="dark"] on <html>, never on by default */
:root[data-theme="dark"]{
  --surface: #0f1419;
  --card: #171d26;
  --border: #262f3b;
  --ink-900: #f1f5f9;
  --ink-800: #e2e8f0;
  --ink-700: #cbd5e1;
  --ink-500: #97a3b5;
  --ink-400: #6b7889;
  --brand-50: rgba(47,111,237,.14);
  --brand-100: rgba(47,111,237,.22);
  --danger-bg: rgba(239,68,68,.12);
  --warning-bg: rgba(245,158,11,.12);
  --success-bg: rgba(16,185,129,.12);
  --info-bg: rgba(59,130,246,.12);
}

*{box-sizing:border-box}

html{scroll-behavior:smooth}

body{
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  background:var(--surface);
  color:var(--ink-800);
  -webkit-font-smoothing:antialiased;
  transition:background .2s ease, color .2s ease;
}

h1,h2,h3,h4,h5,h6{
  font-family:'Plus Jakarta Sans','Inter',system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  color:var(--ink-900);font-weight:700;letter-spacing:-.02em;
}
.brand-mark,.ac-title{font-family:'Plus Jakarta Sans','Inter',system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-weight:800}

a{text-decoration:none}

.text-muted-2{color:var(--ink-500)!important}
.bg-surface{background:var(--surface)}

/* ------------------------------ Buttons ------------------------------ */
.btn{border-radius:10px;font-weight:600;padding:.6rem 1.15rem;letter-spacing:-.01em;transition:transform .12s ease, box-shadow .12s ease, background .15s ease}
.btn-sm{padding:.4rem .8rem;border-radius:8px}
.btn:active{transform:translateY(1px)}

.btn-primary{background:linear-gradient(135deg,var(--brand-600),var(--brand-700));border:none;box-shadow:var(--shadow-brand)}
.btn-primary:hover,.btn-primary:focus{background:linear-gradient(135deg,var(--brand-500),var(--brand-600));box-shadow:0 14px 32px -10px rgba(47,111,237,.55)}

.btn-outline-primary{border:1.5px solid var(--brand-500);color:var(--brand-600);background:#fff}
.btn-outline-primary:hover{background:var(--brand-50);color:var(--brand-700);border-color:var(--brand-600)}

.btn-light{background:#fff;color:var(--ink-800);border:1px solid var(--border)}
.btn-light:hover{background:#fafbff;color:var(--ink-900)}

.btn-outline-light{border:1.5px solid rgba(255,255,255,.55);color:#fff;background:transparent}
.btn-outline-light:hover{background:rgba(255,255,255,.12);color:#fff;border-color:#fff}

.btn-outline-danger{border:1.5px solid var(--danger);color:var(--danger);background:#fff}
.btn-outline-danger:hover{background:var(--danger-bg);color:#b91c1c}

.btn-success{background:linear-gradient(135deg,var(--accent-500),var(--accent-600));border:none}
.btn-warning{background:#f59e0b;border:none;color:#fff}
.btn-warning:hover{background:#d97706;color:#fff}

.btn-link{color:var(--brand-600);font-weight:600}

/* ------------------------------ Cards ------------------------------ */
.card{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}
.card-elevated{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);background:var(--card)}
.card-body{padding:1.5rem}

/* ------------------------------ Forms ------------------------------ */
.form-control,.form-select{
  border:1.5px solid var(--border);border-radius:10px;padding:.65rem .9rem;
  font-size:.95rem;background:#fff;color:var(--ink-800);
  transition:border-color .15s ease, box-shadow .15s ease;
}
.form-control:focus,.form-select:focus{
  border-color:var(--brand-500);box-shadow:0 0 0 4px var(--brand-50);
}
.form-control::placeholder{color:var(--ink-400)}
label,.form-label{font-weight:600;font-size:.85rem;color:var(--ink-700);margin-bottom:.4rem}
.input-hint{font-size:.8rem;color:var(--ink-500)}

/* Floating label field wrapper used on auth pages */
.field{margin-bottom:1.1rem}

/* ------------------------------ Alerts ------------------------------ */
.alert{border:none;border-radius:12px;font-size:.9rem;padding:.9rem 1.1rem}
.alert-danger{background:var(--danger-bg);color:#b91c1c}
.alert-success{background:var(--success-bg);color:#047857}
.alert-warning{background:var(--warning-bg);color:#92400e}
.alert-info{background:var(--info-bg);color:#1d4ed8}

/* ------------------------------ Badges / status pills ------------------------------ */
.badge{font-weight:600;border-radius:999px;padding:.35em .75em;font-size:.72rem;letter-spacing:.02em}
.badge-status{display:inline-flex;align-items:center;gap:.35em;border-radius:999px;padding:.3em .75em;font-size:.72rem;font-weight:700;text-transform:capitalize}
.badge-status::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.badge-success{background:var(--success-bg);color:#047857}
.badge-pending{background:var(--warning-bg);color:#92400e}
.badge-processing{background:var(--info-bg);color:#1d4ed8}
.badge-failed{background:var(--danger-bg);color:#b91c1c}
.badge-active{background:var(--success-bg);color:#047857}
.badge-inactive{background:#f1f5f9;color:var(--ink-500)}
.badge-admin{background:var(--brand-50);color:var(--brand-700)}
.badge-user{background:#f1f5f9;color:var(--ink-700)}

/* ------------------------------ Tables ------------------------------ */
.table-modern{background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--border)}
.table-modern thead th{
  background:#fafbfe;color:var(--ink-500);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;
  font-weight:700;border-bottom:1px solid var(--border);padding:.9rem 1.1rem;
}
.table-modern tbody td{padding:.9rem 1.1rem;vertical-align:middle;border-bottom:1px solid var(--border);font-size:.9rem;color:var(--ink-700)}
.table-modern tbody tr:last-child td{border-bottom:none}
.table-modern tbody tr:hover{background:#fafbff}
.table-empty{padding:3rem 1rem;text-align:center;color:var(--ink-500)}

/* ==========================================================================
   Public navbar
   ========================================================================== */
.navbar-public{
  position:sticky;top:0;z-index:1030;background:rgba(255,255,255,.85);
  backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--border);
}
.brand-mark{display:inline-flex;align-items:center;gap:.55rem;font-weight:800;font-size:1.2rem;color:var(--ink-900)}
.brand-mark .brand-dot{
  width:34px;height:34px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--brand-500),var(--brand-700));color:#fff;font-size:1rem;box-shadow:var(--shadow-brand);
}
.navbar-public .nav-link{font-weight:600;color:var(--ink-700);padding:.5rem 1rem!important}
.navbar-public .nav-link:hover{color:var(--brand-600)}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero{
  position:relative;overflow:hidden;padding:5.5rem 0 6rem;
  background:radial-gradient(1100px 500px at 15% -10%, rgba(47,111,237,.18), transparent 60%),
             radial-gradient(900px 500px at 100% 0%, rgba(16,185,129,.14), transparent 55%),
             #ffffff;
}
.hero-eyebrow{
  display:inline-flex;align-items:center;gap:.5rem;background:var(--brand-50);color:var(--brand-700);
  font-weight:700;font-size:.8rem;padding:.4rem .9rem;border-radius:999px;margin-bottom:1.25rem;
}
.hero h1{font-size:3rem;line-height:1.08;margin-bottom:1.1rem}
.hero .lead{font-size:1.15rem;color:var(--ink-500);max-width:560px}
.hero-stats{display:flex;gap:2.5rem;margin-top:3rem}
.hero-stats .stat h3{font-size:1.6rem;margin-bottom:.1rem}
.hero-stats .stat span{color:var(--ink-500);font-size:.85rem;font-weight:600}

.hero-panel{
  background:linear-gradient(160deg,var(--brand-600),var(--brand-900) 120%);
  border-radius:var(--radius-lg);padding:2rem;color:#fff;box-shadow:var(--shadow-lg);
  position:relative;overflow:hidden;
}
.hero-panel::after{
  content:'';position:absolute;inset:0;
  background:radial-gradient(400px 200px at 100% 0%, rgba(255,255,255,.18), transparent 60%);
}
.hero-panel .mini-card{
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:12px;
  padding:.9rem 1.1rem;backdrop-filter:blur(6px);
}

/* Feature / service cards */
.feature-card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  padding:1.75rem;height:100%;transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.feature-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--brand-100)}
.feature-icon{
  width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:var(--brand-50);color:var(--brand-600);font-size:1.25rem;margin-bottom:1.1rem;
}
.feature-icon.mint{background:var(--success-bg);color:var(--accent-600)}
.feature-icon.amber{background:var(--warning-bg);color:#b45309}
.feature-icon.sky{background:var(--info-bg);color:#1d4ed8}

.section-pad{padding:5rem 0}
.section-label{color:var(--brand-600);font-weight:700;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}

.step-num{
  width:38px;height:38px;border-radius:50%;background:var(--ink-900);color:#fff;font-weight:700;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}

.cta-band{
  background:linear-gradient(135deg,var(--brand-600),var(--brand-900));border-radius:var(--radius-lg);
  padding:3.5rem 3rem;color:#fff;position:relative;overflow:hidden;
}
.cta-band::after{content:'';position:absolute;inset:0;background:radial-gradient(500px 260px at 90% 10%, rgba(16,185,129,.25), transparent 60%)}

.site-footer{background:var(--ink-900);color:#cbd5e1;padding:3.5rem 0 2rem}
.site-footer a{color:#cbd5e1}
.site-footer a:hover{color:#fff}
.site-footer h6{color:#fff;font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;margin-bottom:1rem}
.footer-bottom{border-top:1px solid rgba(255,255,255,.08);margin-top:2.5rem;padding-top:1.5rem;font-size:.85rem;color:#94a3b8}

/* ==========================================================================
   Auth pages (login / signup)
   ========================================================================== */
.auth-wrap{min-height:100vh;display:flex}
.auth-side{
  flex:1;display:none;position:relative;overflow:hidden;
  background:linear-gradient(160deg,var(--brand-600),var(--brand-900) 130%);color:#fff;
  padding:3.5rem;flex-direction:column;justify-content:space-between;
}
.auth-side::after{content:'';position:absolute;inset:0;background:radial-gradient(500px 300px at 100% 100%, rgba(16,185,129,.28), transparent 60%)}
.auth-side .quote{font-size:1.35rem;line-height:1.5;font-weight:600;max-width:420px;position:relative;z-index:1}
.auth-side .quote small{display:block;margin-top:1.25rem;font-weight:500;font-size:.9rem;color:rgba(255,255,255,.7)}
@media(min-width:992px){.auth-side{display:flex}}

.auth-main{flex:1;display:flex;align-items:center;justify-content:center;padding:2.5rem 1.5rem;background:#fff}
.auth-card{width:100%;max-width:420px}
.auth-card .brand-mark{margin-bottom:2rem}
.auth-card h2{font-size:1.6rem;margin-bottom:.35rem}
.auth-card .subtitle{color:var(--ink-500);margin-bottom:2rem;font-size:.95rem}

/* ==========================================================================
   App shell (dashboard / profile — logged-in user)
   ========================================================================== */
.app-navbar{
  background:#fff;border-bottom:1px solid var(--border);padding:.85rem 0;position:sticky;top:0;z-index:1030;
}
.app-navbar .btn-outline-light{border-color:var(--border);color:var(--ink-700)}
.app-navbar .btn-outline-light:hover{background:var(--surface);color:var(--ink-900);border-color:var(--ink-400)}

.balance-card{
  background:linear-gradient(150deg,var(--brand-600),var(--brand-900) 130%);color:#fff;border:none;
  border-radius:var(--radius-lg);box-shadow:var(--shadow-brand);position:relative;overflow:hidden;
}
.balance-card::after{content:'';position:absolute;inset:0;background:radial-gradient(320px 180px at 100% 0%, rgba(16,185,129,.3), transparent 60%)}
.balance-card .label{color:rgba(255,255,255,.75);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}
.balance-card .amount{font-size:2.1rem;font-weight:800;margin:.25rem 0 1rem}

.quick-action{
  display:flex;align-items:center;gap:.85rem;padding:.95rem 1.1rem;border-radius:12px;
  background:#fff;border:1px solid var(--border);color:var(--ink-800);font-weight:600;transition:.15s ease;
}
.quick-action:hover{border-color:var(--brand-400);background:var(--brand-50);color:var(--brand-700)}
.quick-action .qa-icon{
  width:38px;height:38px;border-radius:10px;background:var(--brand-50);color:var(--brand-600);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}

.stat-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:1.4rem 1.5rem}
.stat-card .stat-icon{
  width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;
}

/* App sidebar (dashboard nav) */
.app-sidebar{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:1.25rem 1rem;position:sticky;top:5.5rem;
}
.app-sidebar-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-400);font-weight:700;margin:.25rem .6rem .6rem}
.app-sidebar-link{
  display:flex;align-items:center;gap:.7rem;padding:.7rem .8rem;border-radius:10px;color:var(--ink-700);
  font-weight:600;font-size:.9rem;margin-bottom:.2rem;transition:.15s ease;
}
.app-sidebar-link i{width:18px;text-align:center;color:var(--ink-400);font-size:1rem}
.app-sidebar-link:hover{background:var(--surface);color:var(--ink-900)}
.app-sidebar-link.active{background:var(--brand-50);color:var(--brand-700)}
.app-sidebar-link.active i{color:var(--brand-600)}

/* Modern service tiles */
.service-tile{
  display:flex;flex-direction:column;gap:.9rem;padding:1.25rem 1.1rem;border-radius:var(--radius);
  background:var(--card);border:1px solid var(--border);color:var(--ink-800);font-weight:700;font-size:.92rem;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;height:100%;
}
.service-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--brand-100);color:var(--ink-900)}
.service-tile .st-icon{
  width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:1.2rem;
  background:linear-gradient(135deg,var(--brand-500),var(--brand-700));color:#fff;box-shadow:var(--shadow-brand);
}
.service-tile .st-icon.mint{background:linear-gradient(135deg,var(--accent-500),var(--accent-600));box-shadow:0 12px 28px -10px rgba(16,185,129,.45)}
.service-tile .st-icon.amber{background:linear-gradient(135deg,#f59e0b,#b45309);box-shadow:0 12px 28px -10px rgba(245,158,11,.45)}
.service-tile .st-icon.sky{background:linear-gradient(135deg,#3b82f6,#1d4ed8);box-shadow:0 12px 28px -10px rgba(59,130,246,.45)}
.service-tile .st-icon.violet{background:linear-gradient(135deg,#a78bfa,#7c3aed);box-shadow:0 12px 28px -10px rgba(124,58,237,.45)}
.service-tile .st-arrow{margin-left:auto;color:var(--ink-400);transition:.15s ease}
.service-tile:hover .st-arrow{color:var(--brand-600);transform:translateX(2px)}

/* ==========================================================================
   Admin shell
   ========================================================================== */
.admin-shell{display:flex;min-height:100vh}
.admin-sidebar{
  width:250px;flex-shrink:0;background:var(--ink-900);color:#cbd5e1;padding:1.5rem 1rem;
  position:sticky;top:0;height:100vh;overflow-y:auto;
}
.admin-sidebar .brand-mark{color:#fff;margin-bottom:2rem;padding:0 .5rem}
.admin-sidebar .brand-mark .brand-dot{background:linear-gradient(135deg,var(--brand-400),var(--accent-500))}
.admin-nav-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:#64748b;font-weight:700;margin:1.25rem .6rem .55rem}
.admin-nav-link{
  display:flex;align-items:center;gap:.7rem;padding:.65rem .8rem;border-radius:9px;color:#cbd5e1;
  font-weight:600;font-size:.9rem;margin-bottom:.15rem;transition:.15s ease;
}
.admin-nav-link i{width:18px;text-align:center;color:#94a3b8}
.admin-nav-link:hover{background:rgba(255,255,255,.06);color:#fff}
.admin-nav-link.active{background:linear-gradient(135deg,var(--brand-600),var(--brand-700));color:#fff}
.admin-nav-link.active i{color:#fff}

.admin-main{flex:1;min-width:0}
.admin-topbar{
  background:#fff;border-bottom:1px solid var(--border);padding:1.1rem 2rem;
  display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20;
}
.admin-content{padding:2rem}
.admin-page-title{font-size:1.4rem;margin-bottom:.15rem}
.admin-page-sub{color:var(--ink-500);font-size:.9rem}

@media(max-width:900px){
  .admin-sidebar{position:fixed;left:-260px;top:0;bottom:0;z-index:1040;transition:left .2s ease;box-shadow:var(--shadow-lg)}
  .admin-sidebar.open{left:0}
  .admin-content{padding:1.25rem}
  .admin-topbar{padding:1rem}
}

.avatar-circle{
  width:38px;height:38px;border-radius:50%;background:var(--brand-50);color:var(--brand-700);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;
}

/* ==========================================================================
   Admin service cards
   ========================================================================== */
.svc-card{transition:box-shadow .15s ease, transform .15s ease}
.svc-card:hover{box-shadow:var(--shadow-lg)}
.svc-tx-row{padding:.55rem .7rem;background:var(--surface);border-radius:10px}
.form-check.form-switch .form-check-input{width:2.5em;height:1.35em;cursor:pointer}
.form-check.form-switch .form-check-input:checked{background-color:var(--accent-500);border-color:var(--accent-500)}
.form-check.form-switch .form-check-input:focus{border-color:var(--brand-400);box-shadow:0 0 0 3px var(--brand-50)}

/* Toast */
.toast{position:fixed;top:1rem;right:1rem;z-index:2000;border-radius:12px;overflow:hidden;box-shadow:var(--shadow-md)}

/* Utility */
.rounded-xl{border-radius:var(--radius)!important}
.shadow-soft{box-shadow:var(--shadow-sm)!important}

/* Global loader */
.global-loader{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(15,23,42,.45);z-index:3000}
.global-loader .gl-center{background:var(--card);padding:1.25rem 1.6rem;border-radius:12px;display:flex;align-items:center;gap:1rem;box-shadow:var(--shadow-md)}
.gl-spinner{width:40px;height:40px;border-radius:50%;border:4px solid rgba(0,0,0,.08);border-top-color:var(--brand-600);animation:gl-spin .9s linear infinite}
.gl-text{font-weight:700;color:var(--ink-900)}
@keyframes gl-spin{to{transform:rotate(360deg)}}

/* ==========================================================================
   Premium fintech dashboard
   ========================================================================== */
@keyframes fade-up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes pulse-dot{0%,100%{box-shadow:0 0 0 0 rgba(255,107,74,.55)}50%{box-shadow:0 0 0 5px rgba(255,107,74,0)}}
@keyframes shimmer{0%{background-position:-200px 0}100%{background-position:200px 0}}

.app-shell{max-width:480px;margin:0 auto;min-height:100vh;background:var(--surface);position:relative;padding-bottom:6.75rem}
@media(min-width:576px){.app-shell{border-left:1px solid var(--border);border-right:1px solid var(--border)}}
@media(min-width:960px){.app-shell{max-width:480px;margin:28px auto 36px;border-radius:36px;overflow:hidden;box-shadow:0 32px 80px -30px rgba(15,23,42,.28)}}

/* ---------- Header ---------- */
.dashboard-header{
  position:sticky;top:0;z-index:1040;display:flex;align-items:center;justify-content:space-between;gap:.75rem;
  padding:1.1rem 1.25rem;background:rgba(247,248,252,.82);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid rgba(226,230,240,.7);
}
:root[data-theme="dark"] .dashboard-header{background:rgba(13,17,23,.85);border-bottom-color:rgba(255,255,255,.06)}
.header-group{display:flex;align-items:center;gap:.75rem;min-width:0}
.header-group-right{gap:.5rem}

.icon-btn{
  width:42px;height:42px;min-width:42px;border-radius:13px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--card);border:1px solid var(--border);color:var(--ink-700);position:relative;flex-shrink:0;font-size:1.1rem;
  transition:transform .18s cubic-bezier(.34,1.56,.64,1), box-shadow .18s ease, background .18s ease;
}
.icon-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);color:var(--brand-600)}
.icon-btn:active{transform:scale(.94)}
.icon-btn .ib-dot{position:absolute;top:8px;right:9px;width:8px;height:8px;border-radius:50%;background:var(--cta-500);border:2px solid var(--card);animation:pulse-dot 2.2s ease-in-out infinite}

.dashboard-header .brand-mark{font-size:1.05rem;gap:.55rem;letter-spacing:-.02em}
.dashboard-header .brand-mark .brand-dot{
  width:34px;height:34px;font-size:1rem;border-radius:11px;
  background:linear-gradient(135deg,#7c6bf2,#4a2fd9);box-shadow:0 10px 22px -8px rgba(93,63,235,.55);
}

.notif-panel{width:310px;max-width:86vw;padding:.6rem;border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow-lg)}
.notif-panel .notif-title{font-weight:800;font-size:.85rem;padding:.5rem .6rem .4rem;color:var(--ink-900)}
.notif-item{display:flex;gap:.65rem;align-items:flex-start;padding:.6rem;border-radius:14px;transition:background .15s ease}
.notif-item:hover{background:var(--surface)}
.notif-item .ni-icon{width:34px;height:34px;border-radius:10px;background:var(--brand-50);color:var(--brand-600);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.85rem}
.notif-item .ni-text{font-size:.8rem;color:var(--ink-700);font-weight:500}
.notif-item .ni-time{font-size:.7rem;color:var(--ink-400)}
.notif-empty{padding:1.75rem .6rem;text-align:center;color:var(--ink-500);font-size:.82rem}

/* ---------- Main / greeting ---------- */
.dashboard-main{padding:0 1.1rem 1.25rem}
.hero-greeting{padding:1.35rem 0 1.1rem;animation:fade-up .5s ease both}
.hero-greeting .eyebrow{display:none}
.hero-greeting h1{font-size:1.6rem;line-height:1.2;margin:0 0 .3rem;letter-spacing:-.02em}
.hero-greeting .subtext{margin:0;color:var(--ink-500);font-size:.95rem;font-weight:500}

/* ---------- Wallet card ---------- */
.wallet-card{
  border-radius:28px;padding:1.6rem 1.5rem 1.7rem;
  background:linear-gradient(135deg,#3b6dfb 0%,#2f5cf0 42%,#1c3fc7 100%);
  color:#fff;box-shadow:0 24px 48px -20px rgba(38,80,229,.55),0 2px 6px rgba(15,23,42,.06);
  position:relative;overflow:hidden;animation:fade-up .55s ease .05s both;
}
.wallet-card::before{content:'';position:absolute;top:-70px;right:-50px;width:220px;height:220px;border-radius:50%;background:radial-gradient(closest-side, rgba(255,255,255,.16), transparent);}
.wallet-card::after{content:'';position:absolute;inset:0;background:radial-gradient(280px 160px at 100% 0%, rgba(255,255,255,.16), transparent 70%)}
.wallet-card-top,.wallet-card-bottom{position:relative;z-index:1}
.wallet-balance-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:nowrap}
.wallet-label{margin:0 0 .5rem;color:rgba(255,255,255,.78);font-size:.76rem;font-weight:700;letter-spacing:.06em}
.wallet-amount{font-size:clamp(1.4rem,7vw,2.15rem);font-weight:800;letter-spacing:-.03em;transition:opacity .15s ease, font-size .1s ease;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:visible;min-width:0;flex:1 1 auto}
.wallet-amount.is-refreshing{opacity:.55}
.wallet-toggle{
  background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.28);color:#fff;display:inline-flex;align-items:center;justify-content:center;
  width:42px;height:42px;border-radius:50%;font-size:1rem;flex-shrink:0;
  transition:background .15s ease, transform .15s ease;
}
.wallet-toggle span{display:none}
.wallet-toggle:hover{background:rgba(255,255,255,.28)}
.wallet-toggle:active{transform:scale(.95)}
.wallet-card-actions{display:flex;align-items:center;gap:.6rem;flex-shrink:0;flex-wrap:nowrap}
.wallet-card-bottom{margin-top:1.35rem;display:flex;justify-content:flex-end}
.wallet-action{
  border:none;background:#fff;color:var(--brand-700);font-weight:800;padding:.85rem 1.3rem;border-radius:999px;min-height:46px;
  box-shadow:0 18px 30px -14px rgba(15,23,42,.4);transition:transform .18s ease, box-shadow .18s ease;white-space:nowrap;flex-shrink:0;
}
.wallet-action:hover{transform:translateY(-2px);box-shadow:0 22px 36px -14px rgba(15,23,42,.45)}
.wallet-action:active{transform:scale(.96)}

/* ---------- Primary actions ---------- */
.primary-actions{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;padding:1.35rem 0 .1rem;animation:fade-up .55s ease .1s both}
.action-card{
  border:1px solid transparent;border-radius:24px;padding:1.15rem;min-height:158px;display:flex;flex-direction:column;justify-content:space-between;
  text-align:left;width:100%;transition:transform .22s cubic-bezier(.34,1.56,.64,1), box-shadow .22s ease;box-shadow:0 12px 26px -18px rgba(15,23,42,.2);
}
.action-card:hover{transform:translateY(-4px)}
.action-card:active{transform:scale(.98)}
.action-card.action-airtime{background:linear-gradient(165deg,#e8f0fe,#dce8fd 120%)}
.action-card.action-data{background:linear-gradient(165deg,#e6f8ec,#d9f4e3 120%)}
.action-card .ac-icon{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:1.35rem}
.action-card.action-airtime .ac-icon{background:#fff;color:var(--brand-600);box-shadow:0 10px 20px -10px rgba(47,111,237,.35)}
.action-card.action-data .ac-icon{background:#fff;color:#12a150;box-shadow:0 10px 20px -10px rgba(16,161,80,.35)}
.action-card .ac-copy{display:flex;flex-direction:column;gap:.25rem;margin-top:.85rem}
.action-card .ac-title{font-weight:800;font-size:1.05rem;letter-spacing:-.01em;color:var(--ink-900)}
.action-card .ac-sub{font-size:.78rem;color:var(--ink-500);font-weight:600;line-height:1.3}
.action-card .ac-arrow{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;align-self:flex-end;margin-top:.6rem;color:#fff;transition:transform .18s ease}
.action-card.action-airtime .ac-arrow{background:var(--brand-600);box-shadow:0 10px 20px -8px rgba(47,111,237,.5)}
.action-card.action-data .ac-arrow{background:#12a150;box-shadow:0 10px 20px -8px rgba(18,161,80,.5)}
.action-card:hover .ac-arrow{transform:translateX(3px)}

/* ---------- Section panels (services / transactions) ---------- */
.services-section,.transactions-section,.history-panel{
  margin-top:1.35rem;padding:1.25rem;background:var(--card);border:1px solid var(--border);border-radius:24px;
  box-shadow:0 14px 32px -24px rgba(15,23,42,.22);animation:fade-up .55s ease .15s both;
}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.9rem}
.section-heading h2{font-size:1rem;margin:0;color:var(--ink-900);letter-spacing:-.01em}
.section-heading a,.section-heading button.link-btn{font-size:.82rem;font-weight:700;color:var(--brand-600);background:none;border:none;display:inline-flex;align-items:center;gap:.2rem;transition:gap .15s ease}
.section-heading a:hover,.section-heading button.link-btn:hover{gap:.4rem}

/* Services — row list style */
.service-list{display:flex;flex-direction:column;gap:.4rem}
.service-row{
  display:flex;align-items:center;gap:.85rem;padding:.7rem .4rem;border-radius:16px;background:none;border:none;width:100%;
  text-align:left;color:var(--ink-800);transition:background .15s ease, transform .15s ease;
}
.service-row:hover{background:var(--surface);transform:translateX(2px)}
.service-row:active{transform:scale(.98)}
.service-row-icon{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.05rem;flex-shrink:0}
.service-row-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}
.service-row-title{font-weight:700;font-size:.9rem;color:var(--ink-900)}
.service-row-sub{font-size:.74rem;color:var(--ink-500);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.service-row-arrow{color:var(--ink-400);font-size:.95rem;flex-shrink:0;transition:transform .15s ease}
.service-row:hover .service-row-arrow{transform:translateX(2px);color:var(--brand-600)}

.service-row-icon.c-purple{background:#f2ecff;color:#7c3aed}
.service-row-icon.c-amber{background:#fff3e0;color:#d97706}
.service-row-icon.c-blue{background:var(--brand-50);color:var(--brand-600)}
.service-row-icon.c-green{background:#e6f8ec;color:#12a150}
.service-row-icon.c-pink{background:#fde8f3;color:#db2777}
.service-row-icon.c-teal{background:#e3f8f6;color:#0d9488}
.service-row-icon.c-red{background:#fee9e9;color:#dc2626}
.service-row-icon.c-indigo{background:#eae8fd;color:#4f46e5}
.service-row-icon.c-cyan{background:#e2f6fd;color:#0891b2}

.service-extra{display:flex;flex-direction:column;gap:.4rem;overflow:hidden;max-height:0;transition:max-height .35s ease}
.service-extra.is-open{max-height:600px}

/* Transactions */
.transaction-list{display:flex;flex-direction:column;gap:.5rem}
.transaction-item{display:flex;align-items:center;gap:.8rem;padding:.75rem;border-radius:18px;background:var(--surface);border:1px solid transparent;transition:transform .15s ease, box-shadow .15s ease;cursor:pointer}
.transaction-item:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm);border-color:var(--border)}
.transaction-item .tx-icon{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--brand-50);color:var(--brand-600);font-size:1.05rem}
.transaction-item .tx-icon.credit{background:#e6f8ec;color:#12a150}
.transaction-item .tx-icon.debit-airtime{background:#fff3e0;color:#d97706}
.transaction-item .tx-icon.debit-data{background:var(--brand-50);color:var(--brand-600)}
.transaction-item .tx-icon.debit-cable{background:#f2ecff;color:#7c3aed}
.transaction-item .tx-icon.debit-electricity{background:#fff3e0;color:#d97706}
.transaction-item .tx-main{flex:1;min-width:0}
.transaction-item .tx-title{font-weight:700;font-size:.87rem;color:var(--ink-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.transaction-item .tx-sub{font-size:.73rem;color:var(--ink-500);margin-top:.1rem}
.transaction-item .tx-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;flex-shrink:0}
.transaction-item .tx-amount{font-weight:800;font-size:.87rem;color:var(--ink-900);font-variant-numeric:tabular-nums}
.transaction-item .tx-amount.credit{color:#12a150}
.tx-empty-state{padding:2rem 1rem;text-align:center;border:1.5px dashed var(--border);border-radius:18px;background:var(--surface)}
.tx-empty-state .tx-empty-icon{width:50px;height:50px;border-radius:15px;display:flex;align-items:center;justify-content:center;margin:0 auto .75rem;background:var(--brand-50);color:var(--brand-600);font-size:1.2rem}
.tx-empty-state p{margin:0 0 .2rem;font-weight:700;color:var(--ink-900)}
.tx-empty-state span{font-size:.8rem;color:var(--ink-500)}

/* ---------- Bottom nav & FAB ---------- */
.bottom-nav{
  position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);width:calc(100% - 1.5rem);max-width:460px;display:grid;grid-template-columns:repeat(4,1fr);
  gap:.3rem;padding:.6rem;border-radius:26px;background:rgba(255,255,255,.92);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(226,230,240,.9);box-shadow:0 20px 44px -16px rgba(15,23,42,.3);z-index:1050;
}
:root[data-theme="dark"] .bottom-nav{background:rgba(20,25,32,.92);border-color:rgba(255,255,255,.08)}
.bottom-nav-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;padding:.5rem .2rem;border-radius:18px;color:var(--ink-400);font-size:.68rem;font-weight:700;min-height:52px;transition:background .18s ease, color .18s ease, transform .15s ease}
.bottom-nav-link i{font-size:1.1rem}
.bottom-nav-link:hover{color:var(--brand-600)}
.bottom-nav-link:active{transform:scale(.94)}
.bottom-nav-link.active{background:linear-gradient(135deg,var(--brand-600),var(--brand-700));color:#fff;box-shadow:0 10px 20px -8px rgba(47,111,237,.5)}

.fab-add-funds{
  position:fixed;right:1.1rem;bottom:6rem;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:0 1.2rem;height:56px;border-radius:999px;
  background:linear-gradient(135deg,#3b6dfb,#1c3fc7);color:#fff;font-weight:800;font-size:.9rem;
  box-shadow:0 20px 40px -14px rgba(38,80,229,.6);border:none;z-index:1050;
  transition:transform .2s cubic-bezier(.34,1.56,.64,1), box-shadow .2s ease;
}
.fab-add-funds:hover{transform:translateY(-3px)}
.fab-add-funds:active{transform:scale(.95)}
.fab-add-funds.fab-whatsapp{background:linear-gradient(135deg,#25d366,#128c7e);box-shadow:0 20px 40px -14px rgba(18,140,126,.6);color:#fff;text-decoration:none}

/* ---------- Bottom-sheet modals ---------- */
.sheet-modal .modal-dialog{margin:0 auto;max-width:480px;min-height:100dvh;display:flex;align-items:flex-end;transition:transform .3s cubic-bezier(.32,.72,0,1)}
.sheet-modal .modal-content{border-radius:26px 26px 0 0;max-height:92dvh;overflow-y:auto;border:none;box-shadow:0 -20px 60px -20px rgba(15,23,42,.35)}
.sheet-handle{width:42px;height:4px;border-radius:99px;background:var(--border);margin:.7rem auto 0}

/* ---------- VTU purchase modal (Buy Airtime / Buy Data) ---------- */
.vtu-body{padding-top:.25rem}
.vtu-section{margin-bottom:1.35rem;animation:fade-up .35s ease both}
.vtu-section-title{display:flex;align-items:center;gap:.5rem;font-weight:800;font-size:.85rem;color:var(--ink-800);margin-bottom:.65rem}
.vtu-section-title i{color:var(--brand-600);font-size:1rem}

.vtu-network-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem}
.vtu-network-card{
  position:relative;display:flex;flex-direction:column;align-items:center;gap:.5rem;
  padding:1rem .35rem;border-radius:var(--radius-lg);border:1.5px solid var(--border);
  background:rgba(255,255,255,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  box-shadow:var(--shadow-sm);transition:transform .18s cubic-bezier(.34,1.56,.64,1), box-shadow .18s ease, border-color .18s ease;
}
:root[data-theme="dark"] .vtu-network-card{background:rgba(255,255,255,.05)}
.vtu-network-card:hover{transform:translateY(-2px)}
.vtu-network-card:active{transform:scale(.96)}
.vtu-network-card.active{border-color:var(--brand-600);background:var(--brand-50);box-shadow:0 12px 24px -12px rgba(47,111,237,.4)}
.vtu-network-logo{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:.76rem;letter-spacing:.02em;box-shadow:0 8px 16px -8px rgba(0,0,0,.35)}
.vtu-network-logo.mtn{background:#ffcc00;color:#1a1a1a}
.vtu-network-logo.glo{background:linear-gradient(135deg,#2e8b3d,#1f6b2c)}
.vtu-network-logo.airtel{background:linear-gradient(135deg,#e30613,#a30310)}
.vtu-network-logo.mobile9{background:linear-gradient(135deg,#0a6847,#064d34)}
.vtu-network-name{font-size:.74rem;font-weight:700;color:var(--ink-700)}
.vtu-network-check{position:absolute;top:.4rem;right:.4rem;color:var(--brand-600);font-size:.95rem;background:#fff;border-radius:50%;line-height:1}

.vtu-phone-field{display:flex;align-items:center;gap:.35rem;padding:.4rem .4rem .4rem .9rem;border:1.5px solid var(--border);border-radius:999px;background:var(--card);transition:border-color .15s ease, box-shadow .15s ease}
.vtu-phone-field:focus-within{border-color:var(--brand-500);box-shadow:0 0 0 4px var(--brand-50)}
.vtu-phone-icon{color:var(--brand-500);font-size:1.2rem;flex-shrink:0}
.vtu-phone-input{flex:1;border:none;background:transparent;outline:none;font-weight:700;font-size:.95rem;color:var(--ink-900);min-width:0;padding:.55rem 0}
.vtu-phone-action{width:36px;height:36px;border-radius:50%;border:none;background:var(--brand-50);color:var(--brand-600);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.9rem;transition:background .15s ease, transform .15s ease}
.vtu-phone-action:hover{background:var(--brand-100)}
.vtu-phone-action:active{transform:scale(.92)}
.vtu-phone-hint{min-height:1.1rem;font-size:.72rem;font-weight:600;color:var(--ink-500);margin-top:.4rem;padding-left:.6rem}
.vtu-phone-hint.success{color:var(--success)}
.vtu-phone-hint.error{color:var(--danger)}

.vtu-amount-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem;margin-bottom:.75rem}
.vtu-amount-chip{border:1.5px solid var(--border);border-radius:var(--radius-lg);padding:.75rem;text-align:center;font-weight:800;background:var(--card);color:var(--ink-800);min-height:52px;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums;transition:.15s ease}
.vtu-amount-chip:hover{border-color:var(--brand-400)}
.vtu-amount-chip.active{border-color:var(--brand-600);background:linear-gradient(135deg,var(--brand-600),var(--brand-700));color:#fff;transform:scale(1.03);box-shadow:0 12px 24px -12px rgba(47,111,237,.5)}
.vtu-custom-amount{display:flex;align-items:center;gap:.4rem;border:1.5px solid var(--border);border-radius:999px;padding:.15rem .6rem .15rem 1rem;background:var(--card)}
.vtu-custom-amount span{font-weight:800;color:var(--ink-500)}
.vtu-custom-amount input{flex:1;border:none;background:transparent;outline:none;padding:.6rem 0;font-weight:700;color:var(--ink-900);min-width:0}

.vtu-plan-search{display:flex;align-items:center;gap:.5rem;border:1.5px solid var(--border);border-radius:999px;padding:.55rem 1rem;margin-bottom:.75rem;background:var(--card)}
.vtu-plan-search i{color:var(--ink-400)}
.vtu-plan-search input{flex:1;border:none;background:transparent;outline:none;font-size:.85rem;color:var(--ink-900);min-width:0}

.vtu-plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;max-height:320px;overflow-y:auto;padding-right:2px}
.vtu-plan-card{
  position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;text-align:left;
  padding:.85rem .9rem;border-radius:var(--radius-lg);border:1.5px solid var(--border);
  background:rgba(255,255,255,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  transition:transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
:root[data-theme="dark"] .vtu-plan-card{background:rgba(255,255,255,.05)}
.vtu-plan-card:hover{transform:translateY(-2px)}
.vtu-plan-card.active{border-color:var(--brand-600);background:var(--brand-50);box-shadow:0 12px 24px -12px rgba(47,111,237,.4)}
.vtu-plan-name{font-weight:800;font-size:.92rem;color:var(--ink-900)}
.vtu-plan-meta{font-size:.68rem;color:var(--ink-500);font-weight:600}
.vtu-plan-price{font-weight:800;font-size:.85rem;color:var(--brand-700);margin-top:.15rem;font-variant-numeric:tabular-nums}
.vtu-plan-empty{grid-column:1/-1;padding:2rem 1rem;text-align:center;color:var(--ink-500);font-size:.85rem}
.vtu-plan-empty i{display:block;font-size:1.4rem;margin-bottom:.4rem;color:var(--ink-400)}

.vtu-summary{border-radius:var(--radius-lg);padding:1rem 1.1rem;margin-bottom:1.1rem;background:linear-gradient(135deg,var(--brand-50),rgba(47,111,237,.03));border:1.5px solid var(--brand-100)}
.vtu-summary-title{display:flex;align-items:center;gap:.5rem;font-weight:800;font-size:.8rem;color:var(--brand-700);margin-bottom:.7rem}
.vtu-summary-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.4rem 0;font-size:.85rem;border-bottom:1px dashed var(--brand-100)}
.vtu-summary-row:last-child{border-bottom:none}
.vtu-summary-row span{color:var(--ink-500);font-weight:600}
.vtu-summary-row strong{color:var(--ink-900);font-weight:800;text-align:right}
.vtu-summary-row.vtu-summary-wallet strong{color:var(--success)}

.vtu-buy-btn{
  width:100%;min-height:56px;border:none;border-radius:999px;font-weight:800;font-size:1rem;
  display:flex;align-items:center;justify-content:center;gap:.55rem;
  background:linear-gradient(135deg,var(--brand-500),var(--brand-700));color:#fff;
  box-shadow:0 18px 36px -14px rgba(47,111,237,.55);transition:transform .18s ease, box-shadow .18s ease;
}
.vtu-buy-btn:hover{transform:translateY(-2px);box-shadow:0 22px 42px -14px rgba(47,111,237,.6);color:#fff}
.vtu-buy-btn:active{transform:scale(.97)}
.vtu-buy-btn:disabled{opacity:.55;pointer-events:none}

/* ---------- VTU purchase modal (Cable TV / Electricity additions) ---------- */
.vtu-network-grid.cols-3{grid-template-columns:repeat(3,1fr)}
.vtu-network-grid.cols-2{grid-template-columns:repeat(2,1fr)}
.vtu-network-grid.cols-scroll{grid-auto-flow:column;grid-auto-columns:minmax(92px,1fr);overflow-x:auto;padding-bottom:.2rem;scrollbar-width:thin}
.vtu-network-logo.dstv{background:linear-gradient(135deg,#003b7a,#001f42)}
.vtu-network-logo.gotv{background:linear-gradient(135deg,#00a651,#00622f)}
.vtu-network-logo.startimes{background:linear-gradient(135deg,#e2231a,#8f0f09)}
.vtu-network-logo.generic{background:linear-gradient(135deg,var(--brand-500),var(--brand-700))}

.vtu-input-field{display:flex;align-items:center;gap:.35rem;padding:.4rem .4rem .4rem .9rem;border:1.5px solid var(--border);border-radius:999px;background:var(--card);transition:border-color .15s ease, box-shadow .15s ease}
.vtu-input-field:focus-within{border-color:var(--brand-500);box-shadow:0 0 0 4px var(--brand-50)}
.vtu-input-field i{color:var(--brand-500);font-size:1.2rem;flex-shrink:0}
.vtu-input-field input{flex:1;border:none;background:transparent;outline:none;font-weight:700;font-size:.95rem;color:var(--ink-900);min-width:0;padding:.55rem 0}
.vtu-input-status{width:22px;height:22px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.vtu-input-status .spinner-border{width:16px;height:16px;border-width:2px}
.vtu-input-status.success{color:var(--success);font-size:1.15rem}
.vtu-input-status.error{color:var(--danger);font-size:1.15rem}

.vtu-customer-card{
  display:flex;align-items:center;gap:.7rem;margin-top:.65rem;padding:.75rem .9rem;border-radius:var(--radius-lg);
  background:linear-gradient(135deg,var(--brand-50),rgba(47,111,237,.03));border:1.5px solid var(--brand-100);
  animation:fade-up .3s ease both;
}
.vtu-customer-card .ni-icon{width:38px;height:38px;border-radius:11px;background:var(--success-bg);color:var(--success);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1rem}
.vtu-customer-card-name{font-weight:800;font-size:.92rem;color:var(--ink-900)}
.vtu-customer-card-label{font-size:.7rem;font-weight:700;color:var(--ink-500);text-transform:uppercase;letter-spacing:.04em}

.vtu-amount-hint{font-size:.72rem;font-weight:600;color:var(--ink-500);margin-top:.4rem;padding-left:.6rem}

.funding-account-card{
  border:1px solid var(--border);border-radius:20px;padding:1rem;background:linear-gradient(135deg,#ffffff,#f8fbff);box-shadow:0 16px 32px -20px rgba(47,111,237,.26);
}
.funding-account-head{display:flex;align-items:center;gap:.75rem;margin-bottom:.9rem}
.funding-bank-logo{
  width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;background:var(--brand-50);color:var(--brand-600);font-size:1.15rem;flex-shrink:0;
}
.funding-account-number{font-size:1.75rem;font-weight:800;letter-spacing:.02em;color:var(--ink-900);font-variant-numeric:tabular-nums;margin:.35rem 0 .75rem}
.funding-account-meta{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding-top:.3rem}
.copy-feedback{margin-top:.55rem;font-size:.8rem;color:var(--accent-600);font-weight:700}

/* ---- Bank-style transaction receipt ---- */
.receipt{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;text-align:left;box-shadow:var(--shadow-md);animation:fade-up .3s ease both}
.receipt-head{padding:1.5rem 1.25rem 1.15rem;text-align:center;border-bottom:1px dashed var(--border)}
.receipt-brand{display:inline-flex;align-items:center;gap:.4rem;font-family:'Plus Jakarta Sans','Inter',system-ui,sans-serif;font-weight:800;color:var(--brand-600);font-size:.85rem;margin-bottom:.9rem}
.receipt-brand .brand-dot{width:20px;height:20px;font-size:.65rem}
.receipt-status-icon{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.4rem;margin:0 auto .65rem}
.receipt-status-icon.success{background:var(--success-bg);color:var(--success)}
.receipt-status-icon.failed{background:var(--danger-bg);color:var(--danger)}
.receipt-status-icon.processing{background:var(--brand-50);color:var(--brand-600)}
.receipt-amount{font-family:'Plus Jakarta Sans','Inter',system-ui,sans-serif;font-weight:800;font-size:1.65rem;color:var(--ink-900)}
.receipt-status-text{font-size:.82rem;font-weight:700;margin-top:.2rem}
.receipt-status-text.success{color:var(--success)}
.receipt-status-text.failed{color:var(--danger)}
.receipt-status-text.processing{color:var(--brand-600)}
.receipt-body{padding:.4rem 1.25rem}
.receipt-row{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.6rem 0}
.receipt-row+.receipt-row{border-top:1px dotted var(--border)}
.receipt-row-label{color:var(--ink-500);font-size:.8rem;flex-shrink:0}
.receipt-row-value{font-weight:700;font-size:.85rem;text-align:right;color:var(--ink-900);word-break:break-word}
.receipt-row-value.mono{font-variant-numeric:tabular-nums;letter-spacing:.01em}
.receipt-foot{padding:1rem 1.25rem;border-top:1px dashed var(--border);text-align:center;font-size:.72rem;color:var(--ink-500)}
.receipt-actions{display:flex;gap:.6rem;padding:1.1rem 1.25rem 0}
.receipt-perforation{height:0;border-top:2px dashed var(--border);position:relative}

@media(min-width:768px){.app-shell{max-width:480px}}
