/* Distributor Agency – Bankapp-style design (Wallet & Banking look) */
:root {
    /* Primary: dark blue/purple – headers, primary buttons, brand */
    --app-primary: #3F00F1;
    --app-primary-dark: #3200c4;
    --app-primary-light: #5c2aff;
    /* Lavender – secondary buttons, accents, checkmarks */
    --app-lavender: #A772FD;
    /* Fuchsia – cancel, alerts, spending/expense */
    --app-fuchsia: #FF007E;
    /* Green – success, income, send/receive positive */
    --app-success: #00E676;
    --app-success-dark: #00c766;
    /* Neutrals */
    --app-bg: #F5F5F5;
    --app-card: #FFFFFF;
    --app-text: #333333;
    --app-text-muted: #666666;
    --app-border: #E0E0E0;
    /* UI */
    --app-radius: 1rem;
    --app-radius-sm: 0.75rem;
    --app-radius-lg: 1.25rem;
    --app-shadow: 0 2px 8px rgba(0,0,0,0.06);
    --app-shadow-lg: 0 10px 30px -5px rgba(0,0,0,0.12);
    --app-danger: #FF007E;
    --app-warning: #FF9800;
    --app-info: #A772FD;
    --navbar-height: 56px;
}

* { box-sizing: border-box; }
html { font-size: 16px; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; -webkit-font-smoothing: antialiased; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; color: var(--app-text); }

/* Bootstrap overrides – Bankapp palette */
:root {
    --bs-primary: #3F00F1;
    --bs-primary-rgb: 63, 0, 241;
    --bs-success: #00E676;
    --bs-success-rgb: 0, 230, 118;
    --bs-danger: #FF007E;
    --bs-danger-rgb: 255, 0, 126;
    --bs-info: #A772FD;
    --bs-info-rgb: 167, 114, 253;
}

/* ========== App shell ========== */
body.app-body {
    padding-top: var(--navbar-height);
    padding-bottom: max(1.25rem, env(safe-area-inset-bottom));
    min-height: 100vh;
    background: var(--app-bg);
    color: var(--app-text);
}

.main-content { min-height: calc(100vh - var(--navbar-height)); }

/* ========== Navbar – solid dark blue/purple, white text ========== */
.app-body .navbar {
    min-height: var(--navbar-height);
    padding-top: env(safe-area-inset-top);
    padding-left: max(0.75rem, env(safe-area-inset-left));
    padding-right: max(0.75rem, env(safe-area-inset-right));
    background: var(--app-primary) !important;
    box-shadow: 0 2px 12px rgba(63, 0, 241, 0.35);
}
.app-body .navbar-brand {
    font-weight: 600;
    font-size: 1.15rem;
    letter-spacing: -0.02em;
    color: #fff !important;
}
.app-body .navbar-brand i { opacity: 0.95; color: #fff; }
.app-body .navbar-toggler {
    border: none;
    padding: 0.5rem;
    border-radius: var(--app-radius-sm);
    color: #fff;
}
.app-body .navbar-toggler:focus { box-shadow: 0 0 0 2px rgba(255,255,255,0.4); }

/* ========== Offcanvas – white cards, clean list ========== */
.app-body .offcanvas {
    max-width: 300px;
    border: none;
    box-shadow: -4px 0 24px rgba(0,0,0,0.08);
    background: var(--app-card);
}
.app-body .offcanvas-header {
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--app-border);
    background: var(--app-card);
}
.app-body .offcanvas-title { font-weight: 600; color: var(--app-text); }
.app-body .offcanvas-body { padding: 0; }
.app-body .offcanvas .list-group-item {
    border: none;
    border-bottom: 1px solid var(--app-border);
    padding: 0.875rem 1.25rem;
    font-size: 0.95rem;
    min-height: 48px;
    display: flex;
    align-items: center;
    color: var(--app-text);
    transition: background 0.15s ease;
}
.app-body .offcanvas .list-group-item:last-child { border-bottom: none; }
.app-body .offcanvas .list-group-item i {
    width: 24px;
    text-align: center;
    margin-right: 0.75rem;
    color: var(--app-primary);
    opacity: 0.9;
}
.app-body .offcanvas .list-group-item.active {
    background: rgba(63, 0, 241, 0.08);
    color: var(--app-primary);
    font-weight: 600;
}
.app-body .offcanvas .list-group-item.active i { color: var(--app-primary); }
.app-body .offcanvas .list-group-item.text-danger,
.app-body .offcanvas .list-group-item.text-danger i { color: var(--app-fuchsia) !important; }
.app-body .offcanvas .list-group-item:hover:not(.active) { background: var(--app-bg); }

/* ========== User block in menu – purple gradient ========== */
.menu-user {
    padding: 1rem 1.25rem;
    background: var(--app-primary);
    color: #fff;
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
.menu-user-avatar {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(255,255,255,0.2);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
    color: #fff;
}
.menu-user-name { font-weight: 600; font-size: 0.95rem; }
.menu-user-role { font-size: 0.8rem; opacity: 0.9; }

/* ========== Login page – Bankapp style ========== */
.login-page {
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
    position: relative;
    overflow-x: hidden;
}
.login-bg {
    position: fixed;
    inset: 0;
    background: var(--app-primary);
    z-index: 0;
}
.login-bg::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 20% 80%, rgba(167, 114, 253, 0.25) 0%, transparent 50%),
                radial-gradient(circle at 80% 20%, rgba(255, 0, 126, 0.08) 0%, transparent 40%);
}
.login-wrapper { position: relative; z-index: 1; width: 100%; max-width: 400px; }
.login-card {
    background: var(--app-card);
    border-radius: var(--app-radius-lg);
    padding: 2rem 1.5rem;
    box-shadow: var(--app-shadow-lg);
    border: 1px solid var(--app-border);
}
.login-brand { text-align: center; margin-bottom: 1.75rem; }
.login-brand-icon {
    width: 64px;
    height: 64px;
    margin: 0 auto 1rem;
    background: var(--app-primary);
    border-radius: 1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 1.75rem;
    box-shadow: 0 8px 20px rgba(63, 0, 241, 0.35);
}
.login-title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--app-text);
    margin: 0 0 0.25rem;
    letter-spacing: -0.02em;
}
.login-subtitle { color: var(--app-text-muted); font-size: 0.9rem; margin: 0; }
.login-form .form-floating { margin-bottom: 0.75rem; }
.login-form .form-control {
    border-radius: var(--app-radius-sm);
    border: 1px solid var(--app-border);
    min-height: 52px;
    padding-left: 1rem;
    background: #fff;
}
.login-form .form-control:focus {
    border-color: var(--app-primary);
    box-shadow: 0 0 0 3px rgba(63, 0, 241, 0.12);
}
.login-form label { color: var(--app-text-muted); padding-left: 1rem; }
.login-form .password-toggle {
    position: absolute;
    right: 0.5rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--app-text-muted);
    padding: 0.25rem;
    z-index: 5;
}
.login-form .password-toggle:hover { color: var(--app-primary); }
.login-form .form-floating.position-relative .form-control { padding-right: 2.75rem; }
.login-btn {
    margin-top: 1rem;
    padding: 0.75rem 1.5rem;
    font-weight: 600;
    border-radius: var(--app-radius-sm);
    min-height: 52px;
    background: var(--app-primary);
    border: none;
    color: #fff;
    box-shadow: 0 4px 14px rgba(63, 0, 241, 0.35);
}
.login-btn:hover { background: var(--app-primary-dark); color: #fff; box-shadow: 0 6px 20px rgba(63, 0, 241, 0.4); transform: translateY(-1px); }
.login-alert { border-radius: var(--app-radius-sm); border: none; }
.login-alert.alert-danger { background: rgba(255, 0, 126, 0.1); color: #c4005e; }
.login-footer { text-align: center; margin: 1.25rem 0 0; }
.login-link { color: var(--app-text-muted); font-size: 0.875rem; text-decoration: none; }
.login-link:hover { color: var(--app-primary); }

/* ========== Page layout ========== */
.container-fluid {
    padding-left: max(1rem, env(safe-area-inset-left));
    padding-right: max(1rem, env(safe-area-inset-right));
}
.page-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}
.page-title {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--app-text);
    margin: 0;
    letter-spacing: -0.02em;
}
.welcome-text {
    font-size: 0.9rem;
    color: var(--app-text-muted);
    margin-bottom: 1rem;
}

/* ========== Cards – white, rounded ========== */
.card {
    border: none;
    border-radius: var(--app-radius);
    box-shadow: var(--app-shadow);
    overflow: hidden;
    background: var(--app-card);
}
.card-header {
    background: var(--app-card);
    border-bottom: 1px solid var(--app-border);
    font-weight: 600;
    color: var(--app-text);
    padding: 0.875rem 1rem;
}

/* ========== Stat cards – dashboard (Bankapp balance-card style) ========== */
.stat-card {
    border-radius: var(--app-radius);
    border: none;
    box-shadow: var(--app-shadow);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    overflow: hidden;
    background: var(--app-card);
}
.stat-card:hover, .stat-card:focus-within { transform: translateY(-2px); box-shadow: var(--app-shadow-lg); }
.stat-card .card-body { padding: 1rem; }
.stat-icon {
    width: 48px;
    height: 48px;
    border-radius: var(--app-radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
}
.stat-card .fw-bold { font-size: 1.5rem; color: var(--app-text); }
.stat-card small { color: var(--app-text-muted); font-size: 0.8rem; }
/* Accent colors for stat icons – purple, green, fuchsia, lavender */
.stat-card .bg-primary,
.stat-card .text-primary { color: var(--app-primary) !important; background-color: rgba(63, 0, 241, 0.12) !important; }
.stat-card .bg-success,
.stat-card .text-success { color: var(--app-success) !important; background-color: rgba(0, 230, 118, 0.15) !important; }
.stat-card .bg-warning,
.stat-card .text-warning { color: var(--app-fuchsia) !important; background-color: rgba(255, 0, 126, 0.1) !important; }
.stat-card .bg-info,
.stat-card .text-info { color: var(--app-lavender) !important; background-color: rgba(167, 114, 253, 0.12) !important; }
.stat-card .bg-secondary,
.stat-card .text-secondary { color: var(--app-text-muted) !important; background-color: rgba(0,0,0,0.06) !important; }

/* ========== Buttons ========== */
.btn {
    border-radius: var(--app-radius-sm);
    font-weight: 500;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.btn-primary {
    background: var(--app-primary);
    border: none;
    color: #fff;
    box-shadow: 0 2px 8px rgba(63, 0, 241, 0.3);
}
.btn-primary:hover { background: var(--app-primary-dark); color: #fff; box-shadow: 0 4px 12px rgba(63, 0, 241, 0.35); }
.btn-success { background: var(--app-success); border: none; color: #fff; }
.btn-success:hover { background: var(--app-success-dark); color: #fff; }
.btn-danger, .btn-outline-danger:hover { background: var(--app-fuchsia); border-color: var(--app-fuchsia); color: #fff; }
.btn-outline-danger { border-color: var(--app-fuchsia); color: var(--app-fuchsia); }
.btn-outline-primary { border-color: var(--app-primary); color: var(--app-primary); }
.btn-outline-primary:hover { background: var(--app-primary); color: #fff; }
.btn-lg { min-height: 52px; padding: 0.75rem 1.5rem; }
.form-control, .form-select {
    border-radius: var(--app-radius-sm);
    border: 1px solid var(--app-border);
    min-height: 44px;
    background: #fff;
}
.form-control:focus, .form-select:focus {
    border-color: var(--app-primary);
    box-shadow: 0 0 0 3px rgba(63, 0, 241, 0.1);
}

/* ========== List groups ========== */
.list-group-item {
    min-height: 48px;
    border-color: var(--app-border);
    padding: 0.875rem 1rem;
    color: var(--app-text);
    background: var(--app-card);
}
.list-group-item-action:active { background: var(--app-bg); }
.list-group-item .fw-medium { color: var(--app-text); }
.badge { font-weight: 500; border-radius: 0.5rem; padding: 0.35em 0.65em; }
.badge.bg-success { background: var(--app-success) !important; }
.badge.bg-warning { background: var(--app-fuchsia) !important; }
.badge.bg-info { background: var(--app-lavender) !important; }

/* ========== Empty state ========== */
.empty-state {
    text-align: center;
    padding: 2.5rem 1.5rem;
    color: var(--app-text-muted);
}
.empty-state-icon {
    font-size: 2.5rem;
    opacity: 0.4;
    margin-bottom: 0.75rem;
    color: var(--app-primary);
}
.empty-state p { margin: 0 0 0.5rem; font-size: 0.95rem; }
.empty-state a { font-weight: 500; color: var(--app-primary); }

/* ========== Alerts ========== */
.alert { border-radius: var(--app-radius-sm); border: none; }
.alert-danger { background: rgba(255, 0, 126, 0.1); color: #b8006b; }
.alert-info { background: rgba(167, 114, 253, 0.12); color: #6b2fc9; }
.alert-success { background: rgba(0, 230, 118, 0.15); color: #00a85c; }

/* ========== Toastr ========== */
.toast-top-right { top: calc(var(--navbar-height) + 0.5rem); right: 0.75rem; }
.toast { border-radius: var(--app-radius-sm); box-shadow: var(--app-shadow-lg); }

/* ========== Payments / success amounts ========== */
.text-success { color: var(--app-success) !important; }

/* ========== Desktop notice ========== */
@media (min-width: 992px) {
    body.app-body::before {
        content: "This app is optimized for mobile and tablet.";
        display: block;
        text-align: center;
        padding: 0.75rem 1rem;
        background: rgba(167, 114, 253, 0.15);
        color: #4a148c;
        font-size: 0.9rem;
        font-weight: 500;
    }
}
