/* 转职成长模拟器（10-16 ui1 重做）。套全站外壳，只在 .sim 里生效；颜色只用 tokens.css 变量。
   层次：选人台（立绘＋头像网格）→ 转职路线 → 对比结论（差在哪几项）→ 成长曲线 → 折叠的明细 / 观星 / 机制。
   不用卡片框套框：区块之间用留白和细线分开。 */
.sim{font-variant-numeric:tabular-nums}
.sim h2{font-size:20px;margin:0}
.sim button,.sim input,.sim select{font:inherit;color:inherit}
.sim :focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}
.sim .r0{--rc:var(--accent)} .sim .r1{--rc:var(--accent-2)} .sim .r2{--rc:var(--gold)}
.sim .muted{color:var(--muted)}
.sim .lnk{border:0;background:none;padding:0;color:var(--accent-2);cursor:pointer;font-size:inherit}
.sim .lnk:hover{text-decoration:underline;text-underline-offset:3px}
.sim .btn.sm{height:30px;padding:0 12px;font-size:13px}
.sim .warnline{color:var(--warn);font-size:12.5px;margin:6px 0 0}

/* 页头 */
.sim-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:4px 0 16px}
.sim-head h1{font-size:30px;margin:0 0 4px}
.sim-head .lead{margin:0}
.sim-head .btn{flex:none}

/* ---------- 选人台 ---------- */
.stage{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.shero{--rc:var(--gold);position:relative;display:grid;grid-template-columns:280px minmax(0,1fr);gap:0;min-height:360px;overflow:hidden;
  background:radial-gradient(120% 95% at 0% 100%,color-mix(in srgb,var(--rc) 24%,transparent),transparent 62%)}
.shero.r-cai{--rc:var(--r-cai)}.shero.r-dietrich{--rc:var(--r-dietrich)}.shero.r-theodora{--rc:var(--r-theodora)}.shero.r-leda{--rc:var(--r-leda)}
.sh-art{position:relative;align-self:end;height:360px;overflow:hidden}
.sh-art img{display:block;width:100%;height:100%;object-fit:contain;object-position:50% 100%;filter:drop-shadow(0 8px 18px color-mix(in srgb,var(--ink) 18%,transparent))}
.sh-art.wide img{object-position:50% 10%}
.sh-art.face{align-self:center;height:auto;margin:24px 0 24px 20px}
.sh-art.face img{width:210px;height:210px;border-radius:10px;filter:none;box-shadow:0 0 0 1px var(--line),var(--shadow)}
.sh-art .ini{display:flex;align-items:center;justify-content:center;width:210px;height:210px;border-radius:10px;background:var(--surface-2);font:700 80px var(--font-head);color:var(--muted)}
.sh-b{padding:24px 26px 20px 18px;min-width:0}
.sh-n{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.sh-n h2{font-size:40px;letter-spacing:.06em;line-height:1.1}
.sh-n .tier{height:26px;min-width:32px;font-size:15px}
.sh-e{color:var(--muted);font-size:13px;margin-top:4px}
.sh-l{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.sh-o{margin:12px 0 0;font-size:15px;line-height:1.7;color:var(--ink-2);max-width:34em}
.sh-g{margin-top:14px}
.gs-row{display:flex;gap:6px;align-items:flex-end;height:74px}
.gs{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;width:30px;height:100%}
.gs i{display:block;width:12px;border-radius:3px 3px 0 0;min-height:3px}
.gs b{font-size:12px;font-weight:700;margin-bottom:2px}
.gs em{font-style:normal;font-size:11px;color:var(--muted);margin-top:3px;white-space:nowrap}
.gs-cap{font-size:12px;color:var(--muted);margin-top:4px}
.sh-act{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.sh-s{font-size:12.5px;color:var(--muted);margin-top:10px}
.sgrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:10px;max-width:420px}
.sgrid label{display:flex;flex-direction:column;font-size:11.5px;color:var(--muted)}
.sgrid input{width:100%;height:30px;border:1px solid var(--line-strong);border-radius:4px;padding:0 6px;background:var(--bg);font-size:14px}
.sgrid-f{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--muted);margin-top:6px}

.roster{padding:16px 0 14px 22px;border-left:1px solid var(--line);min-width:0;display:flex;flex-direction:column}
.roster-f{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.sf-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.sf{border:0;background:none;padding:0;cursor:pointer;border-radius:6px}
.sf .lt{transition:background .15s,box-shadow .15s}
.sf:hover .lt{background:color-mix(in srgb,var(--rc) 22%,var(--surface))}
.sf.on .lt{background:var(--rc);box-shadow:none;color:var(--accent-ink)}
.sf.on .lt b{color:var(--accent-ink)}
.sf-k{font-size:12px;color:var(--muted);margin-right:2px}
.sf-t{height:26px;min-width:32px;padding:0 9px;border:1px solid var(--line-strong);border-radius:13px;font-size:12.5px;color:var(--ink-2)}
.sf-t:hover{border-color:var(--ink-2)}
.sf-t.on{background:var(--ink);border-color:var(--ink);color:var(--bg);font-weight:700}
.sim-q{margin-left:auto;width:120px;height:28px;border:1px solid var(--line-strong);border-radius:14px;padding:0 12px;background:var(--bg);font-size:13px}
.roster-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:12px 6px;max-height:318px;overflow:auto;padding:4px 8px 6px 2px;scrollbar-width:thin;align-content:start}
.tile{display:flex;flex-direction:column;align-items:center;gap:4px;border:0;background:none;padding:0;cursor:pointer;color:var(--ink-2);min-width:0}
.tf{display:block;width:58px;height:58px;border-radius:8px;overflow:hidden;background:var(--surface-2);box-shadow:0 0 0 1px var(--line);transition:box-shadow .15s,transform .15s}
.tf img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 15%}
.tf .ini{display:flex;align-items:center;justify-content:center;height:100%;font:700 24px var(--font-head);color:var(--muted)}
.tn{font-size:12px;line-height:1.25;max-width:66px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile:hover .tf{box-shadow:0 0 0 2px var(--line-strong);transform:translateY(-2px)}
.tile.on .tf{box-shadow:0 0 0 3px var(--accent),0 6px 14px color-mix(in srgb,var(--accent) 30%,transparent)}
.tile.on .tn{color:var(--accent);font-weight:700}
.roster .none{color:var(--muted);font-size:13px;grid-column:1/-1;margin:20px 0}

/* ---------- 区块 ---------- */
.blk{padding:26px 0 6px}
.blk + .blk{border-top:1px solid var(--line);margin-top:20px}
.blk-h{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;margin-bottom:12px}

/* 路线 */
.recs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:12.5px}
.recs-k{color:var(--muted)}
.rec{border:1px solid var(--line-strong);border-radius:14px;background:var(--surface);padding:3px 11px;cursor:pointer;max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12.5px}
.rec:hover{border-color:var(--accent);color:var(--accent)}
.rtag{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:2px solid var(--rc);color:var(--rc);font:700 16px var(--font-head);flex:none;background:var(--bg)}
.rtag.sm{width:22px;height:22px;font-size:12px;border-width:1.5px;vertical-align:-5px;margin:0 3px}
.routes .blk-h h2 small,.verdict .blk-h h2 small{font:400 13px var(--font);color:var(--muted);margin-left:6px}

/* 各路线分段表：每条路线一列，一段一块（职业＋等级区间＋这一段练完的九项） */
.rcols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 26px;align-items:start}
.rcol{min-width:0;padding-top:12px;border-top:3px solid var(--rc)}
.rcol-h{display:flex;align-items:center;gap:10px}
.rcol-t{flex:1;min-width:0;line-height:1.35}
.rcol-t b{display:block;font-size:15.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rcol-t small{font-size:12px;color:var(--muted)}
.ract{display:flex;gap:12px;font-size:12.5px;flex:none}
.ract .lnk{color:var(--muted)}
.ract .lnk:hover{color:var(--accent)}
.rt-why{margin:8px 0 0;font-size:12.5px;line-height:1.6;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
.rt-why.open{display:block}
.rsegs{list-style:none;margin:10px 0 0;padding:0}
.rseg{padding:12px 0 12px;border-top:1px solid var(--line)}
.rseg-h{display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;padding:0;cursor:pointer;text-align:left;color:var(--ink);font:inherit}
.rseg-h .ci{width:26px;height:26px;object-fit:contain;flex:none}
.rseg-n{font-weight:700;font-size:15px;white-space:nowrap}
.rseg-m{font-size:11.5px;color:var(--rc);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.rseg-lv{margin-left:auto;font-size:12.5px;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.rseg-lv i{font-style:normal;color:var(--muted);margin-left:6px;padding-left:6px;border-left:1px solid var(--line-strong)}
.rseg-h:hover .rseg-n,.rseg.sel .rseg-n{color:var(--rc)}
.rseg.bad .rseg-lv{color:var(--warn)}
.rseg-w{margin:4px 0 0 34px;font-size:12px;color:var(--warn)}
.rseg-na{margin:6px 0 0 34px;font-size:12.5px;color:var(--muted)}
.mt{width:100%;margin-top:9px;border-collapse:collapse;table-layout:fixed;font-variant-numeric:tabular-nums}
.mt th{padding:0 0 4px;font-size:11px;font-weight:500;color:var(--muted);text-align:center;white-space:nowrap;overflow:hidden}
.mt td{padding:5px 0;text-align:center;font-size:14px;font-weight:600;color:var(--ink);border-top:1px solid var(--line)}
.mt th.mt-sum{color:color-mix(in srgb,var(--gold) 70%,var(--ink));font-weight:700}
.mt .mt-sum{background:color-mix(in srgb,var(--gold) 15%,transparent)}
.mt td.mt-sum{font-weight:800;color:color-mix(in srgb,var(--gold) 55%,var(--ink));border-top-color:color-mix(in srgb,var(--gold) 45%,transparent)}
.mt thead .mt-sum{border-radius:4px 4px 0 0}
.mt tbody .mt-sum{border-radius:0 0 4px 4px}
.addk{margin-top:2px;border:1px dashed var(--line-strong);background:none;border-radius:6px;padding:6px 12px;cursor:pointer;color:var(--muted);font-size:12.5px}
.addk:hover{color:var(--rc);border-color:var(--rc)}
.rcol-add{align-self:stretch;min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1.5px dashed var(--line-strong);border-radius:8px;background:none;color:var(--muted);font:inherit;font-size:14px;cursor:pointer;margin-top:15px}
.rcol-add b{font-size:26px;font-weight:400;line-height:1;color:var(--line-strong)}
.rcol-add:hover{color:var(--accent-2);border-color:var(--accent-2)}
.rcol-add:hover b{color:var(--accent-2)}
.editor{margin-top:12px;padding:12px 14px;background:var(--surface-2);border-radius:6px;font-size:13px}
.ed-f{display:flex;flex-wrap:wrap;gap:10px 18px}
.ed-f label{display:flex;align-items:center;gap:6px;color:var(--ink-2)}
.ed-f select,.ed-f input{height:30px;border:1px solid var(--line-strong);border-radius:4px;background:var(--surface);padding:0 6px;max-width:100%}
.ed-f input[type=number]{width:64px}
.ed-a{display:flex;align-items:center;gap:16px;margin-top:10px}
.ed-a .btn{margin-left:auto}
.editor .req{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.6}
.editor .req b{color:var(--warn);font-weight:400}

/* ---------- 对比结论 ---------- */
.verdict .blk-h h2{font-size:22px}
.lv-pick input{width:62px;border:0;border-bottom:2px solid var(--gold);background:none;text-align:center;padding:0;font-family:var(--font-head);font-weight:700}
.seg2{display:inline-flex;border:1px solid var(--line-strong);border-radius:16px;overflow:hidden;font-size:12.5px}
.seg2 button{border:0;background:var(--surface);padding:5px 12px;cursor:pointer;color:var(--ink-2)}
.seg2 button.on{background:var(--ink);color:var(--bg)}
.vd-h{margin:0 0 14px;font-size:16.5px;line-height:1.9;max-width:66em}
.vd-h b{font-family:var(--font-head);font-size:19px;color:var(--ink)}
.vd-k{font-weight:700;white-space:nowrap}
.vd-k::before{content:"";display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--sc);margin-right:5px;vertical-align:2px}
/* 练到 LvX 的属性对比表：行＝路线，两位小数；最高值、合计、差值是唯一的强调 */
.f-hint{display:none;margin:0 0 4px;font-size:12px;color:var(--muted);text-align:right}
.f-scroll{overflow-x:auto;margin:2px 0 0;scrollbar-width:thin}
.ftb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.ftb th,.ftb td{padding:12px 8px;text-align:center;white-space:nowrap;border-bottom:1px solid var(--line)}
.ftb thead th{padding:6px 8px 9px;font-size:12.5px;font-weight:600;color:var(--ink-2);border-bottom:1.5px solid var(--line-strong)}
.ftb td{font-size:15px;color:var(--ink)}
.ftb .f-lab{text-align:left;position:sticky;left:0;z-index:1;background:var(--bg);width:1%}
.f-labi{display:flex;align-items:center;gap:10px;min-width:210px;max-width:300px}
.f-nm{display:flex;flex-direction:column;min-width:0;line-height:1.35}
.f-nm b{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f-nm small{font-size:12px;color:var(--muted);font-weight:400}
.ftb .rtag{width:26px;height:26px;font-size:13.5px}
.ftb td.f-best{color:var(--accent);font-weight:800}
.ftb .f-sum{background:color-mix(in srgb,var(--gold) 13%,transparent);font-weight:800;color:color-mix(in srgb,var(--gold) 55%,var(--ink))}
.ftb thead .f-sum{color:color-mix(in srgb,var(--gold) 70%,var(--ink))}
.ftb td.f-sum.f-best{color:var(--accent)}
.f-miss{color:var(--muted);font-size:13px!important;text-align:left!important}
.ftb tr.f-diff th,.ftb tr.f-diff td{border-bottom:0;padding-top:10px;padding-bottom:10px}
.ftb tr.f-diff td{font-size:13.5px;color:var(--muted)}
.f-dl{font-size:13px;font-weight:700;color:var(--ink-2)}
.f-dls{display:block;font-size:11.5px;color:var(--muted);font-weight:400}
.ftb tr.f-diff td.f-up{color:var(--good)}
.ftb tr.f-diff td.f-dn{color:var(--bad)}
.ftb tr.f-diff td.f-big{font-weight:800}
.ftb tr.f-diff td.f-up.f-big{background:color-mix(in srgb,var(--good) 12%,transparent)}
.ftb tr.f-diff td.f-dn.f-big{background:color-mix(in srgb,var(--bad) 10%,transparent)}
.ftb tr.f-diff td.f-big:not(.f-up):not(.f-dn){color:var(--accent)}
.ftb tr.f-diff td.f-sum{background:color-mix(in srgb,var(--gold) 13%,transparent)}
.charts .ch-h{font-size:16px;margin:4px 0 8px}
.charts .ch-h2{margin-top:22px}
.cmp{margin:4px 0 0}
.cr{display:grid;grid-template-columns:56px minmax(0,1fr) 180px;gap:14px;align-items:center;height:34px}
.cr + .cr{border-top:1px solid color-mix(in srgb,var(--line) 55%,transparent)}
.cr-h{height:24px;font-size:12px;color:var(--muted)}
.ctr-h{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ck{font-size:13.5px;color:var(--ink-2);display:flex;align-items:center;gap:6px;white-space:nowrap}
.cr:not(.cr-h) .ck::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--sc);flex:none}
.ctr{position:relative;height:100%}
.ctr .base{position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line-strong);opacity:.6}
.ctr .gap{position:absolute;top:calc(50% - 2px);height:4px;border-radius:2px;background:var(--sc);opacity:.4}
.ctr .dot{position:absolute;top:50%;width:13px;height:13px;margin:-6.5px 0 0 -6.5px;border-radius:50%;background:var(--rc);border:2px solid var(--bg);box-shadow:0 0 0 1px var(--rc);transition:left .3s ease}
.cv{display:flex;justify-content:flex-end}
.cv span{width:60px;text-align:right;color:var(--rc);font-size:14px}
.cv span.best{font-weight:800}
.cr-h .cv span{font:700 13px var(--font-head)}
.thr{display:flex;flex-wrap:wrap;align-items:center;gap:10px 26px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font-size:14px}
.thr input,.thr select{border:0;border-bottom:2px solid var(--gold);background:none;padding:0 2px;height:26px}
.thr input{width:50px;text-align:center}
.thr-p{display:flex;flex-wrap:wrap;gap:6px 22px}
.pr{display:inline-flex;align-items:center;gap:4px}
.pr b{font:700 26px/1.1 var(--font-head);color:var(--rc)}
.pr.na b{font-size:15px;color:var(--muted)}
.fine{color:var(--muted);font-size:12.5px;margin:12px 0 0;line-height:1.7}
.fine .w{color:var(--warn)}

/* ---------- 曲线 ---------- */
.stat-tabs{display:flex;gap:2px;flex-wrap:wrap}
.stat-tabs button{border:0;background:none;border-radius:4px;padding:4px 9px;cursor:pointer;color:var(--ink-2);font-size:13px}
.stat-tabs button:hover{background:var(--surface-2)}
.stat-tabs button[aria-selected="true"]{color:var(--ink);font-weight:700;box-shadow:inset 0 -3px 0 var(--sc)}
.curve{position:relative}
.curve svg{display:block;width:100%;height:auto;overflow:visible}
.curve .ax{stroke:var(--line-strong);stroke-width:1}
.curve .grid{stroke:var(--line);stroke-width:1;stroke-dasharray:2 4}
.curve .lbl{fill:var(--muted);font-size:11px}
.curve .cmpl{stroke:var(--gold);stroke-width:2;opacity:.8}
.curve g{color:var(--rc)}
.curve .band{fill:var(--rc);fill-opacity:.14;stroke:none}
.curve .med{fill:none;stroke:var(--rc);stroke-width:2.2;stroke-linejoin:round}
.curve .kn{fill:var(--surface);stroke:var(--rc);stroke-width:2}
.curve .guide{stroke:var(--ink-2);stroke-width:1;stroke-dasharray:3 3}
.ctip{position:absolute;pointer-events:none;background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;box-shadow:var(--shadow);padding:6px 10px;font-size:12px;min-width:160px;z-index:5}
.ctip .ct-t{font-weight:700;margin-bottom:2px}
.ctip .tr2{display:flex;justify-content:space-between;gap:10px;color:var(--rc)}
.ctip .tc{color:var(--muted);font-size:11px}

/* ---------- 折叠 ---------- */
.folds{margin-top:28px;border-top:1px solid var(--line)}
.fold{border-bottom:1px solid var(--line)}
.fold>summary{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px;padding:15px 0;cursor:pointer;list-style:none}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary::before{content:"+";width:14px;color:var(--gold);font-weight:700;font-size:18px;line-height:1}
.fold[open]>summary::before{content:"−"}
.fold>summary b{font:700 16px var(--font-head)}
.fold>summary span{color:var(--muted);font-size:13px}
.fold>summary:hover b{color:var(--accent)}
.fold-b{padding:0 0 20px 28px;min-width:0}
.tbl-tabs{display:flex;gap:6px;margin-bottom:8px}
.seg-b{height:30px;padding:0 12px;border:1px solid var(--line-strong);border-radius:15px;background:var(--surface);cursor:pointer;font-size:13px;color:var(--ink-2)}
.seg-b.on{border-color:var(--rc);color:var(--rc);font-weight:700;box-shadow:inset 0 0 0 1px var(--rc)}
.lv-wrap{overflow:auto;max-height:480px}
table.lvt{border-collapse:collapse;font-size:12.5px;width:100%;min-width:720px}
table.lvt th,table.lvt td{padding:4px 6px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}
table.lvt th{position:sticky;top:0;background:var(--surface-2);font-weight:700;color:var(--ink-2)}
table.lvt td.c,table.lvt th.c{text-align:left}
table.lvt tr.chg td{border-top:2px solid var(--gold)}
table.lvt .g{color:var(--muted);font-size:11px}

/* 观星 */
.star-lead{max-width:76ch;margin:0;color:var(--ink-2)}
.star-ctl{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:14px 0 12px;font-size:13px}
.star-ctl label{display:flex;align-items:center;gap:6px}
.star-ctl select,.star-ctl input{height:30px;border:1px solid var(--line-strong);border-radius:4px;background:var(--surface);padding:0 6px;max-width:220px}
.star-ctl input{width:56px}
.sw{display:inline-flex;align-items:center;gap:5px}
.sw i{display:inline-block;width:11px;height:11px;border-radius:50%}
.sw .x{background:var(--accent)} .sw .y{border:2px solid var(--accent-2)}
.exams{font-family:var(--font-head);color:var(--accent)}
.star-grid{overflow-x:auto}
table.sg{border-collapse:separate;border-spacing:3px;font-size:12px}
table.sg th{font-weight:700;color:var(--ink-2);padding:0 4px;text-align:center;white-space:nowrap}
table.sg td{width:46px;height:34px;text-align:center;background:var(--surface-2);border-radius:4px;position:relative;color:var(--muted)}
table.sg td.lvc{width:auto;background:none;color:var(--ink-2);text-align:right;padding-right:6px;white-space:nowrap}
table.sg td.tot{width:auto;background:none;color:var(--ink-2);white-space:nowrap;padding:0 6px}
table.sg td .r{font-size:12.5px;color:var(--ink-2)}
table.sg td .mk{position:absolute;top:3px;width:8px;height:8px;border-radius:50%}
table.sg td .mx{left:4px;background:var(--accent)}
table.sg td .my{right:4px;border:2px solid var(--accent-2)}
table.sg td.both{background:color-mix(in srgb,var(--good) 16%,var(--surface-2))}
table.sg td.ox{background:color-mix(in srgb,var(--accent) 22%,var(--surface-2));color:var(--ink)}
table.sg td.oy{background:color-mix(in srgb,var(--accent-2) 22%,var(--surface-2));color:var(--ink)}
table.sg td.foc{outline:2px solid var(--gold);outline-offset:-2px}
table.sg tr.skip td:not(.lvc){opacity:.35}
.star-sum{margin:10px 0 0;font-size:13.5px}
.caveat{margin:10px 0 0;font-size:12.5px;color:var(--ink-2);border-left:3px solid var(--warn);padding:4px 10px;background:color-mix(in srgb,var(--warn) 8%,transparent);max-width:90ch}

/* 机制说明 */
.nl{margin:0;padding:0;list-style:none;max-width:96ch}
.nl li{display:grid;grid-template-columns:60px minmax(0,1fr);gap:10px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:14px}
.tag{display:inline-block;justify-self:start;font-size:11px;border-radius:10px;padding:0 7px;line-height:20px;height:20px;border:1px solid currentColor;white-space:nowrap}
.tag.ok{color:var(--good)} .tag.dis{color:var(--warn)} .tag.unk{color:var(--muted)}
.notes .src{color:var(--muted);font-size:12px}

.sim-toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,20px);opacity:0;background:var(--ink);color:var(--bg);padding:8px 16px;border-radius:6px;font-size:13px;transition:opacity .2s,transform .2s;pointer-events:none;z-index:60}
.sim-toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- 窄屏 ---------- */
@media (max-width:1100px){
  .stage{grid-template-columns:1fr}
  .roster{border-left:0;border-top:1px solid var(--line);padding:12px 0}
  .roster-g{grid-auto-flow:column;grid-template-columns:none;grid-template-rows:repeat(2,auto);grid-auto-columns:66px;overflow-x:auto;overflow-y:hidden;max-height:none;padding-bottom:8px;scroll-snap-type:x proximity}
  .tile{scroll-snap-align:start}
}
@media (max-width:980px){
  .rcols{grid-template-columns:minmax(0,1fr)}
  .rcol-add{min-height:64px;flex-direction:row;margin-top:0}
}
@media (max-width:760px){
  .f-labi{min-width:112px;max-width:132px;gap:7px}
  .f-hint{display:block}
  .rseg-h{min-height:36px}
  .ract .lnk,.sgrid-f .lnk,.sh-s .lnk{padding:8px 2px}
  .f-nm b{font-size:13px}
  .ftb th,.ftb td{padding:10px 7px}
  .ftb td{font-size:14px}
  .mt td{font-size:13px}
  .mt th{font-size:10.5px}
  .sim-head{flex-direction:column;align-items:stretch;gap:10px;margin-bottom:12px}
  .sim-head h1{font-size:25px}
  .sim-head .btn{align-self:flex-start}
  .shero{grid-template-columns:118px minmax(0,1fr);min-height:0}
  .sh-art{height:200px;align-self:start}
  .sh-art.face{margin:14px 0 0 0}
  .sh-art.face img,.sh-art .ini{width:110px;height:110px}
  .sh-b{padding:14px 0 14px 12px}
  .sh-n h2{font-size:28px}
  .sh-o{font-size:14px;margin-top:8px}
  .sh-g{grid-column:1 / -1;margin-top:10px}
  .gs-row{justify-content:space-between;height:66px}
  .gs{width:auto;flex:1}
  .sh-act .btn{flex:1 1 auto;justify-content:center}
  .roster-f{gap:6px}
  .sf .lt{height:32px}
  .sf-t{height:32px;min-width:38px}
  .rec{padding:7px 12px}
  .seg2 button{padding:7px 12px}
  .stat-tabs button{padding:7px 9px}
  .addk{padding:7px 10px}
  .seg-b{height:34px}
  .sim-q{margin-left:0;width:100%;order:9;height:32px}
  .blk{padding-top:20px}
  .rtag{width:28px;height:28px;font-size:14px}
  .verdict .blk-h h2{font-size:19px}
  .vd-h{font-size:15px;line-height:1.85}
  .cr{grid-template-columns:44px minmax(0,1fr) 138px;gap:8px}
  .cv span{width:46px;font-size:13px}
  .ck{font-size:12.5px;gap:4px}
  .cr-h .ctr-h{visibility:hidden}
  .pr b{font-size:22px}
  .fold-b{padding-left:0}
  table.sg{border-spacing:2px}
  table.sg td{width:30px;height:28px}
  table.sg td .r{font-size:10.5px}
  table.sg td .mk{width:6px;height:6px;top:2px}
  table.sg td .mx{left:2px} table.sg td .my{right:2px;border-width:1.5px}
  table.sg th{padding:0 1px;font-size:11px}
}
@media (prefers-reduced-motion:reduce){
  .ctr .dot,.tf,.sim-toast{transition:none}
}

/* 10-17：三列按段对齐（subgrid 共用行高）＋ 段名点开换职业 */
.rcols{row-gap:0}
.rcol{display:grid;grid-template-rows:subgrid;align-content:start}
.rsegs{display:grid;grid-template-rows:subgrid;margin:0;padding-top:10px}
.rseg{align-self:stretch}
.rt-why{align-self:start}
.rt-none{margin:0}
.addk-w{align-self:start;padding-top:2px}
.rseg-top{display:flex;align-items:center;gap:8px;min-width:0}
.rseg-c{display:inline-flex;align-items:center;gap:8px;border:0;background:none;padding:2px 6px 2px 0;margin:-2px 0;border-radius:6px;cursor:pointer;color:var(--ink);font:inherit;min-width:0}
.rseg-c .ci{width:26px;height:26px;object-fit:contain;flex:none}
.rseg-cv{flex:none;color:var(--muted);margin-left:-2px;transition:transform .15s}
.rseg-c:hover{background:color-mix(in srgb,var(--rc) 10%,transparent)}
.rseg-c:hover .rseg-n,.rseg.pk .rseg-n{color:var(--rc)}
.rseg-c:hover .rseg-cv,.rseg.pk .rseg-cv{color:var(--rc)}
.rseg.pk .rseg-cv{transform:rotate(180deg)}
.rseg-h{display:inline-flex;width:auto;margin-left:auto;flex:none}
.rseg-h:hover .rseg-lv{color:var(--rc)}
.rseg-h:hover .rseg-n,.rseg.sel .rseg-n{color:inherit}
.rseg.sel .rseg-lv{color:var(--rc)}
.cpick{margin:9px 0 2px;padding:10px 12px 8px;border:1px solid color-mix(in srgb,var(--rc) 45%,var(--line));border-radius:8px;background:color-mix(in srgb,var(--rc) 6%,var(--surface))}
.cp-h{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.cp-h b{font-size:13.5px}
.cp-h small{font-size:12px;color:var(--muted);flex:1;min-width:0}
.cp-g{margin:0 0 8px}
.cp-t{font-size:11.5px;color:var(--muted);margin:0 0 5px}
.cp-l{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:5px}
.cp-c{display:flex;align-items:center;gap:6px;min-width:0;padding:4px 7px 4px 4px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink);font:inherit;font-size:13px;cursor:pointer;text-align:left}
.cp-c span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-c small{font-size:10.5px;color:var(--muted);flex:none;font-variant-numeric:tabular-nums}
.cp-c .ci{width:24px;height:24px;object-fit:contain;flex:none}
.cp-c:hover{border-color:var(--rc);color:var(--rc)}
.cp-c.on{border-color:var(--rc);background:color-mix(in srgb,var(--rc) 16%,var(--bg));font-weight:700}
.cp-c.low{border-style:dashed}
.cp-more summary{cursor:pointer;font-size:12.5px;color:var(--muted);margin:2px 0 8px}
.cp-more summary:hover{color:var(--rc)}
@media (max-width:980px){
  .rcols{row-gap:20px}
  .rcol,.rcol-add{grid-row:auto !important}
  .rcol{display:block}
  .rsegs{display:block;padding-top:0;margin-top:10px}
}

/* 10-17 布局巡检：不透明底的方形游戏头像（多数人）按方框顶对齐，和右边名字一栏齐；透明底立绘照旧贴底 */
.sh-art.box{align-self:start;height:auto;aspect-ratio:1;margin:24px 0 20px 20px;border-radius:10px;background:var(--surface-2);box-shadow:0 0 0 1px var(--line),var(--shadow)}
.sh-art.box img{object-fit:cover;object-position:50% 20%;filter:none}
@media (max-width:760px){.sh-art.box{margin:14px 0 0 0}}
/* 10-17 布局巡检：结论句里的 A/B/C 小圈掉在字下面像下标——按圈心对齐字心 */
.vd-h .rtag.sm{vertical-align:1px}
