/* ===================================================================
 * 卫未数智 · 风险告知卡模块 —— 三区块骨架适配（V3.5）
 * -------------------------------------------------------------------
 * 需求 1：模块内五个入口统一由**左侧功能栏**纵向承载，顶栏只留当前页。
 * 需求 3：告知卡画布统一 A3 横版 420×297mm。
 *
 * 本文件被五类告知卡页共同引用（index / confined / …），
 * 只做「骨架与内容栏的适配」，不改各页卡片自身的版式细节。
 *
 * ★ V3.4 修复（对齐全站其它模块 安标查评 / 成熟度 / 考核固本）：
 *   原写法 `body.app-page{display:flex;flex-direction:column}` 缺了
 *   `html,body{height:100%}` —— body 高度由内容决定，于是 `.rc-body` 的
 *   `height:calc(100vh - …)` 被主轴 `flex-basis:0` 吃掉、改由内容撑开（实测
 *   1481px ≫ 视口），由此产生两处可见缺陷：
 *     ① 左栏（`.app-side` 高仅 452px）**不满高**，下方露出页面底色；
 *     ② 左栏 `position:sticky; top:--top-h` 而滚动容器就是 .rc-body 自身，
 *        静态位置(0) < top(56) → 被下推 56px，左栏顶边比内容栏低一整条。
 *
 * ★ V3.5 收敛为**全站统一写法**（与 mgt-sys/standard、empower/assess 完全同构）：
 *   `html,body{height:100%}` + `body.app-page{display:flex;flex-direction:column}`
 *   + `.rc-body{flex:1;min-height:0;height:auto}` —— 骨架高度由 flex 自动吃掉
 *   「顶栏之外的剩余空间」，**不写死任何 `calc(100vh - …)`**：
 *     · 顶栏在窄屏换行变高时自动适配，无需维护常量；
 *     · 左栏 `height:100%` → 与内容栏严格等高、顶边对齐；
 *     · 内容栏是唯一纵向滚动体，页面 `scrollHeight === innerHeight`。
 * =================================================================== */

/* ---------- 全站纸张令牌（A3 横版）---------- */
:root {
  --a3-w: 420mm;   /* A3 横版宽 = 1587px @96dpi */
  --a3-h: 297mm;   /* A3 横版高 = 1123px @96dpi */
}

/* ---------- 控制台全屏工作区：顶栏固定，骨架占满剩余高度 ---------- */
html, body { height: 100%; }
body.app-page { display: flex; flex-direction: column; min-height: 100vh; }

.rc-body {
  position: relative;
  flex: 1; min-height: 0; height: auto;
  overflow: hidden;              /* 内容栏内部滚动，页面自身不滚动 */
  /* 与顶栏共用同一条轨道（components.css §2.0.2） */
}

/* 内容栏：唯一纵向滚动体；本模块卡片宽 420mm，横向溢出交由 .page-wrap 处理 */
.rc-main {
  height: 100%; min-height: 0;
  overflow-y: auto; overflow-x: hidden;
  padding-top: var(--sp-4);
  padding-bottom: var(--sp-7);
  min-width: 0;
}

/* 内容栏内的各区块不再自居中（轨道已由外层 .app-shell 提供） */
.rc-main .top-hub,
.rc-main .preview-bar,
.rc-main .panel,
.rc-main .page-wrap,
.rc-main .file-warn,
.rc-main.portal {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}
/* portal 页（风险可视化）作为内容栏时，沿用骨架内边距 */
.rc-main.portal { margin-top: 0; margin-bottom: 0; padding-left: 0; padding-right: 0; }

/* ================= 需求 3：告知卡统一 A3 横版 420×297mm =================
 * 铁律：**卡片自身的物理尺寸恒为 420×297mm**（打印/导出即 A3 一页），
 *       屏幕预览时由 .page-wrap 承载整体等比缩放 —— 缩放只作用于
 *       transform，不改 .page 的 mm 尺寸，故「所见即所得」。
 *
 *   真实尺寸（mm） ──┐
 *                    ├─ 屏幕：transform: scale(变量) → 适配内容栏宽度
 *                    └─ 打印：@page A3 landscape → 1:1 落纸
 *        宽度基准 --a3-w 供 fitZoom() 计算缩放比。 */
.page {
  width: var(--a3-w);
  height: var(--a3-h);
  min-height: var(--a3-h);
  max-height: var(--a3-h);
  margin: 0 auto;
  transform-origin: top left;   /* 缩放锚点固定左上，便于按容器宽算偏移 */
}

/* 承载缩放后的画布：高度由 JS 按缩放比同步，避免留白 */
.page-wrap { overflow-x: auto; padding: var(--sp-4) 0 var(--sp-6); }

/* 面板 / 预览条在骨架内贴内容栏左缘 */
.rc-main .preview-bar { padding-left: 0; padding-right: 0; }

/* 触屏：内容栏内边距收窄；左栏转抽屉（fixed 浮层），骨架回归整页滚动 */
@media (max-width: 992px) {
  .rc-body {
    flex: none;
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  .rc-main {
    height: auto;
    overflow: visible;
    padding-left: var(--sp-3);
    padding-right: var(--sp-3);
  }
}

/* ---------- 打印：A3 横向单页，1:1 落纸 ---------- */
@media print {
  @page { size: A3 landscape; margin: 0; }
  html, body { height: auto; }
  body.app-page { display: block; min-height: 0; }
  .rc-body { display: block; flex: none; height: auto; overflow: visible; }
  .rc-main { padding: 0; overflow: visible; height: auto; }
  .app-side { display: none; }
  .page-wrap { overflow: visible; padding: 0; }
  .page { margin: 0; transform: none !important; } /* SPEC-EXCEPT: 打印 */
}
