/* ============================================================
   BRECHA POR FUNCIÓN - ESTILOS EXCLUSIVOS DEL MÓDULO
   ============================================================ */

.module-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}

.funcion-layout {
    display: grid;
    gap: 16px;
}

.funcion-configuracion,
.funcion-bloque,
#panelResultado {
    width: 100%;
}

.funcion-config-grid {
    display: grid;
    grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) minmax(300px, 2fr);
    gap: 14px;
    padding: 16px;
    align-items: end;
}

.funcion-config-grid label,
.funcion-filtros label {
    display: grid;
    gap: 6px;
    font-size: 0.82rem;
    font-weight: 700;
}

.funcion-modo {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    min-height: 58px;
    margin: 0;
    padding: 9px 12px 10px;
    border: 1px solid #d7dce2;
    border-radius: 6px;
}

.funcion-modo legend {
    padding: 0 5px;
    font-size: 0.78rem;
    font-weight: 700;
}

.funcion-modo label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.86rem;
}

.funcion-comparadores {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.funcion-bloque {
    border-top: 4px solid #245b78;
}

.funcion-bloque.comparacion {
    border-top-color: #7a1638;
}

.funcion-filtros {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    padding: 16px;
}

.funcion-acciones {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
}

.funcion-resultados {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
    padding: 16px;
}

.funcion-indicador {
    display: grid;
    gap: 7px;
    min-width: 0;
    padding: 14px;
    border: 1px solid #d9dee4;
    border-left: 4px solid #64727d;
    border-radius: 6px;
    background: #fff;
}

.funcion-indicador.base {
    border-left-color: #245b78;
}

.funcion-indicador.comparacion,
.funcion-indicador.brecha {
    border-left-color: #7a1638;
}

.funcion-indicador span,
.funcion-indicador small {
    color: #59636c;
    font-size: 0.76rem;
}

.funcion-indicador strong {
    overflow-wrap: anywhere;
    font-size: 1.16rem;
}

.funcion-resumen {
    margin: 0 16px 16px;
    padding: 12px 14px;
    border-left: 4px solid #b59b4b;
    background: #f7f5ee;
    color: #343a40;
    line-height: 1.5;
}

/* ============================================================
   GRÁFICA DE COMPARACIÓN DIRECTA
   ============================================================ */

.funcion-grafica-panel {
    border-top: 4px solid #b59b4b;
}

.funcion-dumbbell {
    display: grid;
    gap: 18px;
    padding: 20px;
}

.funcion-dumbbell-etiquetas {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.funcion-dumbbell-etiqueta {
    display: grid;
    gap: 4px;
    padding-left: 12px;
    border-left: 4px solid #245b78;
}

.funcion-dumbbell-etiqueta.comparacion {
    border-left-color: #7a1638;
    text-align: right;
    padding-right: 12px;
    padding-left: 0;
    border-right: 4px solid #7a1638;
    border-left: 0;
}

.funcion-dumbbell-etiqueta span,
.funcion-dumbbell-etiqueta small {
    color: #59636c;
    font-size: 0.78rem;
}

.funcion-dumbbell-etiqueta strong {
    font-size: 1.35rem;
}

.funcion-dumbbell-area {
    position: relative;
    height: 76px;
    margin: 0 14px;
}

.funcion-dumbbell-eje {
    position: absolute;
    top: 37px;
    right: 0;
    left: 0;
    height: 2px;
    background: #d9dee4;
}

.funcion-dumbbell-conexion {
    position: absolute;
    top: 34px;
    left: var(--inicio, 0%);
    width: var(--ancho, 0%);
    height: 8px;
    border-radius: 4px;
    background: #b59b4b;
}

.funcion-dumbbell-punto {
    position: absolute;
    top: 25px;
    left: var(--posicion, 0%);
    width: 26px;
    height: 26px;
    border: 4px solid #fff;
    border-radius: 50%;
    background: #245b78;
    box-shadow: 0 0 0 2px #245b78;
    transform: translateX(-50%);
}

.funcion-dumbbell-punto.comparacion {
    background: #7a1638;
    box-shadow: 0 0 0 2px #7a1638;
}

.funcion-dumbbell-resumen {
    display: grid;
    grid-template-columns: auto auto auto auto;
    gap: 8px 18px;
    justify-content: center;
    align-items: baseline;
    padding: 12px;
    background: #f4f6f7;
    border-radius: 6px;
}

.funcion-dumbbell-resumen span {
    color: #59636c;
    font-size: 0.78rem;
}

.funcion-dumbbell-resumen strong {
    font-size: 1.06rem;
}

/* ============================================================
   RANKING ESTATAL
   ============================================================ */

.funcion-ranking-panel {
    border-top: 4px solid #245b78;
}

.funcion-ranking-encabezado {
    align-items: end;
}

.funcion-ranking-orden {
    display: grid;
    gap: 5px;
    min-width: 240px;
    font-size: 0.78rem;
    font-weight: 700;
}

.funcion-ranking-contenido {
    display: grid;
    grid-template-columns: minmax(0, 4fr) minmax(230px, 1fr);
    gap: 16px;
    padding: 16px;
}

.funcion-ranking-tabla {
    max-height: 480px;
    border: 1px solid #d9dee4;
}

.funcion-ranking-tabla tbody tr:first-child td {
    background: #f7f2df;
    font-weight: 700;
}

.funcion-ranking-tabla .brecha-alta {
    color: #8c1f35;
    font-weight: 700;
}

.funcion-estados-fuera {
    align-self: start;
    border-left: 4px solid #7a8790;
    background: #f4f6f7;
}

.funcion-estados-fuera-titulo {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    padding: 12px;
    border-bottom: 1px solid #d9dee4;
}

.funcion-estados-fuera-titulo span {
    min-width: 26px;
    padding: 2px 7px;
    background: #626f78;
    color: #fff;
    text-align: center;
    border-radius: 4px;
}

.funcion-estados-fuera-lista {
    display: grid;
    gap: 0;
    max-height: 430px;
    overflow-y: auto;
    padding: 4px 12px 12px;
    color: #59636c;
    font-size: 0.8rem;
    line-height: 1.4;
}

.funcion-estado-fuera {
    display: grid;
    gap: 2px;
    padding: 9px 0;
    border-bottom: 1px solid #d9dee4;
}

.funcion-estado-fuera strong {
    color: #343a40;
}

@media (max-width: 900px) {
    .funcion-config-grid,
    .funcion-comparadores,
    .funcion-resultados {
        grid-template-columns: 1fr 1fr;
    }

    .funcion-modo {
        grid-column: 1 / -1;
    }

    .funcion-ranking-contenido {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 620px) {
    .funcion-config-grid,
    .funcion-comparadores,
    .funcion-filtros,
    .funcion-resultados {
        grid-template-columns: 1fr;
    }

    .funcion-modo {
        grid-column: auto;
    }

    .funcion-acciones {
        justify-content: stretch;
    }

    .funcion-acciones .btn {
        flex: 1;
    }

    .funcion-dumbbell-etiquetas {
        grid-template-columns: 1fr;
    }

    .funcion-dumbbell-etiqueta.comparacion {
        text-align: left;
        padding-right: 0;
        padding-left: 12px;
        border-right: 0;
        border-left: 4px solid #7a1638;
    }

    .funcion-dumbbell-resumen {
        grid-template-columns: auto auto;
        justify-content: stretch;
    }

    .funcion-ranking-encabezado {
        align-items: stretch;
    }

    .funcion-ranking-orden {
        min-width: 0;
        width: 100%;
    }
}
