/* 角色拼图 工作台 v2（三栏工作台）—— 由 index.html 在 index.css **之后**引入。
   为什么不并进 index.css：该文件正由并行的 S7 线高频改动（同小时哈希三变）；
   另立文件后本线不再触碰 index.css，冲突面从「2 文件」降到「1 文件 2 行」。

   规则纪律：
   1. 只写「新增 / 覆盖」规则 —— 旧 .cboard-* 规则（含 .cboard-narrow .cboard-tools）
      保留在 index.css 中，测试 `assert.match(read('public/assets/index.css'), /\.cboard-narrow \.cboard-tools/)` 依赖它。
   2. 颜色一律用字面量，**不依赖页面 CSS 变量** —— 外壳主题由并行的 S7 线改动，依赖变量会被动受牵连。
   3. 前缀固定 .cboard-*，与 IA 线的 .settings-* 互不重叠。 */

/* ── 面板与标题（v2：品牌句 + 副标题） ── */
/* min-width:0 很关键：.cboard-mask 是 flex 容器，面板作为 flex 项默认 min-width:auto，
   会被内容抬到 min-content 宽（实测 420px 视口下面板被撞到 ~480px → 横向溢出）。 */
.cboard-panel{width:min(96vw,1200px);min-width:0;max-width:96vw;max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.cboard-head{flex-wrap:wrap}
.cboard-title{display:flex;flex-direction:column;gap:2px;min-width:0}
.cboard-title h3{margin:0;font-size:16px}
.cboard-sub{color:#8a90a2;font-size:11px;line-height:1.3}

/* ── 三栏 ── */
/* V2-P5 后实测：1440×857 下面板内容高 1054 > 可视 754 —— 整体溢出导致「一键成卡/导出 PNG/撤销/重做」
   与飞书写回区全掉到首屏下方（actions y=900 / 写回 y=960 / 页脚 y=1072，可视只到 ~805）。
   修法：面板改纵向 flex 且自身不滚，头部/主操作/写回/页脚固定，**只让 .cboard-body 内部滚动**。 */
.cboard-body{grid-template-columns:240px minmax(320px,1fr) 260px;flex:1 1 auto;min-height:0;overflow:auto}
.cboard-center{display:flex;flex-direction:column;min-width:0}
.cboard-left{min-width:0}
.cboard-inspector{border-left:1px solid #eef0f6;padding-left:12px;min-width:0}
.cboard-inspector .cboard-label{margin-top:0}

/* ── 中栏视图条（视图组挂在画布上方） ── */
/* 旧规则是 display:flex;justify-content:center（行向）—— v2 画布上方多了一条视图栏，
   必须改成列向，否则视图栏与画布会横排。 */
.cboard-stage{flex-direction:column;align-items:center}
/* 画布限高：矮屏（笔记本 800–900 高）下不让方形预览把主操作行顶出可视区。
   canvas 是可替换元素 → object-fit:contain 能保比例（不会把图抻扁）。 */
.cboard-canvas{object-fit:contain;max-height:44vh;max-width:100%}
.cboard-viewbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;width:100%;margin:0 0 8px}
.cboard-viewbar .cboard-toolgroup{margin:0}
.cboard-zoom{font-size:11px;color:#5b6274;min-width:42px;text-align:center;font-variant-numeric:tabular-nums}

/* ── 工具分组（右栏属性面板） ── */
.cboard-toolgroup{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.cboard-toolgroup-title{width:100%;color:#6a7387;font-size:11px;margin:0 0 2px}
.cboard-none{color:#8a90a2;font-size:11px;line-height:1.6;margin:2px 0 0}

/* ── 主操作行（跨三栏，panel 直系子节点，不占网格列） ── */
.cboard-actions{margin-top:14px;padding-top:12px;border-top:1px solid #eef0f6}
/* 历史组靠右（撤销/重做） */
.cboard-toolgroup[data-cboard-group="history"]{margin:0 0 0 auto}

/* ── 空状态（V2-P2：无素材时的引导；宽度撑满中栏，否则会被 stage 的 align-items:center 缩成窄条） ── */
.cboard-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:100%;
  border:1px dashed #c9cfdd;border-radius:10px;background:#fff;color:#6a7387;padding:26px 14px;text-align:center}
.cboard-empty[hidden]{display:none}
.cboard-empty-title{font-size:13px;color:#4a4f63}
.cboard-empty-sub{font-size:11px;color:#8a90a2}
.cboard-empty-actions{display:flex;gap:8px;margin-top:4px}

/* ── 页脚快捷键提示（V2-P2；只列已实现的键） ── */
.cboard-foothelp{color:#8a90a2;font-size:11px;line-height:1.6;margin:10px 0 0}

/* ── 锁定（V2-P5）：列表项角标；画布上的锁标记由 drawLockMarks 画在预览层（不走 CSS） ── */
.cboard-item.locked{background:#fff7ed;border-color:rgba(251,191,36,.45)}
.cboard-lock-dot{flex-shrink:0;background:#b45309;color:#fff;border-radius:5px;font-size:10px;line-height:1;padding:3px 4px}

/* ── 数值微调面板（V2-P4）：与真实字段 1:1，提交时机 change（回车/失焦） ── */
.cboard-nums{display:flex;flex-direction:column;gap:6px;margin:2px 0 12px}
.cboard-num{display:flex;align-items:center;gap:6px;font-size:11px;color:#4a4f63}
.cboard-num-label{width:64px;flex-shrink:0;color:#6a7387}
.cboard-num input{flex:1;min-width:0;font-size:12px;padding:4px 6px;border:1px solid #e2e6ef;border-radius:7px;color:#4a4f63}
.cboard-num input:disabled{background:#f7f8fb;color:#a7adbd}
.cboard-num input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px rgba(59,130,246,.18)}
.cboard-num-unit{width:12px;color:#8a90a2}
.cboard-num-title{width:100%;color:#6a7387;font-size:11px;margin:6px 0 0}

/* ── 文件输入：视觉隐藏（审核修复 R1） ──
   不能用 display:none —— WebKit/Safari 拒绍在不可见的 file input 上触发选择器，
   而空态卡片的「添加本地图片」正是走 input.click()。元素保持渲染（可点、键盘可达）但不可见、不占位。
   .cboard-add 需要 position:relative 作为定位上下文（旧规则在 index.css，不改它，?此处覆盖）。 */
.cboard-add{position:relative}
.cboard-file-input{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;opacity:0}

/* ── 拖入高亮（V2-P2） ── */
.cboard-stage.dragover{border:1px dashed #3b82f6;background:#eff6ff}

/* ── 窄屏与中屏：右栏隐藏（不假装能在小屏精修） ── */
@media (max-width:1100px){
  .cboard-body{grid-template-columns:240px minmax(280px,1fr)}
  .cboard-inspector{display:none}
}
@media (max-width:820px){
  /* minmax(0,1fr)：去掉 1fr 自带的 min-content 地板，否则窄屏下网格会被内容撑宽
     （实测 420px 视口时列宽曾达 444px → 面板横向溢出） */
  .cboard-body{grid-template-columns:minmax(0,1fr)}
  .cboard-inspector{display:none}
  .cboard-viewbar{justify-content:center}
  .cboard-hint{flex-basis:100%}
  .cboard-actions{flex-wrap:wrap}
  .cboard-wb-row{flex-wrap:wrap}
}

/* ── 窄屏降级：与 index.css 既有口径一致（隐藏精细编辑入口） ── */
.cboard-narrow .cboard-viewbar{display:none}

/* ── 左栏收紧（V2-P5 后实测：1440×757 下面板纵向预算紧张）──
   模板与导出档位改两列排布：每个按钮高度减半，左栏矮约 130px，三栏区可少滚动。 */
.cboard-templates,.cboard-tier{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.cboard-tpl,.cboard-tier-btn{padding:7px 8px;line-height:1.25}
.cboard-help{font-size:10px;line-height:1.5}
