:root {
    --ui-font-heading: "Sora", "Segoe UI", sans-serif;
    --ui-font-body: "Manrope", "Segoe UI", sans-serif;
    --ui-bg: #f4f8fb;
    --ui-surface: #ffffff;
    --ui-surface-muted: #eef4f7;
    --ui-border: #d7e3ea;
    --ui-text: #133041;
    --ui-text-muted: #587083;
    --ui-primary: #0f5c78;
    --ui-primary-soft: #e4f2f6;
    --ui-accent: #ef8354;
    --ui-success: #247a52;
    --ui-warning: #bd7a1f;
    --ui-danger: #b2433f;
    --ui-shadow-sm: 0 8px 22px rgba(16, 58, 77, 0.08);
    --ui-shadow-md: 0 18px 40px rgba(16, 58, 77, 0.14);
    --ui-radius-sm: 10px;
    --ui-radius-md: 16px;
    --ui-radius-lg: 24px;
}

body {
    font-family: var(--ui-font-body);
    color: var(--ui-text);
    background:
        radial-gradient(1400px 520px at 20% -20%, rgba(15, 92, 120, 0.12), transparent 70%),
        radial-gradient(1000px 500px at 100% 0%, rgba(239, 131, 84, 0.09), transparent 60%),
        var(--ui-bg);
}

h1,
h2,
h3,
h4,
h5,
h6,
.navbar-brand,
.card-title,
.page-title,
.metric-label {
    font-family: var(--ui-font-heading);
    letter-spacing: -0.01em;
}

.navbar {
    background: linear-gradient(120deg, #0a3d52 0%, #0f5c78 52%, #147597 100%) !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    backdrop-filter: blur(10px);
}

.navbar .nav-link {
    border-radius: 999px;
    padding: 0.4rem 0.8rem;
    transition: background-color 0.2s ease, transform 0.2s ease;
}

.navbar .nav-link:hover {
    background: rgba(255, 255, 255, 0.14);
    transform: translateY(-1px);
}

.sidebar {
    background: linear-gradient(180deg, #071f2a 0%, #0d3040 100%) !important;
    border-right: 1px solid rgba(255, 255, 255, 0.08);
}

.sidebar .accordion-button,
.sidebar .nav-link,
.sidebar .nav-link i {
    color: rgba(236, 244, 248, 0.94) !important;
}

.sidebar .nav-link:hover {
    background: rgba(255, 255, 255, 0.12) !important;
}

.sidebar .nav-link.active {
    background: rgba(239, 131, 84, 0.2) !important;
    border-left-color: var(--ui-accent) !important;
}

.main-content {
    padding: 1.5rem;
}

.card {
    border: 1px solid var(--ui-border);
    border-radius: var(--ui-radius-md);
    background: var(--ui-surface);
    box-shadow: var(--ui-shadow-sm);
    overflow: hidden;
}

.card-header {
    background-color: #eef5f9;
    border-bottom: 1px solid var(--ui-border);
    font-weight: 700;
    color: var(--ui-text);
}

.card-header:not(.bg-primary):not(.bg-success):not(.bg-info):not(.bg-warning):not(.bg-danger):not(.bg-secondary):not(.bg-dark):not(.bg-light) {
    background-image: linear-gradient(180deg, #f8fbfd 0%, #eef5f9 100%);
}

.card-header.bg-primary,
.card-header.bg-success,
.card-header.bg-info,
.card-header.bg-danger,
.card-header.bg-secondary,
.card-header.bg-dark {
    background-image: none !important;
    color: #f8fcff !important;
}

.card-header.bg-warning,
.card-header.bg-light {
    background-image: none !important;
    color: #1a2a33 !important;
}

.btn {
    border-radius: 12px;
    font-weight: 700;
    letter-spacing: 0.01em;
}

.btn-primary,
.btn-cfms {
    background: linear-gradient(135deg, #0f5c78 0%, #14779a 100%) !important;
    border-color: #0f5c78 !important;
    color: #ffffff;
}

.btn-primary:hover,
.btn-cfms:hover {
    background: linear-gradient(135deg, #0d516b 0%, #116b8a 100%) !important;
    transform: translateY(-1px);
}

.btn-success {
    background: linear-gradient(135deg, #247a52 0%, #2f9e69 100%);
    border-color: #247a52;
}

.btn-warning {
    background: linear-gradient(135deg, #d49031 0%, #e6a53f 100%);
    border-color: #c5852c;
    color: #192531;
}

.btn-danger {
    background: linear-gradient(135deg, #b2433f 0%, #c75450 100%);
    border-color: #a23b37;
}

.form-control,
.form-select,
.select2-container--bootstrap-5 .select2-selection {
    border: 1px solid #c3d4de;
    border-radius: 10px;
    min-height: 42px;
}

.form-control:focus,
.form-select:focus {
    border-color: #4e95b1;
    box-shadow: 0 0 0 0.2rem rgba(15, 92, 120, 0.16);
}

.table {
    --bs-table-bg: transparent;
    --bs-table-striped-bg: #f7fbfd;
}

.table thead th {
    border-bottom-width: 1px;
    background: #edf4f8;
    color: #264658;
    font-size: 0.79rem;
    letter-spacing: 0.04em;
}

.badge {
    border-radius: 999px;
    padding: 0.45em 0.7em;
    font-weight: 700;
}

.alert {
    border-radius: 12px;
    border-width: 1px;
}

/* Page animation */
.main-content > .container-fluid,
main > .container-fluid,
main > .container {
    animation: pageIn 0.35s ease both;
}

@keyframes pageIn {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Public shell */
body.public-shell {
    background:
        radial-gradient(1200px 460px at 8% -12%, rgba(15, 92, 120, 0.18), transparent 68%),
        radial-gradient(1200px 480px at 100% -18%, rgba(239, 131, 84, 0.16), transparent 65%),
        #eef4f8;
}

.public-shell .ebaldia-navbar {
    background: linear-gradient(120deg, #0a3d52 0%, #0f5c78 55%, #147597 100%) !important;
}

.public-shell footer {
    background: linear-gradient(120deg, #0a3d52 0%, #0f5c78 55%, #147597 100%) !important;
}

/* Auth pages */
body.page-login .sidebar,
body.page-login .sidebar-overlay {
    display: none !important;
}

body.page-login .main-content {
    margin-left: 0;
    padding: 2rem 1rem;
}

.auth-shell {
    max-width: 1000px;
    margin: 2rem auto;
}

.auth-card {
    border-radius: var(--ui-radius-lg);
    overflow: hidden;
    box-shadow: var(--ui-shadow-md);
    border: 1px solid #d3e2ea;
}

.auth-aside {
    background:
        linear-gradient(160deg, rgba(10, 61, 82, 0.94) 0%, rgba(15, 92, 120, 0.9) 55%, rgba(20, 117, 151, 0.9) 100%),
        radial-gradient(400px 180px at 90% 8%, rgba(239, 131, 84, 0.45), transparent 70%);
    color: #f5fbff;
}

.auth-aside .auth-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.3rem 0.8rem;
    background: rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    font-size: 0.82rem;
    letter-spacing: 0.03em;
}

.auth-form-panel {
    background: #ffffff;
}

.auth-form-panel .form-control,
.auth-form-panel .input-group-text {
    background: #f9fcfe;
    border-color: #cfe0ea;
}

.auth-form-panel .input-group:focus-within .input-group-text {
    border-color: #4e95b1;
    color: #0f5c78;
}

/* Executive dashboard */
.app-dashboard.page-index .kpi-card {
    border: 1px solid #d5e6ee;
    border-left-width: 1px;
    border-top: 4px solid #0f5c78;
    border-radius: 16px;
}

.app-dashboard.page-index .kpi-card.success {
    border-top-color: #247a52;
}

.app-dashboard.page-index .kpi-card.warning {
    border-top-color: #bd7a1f;
}

.app-dashboard.page-index .kpi-card.danger {
    border-top-color: #b2433f;
}

.app-dashboard.page-index .kpi-value {
    color: #173a4b;
}

/* Property app tuning */
.app-property .container-fluid {
    max-width: 1650px;
}

.app-property .card-header.bg-primary,
.app-property .card-header.bg-success,
.app-property .card-header.bg-info,
.app-property .card-header.bg-warning,
.app-property .card-header.bg-danger,
.app-property .card-header.bg-secondary,
.app-property .card-header.bg-dark {
    color: #f8fcff !important;
    border-bottom: 0;
}

.app-property .card-header.bg-primary {
    background: linear-gradient(130deg, #0f5c78 0%, #14779a 100%) !important;
}

.app-property .card-header.bg-success {
    background: linear-gradient(130deg, #247a52 0%, #2f9e69 100%) !important;
}

.app-property .card-header.bg-info {
    background: linear-gradient(130deg, #13809f 0%, #1ea7ca 100%) !important;
}

.app-property .card-header.bg-warning {
    background: linear-gradient(130deg, #c18329 0%, #dea344 100%) !important;
    color: #192531 !important;
}

.app-property .card-header.bg-danger {
    background: linear-gradient(130deg, #b2433f 0%, #c75450 100%) !important;
}

.app-property .card-header.bg-secondary,
.app-property .card-header.bg-dark {
    background: linear-gradient(130deg, #2b4655 0%, #3f6074 100%) !important;
}

.app-property .border-left-primary,
.app-property .border-left-success,
.app-property .border-left-info,
.app-property .border-left-warning,
.app-property .border-left-danger,
.app-property .border-left-dark {
    border-left-width: 0 !important;
    border-top: 4px solid #0f5c78 !important;
}

.app-property .border-left-success {
    border-top-color: #247a52 !important;
}

.app-property .border-left-info {
    border-top-color: #13809f !important;
}

.app-property .border-left-warning {
    border-top-color: #bd7a1f !important;
}

.app-property .border-left-danger {
    border-top-color: #b2433f !important;
}

.app-property .border-left-dark {
    border-top-color: #2f4d60 !important;
}

.app-property .btn.btn-block {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}

.app-property .badge-lg {
    border-radius: 999px;
    padding: 0.44rem 0.82rem;
}

/* Public dashboard modules */
.public-shell .module-card {
    border-radius: 18px;
    border: 1px solid rgba(17, 63, 83, 0.14);
    box-shadow: 0 12px 30px rgba(12, 48, 64, 0.14);
}

.public-shell .module-card::before {
    background: linear-gradient(90deg, #0f5c78 0%, #ef8354 100%);
}

.public-shell .module-card .btn {
    pointer-events: none;
}

@media (max-width: 991.98px) {
    .main-content {
        padding: 1rem;
    }

    .auth-shell {
        margin-top: 1rem;
    }
}
