/* 导出 PDF 用的公共打印样式 —— 只在 @media print 生效，屏幕上完全不影响。
   resume.html 有自己成熟的一套打印规则，不引这个文件。

   要解决的问题：其余页面原本没有任何打印样式，直接导出会把导航栏、
   悬浮按钮、「跳到主要内容」这类只在屏幕上有意义的东西印进纸里，
   滚动驱动的区块还会停在动画中间态。 */
@media print {
  /* 只在屏幕上有用的操作件，纸上一律不要 */
  .skip, .nav-shell, .nav, .topbar, .case-topbar, .project-nav,
  .back-top, .portfolio-back-button, .gallery-buttons, .bar,
  .hero-actions, .no-print {
    display: none !important;
  }

  /* 滚动进入动画：导出时元素可能停在 opacity:0 的初始态，
     那样整页是空白的。强制显示，且关掉过渡免得渲染时序影响截取。 */
  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
  }

  /* global-loader.js 注入的全屏遮罩 —— 它是 position:fixed 且不透明，
     导出时若还没揭幕，整份 PDF 就是一片灰。必须无条件干掉。 */
  .global-page-loader {
    display: none !important;
  }
  html.global-loading {
    overflow: visible !important;
  }

  /* sticky 在分页介质里会把元素钉在某页顶部反复出现。
     只解掉确实用了 sticky 的容器，不用 * 通配 —— 那会连带
     破坏所有依赖 absolute 定位的装饰元素。 */
  .nav-shell, .project-sticky, .case-topbar, .hero-stage,
  #stageFlow .steps, .story-list {
    position: static !important;
  }

  /* 滚动驱动区块靠高度占位（如 height:320vh）撑出滚动距离，
     纸上会变成大片空白页 */
  .project-track {
    height: auto !important;
  }

  /* 大块内容尽量不被腰斩；但不要整块 avoid —— 比一页高的区块
     会被整体推到下一页，在上一页留下大片空白（简历页踩过这个坑）。 */
  figure, img, video, table, blockquote {
    break-inside: avoid;
  }
  h1, h2, h3, h4 {
    break-after: avoid;
  }

  /* 图片不能超出纸宽，否则右侧被裁掉 */
  img, video, svg {
    max-width: 100% !important;
    height: auto !important;
  }

  /* 视频在纸上只是一帧封面，没有 poster 就是黑块，不如不印 */
  video {
    display: none !important;
  }

  /* 深色背景区块打印会吃掉大量墨、且文字对比度反而下降 */
  body {
    background: #fff !important;
  }

  /* 保留品牌色与配图，默认省墨模式会把它们冲淡 */
  * {
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }
}
