:root {
    --sidebar-width: 260px;
    --primary: #4a6cf7;
    --primary-dark: #3854d6;
    --primary-soft: #eef1ff;
    --content-bg: #f4f6fb;
    --card-bg: #ffffff;
    --input-bg: #f4f6fb;
    --border-color: #eaecf3;
    --text-muted: #8a94a6;
    --text-dark: #1f2430;
    --sidebar-link-color: #4b5468;
    --sidebar-icon-color: #9aa2b1;
    --overlay-color: rgba(15, 18, 30, .4);

    --shadow-sm: 0 2px 6px rgba(20, 25, 40, .06);
    --shadow-md: 0 10px 24px rgba(20, 25, 40, .09);
    --shadow-lg: 0 20px 48px rgba(20, 25, 40, .16);

    --badge-secondary-bg: #eef0f4; --badge-secondary-text: #5b6577;
    --badge-info-bg: #e3f3fd; --badge-info-text: #1385c7;
    --badge-warning-bg: #fff4de; --badge-warning-text: #b5810a;
    --badge-success-bg: #e4f9ee; --badge-success-text: #1a9e5c;
    --badge-danger-bg: #fde8ec; --badge-danger-text: #d4326e;
}

[data-bs-theme="dark"] {
    --primary-soft: rgba(74, 108, 247, .18);
    --content-bg: #14161c;
    --card-bg: #1c1f27;
    --input-bg: #23262f;
    --border-color: #2b2f3a;
    --text-muted: #8e96a8;
    --text-dark: #e8eaf0;
    --sidebar-link-color: #b7bdcc;
    --sidebar-icon-color: #7d8496;
    --overlay-color: rgba(0, 0, 0, .6);

    --shadow-sm: 0 2px 6px rgba(0, 0, 0, .35);
    --shadow-md: 0 12px 28px rgba(0, 0, 0, .45);
    --shadow-lg: 0 24px 56px rgba(0, 0, 0, .55);

    --badge-secondary-bg: rgba(148, 158, 179, .18); --badge-secondary-text: #c3c9d6;
    --badge-info-bg: rgba(30, 160, 220, .18); --badge-info-text: #6fc6f2;
    --badge-warning-bg: rgba(230, 170, 30, .18); --badge-warning-text: #f0c25e;
    --badge-success-bg: rgba(30, 190, 120, .18); --badge-success-text: #6de3ac;
    --badge-danger-bg: rgba(220, 60, 100, .2); --badge-danger-text: #f28cad;
}

* {
    box-sizing: border-box;
}

body {
    background-color: var(--content-bg);
    color: var(--text-dark);
}

a {
    text-decoration: none;
}

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

/* Sidebar */
.sidebar {
    width: var(--sidebar-width);
    flex-shrink: 0;
    background: var(--card-bg);
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 0;
    height: 100vh;
    transition: margin-left .2s ease, background-color .2s ease;
}

.sidebar-brand {
    padding: 1.5rem 1.5rem 1rem;
}

.sidebar-logo {
    max-width: 150px;
    height: auto;
}

.sidebar-logo-dark {
    display: none;
}

[data-bs-theme="dark"] .sidebar-logo-light {
    display: none;
}

[data-bs-theme="dark"] .sidebar-logo-dark {
    display: block;
}

.sidebar-nav {
    flex: 1 1 auto;
    padding: .5rem .75rem;
    overflow-y: auto;
}

.sidebar-footer {
    padding: .75rem;
    border-top: 1px solid var(--border-color);
}

.sidebar-link {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .65rem .85rem;
    margin-bottom: .15rem;
    border-radius: .6rem;
    color: var(--sidebar-link-color);
    font-weight: 500;
    font-size: .92rem;
    transition: box-shadow .15s ease, background-color .15s ease;
}

.sidebar-link i {
    font-size: 1.05rem;
    width: 1.2rem;
    text-align: center;
    color: var(--sidebar-icon-color);
}

.sidebar-link:hover,
.sidebar-link.active {
    background: var(--primary-soft);
    color: var(--primary-dark);
}

.sidebar-link.active {
    box-shadow: var(--shadow-sm);
}

[data-bs-theme="dark"] .sidebar-link:hover,
[data-bs-theme="dark"] .sidebar-link.active {
    color: #8ea1ff;
}

.sidebar-link:hover i,
.sidebar-link.active i {
    color: var(--primary);
}

/* Topbar */
.app-main {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.topbar {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: .9rem 1.5rem;
    background: var(--card-bg);
    border-bottom: 1px solid var(--border-color);
    box-shadow: var(--shadow-sm);
    position: sticky;
    top: 0;
    z-index: 10;
}

.sidebar-toggle {
    display: none;
    border: none;
    background: transparent;
    font-size: 1.4rem;
    color: var(--text-dark);
    line-height: 1;
}

.theme-toggle {
    border: 1px solid var(--border-color);
    background: var(--input-bg);
    color: var(--text-dark);
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.05rem;
    flex-shrink: 0;
    box-shadow: var(--shadow-sm);
}

.theme-toggle:hover {
    border-color: var(--primary);
    color: var(--primary);
}

.theme-toggle .bi-sun { display: none; }
[data-bs-theme="dark"] .theme-toggle .bi-moon { display: none; }
[data-bs-theme="dark"] .theme-toggle .bi-sun { display: inline; }

.topbar-search {
    flex: 1 1 auto;
    max-width: 420px;
    position: relative;
}

.topbar-search-btn {
    position: absolute;
    left: .3rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--text-muted);
    background: transparent;
    border: none;
    padding: .4rem .6rem;
    display: flex;
    align-items: center;
    cursor: pointer;
}

.topbar-search-btn:hover {
    color: var(--primary);
}

.topbar-search input {
    width: 100%;
    border: 1px solid var(--border-color);
    background: var(--input-bg);
    color: var(--text-dark);
    border-radius: .6rem;
    padding: .55rem .9rem .55rem 2.3rem;
    font-size: .9rem;
}

.topbar-search input:focus {
    outline: none;
    border-color: var(--primary);
    background: var(--card-bg);
    box-shadow: var(--shadow-sm);
}

.topbar-user {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: .6rem;
}

.avatar-circle {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: var(--primary);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: .95rem;
    flex-shrink: 0;
    box-shadow: var(--shadow-sm);
}

.topbar-username {
    font-weight: 600;
    font-size: .9rem;
    color: var(--text-dark);
}

.content-area {
    padding: 1.75rem;
}

/* Cards */
.card-stat,
.table-responsive {
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    border-radius: .9rem;
    box-shadow: var(--shadow-md);
}

.card-stat .display-6 {
    font-weight: 700;
}

.table-responsive {
    padding: .25rem;
}

.table {
    color: var(--text-dark);
}

.table thead th {
    color: var(--text-muted);
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-weight: 600;
    border-bottom-width: 1px;
}

.table td {
    vertical-align: middle;
}

/* Buttons */
.btn {
    border-radius: .6rem;
    font-weight: 500;
}

.btn-primary {
    background-color: var(--primary);
    border-color: var(--primary);
    box-shadow: 0 6px 14px rgba(74, 108, 247, .3);
}

.btn-primary:hover,
.btn-primary:focus {
    background-color: var(--primary-dark);
    border-color: var(--primary-dark);
    box-shadow: 0 8px 18px rgba(74, 108, 247, .4);
}

.btn-outline-primary {
    color: var(--primary);
    border-color: var(--primary);
}

.btn-outline-primary:hover {
    background-color: var(--primary);
    border-color: var(--primary);
}

.btn-outline-secondary,
.btn-outline-danger {
    box-shadow: var(--shadow-sm);
}

/* Modals and dropdowns get extra lift */
.modal-content {
    box-shadow: var(--shadow-lg);
    border: 1px solid var(--border-color);
}

/* Soft pill badges */
.badge {
    font-weight: 600;
    border-radius: 50px;
    padding: .4em .8em;
}

.badge-interes {
    display: inline-block;
    min-width: 1.6rem;
}

.badge-soft-secondary { background: var(--badge-secondary-bg); color: var(--badge-secondary-text); }
.badge-soft-info { background: var(--badge-info-bg); color: var(--badge-info-text); }
.badge-soft-primary { background: var(--primary-soft); color: var(--primary-dark); }
[data-bs-theme="dark"] .badge-soft-primary { color: #8ea1ff; }
.badge-soft-warning { background: var(--badge-warning-bg); color: var(--badge-warning-text); }
.badge-soft-success { background: var(--badge-success-bg); color: var(--badge-success-text); }
.badge-soft-danger { background: var(--badge-danger-bg); color: var(--badge-danger-text); }

.nav-tabs .nav-link.active {
    font-weight: 600;
}

.text-truncate-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Reminder banner */
.reminder-banner {
    background: var(--badge-warning-bg);
    border: 1px solid rgba(181, 129, 10, .25);
    color: var(--badge-warning-text);
    border-radius: .9rem;
    padding: 1rem 1.25rem;
    margin-bottom: 1.25rem;
    box-shadow: var(--shadow-sm);
}

.reminder-banner h2 {
    font-size: .95rem;
    font-weight: 700;
    margin-bottom: .5rem;
}

.reminder-banner ul {
    margin: 0;
    padding-left: 1.1rem;
}

.text-overdue {
    color: var(--badge-danger-text) !important;
    font-weight: 600;
}

/* Responsive sidebar */
@media (max-width: 991.98px) {
    .sidebar {
        position: fixed;
        left: 0;
        z-index: 1040;
        margin-left: calc(-1 * var(--sidebar-width));
        transition: margin-left .2s ease, box-shadow .2s ease;
    }

    .sidebar.open {
        margin-left: 0;
        box-shadow: var(--shadow-lg);
    }

    .sidebar.open::after {
        content: '';
        position: fixed;
        inset: 0 0 0 var(--sidebar-width);
        background: var(--overlay-color);
        z-index: -1;
    }

    .sidebar-toggle {
        display: inline-flex;
        align-items: center;
    }

    .content-area {
        padding: 1.25rem;
    }
}

/* Responsive tables -> stacked cards on small screens */
@media (max-width: 767.98px) {
    .content-area {
        padding: .85rem;
    }

    .topbar {
        padding: .75rem 1rem;
        gap: .6rem;
    }

    .topbar-search input {
        padding-left: 2.1rem;
        font-size: .85rem;
    }

    .table-responsive table,
    .table-responsive thead,
    .table-responsive tbody,
    .table-responsive th,
    .table-responsive td,
    .table-responsive tr {
        display: block;
    }

    .table-responsive thead {
        position: absolute;
        top: -9999px;
        left: -9999px;
    }

    .table-responsive tbody tr {
        margin: .75rem;
        border: 1px solid var(--border-color);
        border-radius: .75rem;
        box-shadow: var(--shadow-sm);
        overflow: hidden;
    }

    .table-responsive td {
        border: none;
        border-bottom: 1px solid var(--border-color);
        position: relative;
        padding: .55rem .75rem .55rem 46%;
        text-align: right;
        min-height: 2.4rem;
    }

    .table-responsive td:last-child {
        border-bottom: none;
    }

    .table-responsive td::before {
        content: attr(data-label);
        position: absolute;
        left: .75rem;
        top: .55rem;
        width: 42%;
        text-align: left;
        font-weight: 600;
        font-size: .75rem;
        text-transform: uppercase;
        letter-spacing: .03em;
        color: var(--text-muted);
    }

    .table-responsive td.text-end {
        text-align: right;
    }

    .table-responsive td.text-end > * {
        margin-top: .25rem;
    }
}
