/* ============================================================
   인쇄 (→ PDF 저장) 전용 스타일

   ★PDF 생성 라이브러리를 넣지 않는다.★ puppeteer 계열은 의존성이 수십 개로 늘고,
   사내망 오프라인 설치와 한글 폰트가 모두 부담이다. 브라우저 인쇄는 OS 폰트를 쓰고
   의존성이 0이며, 부서장이 이미 쓰는 방법이다(파일 → 인쇄 → PDF 로 저장).

   대상은 AI 성과분석 보고서지만, 규칙은 전 화면에 공통으로 건다 -
   화면마다 인쇄 규칙을 따로 두면 새 화면이 인쇄되지 않는 사실을 아무도 모른다.

   색은 tokens.css 의 변수만 쓴다. 여기서 색을 새로 정의하면 화면과 인쇄물의
   상태 배지 색이 갈라져, 종이와 모니터를 대조하는 사람이 다른 판정을 내린다.
   ============================================================ */
@media print {
  /* ---------- 지면 ---------- */
  @page {
    size: A4 portrait;
    margin: 12mm 10mm;
  }

  /*
     셸은 화면에서 grid + height:100vh + overflow:hidden 이다. 그대로 두면
     첫 화면 한 장만 인쇄되고 나머지가 잘린다 - 인쇄에서는 흐름 문서로 되돌린다.
  */
  html, body {
    height: auto;
    background: var(--bg-surface);
  }
  .shell,
  .shell.is-collapsed {
    display: block;
    height: auto;
    overflow: visible;
    grid-template-columns: none;
  }
  .main {
    display: block;
    overflow: visible;
    background: var(--bg-surface);
  }
  .page {
    overflow: visible;
    height: auto;
    flex: none;
  }
  .page__inner {
    padding: 0;
    max-width: none;
    margin: 0;
  }

  /* ---------- 숨김 : 조작 요소는 종이에 남을 이유가 없다 ---------- */
  .sidenav,
  .topbar,
  .toast-root,
  .modal-root,
  .drawer-root,
  .filterbar,
  .presetbar,
  .pager,
  .tabs,
  .page-head__actions,
  .section-note,
  .btn,
  .iconbtn,
  .inline-ico-btn,
  .syscols,
  /*
   * 도움말 아이콘은 종이에 남길 것이 없다 - 말풍선은 hover 로만 열리므로 인쇄물에는
   * 뜻 없는 동그라미만 찍힌다. ★도움말로 접어도 되는 문구와 접으면 안 되는 문구를
   * 여기서 갈라야 한다.★ 표본 고지(.rule-hint)·검증 표시(.vmark)처럼 종이에 반드시
   * 남아야 하는 문장은 도움말이 아니라 본문으로 둔다(아래 '정성 구획' 주석 참조).
   */
  .help,
  .helptip,
  .no-print {
    display: none !important;
  }

  /* 표 위 도구줄은 건수 안내를 담고 있어 남기되, 그 안의 버튼만 지운다. */
  .tbl-toolbar .btn { display: none !important; }

  /* ---------- 표 ---------- */
  /*
     페이지가 넘어가도 머리행이 반복되어야 어느 열이 무엇인지 읽을 수 있다.
     .tbl th 는 화면에서 position:sticky 라 그대로 두면 반복이 깨지므로 함께 되돌린다.
  */
  .tbl thead { display: table-header-group; }
  .tbl tfoot { display: table-footer-group; }
  .tbl th {
    position: static;
    background: var(--bg-inset);
    color: var(--text-muted);
  }
  /* 가로 스크롤은 종이에 없다 - 잘린 열이 그대로 사라지므로 펼쳐서 인쇄한다. */
  .tablewrap {
    overflow: visible !important;
    border-radius: 0;
  }
  /*
     화면에서는 칸이 줄을 바꾸지 않고 표가 가로로 스크롤한다(components.css). 종이에는
     스크롤이 없으므로 그 두 가지를 **여기서 반드시 되돌린다** - min-width 를 남기면 표가
     지면보다 넓어지고, nowrap 을 남기면 긴 캠페인명 한 줄이 그대로 지면을 넘어간다.
     둘 다 넘친 부분은 말없이 잘린다.
  */
  .tbl { font-size: 10.5px; width: 100%; min-width: 0 !important; }
  .tbl th, .tbl td { padding: 5px 6px; white-space: normal !important; }
  /*
     열 폭을 종이에 맞춘다. 화면용 인라인 width(예: 캠페인명 210px)를 그대로 두면 표가
     지면보다 넓어지고, 넘친 부분은 스크롤이 없는 종이에서 **말없이 잘린다** -
     오른쪽 끝의 성공율·최종계약금액이 통째로 사라져도 아무 표시가 남지 않는다.
  */
  .tbl th { width: auto !important; white-space: normal; }
  .tbl td { word-break: break-word; }
  /* 한 행이 페이지 경계에서 두 쪽으로 갈라지면 숫자와 라벨이 어긋나 보인다. */
  .tbl tr { break-inside: avoid; page-break-inside: avoid; }
  .tbl tbody tr:hover td { background: transparent; }

  /* ---------- 카드 · 블록 ---------- */
  .card {
    box-shadow: none;
    border: 1px solid var(--border-strong);
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .card + .card { margin-top: 10px; }
  .kpi,
  .note-warn, .note-info, .note-danger,
  .rank-line, .rp-op, .rp-own, .scope-banner, .ai-src, .rp-blk__t, .rp-li {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* ---------- 정성 구획은 종이에서도 서술과 고지가 함께 나온다 ----------
     ★검증 표시(.vmark)와 표본 고지(.rule-hint)가 인쇄에서 빠지면 안 된다.★
     "이 문장의 숫자가 검증됐는가" 와 "이 수치가 표본인가" 가 빠진 채 표만 남으면 읽는 사람이
     서술을 집계값과 같은 무게로 읽게 된다 - 그 오해를 막으려고 있는 표시다. 그래서 앞의
     서술 블록에서 페이지가 갈리지 않게 묶는다(break-inside). */
  .vmark {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  /* 서술과 그 밑의 고지가 서로 다른 쪽으로 갈리면 고지 없는 서술 한 장이 만들어진다. */
  .rp-op:last-child, .rp-own:last-child { break-after: avoid; page-break-after: avoid; }
  /* 절 제목만 페이지 맨 아래에 남는 것을 막는다. */
  .rp__h1, .rp__h2, .rp__title, .rp-blk__t { break-after: avoid; page-break-after: avoid; }
  /* 보고서는 공문서 결이다 - 표 머리는 회색, 비율 칸의 강조색은 종이에서 뺀다. */
  .rp .rate-cell { background: transparent; color: inherit; font-weight: inherit; }

  /* 선택된 보고서만 인쇄한다. 두 번째 보고서 앞에 빈 쪽을 만들지 않는다. */
  #an-report [role="tabpanel"][hidden] { display: none !important; }

  /* ---------- 색 보존 ---------- */
  /*
     상태 배지·미니바·순위 칩은 색 자체가 정보다. 기본 인쇄 설정은 배경색을 지우므로
     명시적으로 보존한다. 색값은 전부 tokens.css 변수이며 여기서 새로 정하지 않는다.
  */
  .status, .chip, .mk-tag, .kpi, .minibar, .minibar i,
  .rate-cell, .an-bar, .an-bar i, .tbl th, .tbl tfoot td, .tbl tr.total-row td,
  .note-warn, .note-info, .note-danger, .scope-banner, .vmark, .miss {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* ---------- 보고서 머리말 ---------- */
  /* 화면에서는 필터 아래에 붙어 있지만 종이에서는 이것이 보고서의 첫 줄이다. */
  .page-head { margin-bottom: 10px; }
  .page-head h2 { font-size: 16px; }
  a[href]::after { content: ""; }
}
