/* 게시판 상세를 **문서 한 장**으로 — 「PDF로 저장」(=브라우저 인쇄)이 쓰는 껍데기.
 *
 * ⚠ **`media="print"` 로만 실린다**(`board.html`). 화면에는 한 줄도 안 먹으므로
 *   여기서 화면 규칙을 고치려 들지 말 것 — 그 자리는 `skin.css` 다.
 *
 * ⚠ **이 파일은 `npm test` 가 못 잰다.** 하네스에 레이아웃 엔진도 인쇄 엔진도
 *   없다. 잴 수 있는 것은 「무엇이 인쇄본에 들어갔나」(`render-snapshot.mjs` 의
 *   게시판 장면)뿐이고, **쪽수·잘림·배경은 사람이 브라우저로** 봐야 한다.
 *
 * 무엇을 남기나: 제목 · 작성자·시각 · 한눈에 요약 · 「내 빌드」 · 「계산」 · 설명.
 * 무엇을 빼나: 사이트 내비 · 목록 절 · 단추 · 편집기 · 상태 문구 · 하단 탭바.
 */

/* ── 종이 ─────────────────────────────────────────────────────────────── */
@page {
  size: A4;
  margin: 12mm 10mm;
}

/* ⚠ **어두운 판을 그대로 낸다.** 브라우저는 기본으로 배경을 안 찍어서(잉크
 *   절약), 이걸 안 걸면 검은 바탕이 날아가고 **흰 종이에 흰 글씨**가 남는다.
 *   화면과 같아 보이는 쪽을 택했다 — 잉크를 많이 먹는 것은 아는 대가다. */
html, body {
  print-color-adjust: exact;
  -webkit-print-color-adjust: exact;
  background: #0d0b08;
  margin: 0;
  padding: 0;
}

/* ── 뺄 것 ────────────────────────────────────────────────────────────── */
/* ⚠ **하나씩 이름을 대서 뺀다** — `.btn { display:none }` 처럼 넓게 걸면
 *   본문(설명) 안에 들어간 표·칩까지 같이 사라진다. */
/* ⚠ **이름을 기억으로 적지 말 것.** 처음에 `.sitenav` 라고 썼는데 그런 클래스는
 *   없었다(진짜는 `.bg3-header`). 안 맞는 선택자는 **아무 데서도 안 터지고**
 *   머리띠가 그대로 인쇄된다 — `tests/page-stylesheets.test.js` 가 이 목록을
 *   실제 마크업과 대조한다.
 *
 * ⚠ **`!important` 를 안 쓴다**(`tests/hidden-attr.test.js`). 그 저장소 규칙은
 *   `display` 에 `!important` 를 거는 것을 `[hidden]` 하나로 못박아 뒀다 — 특정도가
 *   같아지면 **나중 것이 이겨서 `hidden` 이 조용히 안 먹는다**(네 번 데인 자리).
 *   여기서는 필요가 없다: `.bg3-header`(0,1,0)·`.tabbar`(0,1,0) 과 **같은 특정도**인데
 *   `print.css` 가 board.html 의 **마지막 껍데기**라 나중 것이 이긴다.
 *
 * ⚠ **`.sitetabs` 를 안 적는다.** skin.css 가 `.bg3-header nav.sitetabs`(0,2,1) 로
 *   더 세게 잡고 있어 `.sitetabs`(0,1,0) 로는 못 이긴다. 그럴 필요도 없다 —
 *   `.bg3-header` 를 지우면 그 안은 통째로 안 그려진다. **못 이길 선택자를 적어 두면
 *   「적었으니 됐다」는 거짓 안심만 남는다.** */
.bg3-header, .mobilemenu, .tabbar, .footnote, .chiprow,
#boardlistpane,
#boardactreader, #boardactauthor,
#boardtitleform, #boardbodyeditor, #boarddraftnotice,
#boardpreviewtabs, #boardpreviewstatus, #boardonemsg,
dialog, .st-float {
  display: none;
}

/* ── 인쇄본 그릇: 화면 탭 대신 **두 탭이 다 든 쪽**을 보여 준다 ────────────
 *
 * ⚠⚠ **`hidden` 속성을 안 쓴다.** 처음엔 그릇에 `hidden` 을 달고 여기서
 *   `display: block !important` 로 되살렸는데, 그게 저장소 규칙 **둘을 동시에**
 *   어겼다(`tests/hidden-attr.test.js`: `display !important` 는 `[hidden]` 만 ·
 *   자리별 `[hidden]` 규칙 금지). 그 규칙들은 「`hidden` 이 조용히 안 먹는」 사고를
 *   네 번 겪고 세운 것이라 **끄는 게 아니라 비켜 가는 것이 맞다.**
 *
 *   그래서 화면 쪽 숨김은 `board-body.css` 의 `.printonly`(0,1,0) 가 맡고,
 *   여기서는 **id(1,0,0)** 로 되살린다 — 특정도가 더 세서 `!important` 도,
 *   껍데기 싣는 차례도 안 탄다. */
#boardpreviewpanel { display: none; }
#boardpreviewprint { display: block; }

.printsec { margin: 0 0 8mm; }
.printsectitle {
  margin: 0 0 3mm;
  padding-bottom: 1.5mm;
  border-bottom: 1px solid #6b5a3e;
  font-size: 13pt;
}

/* ── 탭 상태를 무시하고 위아래로 다 편다 ─────────────────────────────── */
/* 화면은 탭 셋(내 빌드·계산·설명)이 한 자리를 번갈아 쓰지만(2026-09-13), 종이는
 * 「인쇄본 그릇(두 패널) → 설명 본문」을 문서 차례 그대로 편다.
 *
 * ⚠ 본문(`.bdbody`)은 화면에서 탭 상태로 숨어 있을 수 있다 —
 *   skin.css 의 `#boardpreview[data-preview-active="glance"] ~ .bdbody { display: none }`
 *   (1,2,0). 여기서는 **id 둘(2,1,0)** 로 되살린다 — 싣는 차례도 `!important` 도
 *   안 탄다. 화면이 `hidden` 이 아니라 속성 값으로 가르는 까닭이 바로 이 줄이다:
 *   `[hidden]` 은 이 저장소에서 되살릴 수 없다(위 인쇄본 그릇 주석·hidden-attr 그물). */
#boardone #boardpreview ~ .bdbody { display: block; }

/* ── 쪽 넘김 ──────────────────────────────────────────────────────────── */
/* 카드·표가 쪽 경계에서 반토막 나지 않게.
 *
 * ⚠⚠ **한 쪽보다 큰 덩어리에는 절대 걸지 않는다.** 처음에 `.printsec > *` 와
 *   `.glance` 에 걸었더니 **1쪽이 제목만 남고 통째로 비었다**(실측 2026-09-01,
 *   헤드리스 크롬 PDF 5쪽). 크롬은 「안에서 자르지 말라」는 덩어리가 남은 자리에
 *   안 들어가면 **다음 쪽으로 통째로 민다** — 그 덩어리가 한 쪽보다 크면 그래도
 *   못 들어가서, 앞쪽만 버려지고 결국 잘린다. 그러니 **작은 것에만** 건다.
 *   ⚠ 이건 그물이 못 잡는다 — 눈으로 PDF 를 봐야 보인다. 그래서 여기 적어 둔다. */
.card, tr, figure, .gcols > * {
  break-inside: avoid;
}
.printsectitle { break-after: avoid; }
h1, h2, h3 { break-after: avoid; }

/* 「계산」은 새 쪽에서 시작한다 — 「내 빌드」와 섞이면 어디까지가 무엇인지 흐려진다. */
.printsec[data-print-tab="calc"] { break-before: page; }
