:root {
    --votora-navy: #003070;
    --votora-navy-dark: #001f4d;
    --votora-navy-soft: #eaf1fa;
    --votora-green: #409040;
    --votora-green-dark: #2f7131;
    --votora-green-soft: #edf7ed;
    --votora-ink: #17243a;
    --votora-muted: #667085;
    --votora-border: #dbe3ee;
    --votora-surface: #ffffff;
    --votora-background: #f4f7fb;
}

html { font-size: 16px; }
body { color: var(--votora-ink); background: var(--votora-background); }
a { color: var(--votora-navy); }
a:hover { color: var(--votora-green-dark); }

.btn { border-radius: .6rem; font-weight: 600; }
.btn-primary, .bg-primary, .navbar-primary { background-color: var(--votora-navy) !important; border-color: var(--votora-navy) !important; }
.btn-primary:hover, .btn-primary:focus { background-color: var(--votora-navy-dark) !important; border-color: var(--votora-navy-dark) !important; }
.btn-success, .bg-success { background-color: var(--votora-green) !important; border-color: var(--votora-green) !important; }
.text-primary { color: var(--votora-navy) !important; }
.text-success { color: var(--votora-green) !important; }
.form-control { border-color: var(--votora-border); border-radius: .6rem; min-height: 42px; }
.form-control:focus { border-color: var(--votora-green); box-shadow: 0 0 0 .2rem rgba(64, 144, 64, .16); }

.card { border: 1px solid var(--votora-border); border-radius: .85rem; box-shadow: 0 6px 18px rgba(0, 48, 112, .07); overflow: hidden; }
.card-header { background: var(--votora-surface); border-bottom-color: var(--votora-border); padding: 1rem 1.25rem; }
.content-wrapper { background: var(--votora-background); }
.content-header { padding: 1.25rem .5rem .5rem; }
.content-header h1, .content-header h2 { color: var(--votora-navy-dark); font-weight: 700; }
.content { padding: 0 .5rem 1.5rem; }

.main-header { border-bottom: 0; box-shadow: 0 3px 12px rgba(0, 31, 77, .18); }
.main-header .nav-link { color: rgba(255,255,255,.9) !important; }
.main-sidebar { border-right: 1px solid var(--votora-border); }
.brand-link { min-height: 88px; padding: .75rem; border-bottom: 1px solid var(--votora-border) !important; }
.brand-link img { width: auto !important; max-width: 190px; max-height: 60.7px; object-fit: contain; }
.nav-sidebar .nav-link { border-radius: .6rem; color: #344054 !important; margin-bottom: .2rem; }
.nav-sidebar .nav-link:hover { background: var(--votora-green-soft); color: var(--votora-green-dark) !important; }
.nav-sidebar .nav-link.active { background: linear-gradient(135deg, var(--votora-navy), #0755a5) !important; color: #fff !important; box-shadow: 0 5px 12px rgba(0,48,112,.2) !important; }
.nav-sidebar .nav-icon { color: var(--votora-green); }
.nav-sidebar .active .nav-icon { color: #9bd29b; }
.user-header { background: linear-gradient(135deg, var(--votora-navy), #0755a5) !important; }

.table { color: var(--votora-ink); }
.table thead th, .table .thead-dark th { background: var(--votora-navy-dark); border-color: var(--votora-navy); color: #fff; white-space: nowrap; }
.table td, .table th { vertical-align: middle; }
.pagination .page-link { color: var(--votora-navy); }
.pagination .active .page-link { background: var(--votora-navy); border-color: var(--votora-navy); }

.auth-bg { padding: 1.5rem 0; background: radial-gradient(circle at 10% 10%, rgba(64,144,64,.35), transparent 35%), linear-gradient(145deg, var(--votora-navy-dark), var(--votora-navy)) !important; }
.auth-wrapper { padding-left: 15px; padding-right: 15px; }
.auth-card { border-radius: 1.15rem !important; box-shadow: 0 24px 60px rgba(0, 20, 55, .35) !important; }
.auth-hero { background: linear-gradient(145deg, var(--votora-navy-dark), var(--votora-navy)) !important; }
.auth-hero-badge { background: rgba(64,144,64,.22) !important; color: #d9f4d9 !important; }
.auth-card .card-body { padding: 2.25rem; }
.auth-card img { width: auto; max-width: 180px; height: auto; }
.auth-card .alert-info { color: var(--votora-navy-dark); background: var(--votora-navy-soft); border-color: #bfd0e6; }

@media (max-width: 767.98px) {
    html { font-size: 15px; }
    .auth-bg { align-items: flex-start !important; padding: 1rem 0; }
    .auth-card .card-body { padding: 1.5rem 1.1rem; }
    .auth-card img { max-width: 145px; }
    .content-header { padding-top: 1rem; }
    .content { padding-left: 0; padding-right: 0; }
    .content-wrapper > .content-header .container-fluid,
    .content-wrapper > .content .container-fluid { padding-left: .75rem; padding-right: .75rem; }
    .card-header { padding: .85rem 1rem; }
    .card-body { padding: 1rem; }
    .card-header.d-flex { align-items: flex-start !important; gap: .6rem; flex-wrap: wrap; }
    .table-responsive { border: 0; }
    .table { min-width: 620px; }
    .btn:not(.btn-sm):not(.dropdown-toggle) { min-height: 42px; }
    form.d-flex { flex-wrap: wrap; gap: .5rem; }
    form.d-flex > .flex-grow-1 { flex-basis: 100%; margin-right: 0 !important; }
    .main-header .user-menu .dropdown-menu { max-width: calc(100vw - 1rem); }
}

@media (max-width: 575.98px) {
    .row > [class*='col-'] { min-width: 0; }
    .d-flex.justify-content-between { gap: .65rem; }
    .modal-dialog { margin: .5rem; }
}
/* Dashboard */
.dashboard-eyebrow, .chart-kicker { color: var(--votora-green-dark); font-size: .72rem; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.election-filter-card { background: linear-gradient(120deg, #fff 55%, var(--votora-navy-soft)); border-left: 4px solid var(--votora-green); }
.election-filter-card .card-body { padding: 1.1rem 1.25rem; }
.filter-icon { align-items: center; background: var(--votora-green-soft); border-radius: .55rem; color: var(--votora-green-dark); display: inline-flex; height: 36px; justify-content: center; width: 36px; }
.filter-loading { color: var(--votora-navy); opacity: 0; pointer-events: none; position: absolute; right: 2.7rem; top: 50%; transform: translateY(-50%); transition: opacity .2s; }
.filter-loading.is-visible { opacity: 1; }
.dashboard-filter select { appearance: auto; background-color: #fff; cursor: pointer; font-weight: 600; padding-right: 4rem; }
.metric-card { align-items: center; background: #fff; border: 1px solid var(--votora-border); border-radius: .9rem; box-shadow: 0 7px 22px rgba(0,48,112,.07); display: flex; gap: 1rem; min-height: 142px; overflow: hidden; padding: 1.2rem; position: relative; transition: transform .2s ease, box-shadow .2s ease; }
.metric-card::before { background: currentColor; content: ''; height: 4px; left: 0; position: absolute; right: 0; top: 0; }
.metric-card:hover { box-shadow: 0 12px 28px rgba(0,48,112,.13); transform: translateY(-3px); }
.metric-card--blue { color: var(--votora-navy); }
.metric-card--green { color: var(--votora-green); }
.metric-card--amber { color: #c68105; }
.metric-card--cyan { color: #087f96; }
.metric-icon { align-items: center; background: currentColor; border-radius: .8rem; box-shadow: 0 6px 14px currentColor; color: inherit; display: flex; flex: 0 0 50px; height: 50px; justify-content: center; }
.metric-icon i { color: #fff; font-size: 1.1rem; }
.metric-content { display: flex; flex-direction: column; min-width: 0; }
.metric-label { color: var(--votora-muted); font-size: .8rem; font-weight: 600; }
.metric-value { color: var(--votora-ink); font-size: 1.75rem; line-height: 1.25; }
.metric-caption { color: #98a2b3; font-size: .72rem; }
.chart-card { min-height: 390px; }
.chart-card .card-header { padding: 1.25rem 1.25rem .5rem; }
.participation-chart-wrap { height: 235px; margin: auto; max-width: 280px; position: relative; width: 100%; }
.chart-center-label { align-items: center; display: flex; flex-direction: column; left: 50%; pointer-events: none; position: absolute; top: 50%; transform: translate(-50%, -50%); }
.chart-center-label strong { color: var(--votora-navy-dark); font-size: 1.7rem; line-height: 1; }
.chart-center-label span { color: var(--votora-muted); font-size: .72rem; margin-top: .3rem; }
.chart-legend { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; justify-content: center; }
.chart-legend span { color: var(--votora-muted); font-size: .8rem; }
.chart-legend strong { color: var(--votora-ink); margin-left: .2rem; }
.legend-dot { border-radius: 50%; display: inline-block; height: 9px; margin-right: .3rem; width: 9px; }
.legend-dot--green { background: var(--votora-green); }
.legend-dot--amber { background: #f2b134; }
.candidate-chart-wrap { height: 285px; position: relative; }
.total-votes-badge { background: var(--votora-navy-soft); border-radius: 999px; color: var(--votora-navy); font-size: .78rem; font-weight: 700; padding: .45rem .7rem; white-space: nowrap; }
.dashboard-empty { align-items: center; color: var(--votora-muted); display: flex; flex-direction: column; justify-content: center; min-height: 230px; padding: 2rem; text-align: center; }
.dashboard-empty i { color: #b7c4d6; font-size: 2rem; margin-bottom: .8rem; }
.dashboard-empty strong { color: var(--votora-ink); margin-bottom: .25rem; }
.dashboard-empty span { font-size: .85rem; }
.results-card { margin-bottom: 1.5rem; }
.dashboard-table thead th { background: #f8fafc; border-bottom: 1px solid var(--votora-border); color: #475467; font-size: .72rem; letter-spacing: .05em; text-transform: uppercase; }
.dashboard-table tbody tr { transition: background .15s; }
.candidate-number { background: var(--votora-navy-soft); border-radius: .45rem; color: var(--votora-navy); display: inline-block; font-weight: 800; min-width: 42px; padding: .35rem .5rem; text-align: center; }
.result-percentage { display: inline-flex; flex-direction: column; gap: .3rem; min-width: 100px; }
.result-progress { background: #e8edf3; border-radius: 999px; height: 5px; overflow: hidden; }
.result-progress i { background: linear-gradient(90deg, var(--votora-navy), var(--votora-green)); border-radius: inherit; display: block; height: 100%; }

@media (max-width: 767.98px) {
    .dashboard-heading p { font-size: .83rem; }
    .election-filter-card .card-body { padding: 1rem; }
    .metric-card { min-height: 118px; padding: 1rem; }
    .metric-value { font-size: 1.5rem; }
    .chart-card { min-height: 360px; }
    .chart-card .card-header { padding: 1rem 1rem .4rem; }
    .candidate-chart-wrap { height: 260px; }
    .total-votes-badge { margin-top: .25rem; }
    .dashboard-table { min-width: 650px; }
}

@media (max-width: 575.98px) {
    .dashboard-stats > [class*='col-'] { padding-left: 7.5px; padding-right: 7.5px; }
    .dashboard-stats { margin-left: -7.5px; margin-right: -7.5px; }
    .metric-card { gap: .8rem; }
    .metric-icon { flex-basis: 44px; height: 44px; }
    .participation-chart-wrap { height: 220px; }
}
/* Espaçamento para grupos de ações (compatibilidade com Bootstrap 4) */
.d-flex.gap-2 {
    gap: .65rem;
}

@media (max-width: 575.98px) {
    .card-header > .d-flex.gap-2 {
        flex-wrap: wrap;
    }

    form .d-flex.justify-content-end.gap-2 {
        flex-wrap: wrap;
    }
}
/* Menu lateral branco */
.main-sidebar,
.main-sidebar .sidebar,
.main-sidebar .brand-link {
    background-color: #ffffff !important;
}
/* Contraste dos botões azuis */
.btn-primary,
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary:not(:disabled):not(.disabled):active,
.btn-primary.disabled,
.btn-primary:disabled,
.btn.bg-votora-blue,
a.btn.bg-votora-blue,
.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary:active {
    color: #ffffff !important;
}

.btn-primary i,
.btn.bg-votora-blue i,
.btn-outline-primary:hover i,
.btn-outline-primary:focus i {
    color: #ffffff !important;
}
/* Fundo sólido do menu no mobile e durante o pushmenu */
.main-sidebar,
.main-sidebar::before,
.sidebar-mini .main-sidebar,
.sidebar-open .main-sidebar,
.sidebar-collapse .main-sidebar,
.main-sidebar .sidebar {
    background: #ffffff !important;
    opacity: 1 !important;
}

@media (max-width: 991.98px) {
    body.sidebar-open .main-sidebar,
    body.sidebar-open .main-sidebar::before,
    body.sidebar-open .main-sidebar .sidebar {
        background-color: #ffffff !important;
        opacity: 1 !important;
    }

    body.sidebar-open .main-sidebar {
        box-shadow: 10px 0 30px rgba(0, 31, 77, .22) !important;
    }

    .sidebar-overlay {
        background-color: rgba(0, 24, 58, .48) !important;
    }
}
/* Usuário logado no cabeçalho móvel */
.main-header .user-menu > .nav-link {
    align-items: center;
    display: flex;
}

.logged-user-name {
    display: inline-block;
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
    white-space: nowrap;
}

@media (max-width: 575.98px) {
    .main-header .navbar-nav.ml-auto {
        min-width: 0;
    }

    .logged-user-name {
        max-width: 130px;
        font-size: .82rem;
    }
}

@media (max-width: 360px) {
    .logged-user-name {
        max-width: 92px;
    }
}