
  /* =====================================================================
     弹窗尺寸约束（手机 / 平板 / APK 通用）
     规则：任何弹窗最高只占 80% 可视高度（上下各留 10%，居中显示），
           标题栏（含关闭 ×）常驻在弹窗顶部，只有正文区域内部滚动，
           这样无论内容多长，标题与关闭按钮始终看得见、点得到。
     ===================================================================== */
  /* 窄屏（手机/平板竖屏）以及矮窗口（手机横屏）均生效 */
  @media (max-width:820px), (max-height:560px) {
    /* 遮罩本身不再滚动，滚动交给弹窗内部 */
    .sig-modal, .share-modal, .hcd-modal-mask { overflow: hidden; }

    /* sig-modal 系列（签名/分享/AI绘画/转换器/软键盘/计算器/倒计时/点名/协作/云端/语言/关于…） */
    .sig-modal .sig-dialog {
      max-height: 80vh !important;
      max-height: 80dvh !important;
      display: flex !important;
      flex-direction: column !important;
      /* 正常情况内部 .sig-dialog-body 负责滚动；个别没有 body 包裹的弹窗整体也可滚兜底 */
      overflow-x: hidden !important;
      overflow-y: auto !important;
    }
    .sig-modal .sig-dialog > * { flex: 0 0 auto; }
    .sig-modal .sig-dialog > .sig-dialog-title { position: sticky; top: 0; z-index: 6; }
    .sig-modal .sig-dialog > .sig-dialog-body {
      flex: 1 1 auto !important;
      min-height: 0 !important;
      max-height: none !important;
      overflow-y: auto !important;
      overscroll-behavior: contain;
      -webkit-overflow-scrolling: touch;
    }
    #aiPaintModal .ai-tpl-chips { max-height: none !important; overflow: visible; }

    /* hcd 通用对话框（hcAlert/hcConfirm/hcPrompt） */
    .hcd-modal-mask .hcd-dialog {
      max-height: 80vh !important;
      max-height: 80dvh !important;
      display: flex !important;
      flex-direction: column !important;
      overflow-x: hidden !important;
      overflow-y: auto !important;
    }
    .hcd-modal-mask .hcd-dialog > * { flex: 0 0 auto; }
    .hcd-modal-mask .hcd-dialog > .hcd-dialog-title { position: sticky; top: 0; z-index: 6; }
    .hcd-modal-mask .hcd-dialog > .hcd-dialog-body {
      flex: 1 1 auto !important;
      min-height: 0 !important;
      max-height: none !important;
      overflow-y: auto !important;
      overscroll-behavior: contain;
      -webkit-overflow-scrolling: touch;
    }
    .hcd-modal-mask .hcd-dialog > .hcd-dialog-actions { flex: 0 0 auto; }

    /* share-modal 系列（页面管理/历史/图层/背景设置…）：由 JS 拆出常驻标题栏 + 可滚动正文 */
    .share-modal .share-modal-content {
      max-height: 80vh !important;
      max-height: 80dvh !important;
      display: flex !important;
      flex-direction: column !important;
      overflow-x: hidden !important;
      overflow-y: auto !important;
    }
    .share-modal .share-modal-content > .hc-dlg-head {
      flex: 0 0 auto;
      position: relative;
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 0 0 8px;
      background: var(--surface, #fff);
      z-index: 6;
    }
    .share-modal .share-modal-content > .hc-dlg-head h3 { margin: 0 !important; flex: 1 1 auto; min-width: 0; }
    .share-modal .share-modal-content > .hc-dlg-head > .share-modal-close { position: absolute; top: -14px; right: -8px; }
    .share-modal .share-modal-content > .hc-dlg-scroll {
      flex: 1 1 auto !important;
      min-height: 0 !important;
      overflow-y: auto !important;
      overscroll-behavior: contain;
      -webkit-overflow-scrolling: touch;
    }
    /* 画笔设置悬浮胶囊同样限高，避免小屏溢出屏幕 */
    .bs-capsule { max-height: 80vh !important; max-height: 80dvh !important; overflow-y: auto !important; -webkit-overflow-scrolling: touch; }
    .bs-capsule .bs-capsule-head { position: sticky; top: -8px; z-index: 6; background: var(--card-bg, #fff); }
    /* 软键盘/计算器「画布悬浮胶囊」限高：小屏溢出时内部滚动、标题栏吸顶 */
    .tool-cap { max-height: 80vh !important; max-height: 80dvh !important; overflow-y: auto !important; -webkit-overflow-scrolling: touch; }
    .tool-cap .tool-cap-head { position: sticky; top: -10px; z-index: 6; background: var(--card-bg, #fff); }

    /* 电磁笔测试全屏胶囊：窄屏/竖屏内容显示不全时可在胶囊内左滑（横向滚动） */
    .pt-fs-hud { max-width: 96vw !important; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; touch-action: pan-x; scrollbar-width: thin; }
    .pt-fs-hud::-webkit-scrollbar { height: 4px; }
    .pt-fs-hud > * { flex: 0 0 auto; }
  }
  /* ---- APK（Android 内置 WebView）命中相同规则（桌面逻辑宽度也适用） ---- */
  body.apk .sig-modal, body.apk .share-modal, body.apk .hcd-modal-mask { overflow: hidden; }
  body.apk .sig-modal .sig-dialog {
    max-height: 80vh !important; max-height: 80dvh !important;
    display: flex !important; flex-direction: column !important; overflow: hidden !important;
  }
  body.apk .sig-modal .sig-dialog > * { flex: 0 0 auto; }
  body.apk .sig-modal .sig-dialog > .sig-dialog-title { position: sticky; top: 0; z-index: 6; }
  body.apk .sig-modal .sig-dialog > .sig-dialog-body {
    flex: 1 1 auto !important; min-height: 0 !important; max-height: none !important;
    overflow-y: auto !important; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
  }
  body.apk #aiPaintModal .ai-tpl-chips { max-height: none !important; overflow: visible; }
  body.apk .tool-cap { max-height: 80vh !important; max-height: 80dvh !important; overflow-y: auto !important; -webkit-overflow-scrolling: touch; }
  body.apk .tool-cap .tool-cap-head { position: sticky; top: -10px; z-index: 6; background: var(--surface, var(--card-bg, #fff)); }
  body.apk .hcd-modal-mask .hcd-dialog {
    max-height: 80vh !important; max-height: 80dvh !important;
    display: flex !important; flex-direction: column !important; overflow: hidden !important;
  }
  body.apk .hcd-modal-mask .hcd-dialog > * { flex: 0 0 auto; }
  body.apk .hcd-modal-mask .hcd-dialog > .hcd-dialog-title { position: sticky; top: 0; z-index: 6; }
  body.apk .hcd-modal-mask .hcd-dialog > .hcd-dialog-body {
    flex: 1 1 auto !important; min-height: 0 !important; max-height: none !important;
    overflow-y: auto !important; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
  }
  body.apk .share-modal .share-modal-content {
    max-height: 80vh !important; max-height: 80dvh !important;
    display: flex !important; flex-direction: column !important;
    overflow-x: hidden !important; overflow-y: auto !important;
  }
  body.apk .share-modal .share-modal-content > .hc-dlg-head {
    flex: 0 0 auto; position: relative; display: flex; align-items: center; gap: 8px; padding: 0 0 8px;
    background: var(--surface, #fff); z-index: 6;
  }
  body.apk .share-modal .share-modal-content > .hc-dlg-head h3 { margin: 0 !important; flex: 1 1 auto; min-width: 0; }
  body.apk .share-modal .share-modal-content > .hc-dlg-head > .share-modal-close { position: absolute; top: -14px; right: -8px; }
  body.apk .share-modal .share-modal-content > .hc-dlg-scroll {
    flex: 1 1 auto !important; min-height: 0 !important;
    overflow-y: auto !important; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
  }
  body.apk .bs-capsule { max-height: 80vh !important; max-height: 80dvh !important; overflow-y: auto !important; }
  body.apk .bs-capsule .bs-capsule-head { position: sticky; top: -8px; z-index: 6; background: var(--card-bg, #fff); }
  body.apk .pt-fs-hud { max-width: 96vw !important; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: thin; }
  body.apk .pt-fs-hud::-webkit-scrollbar { height: 4px; }
  /* 批注模式下隐藏左上角按钮：移动端已生效，APK 补一条高优先级兜底（桌面端不变） */
  body.apk.annotating #showToolbarBtn,
  body.apk-kiosk-ui.annotating #showToolbarBtn { display: none !important; }
  /* =====================================================================
    页面管理 / 新建切换 / 历史记录 / 图层管理：胶囊化（.tool-cap，同软键盘胶囊）
    宽度与软键盘一致（min(460px, 视口-32)）；拖拽/置顶/开合记忆由既有 tool-cap 体系负责
    ===================================================================== */
  #pageModal.tool-cap,
  #newSwitchModal.tool-cap,
  #historyModal.tool-cap,
  #layersModal.tool-cap { width: min(460px, calc(100vw - 32px)); }
  #pageModal.tool-cap .tool-cap-body > span,
  #newSwitchModal.tool-cap .tool-cap-body > span,
  #historyModal.tool-cap .tool-cap-body > span,
  #layersModal.tool-cap .tool-cap-body > span { flex: 0 0 auto; }
