/* ============================================================
   排行榜（/rating/index 总分榜 · /rating/problem 解题榜）
   ------------------------------------------------------------
   风格：清爽学术风 —— 变量全部取自 theme.css，
        白底 + 1px 细线 + 单一品牌青，无渐变、无投影，hover 只改颜色
   作用域：全部规则限定在 .rk-page 内
   结构：页头统计 → 总分榜/解题榜切换 → 前三甲 → 段位图例 → 我的位置 → 名单 → 分页
   说明：这一页原来直接用 bootstrap 的 table，列样式还被 site.css 里
        `.rating-index tr td:nth-child(n)` 的老规则命中；现在整条名单改成
        grid 行，不再用 table，也就不受那些老规则影响
   ============================================================ */

.rk-page {
    padding: 24px 0 8px;
}

/* ---------------------------------------------------------------- 页头 */
.rk-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 40px;
    padding-bottom: 18px;
    margin-bottom: 20px;
    border-bottom: 1px solid var(--line);
}

.rk-title-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.rk-title {
    margin: 0;
    font-size: 22px;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: 0.2px;
}

/* 结算时间徽标：排行榜的分数不是实时算的，每天 22:00 才刷一次，
   这句话必须比正文显眼，否则刚 AC 完看不到分数变化会以为坏了 */
.rk-update {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 5px;
    padding: 4px 10px 4px 9px;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.5;
    letter-spacing: 0.2px;
    color: var(--brand);
    background: var(--brand-soft);
    border: 1px solid rgba(15, 92, 107, 0.3);
    border-radius: 3px;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.rk-update svg {
    flex: 0 0 auto;
    margin-top: -1px;
}

/* 固定文案与倒计时之间的竖线 */
.rk-update-sep {
    flex: 0 0 auto;
    width: 1px;
    height: 11px;
    background: rgba(15, 92, 107, 0.4);
}

/* 倒计时：每秒重写文本，数字必须等宽，否则会左右跳 */
.rk-cd {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.rk-sub {
    max-width: 660px;
    margin: 9px 0 0;
    font-size: 13px;
    line-height: 1.9;
    color: var(--ink-3);
}

.rk-sub b {
    font-weight: 600;
    color: var(--ink-2);
}

.rk-stat {
    display: flex;
    flex: 0 0 auto;
    gap: 30px;
    padding-bottom: 2px;
}

.rk-stat-item {
    text-align: right;
}

.rk-stat-num {
    display: block;
    font-size: 20px;
    font-weight: 600;
    line-height: 1.2;
    color: var(--ink);
    font-variant-numeric: tabular-nums;
}

.rk-stat-lab {
    font-size: 11.5px;
    color: var(--muted);
}

/* ---------------------------------------------------------- 两榜切换 */
.rk-tabs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 22px;
}

.rk-tab {
    padding: 6px 16px;
    font-size: 12.5px;
    line-height: 1.5;
    color: var(--ink-3);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 3px;
}

.rk-tab:hover,
.rk-tab:focus {
    color: var(--brand);
    border-color: var(--brand);
    text-decoration: none;
}

.rk-tab.is-on {
    color: #fff;
    background: var(--brand);
    border-color: var(--brand);
}

.rk-tab.is-on:hover {
    color: #fff;
}

.rk-tabs-note {
    margin-left: auto;
    font-size: 11.5px;
    color: var(--muted);
}

/* ------------------------------------------------------------ 前三甲 */
.rk-podium {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 26px;
    align-items: end;
}

.rk-pod {
    display: block;
    padding: 15px 16px 17px;
    text-align: center;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 3px;
}

.rk-pod:hover {
    text-decoration: none;
    border-color: var(--brand);
}

.rk-pod-1 {
    padding-top: 22px;
    padding-bottom: 24px;
    border-color: #C9DCD9;
}

.rk-pod-no {
    display: block;
    font-size: 24px;
    font-weight: 600;
    line-height: 1.1;
    letter-spacing: 1px;
    color: #B9C4BE;
    font-variant-numeric: tabular-nums;
}

.rk-pod-1 .rk-pod-no {
    color: var(--brand);
}

.rk-pod-name {
    display: block;
    margin-top: 7px;
    font-size: 15px;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rk-pod-grade {
    display: block;
    margin-top: 7px;
    font-size: 11.5px;
    color: var(--muted);
}

.rk-pod-val {
    display: block;
    margin-top: 5px;
    font-size: 12px;
    color: var(--ink-3);
    font-variant-numeric: tabular-nums;
}

.rk-pod-val b {
    font-size: 15px;
    font-weight: 600;
    color: var(--ink);
}

/* ------------------------------------------------------------ 段位表 */
.rk-grades {
    margin-bottom: 26px;
}

.rk-sec-head {
    display: flex;
    align-items: baseline;
    gap: 12px;
    margin-bottom: 10px;
}

.rk-sec-title {
    margin: 0;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.2px;
}

.rk-sec-note {
    font-size: 11.5px;
    color: var(--muted);
}

.rk-grade-list {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.rk-grade {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 8px 11px;
    font-size: 12px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 3px;
}

.rk-grade b {
    font-weight: 600;
}

.rk-grade-range {
    font-size: 11px;
    color: var(--muted);
    font-variant-numeric: tabular-nums;
}

.rk-grade-count {
    margin-left: auto;
    font-size: 11.5px;
    color: var(--ink-3);
    font-variant-numeric: tabular-nums;
}

.rk-grade.is-me {
    background: var(--brand-soft);
    border-color: #CFE0DD;
}

/* -------------------------------------------------------- 我的位置 */
.rk-mine {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px;
    padding: 9px 16px;
    margin-bottom: 14px;
    font-size: 12.5px;
    color: var(--ink-2);
    background: var(--brand-soft);
    border: 1px solid #D8E5E2;
    border-radius: 3px;
}

.rk-mine-lab {
    font-size: 11.5px;
    letter-spacing: 0.4px;
    color: var(--brand);
}

.rk-mine-rank {
    font-weight: 600;
    color: var(--brand);
    font-variant-numeric: tabular-nums;
}

.rk-mine-val {
    color: var(--ink-3);
    font-variant-numeric: tabular-nums;
}

.rk-mine-link {
    margin-left: auto;
    color: var(--brand);
}

/* --------------------------------------------------------- 名单列表 */
.rk-board {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 3px;
    overflow: hidden;
}

.rk-row {
    display: grid;
    /* 选手列给上限、最后一列吃掉剩余：段位紧跟在名字后面，行末自然留白 */
    grid-template-columns: 56px minmax(120px, 260px) 92px 84px 68px minmax(0, 1fr);
    align-items: center;
    gap: 14px;
    padding: 11px 16px;
    font-size: 13px;
    color: var(--ink-2);
    border-bottom: 1px solid var(--line);
}

.rk-row:last-child {
    border-bottom: none;
}

a.rk-row:hover,
a.rk-row:focus {
    text-decoration: none;
    background: #FAFBFA;
}

.rk-row-head {
    padding-top: 9px;
    padding-bottom: 9px;
    font-size: 11.5px;
    color: var(--muted);
    background: #FAFBFA;
}

.rk-row.is-top .c-no {
    font-weight: 600;
    color: var(--brand);
}

.c-no {
    color: var(--muted);
    font-variant-numeric: tabular-nums;
}

.c-user {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 600;
}

.c-main,
.c-sub {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.c-main {
    font-weight: 600;
    color: var(--ink);
}

.c-school {
    font-size: 12.5px;
    color: var(--ink-3);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rk-area {
    margin-left: 10px;
    font-style: normal;
    color: #9AA5A0;
}

.rk-empty {
    font-style: normal;
    color: #B7C0BB;
}

.rk-empty-row {
    padding: 42px 16px;
    text-align: center;
    font-size: 13px;
    color: var(--muted);
}

/* 段位小标签：浅底 + 左侧色点，不抢视觉 */
.rk-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 1px 8px;
    font-size: 11.5px;
    line-height: 18px;
    color: var(--ink-3);
    background: #F4F6F5;
    border-radius: 2px;
    white-space: nowrap;
}

.rk-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
    vertical-align: middle;
}

/* ------------------------------------------------------------- 分页 */
.rk-pager-wrap {
    margin-top: 18px;
    text-align: center;
}

.rk-pager.pagination {
    display: inline-flex;
    gap: 4px;
    margin: 0;
}

.rk-pager.pagination > li {
    float: none;
    display: inline-block;
}

.rk-pager.pagination > li > a,
.rk-pager.pagination > li > span {
    padding: 5px 11px;
    font-size: 12px;
    line-height: 1.5;
    color: var(--ink-3);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 3px;
}

.rk-pager.pagination > li > a:hover,
.rk-pager.pagination > li > a:focus {
    color: var(--brand);
    background: #fff;
    border-color: var(--brand);
}

.rk-pager.pagination > li.active > a,
.rk-pager.pagination > li.active > span {
    color: #fff;
    background: var(--brand);
    border-color: var(--brand);
}

.rk-pager.pagination > li.disabled > span,
.rk-pager.pagination > li.disabled > a {
    color: #C7CFCA;
    background: #fff;
    border-color: var(--line);
}

/* ------------------------------------------------------------ 响应式 */
@media (max-width: 1199px) {
    .rk-row {
        grid-template-columns: 50px minmax(110px, 210px) 88px 78px 62px minmax(0, 1fr);
        gap: 12px;
    }

    .rk-grade-list {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 991px) {
    .rk-head {
        flex-direction: column;
        align-items: flex-start;
        gap: 16px;
    }

    .rk-stat {
        gap: 26px;
    }

    .rk-stat-item {
        text-align: left;
    }

    .rk-tabs-note {
        display: none;
    }

    .rk-grade-list {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .rk-row {
        grid-template-columns: 44px minmax(100px, 190px) 84px 76px 58px minmax(0, 1fr);
    }

    .rk-row-sch {
        grid-template-columns: 44px minmax(140px, 2fr) 1fr 1fr 1fr 1fr;
        gap: 12px;
    }
}

/* ------------------------------------------------------------ 学校榜
   行结构与个人榜不同：没有段位列，改成人/均分/总分/最高分四列数字。 */
.rk-row-sch {
    /* 学校列占 2.2 份、四个数字列各 1 份：整行铺满，数字不会被甩到最右边 */
    grid-template-columns: 56px minmax(180px, 2.2fr) 1fr 1fr 1fr 1fr;
}

.rk-row-sch .c-school {
    font-size: 13.5px;
    font-weight: 600;
    color: var(--ink);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rk-row-sch .c-players,
.rk-row-sch .c-avg,
.rk-row-sch .c-total,
.rk-row-sch .c-best {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.rk-row-sch .c-avg {
    font-weight: 600;
    color: var(--brand);
}

.rk-row-sch .c-players,
.rk-row-sch .c-total,
.rk-row-sch .c-best {
    font-size: 12.5px;
    color: var(--ink-3);
}

.rk-row-head.rk-row-sch .c-avg {
    font-weight: 400;
    color: var(--muted);
}

.rk-pod-school .rk-pod-grade,
.rk-pod-school .rk-pod-val {
    font-variant-numeric: tabular-nums;
}

.rk-sch-bar {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    margin: 0 0 9px;
    font-size: 12px;
    color: var(--muted);
}

.rk-sch-switch {
    display: inline-block;
    margin-left: 6px;
    padding: 2px 10px;
    font-size: 11.5px;
    line-height: 18px;
    color: var(--ink-3);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 2px;
}

.rk-sch-switch:hover,
.rk-sch-switch:focus {
    text-decoration: none;
    color: var(--brand);
    border-color: var(--brand);
}

.rk-sch-switch.is-on {
    color: #fff;
    background: var(--brand);
    border-color: var(--brand);
}

.rk-sch-switch.is-on:hover,
.rk-sch-switch.is-on:focus {
    color: #fff;
}

@media (max-width: 767px) {
    .rk-page {
        padding-top: 16px;
    }

    .rk-title {
        font-size: 20px;
    }

    .rk-update {
        padding: 2px 7px;
        font-size: 11px;
    }

    .rk-sub {
        font-size: 12.5px;
    }

    .rk-stat-num {
        font-size: 18px;
    }

    .rk-podium {
        grid-template-columns: minmax(0, 1fr);
        gap: 10px;
        align-items: stretch;
    }

    .rk-pod-1 {
        order: -1;
        padding-top: 16px;
        padding-bottom: 17px;
    }

    .rk-pod {
        padding: 13px 15px 14px;
    }

    .rk-grade-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .rk-grade {
        padding: 7px 9px;
    }

    .rk-mine {
        gap: 10px;
        padding: 8px 12px;
    }

    .rk-mine-link {
        margin-left: 0;
    }

    .rk-row {
        grid-template-columns: 34px minmax(0, 1fr) 76px 52px 44px;
        gap: 8px;
        padding: 10px 12px;
        font-size: 12.5px;
    }

    .rk-row .c-school {
        display: none;
    }

    /* 学校榜的学校名是主列，不能跟着个人榜一起隐藏 */
    .rk-row-sch {
        grid-template-columns: 34px minmax(0, 1fr) 52px 68px;
    }

    .rk-row-sch .c-school {
        display: block;
    }

    .rk-row-sch .c-total,
    .rk-row-sch .c-best {
        display: none;
    }

    .rk-row-head {
        padding-top: 8px;
        padding-bottom: 8px;
    }
}

/* ------------------------------------------------------- 段位配色
   10 档，全部选自同一明度区间的中低饱和色，避免和品牌青打架。
   放在文件最后：`.rk-g-*` 与 `.rk-pod-name` / `.rk-grade b` 特异性相同，
   靠后定义才能覆盖正文色。 */
.rk-g-0 {
    color: #98A29D;
}

.rk-g-1 {
    color: #6E7B76;
}

.rk-g-2 {
    color: #4C8C4A;
}

.rk-g-3 {
    color: #2E8B8B;
}

.rk-g-4 {
    color: #2F6DA8;
}

.rk-g-5 {
    color: #6B4FA8;
}

.rk-g-6 {
    color: #9A7B18;
}

.rk-g-7 {
    color: #B5651D;
}

.rk-g-8 {
    color: #B23A3A;
}

.rk-g-9 {
    color: #7E1E1E;
}
