:root {
    --nova-primary: #3f46a8;
    --nova-primary-rgb: 63, 70, 168;
    --nova-primary-contrast: #ffffff;
    --nova-primary-deep: #171d4b;
    --nova-primary-deep-rgb: 23, 29, 75;
    --nova-primary-dark: #202661;
    --nova-primary-bright: #3978f6;
    --nova-primary-bright-rgb: 57, 120, 246;
    --nova-primary-hover: #343b99;
    --nova-primary-hover-bright: #2869eb;
    --nova-indigo-950: var(--nova-primary-deep);
    --nova-indigo-900: var(--nova-primary-dark);
    --nova-indigo-700: var(--nova-primary);
    --nova-blue: var(--nova-primary-bright);
    --nova-teal: #18a999;
    --nova-coral: #f26b5e;
    --nova-gold: #f2b84b;
    --nova-ink: #172033;
    --nova-muted: #68738a;
    --nova-surface: #ffffff;
    --nova-canvas: #f4f7fc;
    --nova-border: #e4e9f2;
    --nova-shadow-sm: 0 4px 16px rgba(var(--nova-primary-deep-rgb), .06);
    --nova-shadow: 0 14px 38px rgba(var(--nova-primary-deep-rgb), .10);
    --nova-shadow-lg: 0 24px 60px rgba(var(--nova-primary-deep-rgb), .16);
    --nova-radius: 1rem;
    --bs-primary: var(--nova-primary);
    --bs-primary-rgb: var(--nova-primary-rgb);
    --bs-body-font-size: .9375rem;
    --bs-link-color: var(--nova-primary);
    --bs-link-hover-color: var(--nova-primary-hover);
}

html {
    scroll-behavior: smooth;
}

body {
    color: var(--nova-ink);
    font-family: "Instrument Sans", Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: var(--bs-body-font-size);
}

body.nova-app-shell {
    background: #f5f7fb;
}

body.nova-app-shell::before {
    background: linear-gradient(90deg, var(--nova-blue), var(--nova-teal), var(--nova-gold), var(--nova-coral));
    content: "";
    height: 3px;
    left: 0;
    position: fixed;
    right: 0;
    top: 0;
    z-index: 1045;
}

/* Application shell */
.nova-app-shell .sidebar,
.nova-app-shell .sidebar-content {
    background: linear-gradient(178deg, var(--nova-indigo-950) 0%, var(--nova-indigo-900) 58%, #173c64 100%);
}

.nova-app-shell .sidebar {
    box-shadow: 10px 0 35px rgba(var(--nova-primary-deep-rgb), .12);
}

.nova-app-shell .sidebar-brand {
    align-items: center;
    color: #fff;
    display: flex;
    font-size: 1.15rem;
    gap: .7rem;
    letter-spacing: -.02em;
    padding-bottom: 1.35rem;
    padding-top: 1.4rem;
}

.nova-brand-mark {
    align-items: center;
    background: linear-gradient(135deg, var(--nova-blue), var(--nova-teal));
    border: 1px solid rgba(255, 255, 255, .25);
    border-radius: .75rem;
    box-shadow: 0 7px 18px rgba(24, 169, 153, .22);
    display: inline-flex;
    font-size: .9rem;
    font-weight: 700;
    height: 2rem;
    justify-content: center;
    width: 2rem;
}

.nova-app-shell .sidebar-nav {
    padding: .35rem .75rem 1.5rem;
}

.nova-app-shell .sidebar-link,
.nova-app-shell a.sidebar-link {
    background: transparent;
    border: 1px solid transparent;
    border-radius: .75rem;
    color: rgba(235, 242, 255, .73);
    margin: .15rem 0;
    padding: .72rem .85rem;
    position: relative;
    transition: background-color .22s ease, border-color .22s ease, color .22s ease, transform .22s ease;
}

.nova-app-shell .sidebar-link:hover,
.nova-app-shell a.sidebar-link:hover {
    background: rgba(255, 255, 255, .075);
    border-color: rgba(255, 255, 255, .08);
    color: #fff;
    transform: translateX(3px);
}

.nova-app-shell .sidebar-link i,
.nova-app-shell .sidebar-link svg,
.nova-app-shell a.sidebar-link i,
.nova-app-shell a.sidebar-link svg {
    color: #83c8ff;
    transition: color .22s ease, transform .22s ease;
}

.nova-app-shell .sidebar-link:hover svg,
.nova-app-shell .sidebar-link:hover i {
    color: #6ee7d8;
    transform: scale(1.08);
}

.nova-app-shell .sidebar-item.active > .sidebar-link {
    background: linear-gradient(100deg, rgba(var(--nova-primary-bright-rgb), .28), rgba(24, 169, 153, .17));
    border-color: rgba(116, 212, 227, .2);
    box-shadow: inset 3px 0 0 #5ee2cf, 0 7px 18px rgba(8, 17, 56, .15);
    color: #fff;
}

.nova-app-shell .sidebar-item .collapse .sidebar-link {
    font-size: .9rem;
    margin-left: 1rem;
    padding-bottom: .55rem;
    padding-top: .55rem;
}

.nova-app-shell .navbar-bg {
    backdrop-filter: blur(16px);
    background: rgba(255, 255, 255, .88);
    border-bottom: 1px solid rgba(228, 233, 242, .85);
    box-shadow: 0 7px 24px rgba(var(--nova-primary-deep-rgb), .05);
}

.nova-app-shell .navbar {
    overflow: visible;
    position: relative;
    z-index: 1035;
}

.nova-app-shell .navbar .dropdown-menu {
    z-index: 1040;
}

.nova-app-shell .sidebar-toggle {
    border-radius: .7rem;
    transition: background-color .2s ease, transform .2s ease;
}

.nova-app-shell .sidebar-toggle:hover {
    background: rgba(var(--nova-primary-rgb), .07);
    transform: scale(1.04);
}

.nova-app-shell .content {
    background: transparent;
}

.nova-app-shell .main {
    background: #f5f7fb;
}

.nova-app-shell .content > .container-fluid {
    animation: nova-page-in .45s cubic-bezier(.22, 1, .36, 1) both;
}

.nova-app-shell .footer {
    background: rgba(255, 255, 255, .72);
    border-top: 1px solid rgba(228, 233, 242, .8);
}

/* Cards and content */
.card {
    background: rgba(255, 255, 255, .96);
    border: 1px solid rgba(228, 233, 242, .9);
    border-radius: var(--nova-radius);
    box-shadow: var(--nova-shadow-sm);
    transition: border-color .25s ease, box-shadow .25s ease, transform .25s ease;
}

.nova-app-shell .card:hover {
    border-color: rgba(var(--nova-primary-rgb), .18);
    box-shadow: var(--nova-shadow);
    transform: none;
}

.nova-app-shell .nova-kpi-grid .card:hover {
    transform: translateY(-2px);
}

.card-header {
    background: linear-gradient(120deg, rgba(var(--nova-primary-rgb), .055), rgba(24, 169, 153, .035));
    border-bottom: 1px solid var(--nova-border);
    padding: 1rem 1.25rem;
}

.card-title,
.card-header h1,
.card-header h2,
.card-header h3,
.card-header h4,
.card-header h5,
.card-header h6 {
    color: var(--nova-indigo-950);
    letter-spacing: -.015em;
}

/* Dashboard highlights */
.nova-page-heading {
    align-items: end;
    display: flex;
    justify-content: space-between;
    margin-bottom: .25rem;
}

.nova-page-kicker {
    color: var(--nova-indigo-700);
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .1em;
    margin-bottom: .25rem;
    text-transform: uppercase;
}

.nova-kpi-grid > [class*="col-"] > .card {
    isolation: isolate;
    min-height: 7.2rem;
    overflow: hidden;
    position: relative;
}

.nova-kpi-grid > [class*="col-"] > .card::before {
    background: linear-gradient(180deg, var(--nova-indigo-700), var(--nova-blue));
    border-radius: 0 0 0 .6rem;
    content: "";
    height: 3.2rem;
    position: absolute;
    right: 0;
    top: 0;
    width: 4px;
}

.nova-kpi-grid > [class*="col-"] > .card::after {
    background: rgba(var(--nova-primary-bright-rgb), .055);
    border-radius: 50%;
    content: "";
    height: 7rem;
    position: absolute;
    right: -3.2rem;
    top: -3.5rem;
    width: 7rem;
    z-index: -1;
}

.nova-kpi-grid > [class*="col-"]:nth-child(4n + 2) > .card::before {
    background: linear-gradient(180deg, #138c80, var(--nova-teal));
}

.nova-kpi-grid > [class*="col-"]:nth-child(4n + 2) > .card::after {
    background: rgba(24, 169, 153, .065);
}

.nova-kpi-grid > [class*="col-"]:nth-child(4n + 3) > .card::before {
    background: linear-gradient(180deg, #df9b28, var(--nova-gold));
}

.nova-kpi-grid > [class*="col-"]:nth-child(4n + 3) > .card::after {
    background: rgba(242, 184, 75, .08);
}

.nova-kpi-grid > [class*="col-"]:nth-child(4n + 4) > .card::before {
    background: linear-gradient(180deg, #d65550, var(--nova-coral));
}

.nova-kpi-grid > [class*="col-"]:nth-child(4n + 4) > .card::after {
    background: rgba(242, 107, 94, .065);
}

.nova-kpi-grid .card-body > .text-muted:last-child {
    align-items: center;
    background: rgba(var(--nova-primary-rgb), .09);
    border-radius: .85rem;
    color: var(--nova-indigo-700) !important;
    display: flex;
    height: 3rem;
    justify-content: center;
    width: 3rem;
}

.nova-kpi-grid > [class*="col-"]:nth-child(4n + 2) .card-body > .text-muted:last-child {
    background: rgba(24, 169, 153, .1);
    color: #138c80 !important;
}

.nova-kpi-grid > [class*="col-"]:nth-child(4n + 3) .card-body > .text-muted:last-child {
    background: rgba(242, 184, 75, .14);
    color: #b4730b !important;
}

.nova-kpi-grid > [class*="col-"]:nth-child(4n + 4) .card-body > .text-muted:last-child {
    background: rgba(242, 107, 94, .1);
    color: #cf514b !important;
}

.nova-kpi-grid > [class*="col-"] {
    animation: nova-card-in .5s cubic-bezier(.22, 1, .36, 1) both;
}

.nova-kpi-grid > [class*="col-"]:nth-child(2) { animation-delay: .05s; }
.nova-kpi-grid > [class*="col-"]:nth-child(3) { animation-delay: .1s; }
.nova-kpi-grid > [class*="col-"]:nth-child(4) { animation-delay: .15s; }

/* Loan details */
.loan-show-page .card-body {
    font-size: 1rem;
}

.loan-show-page .card .small {
    font-size: .9rem;
}

.loan-show-page .card .fs-5 {
    font-size: 1.35rem !important;
}

.loan-show-page .card-title.fs-6,
.loan-show-page .nav-tabs .nav-link {
    font-size: 1.05rem !important;
}

.loan-show-page .table {
    font-size: .95rem;
}

.loan-show-page .dropdown-menu {
    font-size: .95rem;
    z-index: 1040;
}

.modal {
    --bs-modal-zindex: 1055;
}

.modal-backdrop {
    --bs-backdrop-zindex: 1050;
}

h1, h2, h3, h4, h5, h6 {
    color: var(--nova-ink);
    font-weight: 650;
    letter-spacing: -.025em;
}

.text-muted {
    color: var(--nova-muted) !important;
}

/* Buttons */
.btn {
    border-radius: .65rem;
    font-weight: 600;
    letter-spacing: .005em;
    transition: box-shadow .2s ease, transform .2s ease, background-color .2s ease, border-color .2s ease;
}

.btn:hover {
    transform: translateY(-1px);
}

.btn:active {
    transform: translateY(0) scale(.98);
}

.btn-primary {
    background: linear-gradient(135deg, var(--nova-indigo-700), var(--nova-blue));
    border-color: transparent;
    box-shadow: 0 7px 16px rgba(var(--nova-primary-rgb), .22);
    color: var(--nova-primary-contrast);
}

.btn-primary:hover,
.btn-primary:focus {
    background: linear-gradient(135deg, var(--nova-primary-hover), var(--nova-primary-hover-bright));
    border-color: transparent;
    box-shadow: 0 10px 22px rgba(var(--nova-primary-rgb), .3);
    color: var(--nova-primary-contrast);
}

.btn-success {
    background: linear-gradient(135deg, #138c80, var(--nova-teal));
    border-color: transparent;
}

.btn-warning {
    background: linear-gradient(135deg, #efa52f, var(--nova-gold));
    border-color: transparent;
    color: #33250d;
}

.btn-danger {
    background: linear-gradient(135deg, #dc4d55, var(--nova-coral));
    border-color: transparent;
}

.btn-info {
    background: linear-gradient(135deg, #238bbd, #40b9ce);
    border-color: transparent;
    color: #fff;
}

.btn-outline-primary {
    border-color: rgba(var(--nova-primary-rgb), .5);
    color: var(--nova-indigo-700);
}

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

/* Forms */
.form-control,
.form-select {
    background-color: #fbfcff;
    border-color: #dce3ee;
    border-radius: .65rem;
    min-height: 2.65rem;
    transition: background-color .2s ease, border-color .2s ease, box-shadow .2s ease;
}

.form-control:hover,
.form-select:hover {
    border-color: #b7c3d8;
}

.form-control:focus,
.form-select:focus {
    background-color: #fff;
    border-color: rgba(var(--nova-primary-rgb), .75);
    box-shadow: 0 0 0 .23rem rgba(var(--nova-primary-rgb), .11);
}

.form-label {
    color: #364057;
    font-weight: 600;
}

.form-check-input:checked {
    background-color: var(--nova-indigo-700);
    border-color: var(--nova-indigo-700);
}

/* Tables and data grids */
.table-responsive {
    border-radius: .8rem;
}

.table {
    --bs-table-bg: transparent;
    --bs-table-hover-bg: rgba(var(--nova-primary-bright-rgb), .045);
    border-color: var(--nova-border);
}

.table > thead > tr > th,
.table .table-light > tr > th,
.table > .table-light > tr > th {
    background: linear-gradient(180deg, #f7f9fd, #f1f5fb);
    border-bottom-color: #dfe5f0;
    color: #59647b;
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .045em;
    padding-bottom: .85rem;
    padding-top: .85rem;
    text-transform: uppercase;
}

.table > tbody > tr {
    transition: background-color .18s ease, box-shadow .18s ease;
}

.table > tbody > tr:hover {
    box-shadow: inset 3px 0 0 rgba(24, 169, 153, .65);
}

.table > tbody > tr > td {
    padding-bottom: .8rem;
    padding-top: .8rem;
}

.dt-container .dt-input {
    border: 1px solid #dce3ee !important;
    border-radius: .55rem !important;
    padding: .42rem .65rem !important;
}

.dt-container .dt-paging .dt-paging-button {
    border-radius: .5rem !important;
    transition: background-color .2s ease, color .2s ease !important;
}

.dt-container .dt-paging .dt-paging-button.current,
.dt-container .dt-paging .dt-paging-button.current:hover {
    background: var(--nova-indigo-700) !important;
    border-color: var(--nova-indigo-700) !important;
    color: #fff !important;
}

/* Status and feedback */
.badge {
    border-radius: 999px;
    font-weight: 650;
    letter-spacing: .015em;
    padding: .38em .72em;
}

.alert {
    border: 0;
    border-left: 4px solid currentColor;
    border-radius: .8rem;
    box-shadow: var(--nova-shadow-sm);
}

.alert-success {
    background: #eafaf6;
    color: #10796f;
}

.alert-danger {
    background: #fff0ef;
    color: #b94349;
}

.alert-warning {
    background: #fff8e8;
    color: #986414;
}

.alert-info {
    background: #eaf7fc;
    color: #217999;
}

.dropdown-menu {
    border: 1px solid var(--nova-border);
    border-radius: .8rem;
    box-shadow: var(--nova-shadow);
    padding: .5rem;
}

.dropdown-item {
    border-radius: .5rem;
}

.dropdown-item:hover {
    background: rgba(var(--nova-primary-rgb), .07);
    color: var(--nova-indigo-700);
}

/* Profile menu */
.nova-profile {
    position: relative;
    z-index: 1060;
}

.nova-profile-toggle {
    border: 1px solid transparent;
    border-radius: .8rem;
    gap: .65rem;
    padding: .42rem .65rem !important;
    text-decoration: none;
    transition: background-color .2s ease, border-color .2s ease, box-shadow .2s ease;
}

.nova-profile-toggle::after {
    border-color: var(--nova-muted);
    margin-left: .2rem;
}

.nova-profile-toggle:hover,
.nova-profile-toggle[aria-expanded="true"] {
    background: rgba(var(--nova-primary-rgb), .055);
    border-color: rgba(var(--nova-primary-rgb), .1);
    box-shadow: 0 5px 14px rgba(var(--nova-primary-deep-rgb), .06);
}

.nova-profile-avatar {
    border: 2px solid #fff;
    border-radius: 50%;
    box-shadow: 0 0 0 2px rgba(var(--nova-primary-rgb), .14), 0 5px 12px rgba(var(--nova-primary-deep-rgb), .12);
    flex: 0 0 auto;
    height: 2.35rem;
    object-fit: cover;
    width: 2.35rem;
}

.nova-profile-initials {
    align-items: center;
    background: linear-gradient(135deg, var(--nova-indigo-700), var(--nova-teal));
    color: #fff;
    display: inline-flex;
    font-size: .82rem;
    font-weight: 700;
    justify-content: center;
    letter-spacing: .03em;
}

.nova-profile-copy {
    line-height: 1.15;
    max-width: 11rem;
    min-width: 0;
}

.nova-profile-name,
.nova-profile-role {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nova-profile-name {
    color: var(--nova-ink);
    font-size: .94rem;
    font-weight: 650;
}

.nova-profile-role {
    color: var(--nova-muted);
    font-size: .74rem;
    margin-top: .2rem;
}

.nova-profile-menu {
    border-top: 3px solid var(--nova-teal);
    margin-top: .7rem !important;
    min-width: 19rem;
    overflow: visible;
    padding: .55rem;
}

.nova-profile-header {
    align-items: center;
    background: linear-gradient(120deg, rgba(var(--nova-primary-rgb), .07), rgba(24, 169, 153, .055));
    border-radius: .65rem;
    display: flex;
    gap: .85rem;
    padding: .85rem;
}

.nova-profile-avatar-lg {
    height: 3rem;
    width: 3rem;
}

.nova-profile .min-w-0 {
    min-width: 0;
}

.nova-profile-header-name,
.nova-profile-email {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nova-profile-header-name {
    color: var(--nova-indigo-950);
    font-size: .92rem;
    font-weight: 700;
}

.nova-profile-email {
    color: var(--nova-muted);
    font-size: .8rem;
}

.nova-profile-menu .dropdown-item {
    padding: .65rem .7rem;
}

.nova-profile-menu-icon {
    align-items: center;
    background: rgba(var(--nova-primary-rgb), .08);
    border-radius: .55rem;
    color: var(--nova-indigo-700);
    display: inline-flex;
    flex: 0 0 auto;
    height: 2rem;
    justify-content: center;
    width: 2rem;
}

.nova-profile-menu-icon svg {
    height: 1rem;
    width: 1rem;
}

.nova-profile-menu-icon-danger {
    background: rgba(242, 107, 94, .1);
    color: #cf514b;
}

/* Authentication pages */
body.nova-auth-page {
    background:
        radial-gradient(circle at 14% 16%, rgba(var(--nova-primary-bright-rgb), .17), transparent 28rem),
        radial-gradient(circle at 88% 82%, rgba(24, 169, 153, .16), transparent 27rem),
        linear-gradient(145deg, #f7f8ff 0%, #edf6fb 52%, #f8f4ff 100%) !important;
    min-height: 100vh;
    overflow-x: hidden;
    position: relative;
}

body.nova-auth-page::before,
body.nova-auth-page::after {
    border: 1px solid rgba(255, 255, 255, .6);
    border-radius: 50%;
    content: "";
    filter: blur(1px);
    pointer-events: none;
    position: fixed;
}

body.nova-auth-page::before {
    animation: nova-float 9s ease-in-out infinite;
    background: linear-gradient(135deg, rgba(var(--nova-primary-rgb), .11), rgba(var(--nova-primary-bright-rgb), .05));
    height: 18rem;
    left: -6rem;
    top: 14%;
    width: 18rem;
}

body.nova-auth-page::after {
    animation: nova-float 11s ease-in-out infinite reverse;
    background: linear-gradient(135deg, rgba(24, 169, 153, .13), rgba(242, 184, 75, .06));
    bottom: -7rem;
    height: 22rem;
    right: -7rem;
    width: 22rem;
}

.nova-auth-page main {
    position: relative;
    z-index: 1;
}

.nova-auth-page .d-table-cell.align-middle {
    animation: nova-auth-in .65s cubic-bezier(.22, 1, .36, 1) both;
}

.nova-auth-page .card {
    backdrop-filter: blur(18px);
    background: rgba(255, 255, 255, .9);
    border: 1px solid rgba(255, 255, 255, .9);
    box-shadow: var(--nova-shadow-lg);
    overflow: hidden;
}

.nova-auth-page .card::before {
    background: linear-gradient(90deg, var(--nova-indigo-700), var(--nova-blue), var(--nova-teal), var(--nova-gold));
    content: "";
    height: 4px;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
}

.nova-auth-page img[width="100"] {
    filter: drop-shadow(0 9px 18px rgba(var(--nova-primary-rgb), .16));
    transition: transform .3s ease;
}

.nova-auth-page img[width="100"]:hover {
    transform: translateY(-3px) rotate(-2deg);
}

.nova-auth-page .lead {
    color: var(--nova-muted);
    font-size: 1rem;
}

@keyframes nova-page-in {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: none;
    }
}

@keyframes nova-auth-in {
    from {
        opacity: 0;
        transform: translateY(18px) scale(.985);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes nova-card-in {
    from {
        opacity: 0;
        transform: translateY(14px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes nova-float {
    0%, 100% {
        transform: translate3d(0, 0, 0);
    }
    50% {
        transform: translate3d(0, -18px, 0);
    }
}

@media (max-width: 767.98px) {
    .nova-app-shell .content {
        padding-left: 1rem;
        padding-right: 1rem;
    }

    .nova-auth-page .card-body {
        padding: 1.15rem;
    }

    .nova-profile-menu {
        min-width: min(19rem, calc(100vw - 2rem));
    }
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
    }
}
