/* ══════════════════════════════════════════════════════════
   VARIABLES CSS — DARK MODE PREMIUM
══════════════════════════════════════════════════════════ */
:root {
    --bg-void:      #0b0f19;
    --bg-surface:   #111827;
    --bg-card:      #1a2236;
    --bg-card-hover:#1f2d47;
    --border:       rgba(255,255,255,0.07);
    --border-bright:rgba(255,255,255,0.15);
    --text-primary: #f8fafc;
    --text-secondary:#94a3b8;
    --text-muted:   #64748b;
    --accent-gold:  #fbbf24;
    --accent-silver:#cbd5e1;
    --accent-bronze:#cd7f32;
    --accent-blue:  #3b82f6;
    --accent-cyan:  #06b6d4;
    --accent-green: #22c55e;
    --accent-pink:  #ec4899;
    --accent-orange:#f97316;
    --glow-blue:    rgba(59,130,246,0.35);
    --glow-gold:    rgba(251,191,36,0.4);
    --glow-silver:  rgba(203,213,225,0.25);
    --glow-bronze:  rgba(205,127,50,0.28);
    --glow-cyan:    rgba(6,182,212,0.3);
    --nav-bg:       rgba(11,15,25,0.95);
    --shadow-card:  0 8px 32px rgba(0,0,0,0.5);
    --shadow-glow:  0 0 24px var(--glow-blue);
    --radius-card:  18px;
    --radius-pill:  999px;
}

/* ══════════════════════════════════════════════════════════
   RESET & BASE
══════════════════════════════════════════════════════════ */
*, *::before, *::after { box-sizing: border-box; }

html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

body {
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    margin: 0;
    background-color: var(--bg-void);
    color: var(--text-primary);
    text-align: center;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    /* Gradiente radial central para profundidad */
    background-image:
        /* Glow central azul */
        radial-gradient(ellipse 70% 50% at 50% 40%, rgba(59,130,246,0.07) 0%, transparent 70%),
        /* Glow cyan superior derecha */
        radial-gradient(ellipse 40% 30% at 85% 10%, rgba(6,182,212,0.05) 0%, transparent 60%),
        /* Glow dorado inferior izquierda */
        radial-gradient(ellipse 35% 25% at 10% 90%, rgba(251,191,36,0.04) 0%, transparent 55%),
        /* ── PARTÍCULAS / CHISPAS (puntos neon dispersos) ── */
        radial-gradient(circle 1.5px at 12% 18%, rgba(6,182,212,0.7) 0%, transparent 100%),
        radial-gradient(circle 1px at 23% 72%, rgba(251,191,36,0.6) 0%, transparent 100%),
        radial-gradient(circle 2px at 34% 9%, rgba(255,255,255,0.4) 0%, transparent 100%),
        radial-gradient(circle 1px at 45% 55%, rgba(59,130,246,0.6) 0%, transparent 100%),
        radial-gradient(circle 1.5px at 57% 30%, rgba(236,72,153,0.5) 0%, transparent 100%),
        radial-gradient(circle 1px at 66% 82%, rgba(6,182,212,0.5) 0%, transparent 100%),
        radial-gradient(circle 2px at 74% 14%, rgba(251,191,36,0.55) 0%, transparent 100%),
        radial-gradient(circle 1px at 83% 47%, rgba(255,255,255,0.35) 0%, transparent 100%),
        radial-gradient(circle 1.5px at 91% 68%, rgba(59,130,246,0.5) 0%, transparent 100%),
        radial-gradient(circle 1px at 7%  60%, rgba(255,255,255,0.3) 0%, transparent 100%),
        radial-gradient(circle 1px at 19% 40%, rgba(236,72,153,0.4) 0%, transparent 100%),
        radial-gradient(circle 2px at 29% 88%, rgba(6,182,212,0.45) 0%, transparent 100%),
        radial-gradient(circle 1px at 52% 78%, rgba(251,191,36,0.5) 0%, transparent 100%),
        radial-gradient(circle 1.5px at 61% 5%,  rgba(255,255,255,0.35) 0%, transparent 100%),
        radial-gradient(circle 1px at 78% 33%, rgba(236,72,153,0.4) 0%, transparent 100%),
        radial-gradient(circle 2px at 88% 90%, rgba(59,130,246,0.4) 0%, transparent 100%),
        radial-gradient(circle 1px at 3%  25%, rgba(251,191,36,0.45) 0%, transparent 100%),
        radial-gradient(circle 1.5px at 41% 95%, rgba(6,182,212,0.4) 0%, transparent 100%),
        radial-gradient(circle 1px at 96% 52%, rgba(255,255,255,0.3) 0%, transparent 100%);
    background-attachment: fixed;
}

img, svg, canvas, video {
    max-width: 100%;
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    nav,
    .ranking-topbar,
    #modal-overlay,
    #popup-geo-overlay,
    #drawer-overlay,
    .btn-geolocalizacion,
    .mapa-instruccion {
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
}

@supports not selector(:has(*)) {
    .cuadro-promo {
        background: rgba(255,255,255,0.03);
        border-color: rgba(255,255,255,0.1);
    }
}

@supports not (height: 100dvh) {
    #drawer-menu { height: 100vh; }
}

/* ══════════════════════════════════════════════════════════
   CUADROS INFORMATIVOS — negocios y emprendimientos locales
══════════════════════════════════════════════════════════ */
.cuadro-promo {
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.03);
    border: 1px dashed rgba(255,255,255,0.1);
    color: var(--text-muted);
    font-size: 0.78em;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    overflow: hidden;
    transition: border-color 0.2s;
    position: relative;
    z-index: 10;
}
.cuadro-promo:has(iframe),
.cuadro-promo:has(img) {
    background: transparent;
    border-color: transparent;
}
/* Cuadro horizontal (superior / inferior) */
.cuadro-promo-horizontal {
    max-width: 860px;
    width: 90%;
    min-height: 90px;
    padding: 8px 16px;
    margin: 10px auto;
    border-radius: 12px;
}
/* Cuadro lateral (columnas laterales) */
.cuadro-promo-lateral {
    width: 160px;
    min-width: 160px;
    min-height: 600px;
    flex-shrink: 0;
    border-radius: var(--radius-card);
    margin: 0 8px;
    align-self: flex-start;
    position: sticky;
    top: 16px;
}
/* Imágenes dentro de cuadros */
.cuadro-promo img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    display: block;
    border-radius: 8px;
}
/* iframes embebidos */
.cuadro-promo iframe {
    border: none;
    display: block;
}
/* Tarjeta invitación cuando no hay contenido externo */
.promo-invitacion {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 12px;
    width: 100%;
    text-decoration: none;
    color: inherit;
}
.promo-invitacion-lateral {
    flex-direction: column;
    text-align: center;
    gap: 10px;
    padding: 20px 12px;
    justify-content: center;
    min-height: 180px;
}
.promo-invitacion-icono { font-size: 1.6em; flex-shrink: 0; }
.promo-invitacion-texto { display: flex; flex-direction: column; gap: 2px; }
.promo-invitacion-texto strong { font-size: 0.88em; color: var(--text-secondary); font-weight: 600; }
.promo-invitacion-texto span   { font-size: 0.76em; color: var(--text-muted); }
.promo-invitacion-btn {
    margin-left: auto;
    padding: 5px 14px;
    border: 1px solid rgba(255,255,255,0.15);
    border-radius: 20px;
    font-size: 0.76em;
    color: var(--text-secondary);
    text-decoration: none;
    white-space: nowrap;
    transition: border-color 0.2s, color 0.2s;
    flex-shrink: 0;
}
.promo-invitacion-btn:hover { border-color: var(--glow-cyan); color: var(--glow-cyan); }
.promo-invitacion-lateral .promo-invitacion-btn { margin-left: 0; }

/* ══════════════════════════════════════════════════════════
   LAYOUT PRINCIPAL — tres columnas con sidebars de ads
══════════════════════════════════════════════════════════ */
.page-layout {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    width: 100%;
    flex: 1;
    padding: 16px 8px;
}

/* ══════════════════════════════════════════════════════════
   NAVEGACIÓN
══════════════════════════════════════════════════════════ */
nav {
    background: var(--nav-bg);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    padding: 14px 20px;
    border-bottom: 1px solid var(--border);
    position: sticky;
    top: 0;
    z-index: 100;
}
nav a {
    color: var(--text-secondary);
    text-decoration: none;
    margin: 0 14px;
    font-weight: 600;
    font-size: 0.98em;
    cursor: pointer;
    transition: color 0.2s;
}
nav a:hover { color: var(--accent-cyan); }

.vc-browser-vote-banner[hidden] {
    display: none !important;
}

.vc-browser-vote-banner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    padding: 10px 18px;
    background: linear-gradient(135deg, #fde68a 0%, #facc15 48%, #f59e0b 100%);
    color: #1f2937;
    border-bottom: 1px solid rgba(120, 53, 15, 0.22);
    box-shadow: 0 8px 24px rgba(120, 53, 15, 0.18);
    text-align: center;
    font-size: 0.94rem;
    font-weight: 800;
    line-height: 1.35;
    position: relative;
    z-index: 101;
}

.vc-browser-vote-banner-icon {
    flex: 0 0 auto;
    font-size: 1.08rem;
    line-height: 1;
}

.vc-browser-vote-banner-text {
    max-width: 1060px;
}

.btn-votar-ahora.btn-votar-bloqueado {
    cursor: not-allowed;
    opacity: 0.72;
    filter: saturate(0.78);
    box-shadow: none;
}

.btn-votar-ahora.btn-votar-bloqueado:hover {
    transform: none;
}

/* ══════════════════════════════════════════════════════════
   CONTENEDOR DE CONTENIDO PRINCIPAL
══════════════════════════════════════════════════════════ */
.contenedor {
    max-width: 1020px;
    width: 100%;
    margin: 0 auto;
    padding: 0 16px;
    display: flex;
    flex-direction: column;
    gap: 0;
    flex: 1;
}

/* ══════════════════════════════════════════════════════════
   SECCIONES — flotan sobre el fondo oscuro global
══════════════════════════════════════════════════════════ */
.seccion-mapa,
.seccion-votar {
    padding: 28px 8px;
}

/* seccion-ranking necesita position:relative para el confeti */
.seccion-ranking {
    padding: 10px 8px 28px;
    position: relative;
    isolation: isolate;
}
/* Chispas animadas del header */
@keyframes spark-pulse {
    0%, 100% { opacity: 0.4; transform: scale(0.85); }
    50%       { opacity: 1;   transform: scale(1.15); }
}
.ranking-spark {
    display: inline-block;
    animation: spark-pulse 2s ease-in-out infinite;
    font-style: normal;
}
.ranking-spark:nth-child(2) { animation-delay: 0.5s; }
.ranking-spark:nth-child(3) { animation-delay: 1s;   }

/* Confeti festivo */
@keyframes confetti-twinkle {
    0%, 100% { opacity: 0.65; }
    50%       { opacity: 1;    }
}
.seccion-ranking::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    animation: confetti-twinkle 4s ease-in-out infinite;
    background-image:
        radial-gradient(circle 2px   at  8% 12%, rgba(251,191,36,0.55)  0%, transparent 100%),
        radial-gradient(circle 1.5px at 22% 55%, rgba(6,182,212,0.45)   0%, transparent 100%),
        radial-gradient(circle 2px   at 30% 80%, rgba(236,72,153,0.40)  0%, transparent 100%),
        radial-gradient(circle 1px   at 40% 28%, rgba(255,255,255,0.28) 0%, transparent 100%),
        radial-gradient(circle 2px   at 50% 70%, rgba(251,191,36,0.40)  0%, transparent 100%),
        radial-gradient(circle 1.5px at 62%  8%, rgba(6,182,212,0.50)   0%, transparent 100%),
        radial-gradient(circle 2px   at 72% 50%, rgba(236,72,153,0.35)  0%, transparent 100%),
        radial-gradient(circle 1px   at 82% 22%, rgba(255,255,255,0.22) 0%, transparent 100%),
        radial-gradient(circle 2px   at 91% 75%, rgba(251,191,36,0.42)  0%, transparent 100%),
        radial-gradient(circle 1.5px at 15% 90%, rgba(59,130,246,0.38)  0%, transparent 100%),
        radial-gradient(circle 2px   at 55% 42%, rgba(34,197,94,0.28)   0%, transparent 100%),
        radial-gradient(circle 1px   at 78% 88%, rgba(6,182,212,0.32)   0%, transparent 100%);
}
.seccion-ranking > * { position: relative; z-index: 1; }

/* SECCIÓN MAPA */
.localizacion-actual {
    background: rgba(59,130,246,0.1);
    padding: 10px 20px;
    border-radius: 10px;
    font-weight: 600;
    font-size: 1.05em;
    border: 1px dashed rgba(59,130,246,0.4);
    margin-bottom: 20px;
    color: var(--text-primary);
}
.simulador-mapa-ecuador {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    background: rgba(255,255,255,0.03);
    padding: 18px;
    border-radius: 14px;
    border: 1px solid var(--border);
}
.provincia-card {
    background: rgba(6,182,212,0.08);
    border: 2px solid rgba(6,182,212,0.3);
    padding: 14px;
    border-radius: 12px;
    cursor: pointer;
    transition: transform 0.2s, background 0.2s, border-color 0.2s;
    color: var(--text-primary);
}
.provincia-card:hover {
    transform: translateY(-4px);
    background: rgba(6,182,212,0.18);
    border-color: var(--accent-cyan);
    box-shadow: 0 0 16px var(--glow-cyan);
}
.buscador-micro {
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid var(--border);
    display: none;
}
.buscador-micro select {
    padding: 10px 14px;
    font-size: 1em;
    border-radius: 10px;
    border: 1px solid var(--border-bright);
    width: 80%;
    max-width: 400px;
    background: var(--bg-surface);
    color: var(--text-primary);
}

/* ══════════════════════════════════════════════════════════
   TÍTULO DEL RANKING
══════════════════════════════════════════════════════════ */
.ranking-header-bloque {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    margin: 6px 0 16px 0;
}
.ranking-titulo {
    font-size: 1.8em;
    font-weight: 800;
    margin: 0;
    letter-spacing: -0.02em;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    flex-wrap: wrap;
}
.ranking-titulo .titulo-emoji {
    -webkit-text-fill-color: initial;
    font-style: normal;
}
.ranking-titulo .titulo-gradiente {
    background: linear-gradient(90deg, var(--accent-gold) 0%, #f8fafc 55%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}
.badge-voto-diferencia {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: #fbbf24;
    border: 1px solid rgba(251,191,36,0.55);
    border-radius: 50px;
    padding: 4px 16px;
    background: rgba(251,191,36,0.07);
    text-transform: uppercase;
}

/* ══════════════════════════════════════════════════════════
   LAYOUT COLUMNA ÚNICA: Podio ancho completo + Lista abajo
══════════════════════════════════════════════════════════ */
.ranking-body {
    display: flex;
    flex-direction: row;
    gap: 24px;
    margin-top: 8px;
    align-items: flex-start;
}
.ranking-col-podio {
    flex: 0 0 52%;
    min-width: 0;
}
.ranking-col-lista {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
    align-items: stretch;
    justify-content: center;
}
.lista-col-titulo {
    font-size: 1.05em;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 2px;
    margin-top: 0;
    padding-left: 4px;
}

/* ── Lista lateral: filas anchas y centradas (>860px) ── */
@media (min-width: 861px) {
    .ranking-col-lista .lista-col-titulo {
        font-size: 0.92em;
        margin-bottom: 10px;
        text-align: center;
        letter-spacing: 0.1em;
    }
    .ranking-col-lista .fila-competitiva {
        padding: 14px 20px;
        min-height: 72px;
        border-radius: 13px;
        gap: 12px;
        align-items: center;
        width: 100%;
        box-sizing: border-box;
    }
    .ranking-col-lista .num-pos-lista {
        font-size: 1.25em;
        width: 26px;
        text-align: center;
    }
    .ranking-col-lista .fila-competitiva .mini-foto {
        width: 48px;
        height: 48px;
        font-size: 1.2em;
        border-width: 2px;
        flex-shrink: 0;
    }
    .ranking-col-lista .nom-candidato-lista {
        font-size: 0.86em;
        letter-spacing: 0.01em;
        flex: 1;
        white-space: normal;
        overflow: hidden;
        line-height: 1.3;
    }
    .ranking-col-lista .barra-h-wrapper {
        display: flex;
        flex: 1;
        min-width: 80px;
        align-items: center;
        gap: 8px;
    }
    .ranking-col-lista .barra-h-base {
        height: 8px;
    }
    .ranking-col-lista .votos-label-lista {
        font-size: 0.92em;
        font-weight: 800;
        min-width: 30px;
        flex-shrink: 0;
        text-align: right;
    }
}

/* ══════════════════════════════════════════════════════════
   PODIO 3D — CONTENEDOR Y SLOTS
══════════════════════════════════════════════════════════ */
.podio-container-3d {
    display: flex;
    justify-content: center;
    align-items: flex-end;
    gap: 12px;
    padding: 44px 4px 0;
}

.podio-slot {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
    min-width: 0;
}
.podio-slot-winner { flex: 1.2; }

/* ── TARJETA DE CANDIDATO ─────────────────────────────── */
.podio-card {
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 16px 10px 14px;
    width: 100%;
    position: relative;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    transition: transform 0.25s, box-shadow 0.25s;
}
.podio-card:hover { transform: translateY(-4px); }

/* Aura de podio — resplandor en la parte superior de cada tarjeta */
.podio-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 90px;
    border-radius: 14px 14px 0 0;
    pointer-events: none;
    z-index: 0;
}
/* Contenido siempre sobre el aura */
.podio-card > * { position: relative; z-index: 1; }

.podio-card.pos-1 {
    border: 2px solid var(--accent-gold);
    background: linear-gradient(160deg, #1e1a0a 0%, #1a2236 100%);
    box-shadow:
        0 0 36px var(--glow-gold),
        0 -8px 40px rgba(251,191,36,0.18),
        var(--shadow-card);
}
.podio-card.pos-1::before {
    background: radial-gradient(ellipse 85% 70% at 50% 0%,
        rgba(251,191,36,0.28) 0%,
        rgba(251,191,36,0.08) 55%,
        transparent 100%);
}
.podio-card.pos-2 {
    border: 2px solid var(--accent-silver);
    box-shadow:
        0 0 22px var(--glow-silver),
        0 -6px 30px rgba(203,213,225,0.12),
        var(--shadow-card);
}
.podio-card.pos-2::before {
    background: radial-gradient(ellipse 85% 70% at 50% 0%,
        rgba(203,213,225,0.20) 0%,
        rgba(203,213,225,0.05) 55%,
        transparent 100%);
}
.podio-card.pos-3 {
    border: 2px solid var(--accent-bronze);
    box-shadow:
        0 0 22px var(--glow-bronze),
        0 -6px 30px rgba(205,127,50,0.14),
        var(--shadow-card);
}
.podio-card.pos-3::before {
    background: radial-gradient(ellipse 85% 70% at 50% 0%,
        rgba(205,127,50,0.22) 0%,
        rgba(205,127,50,0.06) 55%,
        transparent 100%);
}

/* ── MEDALLA / CORONA — GRANDES Y VISIBLES ────────────── */
.medalla-badge {
    font-size: 2.6em;         /* grande y nítida */
    position: absolute;
    top: -38px;
    left: 50%;
    transform: translateX(-50%);
    line-height: 1;
    filter:
        drop-shadow(0 0 6px rgba(0,0,0,0.9))
        drop-shadow(0 2px 4px rgba(0,0,0,0.8));
}
.medalla-plata  { filter: drop-shadow(0 0 8px rgba(203,213,225,0.9)) drop-shadow(0 2px 4px rgba(0,0,0,0.8)); }
.medalla-bronce { filter: drop-shadow(0 0 8px rgba(205,127,50,0.9))  drop-shadow(0 2px 4px rgba(0,0,0,0.8)); }

.corona-badge {
    font-size: 3em;
    top: -46px;
    filter:
        drop-shadow(0 0 12px rgba(251,191,36,1))
        drop-shadow(0 0 24px rgba(251,191,36,0.7))
        drop-shadow(0 3px 6px rgba(0,0,0,0.9));
    animation: corona-float 3s ease-in-out infinite;
}
@keyframes corona-float {
    0%, 100% { transform: translateX(-50%) translateY(0px); }
    50%       { transform: translateX(-50%) translateY(-6px); }
}

/* ── AVATAR ──────────────────────────────────────────── */
.avatar-marco {
    width: 82px;
    height: 82px;
    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto 8px;
    border: 3px solid var(--border-bright);
    background: var(--bg-card);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.8em;
    transition: box-shadow 0.3s;
    flex-shrink: 0;
}
.avatar-marco-grande { width: 102px; height: 102px; font-size: 2.1em; }

.pos-1 .avatar-marco {
    border-color: var(--accent-gold);
    box-shadow: 0 0 22px rgba(251,191,36,0.6), 0 0 44px rgba(251,191,36,0.18);
}
.pos-2 .avatar-marco {
    border-color: var(--accent-silver);
    box-shadow: 0 0 14px var(--glow-silver);
}
.pos-3 .avatar-marco {
    border-color: var(--accent-bronze);
    box-shadow: 0 0 14px var(--glow-bronze);
}

.podio-card h4 {
    margin: 6px 0 3px;
    font-size: 0.88em;
    color: var(--text-primary);
    line-height: 1.25;
    font-weight: 700;
    letter-spacing: 0.03em;
}
.podio-card p {
    margin: 0 0 7px;
    font-size: 0.75em;
    color: var(--text-secondary);
}

/* ── PUNTAJE TAG ─────────────────────────────────────── */
.puntaje-tag {
    display: inline-block;
    padding: 4px 12px;
    border-radius: var(--radius-pill);
    font-size: 0.82em;
    font-weight: 700;
    background: rgba(255,255,255,0.07);
    border: 1px solid var(--border-bright);
    color: var(--text-primary);
}
.pos-1 .puntaje-tag { background: rgba(251,191,36,0.15); border-color: rgba(251,191,36,0.55); color: var(--accent-gold); }
.pos-2 .puntaje-tag { background: rgba(203,213,225,0.10); border-color: rgba(203,213,225,0.35); color: var(--accent-silver); }
.pos-3 .puntaje-tag { background: rgba(205,127,50,0.12);  border-color: rgba(205,127,50,0.40);  color: var(--accent-bronze); }

/* ══════════════════════════════════════════════════════════
   PILAR METÁLICO CILÍNDRICO — número + laureles + columna
══════════════════════════════════════════════════════════ */
.barra-slot {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding-top: 6px;
    gap: 0;
}

/* Número de votos sobre el pilar */
.barra-encima {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4px 4px 8px;
    background: none;
    border: none;
}
.barra-numero {
    font-size: 2.6em;
    font-weight: 900;
    line-height: 1;
    letter-spacing: -0.04em;
}
.barra-numero-1 {
    color: var(--accent-gold);
    text-shadow: 0 0 24px rgba(251,191,36,1), 0 0 48px rgba(251,191,36,0.5);
}
.barra-numero-2 {
    color: var(--accent-silver);
    text-shadow: 0 0 18px rgba(203,213,225,0.85);
}
.barra-numero-3 {
    color: var(--accent-bronze);
    text-shadow: 0 0 18px rgba(205,127,50,0.8);
}

/* ── FILA PILAR + LAURELES ────────────────────────────── */
.barra-con-laureles {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 5px;
}

/* ── LAURELES SVG ─────────────────────────────────────── */
.laurel-svg {
    flex-shrink: 0;
    display: block;
    filter:
        drop-shadow(0 0 5px currentColor)
        drop-shadow(0 0 10px currentColor);
}
.laurel-der {
    transform: scaleX(-1);
    transform-box: fill-box;
    transform-origin: center;
}

.laurel-oro   { color: var(--accent-gold);   }
.laurel-plata { color: var(--accent-silver);  }
.laurel-bronce{ color: var(--accent-bronze);  }

/* Winner: glow doble más dramático */
.laurel-winner {
    filter:
        drop-shadow(0 0 7px rgba(251,191,36,0.95))
        drop-shadow(0 0 16px rgba(251,191,36,0.55))
        drop-shadow(0 0 28px rgba(251,191,36,0.28));
}

/* ── EL PILAR CILÍNDRICO (marco padre) ───────────────────
   50px de ancho — grueso, metálico, contundente           */
.barra-marco {
    width: 50px;
    height: 160px;
    background: transparent;
    border: none;
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    align-items: flex-end;
    flex-shrink: 0;
}
.barra-marco-winner {
    width: 58px;
    height: 200px;
}
.barra-marco-bronce {
    height: 110px;
}

/* ── EL FILL METÁLICO (hijo) ──────────────────────────── */
.barra-fill {
    width: 100%;
    height: var(--barra-altura, 0%);
    border-radius: 7px 7px 0 0;
    position: relative;
    transition: height 1s ease-out;
}
@keyframes crecer-barra {
    from { height: 0%; }
    to   { height: var(--barra-altura, 0%); }
}
.barra-fill.animando { animation: crecer-barra 1s ease-out forwards; }

/* Brillo base (destello en la base del cilindro — luz desde el suelo) */
.barra-fill::before {
    content: '';
    position: absolute;
    bottom: 0; top: auto; left: 15%; right: 15%;
    height: 14px;
    background: radial-gradient(ellipse at 50% 100%,
        rgba(255,255,255,0.65) 0%,
        rgba(255,255,255,0.15) 55%,
        transparent 100%);
    pointer-events: none;
}
/* Vena de luz vertical central (efecto cilindro — asciende desde la base) */
.barra-fill::after {
    content: '';
    position: absolute;
    bottom: 12px; top: 0;
    left: 36%; right: 36%;
    background: linear-gradient(to top,
        rgba(255,255,255,0.28) 0%,
        rgba(255,255,255,0.06) 60%,
        transparent 100%);
    pointer-events: none;
}

/* ── DEGRADADOS CILÍNDRICOS METÁLICOS ─────────────────────
   Gradiente 90deg = sección transversal del cilindro
   (borde oscuro → iluminado → brillo central → iluminado → borde oscuro) */
.barra-oro {
    background: linear-gradient(90deg,
        rgba(0,0,0,0.42)  0%,
        #7a5c00           6%,
        #b8860b          18%,
        #d4a017          32%,
        #fbbf24          44%,
        #fff7b0          50%,
        #fbbf24          56%,
        #d4a017          68%,
        #b8860b          82%,
        #7a5c00          94%,
        rgba(0,0,0,0.45) 100%
    );
    box-shadow:
        inset -5px 0 12px rgba(0,0,0,0.45),
        inset  4px 0  8px rgba(255,255,200,0.10),
        0 0 22px rgba(251,191,36,0.7),
        0 0 44px rgba(251,191,36,0.3);
}
.barra-plata {
    background: linear-gradient(90deg,
        rgba(0,0,0,0.38)  0%,
        #374151           6%,
        #6b7280          18%,
        #9ca3af          32%,
        #cbd5e1          44%,
        #f1f5f9          50%,
        #cbd5e1          56%,
        #9ca3af          68%,
        #6b7280          82%,
        #374151          94%,
        rgba(0,0,0,0.40) 100%
    );
    box-shadow:
        inset -5px 0 12px rgba(0,0,0,0.40),
        inset  4px 0  8px rgba(255,255,255,0.08),
        0 0 16px rgba(203,213,225,0.55),
        0 0 32px rgba(203,213,225,0.22);
}
.barra-bronce {
    background: linear-gradient(90deg,
        rgba(0,0,0,0.40)  0%,
        #6b3a1f           6%,
        #92400e          18%,
        #b45309          32%,
        #cd7f32          44%,
        #f5c07a          50%,
        #cd7f32          56%,
        #b45309          68%,
        #92400e          82%,
        #6b3a1f          94%,
        rgba(0,0,0,0.42) 100%
    );
    box-shadow:
        inset -5px 0 12px rgba(0,0,0,0.42),
        inset  4px 0  8px rgba(255,200,100,0.08),
        0 0 16px rgba(205,127,50,0.6),
        0 0 32px rgba(205,127,50,0.25);
}

/* ══════════════════════════════════════════════════════════
   LISTA COMPETITIVA (puestos 4+) — columna derecha
══════════════════════════════════════════════════════════ */
.fila-competitiva {
    display: flex;
    align-items: center;
    padding: 12px 16px;
    border-radius: 14px;
    color: white;
    font-weight: 600;
    min-height: 68px;
    border: 1px solid rgba(255,255,255,0.08);
    box-shadow: 0 3px 8px rgba(0,0,0,0.35);
    gap: 10px;
}
.num-pos-lista {
    font-size: 1.5em;
    font-weight: 900;
    width: 28px;
    text-align: center;
    flex-shrink: 0;
    opacity: 0.9;
}
.fila-competitiva .mini-foto {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    overflow: hidden;
    background: rgba(255,255,255,0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin: 0;
    border: 2px solid rgba(56,189,248,0.25);
    font-size: 1.5em;
}
.nom-candidato-lista {
    font-size: 0.82em;
    font-weight: 700;
    letter-spacing: 0.03em;
    line-height: 1.25;
    flex: 1;
    min-width: 0;
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* Barra horizontal */
.barra-h-wrapper {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}
.barra-h-base {
    flex: 1;
    height: 9px;
    background: rgba(0,0,0,0.35);
    border-radius: 5px;
    overflow: hidden;
    min-width: 0;
}
.barra-h-fill {
    height: 100%;
    width: var(--barra-h-width, 0%);
    border-radius: 5px;
    position: relative;
    transition: width 1s ease-out;
}
@keyframes crecer-barra-h {
    from { width: 0%; }
    to   { width: var(--barra-h-width, 0%); }
}
.barra-h-fill.animando { animation: crecer-barra-h 0.9s ease-out forwards; }
.barra-h-fill::after {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 50%;
    background: linear-gradient(to bottom, rgba(255,255,255,0.28) 0%, transparent 100%);
    border-radius: 5px 5px 0 0;
}
.votos-label-lista {
    font-size: 1.1em;
    font-weight: 800;
    min-width: 36px;
    text-align: right;
    opacity: 0.95;
    flex-shrink: 0;
}

/* ── Fondo unificado azul medianoche para todas las filas ─ */
.fc-magenta,
.fc-naranja,
.fc-cyan,
.fc-purple,
.fc-teal,
.fc-indigo {
    background: linear-gradient(135deg, #0B192C 0%, #112240 100%);
    border: 1px solid #1E3A8A;
    box-shadow: 0 0 8px rgba(56,189,248,0.08);
    color: #E2E8F0;
}

/* Barra horizontal unificada — cian neón */
.bh-magenta,
.bh-naranja,
.bh-cyan,
.bh-purple,
.bh-teal,
.bh-indigo {
    background: linear-gradient(90deg, #0ea5e9 0%, #38bdf8 60%, #7dd3fc 100%);
}

/* ── Responsive ────────────────────────────────────────── */
@media (max-width: 860px) {
    /* Revertir a layout apilado en tablet/móvil */
    .ranking-body      { flex-direction: column; gap: 20px; }
    .ranking-col-podio { flex: none; width: 100%; }
    .ranking-col-lista { flex: none; width: 100%; }
    .fila-competitiva                { min-height: 60px; }
    .fila-competitiva .mini-foto     { width: 48px; height: 48px; }
}
@media (max-width: 600px) {
    .podio-container-3d  { gap: 6px; padding-top: 34px; }
    .avatar-marco        { width: 64px; height: 64px; font-size: 1.5em; }
    .avatar-marco-grande { width: 80px; height: 80px; font-size: 1.9em; }
    .podio-card h4       { font-size: 0.78em; }
    .barra-numero        { font-size: 1.8em; }
    .barra-marco         { width: 36px; height: 110px; }
    .barra-marco-winner  { width: 42px; height: 140px; }
    .barra-marco-bronce  { height: 75px; }
    .laurel-svg          { width: 28px !important; height: 50px !important; }
    .laurel-winner       { width: 34px !important; height: 60px !important; }
    .medalla-badge       { font-size: 2em; top: -30px; }
    .corona-badge        { font-size: 2.5em; top: -38px; }
    .avatar-marco-grande { width: 80px; height: 80px; }
}

/* ══════════════════════════════════════════════════════════
   LISTA DE RANKING Y VOTACIÓN
══════════════════════════════════════════════════════════ */
.ranking-lista { display: flex; flex-direction: column; gap: 14px; margin-top: 20px; }

.fila-ranking {
    display: flex;
    align-items: center;
    padding: 14px 18px;
    border-radius: 14px;
    color: white;
    font-weight: 600;
    box-shadow: 0 4px 12px rgba(0,0,0,0.35);
    min-height: 74px;
    border: 1px solid rgba(255,255,255,0.08);
}

/* Filas de seccion-votar — azul medianoche unificado (todos los color-N) */
.color-1, .color-2, .color-3,
.color-4, .color-5, .color-6, .color-7 {
    background: linear-gradient(135deg, #0B192C 0%, #112240 100%);
    border: 1px solid #1E3A8A;
    box-shadow: 0 0 8px rgba(56,189,248,0.06);
    color: #E2E8F0;
}

.numero-pos { width: 46px; font-size: 1.4em; text-align: left; }
.mini-foto {
    width: 58px;
    height: 58px;
    border-radius: 50%;
    overflow: hidden;
    background: rgba(255,255,255,0.15);
    margin: 0 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    border: 2px solid rgba(255,255,255,0.2);
}
.avatar-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.emoji-respaldo { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 1.4em; }
.avatar-marco .emoji-respaldo { font-size: 2em; }

.nombre-entidad { flex-grow: 1; text-align: left; font-size: 1.15em; line-height: 1.2; }
.meta-puntos {
    margin-right: 14px;
    background: rgba(0,0,0,0.25);
    padding: 5px 12px;
    border-radius: 18px;
    font-size: 0.95em;
}

/* ══════════════════════════════════════════════════════════
   TARJETA DE CANDIDATO — SECCIÓN VOTAR (rediseño premium)
══════════════════════════════════════════════════════════ */
.card-candidato-votar {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px 20px;
    border-radius: 16px;
    background: linear-gradient(135deg, #0B192C 0%, #112240 100%);
    border: 1px solid #1E3A8A;
    box-shadow: 0 2px 12px rgba(0,0,0,0.35), 0 0 8px rgba(56,189,248,0.06);
    transition: border-color 0.22s, box-shadow 0.22s, transform 0.2s;
}
.card-candidato-votar:hover {
    border-color: rgba(56,189,248,0.45);
    box-shadow: 0 4px 20px rgba(0,0,0,0.4), 0 0 18px rgba(56,189,248,0.15);
    transform: translateY(-2px);
}
.card-candidato-votar:active {
    transform: translateY(0) scale(0.995);
    transition-duration: 0.08s;
}
/* Número de posición */
.cand-pos {
    font-size: 1.4em;
    font-weight: 900;
    color: rgba(148,163,184,0.6);
    width: 34px;
    text-align: center;
    flex-shrink: 0;
    letter-spacing: -0.02em;
}
/* Foto grande para identificación */
.card-candidato-votar .mini-foto {
    width: 72px;
    height: 72px;
    margin: 0;
    border: 2px solid rgba(56,189,248,0.3);
    font-size: 1.8em;
}
/* Nombre + votos apilados */
.cand-texto {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 5px;
    min-width: 0;
}
.cand-nombre {
    font-size: 1.05em;
    font-weight: 700;
    color: #e2e8f0;
    line-height: 1.2;
    letter-spacing: 0.03em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}
.cand-votos-badge {
    font-size: 0.72em;
    font-weight: 600;
    color: #38bdf8;
    letter-spacing: 0.06em;
    opacity: 0.85;
}
/* Responsive: columna en mobile muy estrecho */
@media (max-width: 420px) {
    .card-candidato-votar { gap: 12px; padding: 14px 14px; }
    .card-candidato-votar .mini-foto { width: 58px; height: 58px; }
    .cand-nombre { font-size: 0.95em; }
}

/* ══════════════════════════════════════════════════════════
   SECCIÓN VOTAR
══════════════════════════════════════════════════════════ */
.votar-header-marco {
    border: 2px solid #FFD700;
    box-shadow: 0 0 18px rgba(255,215,0,0.38), 0 0 40px rgba(255,215,0,0.12);
    border-radius: 15px;
    padding: 20px 24px;
    background: linear-gradient(135deg, #0B192C 0%, #112240 100%);
    text-align: center;
    margin-bottom: 20px;
}
.votar-titulo-principal {
    margin: 0;
    font-size: 1.5em;
    font-weight: 800;
    letter-spacing: 0.04em;
    color: #FFD700;
    text-shadow: 0 0 12px rgba(255,215,0,0.55);
}
.votar-subtitulo {
    margin: 6px 0 0;
    color: #94a3b8;
    font-size: 0.9em;
}

.btn-votar-ahora {
    background: transparent;
    color: #FFD700;
    border: 2px solid #FFD700;
    padding: 9px 18px;
    border-radius: var(--radius-pill);
    font-weight: 700;
    font-size: 0.95em;
    cursor: pointer;
    transition: 0.25s;
    font-family: inherit;
    box-shadow: 0 0 8px rgba(255,215,0,0.2);
}
.btn-votar-ahora:hover {
    background: rgba(255,215,0,0.12);
    color: #FFD700;
    box-shadow: 0 0 18px rgba(255,215,0,0.5);
}

/* ══════════════════════════════════════════════════════════
   FOOTER
══════════════════════════════════════════════════════════ */
footer {
    background: var(--bg-surface);
    border-top: 1px solid var(--border);
    color: var(--text-muted);
    padding: 18px 20px;
    font-size: 0.88em;
    width: 100%;
    margin-top: auto;
}

/* ══════════════════════════════════════════════════════════
   MODAL DE NOTIFICACIONES
══════════════════════════════════════════════════════════ */
#modal-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.7); z-index: 9999; align-items: center; justify-content: center; backdrop-filter: blur(4px); }
#modal-caja {
    background: var(--bg-card);
    border: 1px solid var(--border-bright);
    border-radius: 20px;
    padding: 32px 28px;
    max-width: 420px;
    width: 90%;
    box-shadow: 0 20px 60px rgba(0,0,0,0.6);
    position: relative;
    text-align: center;
    border-top: 4px solid var(--accent-blue);
}
#modal-cerrar { position: absolute; top: 10px; right: 16px; background: none; border: none; font-size: 1.6em; cursor: pointer; color: var(--text-muted); line-height: 1; transition: color 0.2s; }
#modal-cerrar:hover { color: var(--text-primary); }
#modal-icono { font-size: 3em; margin-bottom: 8px; }
#modal-titulo { margin: 0 0 10px 0; font-size: 1.2em; color: var(--text-primary); font-weight: 700; }
#modal-mensaje { color: var(--text-secondary); line-height: 1.65; margin: 0 0 22px 0; font-size: 0.97em; }
.modal-btn-primary { background: #10b981; color: white; border: none; border-radius: var(--radius-pill); padding: 12px 28px; font-size: 1em; font-weight: 700; cursor: pointer; width: 100%; margin-bottom: 10px; transition: background 0.2s, box-shadow 0.2s; font-family: inherit; }
.modal-btn-primary:hover { background: #059669; box-shadow: 0 0 20px rgba(16,185,129,0.45); }
.modal-btn-primary .check-icono { color: #046307; font-weight: 900; }
.modal-btn-secondary { background: rgba(255,255,255,0.08); color: var(--text-secondary); border: 1px solid var(--border); border-radius: var(--radius-pill); padding: 10px 28px; font-size: 0.95em; cursor: pointer; width: 100%; transition: background 0.2s; font-family: inherit; }
.modal-btn-secondary:hover { background: rgba(255,255,255,0.14); }

/* ── BOTONES DE LOGIN SOCIAL (modal de autenticación) ───────── */
.modal-btn-login {
    display: flex; align-items: center; justify-content: center;
    gap: 0; border: none; border-radius: var(--radius-pill);
    padding: 13px 28px; font-size: 1em; font-weight: 700;
    cursor: pointer; width: 100%; margin-bottom: 12px;
    transition: transform 0.15s, box-shadow 0.2s, filter 0.2s;
    font-family: inherit; position: relative; overflow: hidden;
    letter-spacing: 0.01em;
}
.modal-btn-login:disabled { opacity: 0.65; cursor: not-allowed; transform: none !important; }
.modal-btn-login:not(:disabled):active { transform: scale(0.97); }
.modal-btn-login-google {
    background: #ffffff;
    color: #3c4043;
    box-shadow: 0 2px 12px rgba(255,255,255,0.15), 0 0 0 1px rgba(255,255,255,0.18);
}
.modal-btn-login-google:not(:disabled):hover {
    background: #f8f9fa;
    box-shadow: 0 0 22px rgba(255,255,255,0.35), 0 0 0 1px rgba(255,255,255,0.4);
    transform: translateY(-1px);
}
.google-login-wrap {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    max-width: 100%;
}
.google-login-wrap-modal {
    width: 100%;
}
.google-login-wrap-nav {
    vertical-align: middle;
}
.google-login-button-slot {
    display: inline-flex;
    min-height: 40px;
    max-width: 100%;
    align-items: center;
    justify-content: center;
}
.google-login-button-slot iframe {
    max-width: 100%;
}
.google-login-fallback {
    min-height: 42px;
}
.google-login-status {
    color: var(--text-secondary);
    font-size: 0.82em;
    line-height: 1.35;
    max-width: 320px;
    text-align: center;
}
.google-login-wrap-nav .google-login-status {
    max-width: 250px;
    font-size: 0.75em;
}
.social-login-row.google-login-wrap {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
}
.social-login-row.social-login-nav.google-login-wrap {
    max-width: 230px;
}
.social-login-row.social-login-modal.google-login-wrap {
    max-width: 330px;
}
.google-login-redirect-fallback {
    border: 0;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
    font-family: inherit;
    font-size: 0.78em;
    line-height: 1.25;
    padding: 2px 4px;
    text-decoration: underline;
    text-underline-offset: 3px;
}
.google-login-redirect-fallback:hover,
.google-login-redirect-fallback:focus-visible {
    color: var(--text-primary);
}

/* ══════════════════════════════════════════════════════════
   SOCIAL LOGIN — Botones neón/dark Google + Facebook
   Layout 50/50 lado a lado en escritorio, full-width en móvil.
   Render unificado: ver _renderSocialLoginButtons() en app.js
══════════════════════════════════════════════════════════ */
@keyframes social-neon-pulse-google {
    0%, 100% { box-shadow: 0 0 0 1px rgba(77,166,255,0.45), 0 0 12px rgba(77,166,255,0.35), inset 0 0 0 1px rgba(255,255,255,0.04); }
    50%      { box-shadow: 0 0 0 1px rgba(0,229,255,0.65),  0 0 22px rgba(0,229,255,0.55), inset 0 0 0 1px rgba(255,255,255,0.06); }
}
@keyframes social-neon-pulse-facebook {
    0%, 100% { box-shadow: 0 0 0 1px rgba(24,119,242,0.55), 0 0 12px rgba(24,119,242,0.40), inset 0 0 0 1px rgba(255,255,255,0.04); }
    50%      { box-shadow: 0 0 0 1px rgba(96,165,250,0.75), 0 0 22px rgba(96,165,250,0.55), inset 0 0 0 1px rgba(255,255,255,0.06); }
}

.social-login-row {
    display: flex;
    flex-direction: row;
    gap: 8px;
    align-items: stretch;
    justify-content: center;
    width: 100%;
    max-width: 100%;
}
.social-login-row.social-login-modal { gap: 10px; margin-top: 4px; }
.social-login-row.social-login-nav   { gap: 8px; }

/* Single-provider (solo Google visible): centra y limita el ancho para
   que no quede estirado. Facebook está oculto temporalmente; al
   reactivarlo, esta clase ya no se aplicará. */
.social-login-row.social-login-solo {
    max-width: 320px;
    margin-left: auto;
    margin-right: auto;
}
.social-login-row.social-login-solo .social-login-btn {
    flex: 0 1 auto;
    min-width: 200px;
}
.social-login-row.social-login-nav.social-login-solo {
    max-width: 220px;
}
.social-login-row.social-login-nav.social-login-solo .social-login-btn {
    min-width: 0;
    width: 100%;
}
.drawer-auth .social-login-row.social-login-solo {
    max-width: 100%;
}
.drawer-auth .social-login-row.social-login-solo .social-login-btn {
    width: 100%;
    min-width: 0;
}

.social-login-btn {
    flex: 1 1 0;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 14px;
    border-radius: var(--radius-pill);
    border: 1px solid var(--border-bright);
    background: linear-gradient(145deg, #161e34 0%, #0d1326 100%);
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.92em;
    font-weight: 700;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: transform 0.18s cubic-bezier(0.4,0,0.2,1),
                background 0.2s, filter 0.2s;
    position: relative;
    overflow: hidden;
    -webkit-tap-highlight-color: transparent;
    line-height: 1;
    min-height: 40px;
}
.social-login-btn:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}
.social-login-btn:disabled {
    opacity: 0.55;
    cursor: progress;
    transform: none !important;
}
.social-login-btn:not(:disabled):hover {
    background: linear-gradient(145deg, #1c2746 0%, #121a32 100%);
    transform: translateY(-1px);
}
.social-login-btn:not(:disabled):active {
    transform: scale(0.97);
}
.social-login-btn-icon {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    display: block;
}
.social-login-btn-label {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}
.social-login-btn.is-loading .social-login-btn-label::after {
    content: ' ⏳';
}

.social-login-btn-google {
    animation: social-neon-pulse-google 2.6s ease-in-out infinite;
}
.social-login-btn-google:not(:disabled):hover {
    border-color: rgba(0,229,255,0.6);
}
.social-login-btn-facebook {
    animation: social-neon-pulse-facebook 2.6s ease-in-out infinite;
}
.social-login-btn-facebook:not(:disabled):hover {
    border-color: rgba(96,165,250,0.8);
}
.social-login-btn-facebook .social-login-btn-icon {
    color: #1877F2;
}

/* Variante modal: botones más anchos y altos */
.social-login-row.social-login-modal .social-login-btn {
    padding: 13px 16px;
    font-size: 0.98em;
    min-height: 46px;
}
.social-login-row.social-login-modal .social-login-btn-icon {
    width: 20px;
    height: 20px;
}

/* Variante nav escritorio: compactos, una sola línea */
.social-login-row.social-login-nav {
    max-width: 280px;
}
.social-login-row.social-login-nav .social-login-btn {
    padding: 8px 12px;
    font-size: 0.85em;
    min-height: 36px;
}
.social-login-row.social-login-nav .social-login-btn-icon {
    width: 16px;
    height: 16px;
}

/* ── AVATAR EN NAV DE ESCRITORIO ────────────────────────────── */
@keyframes neon-pulse-avatar {
    0%, 100% { box-shadow: 0 0 6px #4da6ff, 0 0 14px rgba(77,166,255,0.7), 0 0 26px rgba(77,166,255,0.35); }
    50%       { box-shadow: 0 0 10px #00e5ff, 0 0 22px rgba(0,229,255,0.75), 0 0 40px rgba(0,229,255,0.35); }
}
.nav-avatar-wrap {
    display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; border-radius: 50%;
    overflow: hidden; margin-right: 8px; vertical-align: middle;
    border: 2px solid #4da6ff;
    animation: neon-pulse-avatar 2.4s ease-in-out infinite;
    flex-shrink: 0;
}
.nav-avatar-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nav-avatar-placeholder { font-size: 18px; line-height: 1; }
.nav-user-nombre { vertical-align: middle; }

/* ── POPUP BIENVENIDA VOTAR ─────────────────────────────────── */
@keyframes fadeInOverlay {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes slideUpModal {
    from { opacity: 0; transform: translateY(40px) scale(0.96); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* ─────────────────────────────────────────────────────────── */

/* ══ POPUP PODER CIUDADANO (post-voto, gamificado) ══════════════ */
#popup-perfil-overlay {
    display: none; position: fixed; inset: 0;
    background: rgba(0,0,0,0.82); z-index: 10002;
    align-items: center; justify-content: center;
    backdrop-filter: blur(8px);
    animation: fadeInOverlay 0.3s ease;
    overflow-y: auto; padding: 16px 0;
}
#popup-perfil-overlay.activo { display: flex; }

#popup-perfil-caja {
    background: linear-gradient(160deg, #080f1e 0%, #0d1a2e 55%, #0a1628 100%);
    border: 1px solid rgba(14,165,233,0.25);
    border-top: 3px solid #0ea5e9;
    border-radius: 24px;
    padding: 32px 28px 26px;
    max-width: 480px; width: 94%;
    box-shadow:
        0 0 0 1px rgba(14,165,233,0.08),
        0 0 60px rgba(14,165,233,0.12),
        0 24px 64px rgba(0,0,0,0.7);
    position: relative; text-align: center;
    animation: slideUpModal 0.45s cubic-bezier(0.34,1.56,0.64,1);
}

#popup-perfil-cerrar {
    position: absolute; top: 14px; right: 18px;
    background: none; border: none; font-size: 1.5em;
    cursor: pointer; color: var(--text-muted); line-height: 1;
    transition: color 0.2s, transform 0.15s;
}
#popup-perfil-cerrar:hover { color: #e2e8f0; transform: rotate(90deg); }

/* Header */
.perfil-poder-header { display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 18px; }
.perfil-poder-icono { font-size: 1.8em; filter: drop-shadow(0 0 12px rgba(14,165,233,0.9)); animation: pv-pulse 2s ease-in-out infinite; }
.perfil-poder-header h3 {
    margin: 0; font-size: 1.25em; font-weight: 800;
    background: linear-gradient(90deg, #0ea5e9 0%, #38bdf8 50%, #7dd3fc 100%);
    -webkit-background-clip: text; -webkit-text-fill-color: transparent;
    background-clip: text; letter-spacing: 0.01em;
}

/* Barra de poder */
.perfil-poder-barra-wrap {
    display: flex; align-items: center; gap: 12px; margin-bottom: 20px;
}
.perfil-poder-barra-track {
    flex: 1; height: 10px;
    background: rgba(255,255,255,0.08);
    border-radius: 99px; overflow: hidden;
    box-shadow: inset 0 1px 3px rgba(0,0,0,0.4);
}
.perfil-poder-barra-fill {
    height: 100%; width: 40%;
    background: linear-gradient(90deg, #0284c7 0%, #0ea5e9 60%, #38bdf8 100%);
    border-radius: 99px;
    transition: width 0.55s cubic-bezier(0.34,1.2,0.64,1);
    box-shadow: 0 0 14px rgba(14,165,233,0.65);
    position: relative; overflow: hidden;
}
.perfil-poder-barra-fill::after {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.22) 50%, transparent 100%);
    animation: perfil-shimmer 1.8s ease-in-out infinite;
}
@keyframes perfil-shimmer {
    0%   { transform: translateX(-100%); }
    100% { transform: translateX(200%); }
}
.perfil-poder-barra-fill.completo {
    background: linear-gradient(90deg, #059669 0%, #10b981 60%, #34d399 100%);
    box-shadow: 0 0 20px rgba(16,185,129,0.75);
    animation: perfil-poder-pulse 0.6s ease-in-out 2;
}
@keyframes perfil-poder-pulse {
    0%, 100% { box-shadow: 0 0 20px rgba(16,185,129,0.75); }
    50%       { box-shadow: 0 0 36px rgba(16,185,129,1), 0 0 64px rgba(16,185,129,0.4); }
}
.perfil-poder-pct {
    font-size: 0.82em; font-weight: 800; min-width: 38px; text-align: right;
    color: #38bdf8; transition: color 0.4s;
    text-shadow: 0 0 12px rgba(56,189,248,0.7);
}
.perfil-poder-pct.completo { color: #34d399; text-shadow: 0 0 12px rgba(52,211,153,0.7); }

/* Mensaje principal */
.perfil-mensaje-principal {
    font-size: 0.9em; line-height: 1.6; color: var(--text-secondary);
    margin: 0 0 22px; border-radius: 12px;
    background: rgba(14,165,233,0.07);
    padding: 12px 14px;
    border: 1px solid rgba(14,165,233,0.15);
}

/* Grupos de pills */
.perfil-pill-grupo { margin-bottom: 16px; text-align: left; }
.perfil-pill-label {
    font-size: 0.8em; font-weight: 700; color: var(--text-muted);
    letter-spacing: 0.05em; text-transform: uppercase;
    margin-bottom: 8px;
}
.perfil-pill-row {
    display: flex; flex-wrap: wrap; gap: 7px;
}
.perfil-pill {
    padding: 7px 14px; border-radius: 99px; cursor: pointer;
    font-size: 0.86em; font-weight: 600; font-family: inherit;
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.14);
    color: var(--text-secondary);
    transition: background 0.18s, border-color 0.18s, color 0.18s, transform 0.12s, box-shadow 0.18s;
    line-height: 1.3; user-select: none;
}
.perfil-pill:hover {
    border-color: rgba(14,165,233,0.45);
    color: var(--text-primary);
    transform: translateY(-1px);
}
.perfil-pill[aria-pressed="true"] {
    background: linear-gradient(135deg, #0369a1 0%, #0ea5e9 60%, #38bdf8 100%);
    border-color: transparent;
    color: #fff;
    box-shadow: 0 0 18px rgba(14,165,233,0.5), 0 2px 8px rgba(0,0,0,0.3);
    transform: translateY(-1px);
}
.perfil-pill.edad-pill,
.pp-pill.edad-pill {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    min-width: 128px;
    min-height: 48px;
    border-radius: 16px;
    text-align: center;
}
.edad-pill-rango {
    font-weight: 800;
    line-height: 1.05;
}
.edad-pill-generacion {
    max-width: 100%;
    font-size: 0.74em;
    font-weight: 650;
    line-height: 1.08;
    color: var(--text-muted);
    overflow-wrap: anywhere;
}
.perfil-pill[aria-pressed="true"] .edad-pill-generacion,
.pp-pill.seleccionado .edad-pill-generacion {
    color: rgba(255,255,255,0.86);
}

/* Botón principal */
#popup-perfil-btn-votar {
    background: linear-gradient(135deg, #0284c7 0%, #0ea5e9 60%, #38bdf8 100%);
    color: #fff; border: none; border-radius: var(--radius-pill);
    padding: 14px 32px; font-size: 1.05em; font-weight: 800;
    cursor: pointer; width: 100%; margin-top: 20px; margin-bottom: 12px;
    font-family: inherit; letter-spacing: 0.02em;
    transition: transform 0.15s, box-shadow 0.15s, opacity 0.2s;
    box-shadow: 0 4px 24px rgba(14,165,233,0.45);
}
#popup-perfil-btn-votar:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 8px 32px rgba(14,165,233,0.65);
}
#popup-perfil-btn-votar:active:not(:disabled) { transform: translateY(0); }
#popup-perfil-btn-votar:disabled {
    opacity: 0.38; cursor: not-allowed;
    background: rgba(255,255,255,0.1);
    box-shadow: none;
}
#popup-perfil-btn-votar.completo {
    background: linear-gradient(135deg, #059669 0%, #10b981 60%, #34d399 100%);
    box-shadow: 0 4px 24px rgba(16,185,129,0.5);
}

/* Botón secundario (saltar) */
#popup-perfil-btn-saltar {
    background: none; border: none;
    color: rgba(148,163,184,0.6); font-size: 0.82em;
    cursor: pointer; text-decoration: underline;
    font-family: inherit; transition: color 0.2s; display: block; margin: 0 auto;
}
#popup-perfil-btn-saltar:hover { color: var(--text-secondary); }

/* ─────────────────────────────────────────────────────────── */

/* ── POP-UP GEO PERSUASIVO — Neon Command Center ──────────── */
#popup-geo-overlay {
    display: none; position: fixed; inset: 0;
    background: rgba(0, 0, 0, 0.78); z-index: 9998;
    align-items: center; justify-content: center;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}
#popup-geo-overlay.activo { display: flex; }
#popup-geo-caja {
    background: linear-gradient(145deg, #0a1330 0%, #0d1b3e 60%, #091428 100%);
    border: 1px solid rgba(6, 182, 212, 0.40);
    border-top: 2px solid rgba(6, 182, 212, 0.80);
    border-radius: 22px;
    padding: 30px 28px 24px;
    max-width: 380px; width: 90%;
    text-align: center;
    position: relative;
    animation: slideUpModal 0.38s cubic-bezier(0.34, 1.56, 0.64, 1);
    box-shadow:
        0 0 0 1px rgba(6, 182, 212, 0.12) inset,
        0 0 48px rgba(6, 182, 212, 0.22),
        0 0 96px rgba(6, 182, 212, 0.08),
        0 28px 70px rgba(0, 0, 0, 0.72);
}
#popup-geo-cerrar {
    position: absolute; top: 11px; right: 15px;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.10);
    border-radius: 50%;
    width: 28px; height: 28px;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.1em; cursor: pointer; color: var(--text-muted);
    line-height: 1; transition: background 0.2s, color 0.2s;
}
#popup-geo-cerrar:hover { background: rgba(255,255,255,0.14); color: var(--text-primary); }
#popup-geo-emoji {
    font-size: 2.8em; margin-bottom: 10px;
    filter: drop-shadow(0 0 12px rgba(6,182,212,0.70));
    animation: geo-emoji-pulse 2.8s ease-in-out infinite;
}
@keyframes geo-emoji-pulse {
    0%, 100% { filter: drop-shadow(0 0 10px rgba(6,182,212,0.65)); }
    50%       { filter: drop-shadow(0 0 22px rgba(6,182,212,0.95)); }
}
#popup-geo-caja h3 { margin: 0 0 12px; font-size: 1.14em; color: var(--text-primary); font-weight: 800; letter-spacing: 0.02em; }
#popup-geo-caja p  { color: var(--text-secondary); font-size: 0.90em; line-height: 1.65; margin: 0 0 20px; }
.popup-geo-btn-primary {
    background: linear-gradient(135deg, #0369a1 0%, #0891b2 50%, #06b6d4 100%);
    color: white; border: none; border-radius: var(--radius-pill);
    padding: 12px 24px; font-size: 0.97em; font-weight: 700;
    cursor: pointer; width: 100%; margin-bottom: 9px;
    transition: transform 0.15s, box-shadow 0.2s; font-family: inherit;
    box-shadow: 0 4px 20px rgba(6, 182, 212, 0.38);
}
.popup-geo-btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 32px rgba(6, 182, 212, 0.58);
}
.popup-geo-btn-secondary {
    background: rgba(255, 255, 255, 0.05);
    color: var(--text-muted);
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: var(--radius-pill);
    padding: 10px 24px; font-size: 0.88em;
    cursor: pointer; width: 100%;
    transition: background 0.2s, color 0.2s, border-color 0.2s;
    font-family: inherit;
}
.popup-geo-btn-secondary:hover {
    background: rgba(255, 255, 255, 0.10);
    color: var(--text-primary);
    border-color: rgba(255, 255, 255, 0.22);
}

/* ── NEGOCIOS LOCALES — ZONA GEOLOCALIZADA ──────────────────── */
#negocios-zona-seccion {
    display: none;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: center;
    max-width: 860px;
    margin: 10px auto;
    padding: 0 16px;
}
.negocio-zona-tarjeta {
    display: flex; align-items: center; gap: 10px;
    background: var(--bg-card);
    border: 1px solid var(--border-bright);
    border-radius: 12px;
    padding: 10px 16px;
    text-decoration: none; color: var(--text-primary);
    transition: transform 0.18s, box-shadow 0.18s;
    max-width: 320px;
}
.negocio-zona-tarjeta:hover { transform: translateY(-3px); box-shadow: 0 6px 24px var(--glow-cyan); }
.negocio-zona-tarjeta img { width: 52px; height: 52px; object-fit: cover; border-radius: 8px; flex-shrink: 0; }
.negocio-zona-icono { width: 52px; height: 52px; display: flex; align-items: center; justify-content: center; font-size: 1.8em; flex-shrink: 0; }
.negocio-zona-info { text-align: left; }
.negocio-zona-nombre { display: block; font-weight: 700; font-size: 0.92em; }
.negocio-zona-desc   { display: block; color: var(--text-secondary); font-size: 0.82em; margin-top: 2px; }

/* ── BANNER FANTASMA GEO ────────────────────────────────────── */
#geo-banner-fantasma {
    text-align: center;
    margin: 0 auto 14px;
}
.geo-banner-btn {
    background: none;
    border: 1px dashed rgba(6,182,212,0.4);
    border-radius: var(--radius-pill);
    color: var(--text-muted);
    font-size: 0.82em;
    padding: 7px 20px;
    cursor: pointer;
    font-family: inherit;
    transition: color 0.2s, border-color 0.2s;
}
.geo-banner-btn:hover {
    color: var(--accent-cyan);
    border-color: var(--accent-cyan);
}
.geo-banner-btn span { text-decoration: underline; }
/* ─────────────────────────────────────────────────────────── */

/* ── SKELETON LOADERS ───────────────────────────────────────── */
@keyframes sk-shimmer {
    0%   { background-position: -600px 0; }
    100% { background-position: 600px 0; }
}
.sk-pulse {
    background: linear-gradient(90deg,
        rgba(255,255,255,0.04) 25%,
        rgba(255,255,255,0.11) 50%,
        rgba(255,255,255,0.04) 75%);
    background-size: 1200px 100%;
    animation: sk-shimmer 1.5s infinite linear;
    border-radius: 8px;
    display: block;
}
/* Cards en sección Votar */
.skeleton-card {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px 20px;
    border-radius: 16px;
    background: linear-gradient(135deg, #0B192C 0%, #112240 100%);
    border: 1px solid rgba(30,58,138,0.35);
}
.sk-pos-block   { width: 34px;  height: 26px; flex-shrink: 0; }
.sk-avatar-block{ width: 72px;  height: 72px; border-radius: 50%; flex-shrink: 0; }
.sk-texto-wrap  { flex: 1; display: flex; flex-direction: column; gap: 9px; }
.sk-line-long   { height: 15px; width: 70%; }
.sk-line-short  { height: 11px; width: 38%; }
.sk-btn-block   { width: 86px;  height: 36px; border-radius: 999px; flex-shrink: 0; }
/* Podio */
.sk-podio-avatar{ width: 68px; height: 68px; border-radius: 50%; margin: 0 auto 8px; }
.sk-podio-nombre{ height: 13px; width: 80%; margin: 6px auto; }
.sk-podio-score { height: 18px; width: 45%; margin: 4px auto; }
/* Lista competitiva */
.skeleton-fila  {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 14px; border-radius: 12px;
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.04);
    margin-bottom: 6px;
}
.sk-num-lista   { width: 24px; height: 18px; border-radius: 4px; flex-shrink: 0; }
.sk-mini-foto   { width: 44px; height: 44px; border-radius: 50%; flex-shrink: 0; }
.sk-nombre-lista{ height: 14px; flex: 1; }
.sk-barra-lista { height: 10px; width: 100px; border-radius: 6px; }
.sk-votos-lista { width: 28px;  height: 12px; border-radius: 4px; }
/* ─────────────────────────────────────────────────────────── */

/* ══════════════════════════════════════════════════════════
   RESPONSIVE — sidebars adaptativos por tamaño de pantalla
══════════════════════════════════════════════════════════ */
@media (max-width: 1100px) and (min-width: 900px) {
    /* Pantallas medianas: sidebars más delgados pero visibles */
    .cuadro-promo-lateral { width: 110px; min-width: 110px; }
}
@media (max-width: 900px) {
    /* Móvil/tablet: ocultar sidebars, no caben */
    .cuadro-promo-lateral { display: none; }
}
@media (max-width: 600px) {
    .cuadro-promo-horizontal { min-height: 60px; }
    .simulador-mapa-ecuador { grid-template-columns: 1fr; }
.avatar-marco-grande { width: 80px; height: 80px; }
}

/* ══════════════════════════════════════════════════════════
   TOAST DE VOTO EXITOSO — glassmorphism verde
══════════════════════════════════════════════════════════ */
#toast-voto {
    position: fixed;
    bottom: 28px;
    right: 28px;
    z-index: 10003;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 20px 20px;
    min-width: 290px;
    max-width: 370px;
    background: rgba(16, 185, 129, 0.13);
    backdrop-filter: blur(22px) saturate(1.6);
    -webkit-backdrop-filter: blur(22px) saturate(1.6);
    border: 1px solid rgba(16, 185, 129, 0.42);
    border-radius: 18px;
    box-shadow:
        0 8px 32px rgba(0, 0, 0, 0.5),
        0 0 0 1px rgba(16, 185, 129, 0.08) inset,
        0 0 28px rgba(16, 185, 129, 0.1);
    pointer-events: none;
    overflow: hidden;
    font-family: 'Inter', system-ui, sans-serif;
    opacity: 0;
    transform: translateX(calc(100% + 44px));
    transition: opacity 0.38s ease, transform 0.38s cubic-bezier(0.34, 1.56, 0.64, 1);
}
#toast-voto.toast-visible {
    opacity: 1;
    transform: translateX(0);
}
#toast-voto.toast-saliendo {
    opacity: 0;
    transform: translateX(calc(100% + 44px));
    transition: opacity 0.42s ease-in, transform 0.42s ease-in;
}
#toast-voto-icono {
    font-size: 1.9em;
    flex-shrink: 0;
    line-height: 1;
}
#toast-voto-texto {
    display: flex;
    flex-direction: column;
    gap: 3px;
    flex: 1;
    min-width: 0;
}
#toast-voto-titulo {
    font-size: 0.93em;
    font-weight: 700;
    color: #d1fae5;
    line-height: 1.3;
}
#toast-voto-candidato {
    font-size: 0.8em;
    color: #6ee7b7;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
#toast-voto-barra {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 3px;
    width: 100%;
    background: rgba(16, 185, 129, 0.75);
    transform-origin: left center;
    transform: scaleX(1);
}
#toast-voto.toast-visible #toast-voto-barra {
    animation: toast-barra-consumir 6s linear forwards;
}
@keyframes toast-barra-consumir {
    from { transform: scaleX(1); }
    to   { transform: scaleX(0); }
}

/* ══════════════════════════════════════════════════════════
   PODIO VIRAL — OVERLAY COMPARTIR
══════════════════════════════════════════════════════════ */
#podio-viral-overlay {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 10001;
    background: rgba(0, 0, 0, 0.84);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 0;
    overflow-y: auto;
    padding: 16px;
}
#podio-viral-overlay.pv-visible {
    display: flex;
    animation: fadeInOverlay 0.28s ease;
}

/* Zona capturable — fondo sólido (html2canvas no soporta backdrop-filter) */
#podio-viral-captura {
    background: linear-gradient(180deg, #0e2052 0%, #0d1b3e 55%, #091428 100%);
    border: 2px solid rgba(251, 191, 36, 0.50);
    border-radius: 22px;
    padding: 26px 22px 20px;
    width: 100%;
    max-width: 440px;
    text-align: center;
    box-shadow:
        0 0 40px rgba(251, 191, 36, 0.1),
        0 20px 60px rgba(0, 0, 0, 0.6);
    flex-shrink: 0;
    font-family: 'Inter', system-ui, sans-serif;
}
#podio-viral-header { margin-bottom: 18px; }
#podio-viral-logo-text {
    font-size: 1.08em;
    font-weight: 800;
    color: #fbbf24;
    letter-spacing: 0.04em;
    margin-bottom: 3px;
}
#podio-viral-subtitulo {
    font-size: 0.75em;
    color: #64748b;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

/* Grid: plata | oro | bronce */
#podio-viral-grid {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 10px;
    margin-bottom: 18px;
    background: radial-gradient(ellipse 150px 100px at 50% 0%, rgba(251,191,36,0.08) 0%, transparent 70%);
    border-radius: 12px;
    padding: 6px 4px 0;
}
.pv-card {
    flex: 1;
    max-width: 130px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 14px;
    padding: 12px 8px 0;
    overflow: hidden;
}
/* ── Iluminación oro (1°) ── */
.pv-card-1 {
    min-height: 210px;
    background: linear-gradient(168deg, rgba(251,191,36,0.16) 0%, rgba(253,224,71,0.07) 50%, transparent 100%);
    border-color: rgba(251, 191, 36, 0.60);
    box-shadow:
        0 0 0 1px rgba(251,191,36,0.20) inset,
        0 0 28px rgba(251,191,36,0.26),
        0 0 64px rgba(251,191,36,0.11),
        0 8px 26px rgba(0,0,0,0.46);
    animation: pv-glow-gold 3.2s ease-in-out infinite;
}
/* ── Iluminación plata (2°) ── */
.pv-card-2 {
    min-height: 178px;
    background: linear-gradient(168deg, rgba(203,213,225,0.11) 0%, rgba(148,163,184,0.04) 100%);
    border-color: rgba(203, 213, 225, 0.40);
    box-shadow:
        0 0 0 1px rgba(203,213,225,0.09) inset,
        0 0 20px rgba(200,215,235,0.17),
        0 6px 20px rgba(0,0,0,0.42);
    animation: pv-glow-silver 3.8s ease-in-out infinite;
}
/* ── Iluminación bronce (3°) ── */
.pv-card-3 {
    min-height: 154px;
    background: linear-gradient(168deg, rgba(205,127,50,0.14) 0%, rgba(180,100,35,0.05) 100%);
    border-color: rgba(205, 140, 70, 0.42);
    box-shadow:
        0 0 0 1px rgba(205,140,70,0.09) inset,
        0 0 18px rgba(205,127,50,0.18),
        0 6px 20px rgba(0,0,0,0.42);
    animation: pv-glow-bronze 4.4s ease-in-out infinite;
}
@keyframes pv-glow-gold {
    0%,100% { box-shadow: 0 0 0 1px rgba(251,191,36,0.20) inset, 0 0 28px rgba(251,191,36,0.26), 0 0 64px rgba(251,191,36,0.11), 0 8px 26px rgba(0,0,0,0.46); }
    50%     { box-shadow: 0 0 0 1px rgba(251,191,36,0.32) inset, 0 0 44px rgba(251,191,36,0.40), 0 0 92px rgba(251,191,36,0.18), 0 8px 26px rgba(0,0,0,0.46); }
}
@keyframes pv-glow-silver {
    0%,100% { box-shadow: 0 0 0 1px rgba(203,213,225,0.09) inset, 0 0 20px rgba(200,215,235,0.17), 0 6px 20px rgba(0,0,0,0.42); }
    50%     { box-shadow: 0 0 0 1px rgba(203,213,225,0.18) inset, 0 0 32px rgba(200,215,235,0.28), 0 6px 20px rgba(0,0,0,0.42); }
}
@keyframes pv-glow-bronze {
    0%,100% { box-shadow: 0 0 0 1px rgba(205,140,70,0.09) inset, 0 0 18px rgba(205,127,50,0.18), 0 6px 20px rgba(0,0,0,0.42); }
    50%     { box-shadow: 0 0 0 1px rgba(205,140,70,0.18) inset, 0 0 30px rgba(205,127,50,0.30), 0 6px 20px rgba(0,0,0,0.42); }
}
.pv-medalla { font-size: 1.6em; line-height: 1; }
.pv-foto-wrap {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.07);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5em;
    flex-shrink: 0;
}
.pv-card-1 .pv-foto-wrap {
    width: 72px;
    height: 72px;
    border: 2px solid rgba(251, 191, 36, 0.68);
    box-shadow: 0 0 22px rgba(251, 191, 36, 0.38), 0 0 7px rgba(251, 191, 36, 0.20) inset;
}
.pv-foto-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.pv-nombre {
    font-size: 0.72em;
    font-weight: 700;
    color: #f1f5f9;
    line-height: 1.3;
    word-break: break-word;
    text-align: center;
}
.pv-card-1 .pv-nombre { font-size: 0.8em; }
.pv-votos {
    font-size: 0.66em;
    color: #64748b;
    font-weight: 600;
}
.pv-card-1 .pv-votos { color: #fbbf24; font-weight: 700; }
.pv-card-2 .pv-nombre { color: #e2e8f0; }
.pv-card-2 .pv-votos  { color: #cbd5e1; font-weight: 700; }
.pv-card-3 .pv-nombre { color: #daa87a; }
.pv-card-3 .pv-votos  { color: #c08a52; font-weight: 700; }

/* ── Laureles decorativos ── */
.pv-laurel-row {
    display: flex;
    justify-content: space-between;
    align-self: stretch;
    padding: 0 6px;
    margin-top: 2px;
    font-size: 0.75em;
    line-height: 1;
    opacity: 0.65;
    flex-shrink: 0;
}
.pv-lf { display: inline-block; transform: scaleX(-1); }
.pv-card-1 .pv-laurel-row {
    opacity: 0.82;
    filter: sepia(1) saturate(5) hue-rotate(2deg) brightness(1.4);
}
.pv-card-2 .pv-laurel-row {
    opacity: 0.55;
    filter: grayscale(0.7) brightness(1.5);
}
.pv-card-3 .pv-laurel-row {
    opacity: 0.62;
    filter: sepia(0.6) saturate(2.5) hue-rotate(-12deg) brightness(1.2);
}

/* ── Barras de podio olímpico ── */
.pv-barra {
    align-self: stretch;
    margin-top: auto;
    flex-shrink: 0;
}
.pv-card-1 .pv-barra {
    height: 38px;
    background: linear-gradient(180deg,
        rgba(253,224,71,0.45) 0%,
        rgba(251,191,36,0.68) 40%,
        rgba(180,130,0,0.62) 100%);
    box-shadow:
        0 -5px 18px rgba(251,191,36,0.30) inset,
        0 2px 0 rgba(255,240,100,0.22) inset;
}
.pv-card-2 .pv-barra {
    height: 25px;
    background: linear-gradient(180deg,
        rgba(226,232,240,0.42) 0%,
        rgba(148,163,184,0.65) 40%,
        rgba(100,116,139,0.55) 100%);
    box-shadow:
        0 -4px 14px rgba(200,215,235,0.22) inset,
        0 2px 0 rgba(255,255,255,0.14) inset;
}
.pv-card-3 .pv-barra {
    height: 16px;
    background: linear-gradient(180deg,
        rgba(218,152,78,0.42) 0%,
        rgba(180,100,35,0.65) 40%,
        rgba(120,68,20,0.55) 100%);
    box-shadow:
        0 -4px 12px rgba(205,127,50,0.22) inset,
        0 2px 0 rgba(255,190,100,0.12) inset;
}

#podio-viral-pie {
    font-size: 0.7em;
    color: #475569;
    font-weight: 600;
    letter-spacing: 0.04em;
    border-top: 1px solid rgba(255, 255, 255, 0.06);
    padding-top: 12px;
}

/* Panel de acciones (fuera de la captura) */
#podio-viral-acciones {
    width: 100%;
    max-width: 440px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    align-items: center;
}
#pv-texto-viral {
    font-size: 0.93em;
    color: #cbd5e1;
    line-height: 1.65;
    text-align: center;
    font-family: 'Inter', system-ui, sans-serif;
}
#pv-btn-whatsapp {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: #25d366;
    color: #fff;
    /* Borde dorado neón elegante — premium look manteniendo el verde
       de WhatsApp como base. Anillo gold doble (outline + inset) +
       glow externo cyan/verde para el "premium feel". */
    border: 2px solid rgba(255, 215, 0, 0.85);
    border-radius: var(--radius-pill);
    padding: 13px 28px;
    font-size: 1em;
    font-weight: 700;
    cursor: pointer;
    width: 100%;
    transition: background 0.2s, box-shadow 0.2s, transform 0.15s, border-color 0.2s;
    font-family: inherit;
    box-shadow:
        0 0 0 1px rgba(251, 191, 36, 0.35),
        0 0 18px rgba(251, 191, 36, 0.35),
        0 4px 18px rgba(37, 211, 102, 0.42),
        inset 0 0 0 1px rgba(255, 255, 255, 0.18);
}
#pv-btn-whatsapp:hover {
    background: #1fba58;
    border-color: rgba(255, 215, 0, 1);
    box-shadow:
        0 0 0 1px rgba(255, 215, 0, 0.55),
        0 0 28px rgba(251, 191, 36, 0.55),
        0 6px 26px rgba(37, 211, 102, 0.55),
        inset 0 0 0 1px rgba(255, 255, 255, 0.24);
    transform: translateY(-2px);
}
#pv-btn-imagen {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: rgba(6, 182, 212, 0.1);
    color: #06b6d4;
    border: 1px solid rgba(6, 182, 212, 0.4);
    border-radius: var(--radius-pill);
    padding: 12px 24px;
    font-size: 0.95em;
    font-weight: 600;
    cursor: pointer;
    width: 100%;
    transition: background 0.2s, box-shadow 0.2s;
    font-family: inherit;
}
#pv-btn-imagen:hover {
    background: rgba(6, 182, 212, 0.18);
    box-shadow: 0 4px 18px rgba(6, 182, 212, 0.28);
}
#pv-btn-imagen:disabled { opacity: 0.5; cursor: not-allowed; }
#pv-iconos-sociales {
    display: flex;
    gap: 12px;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 6px;
}
.pv-social-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.07);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: #94a3b8;
    cursor: pointer;
    transition: background 0.2s, color 0.2s, transform 0.15s;
    text-decoration: none;
    font-family: inherit;
}
.pv-social-icon svg { width: 26px; height: 26px; }
.pv-social-icon:hover {
    background: rgba(255, 255, 255, 0.14);
    color: #f1f5f9;
    transform: scale(1.14);
}

/* ── Colores de marca BASE de los iconos sociales ──
   Facebook azul oficial, X blanco (logo es B&N), Instagram con
   gradiente real definido en el SVG (<linearGradient id="pv-ig-grad">),
   TikTok blanco con efecto cromático cyan+pink mediante drop-shadow. */
.pv-si-facebook  { color: #1877F2; }
.pv-si-x         { color: #ffffff; }
.pv-si-instagram { color: #E1306C; } /* fallback; el SVG usa url(#pv-ig-grad) */
.pv-si-tiktok    { color: #ffffff; }
.pv-si-tiktok svg {
    filter: drop-shadow(1px 0 0 #00f2ea) drop-shadow(-1px 0 0 #ff0050);
}

/* ── Brand glassmorphism hover por red social ── */
.pv-si-whatsapp:hover, .pv-si-whatsapp:focus-visible {
    background: rgba(37, 211, 102, 0.20);
    border-color: rgba(37, 211, 102, 0.55);
    color: #25d366;
    box-shadow: 0 0 20px rgba(37,211,102,0.40), 0 0 8px rgba(37,211,102,0.18) inset;
    transform: scale(1.14);
}
.pv-si-facebook:hover, .pv-si-facebook:focus-visible {
    background: rgba(24, 119, 242, 0.20);
    border-color: rgba(24, 119, 242, 0.55);
    color: #5b9cf8;
    box-shadow: 0 0 20px rgba(24,119,242,0.40), 0 0 8px rgba(24,119,242,0.18) inset;
    transform: scale(1.14);
}
.pv-si-x:hover, .pv-si-x:focus-visible {
    background: rgba(240, 240, 240, 0.16);
    border-color: rgba(240, 240, 240, 0.45);
    color: #f0f0f0;
    box-shadow: 0 0 20px rgba(240,240,240,0.20), 0 0 8px rgba(255,255,255,0.12) inset;
    transform: scale(1.14);
}
.pv-si-instagram:hover, .pv-si-instagram:focus-visible {
    background: rgba(225, 48, 108, 0.18);
    border-color: rgba(225, 48, 108, 0.52);
    color: #f06292;
    box-shadow: 0 0 20px rgba(225,48,108,0.35), 0 0 8px rgba(225,48,108,0.16) inset;
    transform: scale(1.14);
}
.pv-si-tiktok:hover, .pv-si-tiktok:focus-visible {
    background: rgba(255, 0, 80, 0.18);
    border-color: rgba(255, 0, 80, 0.50);
    color: #ff4d7d;
    box-shadow: 0 0 20px rgba(255,0,80,0.32), 0 0 8px rgba(255,0,80,0.16) inset;
    transform: scale(1.14);
}
.pv-si-copy:hover, .pv-si-copy:focus-visible {
    background: rgba(6, 182, 212, 0.18);
    border-color: rgba(6, 182, 212, 0.52);
    color: #22d3ee;
    box-shadow: 0 0 20px rgba(6,182,212,0.32), 0 0 8px rgba(6,182,212,0.16) inset;
    transform: scale(1.14);
}
#pv-btn-cerrar {
    background: none;
    border: 1px solid rgba(255, 255, 255, 0.13);
    color: var(--text-muted);
    border-radius: var(--radius-pill);
    padding: 9px 26px;
    font-size: 0.88em;
    cursor: pointer;
    transition: color 0.2s, border-color 0.2s;
    font-family: inherit;
    margin-top: 2px;
}
#pv-btn-cerrar:hover {
    color: var(--text-primary);
    border-color: rgba(255, 255, 255, 0.32);
}

/* ── Wrapper dialog: columna en móvil, fila en desktop ── */
.pv-dialog {
    display: flex;
    flex-direction: column;
    gap: 14px;
    width: 100%;
    max-width: 420px;
}
@media (min-width: 600px) {
    .pv-dialog {
        flex-direction: row;
        max-width: 820px;
        align-items: flex-start;
        gap: 0;
        background: rgba(7, 13, 32, 0.98);
        border: 1px solid rgba(251, 191, 36, 0.26);
        border-radius: 26px;
        padding: 24px;
        box-shadow: 0 28px 80px rgba(0, 0, 0, 0.82), 0 0 52px rgba(251, 191, 36, 0.07);
    }
    /* ── Captura del podio: ancho generoso para que los nombres respiren ── */
    .pv-dialog #podio-viral-captura {
        max-width: 380px;          /* antes 268px — los nombres se aplastaban */
        flex-shrink: 0;
        border-radius: 18px;
        padding: 20px 18px 16px;
        box-shadow: 0 0 24px rgba(251, 191, 36, 0.08);
    }
    /* ── Tarjetas del podio: columnas más anchas + más aire interno ── */
    .pv-dialog #podio-viral-grid { gap: 12px; }
    .pv-dialog .pv-card {
        max-width: 150px;          /* antes 130px */
        padding: 14px 10px 0;      /* antes 12px 8px — más margen horizontal */
        gap: 6px;
    }
    .pv-dialog .pv-nombre {
        font-size: 0.82em;         /* antes 0.72em */
        line-height: 1.32;
        padding: 0 3px;
    }
    .pv-dialog .pv-card-1 .pv-nombre { font-size: 0.92em; } /* antes 0.8em */
    .pv-dialog .pv-votos { font-size: 0.74em; }            /* antes 0.66em */
    .pv-dialog .pv-foto-wrap { width: 60px; height: 60px; }
    .pv-dialog .pv-card-1 .pv-foto-wrap { width: 76px; height: 76px; }
    .pv-dialog .pv-medalla { font-size: 1.75em; }
    .pv-dialog #podio-viral-acciones {
        flex: 1;
        min-width: 0;
        max-width: none;
        width: auto;
        padding: 2px 0 0 20px;
        align-self: center;
    }
}
/* ─────────────────────────────────────────────────────────── */

/* ══════════════════════════════════════════════════════════
   NAV — PERFIL CHIP (rango del usuario en la navbar)
══════════════════════════════════════════════════════════ */
.nav-perfil-chip {
    display: inline-flex; align-items: center; gap: 6px;
    text-decoration: none; color: inherit;
    border-radius: var(--radius-pill);
    padding: 2px 10px 2px 2px;
    border: 1px solid transparent;
    transition: border-color 0.2s, background 0.2s;
}
.nav-perfil-chip:hover {
    border-color: rgba(6,182,212,0.4);
    background: rgba(6,182,212,0.07);
}
.nav-nivel-badge {
    font-size: 0.72em; font-weight: 700;
    padding: 2px 8px; border-radius: 99px;
    white-space: nowrap;
    background: rgba(255,255,255,0.07);
    border: 1px solid rgba(255,255,255,0.14);
    color: var(--text-secondary);
}
.nav-nivel-basico   { color: #67e8f9; border-color: rgba(103,232,249,0.3); background: rgba(103,232,249,0.08); }
.nav-nivel-contexto { color: #a78bfa; border-color: rgba(167,139,250,0.3); background: rgba(167,139,250,0.08); }
.nav-nivel-critico  { color: #fbbf24; border-color: rgba(251,191,36,0.3);  background: rgba(251,191,36,0.08);  }
.nav-nivel-maestro  { color: #34d399; border-color: rgba(52,211,153,0.4);  background: rgba(52,211,153,0.10); animation: maestro-pulse 2.4s ease-in-out infinite; }
@keyframes maestro-pulse {
    0%,100% { box-shadow: 0 0 0 0 rgba(52,211,153,0); }
    50%      { box-shadow: 0 0 12px 2px rgba(52,211,153,0.4); }
}
.nav-logout-link { color: #ff6b6b; text-decoration: none; font-size: 0.82em; white-space: nowrap; }
.nav-logout-link:hover { color: #ff9999; }

/* Drawer perfil link — visible solo cuando autenticado */
.drawer-link-perfil { display: none; }
.drawer-link-perfil.activo { display: flex; }

/* ══════════════════════════════════════════════════════════
   SECCIÓN PERFIL CIUDADANO — GAMIFICADO (Fase B/C)
══════════════════════════════════════════════════════════ */
.seccion-perfil {
    max-width: 700px;
    margin: 0 auto;
    padding: 28px 8px 48px;
    font-family: 'Inter', system-ui, sans-serif;
}

/* ── Header: Badge + Barra global ── */
.pp-header {
    background: linear-gradient(145deg, #08102a 0%, #0d1b3e 60%, #091428 100%);
    border: 1px solid rgba(6,182,212,0.28);
    border-top: 2px solid rgba(6,182,212,0.7);
    border-radius: 22px;
    padding: 24px 24px 20px;
    margin-bottom: 24px;
    box-shadow: 0 0 48px rgba(6,182,212,0.10), 0 16px 48px rgba(0,0,0,0.5);
}
.pp-badge-wrap {
    display: flex; align-items: center; gap: 14px; margin-bottom: 16px;
}
.pp-badge-icon-circle {
    width: 52px; height: 52px; border-radius: 50%; flex-shrink: 0;
    background: linear-gradient(135deg, #0891b2 0%, #06b6d4 100%);
    display: flex; align-items: center; justify-content: center;
    font-size: 1.6em; box-shadow: 0 0 24px rgba(6,182,212,0.55);
    animation: pp-icon-pulse 2.6s ease-in-out infinite;
}
@keyframes pp-icon-pulse {
    0%,100% { box-shadow: 0 0 24px rgba(6,182,212,0.55); }
    50%      { box-shadow: 0 0 40px rgba(6,182,212,0.9), 0 0 80px rgba(6,182,212,0.3); }
}
.pp-badge-info { flex: 1; }
.pp-badge-titulo { font-size: 0.72em; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.08em; font-weight: 700; margin-bottom: 3px; }
.pp-badge-nivel {
    font-size: 1.18em; font-weight: 800;
    background: linear-gradient(90deg, #06b6d4 0%, #818cf8 50%, #a78bfa 100%);
    -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.pp-badge-nivel.nivel-maestro {
    background: linear-gradient(90deg, #34d399 0%, #10b981 50%, #6ee7b7 100%);
    -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.pp-pct-badge {
    font-size: 1.6em; font-weight: 900; color: #06b6d4;
    text-shadow: 0 0 20px rgba(6,182,212,0.8);
    min-width: 58px; text-align: right; flex-shrink: 0;
    transition: color 0.5s;
}
.pp-pct-badge.completo { color: #34d399; text-shadow: 0 0 20px rgba(52,211,153,0.8); }

/* Barra global */
.pp-barra-global-wrap { position: relative; margin-bottom: 10px; }
.pp-barra-global-track {
    height: 12px; background: rgba(255,255,255,0.07);
    border-radius: 99px; overflow: hidden;
    box-shadow: inset 0 1px 3px rgba(0,0,0,0.4);
}
.pp-barra-global-fill {
    height: 100%; border-radius: 99px;
    background: linear-gradient(90deg, #0284c7 0%, #06b6d4 50%, #818cf8 100%);
    transition: width 0.7s cubic-bezier(0.34,1.2,0.64,1);
    box-shadow: 0 0 16px rgba(6,182,212,0.6);
    position: relative; overflow: hidden;
}
.pp-barra-global-fill::after {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.28) 50%, transparent 100%);
    animation: pp-shimmer 2s ease-in-out infinite;
}
@keyframes pp-shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(200%); } }
.pp-barra-global-fill.completo {
    background: linear-gradient(90deg, #059669 0%, #10b981 50%, #34d399 100%);
    box-shadow: 0 0 24px rgba(52,211,153,0.75);
}
.pp-barra-hitos {
    position: relative; height: 18px; margin-top: 4px;
}
.pp-hito {
    position: absolute; transform: translateX(-50%);
    font-size: 0.62em; color: var(--text-muted); font-weight: 700;
    letter-spacing: 0.04em;
}
.pp-hint {
    font-size: 0.88em; color: var(--text-secondary); margin: 0;
    line-height: 1.5; text-align: center;
}

/* ── Tabs ── */
.pp-tabs {
    display: flex; gap: 8px; margin-bottom: 20px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 16px; padding: 6px;
}
.pp-tab {
    flex: 1; display: flex; flex-direction: column; align-items: center;
    gap: 2px; padding: 12px 8px; border-radius: 12px;
    background: none; border: none; cursor: pointer;
    font-family: inherit; font-size: 0.88em; font-weight: 700;
    color: var(--text-muted);
    transition: background 0.2s, color 0.2s, box-shadow 0.2s;
}
.pp-tab:hover { color: var(--text-secondary); background: rgba(255,255,255,0.05); }
.pp-tab-activo {
    background: linear-gradient(135deg, rgba(6,182,212,0.18) 0%, rgba(129,140,248,0.12) 100%);
    color: #06b6d4;
    box-shadow: 0 0 0 1px rgba(6,182,212,0.30) inset, 0 0 16px rgba(6,182,212,0.12);
}
.pp-tab-sub { font-size: 0.72em; font-weight: 500; opacity: 0.7; }
.pp-tab:disabled, .pp-tab.bloqueado { opacity: 0.45; cursor: not-allowed; }

/* ── Panels ── */
.pp-panel { position: relative; }
.pp-panel-activo { display: block !important; }
.pp-panel-inner { padding: 4px 0; }
.pp-lock-overlay {
    position: absolute; inset: 0; z-index: 10;
    background: rgba(7,13,32,0.88);
    backdrop-filter: blur(4px);
    border-radius: 18px;
    display: flex; align-items: center; justify-content: center;
}
.pp-lock-msg {
    font-size: 1em; font-weight: 700; color: var(--text-secondary);
    text-align: center; padding: 16px;
}

/* ── Grupos de campo ── */
.pp-campo-grupo { margin-bottom: 20px; }
.pp-campo-label {
    font-size: 0.8em; font-weight: 700; color: var(--text-muted);
    text-transform: uppercase; letter-spacing: 0.06em;
    margin-bottom: 10px;
}
.pp-pill-row {
    display: flex; flex-wrap: wrap; gap: 8px;
}
.pp-pill {
    padding: 8px 16px; border-radius: 99px; cursor: pointer;
    font-size: 0.86em; font-weight: 600; font-family: inherit;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.12);
    color: var(--text-secondary);
    transition: all 0.16s; user-select: none; line-height: 1.3;
}
.pp-pill:hover { border-color: rgba(6,182,212,0.45); color: var(--text-primary); transform: translateY(-1px); }
.pp-pill.seleccionado {
    background: linear-gradient(135deg, #0369a1 0%, #06b6d4 100%);
    border-color: transparent; color: #fff;
    box-shadow: 0 0 20px rgba(6,182,212,0.50), 0 2px 8px rgba(0,0,0,0.3);
    transform: translateY(-1px);
}
.pp-select {
    width: 100%; padding: 11px 16px;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.14);
    border-radius: 12px; color: var(--text-primary);
    font-family: inherit; font-size: 0.9em;
    cursor: pointer; appearance: none;
    transition: border-color 0.2s;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2364748b' stroke-width='1.8' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 14px center;
    padding-right: 36px;
}
.pp-select:focus { outline: none; border-color: rgba(6,182,212,0.55); }
.pp-select option { background: #0d1b3e; }

/* ── Botón guardar ── */
.pp-btn-guardar {
    display: flex; align-items: center; justify-content: center;
    width: 100%; padding: 14px 28px; margin-top: 24px;
    background: linear-gradient(135deg, #0284c7 0%, #06b6d4 100%);
    color: #fff; border: none; border-radius: var(--radius-pill);
    font-size: 1em; font-weight: 800; font-family: inherit;
    cursor: pointer; letter-spacing: 0.02em;
    transition: transform 0.15s, box-shadow 0.15s, opacity 0.2s;
    box-shadow: 0 4px 24px rgba(6,182,212,0.40);
}
.pp-btn-guardar:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 8px 32px rgba(6,182,212,0.60); }
.pp-btn-guardar:disabled { opacity: 0.4; cursor: not-allowed; }
.pp-btn-final {
    background: linear-gradient(135deg, #059669 0%, #10b981 100%);
    box-shadow: 0 4px 24px rgba(16,185,129,0.40);
}
.pp-btn-final:hover:not(:disabled) { box-shadow: 0 8px 32px rgba(16,185,129,0.60); }

/* ── Dashboard Exclusivo ── */
.pp-dashboard {
    margin-top: 32px;
    background: linear-gradient(145deg, #08102a 0%, #0d1b3e 100%);
    border: 1px solid rgba(251,191,36,0.22);
    border-top: 2px solid rgba(251,191,36,0.55);
    border-radius: 22px; padding: 24px;
    box-shadow: 0 0 40px rgba(251,191,36,0.07), 0 16px 48px rgba(0,0,0,0.5);
}
.pp-dashboard-header {
    display: flex; align-items: center; gap: 12px; margin-bottom: 18px;
}
.pp-dashboard-icon { font-size: 2em; filter: drop-shadow(0 0 10px rgba(251,191,36,0.7)); }
.pp-dashboard-titulo { font-size: 1.12em; font-weight: 800; color: #fbbf24; letter-spacing: 0.02em; }
.pp-dashboard-sub { font-size: 0.78em; color: var(--text-muted); margin-top: 2px; }
.pp-dashboard-lock { text-align: center; padding: 20px 12px; }
.pp-lock-big { font-size: 3.2em; margin-bottom: 12px; filter: drop-shadow(0 0 16px rgba(251,191,36,0.5)); animation: pp-icon-pulse 2.6s ease-in-out infinite; }
.pp-dashboard-lock p { color: var(--text-secondary); font-size: 0.92em; line-height: 1.6; }
.pp-charts-grid {
    display: grid; grid-template-columns: repeat(2, 1fr);
    gap: 16px;
}
.pp-chart-card {
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 16px; padding: 16px;
}
.pp-chart-titulo { font-size: 0.82em; font-weight: 700; color: var(--text-secondary); margin-bottom: 10px; }
.pp-charts-insuf { text-align: center; padding: 16px 12px; color: var(--text-secondary); font-size: 0.9em; }

/* ─────────────────────────────────────────────────────────── */

/* ══════════════════════════════════════════════════════════
   INICIO — HEADER PREMIUM + BUSCADOR DORADO
══════════════════════════════════════════════════════════ */
.inicio-header {
    position: relative;
    padding: 10px 0 4px;
    text-align: center;
}
.inicio-titulo {
    font-size: clamp(1.45rem, 4vw, 2.1rem);
    font-weight: 800;
    margin: 0;
    line-height: 1.2;
    letter-spacing: -0.01em;
    background: linear-gradient(130deg, #f8fafc 30%, #fbbf24 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}
.inicio-subtitulo {
    font-size: clamp(0.82rem, 2.2vw, 0.97rem);
    color: var(--text-muted);
    margin: 0 auto 0;
    max-width: 420px;
    line-height: 1.5;
    letter-spacing: 0.01em;
}
/* Fila del título con estrellas a los costados */
.inicio-titulo-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    flex-wrap: nowrap;
}
.inicio-emoji-badge {
    font-size: clamp(1.5rem, 4vw, 2rem);
    line-height: 1;
    margin-bottom: 6px;
}
/* Estrellas decorativas — flanquean el título, sin solaparse */
.estrella-deco {
    flex-shrink: 0;
    color: #fbbf24;
    font-size: 1.15em;
    line-height: 1;
    pointer-events: none;
    opacity: 0.82;
    filter: drop-shadow(0 0 6px rgba(251,191,36,0.85));
    animation: star-twinkle 3s ease-in-out infinite;
    user-select: none;
}
.estrella-deco.est-l2,
.estrella-deco.est-r2 { font-size: 0.78em; animation-delay: 0.9s; opacity: 0.62; }
.estrella-deco.est-l1 { animation-delay: 0s;   }
.estrella-deco.est-r1 { animation-delay: 1.6s; }
.estrella-deco.est-l2 { animation-delay: 0.9s; }
.estrella-deco.est-r2 { animation-delay: 2.2s; }
@keyframes star-twinkle {
    0%,100% { opacity: 0.55; transform: scale(0.88); }
    50%      { opacity: 1;   transform: scale(1.18); }
}

/* Buscador dorado */
.buscador-gold-wrap {
    position: relative;
    max-width: 460px;
    margin: 26px auto 0;
}
.buscador-gold {
    display: flex;
    align-items: center;
    gap: 10px;
    background: rgba(10,16,30,0.82);
    border: 1.5px solid #D4AF37;
    border-radius: 14px;
    padding: 12px 18px;
    box-shadow:
        0 0 16px rgba(212,175,55,0.35),
        0 0 36px rgba(212,175,55,0.12),
        inset 0 1px 0 rgba(255,255,255,0.05);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    transition: box-shadow 0.25s ease, border-color 0.25s ease;
}
.buscador-gold:focus-within {
    border-color: #f0cc4d;
    box-shadow:
        0 0 22px rgba(212,175,55,0.55),
        0 0 50px rgba(212,175,55,0.2),
        inset 0 1px 0 rgba(255,255,255,0.07);
}
.buscador-gold-icon {
    flex-shrink: 0;
    color: #D4AF37;
    display: flex;
    align-items: center;
}
.buscador-gold-input {
    flex: 1;
    background: transparent;
    border: none;
    outline: none;
    color: var(--text-primary);
    font-family: 'Inter', sans-serif;
    font-size: 0.97em;
    font-weight: 500;
    letter-spacing: 0.02em;
}
.buscador-gold-input::placeholder { color: var(--text-muted); }
.buscador-gold-input::-ms-clear { display: none; }

/* Dropdown de resultados */
.buscador-dropdown {
    position: absolute;
    top: calc(100% + 8px);
    left: 0; right: 0;
    background: rgba(10,16,30,0.97);
    border: 1px solid rgba(212,175,55,0.45);
    border-radius: 12px;
    overflow: hidden;
    z-index: 500;
    box-shadow: 0 12px 40px rgba(0,0,0,0.6), 0 0 20px rgba(212,175,55,0.1);
    backdrop-filter: blur(12px);
}
.buscador-dropdown-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 18px;
    cursor: pointer;
    font-size: 0.93em;
    font-weight: 600;
    color: var(--text-primary);
    transition: background 0.18s, color 0.18s;
    border-bottom: 1px solid rgba(255,255,255,0.05);
}
.buscador-dropdown-item:last-child { border-bottom: none; }
.buscador-dropdown-item:hover {
    background: rgba(212,175,55,0.12);
    color: #fbbf24;
}
.buscador-dropdown-item .dd-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}
.buscador-dropdown-empty {
    padding: 14px 18px;
    font-size: 0.87em;
    color: var(--text-muted);
    text-align: center;
}

/* ══════════════════════════════════════════════════════════
   CANTONES POPULARES (debajo del mapa)
══════════════════════════════════════════════════════════ */
.cantones-populares { margin-top: 26px; }
.cantones-populares-titulo {
    font-size: 0.82em;
    font-weight: 700;
    color: var(--text-muted);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    margin-bottom: 14px;
}
.cantones-cards-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    max-width: 500px;
    margin: 0 auto;
}
.canton-card-popular {
    background: rgba(10,16,30,0.78);
    border: 1.5px solid rgba(212,175,55,0.32);
    border-radius: 14px;
    padding: 16px 16px 14px;
    cursor: pointer;
    position: relative;
    transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    text-align: left;
    box-shadow: 0 0 12px rgba(212,175,55,0.07);
}
.canton-card-popular:hover,
.canton-card-popular:active {
    border-color: #D4AF37;
    background: rgba(212,175,55,0.09);
    box-shadow: 0 0 22px rgba(212,175,55,0.22), 0 4px 16px rgba(0,0,0,0.4);
    transform: translateY(-3px);
}
.canton-card-popular:active {
    transform: translateY(-1px) scale(0.98);
    transition-duration: 0.08s;
}
.canton-card-popular.quito-card:hover,
.canton-card-popular.quito-card:active {
    border-color: #00e5ff;
    background: rgba(6,182,212,0.08);
    box-shadow: 0 0 22px rgba(0,229,255,0.2), 0 4px 16px rgba(0,0,0,0.4);
}
.canton-card-badge {
    position: absolute;
    top: -9px; right: 12px;
    background: linear-gradient(135deg, #b8960c, #fbbf24);
    color: #07100a;
    font-size: 0.65em;
    font-weight: 800;
    letter-spacing: 0.07em;
    padding: 2px 8px;
    border-radius: 20px;
    text-transform: uppercase;
}
.canton-card-emoji {
    font-size: 1.9em;
    margin-bottom: 9px;
    display: block;
    line-height: 1;
}
.canton-card-nombre {
    font-size: 0.97em;
    font-weight: 700;
    color: var(--text-primary);
    display: block;
    margin-bottom: 3px;
}
.canton-card-sub {
    font-size: 0.73em;
    color: var(--text-muted);
    line-height: 1.35;
}

/* ── TARJETA MINI (homepage solo — sin badge ni sub) ─────────── */
.canton-card-mini {
    padding: 11px 10px 9px;
    text-align: center;
}
.canton-card-mini .canton-card-emoji {
    font-size: 1.6em;
    margin-bottom: 4px;
}
.canton-card-mini .canton-card-nombre {
    font-size: 0.83em;
    margin-bottom: 0;
}

.btn-explorar-pill {
    display: block;
    width: 100%;
    max-width: 500px;
    margin: 14px auto 0;
    padding: 12px 24px;
    background: rgba(10,16,30,0.82);
    border: 1.5px solid rgba(212,175,55,0.38);
    border-radius: 999px;
    color: #D4AF37;
    font-family: 'Inter', sans-serif;
    font-size: 0.88em;
    font-weight: 700;
    letter-spacing: 0.06em;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 0 10px rgba(212,175,55,0.08);
}
.btn-explorar-pill:hover {
    background: rgba(212,175,55,0.1);
    border-color: #D4AF37;
    box-shadow: 0 0 22px rgba(212,175,55,0.28);
    color: #fbbf24;
}

/* ══════════════════════════════════════════════════════════
   SECCIONES DE SELECCIÓN DE CANTÓN (Elegir Votar / Elegir Ranking)
   Clon estético del seccion-inicio — mismo DNA dorado-premium
══════════════════════════════════════════════════════════ */
.seleccion-canton-wrap {
    max-width: 560px;
    margin: 0 auto;
    padding: 0 4px;
}
.seleccion-grid-titulo {
    font-size: 0.78em;
    font-weight: 700;
    color: var(--text-muted);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    margin: 28px 0 16px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.seleccion-grid-titulo::before,
.seleccion-grid-titulo::after {
    content: '';
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(212,175,55,0.3), transparent);
}
/* Cards de selección — layout horizontal premium */
.canton-seleccion-card {
    padding: 18px 16px 16px;
    text-align: left;
    width: 100%;
}
.canton-seleccion-card-inner {
    display: flex;
    align-items: center;
    gap: 14px;
    width: 100%;
}
.canton-seleccion-emoji {
    font-size: 2.4em;
    line-height: 1;
    flex-shrink: 0;
    filter: drop-shadow(0 0 8px rgba(212,175,55,0.5));
}
.canton-seleccion-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.canton-card-desc {
    font-size: 0.71em;
    color: #D4AF37;
    opacity: 0.82;
    font-weight: 500;
    letter-spacing: 0.03em;
}
.canton-seleccion-arrow {
    font-size: 1.6em;
    color: rgba(212,175,55,0.55);
    flex-shrink: 0;
    font-weight: 300;
    transition: transform 0.25s ease, color 0.25s ease;
    line-height: 1;
}
.canton-card-popular:hover .canton-seleccion-arrow {
    transform: translateX(4px);
    color: #D4AF37;
}
.canton-card-popular.quito-card:hover .canton-seleccion-arrow {
    color: #00e5ff;
}
/* Grilla de 1 columna en mobile para las tarjetas de selección */
@media (max-width: 480px) {
    .seleccion-canton-wrap .cantones-cards-grid {
        grid-template-columns: 1fr;
        max-width: 340px;
    }
}

/* ══════════════════════════════════════════════════════════
   VISTA DE NAVEGACIÓN POR BARRAS
══════════════════════════════════════════════════════════ */
#vista-barras {
    display: none;
    opacity: 0;
    padding: 4px 0 16px;
}
#vista-barras.visible {
    display: block;
    animation: fadeInUp 0.38s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: translateY(0); }
}
.vista-barras-titulo {
    font-size: 0.82em;
    font-weight: 700;
    color: var(--text-muted);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    margin-bottom: 14px;
}
.barras-lista {
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: 500px;
    margin: 0 auto;
}
.barra-canton {
    display: flex;
    align-items: center;
    gap: 14px;
    background: rgba(10,16,30,0.78);
    border: 1.5px solid rgba(255,255,255,0.07);
    border-radius: 14px;
    padding: 14px 20px;
    cursor: pointer;
    transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    text-align: left;
}
.barra-canton:hover,
.barra-canton:active {
    border-color: rgba(212,175,55,0.5);
    background: rgba(212,175,55,0.08);
    transform: translateX(5px);
    box-shadow: 0 0 18px rgba(212,175,55,0.14);
}
.barra-canton:active {
    transform: translateX(3px) scale(0.99);
    transition-duration: 0.08s;
}
.barra-canton.quito-barra:hover,
.barra-canton.quito-barra:active {
    border-color: rgba(0,229,255,0.5);
    background: rgba(6,182,212,0.07);
    box-shadow: 0 0 18px rgba(0,229,255,0.14);
}
.barra-canton-emojis {
    font-size: 1.5em;
    flex-shrink: 0;
    line-height: 1;
}
.barra-canton-info { flex: 1; }
.barra-canton-nombre {
    font-size: 0.97em;
    font-weight: 700;
    color: var(--text-primary);
    display: block;
}
.barra-canton-desc {
    font-size: 0.74em;
    color: var(--text-muted);
    margin-top: 3px;
    display: block;
}
.barra-canton-arrow {
    color: var(--text-muted);
    font-size: 1em;
    flex-shrink: 0;
    transition: transform 0.22s, color 0.22s;
}
.barra-canton:hover .barra-canton-arrow { transform: translateX(4px); color: #fbbf24; }
.barra-canton.quito-barra:hover .barra-canton-arrow { color: #00e5ff; }
.btn-volver-mapa {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-top: 20px;
    padding: 9px 20px;
    background: transparent;
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 999px;
    color: var(--text-muted);
    font-family: 'Inter', sans-serif;
    font-size: 0.84em;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.25s ease;
    letter-spacing: 0.03em;
}
.btn-volver-mapa:hover {
    border-color: rgba(6,182,212,0.5);
    color: var(--accent-cyan);
    box-shadow: 0 0 12px rgba(6,182,212,0.15);
}

/* Transición del bloque mapa principal */
#mapa-view-contenido {
    transition: opacity 0.3s ease;
}

/* ══════════════════════════════════════════════════════════
   CONTROLES DEL MAPA (esquinas inferiores, overlay dentro del canvas)
══════════════════════════════════════════════════════════ */
.mapa-controles-footer {
    position: absolute;
    bottom: 1rem;
    left: 0;
    right: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 1.25rem;
    gap: 0;
    flex-wrap: nowrap;
    z-index: 2;
    pointer-events: none;
}
.btn-geolocalizacion,
.mapa-instruccion {
    pointer-events: auto;
}
.btn-geolocalizacion {
    display: flex;
    align-items: center;
    gap: 10px;
    background: rgba(4,12,24,0.84);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border: 1.5px solid rgba(6,182,212,0.62);
    border-radius: 999px;
    padding: 10px 22px 10px 16px;
    color: #00e5ff;
    font-family: 'Inter', sans-serif;
    font-size: 0.92em;
    font-weight: 700;
    cursor: pointer;
    letter-spacing: 0.4px;
    transition: all 0.22s ease;
    box-shadow:
        0 0 0 1px rgba(6,182,212,0.08),
        0 0 20px rgba(6,182,212,0.30),
        0 0 42px rgba(6,182,212,0.12),
        0 2px 14px rgba(0,0,0,0.62);
    text-shadow: 0 0 10px rgba(0,229,255,0.55);
    white-space: nowrap;
}
.btn-geolocalizacion:hover {
    border-color: rgba(6,182,212,0.92);
    background: rgba(6,182,212,0.13);
    box-shadow:
        0 0 0 1px rgba(6,182,212,0.15),
        0 0 30px rgba(6,182,212,0.52),
        0 0 60px rgba(6,182,212,0.22),
        0 2px 16px rgba(0,0,0,0.55);
    text-shadow: 0 0 14px rgba(0,229,255,0.9);
    transform: translateY(-1px);
}
.btn-geolocalizacion.geo-cargando {
    opacity: 0.6;
    cursor: wait;
    pointer-events: none;
    transform: none;
}
.mapa-instruccion {
    display: flex;
    align-items: center;
    gap: 9px;
    background: rgba(4,12,24,0.84);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border: 1.5px solid rgba(212,175,55,0.54);
    border-radius: 999px;
    padding: 10px 18px 10px 14px;
    color: #fbbf24;
    font-family: 'Inter', sans-serif;
    font-size: 0.88em;
    font-weight: 700;
    letter-spacing: 0.3px;
    text-shadow: 0 0 10px rgba(251,191,36,0.52);
    box-shadow:
        0 0 0 1px rgba(212,175,55,0.07),
        0 0 18px rgba(212,175,55,0.28),
        0 0 38px rgba(212,175,55,0.10),
        0 2px 14px rgba(0,0,0,0.62);
    white-space: nowrap;
    user-select: none;
    cursor: pointer;
    transition: all 0.22s ease;
    flex-shrink: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}
.mapa-instruccion:hover {
    border-color: rgba(212,175,55,0.9);
    background: rgba(212,175,55,0.10);
    box-shadow:
        0 0 0 1px rgba(212,175,55,0.15),
        0 0 26px rgba(212,175,55,0.50),
        0 0 52px rgba(212,175,55,0.18),
        0 2px 14px rgba(0,0,0,0.55);
    text-shadow: 0 0 14px rgba(251,191,36,0.95);
    transform: translateY(-1px);
}

/* Responsive nuevos componentes */
@media (max-width: 600px) {
    .cantones-cards-grid    { grid-template-columns: 1fr; max-width: 320px; }
    .btn-explorar-pill      { max-width: 320px; }
    .barras-lista           { max-width: 340px; }
}

/* ══════════════════════════════════════════════════════════
   MAPA INTERACTIVO NEÓN PREMIUM
══════════════════════════════════════════════════════════ */
.mapa-neon-canvas {
    /* Capas de fondo — orden: primero = encima, último = debajo */
    background-image:
        /* Capa 2a: Grid mayor 160 px — líneas guía de énfasis cartográfico */
        linear-gradient(rgba(180,200,220,0.13) 1px, transparent 1px),
        linear-gradient(90deg, rgba(180,200,220,0.13) 1px, transparent 1px),
        /* Capa 2b: Grid menor 40 px  — trama densa de fondo */
        linear-gradient(rgba(180,200,220,0.07) 1px, transparent 1px),
        linear-gradient(90deg, rgba(180,200,220,0.07) 1px, transparent 1px),
        /* Capa 1: Fondo oscuro radial (capa más profunda) */
        radial-gradient(circle, rgba(11,25,44,0.82) 0%, rgba(5,11,20,1) 100%);
    background-size:
        160px 160px, 160px 160px,
        40px 40px,   40px 40px,
        100% 100%;
    background-repeat: repeat, repeat, repeat, repeat, no-repeat;
    border-radius: 24px;
    border: 1px solid rgba(6,182,212,0.22);
    padding: 3.5rem 2rem 3rem;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    width: min(100%, 560px);
    min-width: 0;
    overflow: hidden;
    box-shadow:
        0 0 0 1px rgba(6,182,212,0.06),
        0 0 50px rgba(6,182,212,0.09),
        0 0 100px rgba(6,182,212,0.04),
        0 8px 40px rgba(0,0,0,0.55),
        inset 0 0 60px rgba(0,0,0,0.45);
    max-width: 560px;
    margin: 24px auto 0;
}
.mapa-neon-canvas > svg {
    width: min(100%, 480px);
    inline-size: min(100%, 480px);
    max-inline-size: 480px;
    aspect-ratio: 800 / 857;
    height: auto;
    max-height: min(62vh, 520px);
    overflow: visible;
    display: block;
    flex: 0 1 auto;
    transform: none;
    transform-origin: center center;
}
/* Iconos de botones del mapa — desktop: 16 px proporcional al nuevo tamaño del botón */
.btn-geolocalizacion svg,
.mapa-instruccion svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    display: inline;
    transform: none;
    max-width: none;
}
/* Pulso único al hacer click — vuelve solo al reposo */
@keyframes canton-pulse-cyan {
    0%   { filter: drop-shadow(0 0 4px #00e5ff) drop-shadow(0 0 9px rgba(0,229,255,0.35));
           fill: rgba(6,182,212,0.07); }
    22%  { filter: drop-shadow(0 0 10px #00f5ff) drop-shadow(0 0 26px rgba(0,229,255,0.8))
                   drop-shadow(0 0 44px rgba(0,229,255,0.38));
           fill: rgba(6,182,212,0.26); }
    100% { filter: drop-shadow(0 0 4px #00e5ff) drop-shadow(0 0 9px rgba(0,229,255,0.35));
           fill: rgba(6,182,212,0.07); }
}
@keyframes canton-pulse-gold {
    0%   { filter: drop-shadow(0 0 5px #fbbf24) drop-shadow(0 0 11px rgba(251,191,36,0.4));
           fill: rgba(251,191,36,0.1); }
    22%  { filter: drop-shadow(0 0 11px #ffe066) drop-shadow(0 0 28px rgba(251,191,36,0.82))
                   drop-shadow(0 0 46px rgba(251,191,36,0.38));
           fill: rgba(251,191,36,0.28); }
    100% { filter: drop-shadow(0 0 5px #fbbf24) drop-shadow(0 0 11px rgba(251,191,36,0.4));
           fill: rgba(251,191,36,0.1); }
}

#quito {
    fill: rgba(6,182,212,0.07);
    stroke: #00e5ff;
    stroke-width: 1.5;
    filter: drop-shadow(0 0 4px #00e5ff) drop-shadow(0 0 9px rgba(0,229,255,0.35));
    cursor: pointer;
    transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}
#quito:focus, #quito:focus-visible, #quito:active {
    outline: none;
    box-shadow: none;
}
#quito:hover {
    fill: rgba(6,182,212,0.18);
    filter:
        drop-shadow(0 0 9px #00e5ff)
        drop-shadow(0 0 22px rgba(0,229,255,0.65))
        drop-shadow(0 0 38px rgba(0,229,255,0.28));
}
#quito.canton-pulse {
    animation: canton-pulse-cyan 0.6s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

#ruminahui {
    fill: rgba(251,191,36,0.1);
    stroke: #fbbf24;
    stroke-width: 2;
    filter: drop-shadow(0 0 5px #fbbf24) drop-shadow(0 0 11px rgba(251,191,36,0.4));
    cursor: pointer;
    transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}
#ruminahui:focus, #ruminahui:focus-visible, #ruminahui:active {
    outline: none;
    box-shadow: none;
}
#ruminahui:hover {
    fill: rgba(251,191,36,0.24);
    filter:
        drop-shadow(0 0 10px #fbbf24)
        drop-shadow(0 0 24px rgba(251,191,36,0.7))
        drop-shadow(0 0 42px rgba(251,191,36,0.28));
}
#ruminahui.canton-pulse {
    animation: canton-pulse-gold 0.6s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@-moz-document url-prefix() {
    .mapa-neon-canvas {
        background-color: #050b14;
        isolation: isolate;
    }
    .mapa-neon-canvas > svg {
        contain: paint;
        transform: none !important;
    }
    #quito,
    #ruminahui,
    #quito:hover,
    #ruminahui:hover,
    #quito.canton-pulse,
    #ruminahui.canton-pulse {
        filter: none !important;
        vector-effect: non-scaling-stroke;
        paint-order: stroke fill;
    }
}

#mapa-tooltip {
    position: fixed;
    background: rgba(5,11,20,0.93);
    border: 1px solid rgba(255,255,255,0.14);
    color: #f8fafc;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 0.83em;
    font-weight: 600;
    font-family: 'Inter', sans-serif;
    letter-spacing: 0.07em;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.18s ease;
    z-index: 9999;
    white-space: nowrap;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: 0 4px 16px rgba(0,0,0,0.5);
}
#mapa-tooltip.visible { opacity: 1; }
.mapa-legend {
    display: flex;
    gap: 22px;
    justify-content: center;
    margin-top: 18px;
    font-size: 0.82em;
}
.mapa-legend-item {
    display: flex;
    align-items: center;
    gap: 7px;
    color: var(--text-secondary);
    font-weight: 500;
}
.mapa-legend-dot {
    width: 11px;
    height: 11px;
    border-radius: 3px;
    flex-shrink: 0;
}
.mapa-neon-hint {
    font-size: 0.78em;
    color: var(--text-muted);
    margin-top: 12px;
    letter-spacing: 0.04em;
}

/* ══════════════════════════════════════════════════════════
   MOBILE-FIRST — Refactorización UI para smartphones
   Capa adicional sobre los estilos de escritorio.
   Breakpoints: 768px (móvil), 600px (compacto), 480px (mini), 420px (micro)
══════════════════════════════════════════════════════════ */

/* Prevenir scroll horizontal en cualquier tamaño */
html { overflow-x: hidden; }
body { overflow-x: hidden; }

/* ── Nav: flex, centrado en escritorio, scroll silencioso en móvil ── */
nav { display: flex; align-items: center; flex-wrap: nowrap; justify-content: center; position: relative; }

/* Auth info fijado al borde derecho del nav en escritorio */
#nav-auth-info {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    white-space: nowrap;
    font-size: 0.9em;
}

@media (max-width: 768px) {
    nav {
        padding: 10px 8px;
        justify-content: flex-start;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    nav::-webkit-scrollbar { display: none; }
    nav a {
        margin: 0 8px;
        font-size: 0.82em;
        white-space: nowrap;
        flex-shrink: 0;
        min-height: 40px;
        display: inline-flex;
        align-items: center;
    }
    #nav-auth-info {
        flex-shrink: 0;
        margin-left: auto;
        padding-left: 12px;
        white-space: nowrap;
    }
    /* Layout: eliminar padding extra */
    .page-layout    { padding: 0; }
    .contenedor     { padding: 0 10px; }
    .seccion-mapa, .seccion-votar { padding: 18px 4px; }
    .seccion-ranking { padding: 6px 4px 20px; }
}

/* ── 600px: banners, tarjetas candidato, votar header, mapa ── */
@media (max-width: 600px) {
    /* Banners horizontales compactos */
    .cuadro-promo-horizontal {
        min-height: 54px;
        width: 96%;
        margin: 5px auto;
        border-radius: 10px;
    }
    .promo-invitacion { padding: 6px 10px; gap: 8px; }
    .promo-invitacion-icono { font-size: 1.2em; }
    .promo-invitacion-texto strong { font-size: 0.80em; }
    .promo-invitacion-texto span   { display: none; }
    .promo-invitacion-btn { padding: 7px 12px; font-size: 0.76em; }

    /* Tarjeta de candidato: touch-friendly */
    .card-candidato-votar  { gap: 10px; padding: 12px 11px; }
    .card-candidato-votar .mini-foto { width: 58px; height: 58px; flex-shrink: 0; }
    .cand-nombre           { font-size: 0.92em; white-space: normal; line-height: 1.25; }
    .cand-votos-badge      { font-size: 0.70em; }
    .btn-votar-ahora       { padding: 9px 14px; font-size: 0.84em; min-height: 44px; white-space: nowrap; }

    /* Votar header */
    .votar-header-marco    { padding: 14px 14px; border-radius: 12px; }
    .votar-titulo-principal { font-size: 1.2em; }
    .votar-subtitulo       { font-size: 0.82em; }

    /* Inicio / mapa */
    .inicio-header         { padding: 0; }
    .buscador-gold-wrap    { margin-top: 16px; }
    .buscador-gold         { padding: 10px 14px; border-radius: 12px; }
    .canton-card-popular   { padding: 12px 12px 10px; }
    .cantones-cards-grid   { gap: 10px; }
    .ranking-lista         { gap: 10px; margin-top: 14px; }

    /* Negocios locales */
    #negocios-zona-seccion { padding: 0 10px; gap: 8px; }
    .negocio-zona-tarjeta  { max-width: 100%; }
}

/* ── 480px: podio 3D ajustado para pantallas muy pequeñas ── */
@media (max-width: 480px) {
    .podio-container-3d    { gap: 4px; padding-top: 28px; }
    .podio-card            { padding: 10px 5px 10px; border-radius: 12px; }
    .avatar-marco          { width: 54px; height: 54px; }
    .avatar-marco-grande   { width: 68px; height: 68px; }
    .podio-card h4         { font-size: 0.68em; line-height: 1.2; }
    .puntaje-tag           { font-size: 0.63em; padding: 3px 6px; }
    .barra-numero          { font-size: 1.45em; }
    .barra-marco           { width: 28px; height: 80px; }
    .barra-marco-winner    { width: 36px; height: 108px; }
    .barra-marco-bronce    { height: 56px; }
    .laurel-svg            { width: 22px !important; height: 42px !important; }
    .laurel-winner         { width: 28px !important; height: 52px !important; }
    .medalla-badge         { font-size: 1.6em; top: -24px; }
    .corona-badge          { font-size: 2em;   top: -30px; }
}

/* ── 420px: lista competitiva — grid de dos filas para mostrar barra y votos ── */
@media (max-width: 420px) {
    .fila-competitiva {
        display: grid;
        grid-template-columns: 26px 44px 1fr;
        grid-template-rows: auto auto;
        padding: 8px 10px;
        min-height: 56px;
        gap: 2px 8px;
        align-items: center;
    }
    .num-pos-lista {
        grid-column: 1;
        grid-row: 1 / 3;
        align-self: center;
        width: auto;
    }
    .fila-competitiva .mini-foto {
        grid-column: 2;
        grid-row: 1 / 3;
        width: 44px;
        height: 44px;
        align-self: center;
    }
    .nom-candidato-lista {
        grid-column: 3;
        grid-row: 1;
        font-size: 0.78em;
        flex: none;
    }
    .barra-h-wrapper {
        display: flex;
        grid-column: 3;
        grid-row: 2;
        gap: 5px;
        align-items: center;
        flex: none;
    }
    .barra-h-base    { height: 6px; }
    .votos-label-lista { font-size: 0.68em; min-width: 28px; }
}

/* ══════════════════════════════════════════════════════════════════
   DASHBOARD COMMAND CENTER — Ranking Section Overhaul
   ══════════════════════════════════════════════════════════════════ */

/* Circuit grid + top glow on the ranking section */
.seccion-ranking {
    position: relative;
    background-image:
        linear-gradient(rgba(251,191,36,0.03) 1px, transparent 1px),
        linear-gradient(90deg, rgba(251,191,36,0.03) 1px, transparent 1px);
    background-size: 44px 44px;
    background-position: center center;
}
.seccion-ranking::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        radial-gradient(ellipse 70% 28% at 50% 0%, rgba(251,191,36,0.08) 0%, transparent 70%),
        radial-gradient(ellipse 30% 20% at 0% 50%, rgba(6,182,212,0.04) 0%, transparent 60%),
        radial-gradient(ellipse 30% 20% at 100% 50%, rgba(251,191,36,0.04) 0%, transparent 60%);
    z-index: 0;
}
.seccion-ranking > * { position: relative; z-index: 1; }

/* ── Compact top-bar: canton selector + filtros (desktop-only pill strip) ── */
.ranking-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 6px 14px 6px 12px;
    background: rgba(11,15,25,0.75);
    border: 1px solid rgba(251,191,36,0.12);
    border-radius: 999px;
    margin-bottom: 10px;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    min-height: 36px;
}
.topbar-canton-row {
    display: flex;
    align-items: center;
    gap: 7px;
    flex: 1;
    min-width: 0;
    overflow: hidden;
}
.topbar-pin-svg {
    color: rgba(251,191,36,0.7);
    flex-shrink: 0;
}
.topbar-canton-etiqueta {
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.07em;
    color: var(--text-muted);
    white-space: nowrap;
    flex-shrink: 0;
    text-transform: uppercase;
}
.topbar-canton-activo-nombre {
    font-size: 0.75rem;
    font-weight: 700;
    color: #fbbf24;
    white-space: nowrap;
    flex-shrink: 0;
    letter-spacing: 0.03em;
}
.topbar-sep {
    color: rgba(255,255,255,0.15);
    font-size: 0.7rem;
    flex-shrink: 0;
    user-select: none;
}
/* Scrollable chip list */
.topbar-canton-chips {
    display: flex;
    align-items: center;
    gap: 5px;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    -ms-overflow-style: none;
    flex-shrink: 1;
    min-width: 0;
}
.topbar-canton-chips::-webkit-scrollbar { display: none; }

/* Individual canton pill chip */
.topbar-chip {
    padding: 3px 10px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 999px;
    color: var(--text-secondary);
    font-size: 0.7rem;
    font-weight: 500;
    font-family: inherit;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background 0.16s, border-color 0.16s, color 0.16s;
    line-height: 1.4;
}
.topbar-chip:hover {
    background: rgba(251,191,36,0.09);
    border-color: rgba(251,191,36,0.28);
    color: var(--text-primary);
}
.topbar-chip-activo {
    background: rgba(251,191,36,0.13);
    border-color: rgba(251,191,36,0.5);
    color: #fbbf24;
    font-weight: 700;
    box-shadow: 0 0 8px rgba(251,191,36,0.12);
}

/* Filtros pill button */
.topbar-filtros-btn {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 4px 11px;
    background: transparent;
    border: 1px solid rgba(251,191,36,0.2);
    border-radius: 999px;
    color: var(--text-muted);
    font-size: 0.68rem;
    font-family: inherit;
    font-weight: 500;
    cursor: pointer;
    letter-spacing: 0.05em;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background 0.16s, color 0.16s, border-color 0.16s;
}
.topbar-filtros-btn:hover {
    background: rgba(251,191,36,0.08);
    color: #fbbf24;
    border-color: rgba(251,191,36,0.45);
}

/* ── Trend chips on podium cards ── */
.trend-chip {
    font-size: 0.64rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    padding: 2px 7px;
    border-radius: 999px;
    min-height: 18px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 4px;
    transition: opacity 0.3s;
}
.trend-chip:empty { display: none; }
.trend-chip.sube {
    background: rgba(34,197,94,0.12);
    color: #22c55e;
    border: 1px solid rgba(34,197,94,0.25);
}
.trend-chip.baja {
    background: rgba(239,68,68,0.1);
    color: #f87171;
    border: 1px solid rgba(239,68,68,0.22);
}
.trend-chip.mantiene {
    background: rgba(148,163,184,0.08);
    color: var(--text-muted);
    border: 1px solid rgba(148,163,184,0.15);
}
.trend-chip.nuevo {
    background: rgba(6,182,212,0.1);
    color: #06b6d4;
    border: 1px solid rgba(6,182,212,0.22);
}

/* ════════════════════════════════════════════════════════════
   STRETCHED LINK — toda la tarjeta de anuncio es clickeable
   CSS puro, sin HTML changes, sin onclick. Aplica en todos los
   breakpoints (mobile + desktop).
════════════════════════════════════════════════════════════ */

/* El contenedor ya tiene position:relative; solo añadimos cursor */
.cuadro-promo { cursor: pointer; }

/* Patrón "stretched link" — SOLO dentro de .cuadro-promo (que tiene position:relative).
   Los banners mobile (.banner-hero-mobile, .banner-checkpoint-mobile) NO son .cuadro-promo,
   no tienen containing block propio, y el ::after global les cubría toda la pantalla
   capturando clicks del mapa y botones (click hijacking en mobile). */
.cuadro-promo .promo-invitacion-btn::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
}

/* Feedback visual de hover en toda la tarjeta */
.cuadro-promo:hover { border-color: rgba(255,255,255,0.22); }
.cuadro-promo:hover .promo-invitacion-btn {
  border-color: rgba(6,182,212,0.6);
  color: #00e5ff;
}

/* ════════════════════════════════════════════════════════════
   DASHBOARD ULTRA-COMPACTO DESKTOP (≥861px)
   Objetivo: todo en un solo vistazo sin scroll.
   Sidebars altos que enmarcan. 4 ads con neon frame.
   NOTA: Solo aplica en ≥861px — no toca móvil.
════════════════════════════════════════════════════════════ */
@media (min-width: 861px) {

  /* ── 1. Segundo banner inferior: ocultar → 4 ads simétricos ── */
  #seccion-info-inferior-2 { display: none; }

  /* ── 2. Sidebars altos: stretch para enmarcar el contenido ── */
  .page-layout { align-items: stretch; }

  .cuadro-promo-lateral {
    align-self: auto;          /* hereda stretch del padre */
    min-height: 0;             /* libera min-height forzada */
    display: flex;
    flex-direction: column;
  }
  /* Contenido centrado verticalmente dentro del sidebar alto */
  .cuadro-promo-lateral .promo-invitacion-lateral {
    flex: 1;
    justify-content: center;
    min-height: 0;
    padding: 24px 12px;
  }

  /* ── 3. Neon frame premium en los 4 marcos ── */
  #seccion-info-superior {
    border-style: solid;
    border-color: rgba(6,182,212,0.30);
    box-shadow:
      0 2px 32px rgba(6,182,212,0.12),
      0 0 0 1px rgba(6,182,212,0.08) inset;
  }
  #seccion-info-inferior {
    border-style: solid;
    border-color: rgba(251,191,36,0.28);
    box-shadow:
      0 -2px 32px rgba(251,191,36,0.10),
      0 0 0 1px rgba(251,191,36,0.07) inset;
  }
  #seccion-info-lateral-izq {
    border-style: solid;
    border-color: rgba(6,182,212,0.32);
    box-shadow:
      0 0 30px rgba(6,182,212,0.15),
      inset 0 0 24px rgba(6,182,212,0.05),
      inset 1px 0 0 rgba(6,182,212,0.12);
  }
  #seccion-info-lateral-der {
    border-style: solid;
    border-color: rgba(251,191,36,0.28);
    box-shadow:
      0 0 30px rgba(251,191,36,0.12),
      inset 0 0 24px rgba(251,191,36,0.05),
      inset -1px 0 0 rgba(251,191,36,0.12);
  }

  /* ── 4. Padding de sección: ultra-compacto ── */
  .seccion-mapa { padding: 4px 8px 4px; }

  /* ── 5. Header: badge+título conservados, subtítulo oculto ── */
  .inicio-header      { padding: 2px 0 0; }
  .inicio-emoji-badge { font-size: 1.25rem; margin-bottom: 0; }
  .inicio-subtitulo   { display: none; }  /* redundante con el mapa visible */

  /* ── 6. Buscador: menos margen ── */
  .buscador-gold-wrap { margin-top: 8px; }
  .buscador-gold      { padding: 9px 16px; }

  /* ── 7. Banners mobile: ocultar en desktop ── */
  .banner-hero-mobile,
  .banner-checkpoint-mobile { display: none !important; }

  /* ── 8. Canvas del mapa: dominante, 300px SVG — mapa panorámico ── */
  .mapa-neon-canvas {
    max-width: 420px;
    width: min(100%, 420px);
    padding: 0.9rem 1.4rem 3rem;
    margin: 10px auto 0;
  }

  /* ── 9. SVG: caja estable y proporción fija, sin scale visual ── */
  .mapa-neon-canvas > svg {
    width: min(100%, 300px);
    inline-size: min(100%, 300px);
    height: auto;
    max-width: 300px;
    max-height: 321px;
    aspect-ratio: 800 / 857;
    transform: none;
  }

  /* ── 10. Controles del mapa: proporcionales al canvas ampliado ── */
  .btn-geolocalizacion,
  .mapa-instruccion {
    font-size: 0.78em;
    padding: 7px 14px 7px 11px;
  }
  .btn-geolocalizacion svg,
  .mapa-instruccion svg {
    width: 13px !important;
    height: 13px !important;
  }

  /* ── 11. Leyenda: compacta, conservada para identificar cantones ── */
  .mapa-legend    { margin-top: 6px; font-size: 0.77em; }
  .mapa-neon-hint { display: none; }

  /* ── 12. Cantones populares: margen reducido ── */
  .cantones-populares       { margin-top: 12px; }
  .cantones-populares-titulo { margin-bottom: 8px; font-size: 0.76em; }

  /* ── 13. Cards y botón: alineados al canvas ampliado ── */
  .cantones-cards-grid {
    gap: 10px;
    max-width: 420px;
  }
  .canton-card-popular {
    padding: 12px 12px 10px;
  }
  .btn-explorar-pill { margin-top: 8px; max-width: 420px; }
}

/* ══════════════════════════════════════════════════════════
   VOTO INDECISO — card en pantalla votar + banda en ranking
   Paleta plata neutra (no compite con oro de candidatos ni
   cyan de Quito). Usa las mismas clases base
   .card-candidato-votar / .btn-votar-ahora con modificadores.
══════════════════════════════════════════════════════════ */

/* ── Divisor "¿Aún no decides?" sobre el card Indeciso ─── */
.indeciso-divider {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 18px 0 8px;
    color: #94a3b8;
    font-size: 0.78em;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.indeciso-divider::before,
.indeciso-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(203,213,225,0.25), transparent);
    margin: 0 14px;
}
.indeciso-divider span {
    background: rgba(203,213,225,0.06);
    border: 1px solid rgba(203,213,225,0.18);
    border-radius: 999px;
    padding: 4px 14px;
}

/* ── Card Indeciso: hereda layout, sobreescribe paleta ─── */
.card-candidato-votar.card-indeciso {
    background: linear-gradient(135deg, #1a1f2e 0%, #232d3f 100%);
    border-color: rgba(203, 213, 225, 0.28);
    box-shadow: 0 2px 12px rgba(0,0,0,0.35), 0 0 8px rgba(203,213,225,0.06);
}
.card-candidato-votar.card-indeciso:hover {
    border-color: rgba(203, 213, 225, 0.55);
    box-shadow: 0 4px 20px rgba(0,0,0,0.4), 0 0 18px rgba(203,213,225,0.18);
}
.card-indeciso .cand-pos {
    color: rgba(203,213,225,0.7);
    font-size: 1.4em;
}
.card-indeciso .mini-foto-indeciso {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    border-radius: 50%;
    background: rgba(203,213,225,0.10);
    border: 2px solid rgba(203,213,225,0.6);
    font-size: 2.1em;
    line-height: 1;
    box-shadow: inset 0 0 18px rgba(203,213,225,0.08), 0 0 8px rgba(203,213,225,0.18);
    /* Limpia cualquier contenido HTML inyectado: la fuente del emoji
       es exclusivamente el ::before de abajo, así no aparece nunca el
       fallback 👤 de contenidoAvatar() ni nada parecido. */
    overflow: hidden;
}
.card-indeciso .mini-foto-indeciso > * { display: none !important; }
.card-indeciso .mini-foto-indeciso::before {
    content: '🤔';
    display: block;
    line-height: 1;
}
.card-indeciso .cand-nombre {
    color: #e2e8f0;
}
.card-indeciso .cand-votos-indeciso {
    color: #cbd5e1;
}

.btn-votar-ahora.btn-indeciso {
    color: #cbd5e1;
    border-color: #cbd5e1;
    box-shadow: 0 0 8px rgba(203,213,225,0.18);
}
.btn-votar-ahora.btn-indeciso:hover {
    background: rgba(203,213,225,0.1);
    color: #e2e8f0;
    box-shadow: 0 0 18px rgba(203,213,225,0.4);
}

/* ── Banda "{N} personas indecisas..." debajo del podio ─ */
.indecisos-band {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin: 18px auto 0;
    padding: 10px 22px;
    max-width: 480px;
    background: linear-gradient(135deg, rgba(30,41,59,0.65), rgba(51,65,85,0.55));
    border: 1px solid rgba(203,213,225,0.22);
    border-radius: 999px;
    color: #e2e8f0;
    font-size: 0.92em;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    box-shadow: 0 2px 10px rgba(0,0,0,0.3), 0 0 12px rgba(203,213,225,0.07);
}
.indecisos-band[hidden] { display: none; }
.indecisos-band-icon {
    font-size: 1.25em;
    filter: drop-shadow(0 0 4px rgba(203,213,225,0.4));
}
.indecisos-band-text {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    flex-wrap: wrap;
    justify-content: center;
}
.indecisos-band-text strong {
    color: #f1f5f9;
    font-size: 1.25em;
    font-weight: 800;
    letter-spacing: 0.02em;
    text-shadow: 0 0 6px rgba(203,213,225,0.35);
}
.indecisos-band-label {
    color: #cbd5e1;
    opacity: 0.9;
}

@media (max-width: 600px) {
    /* Card Indeciso en movil: layout 2 filas (foto+texto arriba, boton abajo
       full-width). El cand-pos se oculta porque la foto ya muestra el emoji. */
    .card-candidato-votar.card-indeciso {
        flex-wrap: wrap;
        gap: 12px;
        padding: 14px 14px;
    }
    .card-indeciso .cand-pos { display: none; }
    .card-indeciso .mini-foto-indeciso {
        width: 52px;
        height: 52px;
        font-size: 1.55em;
        flex-shrink: 0;
    }
    .card-indeciso .cand-texto {
        flex: 1 1 0;
        min-width: 0;
    }
    .card-indeciso .cand-nombre { font-size: 1em; }
    .card-indeciso .cand-votos-indeciso { font-size: 0.78em; }
    .card-candidato-votar.card-indeciso .btn-votar-ahora.btn-indeciso {
        flex: 1 1 100%;
        width: 100%;
        margin-top: 2px;
        padding: 11px 14px;
        font-size: 0.92em;
    }

    .indeciso-divider {
        margin: 14px 0 6px;
        font-size: 0.72em;
    }
    .indeciso-divider::before,
    .indeciso-divider::after { margin: 0 8px; }
    .indecisos-band {
        margin-top: 14px;
        padding: 9px 16px;
        font-size: 0.85em;
    }
    .indecisos-band-text strong { font-size: 1.15em; }
}
