/* ═══════════════════════════════════════════════════════════════════════════
   print-report.css — 리포트 인쇄(PDF) 공통 보정
   ───────────────────────────────────────────────────────────────────────────
   [무엇을 하는 파일인가]
   사주·궁합·택일·성명학 리포트는 모두 어두운 화면 테마 위에서 만들어진다.
   그 색을 그대로 종이에 보내면 안 읽힌다. 이 파일이 "종이용 색"을 마지막에
   한 번 덮어써서, 어떤 화면 규칙이 남아 있든 인쇄물은 항상 읽히게 만든다.

   [왜 파일로 분리했나 — 2026-07-30]
   같은 인쇄 규칙이 리포트 4개 파일에 제각각 복사돼 있었고, 그 중 두 곳
   (사주·궁합·택일)에는 서로 모순되는 규칙이 앞뒤로 같이 들어 있었다.

     앞:  "종이는 밝게, 글자는 어둡게"      (배경 #f4f3f0 / 글자 #1a1a1a)
     뒤:  "화면과 똑같이 어두운 테마 유지"  (배경 #0f1115 · #14161b)

   CSS는 뒤에 선언된 쪽이 이긴다. 결과는 "어두운 배경 + 어둡게 강제된 글자",
   즉 본문이 통째로 안 보이는 리포트였고 그대로 고객에게 나갔다.
   규칙을 파일마다 복사해 두는 한 이 사고는 반복된다. 그래서 한 곳에 모은다.

   [쓰는 법]
   각 리포트 HTML의 </head> **바로 앞**에 이 한 줄을 넣는다. 반드시 그 문서의
   모든 <style>보다 뒤여야 이긴다.

       <link rel="stylesheet" href="/print-report.css" media="print">

   [바꾸기 전에]
   인쇄 CSS는 화면에서 절대 드러나지 않는다. 짐작으로 고치지 말고 반드시
   렌더해서 눈으로 본다. 명암비 검사까지 같이 돈다.

       npm start
       node tools/render-print.js --page saju --port 4000
   ═══════════════════════════════════════════════════════════════════════════ */

@media print {

  /* ── 1. 화면용 배경을 전부 걷어낸다 ────────────────────────────────────────
     하나라도 남으면 그 위의 어두운 글자와 겹쳐 "검정 위 검정"이 된다.
     배경은 색이 아니라 테두리로 구분한다. */
  *, *::before, *::after {
    background-color: transparent !important;
    background-image: none !important;
    box-shadow: none !important;
    text-shadow: none !important;
    filter: none !important;
  }
  html, body { background-color: #f4f3f0 !important; }

  /* 위 `*` 규칙은 우선순위가 가장 낮아서 ID가 들어간 선택자한테는 진다.
     각 리포트가 ID로 배경을 지정한 컨테이너를 여기에 같은 무게로 적어 준다.
     ★ 이 목록을 믿지 말 것 — 진짜 안전장치는 render-print.js의 명암비 검사다. */
  #app, #reportZone, #resultArea, #resultSection, #detailSection, #detailPanel,
  #scholarSection, #expertSection, #qnaSection .qna-card, #palaceCards .myeongban-card,
  .print-area, .panel-card, .daewoon-wrap, .daewoon-chart-wrap, .sewoon-year-card,
  .geok-banner, .day-cell, .day-cell.gold, .day-cell.warn {
    background-color: transparent !important;
    background-image: none !important;
  }

  /* ── 2. 테두리는 종이에서 보이는 회색으로 ─────────────────────────────── */
  .panel, .panel-card, .card, .qna-card, .easy-card, .detail-card, .daeun-card,
  .ai-card, .ai-hero-card, .ai-final-card, .ai-action-cell, .ai-domain-cell,
  .daily-guide-collapse, .sewoon-year-card, .day-cell, .geok-banner,
  .saju-pillar-card, .saju-char-box, .upsell-item,
  table, th, td, hr { border-color: #c9c4b8 !important; }

  /* ── 3. 글자는 종이 기준 농도로 ───────────────────────────────────────────
     인라인으로 색을 준 것(오행 한자·차트 라벨)은 이미 종이용 중간 톤이라
     :not()으로 비켜 가서 색을 살린다. */
  body,
  p:not([style*="color"]), span:not([style*="color"]), div:not([style*="color"]),
  li:not([style*="color"]), td:not([style*="color"]), th:not([style*="color"]),
  h1:not([style*="color"]), h2:not([style*="color"]), h3:not([style*="color"]),
  h4:not([style*="color"]), h5:not([style*="color"]), h6:not([style*="color"]),
  label, b, strong, em, small, a { color: #1a1a1a !important; }

  /* [2026-07-30 추가] 위 :not([style*="color"])의 구멍을 막는다.
     "인라인 색은 이미 종이용"이라고 가정했는데, 그건 사주 화면의 오행 색만 그렇다.
     인텔리전스·코칭·데일리는 화면 테마 토큰을 그대로 인라인에 박아 쓴다 —
       color:var(--muted)  = #9aa0ac  (종이에서 명암비 2.37, 안 읽힘)
       color:#c9a84c       = 금색     (2.06, 안 읽힘)
       color:#e8d9a8       = 옅은 금색
     토큰 이름과 실제 값 양쪽으로 잡는다. 배경·테두리에 쓰인 곳까지 같이 걸리지만
     배경은 어차피 위에서 걷어내므로 글자만 짙어질 뿐 손해가 없다.
     ※ --ink는 배경용이라 여기 넣지 않는다. 색으로 뒤집으면 종이색 글자가 된다. */
  /* [2026-07-31] 하나씩 발견될 때마다 더하다가는 끝이 없다. 화면에서 쓰는 밝은 회색
     팔레트를 통째로 모아 한 번에 막는다. 목록은 아래 명령으로 다시 뽑을 수 있다.
       grep -ohE 'color:\s*#[0-9a-fA-F]{6}' public/*.html | sort | uniq -c | sort -rn
     ※ 새 화면에서 밝은 회색을 인라인으로 쓰면 여기에 추가해야 한다. */
  [style*="var(--muted)"], [style*="var(--text)"], [style*="var(--sub)"], [style*="var(--text2)"],
  [style*="#9aa0ac"], [style*="#8b909c"], [style*="#767c88"], [style*="#b7bcc6"],
  [style*="#c9cdd6"], [style*="#cfd3da"], [style*="#e9e9ee"], [style*="#e8e8ec"],
  [style*="#e7e3dc"], [style*="#cbd5e1"], [style*="#e2e8f0"], [style*="#c5a880"], [style*="#e3d2b0"] {
    color: #3a4050 !important;
  }
  [style*="var(--gold)"], [style*="var(--gold-pale)"], [style*="var(--gold-deep)"],
  [style*="#c9a84c"], [style*="#e8d9a8"], [style*="#a07830"], [style*="#e0a85c"] {
    color: #6b6250 !important;
  }
  /* 화면에서 흰색에 가깝게 강조하던 글자(#f7f6f2). 종이에서는 명암비 1.03 — 백지다. */
  [style*="#f7f6f2"], [style*="#f2e6c2"], [style*="#f0dca0"] { color: #14171d !important; }
  /* 인라인이 아니라 클래스로 금색을 준 곳(일진의 「띠별 상세」 접힘 제목 등) */
  summary, .syn summary, details > summary { color: #6b6250 !important; }

  /* ── 4. 표지(1쪽) ─────────────────────────────────────────────────────────
     [2026-07-30 지시] 리포트마다 표지가 제각각이었다. 어떤 건 한 쪽을 다 쓰는
     표지가 있고, 어떤 건 표지가 아예 없고, 어떤 건 작은 머리띠만 있었다.
     그래서 2쪽도 어디는 소개가 나오고 어디는 그냥 빈 여백이었다.
     여기서 규격을 하나로 세운다 — 리포트는 HTML에 표지 한 덩어리만 두면 된다.

       1쪽 = 표지          .print-only-cover  (+ cover-mid 또는 cover-top)
       2쪽 = 서비스 소개   .print-upsell
       3쪽~ = 본문

     [2026-07-30 최종 지시] **모든 표지를 세로·가로 다 가운데 맞춤**으로 통일한다.
     한때 궁합만 "세로는 맨 위"로 두었으나, 리포트마다 표지가 달라 보이는 것 자체가
     통일감을 해쳐 최종적으로 전부 가운데로 정했다.
     그래서 cover-mid / cover-top 이라는 구분 자체를 없앤다 — 클래스가 남아 있어도
     동작이 같으므로 화면 쪽 HTML을 고칠 필요가 없다.
     ───────────────────────────────────────────────────────────────────── */
  /* [2026-07-30] 표지 다음에 빈 쪽이 하나 더 생기던 문제.
     원인: 표지 높이(min-height)를 A4 인쇄 가능 높이보다 크게 잡아 두고
     그 뒤에 다시 쪽을 끊었다. 표지가 이미 한 쪽을 넘겨버린 뒤 또 끊으니 빈 쪽이 남는다.
     여백(@page margin 15mm×2)을 뺀 실제 인쇄 높이는 267mm이므로 그보다 넉넉히 작게 잡는다.
     ※ 이 값을 다시 키우면 빈 쪽이 되살아난다. */
  .print-only-cover:not(.print-upsell) {
    display: flex !important; flex-direction: column;
    align-items: center !important;          /* 가로 가운데 — 네 리포트 공통 */
    text-align: center !important;
    min-height: 230mm; max-height: 250mm;
    padding: 0 10mm !important; margin: 0 !important;
    overflow: hidden;
    page-break-after: always; break-after: page;
    page-break-inside: avoid; break-inside: avoid;
  }
  /* 세로 가운데 — 모든 표지 공통. cover-mid·cover-top 어느 쪽이 붙어 있어도 같다. */
  .print-only-cover.cover-mid,
  .print-only-cover.cover-top { justify-content: center !important; padding-top: 0 !important; }

  .print-only-cover h1 {
    font-family: 'Noto Serif KR', serif; font-size: 32px; font-weight: 900;
    letter-spacing: 1px; color: #14171d !important; margin: 0 0 16px !important;
  }
  .print-only-cover p { margin: 0 !important; }
  .print-only-cover .cover-sub { font-size: 15px; color: #4a5060 !important; letter-spacing: 1px; margin: 0 0 26px !important; }
  .print-only-cover .cover-org {
    font-family: 'Noto Serif KR', serif; font-size: 16px; font-weight: 800;
    letter-spacing: 3px; color: #8a6522 !important;
  }

  /* ── 5. 서비스 소개(2쪽) — 네 리포트 모두 같은 자리, 같은 모양 ─────────── */
  .print-upsell {
    display: flex !important; flex-direction: column;
    justify-content: flex-start !important; align-items: stretch !important;
    text-align: left !important;
    min-height: auto !important; padding: 26mm 10mm 0 !important; margin: 0 !important;
    page-break-after: always; break-after: page;
  }
  .print-upsell h2 { color: #14171d !important; font-family: 'Noto Serif KR', serif; font-size: 24px; line-height: 1.4; margin: 0 0 14px !important; }
  .print-upsell .upsell-desc,
  .print-upsell .upsell-item span { color: #4a5060 !important; }
  .print-upsell .upsell-desc { font-size: 13px; line-height: 1.8; margin: 0 0 28px !important; }
  .print-upsell .upsell-eyebrow,
  .print-upsell .upsell-item b,
  .print-upsell .upsell-cta { color: #8a6522 !important; }
  .print-upsell .upsell-grid { display: grid !important; grid-template-columns: 1fr 1fr; gap: 14px; margin: 0 0 30px !important; }
  .print-upsell .upsell-item { border: 1px solid #c9c4b8 !important; border-radius: 10px; padding: 14px 16px; }

  /* 금색 강조는 종이에서 읽히는 짙은 금색으로 통일 */
  .ai-card-title, .ai-action-cell .lbl, .ai-domain-cell .val,
  .ai-meta-note, .cover-org { color: #6b6250 !important; }
  .ai-final-card, .daily-guide-text { color: #1a1a1a !important; }
  .daily-guide-collapse.collapsed { display: block !important; }  /* 접힘과 무관하게 인쇄엔 펼쳐 나간다 */

  /* ── 5. 등급 배지 — 화면에서는 어두운 배경 + 밝은 글자였다. 뒤집는다 ──── */
  .grade-good { background-color: #e7f4ec !important; color: #14532d !important; border-color: #9ec9b0 !important; }
  .grade-mid  { background-color: #eeeff1 !important; color: #33383f !important; border-color: #c2c6cd !important; }
  .grade-bad  { background-color: #fbeceb !important; color: #7f1d1d !important; border-color: #dda9a5 !important; }

  /* ── 6. 색 자체가 정보인 요소는 배경을 되살린다 ─────────────────────────
     왕쇠 막대는 길이와 색으로 세기를 읽는다. 지우면 정보가 사라진다. */
  .wang-soe-bar-track { background-color: #e4e2dc !important; border-color: #c9c4b8 !important; }
  .wang-soe-blue  { background-image: linear-gradient(90deg,#38bdf8,#6366f1) !important; }
  .wang-soe-green { background-image: linear-gradient(90deg,#4ade80,#16a34a) !important; }
  .wang-soe-amber { background-image: linear-gradient(90deg,#fbbf24,#f59e0b) !important; }
  .wang-soe-red   { background-image: linear-gradient(90deg,#f87171,#dc2626) !important; }
  .wang-soe-bar-fill { color: #0a0a0a !important; }
  #qnaSection .qna-num { background-color: #c9a227 !important; color: #1a1712 !important; }

  /* ── 7. 화면 위에 떠 있는 것들은 종이에서 빈 덩어리로만 남는다 ────────── */
  #expertGateModal, .modal, .gate-blur-wrap, .ai-spinner, #langSwitcher,
  [style*="position:fixed"], [style*="position: fixed"] { display: none !important; }

  /* 워터마크는 저작권 표시라 예외. 종이에서 보이는 농도로 낮춰 둔다. */
  .watermark-layer { display: grid !important; opacity: .055 !important; }
  .watermark-layer span { color: #2b303a !important; }

  /* 버튼은 종이에서 누를 수 없다. 등급 배지처럼 정보를 담은 것만 남긴다.
     (사주 화면에만 있던 규칙인데, 궁합에도 인쇄에 남는 버튼이 있어 공통으로 올린다) */
  button:not(.grade-good):not(.grade-mid):not(.grade-bad),
  input[type="checkbox"], input[type="date"] { display: none !important; }

  /* ── 7-2. 쪽 경계에서 카드가 잘리지 않게 ────────────────────────────────
     [2026-07-30 지시] "잘렸다는 느낌을 주면 진짜 저질의 상품이다."
     동시에 "텅 빈 말도 안 되는 공백을 만들면 안 된다."
     두 요구는 서로 밀기 때문에 크기로 나눈다.

       · 한 쪽에 넉넉히 들어가는 작은 카드(대략 A4 절반 이하)
         → 절대 쪼개지 않는다. 다음 쪽으로 통째로 넘긴다.
           넘겨도 남는 공백이 반 쪽을 넘지 않으므로 어색하지 않다.

       · 한 쪽의 절반을 넘는 큰 덩어리(대운 해설·용어 부록·대운 표 등)
         → 쪼개지 않으면 앞 쪽이 통째로 비어버린다. 그래서 자연스럽게 이어가되
           제목만 홀로 남거나 마지막 한 줄만 떨어지는 것을 막는다.

     ※ 이 균형을 바꿀 때는 반드시 tools/render-print.js로 다시 뽑아
       "쪽 경계에서 잘리는 카드"와 빈 공백을 함께 확인할 것.
     ───────────────────────────────────────────────────────────────────── */
  /* .expert-block — 카드 하나가 A4보다 클 때 "어디서 끊을지"를 정해 주는 단위.
     [2026-07-31] 성명학 전문가 모드에서 총점 표 한가운데가 갈려, 다음 쪽에
     「합계 8」 한 줄만 남는 조각 페이지가 나왔다. 덩어리째 넘기게 한다. */
  .expert-block,
  .easy-card, .qna-card, .daeun-card, .ai-card, .ai-action-cell, .ai-domain-cell,
  .myeongban-card, .term-block, .rank-card, .day-cell, .sewoon-year-card,
  .upsell-item, tr, thead, .daeun-line-chart, #daeunLineChartWrap {
    break-inside: avoid !important;
    page-break-inside: avoid !important;
  }

  /* 큰 덩어리는 이어가되, 보기 흉하게 끊기는 것만 막는다. */
  .panel, section, table, .detail-card {
    break-inside: auto; page-break-inside: auto;
    orphans: 3; widows: 3;          /* 한두 줄만 떨어져 남는 것을 막는다 */
  }
  /* 제목이 본문과 떨어져 혼자 쪽 끝에 남는 일을 막는다. */
  h1, h2, h3, h4, .section-title, .term-block-title, .card-title, .page-title-compact {
    break-after: avoid !important; page-break-after: avoid !important;
    break-inside: avoid !important; page-break-inside: avoid !important;
  }

  /* ── 8. 잠긴 유료 구간은 인쇄물에 절대 나가면 안 된다 ─────────────────── */
  #expertSection.is-locked { display: none !important; }
  .no-print { display: none !important; }
}

/* ═══════════════════════════════════════════════════════════════════════
   9. 감수 지적 반영 (2026-07-31) — 이별코칭 3~5쪽에서 드러난 것들
   ─────────────────────────────────────────────────────────────────────
   지적
     · 5쪽: UI가 다른 리포트와 전혀 다르다. 상단 박스의 한자가 다음 쪽으로 넘친다.
            글자 크기는 두고 **행간을 조여** 이상하게 넘어가지 않게 할 것.
     · 4쪽: 첫 줄이 종이 위에 딱 붙는다. 여백을 줄 것.
     · 3쪽: 좌우 여백을 더 줄 것.
   ═══════════════════════════════════════════════════════════════════════ */
@media print {

  /* ── 9-1. 종이 여백 — 지금까지 브라우저 기본값에 맡기고 있었다 ─────────
     좌우를 넉넉히 주어 글이 종이 끝에 붙지 않게 한다. 위는 첫 줄이 붙는 것을 막는다. */
  @page {
    size: A4;
    margin: 18mm 20mm 16mm 20mm;   /* 위 오른쪽 아래 왼쪽 */
  }
  /* 표지·업셀은 꽉 차야 하므로 여백을 따로 준다 */
  @page :first { margin: 0; }

  /* 각 쪽 첫 덩어리가 종이 위에 딱 붙는 것을 막는다 —
     페이지가 넘어간 자리의 첫 줄에도 숨 쉴 틈을 준다. */
  .panel, section, .detail-card, .term-block {
    padding-top: 2mm;
  }

  /* ── 9-2. 사이트 헤더·푸터는 감정서에 나가면 안 된다 ───────────────────
     [왜] 이별코칭 5쪽 끝에 「회사소개 / 서비스 / 고객지원 / 이용약관…」이
     통째로 찍혀 나갔다. 감정서에 사이트 메뉴가 들어갈 이유가 없다.
     이 규칙이 아예 없어서 **모든 리포트**가 같은 상태였다. */
  #klmHeader, #siteHeader,
  #klmFooter, #siteFooter,
  .kf-grid, .kf-links, .kf-about,
  nav.klm-cat, .klm-drop, .klm-burger {
    display: none !important;
  }

  /* ── 9-3. 부록(전문 용어 안내) — 다른 리포트와 같은 모양으로 ───────────
     글자 크기는 건드리지 않는다(지시). 행간과 칸만 조인다. */
  #termAppendix, .term-appendix {
    break-before: page; page-break-before: always;   /* 부록은 새 쪽에서 시작 */
    break-inside: avoid-page;
    padding-top: 4mm;
  }
  .term-block { break-inside: avoid !important; page-break-inside: avoid !important; }
  .term-table { width: 100%; border-collapse: collapse; }
  .term-table tr { break-inside: avoid !important; page-break-inside: avoid !important; }
  .term-table td {
    line-height: 1.45;              /* 행간만 조인다 — 크기는 그대로 */
    padding: 1.5mm 2mm;
    vertical-align: top;
  }
  /* 용어와 뜻풀이가 붙어 보이던 것 — 칸을 나눠 읽히게 한다 */
  .term-table .term-name { white-space: nowrap; padding-right: 4mm; font-weight: 700; }
  .term-table .term-desc { word-break: keep-all; }

  /* ── 9-4. 행간을 조여 어정쩡한 넘김을 줄인다 ──────────────────────────
     넘어가는 것 자체는 괜찮지만, 두세 줄만 넘어가 보기 흉한 것을 막는다.
     **글자 크기는 그대로 두고 행간만** 손댄다(지시). */
  p, li, td, dd { line-height: 1.55; }
  .panel p, .detail-card p, section p { margin-bottom: 2.5mm; }
  h2, h3, h4 { margin-top: 4mm; margin-bottom: 2mm; line-height: 1.3; }

  /* 한두 줄만 떨어져 넘어가는 것을 더 강하게 막는다 */
  p, li { orphans: 3; widows: 3; }
}

/* ── 9-5. 2쪽(서비스 소개) 카드 글자가 너무 크다 (2026-07-31 지적) ────────
   카드 안 글자 크기를 따로 정하지 않아 기본값으로 크게 나갔다.
   제목·설명 크기를 정해 카드가 빽빽해 보이지 않게 한다. */
@media print {
  .print-upsell .upsell-item {
    padding: 12px 14px;
    line-height: 1.5;
  }
  .print-upsell .upsell-item b {
    display: block;
    font-size: 12.5px;      /* 카드 제목 */
    font-weight: 700;
    margin-bottom: 3px;
    line-height: 1.35;
  }
  .print-upsell .upsell-item span {
    display: block;
    font-size: 11px;        /* 카드 설명 */
    line-height: 1.6;
    word-break: keep-all;   /* 한글이 어중간하게 잘리지 않게 */
  }
  .print-upsell .upsell-grid { gap: 11px; }
}

/* ── 9-6. AI 코칭 대화 — 채팅 화면은 인쇄 규격이 없었다 (2026-07-31) ────────
   [증상] 32번 PDF가 2쪽인데 그중 1쪽이 빈 쪽이었다.
   [원인] 채팅은 화면에서 스크롤로 보는 구조다 — #chatLog가 flex로 높이를 잡고
          overflow-y:auto로 잘려 있어, 인쇄하면 보이는 만큼만 나오고 나머지가
          빈 쪽으로 남는다. 대화가 길수록 더 많이 잘린다. */
@media print {
  /* 스크롤 상자를 풀어 대화 전체가 이어 나오게 한다 */
  #chatLog {
    overflow: visible !important;
    max-height: none !important;
    height: auto !important;
    min-height: 0 !important;
    flex: none !important;
    display: block !important;
    padding: 0 !important;
  }
  /* 채팅 컨테이너가 화면 높이(100vh)에 묶여 있으면 뒤가 통째로 잘린다 */
  body, .wrap, .chat-wrap, main {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }
  /* 말풍선이 쪽 경계에서 반토막 나지 않게 */
  #chatLog .msg { break-inside: avoid !important; page-break-inside: avoid !important; margin-bottom: 4mm; }

  /* 입력창·초기화 버튼은 종이에 나갈 것이 아니다 */
  #inputRow, #chatInput, #sendBtn, #clearBtn, .disclaim, #gateBox { display: none !important; }
}

/* ── 9-7. 표지 글자 규격 통일 (2026-07-31 지적: "UI 디자인이 전혀 일치 안 함") ──
   [무엇이 달랐나] 표지 틀(가운데 정렬·쪽나눔)은 이미 여기서 통일돼 있었는데
   **글자 크기와 색은 각 화면이 제각각** 들고 있었다.
     · 사주   h1 36px / 색 #14171d (짙은색 — 종이에서 읽힘)
     · 궁합   h1 30px / 색 #f7f6f2 (**흰색 — 밝은 종이에서 안 읽힌다**)
   표지 제목은 화면마다 내용이 다르지만(고객 이름·두 사람 이름) **생김새는 같아야 한다.**
   여기서 한 번에 정하고, 각 화면 값은 덮어쓴다. 표지를 고칠 곳은 이제 이 파일이다. */
@media print {
  .print-only-cover:not(.print-upsell) h1 {
    font-family: 'Noto Serif KR', serif !important;
    font-size: 33px !important;
    font-weight: 900 !important;
    line-height: 1.45 !important;
    letter-spacing: .5px !important;
    color: #14171d !important;      /* 밝은 종이에 짙은 글자 */
    margin: 0 0 16px !important;
    word-break: keep-all;
  }
  .print-only-cover:not(.print-upsell) .cover-sub {
    font-size: 14px !important;
    line-height: 1.75 !important;
    color: #4a5060 !important;
    margin: 0 0 26px !important;
    word-break: keep-all;
  }
  .print-only-cover:not(.print-upsell) .cover-org {
    font-family: 'Noto Serif KR', serif !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    letter-spacing: 2px !important;
    color: #6b6250 !important;
    margin: 0 !important;
  }
}

/* ── 9-8. 택일 표지가 두 장이던 것 (2026-08-01) ──────────────────────────────
   [증상] 택일 PDF가 1쪽 「홍길동 님의 이사 길일 명적서」, 2쪽 「택일(擇日) 감정서」로
          표지가 두 장이었다. 렌더 검사에서 계속 "빈쪽 1"로 잡히던 것의 정체다.
   [원인] 2026-07-30에 표지(.print-only-cover)를 새로 붙이면서, 원래 화면에 있던
          개인화 제목 블록(#coverTitle)을 치우지 않았다. 둘 다 인쇄에 나간 것이다.
   [조치] 인쇄에서는 화면용 제목 블록을 감춘다. 고객 이름이 든 제목은
          표지(#printCoverTitle)가 이미 보여준다 — 같은 말을 두 번 할 이유가 없다.
   ※ 화면에서는 그대로 보인다. 인쇄에서만 감춘다. */
@media print {
  #coverTitle { display: none !important; }
}
