/* ===========================================================
   虹甲杯 · 配色取自甲子园本身：
   记分板的墨绿、外野墙的常春藤、内野的红土、边线的白垩、灯泡的黄铜
   =========================================================== */
:root{
  --board:#0E1C17;        /* 手动记分板的墨绿 */
  --board-2:#16281F;
  --ivy:#3E7A4E;          /* 外野墙常春藤 */
  --ivy-lt:#6FA97C;
  --clay:#C0603A;         /* 内野红土 */
  --clay-lt:#E08A5E;
  --brass:#E3A93B;        /* 记分板灯泡 */
  --chalk:#F6F2E8;        /* 白垩线 */
  --paper:#FBF9F3;
  --ink:#1B1F1C;
  --ink-2:#5A6159;
  --line:#DED7C6;

  --g-S:#D6336C; --g-A:#E8590C; --g-B:#F08C00; --g-C:#2F9E44;
  --g-D:#1C7ED6; --g-E:#4C6EF5; --g-F:#868E96; --g-G:#ADB5BD;

  --sp-gold:#B98A16; --sp-gold-bg:#FBF0D2;
  --sp-green:#2B8A3E; --sp-green-bg:#E4F5E6;
  --sp-blue:#1864AB;  --sp-blue-bg:#E3F0FA;
  --sp-red:#C92A2A;   --sp-red-bg:#FBE6E6;

  --fs:16px;
  --num:"SF Mono",ui-monospace,"DejaVu Sans Mono",Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI","PingFang SC","Hiragino Sans GB",
         "Microsoft YaHei","Noto Sans CJK SC",sans-serif;
  --display:var(--sans);      /* 标题字体，默认跟正文一样 */

  /* ---- 各处字号。config.json 的「字号」段可以逐项覆盖 ---- */
  --fs-mark:26px;      --ls-mark:.16em;      /* 顶栏杯赛名 */
  --fs-mark-en:10px;   --ls-mark-en:.34em;   /* 顶栏英文小字 */
  --fs-meta:12.5px;                          /* 顶栏右侧群号那行 */
  --fs-nav:14.5px;                           /* 导航 */
  --fs-eyebrow:10.5px; --ls-eyebrow:.3em;    /* 每页上方的英文眉标题 */
  --fs-h1:25px;                              /* 页面主标题 */
  --fs-hero:31px;                            /* 首页大标题 */
  --fs-h2:18px;                              /* 区块标题 */
  --fs-h3:15px;                              /* 小标题 */
  --fs-stat:31px;                            /* 首页大数字 */
  --fs-card:15px;                            /* 卡片里的名字 */
  --fs-pname:27px;                           /* 个人页姓名 */
  --fs-table:14px;     --fs-th:12px;         /* 表格正文 / 表头 */
  --fs-live:13.5px;                          /* 单场比赛页的打击 / 投球成绩表 */
  --fs-ls:15px;                              /* 单场比赛页顶部比分板 */
  --feed-h:60vh;                             /* テキスト速報 的可滚动高度 */
  /* ---- 育成进度的格子底色 ---- */
  --pg-win:#FFF3A8; --pg-jin:#FFD08A; --pg-spr:#BFE3B4; --pg-done:#F6C39C;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--paper); color:var(--ink);
  font:var(--fs)/1.65 var(--sans);
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer}

/* ---------- 记分板式页头 ---------- */
.board{
  background:var(--board);
  background-image:
    repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,transparent 1px 14px);
  color:var(--chalk);
  border-bottom:3px solid var(--brass);
  position:sticky; top:0; z-index:50;
}
.board-in{
  max-width:1180px;margin:0 auto;padding:14px 20px 10px;
  display:flex;align-items:baseline;gap:18px;flex-wrap:wrap;
}
.mark{display:flex;align-items:baseline;gap:10px}
.mark-kanji{
  font-size:var(--fs-mark);font-family:var(--display);font-weight:800;letter-spacing:var(--ls-mark);
  color:var(--chalk);text-shadow:0 0 18px rgba(227,169,59,.35);
}
.mark-en{
  font:600 var(--fs-mark-en)/1 var(--num);letter-spacing:var(--ls-mark-en);color:var(--brass);opacity:.9;
}
.board-meta{
  margin-left:auto;font:500 var(--fs-meta)/1.4 var(--num);letter-spacing:.06em;
  color:#A9B7AC;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.lamp{
  width:7px;height:7px;border-radius:50%;background:var(--brass);
  box-shadow:0 0 8px var(--brass);
}
.sep{opacity:.35}

.nav{
  max-width:1180px;margin:0 auto;padding:0 20px 0;
  display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;
}
.nav::-webkit-scrollbar{display:none}
.nav a{
  padding:9px 15px 10px;font-size:var(--fs-nav);font-weight:600;letter-spacing:.04em;
  color:#9FB0A4;white-space:nowrap;border-bottom:3px solid transparent;
  margin-bottom:-3px;transition:color .15s;
}
.nav a:hover{color:var(--chalk)}
.nav a.on{color:var(--chalk);border-bottom-color:var(--brass)}

/* ---------- 骨架 ---------- */
.view{max-width:1180px;margin:0 auto;padding:26px 20px 70px;min-height:60vh}
.loading{padding:60px 0;text-align:center;color:var(--ink-2)}
.eyebrow{
  font:700 var(--fs-eyebrow)/1 var(--num);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;
  color:var(--clay);margin-bottom:8px;
}
h1{font-size:var(--fs-h1);font-family:var(--display);font-weight:800;letter-spacing:.03em;margin:0 0 4px}
h2{font-size:var(--fs-h2);font-family:var(--display);font-weight:750;letter-spacing:.03em;
   margin:34px 0 12px;padding-bottom:7px;border-bottom:2px solid var(--ink)}
h3{font-size:var(--fs-h3);font-weight:700;margin:22px 0 8px;color:var(--ink-2);
   letter-spacing:.08em}
.muted{color:var(--ink-2)}
.small{font-size:12.5px}

/* ---------- 首页 ---------- */
.hero{
  border:2px solid var(--ink);background:var(--chalk);
  padding:22px 24px;margin-bottom:8px;
  display:flex;gap:28px;flex-wrap:wrap;align-items:flex-end;
}
.hero-t{flex:1 1 260px}
.hero-t h1{font-size:var(--fs-hero)}
.stat-row{display:flex;gap:26px;flex-wrap:wrap}
.stat{min-width:74px}
.stat b{display:block;font:800 var(--fs-stat)/1 var(--num);letter-spacing:-.02em}
.stat span{font-size:11.5px;letter-spacing:.12em;color:var(--ink-2)}

.grid-teams{
  display:grid;gap:9px;margin-top:14px;
  grid-template-columns:repeat(auto-fill,minmax(196px,1fr));
}
.tcard{
  border:1px solid var(--line);background:#fff;padding:11px 13px;
  border-left:5px solid var(--c,#999);transition:transform .12s,box-shadow .12s;
}
.tcard:hover{transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,.09)}
.tcard b{display:block;font-size:var(--fs-card);font-weight:750}
.tcard i{font-style:normal;font-size:12px;color:var(--ink-2)}
.tcard .rec{font:600 11px/1 var(--num);color:var(--clay);margin-top:6px;display:block}

/* ---------- 工具条 ---------- */
.tools{
  display:flex;gap:8px;flex-wrap:wrap;align-items:center;
  padding:12px 0 14px;border-bottom:1px solid var(--line);margin-bottom:16px;
}
.tools input[type=search]{
  flex:1 1 190px;min-width:150px;padding:8px 12px;font:inherit;
  border:1.5px solid var(--ink);background:#fff;border-radius:0;
}
.tools input:focus{outline:2px solid var(--brass);outline-offset:1px}
.chip{
  padding:6px 12px;font-size:12.5px;font-weight:600;
  border:1.5px solid var(--line);background:#fff;color:var(--ink-2);
}
.chip.on{background:var(--ink);border-color:var(--ink);color:var(--chalk)}
select.chip{padding:6px 8px}

/* ---------- 名鉴 ---------- */
.grid-p{
  display:grid;gap:8px;
  grid-template-columns:repeat(auto-fill,minmax(230px,1fr));
}
.pcard{
  display:flex;gap:11px;align-items:center;background:#fff;
  border:1px solid var(--line);border-left:4px solid var(--c,#999);
  padding:9px 11px;transition:transform .12s,box-shadow .12s;
}
.pcard:hover{transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,.09)}
.ava{
  width:48px;height:48px;flex:0 0 48px;object-fit:cover;
  border:1px solid var(--line);background:var(--chalk);
  display:flex;align-items:center;justify-content:center;
  font:700 17px/1 var(--sans);color:#fff;
}
.pcard .nm{font-weight:750;font-size:var(--fs-card)}
.pcard .sb{font-size:11.5px;color:var(--ink-2)}
.star{font:700 12.5px/1 var(--num);color:var(--clay)}

/* ---------- 表格 ---------- */
.tw{overflow-x:auto;border:1px solid var(--line);background:#fff}
table{border-collapse:collapse;width:100%;font-size:var(--fs-table)}
th,td{padding:6px 9px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:left}
thead th{
  background:var(--board);color:var(--chalk);position:sticky;top:0;
  font:700 var(--fs-th)/1.5 var(--num);letter-spacing:.1em;text-transform:uppercase;
  cursor:pointer;user-select:none;
}
thead th:hover{background:var(--board-2)}
tbody tr:nth-child(even){background:#FCFBF7}
tbody tr:hover{background:#F3EFE2}
td.num{font-family:var(--num);text-align:right;font-variant-numeric:tabular-nums}
/* 表头跟着单元格走：th 也标 .num 就一起靠右，标 .ta-c / .ta-r 就一起居中 / 靠右。
   （下面这三行要排在 td.num 后面，不然同权重时是 td.num 赢，居中会失效） */
thead th.num{text-align:right}
th.ta-c,td.ta-c,td.num.ta-c{text-align:center}
th.ta-r,td.ta-r{text-align:right}
.g{display:inline-block;width:17px;text-align:center;font:800 12.5px/1 var(--num)}
.g-S{color:var(--g-S)}.g-A{color:var(--g-A)}.g-B{color:var(--g-B)}.g-C{color:var(--g-C)}
.g-D{color:var(--g-D)}.g-E{color:var(--g-E)}.g-F{color:var(--g-F)}.g-G{color:var(--g-G)}

/* ---------- 选手页 ---------- */
.php{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start;
     border:2px solid var(--ink);background:var(--chalk);padding:18px 20px}
.php .ava{width:92px;height:92px;flex:0 0 92px;font-size:31px}
.php h1{font-size:var(--fs-pname)}
.kv{display:flex;gap:20px;flex-wrap:wrap;margin-top:9px}
.kv div{font-size:12.5px}
.kv b{display:block;font-size:10px;letter-spacing:.16em;color:var(--ink-2);font-weight:700}
.two{display:grid;gap:22px;grid-template-columns:minmax(280px,1fr) minmax(280px,1.15fr);
     align-items:start;margin-top:20px}
@media(max-width:760px){.two{grid-template-columns:1fr}}

.bars{border:1px solid var(--line);background:#fff}
.bar{display:flex;align-items:center;gap:10px;padding:7px 12px;border-bottom:1px solid var(--line)}
.bar:last-child{border-bottom:0}
/* 名字列的宽度由 app.js 按最长的名字算好，写在 .bars 的 --lb-w 上；
   nowrap 保证「コントロール」这种六个字的名字不会掉到第二行 */
.bar .lb{
  flex:0 0 var(--lb-w,74px);font-size:var(--lb-fs,12.5px);font-weight:700;color:var(--ink-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.bar .track{flex:1;height:9px;background:#EFEADD;position:relative}
.bar .fill{position:absolute;inset:0 auto 0 0;background:var(--clay)}
.bar .vv{flex:0 0 62px;text-align:right;font:700 14px/1 var(--num);
         font-variant-numeric:tabular-nums}

.sp-wrap{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.sp{
  font-size:12.5px;font-weight:650;padding:4px 10px;border:1.5px solid;
}
.sp-gold{color:var(--sp-gold);background:var(--sp-gold-bg);border-color:var(--sp-gold)}
.sp-green{color:var(--sp-green);background:var(--sp-green-bg);border-color:var(--sp-green)}
.sp-blue{color:var(--sp-blue);background:var(--sp-blue-bg);border-color:var(--sp-blue)}
.sp-red{color:var(--sp-red);background:var(--sp-red-bg);border-color:var(--sp-red)}
.sp-bluered{
  color:var(--sp-blue);border-color:var(--sp-blue);
  background:linear-gradient(90deg,var(--sp-blue-bg) 0 50%,var(--sp-red-bg) 50% 100%);
}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-2);margin-top:8px}

/* 変化球雷达 */
.radar{border:1px solid var(--line);background:#fff;padding:6px}
.radar svg{display:block;width:100%;height:auto}

/* ---------- 育成进度 ---------- */
.pg-win{background:var(--pg-win)}      /* 夏甲优胜 */
.pg-jin{background:var(--pg-jin)}      /* 神宫优胜 */
.pg-spr{background:var(--pg-spr)}      /* 春甲优胜 */
.pg-done{background:var(--pg-done);font-weight:700}
td.pg{font-size:12px;white-space:nowrap}

/* ---------- 对阵 ---------- */
.empty{
  border:2px dashed var(--line);padding:34px 24px;text-align:center;color:var(--ink-2);
  background:#fff;
}
.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:6px}

.back{display:inline-block;margin-bottom:12px;font-size:12.5px;font-weight:650;color:var(--clay)}
.back:hover{text-decoration:underline}

.foot{
  border-top:1px solid var(--line);margin-top:40px;padding:20px;
  text-align:center;font-size:11.5px;color:var(--ink-2);
}
.foot-note{opacity:.7;margin-top:4px}

@media (prefers-reduced-motion:reduce){*{transition:none!important}}


/* ============ v3 追加：可调版式 / 弹道箭头 / 特能悬浮 / 图例上色 ============ */
:root{
  --col-l:minmax(280px,1fr); --col-r:minmax(320px,1.15fr);
  --sp-fs:13px;
  /* 四个宽度互不相干，各管一处。none = 不限制 */
  --sub-max:300px;    /* 只管个人页那张「基础能力」小表 */
  --bar-max:420px;    /* 只管个人页的能力条 */
  --radar-max:none;   /* 只管変化球放射图 */
  --tw-max:none;      /* 其余所有表格：队伍 / 位置对比 / 育成进度 / 对阵 / 成绩 */
}
.two{grid-template-columns:var(--col-l) var(--col-r)}
.bars{max-width:var(--bar-max)}
.tw{max-width:var(--tw-max)}
.tw-sub{max-width:var(--sub-max)}
.radar{max-width:var(--radar-max)}
/* 弹道那一行：不要能力条的灰底和 9px 限高，让箭头自己撑开 */
.bar .track-d{
  background:none;height:auto;flex:1 1 auto;
  display:flex;align-items:center;justify-content:flex-start;
}
svg.dando{display:block}

.sp{font-size:var(--sp-fs);position:relative;cursor:help}
/* 悬浮提示：右边的特能标签和基础能力格子里的金特牌共用同一套（v11） */
.sp[data-tip],.sk[data-tip]{position:relative;cursor:help}
.sp[data-tip]:hover::after,.sp[data-tip]:focus::after,
.sk[data-tip]:hover::after,.sk[data-tip]:focus::after{
  content:attr(data-tip);position:absolute;left:0;top:calc(100% + 6px);z-index:40;
  white-space:pre-wrap;width:max-content;max-width:300px;
  background:var(--board);color:var(--chalk);padding:8px 10px;border-radius:4px;
  font-size:12px;line-height:1.5;box-shadow:0 6px 20px rgba(0,0,0,.28);pointer-events:none;
  font-weight:400;text-align:left;
}
.sp[data-tip]:hover::before,.sp[data-tip]:focus::before,
.sk[data-tip]:hover::before,.sk[data-tip]:focus::before{
  content:'';position:absolute;left:12px;top:100%;z-index:41;
  border:6px solid transparent;border-bottom-color:var(--board);pointer-events:none;
}
/* 提示框自己要浮在别的格子上面 */
.sk[data-tip]:hover,.sk[data-tip]:focus{z-index:42}

.legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;font-size:12px}
.legend .lg{display:inline-flex;align-items:center;gap:5px}
.legend .lg i{width:11px;height:11px;border-radius:2px;display:inline-block;border:1px solid}
.lg-gold   {color:var(--sp-gold)}   .lg-gold i   {background:var(--sp-gold-bg);border-color:var(--sp-gold)}
.lg-green  {color:var(--sp-green)}  .lg-green i  {background:var(--sp-green-bg);border-color:var(--sp-green)}
.lg-blue   {color:var(--sp-blue)}   .lg-blue i   {background:var(--sp-blue-bg);border-color:var(--sp-blue)}
.lg-red    {color:var(--sp-red)}    .lg-red i    {background:var(--sp-red-bg);border-color:var(--sp-red)}
.lg-bluered{color:var(--sp-blue)}
.lg-bluered i{border-color:var(--sp-blue);
  background:linear-gradient(90deg,var(--sp-blue-bg) 0 50%,var(--sp-red-bg) 50% 100%)}

/* ============ 速报页 ============ */
.glist{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.gcard{display:block;background:var(--chalk);border:1px solid var(--line);padding:12px 14px}
.gcard:hover{border-color:var(--ivy)}
.gtop{display:flex;justify-content:space-between;align-items:center;font-size:12px}
.gr{color:var(--ink-2)}
.gs{padding:1px 7px;border-radius:10px;font-size:11px;color:#fff}
.gs-live{background:var(--clay)} .gs-done{background:var(--ink-2)} .gs-soon{background:var(--ivy-lt)}
.gsc{display:flex;align-items:center;gap:8px;margin:8px 0 4px;font-family:var(--num)}
.gsc .gt{flex:1;font-family:var(--sans);font-size:14px}
.gsc .gt:last-child{text-align:right}
.gsc b{font-size:22px} .gsc em{color:var(--ink-2);font-style:normal}

.ghead h1{margin:2px 0 4px;font-size:26px}
.ghead .vs{color:var(--ink-2);font-size:16px;margin:0 6px}
.ls{overflow-x:auto;margin:10px 0 18px;border:1px solid var(--line);background:#fff}
.ls table{border-collapse:collapse;width:100%;font-family:var(--num);font-size:var(--fs-ls)}
.ls th,.ls td{border:1px solid var(--line);padding:6px 9px;text-align:center;min-width:32px}
.ls thead th{background:var(--board);color:var(--chalk)}
.ls .tn{text-align:left;font-family:var(--sans);white-space:nowrap;min-width:104px}
.ls .tn i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px}
.ls .tot{background:var(--chalk);font-weight:700}
.ls .rhe{background:var(--chalk);font-weight:700}
.ls thead .rhe{background:var(--board-2);color:var(--brass)}

.two-live{grid-template-columns:minmax(300px,1fr) minmax(320px,1.2fr)}
/* 单场比赛页：成绩在上、テキスト速報在下，各占整幅宽度 */
.lvsec{margin-top:22px}
.lvsec>h3{margin:0 0 8px}
.feed{max-height:var(--feed-h);overflow-y:auto;border:1px solid var(--line);background:#fff}
.fh{padding:5px 12px;font-size:12px;font-weight:700;position:sticky;top:0}
.fh-omote{background:#DBEEF8;color:#14608C}
.fh-ura{background:var(--board);color:var(--chalk)}
.fl{padding:7px 12px;border-bottom:1px solid var(--line);font-size:13px;line-height:1.6}
.fl:last-child{border-bottom:none}
h4.th{margin:16px 0 6px;font-size:14px;display:flex;align-items:center;gap:6px}
h4.th i{width:10px;height:10px;border-radius:2px}
.tw-wide{max-width:none;overflow-x:auto}
.tw-wide table{font-size:var(--fs-live)}
/* ★ BUG 修复：这里原来只改了底色（chalk 浅米），没改字色，
   而上面通用的 thead th 是 color:var(--chalk)，浅字压浅底 = 看不见，
   只有鼠标悬浮触发 thead th:hover 变深底才显出来。字色一并指定即可。 */
.tw-wide thead th{background:var(--chalk);color:var(--ink);white-space:nowrap;
                  border-bottom:2px solid var(--board)}
.tw-wide thead th:hover{background:#EFE9D8;color:var(--ink)}
/* 数字列：表头和单元格都居中，不然 th 靠左、td 靠右，一列看着是歪的 */
.tw-wide th.num,.tw-wide td.num{text-align:center}
.tw-wide td.num{font-variant-numeric:tabular-nums}

/* ============ 对阵表（甲子园式淘汰树） ============ */
:root{
  --bk-w:132px; --bk-gap:18px; --bk-fs:13.5px; --bk-row:25px;
  --bk-sc:13px; --bk-dfs:10.5px; --bk-rdfs:11px; --bk-out-dec:line-through;
}
.bk{overflow-x:auto;padding:6px 0 10px}
/* 通栏：对阵表挣脱正文那 1180px 的宽度限制，直接铺满窗口（留出滚动条的位置） */
.bk-full{width:calc(100vw - 26px);margin-left:calc(50% - 50vw + 13px);box-sizing:border-box;padding-left:13px;padding-right:13px}
/* 缩放：bk-zoom 整体 scale，bk-sizer 负责把缩放后的实际占位撑出来 */
/* 左右 margin 由 app.js 按「对阵表.居中」决定：图比窗口窄时填 auto（居中），
   比窗口宽时填 0（左对齐 + 横向滚动，不然左半边就滚不到了） */
.bk-sizer{position:relative;box-sizing:border-box;margin-left:auto;margin-right:auto}
.bk-zoom{position:absolute;top:0;left:0;width:max-content;transform-origin:0 0}
.bk-tools{display:flex;align-items:center;gap:6px;margin:2px 0 6px}
.bk-tools .bkz{
  font:600 12px/1 var(--sans);color:var(--ink-2);background:#fff;cursor:pointer;
  border:1px solid var(--line);border-radius:2px;padding:5px 9px;
}
.bk-tools .bkz:hover{color:var(--ink);background:var(--chalk)}
.bk-tools .bkz.on{background:var(--board);color:var(--chalk);border-color:var(--board)}
.bk-tools .bkz-n{font:700 12px/1 var(--num);color:var(--ink-2);min-width:44px;text-align:center}
.bk-warn{
  margin:6px 0;padding:7px 10px;border-left:3px solid var(--clay);
  background:#FDF3EC;font-size:12.5px;color:var(--ink-2);
}
.bk-in{display:flex;align-items:center;gap:var(--bk-gap);min-width:max-content}
.bk-rounds{display:flex;gap:var(--bk-gap);min-width:max-content;margin-bottom:6px}
.bk-rounds span{
  width:var(--bk-w);text-align:center;
  font:700 var(--bk-rdfs)/1.6 var(--num);letter-spacing:.14em;color:var(--ink-2);
  border-bottom:1px solid var(--line);
}
.bk-half{display:flex;align-items:center;flex:0 0 auto}
.bk-n{display:flex;align-items:center;gap:var(--bk-gap);flex:0 0 auto}
.bk-half-r .bk-n{flex-direction:row-reverse}
.bk-kids{display:flex;flex-direction:column;position:relative}
.bk-kids::after{
  content:'';position:absolute;right:calc(var(--bk-gap) / -2);top:25%;height:50%;
  border-right:1.5px solid var(--line);
}
.bk-half-r .bk-kids::after{
  right:auto;left:calc(var(--bk-gap) / -2);
  border-right:0;border-left:1.5px solid var(--line);
}
/* 每个子节点伸半格横线出去接那条竖线 */
.bk-kids > *{position:relative}
.bk-kids > *::after{
  content:'';position:absolute;left:100%;width:calc(var(--bk-gap) / 2);top:50%;
  border-top:1.5px solid var(--line);
}
.bk-half-r .bk-kids > *::after{left:auto;right:100%}
.bk-self{position:relative;display:flex;align-items:center}
.bk-self::before{
  content:'';position:absolute;right:100%;width:var(--bk-gap);top:50%;
  border-top:1.5px solid var(--line);
}
.bk-half-r .bk-self::before{right:auto;left:100%}
.bk-leaf{padding:4px 0}

.bk-box{
  width:var(--bk-w);flex:0 0 var(--bk-w);background:#fff;border:1px solid var(--line);
  font-size:var(--bk-fs);position:relative;
}
.bk-box .r{
  display:flex;align-items:center;gap:5px;height:var(--bk-row);
  padding:0 6px;border-left:4px solid var(--c,#CFCabc);
}
.bk-box .r + .r{border-top:1px solid var(--line)}
.bk-box .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bk-box .sc{font:700 var(--bk-sc)/1 var(--num);color:var(--ink-2);font-variant-numeric:tabular-nums}
/* 退赛的一方：队名划掉；对手那格写「不战胜」 */
.bk-box .r-out .nm{text-decoration:var(--bk-out-dec);opacity:.65}
.r-out{text-decoration:var(--bk-out-dec);opacity:.7}
.sc-wo{font:700 10.5px/1 var(--sans);color:var(--clay);letter-spacing:.02em;white-space:nowrap}
.sc-out{color:#A8B0A8}
.bk-box .r.w .nm{font-weight:800}
.bk-box .r.w .sc{color:var(--clay)}
.bk-box .r.l{color:#98A09A}
.bk-box .r.l .nm{font-weight:400}
.bk-box .bye{color:#A8B0A8;font-style:italic}
.bk-box .dt{
  height:calc(var(--bk-dfs) + 6px);min-height:16px;padding:0 6px;border-top:1px dashed var(--line);
  font:600 var(--bk-dfs)/16px var(--num);letter-spacing:.06em;color:#9AA29B;
  white-space:nowrap;overflow:hidden;
}
.bk-box .dt em{
  font-style:normal;font-weight:800;color:var(--board);margin-right:5px;
}
.bk-dead{opacity:.5}
.bk-mid{display:flex;flex-direction:column;align-items:center;gap:8px;flex:0 0 auto}
.bk-mid .bk-box{border:2px solid var(--ink)}
.bk-mid .bk-self::before,.bk-mid .bk-box::after{
  content:'';position:absolute;top:50%;width:var(--bk-gap);
  border-top:1.5px solid var(--line);
}
.bk-mid .bk-box::before{content:'';position:absolute;top:50%;right:100%;width:var(--bk-gap);border-top:1.5px solid var(--line)}
.bk-mid .bk-box::after{left:100%}
.bk-champ{
  font:700 11px/1 var(--num);letter-spacing:.2em;text-transform:uppercase;
  color:var(--clay);text-align:center;
}
.bk-champ b{display:block;font:800 16px/1.4 var(--sans);letter-spacing:.04em;color:var(--ink)}
.bk-note{margin-top:2px}
@media(max-width:760px){ :root{--bk-w:112px;--bk-gap:12px} .bk-full{width:auto;margin-left:0;padding:0} }

/* ============ 育成进度：分组 + 图例 ============ */
.pg-sec{margin-top:6px}
.pg-legend{display:flex;flex-wrap:wrap;gap:14px;margin:8px 0 2px;font-size:12px;color:var(--ink-2)}
.pg-legend .lg{display:inline-flex;align-items:center;gap:5px}
.pg-legend .lg i{width:12px;height:12px;border:1px solid var(--line);display:inline-block}
td.pg-avg{font-weight:700}
tr.pg-split td{
  background:var(--board);color:var(--chalk);text-align:center;
  font-weight:700;letter-spacing:.14em;font-size:12px;
}
tbody tr.pg-split:hover td{background:var(--board)}

/* ---------- 阵容分组：先发 / 板凳 / 二军 ---------- */
/* 数据来自总表「选手」页的「阵容分组」列。一个人都没标过时这些样式不会出现。 */
.tier{
  display:inline-block;margin-left:6px;padding:0 5px;
  font:700 10px/1.7 var(--num);letter-spacing:.06em;vertical-align:1.5px;
  border:1px solid currentColor;white-space:nowrap;
}
.t-start{color:var(--clay)}
.t-farm{color:var(--ink-2)}

h3.tier-h{
  display:flex;align-items:center;gap:10px;
  margin:22px 0 9px;color:var(--ink);
  font:750 var(--fs-h3)/1 var(--display);letter-spacing:.08em;
}
h3.tier-h::after{content:"";flex:1;height:1px;background:var(--line)}
h3.tier-h .cnt{
  order:3;font:700 11px/1 var(--num);color:var(--ink-2);
  border:1px solid var(--line);padding:3px 6px;
}
h3.tier-h.farm{color:var(--ink-2)}
h3.tier-h.farm::after{background:repeating-linear-gradient(
  to right,var(--line) 0 4px,transparent 4px 8px)}

/* 二军卡片：淡一点、左边框改虚线，一眼能分出来但不影响看数据 */
.pcard.farm{border-left-style:dashed}
/* 名鉴「按学校分组」的学校小标题 */
h3.sch-h{display:flex;align-items:center;gap:8px;margin:22px 0 10px;
         font-size:var(--fs-h2);font-weight:800}
h3.sch-h:first-child{margin-top:4px}
h3.sch-h i{width:11px;height:11px;border-radius:2px;background:var(--c,#888);flex:0 0 11px}
h3.sch-h::after{content:"";flex:1;height:2px;background:var(--c,var(--line));opacity:.28}
h3.sch-h .cnt{font:700 11px/1 var(--num);color:var(--ink-2);letter-spacing:.08em;
              border:1px solid var(--line);padding:3px 7px;border-radius:999px}
.grid-farm .pcard{background:#F7F4EC;border-color:#E7E0CE}
.grid-farm .pcard .nm{color:var(--ink-2)}
.grid-farm .pcard .ava{opacity:.75}
.grid-farm .pcard:hover .ava{opacity:1}


/* ============ 守备位置徽章 ============ */
:root{
  --pb-fs:11px; --pb-wrap:wrap; --pb-sub-op:.62;
  --pb-p:#C2255C; --pb-p-bg:#FDE7F0; --pb-p-bd:#F0A6C4;
  --pb-c:#1864AB; --pb-c-bg:#E3F0FA; --pb-c-bd:#8FC1E8;
  --pb-i:#8A6100; --pb-i-bg:#FFF3CC; --pb-i-bd:#E8C766;
  --pb-o:#2B7A3E; --pb-o-bg:#E4F5E6; --pb-o-bd:#8FCC9C;
  --pb-x:#5A6159; --pb-x-bg:#F1EFE8; --pb-x-bd:#D5CEBE;
}
/* 名字那一行改成可换行的 flex：位置放不下时自动落到名字下面 */
.pcard .pc-b{min-width:0;flex:1}
.pcard .nm{
  display:flex;align-items:center;flex-wrap:var(--pb-wrap);
  gap:4px;row-gap:3px;line-height:1.35;
}
.pos-b{display:inline-flex;align-items:center;gap:3px;flex-wrap:var(--pb-wrap);margin-left:2px}
.pb{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:1.55em;height:1.55em;padding:0 .28em;
  font:700 var(--pb-fs)/1 var(--sans);font-style:normal;
  border:1px solid var(--pb-x-bd);background:var(--pb-x-bg);color:var(--pb-x);
  border-radius:3px;letter-spacing:0;
}
.pb-p{border-color:var(--pb-p-bd);background:var(--pb-p-bg);color:var(--pb-p)}
.pb-c{border-color:var(--pb-c-bd);background:var(--pb-c-bg);color:var(--pb-c)}
.pb-i{border-color:var(--pb-i-bd);background:var(--pb-i-bg);color:var(--pb-i)}
.pb-o{border-color:var(--pb-o-bd);background:var(--pb-o-bg);color:var(--pb-o)}
/* 副位置：同色系但淡一点、虚线框，一眼能和主位置区分 */
.pb-sub{opacity:var(--pb-sub-op);border-style:dashed;font-weight:600}
/* 个人页头部的那组徽章稍大一点 */
.php .pos-b .pb{--pb-fs:12px}
/* 二军卡片里的徽章跟着淡下去 */
.grid-farm .pcard .pb{opacity:.8}

/* 对阵表 → 比赛详细 的跳转链接 */
.bk-go{color:var(--clay);white-space:nowrap;text-decoration:none;border-bottom:1px dotted currentColor}
.bk-go:hover{color:var(--ivy)}
.bk-box .bk-go-s{margin-left:auto;font-size:10px;border-bottom:none;opacity:.75}
.bk-box .bk-go-s:hover{opacity:1}
.bk-box .dt{display:flex;align-items:center;gap:6px}


/* ============ v10：印象色铺开 / 育成结果瘦身 / 比分 x ============ */
:root{
  --tc-band:34px; --tc-bar:4px; --tc-ring:2px; --tc-top:6px;
  --tc-wash:8%; --tc-hover:14%; --pg-fs:12px;
}

/* 队伍卡片：学校名压在队色色带上（照 alps 那个做法） */
.tcard{border-left-width:1px;padding:0;overflow:hidden}
.tcard .tband{
  display:block;background:var(--c,#999);
  min-height:var(--tc-band);padding:7px 12px;
  display:flex;align-items:center;
}
.tcard .tband b{
  color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35);
  font-size:var(--fs-card);font-weight:750;line-height:1.25;
}
.tcard .tbody{display:block;padding:9px 12px 11px}
.tcard:hover{background:color-mix(in srgb, var(--c,#999) var(--tc-wash), #fff)}

/* 选手卡片：左色条加粗一点，悬浮时整张卡淡淡染上队色 */
.pcard{border-left-width:var(--tc-bar)}
.pcard:hover{background:color-mix(in srgb, var(--c,#999) var(--tc-hover), #fff)}

/* 头像：一圈队色描边 */
.ava{box-shadow:0 0 0 var(--tc-ring) var(--c, var(--line)) inset, 0 0 0 1px rgba(0,0,0,.06)}
img.ava{border-color:var(--c, var(--line))}

/* 个人页 / 队伍页头部：顶部整条色带 */
.php{position:relative;border-left-width:2px;padding-top:calc(18px + var(--tc-top))}
.php::before{
  content:"";position:absolute;left:0;right:0;top:0;
  height:var(--tc-top);background:var(--c,var(--ink));
}

/* 育成结果表：允许换行 + 收窄字号，尽量不用左右拖 */
.tw-pg{max-width:none}
.pg-table{font-size:var(--pg-fs);table-layout:auto}
.pg-table th,.pg-table td{padding:5px 7px;white-space:normal}
.pg-table thead th{font-size:calc(var(--pg-fs) - 1px);letter-spacing:.04em}
.pg-table td.pg{min-width:5.6em;line-height:1.35}
.pg-table td.num{white-space:nowrap;text-align:right}
.pg-table td.pg-school{white-space:nowrap}
/* 每行左端一条队色，扫一眼就知道是哪队 */
.pg-table tbody tr td:first-child{box-shadow:inset 4px 0 0 var(--c,transparent)}
.pg-table tbody tr.pg-split td{box-shadow:none}

/* 比分里的 x（再见 / 提前结束） */
.sc-x{
  font-size:var(--scx-fs,1em);vertical-align:var(--scx-va,baseline);margin-left:.5px;
  color:var(--clay);font-weight:700;text-decoration:none;border:none;cursor:help;
}

/* ============ v10 追加：基础能力格子 / 弹道数字 ============ */
:root{
  /* 基础能力三档配色，照游戏：A 以上蓝、F 以下红、中间平色 */
  --sk-hi:#1264A3; --sk-hi-bg:#DCEEFB; --sk-hi-bd:#9CCBEC;
  --sk-lo:#C0392B; --sk-lo-bg:#FCE3E1; --sk-lo-bd:#EDA9A2;
  --sk-md:#5A6159; --sk-md-bg:#FFFFFF; --sk-md-bd:#DED7C6;
  --sk-cols:2; --sk-w:170px; --sk-fs:13px; --sk-gap:5px; --sk-pad:6px;
  --dando-gap:6px;
}
/* 一格一格的长方形，名字在左、段位字母顶到右边 */
/* 每格宽度封顶（--sk-w），格子不会被拉得又长又空，字母就一直贴在名字附近。
   把「基础能力.格子最大宽」填 0 = 不封顶，格子平分整块宽度。 */
.sk-wrap{
  display:grid;grid-template-columns:repeat(var(--sk-cols,2),minmax(0,var(--sk-w,170px)));
  justify-content:start;gap:var(--sk-gap);max-width:var(--sub-max);
}
.sk{
  display:flex;align-items:center;justify-content:space-between;gap:6px;
  padding:var(--sk-pad) 10px;border:1.5px solid var(--sk-md-bd);border-radius:7px;
  background:var(--sk-md-bg);color:var(--sk-md);
  font-size:var(--sk-fs);font-weight:650;line-height:1.25;min-width:0;
}
.sk .sn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sk .sg{
  font:800 calc(var(--sk-fs) + 1px)/1 var(--num);font-style:normal;
  flex:0 0 auto;letter-spacing:.02em;
}
/* 字母贴紧名字：把中间那段弹性空白收掉 */
.sk-tight .sk{justify-content:flex-start;gap:5px}
.sk-hi{color:var(--sk-hi);background:var(--sk-hi-bg);border-color:var(--sk-hi-bd)}
.sk-lo{color:var(--sk-lo);background:var(--sk-lo-bg);border-color:var(--sk-lo-bd)}
/* 基础能力格子里的特能牌（v11）：练成上位版的那一格没有段位字母，
   整格换成特能名，配色跟右边的特能标签一致。名字长一点就自己缩一号，缩到头再省略号。 */
.sk-sp{justify-content:center;text-align:center;font-weight:800}
.sk-sp .sn{font-size:calc(var(--sk-fs) - .5px);letter-spacing:-.01em}
.sk-tight .sk-sp{justify-content:center}
.sk-gold{color:var(--sp-gold);background:var(--sp-gold-bg);border-color:var(--sp-gold)}
.sk-green{color:var(--sp-green);background:var(--sp-green-bg);border-color:var(--sp-green)}
.sk-blue{color:var(--sp-blue);background:var(--sp-blue-bg);border-color:var(--sp-blue)}
.sk-red{color:var(--sp-red);background:var(--sp-red-bg);border-color:var(--sp-red)}
.sk-bluered{
  color:var(--sp-blue);border-color:var(--sp-blue);
  background:linear-gradient(90deg,var(--sp-blue-bg) 0 50%,var(--sp-red-bg) 50% 100%);
}
@media(max-width:420px){ .sk-wrap{grid-template-columns:1fr} }

/* 弹道那一行：数字紧跟箭头，不跟别的能力条右对齐 */
.bar-d .track-d{gap:var(--dando-gap)}
.bar-d .dv{
  font:700 14px/1 var(--num);color:var(--ink);
  font-variant-numeric:tabular-nums;flex:0 0 auto;
}

/* 原创球种的名字：默认继承 SVG 上的 fill / font-weight，
   想再加点花样（字距、投影）在这里补，或者用 config 的「变化球图.原创球种.字体」 */
.og-name{ letter-spacing:.02em }

/* ============ 比赛详细（速报）页：字体 / 字号 / 颜色全部可调 ============ */
:root{
  --lv-ls-fs:13px; --lv-ls-h:auto;
  --lv-ls-head:var(--board); --lv-ls-headc:var(--chalk); --lv-ls-rhe:var(--chalk);
  --lv-box-fs:12px; --lv-box-ff:inherit; --lv-box-head:var(--chalk); --lv-box-c:var(--ink);
  --lv-link:var(--clay);
  --lv-feed-fs:13px; --lv-feed-lh:1.6; --lv-feed-ff:inherit; --lv-feed-c:var(--ink);
  --lv-omote:#DBEEF8; --lv-omote-c:#14608C; --lv-ura:var(--board); --lv-ura-c:var(--chalk);
  --lv-feed-max:none;
}
.ls table{font-size:var(--lv-ls-fs)}
.ls tbody tr{height:var(--lv-ls-h)}
.ls thead th{background:var(--lv-ls-head);color:var(--lv-ls-headc)}
.ls .rhe{background:var(--lv-ls-rhe)}
.box-t{font-size:var(--lv-box-fs);font-family:var(--lv-box-ff);color:var(--lv-box-c)}
.box-t thead th{background:var(--lv-box-head)}
.feed{max-height:var(--lv-feed-max)}
.feed .fl{font-size:var(--lv-feed-fs);line-height:var(--lv-feed-lh);
  font-family:var(--lv-feed-ff);color:var(--lv-feed-c)}
.feed .fh-omote{background:var(--lv-omote);color:var(--lv-omote-c)}
.feed .fh-ura{background:var(--lv-ura);color:var(--lv-ura-c)}
/* 成绩表里可点的选手名 */
a.pl-a{color:var(--lv-link);text-decoration:none;border-bottom:1px dotted currentColor}
a.pl-a:hover{border-bottom-style:solid}
a.pl-ext .ext-mark{font-size:.8em;margin-left:2px;opacity:.7}

/* 双能力（主投副守）标记 */
.dual-m{
  display:inline-flex;align-items:center;height:1.5em;padding:0 .4em;
  font-size:10px;font-weight:700;letter-spacing:.04em;border-radius:3px;
  border:1px solid var(--c,var(--line));color:var(--c,var(--ink-2));
  background:color-mix(in srgb, var(--c,#999) 10%, #fff);
}

/* ============ 群友感想 ============ */
/* align-items:start = 每张卡只按自己的字数收高。
   不写这一行时 grid 默认 stretch，同一排会被最长的那张拉到一样高。 */
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;align-items:start}
.vgrid.v-even{align-items:stretch}                       /* 「排版=等高」回到老样子 */
/* 「排版=瀑布流」：一列列往下填，行与行之间不留空 */
.vgrid.v-flow{display:block;columns:300px;column-gap:14px}
.vgrid.v-flow .vcard{break-inside:avoid;-webkit-column-break-inside:avoid;
  display:inline-block;width:100%;margin:0 0 14px}
.vcard{
  margin:0;background:var(--chalk);border:1px solid var(--line);
  border-top:4px solid var(--c,var(--line));padding:14px 16px 16px;
}
.vhead{display:flex;align-items:center;gap:11px}
a.vlink{display:block;text-decoration:none;color:inherit}
a.vlink:hover .vmeta b{color:var(--c)}
.vav{width:46px;height:46px;flex:0 0 46px;border-radius:50%;object-fit:cover;
  box-shadow:0 0 0 2px var(--c,var(--line)), 0 0 0 3px #fff}
.vav-t{display:flex;align-items:center;justify-content:center;background:var(--c,#999);
  color:#fff;font-size:19px;font-weight:700}
.vmeta{min-width:0}
.vmeta b{display:block;font-size:15px;line-height:1.3}
.vsub{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.vsub em{font-style:normal;font-size:11px;padding:1px 6px;border-radius:9px;line-height:1.6}
.vteam{background:color-mix(in srgb, var(--c,#999) 16%, #fff);color:var(--c,var(--ink-2));
  border:1px solid color-mix(in srgb, var(--c,#999) 40%, #fff)}
.vrole{background:var(--paper);color:var(--ink-2);border:1px solid var(--line)}
.vtext{margin:11px 0 0;padding:0 0 0 12px;border-left:3px solid color-mix(in srgb, var(--c,#999) 35%, #fff);
  font-size:13.5px;line-height:1.75;color:var(--ink);white-space:normal}
/* 长文折叠：config「感想.折叠行数」填 0 就整段用不上 */
.vcard.v-clip .vtext{display:-webkit-box;-webkit-box-orient:vertical;
  -webkit-line-clamp:var(--vclip,8);line-clamp:var(--vclip,8);overflow:hidden}
.vmore{margin:8px 0 0;padding:2px 10px;font:inherit;font-size:12px;cursor:pointer;
  color:var(--c,var(--ink-2));background:transparent;border-radius:10px;
  border:1px solid color-mix(in srgb, var(--c,#999) 40%, #fff)}
.vmore:hover{background:color-mix(in srgb, var(--c,#999) 12%, #fff)}

/* ============ 支持一下 ============ */
.sup-lead{margin:-2px 0 18px;font-size:14px;line-height:1.8;max-width:52em}
.sgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,260px));gap:18px}
.scard{margin:0;background:var(--chalk);border:1px solid var(--line);padding:14px;text-align:center}
.scard h3{margin:0 0 10px;font-size:15px}
.scard .qr{width:100%;height:auto;display:block;background:#fff;border:1px solid var(--line)}
.scard figcaption{margin-top:10px;font-size:12.5px;line-height:1.7;color:var(--ink-2)}

/* ============================================================
   手机端适配
   桌面样式一行没动，全部写在断点里，所以电脑上看到的还是原样。
   想微调断点：改下面 900px / 640px / 400px 三个数字。
   ============================================================ */

/* 横向滚动的表格给个提示条，免得手机上不知道能划 */
@media(max-width:900px){
  .tw, .tw-wide, .ls, .tw-pg{ position:relative; -webkit-overflow-scrolling:touch }
  .tw::after, .tw-wide::after, .ls::after{
    content:"";position:absolute;top:0;right:0;bottom:0;width:22px;pointer-events:none;
    background:linear-gradient(90deg,rgba(255,255,255,0),rgba(0,0,0,.07));
  }
}

@media(max-width:640px){
  :root{ --fs:14px }
  /* 顶栏：标题一行，右边那串说明换到下一行，别挤成一坨 */
  .board-in{ padding:10px 14px 8px; gap:8px; row-gap:4px }
  .board-meta{ margin-left:0; width:100%; font-size:11px; gap:6px }
  .mark-kanji{ font-size:clamp(20px, 6.2vw, 28px) }
  .mark-en{ font-size:10px; letter-spacing:.12em }
  /* 导航横向滑动，首尾留白 */
  .nav{ padding:0 14px; gap:0 }
  .nav a{ padding:9px 11px; font-size:13px; white-space:nowrap }
  .view{ padding:18px 14px 56px }
  h1{ font-size:22px } h2{ font-size:17px } h3{ font-size:14px }

  /* 卡片一列到底 */
  .grid-p, .grid-teams, .glist, .vgrid{ grid-template-columns:1fr !important }
  .vgrid.v-flow{ columns:1 !important }
  .sgrid{ grid-template-columns:1fr !important; justify-content:center }
  .scard{ max-width:320px; margin:0 auto }

  /* 个人页：头部竖排，两栏并一栏 */
  .two{ grid-template-columns:1fr !important; gap:18px }
  .php{ gap:12px; padding:14px }
  .php h1{ font-size:20px }
  .kv{ gap:8px 14px }
  .bars, .tw, .tw-sub, .radar{ max-width:none !important }

  /* 基础能力手机上一列，名字不会被挤掉 */
  .sub-grid{ grid-template-columns:1fr !important }
  .sk-wrap{ grid-template-columns:1fr !important }

  /* 特能悬浮提示改成点按展开，手机没有 hover */
  .sp[data-tip]:hover::after, .sp[data-tip]:hover::before{ display:none }
  .sp[data-tip]:focus::after{ left:auto; right:0; max-width:min(78vw, 300px) }

  /* 比赛详细 */
  .gsc b{ font-size:19px }
  .two-live{ grid-template-columns:1fr !important }
  .feed{ max-height:none }
  .ls .tn{ min-width:82px }
  .ls th, .ls td{ padding:4px 6px; min-width:26px }

  /* 感想卡 */
  .vcard{ padding:12px 13px 14px }
  .vav{ width:40px;height:40px;flex-basis:40px }

  /* 育成结果表：手机上一定要能横划，别硬挤 */
  .pg-table{ font-size:11px }
  .pg-table th, .pg-table td{ padding:4px 5px }
  .pg-table td.pg{ min-width:4.6em }
}

@media(max-width:400px){
  .nav a{ padding:8px 9px; font-size:12px }
  .view{ padding:14px 10px 48px }
  .pcard{ padding:8px 9px; gap:9px }
  .ava{ width:38px;height:38px;flex-basis:38px }
}

/* 触屏设备：把所有 hover 效果关掉，避免点一下卡住不还原 */
@media(hover:none){
  .pcard:hover, .tcard:hover{ background:inherit }
}

/* 维护提示（只有 config.json 的 维护提示.显示 = true 时才会出现）
   给条淡黄底，一眼看出这是给自己看的、不是正文 */
.dev-note{
  background:#FFF8E1;border-left:3px solid var(--brass);
  padding:6px 10px;margin:4px 0 10px;
}

/* ============ 比赛详细：铺印象色 ============ */
/* 比赛列表卡片：顶部一条左右对分的双色带 */
.gcard{position:relative;padding-top:14px;overflow:hidden}
.gcard .gband{
  position:absolute;left:0;right:0;top:0;height:var(--gband-h,4px);
  background:linear-gradient(90deg, var(--ca,#999) 0 50%, var(--cb,#999) 50% 100%);
}
.gcard:hover{border-color:color-mix(in srgb, var(--ca,#999) 55%, var(--line))}
.gsc .gt{display:inline-flex;align-items:center;gap:5px;min-width:0}
.gsc .gt:last-child{justify-content:flex-end}
.gdot{width:9px;height:9px;border-radius:2px;flex:0 0 9px;background:var(--tc,#999)}
.gsc .gt-w{font-weight:700;color:var(--tc)}
.gsc b.sw{color:var(--clay)}

/* 单场页头部：左侧竖条也用双色 */
.ghead{position:relative;padding-left:16px}
.ghead .gband-l{
  position:absolute;left:0;top:2px;bottom:2px;width:var(--ghead-w,6px);
  background:linear-gradient(180deg, var(--ca,#999) 0 50%, var(--cb,#999) 50% 100%);
}
.ght{color:var(--tc)}
.ght-w{text-decoration:underline;text-decoration-color:var(--tc);text-underline-offset:5px;
  text-decoration-thickness:3px}

/* 成绩表整块带队色 */
.boxwrap{margin:14px 0 4px;border-left:3px solid var(--tc,var(--line));padding-left:11px}
.boxwrap h4.th i{background:var(--tc,#999)}
.boxwrap .box-t thead th{
  background:color-mix(in srgb, var(--tc,#999) 13%, var(--chalk));
  border-bottom:2px solid color-mix(in srgb, var(--tc,#999) 45%, #fff);
}

/* ============ 赛程 / 结果表：收窄 ============ */
.tw-sch table{width:100%}
.bk-sch .sdot{display:inline-block;width:8px;height:8px;border-radius:2px;vertical-align:1px}
.bk-sch .sdot-a{background:var(--ca,#999);margin-right:6px}
.bk-sch .sdot-b{background:var(--cb,#999);margin-left:6px}
.bk-sch .c-go a{border-bottom:none;font-size:15px;padding:0 4px}
/* 紧凑模式：队名列吃掉剩余宽度并允许换行，其余列按内容收紧 */
.sch-narrow .bk-sch{table-layout:auto}
.sch-narrow .bk-sch th,.sch-narrow .bk-sch td{padding:5px 8px}
.sch-narrow .c-rd,.sch-narrow .c-no,.sch-narrow .c-dt,
.sch-narrow .c-sc,.sch-narrow .c-go{white-space:nowrap;width:1%}
.sch-narrow .c-ta,.sch-narrow .c-tb{white-space:normal;width:auto}
/* 备注列：以前是 width:1%（=压到最窄），中文一压就每行一个字变成竖排。
   改成 auto + 一个最小宽度，宽度可在 config「赛程表.备注列最小宽/最大宽」里调。 */
.sch-narrow .c-nt{white-space:normal;width:auto;
  min-width:var(--sch-nt-min,11em);max-width:var(--sch-nt-max,24em);
  word-break:normal;overflow-wrap:anywhere;line-height:1.6}
.bk-sch .c-nt{white-space:normal;word-break:normal;overflow-wrap:anywhere}
.sch-narrow .c-dt{font-variant-numeric:tabular-nums}

@media(max-width:640px){
  .sch-narrow .c-rd,.sch-narrow .c-nt{display:none}   /* 手机上先砍轮次和备注 */
  .sch-narrow .bk-sch th,.sch-narrow .bk-sch td{padding:4px 5px;font-size:12px}
  .gcard .gband{height:3px}
}

/* ============ 个人成绩排行 ============ */
.rkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:18px}
.rkcard{background:var(--hc,var(--ivy));border-radius:6px;padding:0 0 26px;overflow:hidden;position:relative}
.rk-h{margin:0;padding:11px 14px 9px;text-align:center;color:#fff;font-size:17px;
  letter-spacing:.06em;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.rk-tabs{display:flex;flex-wrap:wrap;gap:0;padding:0 10px;background:transparent}
.rk-tab{
  appearance:none;border:none;cursor:pointer;font:600 12.5px/1 var(--sans);
  padding:9px 12px;border-radius:5px 5px 0 0;
  background:rgba(255,255,255,.22);color:#fff;margin-right:2px;
}
.rk-tab:hover{background:rgba(255,255,255,.35)}
.rk-tab.on{background:#fff;color:var(--hc,var(--ivy));font-weight:800}
.rk-panel{background:#fff;margin:0 10px;border-radius:0 5px 5px 5px}
.rk-body{display:flex;align-items:stretch;gap:12px;padding:12px}
.rk-lead{flex:0 0 auto;display:flex;align-items:center}
.rk-face{width:92px;height:92px;flex-basis:92px;border-radius:4px;object-fit:cover}
.rk-list{list-style:none;margin:0;padding:0;flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}
.rk-list li{display:flex;align-items:center;gap:9px;padding:5px 2px;
  border-bottom:1px solid var(--line);font-size:13.5px}
.rk-list li:last-child{border-bottom:none}
.rk-no{flex:0 0 1.2em;text-align:center;color:var(--ink-2);font:700 12px var(--num)}
.rk-v{flex:0 0 3.6em;text-align:right;font:800 15px var(--num);color:var(--ink);
  font-variant-numeric:tabular-nums}
.rk-nm{flex:1;min-width:0;display:flex;align-items:baseline;gap:5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rk-nm a{border-bottom:none}
/* 榜单行里的小头像（config.json → 个人成绩.榜单显示头像 = false 可整列关掉） */
.rk-mini{flex:0 0 auto;width:22px;height:22px;border-radius:3px;object-fit:cover;
  border:1px solid var(--c,var(--line))}
.rk-mini-x{display:inline-flex;align-items:center;justify-content:center;
  color:#fff;font:700 11px var(--sans);border:none}
.rk-list.has-face li{gap:7px}
.rk-tm{font-style:normal;font-size:11px;color:var(--ink-2);flex:0 0 auto}
.rk-list li::before{content:"";width:3px;align-self:stretch;background:var(--c,transparent);
  border-radius:2px;margin-right:-4px}
.rk-note{padding:0 12px 10px;font-size:11px;color:var(--ink-2);background:#fff;
  border-radius:0 0 5px 5px}

@media(max-width:640px){
  .rkgrid{grid-template-columns:1fr}
  .rk-face{width:70px;height:70px;flex-basis:70px}
  .rk-tab{padding:8px 9px;font-size:11.5px}
  .rk-v{flex-basis:3.2em;font-size:14px}
  .rk-mini{width:19px;height:19px}
}

/* 选手个人页的「本届成绩」小表 */
.tw-sea{max-width:none;margin-bottom:12px}
.sea-t{font-size:12px;width:100%}
.sea-t th,.sea-t td{padding:5px 8px;text-align:center;white-space:nowrap}
.sea-t thead th{background:var(--chalk);font-size:11px;color:var(--ink-2)}
.sea-t tbody td{font-family:var(--num);font-weight:700}
