/**
 * rank_contest_page_density.css
 *
 * 只经 public/css_rank_density 引入：站内比赛榜单页（csgoj / cpcsys / expsys contest/rank）与外榜首页。
 * 滚榜页（后台、外榜、离线包）、气球总览、直播 HUD 不加载：滚榜加载即用全屏版式，启动时不能再换字号。
 *
 * 榜单列表松紧档位（data-contest-rank-density，由 JS 写在 .contest-rank-page-shell 上）：
 *   0 = 最密一档，1 = 较紧（原投屏推荐），2 = 默认，3 = 不写属性，与 rank.css 原版一致。
 * 布局/字号类 --rank-* 仅写在 .rank-content-wrapper 上，顶栏、时间条、皮肤/筛选下拉与弹层仍用 :root 默认尺寸。
 * 全屏：外壳带 data-rank-fs="1"（壳内有 .rank-system.fullscreen，rank.js SyncRankShellMirror 同步）时不应用本文件任何密度覆写。
 *
 * 不用 :has()：主体是整页外壳的 :has() 会让每次插入行都重算整张榜样式；与 fullscreen-mock 兼容（仍带 .fullscreen）。
 * 主题菜单里的疏密控件样式在 rank_page.css。
 */

/* ═══ 档位 0：最密 ═══ */
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .rank-content-wrapper {
    --rank-col-width: 48px;
    --rank-solve-col-width: 54px;
    --rank-penalty-col-width: 54px;
    --rank-problem-col-width: 60px;
    --rank-header-height: 42px;
    --rank-stats-height: 22px;
    --rank-col-gap: 3px;
    --rank-row-gap: 4px;
    --rank-padding-xs: 2px;
    --rank-padding-sm: 4px;
    --rank-padding-md: 7px;
    --rank-padding-lg: 8px;
    --rank-padding-xl: 12px;
    --rank-font-size-xs: 8px;
    --rank-font-size-sm: 10px;
    --rank-font-size-md: 11px;
    --rank-font-size-lg: 11px;
    --rank-font-size-xl: 12px;
    --rank-font-size-2xl: 13px;
    --rank-font-size-3xl: 16px;
    --rank-font-size-4xl: 22px;
    --rank-font-size-5xl: 26px;
    line-height: 1.42;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .rank-container {
    font-size: 12px !important;
    line-height: 1.38 !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .rank-header-row {
    padding: 5px 8px 0 8px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .rank-row,
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .rank-row:not(:last-child) {
    margin-bottom: 2px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .school-name {
    font-size: 15px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .team-name-cn {
    font-size: 12px;
    min-height: 14px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .team-names.team-names-single {
    min-height: 28px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .coach-player-section {
    min-height: 28px;
    --rank-text-fade-width: 13px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .coach-info,
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .player-info {
    height: 14px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .stats-section {
    margin-top: 29px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .team-type-icon {
    width: 22px;
    height: 22px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .flag-icon {
    width: 17px;
    height: 12px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .rank-system:not([data-rank-mode="roll"]) .school-logo {
    background-size: 84px auto;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .problem-header-color-bg {
    top: -15px;
}

/* 全场首答星：大小与偏移随本档 --rank-stats-height 自动换算（rank.css），这里不再单写 px */

/* ═══ 档位 1：较紧（原投屏推荐）═══ */
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .rank-content-wrapper {
    --rank-col-width: 52px;
    --rank-solve-col-width: 58px;
    --rank-penalty-col-width: 58px;
    --rank-problem-col-width: 66px;
    --rank-header-height: 46px;
    --rank-stats-height: 24px;
    --rank-col-gap: 3px;
    --rank-row-gap: 5px;
    --rank-padding-xs: 2px;
    --rank-padding-sm: 5px;
    --rank-padding-md: 8px;
    --rank-padding-lg: 10px;
    --rank-padding-xl: 14px;
    --rank-font-size-xs: 9px;
    --rank-font-size-sm: 11px;
    --rank-font-size-md: 12px;
    --rank-font-size-lg: 13px;
    --rank-font-size-xl: 14px;
    --rank-font-size-2xl: 15px;
    --rank-font-size-3xl: 18px;
    --rank-font-size-4xl: 24px;
    --rank-font-size-5xl: 28px;
    line-height: 1.45;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .rank-container {
    font-size: 13px !important;
    line-height: 1.4 !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .rank-header-row {
    padding: 6px 10px 0 10px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .rank-row,
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .rank-row:not(:last-child) {
    margin-bottom: 3px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .school-name {
    font-size: 17px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .team-name-cn {
    font-size: 14px;
    min-height: 16px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .team-names.team-names-single {
    min-height: 32px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .coach-player-section {
    min-height: 32px;
    --rank-text-fade-width: 15px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .coach-info,
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .player-info {
    height: 16px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .stats-section {
    margin-top: 34px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .team-type-icon {
    width: 24px;
    height: 24px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .flag-icon {
    width: 19px;
    height: 14px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .rank-system:not([data-rank-mode="roll"]) .school-logo {
    background-size: 96px auto;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .problem-header-color-bg {
    top: -18px;
}

/* ═══ 档位 2：默认 ═══ */
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .rank-content-wrapper {
    --rank-col-width: 58px;
    --rank-solve-col-width: 65px;
    --rank-penalty-col-width: 65px;
    --rank-problem-col-width: 73px;
    --rank-header-height: 53px;
    --rank-stats-height: 28px;
    --rank-col-gap: 4px;
    --rank-row-gap: 6px;
    --rank-padding-xs: 3px;
    --rank-padding-sm: 7px;
    --rank-padding-md: 10px;
    --rank-padding-lg: 13px;
    --rank-padding-xl: 19px;
    --rank-font-size-xs: 10px;
    --rank-font-size-sm: 12px;
    --rank-font-size-md: 13px;
    --rank-font-size-lg: 14px;
    --rank-font-size-xl: 16px;
    --rank-font-size-2xl: 17px;
    --rank-font-size-3xl: 20px;
    --rank-font-size-4xl: 28px;
    --rank-font-size-5xl: 34px;
    line-height: 1.48;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .rank-container {
    font-size: 15px !important;
    line-height: 1.42 !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .rank-header-row {
    padding: 7px 13px 0 13px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .rank-row,
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .rank-row:not(:last-child) {
    margin-bottom: 4px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .school-name {
    font-size: 20px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .team-name-cn {
    font-size: 15px;
    min-height: 17px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .team-names.team-names-single {
    min-height: 34px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .coach-player-section {
    min-height: 35px;
    --rank-text-fade-width: 16px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .coach-info,
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .player-info {
    height: 17px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .stats-section {
    margin-top: 37px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .team-type-icon {
    width: 27px;
    height: 27px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .flag-icon {
    width: 20px;
    height: 15px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .rank-system:not([data-rank-mode="roll"]) .school-logo {
    background-size: 104px auto;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .problem-header-color-bg {
    top: -19px;
}

/* 素表：密度只改单元格 padding，不缩字、不套舞台卡行距 */
.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .rank-container {
    font-size: 13px !important;
    line-height: 1.35 !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .rank-header-row {
    padding: 0 !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .rank-row,
.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .rank-row:not(:last-child) {
    margin-bottom: 0 !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .school-name,
.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .team-name-cn,
.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .team-name-en,
.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .coach-name,
.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .player-name {
    min-height: 0 !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .school-name {
    font-size: 12px !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .team-name-cn {
    font-size: 13px !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .team-names.team-names-single,
.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .coach-player-section {
    min-height: 0 !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .coach-info,
.contest-rank-page-shell:not([data-rank-fs="1"]) .rank-system[data-rank-layout="plain"] .player-info {
    height: auto !important;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .rank-system[data-rank-layout="plain"] th,
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="0"] .rank-system[data-rank-layout="plain"] td {
    padding-top: 4px;
    padding-bottom: 4px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .rank-system[data-rank-layout="plain"] th,
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="1"] .rank-system[data-rank-layout="plain"] td {
    padding-top: 5px;
    padding-bottom: 5px;
}

.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .rank-system[data-rank-layout="plain"] th,
.contest-rank-page-shell:not([data-rank-fs="1"])[data-contest-rank-density="2"] .rank-system[data-rank-layout="plain"] td {
    padding-top: 7px;
    padding-bottom: 7px;
}
