/* ================= v614：角色子画布窗口改造（工单 W614-01，7 条 UI 需求） =================
   配套 JS = js/src/141-subwin614.js（后置覆盖，既有片段一字未动）。
   ★ 本表必须挂在 17 / 41 / 42 之后（同选择器后置规则才赢；层叠顺序 = index.html 里 <link> 的位置）。
   ★ 既有样式表一字未动：全部是「同选择器后置规则覆盖」。

   七条需求 → 本表的落点：
     B) 主画布周边 UI 恢复显示（除 .aifab397）—— 盖掉 17-sub-canvas401.css:15-23 那条 display:none!important
     C) .aifab397 保持隐藏，但改「渐变」（opacity + pointer-events + transition，不用 display:none）
     D) 子画布开关动画：开 = 从右往左滑入 / 关 = 从左往右滑出（keyframes + JS 收尾见 141）
     E) 标题文字去掉 + 叉移进框内右上角（.sub401-x 定位；空标题条随 .sub614-xin614 收起）
     F) 内部框上移 + 边框加强（边框 2px + --line-strong；裁剪区顶部跟着上移，见文末）
     G) 取景缩小在 JS 里（141 的 sub401Fit401 包层），本表不参与
   ⚠️ 全站禁「background 简写带 --canvas」（v316 会重置 background-image）—— 本表不写底色。

   ⚠️ 几何联动（F 的连带影响，必须一起改）：
     原布局 = 容器顶 62px → 标题条 32px → 间隙 8px → 框顶 102px（41 号表把裁剪区顶部也钉成 102px）。
     本表把空标题条（.sub614-xin614 时）收起 ⇒ 只剩 frame 一个流内子项 ⇒ 框顶 = 62px。
     42-subfloat613.css 里 #sub401Stage613 的 clip-path 顶部 102px = 旧框顶 ⇒ 文末同选择器后置改成 62px，
     否则「画这块」与「边框」会错开 40px。 */

/* ---------- B：主画布周边 UI 全部恢复显示（除右下角 AI 圆钮） ----------
   display 值按各元素**原始口径**给（去 01~16 号表查过，不是一律 block）：
     .topbar(02) = flex / .zoom-pill(04) = flex / .zoom-pop(05) = flex /
     .layers(07) = flex / .dock(07) = flex / #mapBar(06) = flex / .layers-tab(07) = grid / .mini-map(04) = block
   :not([hidden]) —— 元素自己 [hidden]（用户关掉的小地图 / 非地图页的图层 / 非地图模式的地图栏）仍按老规矩藏，
   别把它们点亮。 */
body.sub401-on .topbar:not([hidden]),
body.sub401-on .zoom-pill:not([hidden]),
body.sub401-on .zoom-pop:not([hidden]),
body.sub401-on .layers:not([hidden]),
body.sub401-on .dock:not(#sliceDock):not([hidden]),
body.sub401-on #mapBar:not([hidden]){display:flex!important}
body.sub401-on .mini-map:not([hidden]){display:block!important}
body.sub401-on .layers-tab:not([hidden]){display:grid!important}

/* ---------- C：右下角 AI 对话圆钮 —— 保持隐藏，但改成「渐变」 ----------
   transition 挂在**基础** .aifab397 上（开 / 关两个方向都要过渡；只写在 body.sub401-on 里的话，
   关窗时那条规则一起失效 ⇒ 渐现就没了）。开窗 → opacity:0 + pointer-events:none；关窗自动回基础态 ⇒ 渐现。
   ⚠️ 不用 display:none（display 不参与过渡，会直接闪没）。 */
.aifab397{transition:opacity .28s ease,transform .15s,background .15s,color .15s,box-shadow .15s}
body.sub401-on .aifab397{display:grid!important;opacity:0!important;pointer-events:none!important}

/* ---------- E：去掉标题文字 + 叉移到框内（右上角内侧） ----------
   标题：75-sub-canvas401.js 每次打开都会写 #sub401Title 的 textContent（删 index.html 文字没用）⇒ 这里 display 收口。
   叉：#sub401Close 由 141 的 JS 搬进 .sub401-frame（监听器随节点走）⇒ 这里只定位到框内右上角。 */
.sub401-title{display:none!important}
.sub401-frame{position:relative}
.sub401-x{position:absolute!important;top:8px!important;right:8px!important;margin-left:0!important;z-index:6!important}
/* 空标题条整条收起（JS 搬运成功后才加 .sub614-xin614 ⇒ JS 没跑时标题条照旧挂着叉，窗口关得掉） */
body.sub401-on .sub401.sub614-xin614 .sub401-bar{display:none!important}

/* ---------- D：开关动画（开 = 从右往左滑入；关 = 从左往右滑出） ----------
   窗口右锚（right:14px）⇒ 右移「100% + 24px」= 整个滑出右缘。 */
@keyframes sub614In614{from{transform:translateX(calc(100% + 24px))}to{transform:translateX(0)}}
@keyframes sub614Out614{from{transform:translateX(0)}to{transform:translateX(calc(100% + 24px))}}
.sub401.sub614-in614{animation:sub614In614 .30s cubic-bezier(.4,0,.2,1) both}
.sub401.sub614-out614{animation:sub614Out614 .30s cubic-bezier(.4,0,.2,1) both}

/* ---------- F：内部框上移 + 边框加强 ----------
   上移：标题条收起后 .sub401 只剩 frame 一个流内子项 ⇒ 框从容器顶 62px 起铺到底（原来 62+32+8 = 102 起）——
         整体往上移 40px（用户「往上移一点」）。
   边框：1px --line → 2px --line-strong（用户「边框有点太弱」）。 */
.sub401-frame{border-width:2px;border-color:var(--line-strong)}

/* F（连带）：画布的裁剪区顶部从旧框顶 102px 改到新框顶 62px（同选择器后置覆盖 42-subfloat613.css） */
.sub401-stage613{clip-path:inset(62px 14px 68px calc(100vw - 14px - var(--sub401w)) round 16px)}
