/* ================= v613：角色子画布 —— 浮在画布上的独立浮层（工单 W613-01） =================
   用户口径（原话）：
     ①「子画布打开时，就在画布的基础上打开，和 AI 对话框一样，可以正常看到和操作无限画布的节点」
     ②（截图）窗左缘外漏一条 ~12px 白边
     ③ 顶部提示条去掉（星桥已删 index.html 的 .sub401-hint —— 与本表无关）

   两条口径 + 一块画布：
     ① 撤掉「窗外整层裁剪」（后置覆盖 41-subcanvas610.css:39 的同选择器规则；17-sub-canvas401.css:49 原文一字不动）
        ⇒ 窗外恢复成**主画布本色**：看得见、点得到、框选得了、滚轮缩放平移照常 ⇒ 12px 白边随之消失。
     ② 子画布窗口里那块**自己的画布** #sub401Stage613（JS 由 140-subfloat613.js 惰性建、挂在 #sub401 下）：
        它**视口大小、原点钉在视口原点**，再用 clip-path 精确裁到窗口内框 —— 于是：
          · 与主画布同一套视口坐标 ⇒ 75 的取景 / 18 的参数面板 fr421 夹取 / 79 的分步窗定位**全部不用改**；
          · 窗口区由它盖住（不透明底色遮掉底下的主画布），窗外则完全不碰主画布。

   ⚠️ 为什么不做成「窗口大小」的画布：那样 view 得整体换算成窗口局部坐标，
      而参数面板 / 分步窗 / 圆形手柄这些 **DOM 浮层按视口坐标绝对定位** —— 会整体歪掉。
      做成「视口大小 + clip-path 裁窗口区」= 零坐标换算，既有几何一处不动。

   ⚠️ 本表必须挂在 41 之后（同选择器后置规则才能赢）。既有表原文一字未动。 */

/* ---------- ① 撤掉窗外整层裁剪（覆盖 41 那条同选择器规则） ---------- */
body.sub401-on #canvasWrap{clip-path:none}

/* ---------- ② 子画布窗口那块画布：视口大小、原点在视口原点、clip-path 裁到窗口内框 ----------
   定位（左/上）：相对 #sub401 的 padding box（= 窗口矩形，无 border/padding）。
     窗口左缘 = 100vw − 14 − --sub401w ⇒ left = −(窗口左缘) = --sub401w − 100vw + 14px；
     #sub401 顶部 = 62px ⇒ top = −62px。
   裁剪（inset 相对本画布的 border box = 视口）：上 = 62 + 32(标题栏) + 8(间隙) = 102px；
     右 = 14px；下 = 68px；左 = 100vw − 14 − --sub401w（= 窗口左缘）；圆角与 .sub401-frame 同 16px。 */
.sub401-stage613{
  position:absolute;
  left:calc(var(--sub401w) - 100vw + 14px);
  top:-62px;
  width:100vw;height:100vh;
  pointer-events:none;
  /* ★ v316 闸门：全站禁用 background 简写带 --canvas（会重置 background-image），必须用 background-color */
  background-color:var(--canvas);
  clip-path:inset(102px 14px 68px calc(100vw - 14px - var(--sub401w)) round 16px);
}
