/* 人物对比（characters/compare/）专用样式。页面：site/gen/pages_compare.py；交互：assets/compare.js。颜色只用 tokens.css 的变量。
   点击约定：列头头像、名字＝进人物页（悬停出「详情」）；× ＝移出对比。
   10-17：页顶全员头像条（点一下加入、再点移出）＋搜索框定位＋「推荐和 X 比」；原来的加人框、换人、选人弹层的样式删了。 */

/* ---------- 页头：标题＋「我在玩」 ---------- */
.cp-top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 28px;margin:6px 0 12px}
.cp-title{display:flex;align-items:center;gap:10px 18px;min-width:0}
.cp-title h1{font-size:30px;margin:0}
.cp-q.fsearch{width:210px;max-width:none;height:34px;margin:0}
.cp-my{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.cp-my-l{flex:none;white-space:nowrap;font-size:13px;color:var(--muted);margin-right:2px}
.cp-my-b{display:inline-flex;align-items:center;height:32px;padding:0 3px;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--ink-2);font:inherit;font-size:13px;cursor:pointer}
.cp-my-b[data-my=""]{padding:0 12px}
.cp-my-b .lt{background:transparent;height:26px}
.cp-my-b:hover{border-color:var(--line-strong)}
.cp-my-b.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);color:var(--ink);font-weight:600}

/* ---------- 网格：左边一列标签，右边每人一列 ---------- */
.cp{--n:3;--lab:112px;--gap:22px;max-width:calc(var(--lab) + var(--n) * (380px + var(--gap)))}
.cp-row{display:grid;grid-template-columns:var(--lab) repeat(var(--n),minmax(0,1fr));gap:0 var(--gap);align-items:center;padding:7px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}
.cp-l{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0;font-size:13.5px;color:var(--ink-2)}
.cp-ls{display:none}
.cp-lsub{font-size:12px;color:var(--muted)}
.cp-c{min-width:0;font-size:14px}
.cp-txt{align-items:start}
.cp-txt .cp-l{padding-top:3px}
.cp-txt .cp-c{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
.cp-dash,.cp-na{color:var(--muted);font-size:13px}
.cp-mine{background:color-mix(in srgb,var(--accent) 5%,transparent);box-shadow:inset 3px 0 0 var(--accent)}
.cp-mine .cp-l{padding-left:8px}

/* ---------- 列头卡片 ---------- */
.cp-head{margin:0 0 2px}
.cp-hrow{align-items:stretch;padding:4px 0 12px;border-bottom:0}
.cp-card{position:relative;display:grid;grid-template-columns:72px minmax(0,1fr);grid-template-rows:1fr;column-gap:12px;row-gap:6px;min-width:0;padding:10px 40px 10px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:var(--shadow)}
.cp-face{grid-row:1;position:relative;display:block;width:72px;height:72px;border-radius:8px;overflow:hidden;background:var(--surface-2);box-shadow:0 0 0 1px var(--line)}
.cp-ff,.cp-mf{display:block;width:100%;height:100%}
.cp-ff img,.cp-mf img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 15%}
.cp-ff b,.cp-mf b,.cp-rtf b,.cp-rcf b{display:flex;align-items:center;justify-content:center;height:100%;font:700 22px var(--font-head);color:var(--muted)}
.cp-go{position:absolute;left:0;right:0;bottom:0;padding:1px 0;font-size:11.5px;line-height:18px;text-align:center;background:var(--overlay);color:var(--on-overlay);opacity:0;transition:opacity .15s}
.cp-face:hover .cp-go,.cp-face:focus-visible .cp-go{opacity:1}
.cp-face:hover{box-shadow:0 0 0 2px var(--accent-2)}
.cp-nb{align-self:center;display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-width:0}
.cp-n{font:700 20px/1.25 var(--font-head);color:var(--ink)}
.cp-n:hover{color:var(--accent-2);text-decoration:underline;text-underline-offset:3px}
.cp-x{position:absolute;top:8px;right:8px;display:flex;align-items:center;justify-content:center;gap:3px;width:28px;height:28px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--bg);color:var(--muted);font:500 17px/1 var(--font);cursor:pointer}
.cp-x:hover{color:var(--bad);border-color:var(--bad);background:color-mix(in srgb,var(--bad) 8%,var(--bg))}
.cp-xt{display:none}

/* 滚下去以后顶上的细条：只用来认人（点名字去详情），不放移除，免得滑动时误点 */
.cp-mini{position:sticky;top:var(--cp-top,56px);z-index:20;height:48px;margin-bottom:-48px;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);visibility:hidden;opacity:0;transition:opacity .12s}
.cp-stuck .cp-mini{visibility:visible;opacity:1}
.cp-mrow{height:48px;padding:0;border-bottom:0}
.cp-ml{font-size:12px;color:var(--muted)}
.cp-mi{display:flex;align-items:center;gap:8px;min-width:0;color:var(--ink);font-weight:700;font-size:14.5px}
.cp-mi span:not(.tier){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-mf{flex:none;width:32px;height:32px;border-radius:6px;overflow:hidden;background:var(--surface-2)}

/* ---------- 全员头像条（10-17）：按梯度分组，组前一个梯度标；在比的描边＋第几列 ---------- */
.cp-roster{display:flex;flex-wrap:wrap;align-items:flex-start;gap:5px 0;margin:0 0 12px;padding:10px 8px 6px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.cp-rg{display:contents}
.cp-rgt{flex:none;display:flex;justify-content:center;width:30px;padding-top:12px}
.cp-rg:not(:first-child) .cp-rgt{margin-left:6px;border-left:1px solid var(--line)}
.cp-rt{position:relative;flex:none;display:flex;flex-direction:column;align-items:center;gap:3px;width:50px;padding:3px 0 2px;border:0;border-radius:8px;background:none;color:var(--ink-2);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cp-rtf{position:relative;display:block;width:42px;height:42px;border-radius:9px;background:var(--surface-2);box-shadow:0 0 0 1px var(--line);transition:box-shadow .12s}
.cp-rtf img{display:block;width:100%;height:100%;border-radius:9px;object-fit:cover}
.cp-rtf b{font-size:17px}
.cp-rtn{max-width:50px;font-size:11.5px;line-height:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-rt:hover{color:var(--ink)}
.cp-rt:hover .cp-rtf{box-shadow:0 0 0 2px var(--accent-2)}
.cp-rt:focus-visible{outline:2px solid var(--accent-2);outline-offset:1px}
.cp-rt.on .cp-rtf{box-shadow:0 0 0 3px var(--accent)}
.cp-rt.on .cp-rtn{color:var(--accent);font-weight:700}
.cp-rtk{position:absolute;top:-6px;right:-7px;display:none;min-width:19px;height:19px;padding:0 4px;border-radius:10px;background:var(--accent);color:var(--accent-ink);font:700 11.5px/19px var(--font);font-style:normal;text-align:center;box-shadow:0 0 0 2px var(--surface)}
.cp-rt.on .cp-rtk{display:block}
.cp-rt.dim{opacity:.35}
.cp-rt.dim:hover{opacity:.85}
.cp-rt[hidden]{display:none}
.cp-searching .cp-rgt{display:none}
.cp-rt.top .cp-rtf{box-shadow:0 0 0 2px var(--accent-2)}
.cp-rt.top.on .cp-rtf{box-shadow:0 0 0 3px var(--accent)}
.cp-rnone{flex:none;margin:0;padding:14px 6px;font-size:13px;color:var(--muted)}

/* ---------- 推荐和第一列比的人 ---------- */
.cp-rec{display:flex;align-items:center;gap:8px 14px;margin:0 0 16px}
.cp-rec[hidden]{display:none}
.cp-rec-l{flex:none;font-size:13.5px;color:var(--muted)}
.cp-rec-l b{margin:0 3px;color:var(--ink)}
.cp-rec-s{display:flex;flex-wrap:wrap;gap:8px;min-width:0}
.cp-rc{flex:none;display:inline-flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .12s}
.cp-rc:hover{border-color:var(--accent)}
.cp-rcf{flex:none;width:36px;height:36px;border-radius:7px;overflow:hidden;background:var(--surface-2)}
.cp-rcf img{display:block;width:100%;height:100%;object-fit:cover}
.cp-rcb{display:flex;flex-direction:column;gap:3px;min-width:0}
.cp-rcn{display:flex;align-items:center;gap:5px;font-weight:700;font-size:14px;line-height:1.2;white-space:nowrap}
.cp-rcn .tier{height:16px;min-width:18px;padding:0 3px;font-size:10.5px}
.cp-rct{display:flex;gap:4px}
.cp-rct i{font-style:normal;font-size:11.5px;line-height:18px;padding:0 6px;border-radius:9px;background:color-mix(in srgb,var(--accent-2) 14%,transparent);color:var(--accent-2);white-space:nowrap}
.cp-rcp{margin-left:2px;color:var(--accent);font-weight:800;font-size:17px;line-height:1}

/* 满员换人的提示（底部居中）＋新列闪一下 */
.cp-toast{position:fixed;left:0;right:0;bottom:28px;z-index:120;width:max-content;max-width:calc(100% - 32px);margin:0 auto;padding:10px 18px;border-radius:10px;background:var(--ink);color:var(--bg);font-size:14px;line-height:1.5;box-shadow:0 8px 28px rgba(0,0,0,.35);transform:translateY(14px);opacity:0;transition:opacity .2s,transform .2s;pointer-events:none}
.cp-toast.on{opacity:1;transform:none}
.cp-toast[hidden]{display:none}
@keyframes cpFlash{0%,35%{outline-color:var(--accent)}100%{outline-color:transparent}}
.cp-card.cp-flash{outline:3px solid transparent;outline-offset:2px;animation:cpFlash 1.8s ease-out}
.cp-empty{padding:30px 0;text-align:center}

/* ---------- 跳转目录 ---------- */
.cp-nav{display:flex;flex-wrap:wrap;gap:4px 16px;margin:4px 0 6px;padding:6px 0;font-size:13px}
.cp-nav a{color:var(--muted)}
.cp-nav a:hover{color:var(--accent-2)}

/* ---------- 区块 ---------- */
.cp-sec{margin-top:26px;scroll-margin-top:130px}
.cp-sh{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 14px;margin:0 0 6px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.cp-sh h2{font-size:20px;margin:0}
.cp-sh p{margin:0;font-size:12.5px;color:var(--muted)}
.cp-note{margin:10px 0 0;font-size:12.5px;line-height:1.7;color:var(--muted)}
.cp-o{margin:0;font-size:13.5px;line-height:1.65;color:var(--ink-2)}
.cp-way{flex-basis:100%}

/* 练到 Lv X */
.cp-lvs{display:inline-flex;margin:4px 0 8px;border:1px solid var(--line-strong);border-radius:8px;overflow:hidden}
.cp-lv{height:32px;padding:0 14px;border:0;border-left:1px solid var(--line);background:var(--surface);color:var(--ink-2);font:inherit;font-size:13.5px;cursor:pointer}
.cp-lv:first-child{border-left:0}
.cp-lv:hover{background:var(--surface-2)}
.cp-lv.on{background:var(--ink);color:var(--bg);font-weight:700}
.cp-vd{margin:0 0 6px;font-size:14px;color:var(--ink-2)}
.cp-vd b{color:var(--ink)}
.cp-rrow .cp-c{flex-direction:column;align-items:flex-start;gap:4px}
.cp-rsel{max-width:100%;height:30px;padding:0 6px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);color:var(--ink);font:inherit;font-size:13px}
.cp-rn{font-size:13.5px;font-weight:600}
.cp-at{display:inline-flex;align-items:center;gap:5px;font-size:13.5px;color:var(--ink)}
.cp-at small{color:var(--muted);font-size:12px}
.cp-ci{object-fit:contain;flex:none}
.cp-num-r .cp-c{display:flex;align-items:center;gap:8px}
.cp-num{min-width:28px;font-weight:500;font-size:15px;font-variant-numeric:tabular-nums;color:var(--ink-2);text-align:right}
.cp-num.best{font-weight:800;color:var(--accent)}
.cp-gap{min-width:30px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.cp-bsum{background:var(--ink-2)}
.cp-sum .cp-num{font-size:16.5px;color:var(--ink)}
.cp-sum .cp-num.best{color:var(--accent)}
.cp-sum{border-bottom-color:var(--line)}

/* 成长率 */
.cp-g .cp-c{gap:10px}
.cp-bar{flex:1;height:10px;border-radius:5px;background:var(--surface-2);overflow:hidden}
.cp-bar i{display:block;height:100%;border-radius:5px}
.cp-g .cp-num{width:30px;text-align:right}
.cp-rk{min-width:26px;font-size:11.5px;font-weight:700;color:var(--accent)}

/* 熟练度、技能、魔法 */
.cp-txt .pfc{display:inline-flex;align-items:center;padding:1px 9px 1px 4px;font-size:13px}
.cp-sk{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;width:100%}
.cp-sk li{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;font-size:13px;line-height:1.5}
.cp-skk{min-width:3.4em;font-size:11.5px;color:var(--muted)}
.cp-skd{flex-basis:100%;padding-left:calc(3.4em + 6px);font-size:12.5px;color:var(--ink-2)}
.cp-sk .sk,.cp-mg .sk{margin:0}
.cp-mg{flex:1 1 0;min-width:0;display:flex;flex-wrap:wrap;gap:4px 6px}
.cp-mgi{display:inline-flex;align-items:center;gap:3px}
.cp-mgr{font:700 11px/16px var(--font);color:var(--muted);min-width:12px;text-align:center}
.cp-txt .pf{display:inline-block;margin:0 4px 0 0;font-size:11.5px}

/* 转职路线 */
.cp-rn2{font-weight:700;font-size:14px;margin-bottom:4px;flex-basis:100%}
.cp-chain{min-width:0;list-style:none;margin:0;padding:0 0 0 10px;border-left:2px solid color-mix(in srgb,var(--gold) 55%,transparent);display:flex;flex-direction:column;gap:3px;flex-basis:100%}
.cp-chain li{display:flex;align-items:center;gap:6px;min-width:0;font-size:13.5px}
.cp-chain small{flex:none;color:var(--muted);font-size:11.5px}
.cp-sim{margin-top:6px;font-size:13px;font-weight:600}

/* 招募 */
.cp-m{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:12px;font-size:12.5px;font-weight:700;white-space:nowrap}
.cp-m-sc{background:color-mix(in srgb,var(--accent-2) 15%,transparent);color:var(--accent-2)}
.cp-m-ok{background:color-mix(in srgb,var(--good) 15%,transparent);color:var(--good);white-space:normal;height:auto;min-height:24px;line-height:1.4;padding:2px 9px}
.cp-ez{font-size:11.5px;font-weight:700;color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 60%,transparent);border-radius:10px;padding:0 6px;line-height:18px}

/* ---------- 窄屏 ---------- */
@media (max-width:860px){
  .cp-top{align-items:stretch;flex-direction:column;flex-wrap:nowrap;gap:10px}
  .cp-top>*{min-width:0}
  .cp-my{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:0 16px}
  .cp-my-b{flex:none}
  .cp{--lab:84px;--gap:14px}
  .cp-card{grid-template-columns:56px minmax(0,1fr);padding:8px 38px 8px 8px;column-gap:10px}
  .cp-face{width:56px;height:56px}
  .cp-n{font-size:17px}
}
@media (max-width:640px){
  .cp-title h1{flex:none;font-size:25px}
  .cp-q.fsearch{flex:1;width:auto;min-width:0;height:34px}
  /* 头像条和推荐：一行横滑 */
  .cp-roster{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;margin:0 -16px 10px;padding:10px 16px 6px;border-width:1px 0;border-radius:0}
  .cp-roster::-webkit-scrollbar,.cp-rec-s::-webkit-scrollbar{display:none}
  .cp-rgt{width:30px}
  .cp-rg:not(:first-child) .cp-rgt{margin-left:6px}
  .cp-rt{width:54px}
  .cp-rec{flex-direction:column;align-items:stretch;gap:6px;margin-bottom:12px}
  .cp-rec-s{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:2px 16px 4px}
  .cp-toast{bottom:18px;font-size:13.5px}
  .cp{--lab:34px;--gap:8px}
  .cp-l{font-size:12.5px}
  .cp-lf{display:none}.cp-ls{display:inline}
  .cp-l .sq{display:none}
  /* 文字行：标签单独一行横跨全宽，下面每人一格 */
  .cp-txt{grid-template-columns:repeat(var(--n),minmax(0,1fr));row-gap:4px}
  .cp-txt .cp-l{grid-column:1 / -1;padding:2px 0 0;font-weight:600;color:var(--ink)}
  .cp-mine .cp-l{padding-left:6px}
  .cp-txt .cp-c{font-size:13px}
  /* 列头：竖排卡片，移除放在头像下面（不压在头像上，免得误点） */
  .cp-hrow,.cp-mrow{grid-template-columns:repeat(var(--n),minmax(0,1fr))}
  .cp-hrow>.cp-l,.cp-mrow>.cp-l{display:none}
  .cp-card{grid-template-columns:1fr;grid-template-rows:auto auto auto;justify-items:center;row-gap:5px;padding:8px 4px;text-align:center}
  .cp-face{grid-row:auto;width:60px;height:60px}
  .cp-go{opacity:1;font-size:10.5px;line-height:15px}
  .cp-nb{justify-content:center;align-self:auto}
  .cp-n{font-size:15px}
  .cp-x{position:static;width:auto;height:26px;padding:0 7px;border-radius:13px;font-size:12px;gap:2px}
  .cp-x span[aria-hidden]{font-size:14px}
  .cp-xt{display:inline}
  .cp-mi{flex-direction:column;gap:1px;font-size:11.5px}
  .cp-mi .tier{display:none}
  .cp-mf{width:24px;height:24px}
  .cp-mini,.cp-mrow{height:46px}.cp-mini{margin-bottom:-46px}
  .cp-nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:4px 14px;margin:0 -16px;padding:6px 16px;white-space:nowrap}
  .cp-lvs{display:flex;width:100%}
  .cp-lv{flex:1;padding:0;font-size:13px}
  .cp-num-r .cp-c{gap:4px}
  .cp-num{min-width:0;font-size:14.5px}
  .cp-gap{min-width:20px;font-size:11px}
  .cp-g .cp-c{gap:5px}
  .cp-g .cp-num{width:22px;font-size:13.5px}
  .cp-rk{min-width:0;font-size:10.5px}
  .cp-bar{height:8px}
  .cp-rsel{font-size:12px;height:30px;width:100%}
  .cp-at{font-size:12.5px}
  .cp-sk li{font-size:12.5px}
  .cp-skk{min-width:0;flex-basis:100%;font-size:11px}
  .cp-skd{padding-left:0;font-size:12px}
  .cp-mg{gap:3px}
  .cp-mgi,.cp-sk li{max-width:100%;min-width:0}
  .cp-txt .sk{min-width:0;max-width:100%;white-space:normal;line-height:1.3}
  .cp-chain{padding-left:6px}
  .cp-chain li{font-size:12.5px;gap:4px}
  .cp-chain li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .cp-txt .cv{height:22px;padding:0 6px 0 4px;font-size:12px}
  .cp-m{font-size:12px;padding:0 7px}
}
@media (prefers-reduced-motion:reduce){.cp-mini,.cp-go,.cp-toast,.cp-rtf,.cp-rc{transition:none}.cp-card.cp-flash{animation:none;outline-color:var(--accent)}}
