/* 历史区列表在面板内滚动（CONTRACT 修订 30）：撑满剩余高度、允许缩小、超出滚动；行数少时不把任务条拉高。
   flex-basis 必须是 0 不能是 auto：auto 会把列表内容高度算进面板的固有高度，面板进而顶高整个网格行
   （实测：文生图页 30 条历史把页面从 1459px 撑到 4012px，列表也不再滚动）。改 0 之后面板高度只由
   同一行的资料上传/生成结果两列决定，列表填满剩余空间并内部滚动，这才是修订 30 要的效果。
   scrollbar-gutter:stable 固定预留滚动条宽度：不这样写，Chrome 在某些系统设置下用悬浮式滚动条盖住卡片右边缘的文字
   （【用户实测 2026-09-13，生产站】任务条文字换行位置不对、被滚动条遮住一部分）。 */
/* grid-auto-rows:min-content 必须写：任务条是 <button>，全站 styles.css 里 button{min-height:42px}
   会被网格当成行高，而卡片内容（状态段换行两行 + 时间戳 + 内边距）实际要 82px；不写这条，
   卡片被钉在 42px，多出来的 40px 画到卡片外、压在下一张卡片上（【用户实测 2026-09-13，生产站】
   "文案明显叠在一起""超出了任务条的边框"）。 */
/* padding:3px 是给选中条那圈外发光留的余地：容器 overflow:auto，贴边的光晕会被切掉半边。 */
.r2-task-list { display:grid; grid-auto-rows:min-content; gap:10px; align-content:start; flex:1 1 0; min-height:0; overflow:auto; scrollbar-gutter:stable; padding:3px; }
/* 任务条第一行 = 名称段 + 一个空格 + 状态段；第二行是提交时间。 */
.r2-task-line { display:block; }
.r2-task-list [hidden], .r2-task-actions[hidden] { display:none !important; }
/* align-items 原来是 flex-start：会让内部这两行文字各自按内容宽度收缩，而不是撑满卡片宽度，
   换行位置因此跟卡片实际宽度对不上（同一次实测发现）。改 stretch 让两行都撑满卡片可用宽度，
   text-align:left 仍保证文字本身靠左。
   word-break:keep-all：历史区只有 318px 宽（1920 屏三列布局实测），状态段放不下一行必然换行；
   不加这条会把中文词从中间劈开（实测「本次任」+「务共1张】」），加了之后在斜杠处断
   （「…失败0张/」+「本次任务共1张】」）。overflow-wrap:anywhere 保留作兜底，防止极端长段溢出卡片。 */
.r2-task-summary { display:flex; flex-direction:column; align-items:stretch; gap:6px; width:100%; padding:14px 16px; text-align:left; color:inherit; background:#fff; border:1px solid #d5dbe3; border-radius:10px; cursor:pointer; font:inherit; overflow-wrap:anywhere; word-break:keep-all; }
/* 【用户确认 2026-09-13】"任务条要有「被选择」的效果，否则在任务条多且雷同时，用户看不出来
   自己当前选中的是哪个任务。就在任务条外框加一层 2px 的颜色为 26f1ff 外发光即可"。
   原有的 border-color / background 在深色页上其实一直是**画了也看不见**：
   styles.css 的 `body.imini-page:not(.home-page) .history-item` 特异性(0,3,1)高于这里的(0,2,0)，
   边框色和底色都被它盖掉。改用 box-shadow 绕开这场特异性之争——那条规则没有设 box-shadow。
   2px 的环用 inset：列表是 overflow:auto 的，外扩的环会被容器边缘切掉，inset 的不会。 */
.r2-task-summary.is-selected { border-color:#45826c; background:#f3f8f5; box-shadow:inset 0 0 0 2px #26f1ff, 0 0 14px rgba(38,241,255,.45); }
.r2-task-summary:focus-visible { outline:2px solid #45826c; outline-offset:2px; }
.r2-task-summary small { color:#596979; }
/* 【用户确认 2026-09-13】提示语不要棕色，改成站内那组圆点的青色 #26f1ff 并带一点发光。
   出错那一条不跟着变：它得和普通提示一眼分得开，发光也去掉，免得红字裹一圈青光。 */
.r2-task-notice { white-space:pre-wrap; color:#26f1ff; text-shadow:0 0 6px rgba(38,241,255,.55), 0 0 16px rgba(38,241,255,.3); }
.r2-task-notice:empty { display:none; }
.r2-task-notice[data-type="error"] { color:#b4232f; text-shadow:none; }
.r2-task-actions { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0; }
.r2-task-actions button { padding:8px 12px; border:1px solid #9cabb8; border-radius:7px; background:#f8fafc; color:#182b3c; cursor:pointer; font:inherit; }
.r2-task-actions button:disabled { opacity:.5; cursor:default; }

/* ---- 多选删除（FRONTEND_MODULES.md 第 4.10 节；【用户确认 2026-09-14】先选择记录，再点删除）---- */
/* 按钮条与「重新读取历史任务」那条同一套外观，只是排在它下面、贴着列表。 */
.r2-history-tools { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 10px; }
.r2-history-tools[hidden] { display:none !important; }
.r2-history-tools button[hidden] { display:none !important; }
.r2-history-tools button { padding:8px 12px; min-height:0; border-radius:7px; font:inherit; }
.r2-history-tools .secondary-button { border:1px solid #9cabb8; background:#f8fafc; color:#182b3c; }
.r2-history-tools .primary-button:disabled { opacity:.5; cursor:default; }
/* 勾选框画在任务条左边，只在选择模式下占位——平时不留这条空白，列表宽度不变。
   用伪元素而不是真的 <input type=checkbox>：任务条本身就是 <button>，塞一个可聚焦控件进去
   会让一次点击落到两个目标上（点框和点条的行为会分岔）。 */
.r2-task-list.is-selecting .r2-task-summary { position:relative; padding-left:44px; }
.r2-task-list.is-selecting .r2-task-summary::before {
  content:""; position:absolute; left:16px; top:50%; transform:translateY(-50%);
  width:18px; height:18px; border:2px solid #9cabb8; border-radius:5px; background:#fff;
}
.r2-task-list.is-selecting .r2-task-summary.is-checked::before {
  border-color:#26f1ff; background:#26f1ff;
  /* 勾用 box-shadow 画两段，省一个图标依赖 */
  box-shadow:inset 0 0 0 2px #fff, 0 0 10px rgba(38,241,255,.55);
}
.r2-task-list.is-selecting .r2-task-summary.is-checked { border-color:#26f1ff; }
