:root {
    --brand: #0d6efd;
    --brand-dark: #093f91;
    --soft-bg: #f4f7fb;
}

body {
    background: var(--soft-bg);
}

.auth-wrapper {
    min-height: calc(100vh - 56px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
    background: radial-gradient(circle at top left, #d9e9ff, transparent 30%), linear-gradient(135deg, #f4f7fb, #ffffff);
}

.auth-card {
    width: 100%;
    max-width: 460px;
    border-radius: 1.25rem;
}

.logo-circle {
    width: 76px;
    height: 76px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #fff;
    font-weight: 800;
    background: linear-gradient(135deg, var(--brand), var(--brand-dark));
}

.dashboard-hero {
    border-radius: 1.25rem;
    padding: 1.5rem;
    color: #fff;
    background: linear-gradient(135deg, var(--brand), var(--brand-dark));
    box-shadow: 0 12px 30px rgba(13, 110, 253, .2);
}

.stat-card {
    border: 0;
    border-radius: 1rem;
    background: #fff;
    padding: 1.25rem;
    box-shadow: 0 8px 22px rgba(0,0,0,.05);
}

.stat-card span {
    display: block;
    color: #6c757d;
    font-size: .85rem;
}

.stat-card strong {
    font-size: 2rem;
    line-height: 1.2;
}

.election-card, .candidate-card {
    border-radius: 1rem;
    overflow: hidden;
}

.candidate-img {
    height: 220px;
    object-fit: cover;
    background: #eef3f8;
}

.candidate-campaign {
    min-height: 56px;
}

.list-group-item.active {
    background: var(--brand);
    border-color: var(--brand);
}