/* Gestor de Rankings TBC — todos los componentes son rectangulares. */
.tbc-ranking,
.tbc-ranking *,
.tbc-ranking *::before,
.tbc-ranking *::after {
    box-sizing: border-box;
    border-radius: 0 !important;
}

.tbc-ranking {
    --tbc-oscuro: #0A0805;
    --tbc-rojo: #D01C25;
    --tbc-claro: #F5F5F5;
    color: var(--tbc-claro);
    background: var(--tbc-oscuro);
    font-family: 'Roboto', sans-serif;
    padding: 42px 28px 32px;
    width: 100%;
    overflow: hidden;
}

.tbc-ranking h2,
.tbc-ranking h3,
.tbc-ranking p { margin: 0; color: var(--tbc-claro); }
.tbc-ranking-cabecera { margin-bottom: 46px; }
.tbc-ranking-sobretitulo,
.tbc-ranking-cabecera h2,
.tbc-campeon-etiqueta,
.tbc-aspirantes-titulo,
.tbc-aspirante-pos,
.tbc-campeon-record,
.tbc-aspirante-record,
.tbc-record-label {
    font-family: 'Anton', Impact, sans-serif;
    font-weight: 400;
    letter-spacing: 0.055em;
}
.tbc-ranking-sobretitulo {
    color: var(--tbc-rojo) !important;
    font-size: 14px;
    margin-bottom: 8px !important;
}
.tbc-ranking-cabecera h2 {
    font-size: clamp(27px, 3.5vw, 44px);
    line-height: 1.13;
    text-transform: uppercase;
}
.tbc-ranking-columnas {
    display: grid;
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.45fr);
    gap: 25px;
    align-items: stretch;
}

/* Campeón */
.tbc-campeon {
    display: flex;
    flex-direction: column;
    background: var(--tbc-rojo);
    position: relative;
    min-width: 0;
    margin-top: 55px;
}
.tbc-campeon-imagen {
    margin-top: -85px;
    height: clamp(260px, 32vw, 450px);
    display: flex;
    justify-content: center;
    align-items: flex-end;
    min-width: 0;
    overflow: visible;
}
.tbc-campeon-foto {
    display: block;
    height: 100% !important;
    max-width: 100%;
    width: auto !important;
    object-fit: contain;
    object-position: bottom center;
    filter: drop-shadow(0 12px 12px #0A0805);
}
.tbc-campeon-info {
    margin-top: auto;
    background: var(--tbc-oscuro);
    border: 2px solid var(--tbc-rojo);
    padding: 24px;
    position: relative;
    z-index: 1;
}
.tbc-campeon-etiqueta {
    display: inline-block;
    background: var(--tbc-rojo);
    color: var(--tbc-claro);
    padding: 4px 10px;
    font-size: 15px;
    margin-bottom: 12px;
}
.tbc-campeon-nombre {
    font-family: 'Roboto', sans-serif;
    font-size: clamp(23px, 2.6vw, 34px);
    font-weight: 700;
    line-height: 1.1;
    overflow-wrap: anywhere;
    margin-bottom: 18px !important;
}
.tbc-campeon-record {
    font-size: 28px;
    display: flex;
    gap: 12px;
    align-items: baseline;
}
.tbc-record-label { color: var(--tbc-rojo); font-size: 13px; white-space: nowrap; }

/* Aspirantes */
.tbc-aspirantes { min-width: 0; }
.tbc-aspirantes-titulo {
    background: var(--tbc-rojo);
    padding: 12px 16px;
    font-size: 25px;
    line-height: 1.1;
}
.tbc-aspirantes-lista {
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: tbc-posicion 1; /* Primera fila visible es el #2. */
}
.tbc-aspirante {
    counter-increment: tbc-posicion;
    display: grid;
    grid-template-columns: 38px 25px 53px minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    min-height: 77px;
    padding: 9px 10px;
    border-bottom: 1px solid var(--tbc-rojo);
    background: var(--tbc-oscuro);
    color: var(--tbc-claro);
}
.tbc-aspirante-pos::before {
    content: counter(tbc-posicion, decimal-leading-zero);
    font-family: 'Anton', Impact, sans-serif;
    color: var(--tbc-claro);
    font-size: 26px;
    line-height: 1;
}
.tbc-tendencia { font-family: 'Anton', Impact, sans-serif; font-size: 25px; text-align: center; }
.tbc-tendencia-sube, .tbc-tendencia-baja { color: var(--tbc-rojo); }
.tbc-tendencia-igual { color: var(--tbc-claro); }
.tbc-aspirante-imagen {
    width: 53px;
    height: 56px;
    border: 1px solid var(--tbc-rojo);
    display: flex;
    justify-content: center;
    align-items: flex-end;
    overflow: hidden;
}
.tbc-aspirante-foto { width: 100% !important; height: 100% !important; object-fit: contain; object-position: bottom center; }
.tbc-aspirante-datos { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.tbc-aspirante-nombre {
    font-family: 'Roboto', sans-serif;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.2;
    overflow-wrap: anywhere;
}
.tbc-aspirante-stats { font: 500 11px/1.3 'Roboto', sans-serif; color: var(--tbc-claro); }
.tbc-aspirante-stats span { color: var(--tbc-rojo); padding: 0 4px; }
.tbc-aspirante-record {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 3px;
    white-space: nowrap;
    font-size: 19px;
}
.tbc-aspirante-record .tbc-record-label { font-size: 10px; }

.tbc-ranking-vacio, .tbc-ranking-error {
    background: #0A0805;
    color: #F5F5F5;
    border-left: 4px solid #D01C25;
    padding: 18px;
    font-family: 'Roboto', sans-serif;
}

@media (max-width: 850px) {
    .tbc-ranking-columnas { grid-template-columns: minmax(0, 1fr); gap: 30px; }
    .tbc-campeon { max-width: 620px; width: 100%; margin: 45px auto 0; }
    .tbc-campeon-imagen { height: 350px; }
}
@media (max-width: 480px) {
    .tbc-ranking { padding: 30px 12px 20px; }
    .tbc-ranking-cabecera { margin-bottom: 35px; }
    .tbc-campeon-imagen { height: 280px; }
    .tbc-campeon-info { padding: 18px; }
    .tbc-aspirante {
        grid-template-columns: 29px 21px 43px minmax(0, 1fr) auto;
        gap: 5px;
        padding: 8px 3px;
    }
    .tbc-aspirante-pos::before { font-size: 21px; }
    .tbc-tendencia { font-size: 20px; }
    .tbc-aspirante-imagen { width: 43px; height: 47px; }
    .tbc-aspirante-nombre { font-size: 12px; }
    .tbc-aspirante-stats { font-size: 10px; }
    .tbc-aspirante-record { font-size: 14px; }
    .tbc-aspirante-record .tbc-record-label { font-size: 9px; }
}

/* Página general de rankings: sin imágenes, con pestañas y desplegables. */
.tbc-general, .tbc-general *, .tbc-general *::before, .tbc-general *::after {
    box-sizing: border-box;
    border-radius: 0 !important;
}
.tbc-general {
    --tbc-oscuro: #0A0805;
    --tbc-rojo: #D01C25;
    --tbc-claro: #F5F5F5;
    width: 100%;
    padding: clamp(22px, 4vw, 54px);
    background: var(--tbc-oscuro);
    color: var(--tbc-claro);
    font: 400 15px/1.5 'Roboto', sans-serif;
}
.tbc-general h2, .tbc-general h3, .tbc-general p { color: var(--tbc-claro); margin: 0; }
.tbc-general-encabezado { text-align: center; margin-bottom: 35px; }
.tbc-general-encabezado .tbc-general-kicker { color: var(--tbc-rojo); font: 500 12px/1.4 'Roboto', sans-serif; letter-spacing: .15em; margin: 0 0 9px; }
.tbc-general-encabezado h2 { font: 400 clamp(34px, 6vw, 70px)/1.1 'Anton', Impact, sans-serif; letter-spacing: .04em; }
.tbc-general-linea { display: block; margin: 16px auto 0; width: 62px; height: 4px; background: var(--tbc-rojo); }
.tbc-general-tabs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; margin-bottom: 28px; }
.tbc-general-tab { appearance: none; border: 0; border-bottom: 3px solid var(--tbc-rojo); background: var(--tbc-oscuro); color: var(--tbc-claro); font: 400 clamp(14px, 1.8vw, 22px)/1.25 'Anton', Impact, sans-serif; letter-spacing: .025em; text-transform: uppercase; padding: 17px 12px; text-align: center; cursor: pointer; }
.tbc-general-tab:hover, .tbc-general-tab.is-active { background: var(--tbc-rojo); color: var(--tbc-claro); }
.tbc-general-tab:focus-visible, .tbc-general-categoria-titulo:focus-visible { outline: 2px solid var(--tbc-claro); outline-offset: 3px; }
.tbc-general-panel[hidden] { display: none !important; }
.tbc-general-panel-heading { display: flex; justify-content: space-between; gap: 12px; align-items: end; border-bottom: 2px solid var(--tbc-rojo); margin-bottom: 15px; padding-bottom: 12px; }
.tbc-general-panel-heading h3 { font: 400 clamp(23px, 3vw, 37px)/1.2 'Anton', Impact, sans-serif; text-transform: uppercase; letter-spacing: .04em; }
.tbc-general-panel-heading > span { font: 500 11px/1.3 'Roboto', sans-serif; letter-spacing: .08em; white-space: nowrap; }
.tbc-general-categorias { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: start; }
.tbc-general-categoria { min-width: 0; background: var(--tbc-oscuro); border: 1px solid var(--tbc-rojo); }
.tbc-general-categoria[open] { grid-column: 1 / -1; }
.tbc-general-categoria-titulo { cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 15px 18px; color: var(--tbc-claro); font: 400 clamp(17px, 2.2vw, 25px)/1.3 'Anton', Impact, sans-serif; text-transform: uppercase; list-style: none; }
.tbc-general-categoria-titulo::-webkit-details-marker { display: none; }
.tbc-general-categoria[open] > .tbc-general-categoria-titulo, .tbc-general-categoria-titulo:hover { background: var(--tbc-rojo); }
.tbc-general-categoria-extra { display: flex; gap: 15px; align-items: center; white-space: nowrap; font: 400 11px/1.3 'Roboto', sans-serif; text-transform: none; }
.tbc-general-chevron { font: 400 26px/1 'Anton', Impact, sans-serif; }
.tbc-general-categoria[open] .tbc-general-chevron { transform: rotate(45deg); }
.tbc-general-contenido { padding: 16px; }
.tbc-general-campeon { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 16px; background: var(--tbc-rojo); padding: 17px 19px; margin-bottom: 10px; }
.tbc-general-campeon-label, .tbc-general-campeon-record, .tbc-general-posicion, .tbc-general-fila-record { font-family: 'Anton', Impact, sans-serif; font-weight: 400; }
.tbc-general-campeon-label { font-size: 15px; white-space: nowrap; }
.tbc-general-campeon-nombre { font: 700 17px/1.25 'Roboto', sans-serif; overflow-wrap: anywhere; }
.tbc-general-campeon-record { display: flex; align-items: center; gap: 10px; font-size: 13px; white-space: nowrap; }
.tbc-general-campeon-record strong { font-size: 21px; font-weight: 400; }
.tbc-general-lista { list-style: none; margin: 0; padding: 0; }
.tbc-general-fila { display: grid; grid-template-columns: 35px 30px minmax(0, 1fr) auto; align-items: center; gap: 11px; min-height: 61px; border-bottom: 1px solid var(--tbc-rojo); padding: 9px 10px; }
.tbc-general-posicion { font-size: 23px; }
.tbc-general-tendencia { font: 400 23px/1 'Anton', Impact, sans-serif; text-align: center; }
.tbc-general-tendencia-sube, .tbc-general-tendencia-baja { color: var(--tbc-rojo); }
.tbc-general-fila-info { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.tbc-general-fila-info strong { font: 700 14px/1.3 'Roboto', sans-serif; overflow-wrap: anywhere; }
.tbc-general-fila-info small { font: 400 11px/1.4 'Roboto', sans-serif; }
.tbc-general-fila-record { text-align: right; white-space: nowrap; font-size: 20px; }
.tbc-general-fila-record small { display: block; font-size: 10px; }
.tbc-general-vacio, .tbc-general-limit { padding: 13px 5px; font: 400 13px/1.5 'Roboto', sans-serif; }
@media (max-width: 700px) {
    .tbc-general-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .tbc-general-categorias { grid-template-columns: minmax(0, 1fr); }
    .tbc-general-campeon { grid-template-columns: minmax(0, 1fr) auto; gap: 7px 12px; }
    .tbc-general-campeon-label { grid-column: 1 / -1; }
}
@media (max-width: 420px) {
    .tbc-general { padding: 24px 12px; }
    .tbc-general-tab { padding: 13px 7px; }
    .tbc-general-categoria-titulo { padding: 13px 10px; }
    .tbc-general-categoria-extra { gap: 7px; font-size: 10px; }
    .tbc-general-contenido { padding: 8px; }
    .tbc-general-campeon { padding: 13px 10px; }
    .tbc-general-campeon-nombre { font-size: 14px; }
    .tbc-general-campeon-record { gap: 4px; font-size: 10px; }
    .tbc-general-campeon-record strong { font-size: 16px; }
    .tbc-general-fila { grid-template-columns: 28px 20px minmax(0, 1fr) auto; gap: 6px; padding: 8px 3px; }
    .tbc-general-posicion, .tbc-general-tendencia { font-size: 19px; }
    .tbc-general-fila-info strong { font-size: 12px; }
    .tbc-general-fila-info small { font-size: 10px; }
    .tbc-general-fila-record { font-size: 15px; }
}

/* División histórica femenina en la página general. */
.tbc-general .tbc-general-historica {
    display: inline-block;
    margin-left: .65em;
    padding: .1em .45em;
    border: 1px solid #D01C25;
    color: #F5F5F5;
    background: #0A0805;
    border-radius: 0;
    font-family: 'Anton', sans-serif;
    font-size: .68em;
    font-weight: 400;
    letter-spacing: .04em;
    vertical-align: middle;
}
