/* ===== workbench 同族组件系统 =====
   与 design/remaining-panels-prototype/prototype.html 同款，供武道大会等面板复用。
   壳 = .side-content.xxx-workbench（game-layout.css 统一规则：零 padding + 自滚外壳），
   内部 = .wb-body 承载滚动 + 下列组件。全部走 game-base.css 的 CSS 变量，自动适配浅/墨主题。
   裸类名（.card/.btn/.tab/.sec-h/.chip-kind）已确认与项目现有 0 冲突；
   .empty/.note 2026-10-05 起收进锦标赛族作用域（见下），不再全局生效。 */

/* 滚动区 */
.wb-body{flex:1;min-height:0;overflow-y:auto;padding:var(--space-10) var(--space-12) var(--space-16);scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--space-2)}
.wb-body::-webkit-scrollbar{display:none}

/* 按钮 */
.btn{display:inline-flex;align-items:center;justify-content:center;height:34px;padding:0 var(--space-12);border-radius:var(--radius-md);font-size:var(--font-label);font-weight:600;border:1px solid transparent;font-family:inherit;cursor:pointer}
.btn--outline{background:transparent;border-color:var(--border-color);color:var(--text-secondary)}
.btn--gold{background:color-mix(in srgb,var(--accent-gold) 12%,transparent);border-color:var(--border-gold);color:var(--text-gold)}
.btn--jade{background:color-mix(in srgb,var(--accent-jade) 12%,transparent);border-color:color-mix(in srgb,var(--accent-jade) 40%,transparent);color:var(--text-jade)}
.btn--danger{background:color-mix(in srgb,var(--accent-crimson) 10%,transparent);border-color:color-mix(in srgb,var(--accent-crimson) 36%,transparent);color:var(--text-danger)}
.btn.sm{height:28px;padding:0 var(--space-10);font-size:var(--font-caption)}
.btn.block{width:100%}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* 卡片 */
.card{border:1px solid color-mix(in srgb,var(--border-color) 90%,transparent);border-radius:var(--radius-md);padding:var(--space-12) var(--space-12);background:var(--bg-card);margin-bottom:var(--space-8)}
.card__name{font-size:var(--font-body-lg);font-weight:700;color:var(--text-primary)}
.card__name.gold{color:var(--text-gold)}
.card__meta{margin-top:var(--space-4);font-size:var(--font-caption);color:var(--text-muted);line-height:1.5}
.card__meta b{color:var(--text-secondary)}
.card__actions{margin-top:var(--space-8);display:flex;gap:var(--space-6);flex-wrap:wrap;justify-content:flex-end}

/* 小标签 */
.chip-kind{display:inline-flex;min-width:16px;height:18px;padding:0 var(--space-6);border-radius:var(--radius-pill);border:1px solid;font-size:var(--font-micro);font-weight:700;align-items:center;margin-left:var(--space-4)}
.chip-kind--jade{color:var(--text-jade);border-color:color-mix(in srgb,var(--accent-jade) 38%,transparent);background:color-mix(in srgb,var(--accent-jade) 9%,transparent)}
.chip-kind--gold{color:var(--text-gold);border-color:color-mix(in srgb,var(--accent-gold) 38%,transparent);background:color-mix(in srgb,var(--accent-gold) 10%,transparent)}
.chip-kind--danger{color:var(--text-danger);border-color:color-mix(in srgb,var(--accent-crimson) 30%,transparent);background:color-mix(in srgb,var(--accent-crimson) 8%,transparent)}
/* 2026-09-23 补：muted（弱化）/ warn（警示琥珀，竞技场「已退出」等）此前 markup 有引用但无定义 */
.chip-kind--muted{color:var(--text-muted);border-color:var(--border-color);background:color-mix(in srgb,var(--bg-card) 90%,transparent)}
.chip-kind--warn{color:var(--accent-locked);border-color:color-mix(in srgb,var(--accent-locked) 38%,transparent);background:color-mix(in srgb,var(--accent-locked) 10%,transparent)}

/* 空态。2026-10-05 收敛：原裸 .empty 外溢到仇敌战报/批量再战/轮回历史等旧 UI（game-panels.css 4663 判例），
   现仅锦标赛族生效：#tournamentPanel（武道/天衡/宗门大比三 content 都在其内）、body 挂载 #sectCupModal、
   活动面板 .fest-cup-scope（栖椿/古月杯）。:where() 把类名特异性归零，保证 game-systems.css
   #fairTournamentContent/#sectCupTournamentContent/.fest-cup-scope 高特异性覆写的原有级联不被翻转。 */
#tournamentPanel :where(.empty),
#sectCupModal :where(.empty),
.fest-cup-scope :where(.empty){padding:var(--space-32) var(--space-12);text-align:center;color:var(--text-muted);font-size:var(--font-body)}

/* 区段头 */
.sec-h{display:flex;align-items:center;justify-content:space-between;gap:var(--space-8);margin:var(--space-6) var(--space-2) var(--space-8)}
.sec-t{font-size:var(--font-label);font-weight:700;color:var(--text-secondary);letter-spacing:.06em}

/* 胶囊 tab（横滚） */
.tabs{display:flex;gap:var(--space-6);overflow-x:auto;scrollbar-width:none;margin-bottom:var(--space-10)}
.tabs::-webkit-scrollbar{display:none}
.tab{flex:0 0 auto;height:30px;padding:0 var(--space-12);border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);border-radius:var(--radius-pill);background:transparent;color:var(--text-secondary);font-family:inherit;font-size:var(--font-label);font-weight:600;white-space:nowrap;cursor:pointer;transition:color .14s,border-color .14s,background .14s}
.tab:hover{color:var(--text-gold)}
.tab.on{background:color-mix(in srgb,var(--accent-gold) 10%,transparent);border-color:color-mix(in srgb,var(--accent-gold) 42%,transparent);color:var(--text-gold)}
.tab__badge{display:inline-flex;min-width:14px;height:14px;padding:0 var(--space-4);margin-left:var(--space-4);border-radius:var(--radius-pill);background:var(--accent-crimson);color:#fff;font-size:var(--font-micro);font-weight:700;align-items:center;justify-content:center}

/* 提示框。2026-10-05 收敛：同 .empty，仅锦标赛族生效（#tournamentPanel / #sectCupModal / .fest-cup-scope），
   :where() 保级联（理由见上「空态」注）。 */
#tournamentPanel :where(.note),
#sectCupModal :where(.note),
.fest-cup-scope :where(.note){font-size:var(--font-caption);color:var(--text-muted);line-height:1.6;margin-bottom:var(--space-8);padding:var(--space-8) var(--space-10);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--text-primary) 4%,transparent)}
#tournamentPanel :where(.note) b,
#sectCupModal :where(.note) b,
.fest-cup-scope :where(.note) b{color:var(--text-secondary)}

/* ===== 武道专属：KPI 宫格 / 进度条 / 奖池对比 / 走势 / 表格 ===== */
.kpi{display:grid;border:1px solid color-mix(in srgb,var(--border-color) 90%,transparent);border-radius:var(--radius-md);overflow:hidden;background:var(--bg-card);margin-bottom:var(--space-8)}
.kpi__c{padding:var(--space-8) var(--space-4);text-align:center;border-right:1px solid color-mix(in srgb,var(--border-color) 70%,transparent)}
.kpi__c:last-child{border-right:0}
.kpi__n{font-size:var(--font-action);font-weight:700;color:var(--text-gold);font-variant-numeric:tabular-nums;line-height:1.1}
.kpi__n .u{font-size:var(--font-micro);color:var(--text-muted)}
.kpi__l{margin-top:var(--space-2);font-size:var(--font-micro);color:var(--text-muted);letter-spacing:.04em}

.bar{position:relative;height:22px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--text-primary) 6%,transparent);overflow:visible;margin:var(--space-8) 0 var(--space-4)}

.spark{width:100%;height:48px;display:block}

.pool{display:flex;align-items:center;gap:var(--space-8);margin:var(--space-4) 0}

.tbl{width:100%;border-collapse:collapse;font-size:var(--font-caption);margin-bottom:var(--space-8)}
.tbl th,.tbl td{border:1px solid color-mix(in srgb,var(--border-color) 80%,transparent);padding:var(--space-6) var(--space-8);text-align:left}
.tbl th{background:color-mix(in srgb,var(--text-primary) 5%,transparent);color:var(--text-secondary);font-weight:600;white-space:nowrap}
.tbl td b{color:var(--text-gold)}
.tbl tr.me{background:color-mix(in srgb,var(--accent-gold) 6%,transparent)}

/* workbench 壳内标题：覆写 .panel-title 的负边距/吸顶（壳已零 padding，否则会溢出） */
.tournament-workbench > .panel-title{margin:0;position:static;padding:var(--space-14) var(--space-16);border-bottom:1px solid var(--border-color);flex:none;border-radius:0}

/* 覆盖 game-systems.css 旧 id 规则：武道壳自管（不自滚），#tournamentContent 作 wb-body 自滚 */
#tournamentPanel.tournament-workbench{overflow:hidden;overflow-y:hidden}
#tournamentContent{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
#tournamentContent::-webkit-scrollbar{display:none}

/* ===== 论道大会 · 正册 =====
   只作用于 #tournamentPanel。节日杯赛 .fest-cup-scope 继续用实心按钮。
   本文件晚于 game-systems.css，且带面板 id，用来压过三列分段、指标砖和实心金按钮。 */
#tournamentPanel > .tournament-event-switch{
    display:flex;
    flex-wrap:wrap;
    gap:var(--space-6);
    width:auto;
    margin:var(--space-8) var(--space-12) 0;
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    overflow:visible
}
#tournamentPanel > .tournament-event-switch .tab{
    width:auto;
    flex:0 0 auto;
    height:30px;
    min-height:30px;
    padding:0 var(--space-12);
    border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);
    border-radius:var(--radius-pill);
    background:transparent;
    color:var(--text-secondary);
    font-size:var(--font-label);
    font-weight:600;
    box-shadow:none
}
#tournamentPanel > .tournament-event-switch .tab.on{
    background:color-mix(in srgb,var(--accent-gold) 10%,transparent);
    border-color:color-mix(in srgb,var(--accent-gold) 42%,transparent);
    color:var(--text-gold);
    box-shadow:none
}
#tournamentPanel #tournamentContent.wb-body,
#tournamentPanel #fairTournamentContent,
#tournamentPanel #sectCupTournamentContent{
    padding:var(--space-12)
}
#tournamentPanel #tournamentContent.wb-body{gap:var(--space-12)}
#tournamentPanel .tabs{
    display:flex;
    flex-wrap:wrap;
    gap:var(--space-6);
    overflow:visible;
    margin-bottom:0
}
#tournamentPanel .fair-tournament-tabs,
#tournamentPanel .sect-cup-pool-switch{
    display:flex;
    flex-wrap:wrap;
    gap:var(--space-6);
    padding:0;
    border-radius:0;
    background:transparent;
    position:static
}
#tournamentPanel .fair-tournament-tab{
    flex:0 0 auto;
    height:30px;
    min-height:30px;
    padding:0 var(--space-12);
    border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);
    border-radius:var(--radius-pill);
    background:transparent;
    color:var(--text-secondary);
    font-size:var(--font-label);
    font-weight:600;
    line-height:1;
    box-shadow:none
}
#tournamentPanel #sectCupTournamentContent .sect-cup-tabs,
#tournamentPanel #sectCupTournamentContent .sect-cup-tabs .fair-tournament-tab{
    font-size:var(--font-label)
}
#tournamentPanel .fair-tournament-tab.on{
    background:color-mix(in srgb,var(--accent-gold) 10%,transparent);
    border-color:color-mix(in srgb,var(--accent-gold) 42%,transparent);
    color:var(--text-gold);
    box-shadow:none
}
#tournamentPanel .sect-cup-pool-count,
#tournamentPanel .chip-kind,
#tournamentPanel .tab__badge,
#tournamentPanel .tournament-guess-guide__eyebrow,
#tournamentPanel .tournament-guess-toolbar__eyebrow,
#tournamentPanel .tournament-guess-guide__tag,
#tournamentPanel .fair-guess-net-note,
#tournamentPanel .fair-bracket-toolbar__tip,
#tournamentPanel .fair-bracket-round__head > span,
#tournamentPanel .fair-tournament-match-card__head,
#tournamentPanel .fair-tournament-match-card__foot{
    font-size:var(--font-label)
}
#tournamentPanel .tab__badge{
    min-width:16px;
    height:16px;
    line-height:16px;
    /* 朱红底。--text-on-gold 在暗色和表格主题会变成近黑。 */
    color:#fff
}
#tournamentPanel .chip-kind{
    height:auto;
    min-height:18px;
    line-height:1.2
}
#tournamentPanel .fair-tournament-summary{
    gap:var(--space-10);
    padding:var(--space-12);
    border-radius:var(--radius-md);
    background:var(--bg-card)
}
#tournamentPanel .fair-tournament-summary__metrics,
#tournamentPanel .fair-tournament-career-stats{
    display:flex;
    flex-direction:column;
    gap:0;
    border:1px solid color-mix(in srgb,var(--border-color) 90%,transparent);
    border-radius:var(--radius-md);
    overflow:hidden;
    background:transparent
}
#tournamentPanel .fair-tournament-summary__metrics > span,
#tournamentPanel .fair-tournament-career-stats > span{
    display:flex;
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
    gap:var(--space-8);
    min-height:40px;
    padding:var(--space-8) var(--space-12);
    border:0;
    border-bottom:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);
    border-radius:0;
    background:transparent;
    text-align:left
}
#tournamentPanel .fair-tournament-career-stats > span{flex-direction:row-reverse}
#tournamentPanel .fair-tournament-summary__metrics > span:last-child,
#tournamentPanel .fair-tournament-career-stats > span:last-child{border-bottom:0}
#tournamentPanel .fair-tournament-summary__metrics small,
#tournamentPanel .fair-tournament-career-stats small,
#tournamentPanel .fair-tournament-stat-grid small,
#tournamentPanel .fair-tournament-roster small,
#tournamentPanel .fair-tournament-opponent small,
#tournamentPanel .fair-tournament-rank-row small{
    flex:none;
    font-size:var(--font-label);
    color:var(--text-secondary)
}
#tournamentPanel .fair-tournament-summary__metrics strong,
#tournamentPanel .fair-tournament-career-stats strong{
    overflow:visible;
    color:var(--text-primary);
    font-size:var(--font-body);
    font-weight:600;
    text-align:right;
    white-space:normal
}
#tournamentPanel .fair-tournament-summary__actions{
    display:flex;
    flex-wrap:wrap;
    grid-template-columns:none;
    gap:var(--space-6);
    margin:0
}
#tournamentPanel .fair-tournament-summary__actions .btn{
    flex:1 1 7.5rem;
    height:auto;
    min-height:40px;
    box-shadow:none;
    font-weight:600
}
#tournamentPanel #fairTournamentContent .fair-tournament-summary__actions .btn--gold,
#tournamentPanel #sectCupTournamentContent .fair-tournament-summary__actions .btn--gold,
#tournamentPanel #tournamentContent .fair-tournament-summary__actions .btn--gold{
    flex:1.25 1 8rem;
    background:color-mix(in srgb,var(--accent-gold) 12%,transparent);
    border-color:var(--border-gold);
    color:var(--text-gold);
    box-shadow:none
}
#tournamentPanel .fair-tournament-section-head{
    flex-wrap:wrap;
    align-items:center;
    row-gap:var(--space-2);
    min-height:0;
    margin:var(--space-12) 0 var(--space-8)
}
#tournamentPanel .fair-tournament-section-head__title{
    flex:1 1 auto;
    min-width:0;
    padding:0;
    border-bottom:0;
    color:var(--text-primary);
    font-family:var(--font-serif);
    font-size:var(--font-body-lg);
    font-weight:600;
    letter-spacing:0
}
#tournamentPanel .fair-tournament-section-head > .btn{
    flex:none;
    order:2
}
#tournamentPanel .fair-tournament-section-head__tip{
    flex:1 1 100%;
    order:5;
    max-width:none;
    text-align:left;
    font-size:var(--font-label)
}
#tournamentPanel .fair-tournament-panel > .fair-tournament-section-head:first-child,
#tournamentPanel #fairTournamentContent > .tournament-tab-panel > .fair-tournament-section-head:first-child,
#tournamentPanel #fairTournamentCareer > .fair-tournament-section-head:first-child{margin-top:var(--space-8)}
#tournamentPanel .fair-tournament-stat-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:0;
    margin:var(--space-4) calc(var(--space-12) * -1) calc(var(--space-12) * -1);
    border-top:1px solid color-mix(in srgb,var(--border-color) 80%,transparent)
}
#tournamentPanel .fair-tournament-stat-grid > span:nth-child(n + 4){display:none}
#tournamentPanel .fair-tournament-stat-grid > span{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:var(--space-2);
    min-height:48px;
    padding:var(--space-8) var(--space-4);
    border:0;
    border-right:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);
    border-radius:0;
    background:transparent;
    text-align:center
}
#tournamentPanel .fair-tournament-stat-grid > span:nth-child(3){border-right:0}
#tournamentPanel .fair-tournament-stat-grid strong{
    color:var(--text-primary);
    font-size:var(--font-body-lg);
    font-weight:600
}
#tournamentPanel .fair-tournament-self-actions{
    display:flex;
    grid-template-columns:none;
    align-items:center;
    justify-content:flex-end;
    gap:var(--space-8);
    margin:0;
    padding:0;
    border:0;
    background:transparent
}
#tournamentPanel #fairTournamentContent .fair-tournament-self-actions .btn--danger,
#tournamentPanel #sectCupTournamentContent .fair-tournament-self-actions .btn--danger{
    flex:none;
    width:auto;
    height:40px;
    min-height:40px;
    margin-left:auto;
    padding:0 var(--space-4);
    border-color:transparent;
    background:transparent;
    box-shadow:none;
    color:var(--text-danger);
    font-weight:600
}
#tournamentPanel .fair-tournament-opponents,
#tournamentPanel #fairTournamentRanking .fair-tournament-ranking{
    display:flex;
    flex-direction:column;
    gap:0;
    border:1px solid color-mix(in srgb,var(--border-color) 90%,transparent);
    border-radius:var(--radius-md);
    overflow:hidden;
    background:var(--bg-card)
}
#tournamentPanel .fair-tournament-opponent{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto auto;
    grid-template-areas:"name pts btn" "root pts btn";
    align-items:center;
    column-gap:var(--space-8);
    row-gap:0;
    min-height:48px;
    padding:var(--space-8) var(--space-12);
    border:0;
    border-bottom:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);
    border-radius:0;
    background:transparent
}
#tournamentPanel .fair-tournament-opponent:last-child{border-bottom:0}
#tournamentPanel .fair-tournament-opponent__head,
#tournamentPanel .fair-tournament-opponent__foot{display:contents}
#tournamentPanel .fair-tournament-opponent__head > strong{
    grid-area:name;
    min-width:0;
    overflow-wrap:anywhere
}
#tournamentPanel .fair-tournament-opponent__head > span{grid-area:pts;justify-self:end}
#tournamentPanel .fair-tournament-opponent__foot > small{grid-area:root}
#tournamentPanel .fair-tournament-opponent .fair-tournament-duel{
    grid-area:btn;
    align-self:center;
    min-height:36px
}
#tournamentPanel #fairTournamentRanking .fair-tournament-rank-row{
    min-height:48px;
    border:0;
    border-bottom:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);
    border-radius:0;
    background:transparent
}
#tournamentPanel #fairTournamentRanking .fair-tournament-rank-row:last-child{border-bottom:0}
#tournamentPanel #fairTournamentRanking .fair-tournament-rank-row.is-me{
    background:color-mix(in srgb,var(--accent-gold) 6%,transparent)
}
#tournamentPanel #fairTournamentRanking .fair-tournament-rank-row__no{color:var(--text-muted)}
#tournamentPanel #fairTournamentRanking .fair-tournament-rank-row:nth-child(-n+3) .fair-tournament-rank-row__no{color:var(--text-gold)}
#tournamentPanel .fair-tournament-roster{
    display:flex;
    flex-direction:column;
    flex-wrap:nowrap;
    gap:0;
    border-top:1px solid color-mix(in srgb,var(--border-color) 70%,transparent)
}
#tournamentPanel .fair-tournament-roster > span{
    display:flex;
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
    gap:var(--space-8);
    width:auto;
    max-width:none;
    padding:var(--space-8) 0;
    border:0;
    border-bottom:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);
    border-radius:0;
    background:transparent;
    text-align:left
}
#tournamentPanel .fair-tournament-roster > span:last-child{border-bottom:0}
#tournamentPanel .fair-tournament-roster strong{
    overflow:visible;
    color:var(--text-primary);
    font-size:var(--font-body);
    font-weight:600;
    text-overflow:clip;
    white-space:normal
}
#tournamentPanel #tournamentContent .kpi{
    display:grid;
    border:0;
    border-top:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);
    border-radius:0;
    background:transparent;
    margin:var(--space-8) 0 0
}
#tournamentPanel #tournamentContent .kpi__c{
    padding:var(--space-8) var(--space-4);
    background:transparent
}
#tournamentPanel #tournamentContent .kpi__n{
    color:var(--text-primary);
    font-size:var(--font-body-lg)
}
#tournamentPanel #tournamentContent .kpi__n .u,
#tournamentPanel #tournamentContent .kpi__l{font-size:var(--font-label)}
#tournamentPanel #tournamentOpponentsList:has(> .card){
    display:flex;
    flex-direction:column;
    border:1px solid color-mix(in srgb,var(--border-color) 90%,transparent);
    border-radius:var(--radius-md);
    overflow:hidden;
    background:var(--bg-card)
}
#tournamentPanel #tournamentOpponentsList > .card{
    margin:0;
    border:0;
    border-bottom:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);
    border-radius:0;
    background:transparent
}
#tournamentPanel #tournamentOpponentsList > .card:last-child{border-bottom:0}
#tournamentPanel #tournamentOpponentsList .btn--jade{
    height:36px;
    min-height:36px;
    background:color-mix(in srgb,var(--accent-gold) 12%,transparent);
    border:1px solid var(--border-gold);
    color:var(--text-gold);
    box-shadow:none
}
#tournamentPanel #tournamentContent .sec-h{flex-wrap:wrap;align-items:center}
#tournamentPanel #tournamentContent .sec-t{
    flex:1 1 auto;
    min-width:0;
    font-family:var(--font-serif);
    font-size:var(--font-body-lg);
    font-weight:600;
    letter-spacing:0;
    color:var(--text-primary)
}
#tournamentPanel #tournamentContent .sec-h .btn{flex:none}
#tournamentPanel .tournament-guess-guide{
    border-color:color-mix(in srgb,var(--border-color) 90%,transparent);
    background:var(--bg-card)
}
#tournamentPanel .tournament-guess-guide__eyebrow,
#tournamentPanel .tournament-guess-toolbar__eyebrow{
    color:var(--text-secondary);
    letter-spacing:0
}
#tournamentPanel .fair-bracket-toolbar__btn--primary{
    background:color-mix(in srgb,var(--accent-gold) 12%,transparent);
    border-color:var(--border-gold);
    color:var(--text-gold)
}
#tournamentPanel .fair-tournament-fold > summary{font-size:var(--font-label)}
#tournamentPanel #tournamentContent .btn.sm{
    height:auto;
    min-height:36px;
    font-size:var(--font-label)
}
#tournamentPanel #tournamentContent .card__actions .btn{
    height:auto;
    min-height:40px;
    font-size:var(--font-body)
}
#tournamentPanel .tournament-career-toolbar__eyebrow,
#tournamentPanel .tournament-career-section__eyebrow{
    font-size:var(--font-label);
    letter-spacing:0;
    color:var(--text-secondary)
}
#tournamentPanel .tournament-guess-filters__label,
#tournamentPanel .tournament-career-toolbar__hint{
    font-size:var(--font-label)
}
#tournamentPanel #tournamentOpponentsList .card__name{
    color:var(--text-primary)
}
#tournamentPanel #fairTournamentRanking .fair-tournament-rank-row__result > strong,
#tournamentPanel #sectCupTournamentContent .fair-tournament-rank-row__no{
    color:var(--text-primary)
}
#tournamentPanel #sectCupTournamentContent .fair-tournament-rank-row__result > strong{
    color:var(--text-secondary)
}
#tournamentPanel #fairTournamentCareer .fair-tournament-tabs{
    margin:0 0 var(--space-8)
}
#tournamentPanel .fair-tournament-career-records{
    border:1px solid color-mix(in srgb,var(--border-color) 80%,transparent);
    border-radius:var(--radius-md);
    background:var(--bg-card);
    overflow:hidden
}
#tournamentPanel .fair-tournament-career-record{
    display:flex;
    align-items:center;
    gap:var(--space-8);
    min-height:48px;
    padding:var(--space-8) var(--space-12)
}
#tournamentPanel .fair-tournament-career-record + .fair-tournament-career-record{
    border-top:1px solid color-mix(in srgb,var(--border-color) 70%,transparent)
}
#tournamentPanel .fair-tournament-career-record__main{
    flex:1 1 auto;
    min-width:0;
    display:flex;
    flex-direction:column;
    gap:var(--space-2)
}
#tournamentPanel .fair-tournament-career-record__main strong{
    font-size:var(--font-body-lg);
    font-weight:600;
    color:var(--text-primary)
}
#tournamentPanel .fair-tournament-career-record__main small{
    font-size:var(--font-label);
    color:var(--text-muted)
}
#tournamentPanel .fair-tournament-career-record__rank{
    flex:none;
    font-size:var(--font-body);
    font-weight:600;
    color:var(--text-primary)
}
#tournamentPanel .fair-tournament-career-record__rank.is-quiet{
    color:var(--text-secondary)
}
#tournamentPanel .fair-tournament-career-record > .btn--gold{
    flex:none;
    height:auto;
    min-height:40px;
    padding:0 var(--space-12);
    background:color-mix(in srgb,var(--accent-gold) 12%,transparent);
    border:1px solid var(--border-gold);
    color:var(--text-gold);
    box-shadow:none;
    font-size:var(--font-label);
    font-weight:600
}

/* ===== 论道大会 · 天衡历届（方向甲 · 纪年册，2026-10-18） =====
   一届一卡：冠军 → 感言 → 我的名次 → 前八（默认收起，点开就地展开）→ 问鼎回看。
   只作用于 #tournamentPanel；全部消费 game-base.css 语义令牌，不新增色值。 */
#fairTournamentCareer{display:flex;flex-direction:column;gap:var(--space-8)}
#tournamentPanel .fair-career-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-8);padding:var(--space-2) var(--space-2) 0}
#tournamentPanel .fair-career-head h3{margin:0;font-size:var(--font-heading);font-weight:600;color:var(--text-primary);letter-spacing:.04em;line-height:1.3}
#tournamentPanel .fair-career-head p{margin:var(--space-2) 0 0;font-size:var(--font-caption);color:var(--text-muted);line-height:1.4}
#tournamentPanel .fair-career-live{display:inline-flex;align-items:center;gap:var(--space-4);height:22px;padding:0 var(--space-8);border:1px solid var(--border-gold);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--accent-gold) 9%,transparent);color:var(--text-gold);font-size:var(--font-micro);font-weight:600;white-space:nowrap}
#tournamentPanel .fair-career-live i{width:5px;height:5px;border-radius:50%;background:var(--accent-gold);flex:none}
#tournamentPanel .fair-career-summary{display:flex;flex-direction:column;gap:var(--space-4)}
#tournamentPanel .fair-career-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:var(--space-8) 0;border:1px solid color-mix(in srgb,var(--border-color) 90%,transparent);border-radius:var(--radius-md);background:var(--bg-card)}
#tournamentPanel .fair-career-stat{text-align:center;border-left:1px solid color-mix(in srgb,var(--border-color) 70%,transparent)}
#tournamentPanel .fair-career-stat:first-child{border-left:0}
#tournamentPanel .fair-career-stat b{display:block;font-size:var(--font-title);font-weight:600;color:var(--text-primary);line-height:1.15;font-variant-numeric:tabular-nums}
#tournamentPanel .fair-career-stat small{display:block;margin-top:var(--space-2);font-size:var(--font-micro);color:var(--text-muted);line-height:1.2}
#tournamentPanel .fair-career-fine{margin:0 var(--space-2);font-size:var(--font-micro);color:var(--text-muted);line-height:1.5}
#tournamentPanel .fair-career-filters{display:flex;align-items:center;gap:var(--space-6);padding:0 var(--space-2)}
#tournamentPanel .fair-career-filter{position:relative;height:30px;padding:0 var(--space-10);border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);border-radius:var(--radius-pill);background:transparent;color:var(--text-secondary);font-family:inherit;font-size:var(--font-label);font-weight:600;white-space:nowrap;cursor:pointer}
/* R100：30px 可见钮补足 44 命中区（与 .fair-career-link ::after 同惯例） */
#tournamentPanel .fair-career-filter::after{content:"";position:absolute;inset:-7px}
#tournamentPanel .fair-career-filter.is-on{background:color-mix(in srgb,var(--accent-gold) 10%,transparent);border-color:color-mix(in srgb,var(--accent-gold) 42%,transparent);color:var(--text-gold)}
#tournamentPanel .fair-career-sort{margin-left:auto;font-size:var(--font-micro);color:var(--text-muted);white-space:nowrap}
#tournamentPanel .fair-career-list{display:flex;flex-direction:column;gap:var(--space-8)}
#tournamentPanel .fair-career-ed{overflow:hidden;border:1px solid color-mix(in srgb,var(--border-color) 90%,transparent);border-radius:var(--radius-md);background:var(--bg-card)}
#tournamentPanel .fair-career-ed.is-live{border-color:var(--border-gold)}
#tournamentPanel .fair-career-ed__head{display:flex;align-items:center;gap:var(--space-6);padding:var(--space-8) var(--space-12) 0}
#tournamentPanel .fair-career-ed__season{font-size:var(--font-body);font-weight:600;color:var(--text-primary);line-height:1.4}
#tournamentPanel .fair-career-ed__date{font-size:var(--font-micro);color:var(--text-muted);font-variant-numeric:tabular-nums;line-height:1.4}
#tournamentPanel .fair-career-ed__state{margin-left:auto;font-size:var(--font-micro);font-weight:600;color:var(--text-gold);line-height:1.4}
#tournamentPanel .fair-career-champ{display:flex;align-items:center;gap:var(--space-10);padding:var(--space-6) var(--space-12) 0}
#tournamentPanel .fair-career-seal{display:flex;flex:none;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--border-gold);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--accent-gold) 9%,transparent);color:var(--text-gold);font-family:var(--font-display);font-size:var(--font-title);line-height:1}
#tournamentPanel .fair-career-champ__main{flex:1 1 auto;min-width:0}
#tournamentPanel .fair-career-champ__name{display:block;font-family:var(--font-display);font-size:var(--font-page-title);font-weight:400;letter-spacing:.04em;line-height:1.2;color:var(--text-primary)}
#tournamentPanel .fair-career-champ__name.is-empty{font-size:var(--font-body-lg);letter-spacing:0;color:var(--text-secondary)}
#tournamentPanel .fair-career-champ__meta{display:block;margin-top:var(--space-2);font-size:var(--font-micro);color:var(--text-muted);line-height:1.3;font-variant-numeric:tabular-nums}
#tournamentPanel .fair-career-chip{flex:none;display:inline-flex;align-items:center;height:21px;padding:0 var(--space-6);border:1px solid var(--border-gold);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--accent-gold) 10%,transparent);color:var(--text-gold);font-size:var(--font-micro);font-weight:600;white-space:nowrap}
#tournamentPanel .fair-career-speech{margin:var(--space-6) var(--space-12) 0;font-size:var(--font-body);line-height:1.65;color:var(--text-secondary);text-wrap:pretty}
#tournamentPanel .fair-career-speech.is-empty{color:var(--text-muted)}
#tournamentPanel .fair-career-speech-actions{display:flex;align-items:center;gap:var(--space-6);padding:var(--space-4) var(--space-12) 0}
#tournamentPanel .fair-career-like,
#tournamentPanel .fair-career-edit{position:relative;display:inline-flex;align-items:center;height:28px;padding:0 var(--space-8);border:1px solid var(--border-color);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-family:inherit;font-size:var(--font-caption);cursor:pointer}
#tournamentPanel .fair-career-like::after,
#tournamentPanel .fair-career-edit::after{content:"";position:absolute;inset:-8px}
#tournamentPanel .fair-career-like.is-on{border-color:var(--border-gold);background:color-mix(in srgb,var(--accent-gold) 7%,transparent);color:var(--text-gold)}
#tournamentPanel .fair-career-edit{border-color:var(--border-gold);background:color-mix(in srgb,var(--accent-gold) 8%,transparent);color:var(--text-gold);font-weight:600}
#tournamentPanel .fair-career-likes{font-size:var(--font-micro);color:var(--text-muted)}
#tournamentPanel .fair-career-mine{display:flex;align-items:center;gap:var(--space-6);margin-top:var(--space-8);padding:var(--space-6) var(--space-12);border-top:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);background:color-mix(in srgb,var(--accent-gold) 4%,transparent)}
#tournamentPanel .fair-career-mine.is-muted{color:var(--text-muted)}
#tournamentPanel .fair-career-mine.is-muted b{color:var(--text-muted)}
#tournamentPanel .fair-career-me{display:flex;flex:none;align-items:center;justify-content:center;width:17px;height:17px;border:1px solid var(--border-gold);border-radius:var(--radius-xs);background:var(--bg-card);color:var(--text-gold);font-family:var(--font-display);font-size:var(--font-micro);line-height:1}
#tournamentPanel .fair-career-mine b{flex:none;font-size:var(--font-label);font-weight:600;color:var(--text-primary);line-height:1}
#tournamentPanel .fair-career-mine b.is-quiet{color:var(--text-secondary)}
#tournamentPanel .fair-career-mine__meta{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-micro);color:var(--text-muted);font-variant-numeric:tabular-nums}
#tournamentPanel .fair-career-link{position:relative;display:inline-flex;flex:none;align-items:center;height:28px;padding:0 var(--space-4);border:0;background:none;color:var(--text-gold);font-family:inherit;font-size:var(--font-caption);font-weight:600;white-space:nowrap;cursor:pointer}
#tournamentPanel .fair-career-link::after{content:"";position:absolute;inset:-8px}
#tournamentPanel .fair-career-link:hover{color:var(--text-gold);text-decoration:underline;text-underline-offset:3px}
#tournamentPanel .fair-career-mine .fair-career-link,
#tournamentPanel .fair-career-live-line .fair-career-link{margin-left:auto}
#tournamentPanel .fair-career-live-line{display:flex;align-items:center;gap:var(--space-6);padding:var(--space-4) var(--space-12) var(--space-6);font-size:var(--font-body);color:var(--text-secondary);line-height:1.5}
#tournamentPanel .fair-career-live-line span{flex:1 1 auto;min-width:0}
#tournamentPanel .fair-career-top8{display:flex;align-items:flex-start;gap:var(--space-6);width:100%;min-height:44px;padding:var(--space-6) var(--space-12) var(--space-8);border:0;border-top:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);background:transparent;text-align:left;font-family:inherit;cursor:pointer}
#tournamentPanel .fair-career-top8.is-empty{cursor:default}
/* padding-top:1px 为 micro 字号与名单基线对齐的光学校正（不进间距阶梯，改动须目检对齐） */
#tournamentPanel .fair-career-top8__label{flex:none;padding-top:1px;font-size:var(--font-micro);color:var(--text-muted);letter-spacing:.08em;line-height:1.6}
#tournamentPanel .fair-career-top8__names{flex:1 1 auto;font-size:var(--font-caption);line-height:1.6;color:var(--text-secondary);text-wrap:pretty}
#tournamentPanel .fair-career-top8__names em{font-style:normal;color:var(--text-muted);margin-right:2px}
#tournamentPanel .fair-career-top8__names b{color:var(--text-primary);font-weight:600}
#tournamentPanel .fair-career-top8__caret{flex:none;font-size:var(--font-label);line-height:1.6;color:var(--text-muted)}
#tournamentPanel .fair-career-top8-list{display:flex;flex-direction:column;padding:0 var(--space-12) var(--space-6)}
#tournamentPanel .fair-career-top8-row{display:flex;align-items:baseline;gap:var(--space-8);min-height:30px;border-top:1px dashed color-mix(in srgb,var(--border-color) 60%,transparent)}
#tournamentPanel .fair-career-top8-row:first-child{border-top:0}
#tournamentPanel .fair-career-top8-rank{flex:none;width:38px;font-size:var(--font-caption);line-height:1.6;color:var(--text-muted)}
#tournamentPanel .fair-career-top8-name{font-size:var(--font-body);line-height:1.6;color:var(--text-secondary)}
#tournamentPanel .fair-career-actions{display:flex;justify-content:flex-end;padding:0 var(--space-12) var(--space-8)}
#tournamentPanel .fair-career-bracket{margin-top:var(--space-2);padding:var(--space-8) var(--space-12) var(--space-10);border-top:1px solid var(--border-color);background:color-mix(in srgb,var(--text-primary) 2.4%,transparent)}
#tournamentPanel .fair-career-bracket__head{display:flex;align-items:center;gap:var(--space-8);margin-bottom:var(--space-6)}
#tournamentPanel .fair-career-bracket__head strong{font-size:var(--font-label);font-weight:600;color:var(--text-primary)}
#tournamentPanel .fair-career-bracket__head .fair-career-link{margin-left:auto}
#tournamentPanel .fair-career-retry{padding:0;border:0;background:none;color:var(--text-gold);font:inherit;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
