/* ============================================================
   投放矩阵（C 版）：行=账号 列=任务 格=状态
   颜色只用 theme.css token；格子 hover 浮现「可点」信号。
   ============================================================ */

.mxwrap{padding:0;overflow:hidden}
.mxwrap .ch{padding:14px 16px 10px}
.mxwrap .filters{padding:0 16px}
.mxscroll{overflow:auto;max-height:calc(100vh - 260px)}
.mxgrid{display:grid;gap:4px;padding:0 12px 12px;min-width:max-content}
/* 剪辑师六站矩阵：列数固定（任务+六站），必须一屏放下不横向滚动，
   所以不吃 max-content 撑宽，fr 列随容器均分、条目文字换行 */
.mxgrid.mxfit{min-width:0}

.mxcell{border:1px solid var(--line);border-radius:8px;background:var(--panel);
  padding:7px 10px;min-height:44px;text-align:left;font:inherit;color:var(--txt);
  display:flex;flex-direction:column;justify-content:center;gap:1px}
.mxcell b{font-size:12.4px;font-weight:600;line-height:1.35}
.mxcell span{font-size:10.6px;color:var(--txt3);line-height:1.3}

/* 头行与账号列：吸顶/吸左，滚动不丢上下文 */
.mx-head{position:sticky;top:0;z-index:2;background:var(--panel3);font-weight:600}
.mx-acc{position:sticky;left:0;z-index:1;background:var(--panel3)}
.mx-acc.mx-head{z-index:3}
.mx-acc b{font-family:var(--mono);font-size:12px}
/* 任务等级徽标（C2.97）：只有「来自任务看板」的任务才有（板外手工录的没有等级，不画）。
   15px 高 / 9.5px 等宽字，与 12px 任务名同基线——232px 的行头里 SSS 也只占约 28px，
   任务名照常换行，列宽、行高、六站格子的尺寸一律不动。配色沿用看板卡片那套：
   红 SSS → 橙 SS → 紫 S → 蓝 A → 灰 B，同一个任务在三个矩阵里颜色永远一致。 */
.mx-lv{display:inline-block;margin-right:5px;padding:0 3px;border-radius:4px;
  font:700 9.5px/14px var(--mono);letter-spacing:.2px;vertical-align:1px;
  color:var(--txt2);border:1px solid var(--line);background:var(--soft);cursor:help;
  white-space:nowrap;overflow:visible;text-overflow:clip}
/* 行头那条 .mx-acc span 会把 display/字号/行高一起覆盖（它的特异性更高），
   所以徽标的规矩必须再压一层，否则会变成一条满宽的灰带 */
.mx-acc b .mx-lv{display:inline-block;font:700 9.5px/14px var(--mono);padding:0 3px;vertical-align:1px;
  white-space:nowrap;overflow:visible;text-overflow:clip}
.mx-lv.lv-sss{color:var(--red);border-color:color-mix(in srgb,var(--red) 42%,transparent);background:color-mix(in srgb,var(--red) 10%,transparent)}
.mx-lv.lv-ss{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 45%,transparent);background:color-mix(in srgb,var(--amber) 12%,transparent)}
.mx-lv.lv-s{color:var(--purple);border-color:color-mix(in srgb,var(--purple) 42%,transparent);background:color-mix(in srgb,var(--purple) 10%,transparent)}
.mx-lv.lv-a{color:var(--blue);border-color:var(--line-blue);background:var(--blue-d)}
.mx-lv.lv-b{color:var(--txt3);border-color:var(--line);background:var(--soft)}
/* 行头要求注记（C2.15）：非分段「500(10条)」；分段「分段 3帖$4 ▸ 6帖$8」紫色一眼区分 */
.mxreq-stage{color:var(--purple);font-weight:600}

/* 空格：虚线，安静地表示「没接」 */
.mx-empty{border-style:dashed;background:transparent;color:var(--txt3);
  align-items:center;justify-content:center;display:flex}

/* 走过的站留痕（C2.119）：任务已经离开这一站，但那一刻要留在格里。
   做成「上面小字说是哪一步、下面时间」的两行，比一行长文本更容易扫。
   样式刻意保持「空」的质感：虚线框（和空格一致）、不加底色、整体压到六成不透明度 ——
   它是痕迹，不是条目，不能看起来像有东西在这里等着人点。 */
.mx-empty.mx-hist{flex-direction:column;gap:1px;color:var(--txt3);
  line-height:1.25;padding:3px 6px;opacity:.58}
.mx-empty.mx-hist:hover{opacity:.8}
.mx-hist span{font-size:10.5px;letter-spacing:.2px}
.mx-hist b{font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums}
/* 紧凑 / 超紧凑模式下只留时间，标签省掉 —— 那两档一行只放得下一行字 */
.mx-dense .mx-hist span,.mx-ultra .mx-hist span{display:none}
.mx-dense .mx-hist,.mx-ultra .mx-hist{padding:0 4px;flex-direction:row}

/* 配色纪律（C2.13）：蓝 = 要动手（待投流/去关投放/剪辑师动作格），其他色 = 不用动 */
.mx-act,.mx-pend{background:var(--blue-d);border-color:var(--line-blue);color:var(--blue)}
.mx-act span,.mx-pend span{color:var(--blue);opacity:.75}
.mx-act{font-weight:600;box-shadow:inset 0 0 0 1px var(--line-blue)}
.mx-run{background:var(--amber-d);border-color:var(--line-amber);color:var(--amber)}
.mx-run span{color:var(--amber);opacity:.8}
.mx-ok{background:var(--green-d);border-color:var(--line-green);color:var(--green)}
.mx-ok span{color:var(--green);opacity:.8}
.mx-no{background:var(--red-d);border-color:var(--line-red);color:var(--red)}
.mx-no span{color:var(--red);opacity:.8}
.mx-mute{background:var(--soft);border-color:var(--line);color:var(--txt2)}

/* 可点的格子（待投流）：hover 浮现主操作信号 */
button.mxcell{cursor:pointer}
button.mxcell.can:hover{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}
button.mxcell:not(.can){cursor:default}

.mxseg{font-size:10.4px;color:var(--purple);margin-top:2px}
button.mxcell.can:hover{transform:translateY(-1px)}

/* 一格多条（同账号同任务多轮）：外壳中性，条目各自带状态色 */
.mxcell.mx-multi{background:var(--soft);padding:4px;gap:4px;justify-content:flex-start}
.mxent{border:1px solid var(--line);border-radius:6px;padding:5px 8px;text-align:left;
  font:inherit;display:flex;flex-direction:column;gap:1px;width:100%}
.mxent b{font-size:12.2px;font-weight:600;line-height:1.35}
.mxent span{font-size:10.6px;opacity:.85;line-height:1.3}
button.mxent{cursor:pointer}
button.mxent:hover{border-color:var(--txt3)}
button.mxent.can:hover{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand);transform:translateY(-1px)}

/* 明细弹层底部的动作区（矩阵格子点进来后的操作位） */
.detail-acts{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}
.detail-acts .link-in{flex:1;min-width:220px}
/* 交制作 / 判失败平行一对（C2.19）：等宽同行，主色在前优先引导 */
.detail-acts.detail-pair .btn{flex:1;min-width:0;justify-content:center}

/* 「还有 N 条」与格内清单弹层 */
.mx-more{border-style:dashed;color:var(--txt3);cursor:pointer}
.mx-more:hover{color:var(--brand);border-color:var(--brand)}
.cellist{display:flex;flex-direction:column;gap:6px}

/* 列头点击排序（C2.16）：点列头 = 该状态任务置顶 + 按创建时间排，再点恢复 */
.mx-sort{cursor:pointer;user-select:none}
.mx-sort:hover{border-color:var(--line-blue)}
.mx-sort.on{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--line-blue);background:var(--blue-d)}
.mxsort-tag{font-style:normal;font-size:10px;color:var(--blue);margin-left:5px;font-weight:400}

/* 六站列头的计数角标 */
.mxcol-n{font-family:var(--mono);font-size:10.6px;color:var(--txt3);margin-left:6px;font-weight:400}

/* 管理员任务总览：六站统计卡（C2.30），佣金到账卡带条数小字 */
.stats.s6{grid-template-columns:repeat(6,1fr)}
.stats.s6 .stat .fine{display:block;margin-top:2px}
