/**
 * EduToolbox · 打印统一基线（print.css）
 * ============================================================================
 * 目标（产品原话）：「所有工具打印时都不要打印页头页脚，只打印工具生成的内容
 * 部分或工具原始打印参数部分」。落地为三条：
 *
 *   ① 站点外壳 —— 用户口中的「页头页脚」（顶栏 / 站点页脚 / 面包屑 / 详情页
 *      标题头 / 返回按钮）不出现：**本文件可 100% 达成**；
 *   ② 浏览器自带的页眉页脚（网址 / 标题 / 日期 / 页码）**CSS 关不掉**，只能在
 *      打印对话框里取消勾选：见下方「关于 ② 的真实结论」；
 *   ③ 纸上只留工具生成的内容，且尊重工具自己声明的打印参数（纸张尺寸/方向）。
 *
 * 关于 ② 的真实结论（2026-09-23 实测更正，旧注释是错的，别再照它改）：
 *   **浏览器自带页眉页脚（网址 / 标题 / 日期 / 页码）无法用 CSS 关掉**，开关在用户
 *   手里 —— Chromium 打印对话框里那个「页眉和页脚」勾选框说了算。
 *   ⚠️ 旧注释声称「margin 大于约 8mm 会重新触发页眉页脚、压到 6mm 就能挤掉」，
 *      这条已被 headless 实测推翻：A4 上同一份内容，margin 取 0 / 6 / 20mm 三档，
 *      displayHeaderFooter 打开带来的 PDF 体积增量分别是 +12.4 / +12.6 / +12.6 KB
 *      —— 三档下页眉页脚照画不误，6mm 并没有压制作用。
 *   所以我们改配遵循的原则是：
 *     · 站点外壳（真正的「页头页脚」：顶栏 / 站点页脚 / 面包屑）由本文件 §1 关掉；
 *     · 浏览器页眉页脚只能靠用户在打印对话框里取消勾选，站点侧不做无效承诺；
 *     · 这里的 6mm 保留下来另有用途：比 Chromium 默认（约 10mm）多留可打印区，
 *       同时给打印机 3~5mm 的物理不可打印区留安全边。
 *       ⚠️ 因此也别改成 margin:0 —— 有 24 个工具（姓名贴 / 座位表 / 田字格 /
 *          评语卡等）完全依赖这一点留白，归零后内容会顶到纸边被物理裁掉边框。
 *
 * 关于 ③ 的层叠顺序（决定了本文件必须最后加载）：
 *   本文件是 index.html 里最后一个 <link>，而工具自己的 @page 由 tool-adapter.js
 *   在运行时 appendChild 到 <head> —— 运行时注入一定更靠后，工具赢。
 *   且 @page 按属性逐条层叠：本文档只声明 margin，工具声明 size + margin 时，
 *   size 保住、margin 被工具覆盖。因此工具纸张尺寸永远不会被站点吃掉。
 *   （工具自己的 margin 会被 tool-adapter.js 统一钳到 6mm —— 这纯粹是为了统一
 *   可打印区，与页眉页脚无关；代价是丢失非对称 margin 的意图，已知且可接受。）
 *
 * 编写硬约束（历史事故，改动前务必读完）：
 *   ✗ 不要给 html / body 写 color、font-* 等「可继承」属性 —— 它们会穿过
 *     Shadow 边界，把 82 个 adapter 工具的文字全部刷成黑色。
 *     background 不可继承，所以写 background 是安全的。
 *   ✗ 不要写 .tool-root * 或 .container{...} 这类宽泛/后代选择器 —— 会打进
 *     native 工具（scoreboard / name-sticker）内部，破坏它们的布局。
 *   ✓ 容器选择器一律用「>」直接子代，精确命中站点外壳那一层。
 * ============================================================================
 */

/**
 * 站点级页规：只声明 margin，不碰 size
 * —— 6mm = 比 Chromium 默认（约 10mm）多留可打印区 + 给打印机物理不可打印区
 *    （3~5mm）留安全边。注意：它压不住浏览器页眉页脚，那是打印对话框的开关。
 */
@page { margin: 6mm; }

@media print {
  /* -------------------------------------------------------------------------
   * 1) 站点外壳：整块不打印
   *    全部走站点级选择器（Light DOM），不会穿透进工具的 Shadow DOM。
   * ---------------------------------------------------------------------- */
  .topnav,
  header#topnav,
  footer.footer,
  #backBtn,
  #detailContent > nav.breadcrumb,
  #detailContent > header.tool-run-header,
  #detailContent > div.tool-detail {
    display: none !important;
  }

  /* -------------------------------------------------------------------------
   * 2) 容器重置：去掉外壳留白，让工具内容从纸边开始排版
   *    必须用「>」直接子代：Bootstrap 的 .container 也被 native 工具内部复用，
   *    写成后代选择器会打进工具肚子里。
   * ---------------------------------------------------------------------- */
  #detailPage {
    padding-bottom: 0 !important;
  }
  #detailPage > .container {
    padding: 0 !important;
    margin: 0 !important;
    max-width: none !important;
    width: auto !important;
  }

  /* -------------------------------------------------------------------------
   * 3) 挂载容器：解除溢出裁剪与装饰
   *    .tool-iframe-wrap 带 overflow:hidden（layout.css），打印分页时会把
   *    超出一屏的内容整段裁掉，必须放开。
   *    ⚠️ 这里只写「不可继承」的盒模型/装饰属性；颜色与字体一律不碰，
   *       否则会穿透 Shadow 边界污染 82 个 adapter 工具。
   * ---------------------------------------------------------------------- */
  .tool-iframe-wrap,
  .tool-root {
    overflow: visible !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: #fff !important;
  }

  /* 纸张底色统一为白（background 不可继承，不会穿透进影子树） */
  html,
  body {
    background: #fff !important;
  }
}
