/* ═══════════════════════════════════════════════════
   研途 · 分数线模块样式
   分数自查器 / 门类 chip / 详细对照表
   只用 main.css 的设计令牌 全部 ml- 前缀
   ═══════════════════════════════════════════════════ */

/* ─── 自查器卡片 ─────────────────────────────────── */
.ml-ic{stroke-width:2}
.ml-check{padding:24px;margin-bottom:26px}
.ml-check:hover{transform:none;box-shadow:var(--sh-2)}
.ml-check:focus-within{border-color:var(--blue-line);box-shadow:var(--sh-2)}

.ml-check-top{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.ml-check-mark{
  width:40px;height:40px;flex:none;border-radius:12px;display:grid;place-items:center;
  background:var(--blue-soft);color:var(--blue-ink);font-size:17px;
  transition:transform var(--t-3) var(--spring),background var(--t-2),color var(--t-2);
}
.ml-check:hover .ml-check-mark{transform:scale(1.07) rotate(-4deg)}
.ml-check-tt{flex:1;min-width:0}
.ml-check-tt h3{font-size:16.5px;font-weight:680;letter-spacing:-.012em;line-height:1.35}
.ml-check-tt p{font-size:12.8px;color:var(--ink-3);margin-top:2px}

.ml-check-act{margin-left:auto;display:flex;align-items:center;gap:14px}
.ml-check-act .btn:hover{transform:translateY(-1px) scale(1.02)}
.ml-check-act .btn:active{transform:scale(.97)}
.ml-check-act .btn .ic{font-size:13px}

.ml-total{display:flex;flex-direction:column;align-items:flex-end;line-height:1.06}
.ml-total small{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-4)}
.ml-total b{display:flex;align-items:baseline;gap:4px;font-size:26px;font-weight:740;
  letter-spacing:-.035em;font-variant-numeric:tabular-nums}
.ml-total b > span{display:inline-block;transition:color var(--t-2)}
.ml-total i{font-style:normal;font-size:11.5px;font-weight:500;color:var(--ink-4);letter-spacing:0}

@keyframes mlPulse{
  0%{transform:scale(1)}
  38%{transform:scale(1.13);color:var(--blue-ink)}
  100%{transform:scale(1)}
}
.ml-pulse{animation:mlPulse var(--t-3) var(--ease-out) backwards}

/* ─── 四门分数输入 ───────────────────────────────── */
.ml-fields{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:20px;align-items:start}
.ml-field{display:block;min-width:0}
.ml-field .yt-label{display:flex;align-items:baseline;justify-content:space-between;gap:8px;
  margin-bottom:7px;transition:color var(--t-2)}
.ml-field:focus-within .yt-label{color:var(--blue-ink)}
.ml-field input{height:46px;font-size:17px;font-weight:640;letter-spacing:-.01em;
  font-variant-numeric:tabular-nums;border-radius:var(--r-sm)}
.ml-field input:hover{border-color:var(--ink-4)}
.ml-full{display:block;font-size:11px;color:var(--ink-4);margin-top:6px;letter-spacing:.02em}
.ml-field:focus-within .ml-full{color:var(--ink-3)}

/* ─── 结果区 ─────────────────────────────────────── */
.ml-out{margin-top:20px}
.ml-anim > *{animation:mlIn var(--t-4) var(--ease-out) backwards}
@keyframes mlIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.ml-res{gap:14px;flex-wrap:wrap}
.ml-res.mid{border-color:var(--line);background:var(--paper-2)}
.ml-res-ico{
  width:34px;height:34px;flex:none;border-radius:10px;display:grid;place-items:center;
  background:var(--paper-2);color:var(--ink-2);font-size:15px;
  transition:transform var(--t-3) var(--spring),background var(--t-2),color var(--t-2);
}
.ml-res.ok .ml-res-ico{background:var(--blue);color:var(--ink)}
.ml-res.no .ml-res-ico{background:var(--red-soft);color:var(--red)}
.ml-res:hover .ml-res-ico{transform:scale(1.06)}
.ml-res-t{min-width:0;flex:1}
.ml-res-t b{display:block;font-size:16px;line-height:1.3}
.ml-res.ok .ml-res-t b{color:var(--blue-ink)}
.ml-res.mid .ml-res-t b{color:var(--ink)}
.ml-res.no .ml-res-t b{color:var(--red)}
.ml-res-t > span{display:block;font-size:12.8px;color:var(--ink-3);margin-top:3px;line-height:1.5}
.ml-res-sc{margin-left:auto;text-align:right;line-height:1.12;flex:none}
.ml-res-sc b{font-size:24px;font-weight:740;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}
.ml-res-sc small{display:block;font-size:11px;color:var(--ink-4);white-space:nowrap}

/* ─── 门类 chip 横向滚动 ─────────────────────────── */
.ml-sec{margin-top:18px}
.ml-sec-h{display:flex;align-items:center;gap:8px;font-size:11.5px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-4);margin-bottom:10px}
.ml-sec-h .ic{font-size:13px}
.ml-sec-h .ml-hint{margin-left:auto;font-size:11.5px;letter-spacing:0;text-transform:none}

.ml-chips{
  display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;
  padding:2px 2px 9px;scroll-snap-type:x proximity;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent;
  -webkit-overflow-scrolling:touch;
}
.ml-chips::-webkit-scrollbar{height:6px}
.ml-chips::-webkit-scrollbar-thumb{background:var(--line);border-radius:var(--r-full)}
.ml-chips::-webkit-scrollbar-track{background:transparent}

.ml-chip{
  flex:none;display:inline-flex;align-items:center;gap:7px;height:33px;padding:0 13px;
  border-radius:var(--r-full);border:1px solid var(--line);background:var(--line-2);
  font-size:12.5px;color:var(--ink-3);white-space:nowrap;scroll-snap-align:start;
  transition:background var(--t-2) var(--ease-out),border-color var(--t-2),color var(--t-2),
    transform var(--t-1) var(--spring),box-shadow var(--t-3);
}
.ml-chip .ic{font-size:12px;opacity:.85;transition:opacity var(--t-2)}
.ml-chip.on{
  border-color:var(--blue-line);background:var(--blue-soft);color:var(--blue-ink);
  box-shadow:0 10px 24px -18px rgba(59,130,246,.95);
}
.ml-chip.on .ic{opacity:1}
.ml-chip.on:hover{background:rgba(59,130,246,.22);transform:translateY(-1px)}
.ml-chip.half{border-color:var(--line);background:var(--paper-2);color:var(--ink-2)}
.ml-chip.half:hover{transform:translateY(-1px)}
.ml-chip.off{color:var(--ink-4);border-style:dashed}
.ml-anim .ml-chip{animation:mlChip var(--t-3) var(--ease-out) backwards}
@keyframes mlChip{
  from{opacity:0;transform:translateY(7px) scale(.965)}
  to{opacity:1;transform:none}
}

/* ─── 单科短板 ───────────────────────────────────── */
.ml-short{
  margin-top:16px;padding:15px 17px;border-radius:var(--r);
  border:1px solid var(--red-line);background:var(--red-soft);
}
.ml-short-h{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;
  letter-spacing:.07em;text-transform:uppercase;color:var(--red);margin-bottom:9px}
.ml-short-h .ic{font-size:13px}
.ml-short ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.ml-short li{display:flex;align-items:baseline;gap:6px;font-size:13px;color:var(--ink-2);line-height:1.5}
.ml-short li b{font-weight:660;color:var(--ink);font-variant-numeric:tabular-nums}
.ml-short li .ml-gap{
  margin-left:auto;flex:none;padding-left:12px;font-size:12px;font-weight:640;
  color:var(--red);font-variant-numeric:tabular-nums;
}
.ml-short-note{margin-top:10px;padding-top:9px;border-top:1px solid var(--red-line);
  font-size:11.5px;line-height:1.6;color:var(--ink-2);opacity:.82}

/* 中性说明条（如 300 分制科目） */
.ml-note{
  display:flex;align-items:flex-start;gap:9px;margin-top:16px;padding:12px 15px;
  border-radius:var(--r);border:1px solid var(--line);background:var(--line-2);
  font-size:12px;line-height:1.6;color:var(--ink-3);
  transition:border-color var(--t-2),background var(--t-2),color var(--t-2);
}
.ml-note .ic{margin-top:2px;color:var(--ink-4);font-size:13px;transition:color var(--t-2)}
.ml-note:hover{border-color:var(--blue-line);background:var(--blue-soft);color:var(--ink-2)}
.ml-note:hover .ic{color:var(--blue-ink)}

/* ─── 详细对照表（可收起）───────────────────────── */
.ml-toggle{
  display:flex;align-items:center;gap:10px;width:100%;height:46px;padding:0 16px;
  border-radius:var(--r);border:1px solid var(--line);background:var(--line-2);
  font-size:13.5px;font-weight:600;color:var(--ink-2);text-align:left;
  transition:transform var(--t-1) var(--spring),background var(--t-2),
    border-color var(--t-2),color var(--t-2),box-shadow var(--t-2);
}
.ml-toggle:hover{
  transform:scale(1.02);border-color:var(--blue-line);background:var(--blue-soft);
  color:var(--ink);box-shadow:0 10px 26px -20px rgba(59,130,246,.9);
}
.ml-toggle:active{transform:scale(.97)}
.ml-toggle .ic{font-size:14px;color:var(--ink-4);
  transition:transform var(--t-3) var(--ease-io),color var(--t-2)}
.ml-toggle[aria-expanded="true"] .ic{transform:rotate(180deg);color:var(--blue-ink)}
.ml-toggle .pill{margin-left:auto;transition:background var(--t-2),color var(--t-2)}

.ml-collapse{display:grid;grid-template-rows:0fr;
  transition:grid-template-rows var(--t-3) var(--ease-out)}
.ml-collapse.open{grid-template-rows:1fr}
.ml-collapse-in{
  overflow:hidden;opacity:0;transform:translateY(-6px);min-height:0;
  transition:opacity var(--t-2) var(--ease-out),transform var(--t-3) var(--ease-out);
}
.ml-collapse.open .ml-collapse-in{opacity:1;transform:none}
.ml-collapse-in > .table-wrap{margin-top:12px}

.ml-dt thead th{padding:11px 16px}
.ml-dt tbody td{padding:11px 16px;font-size:13.2px}
.ml-dt tbody td small{font-size:11.5px;color:var(--ink-4);font-variant-numeric:tabular-nums}
.ml-diff{font-variant-numeric:tabular-nums;font-weight:660;font-size:13px}
.ml-diff.over{color:var(--blue-ink)}
.ml-diff.under{color:var(--red)}

/* ─── 占位提示 ───────────────────────────────────── */
.ml-empty{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  padding:32px 20px;border-radius:var(--r);border:1px dashed var(--line);
  background:rgba(255,255,255,.02);text-align:center;
  transition:border-color var(--t-2),background var(--t-2);
}
.ml-empty:hover{border-color:var(--blue-line);background:var(--blue-soft)}
.ml-empty-ico{font-size:24px;color:var(--ink-4);margin-bottom:4px;
  transition:color var(--t-2),transform var(--t-3) var(--spring);
  animation:mlFloat 3.4s var(--ease-io) infinite backwards}
.ml-empty:hover .ml-empty-ico{color:var(--blue-ink);transform:translateY(-2px)}
@keyframes mlFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.ml-empty p{font-size:13.5px;color:var(--ink-2)}
.ml-empty small{font-size:11.5px;color:var(--ink-4)}

/* ─── 表格行命中高亮 ─────────────────────────────── */
.ml-row-badge{display:none;margin-left:9px;font-size:11px;font-weight:600;
  color:var(--blue-ink);letter-spacing:.02em;vertical-align:1px}
.ml-row-badge .ic{font-size:11px;vertical-align:-.1em}
.ml-hit .ml-row-badge{display:inline-flex;align-items:center;gap:3px}
.ml-hit td:first-child{box-shadow:inset 2px 0 0 var(--blue)}
.ml-hit-b .ml-row-badge{display:inline-flex;align-items:center;gap:3px;color:var(--ink-3)}
.ml-hit-b td:first-child{box-shadow:inset 2px 0 0 var(--line)}
tbody tr{transition:background var(--t-2) var(--ease-out),transform var(--t-2) var(--ease-out),box-shadow var(--t-2) var(--ease-out);transform-origin:left center}

/* ─── 响应式 ─────────────────────────────────────── */
@media (max-width:980px){
  .ml-fields{grid-template-columns:repeat(2,1fr)}
  .ml-check-top{gap:12px}
}
@media (max-width:640px){
  .ml-check{padding:18px}
  .ml-check-tt h3{font-size:15.5px}
  .ml-check-act{width:100%;margin-left:0;justify-content:space-between}
  .ml-total{flex-direction:row;align-items:baseline;gap:8px}
  .ml-total b{font-size:22px}
  .ml-res{padding:13px 14px}
  .ml-res-sc{margin:4px 0 0;text-align:left}
  .ml-short{padding:13px 14px}
  .ml-short li{font-size:12.5px}
  .ml-toggle{height:44px;font-size:13px}
}

/* ── 门类行可点击 ───────────────────────────── */
tr.ml-row-link{cursor:pointer}
tr.ml-row-link td:first-child{position:relative}
.ml-row-more{
  display:inline-block;margin-left:9px;font-size:11px;font-weight:600;
  color:var(--blue-ink);background:var(--blue-soft);border-radius:5px;
  padding:1px 7px;vertical-align:1px;
  opacity:0;transform:translateX(-4px);
  transition:opacity var(--t-2) var(--ease-out),transform var(--t-2) var(--ease-out);
}
tr.ml-row-link:hover .ml-row-more{opacity:1;transform:none}

/* ── 门类详情弹窗 ───────────────────────────── */
.ml-dt-intro{font-size:14px;color:var(--ink-2);line-height:1.7;margin:0 0 20px}
.ml-dt-h{
  font-size:12px;font-weight:700;letter-spacing:.07em;color:var(--ink-4);
  text-transform:uppercase;margin:22px 0 12px;padding-top:16px;
  border-top:1px solid var(--line);
}
.ml-dt-h:first-of-type{margin-top:0;padding-top:0;border-top:0}

.ml-dt-lines{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.ml-dt-line,.ml-dt-gap{
  padding:16px 18px;border-radius:var(--r);border:1px solid var(--line);
  background:var(--paper);text-align:center;
}
.ml-dt-line.b{border-color:var(--blue-line);background:var(--blue-soft)}
.ml-dt-gap{background:rgba(255,255,255,.03)}
.ml-dt-line small,.ml-dt-gap small{display:block;font-size:11.5px;color:var(--ink-4);letter-spacing:.05em;margin-bottom:6px}
.ml-dt-line b,.ml-dt-gap b{display:block;font-size:30px;line-height:1.1;font-weight:740;
  letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink)}
.ml-dt-line.b b{color:var(--blue-ink)}
.ml-dt-gap b{color:var(--ink-2);font-size:26px}
.ml-dt-line span,.ml-dt-gap span{display:block;font-size:12px;color:var(--ink-4);margin-top:5px}
.ml-dt-empty{font-size:13px;color:var(--ink-4);margin:0}

.ml-dt-list{display:flex;flex-direction:column;gap:1px;border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden}
.ml-dt-item{padding:11px 16px;background:var(--paper);font-size:13.5px;
  color:var(--ink-2);line-height:1.55;border-bottom:1px solid var(--line-2)}
.ml-dt-item:last-child{border-bottom:0}

.ml-dt-chips{display:flex;gap:7px;flex-wrap:wrap}
.ml-dt-text{font-size:13.5px;color:var(--ink-2);line-height:1.65;margin:0}
.ml-dt-tip{
  display:flex;gap:9px;align-items:flex-start;margin-top:20px;padding:13px 15px;
  border-radius:var(--r);border:1px solid var(--blue-line);background:var(--blue-soft);
  font-size:13px;color:var(--blue-ink);line-height:1.6;
}
.ml-dt-tip .ic{flex:none;margin-top:2px}

@media (max-width:640px){
  .ml-dt-lines{grid-template-columns:1fr}
  .ml-dt-line b,.ml-dt-gap b{font-size:26px}
}

/* ── 数据来源标识 ─────────────────────────────── */
.ml-src{
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  margin:-14px 0 20px;padding:11px 16px;
  border:1px solid var(--line);border-radius:var(--r-sm);
  background:rgba(255,255,255,.025);font-size:12.5px;color:var(--ink-4);
}
.ml-src-item{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.ml-src-item .ic{font-size:13px;color:var(--ink-4);opacity:.8}
.ml-src-item b{font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ml-src-note{
  margin-left:auto;font-size:12px;color:var(--ink-4);opacity:.75;
}
@media (max-width:760px){
  .ml-src{gap:10px 14px}
  .ml-src-note{margin-left:0;flex:1 1 100%}
}

/* ── 门类行：鼠标经过放大 ─────────────────────── */
tbody tr{cursor:default}
tbody tr:hover{
  background:var(--paper-2);
  transform:scale(1.012);
  box-shadow:0 8px 26px -14px rgba(0,0,0,.85);
  position:relative;
  z-index:2;
}
tbody tr td:first-child b{
  display:inline-block;
  transition:transform var(--t-2) var(--ease-out),color var(--t-2);
  transform-origin:left center;
}
tbody tr:hover td:first-child b{
  transform:scale(1.07);
  color:var(--blue-ink);
}
tbody tr:active{transform:scale(.998)}



/* 科目数不同的门类：不参与判断 */
.ml-chip.na{opacity:.45;border-style:dashed}
.ml-chip.na .ic{opacity:.6}
