:root {
    --core-bg: #f3f5f7;
    --core-surface: #ffffff;
    --core-surface-muted: #f7f8fa;
    --core-ink: #17212b;
    --core-muted: #647384;
    --core-border: #dfe5eb;
    --core-primary: #315fdf;
    --core-primary-dark: #2449ad;
    --core-success: #177c55;
    --core-danger: #b73948;
    --core-warning: #9a6500;
    --core-radius-sm: 0.625rem;
    --core-radius: 1rem;
    --core-radius-lg: 1.5rem;
    --core-shadow-sm: 0 0.25rem 1rem rgba(23, 33, 43, 0.06);
    --core-shadow: 0 1rem 3rem rgba(23, 33, 43, 0.09);
    --core-transition: 160ms ease;
    --bs-primary: var(--core-primary);
    --bs-primary-rgb: 49, 95, 223;
    --bs-body-color: var(--core-ink);
    --bs-body-bg: var(--core-bg);
    --bs-border-color: var(--core-border);
    --bs-border-radius: var(--core-radius-sm);
    --bs-border-radius-lg: var(--core-radius);
    --bs-link-color: var(--core-primary);
    --bs-link-hover-color: var(--core-primary-dark);
    color-scheme: light;
}

html {
    background: var(--core-bg);
}

body {
    min-width: 20rem;
    background:
        radial-gradient(circle at 8% 4%, rgba(49, 95, 223, 0.06), transparent 25rem),
        var(--core-bg);
    color: var(--core-ink);
    font-family:
        Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI",
        sans-serif;
    text-rendering: optimizeLegibility;
}

a,
button,
input,
select,
textarea {
    transition:
        color var(--core-transition),
        background-color var(--core-transition),
        border-color var(--core-transition),
        box-shadow var(--core-transition),
        transform var(--core-transition);
}

:focus-visible {
    outline: 0.2rem solid rgba(49, 95, 223, 0.28);
    outline-offset: 0.15rem;
}

.core-container {
    max-width: 92rem;
    padding-inline: clamp(1rem, 3vw, 2.5rem);
}

.core-navbar {
    min-height: 4rem;
    border-bottom: 1px solid rgba(223, 229, 235, 0.86);
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 0.25rem 1rem rgba(23, 33, 43, 0.035);
    backdrop-filter: blur(1rem);
}

.core-navbar .navbar-brand {
    color: var(--core-ink);
    font-weight: 720;
    letter-spacing: -0.02em;
}

.core-navbar .nav-link {
    border-radius: 0.55rem;
    color: var(--core-muted);
    font-weight: 560;
    padding-inline: 0.8rem;
}

.core-navbar .nav-link:hover,
.core-navbar .nav-link.active {
    background: rgba(49, 95, 223, 0.08);
    color: var(--core-primary-dark);
}

.core-brand-mark {
    display: grid;
    width: 3.25rem;
    height: 3.25rem;
    place-items: center;
    border-radius: 1rem;
    background: linear-gradient(145deg, #315fdf, #2345a4);
    box-shadow: 0 0.75rem 2rem rgba(49, 95, 223, 0.25);
    color: #fff;
    font-size: 1.2rem;
    font-weight: 800;
    letter-spacing: -0.08em;
}

.core-brand-mark-sm {
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 0.7rem;
    box-shadow: none;
    font-size: 0.9rem;
}

.core-eyebrow {
    color: var(--core-muted);
    font-size: 0.72rem;
    font-weight: 750;
    letter-spacing: 0.11em;
    text-transform: uppercase;
}

.core-page-header {
    max-width: 66rem;
}

.core-page-header .display-6 {
    font-weight: 720;
    letter-spacing: -0.045em;
}

.card {
    border: 1px solid rgba(223, 229, 235, 0.78);
    border-radius: var(--core-radius);
    background: var(--core-surface);
    box-shadow: var(--core-shadow-sm);
}

.btn {
    min-height: 2.55rem;
    border-radius: 0.65rem;
    font-weight: 640;
}

.btn-sm {
    min-height: 2.1rem;
}

.btn-primary {
    border-color: var(--core-primary);
    background: var(--core-primary);
    box-shadow: 0 0.35rem 0.8rem rgba(49, 95, 223, 0.16);
}

.btn-primary:hover,
.btn-primary:focus-visible {
    border-color: var(--core-primary-dark);
    background: var(--core-primary-dark);
    transform: translateY(-1px);
}

.form-control,
.form-select {
    min-height: 2.75rem;
    border-color: #cfd7df;
    background-color: #fff;
}

.form-control:focus,
.form-select:focus {
    border-color: rgba(49, 95, 223, 0.65);
    box-shadow: 0 0 0 0.22rem rgba(49, 95, 223, 0.12);
}

.core-login-page {
    min-height: 100vh;
    background:
        radial-gradient(circle at 20% 10%, rgba(49, 95, 223, 0.16), transparent 28rem),
        radial-gradient(circle at 85% 80%, rgba(23, 124, 85, 0.09), transparent 24rem),
        #eef2f6;
}

.core-login-card {
    overflow: hidden;
    box-shadow: var(--core-shadow);
}

.core-login-card::before {
    display: block;
    height: 0.35rem;
    background: linear-gradient(90deg, #315fdf, #6a8df0 62%, #2aa67a);
    content: "";
}

.core-module-card {
    color: inherit;
}

.core-module-card:hover,
.core-module-card:focus-visible {
    border-color: rgba(49, 95, 223, 0.34);
    box-shadow: 0 0.75rem 2rem rgba(23, 33, 43, 0.1);
    transform: translateY(-2px);
}

.core-empty-state {
    min-height: 18rem;
    border: 1px dashed #c8d2dc !important;
    box-shadow: none;
}

.core-empty-state .card-body {
    display: grid;
    align-content: center;
}

.core-empty-icon {
    display: grid;
    width: 3.5rem;
    height: 3.5rem;
    place-items: center;
    border-radius: 50%;
    background: rgba(49, 95, 223, 0.09);
    color: var(--core-primary);
    font-size: 1.65rem;
}

.core-user-menu {
    min-width: 14rem;
    border-color: var(--core-border);
    box-shadow: var(--core-shadow);
}

.core-state {
    display: flex;
    min-height: 3.5rem;
    align-items: center;
    gap: 0.65rem;
    border: 1px solid var(--core-border);
    border-radius: var(--core-radius-sm);
    padding: 0.9rem 1rem;
    background: var(--core-surface-muted);
}

.core-state-error {
    border-color: rgba(183, 57, 72, 0.25);
    background: rgba(183, 57, 72, 0.07);
    color: var(--core-danger);
}

.core-state-empty {
    display: block;
    padding-block: 1.4rem;
}

.core-chart {
    min-height: 19rem;
    border-radius: var(--core-radius-sm);
    background: linear-gradient(180deg, #fff, #fafbfc);
}

.core-chart-fallback {
    display: grid;
    min-height: 19rem;
    place-items: center;
    border: 1px dashed var(--core-border);
    border-radius: var(--core-radius-sm);
    color: var(--core-muted);
    text-align: center;
}

.core-error-state {
    width: min(100%, 38rem);
    box-shadow: var(--core-shadow);
}

.core-error-code {
    color: var(--core-primary);
    font-size: clamp(3rem, 10vw, 6rem);
    font-weight: 800;
    letter-spacing: -0.08em;
    line-height: 1;
}

.table > :not(caption) > * > * {
    padding: 0.9rem 1rem;
}

.table thead th {
    color: var(--core-muted);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

code {
    color: #7a3bb3;
}

@media (max-width: 575.98px) {
    .core-login-card .card-body {
        padding: 1.5rem !important;
    }

    .core-page-header .lead {
        font-size: 1rem;
    }

    .core-chart {
        min-height: 15rem;
    }

    .table > :not(caption) > * > * {
        padding: 0.75rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}
