/**
 * print.css - 통합 인쇄 스타일시트
 * 
 * 모든 인쇄 관련 CSS 규칙을 한 곳에서 관리합니다.
 * 이는 인쇄 스타일 충돌 및 우선순위 이슈를 방지합니다.
 * 
 * 적용 대상:
 * - PrintPreviewModal.tsx
 * - TemplateTwoColumn.tsx
 * - 기타 인쇄 템플릿
 * 
 * 히스토리:
 * - 2025-12-10: Print CSS 통합으로 생성됨
 */

@media print {

  /* ===== 기본 리셋 ===== */
  * {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    color-adjust: exact !important;
  }

  /* 기본 숨김 요소 */
  .no-print,
  .print-hide,
  [data-no-print="true"],
  button:not([data-print-visible]):not(.problem-card-measure),
  [role="button"]:not([data-print-visible]):not(.problem-card-measure) {
    display: none !important;
  }

  /* ===== 페이지 레이아웃 ===== */
  @page {
    margin: 0;
    size: A4;
  }

  html,
  body,
  #root {
    width: 100% !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    background-color: white !important;
  }

  /* PrintPreviewModal container - 인쇄 시 fixed positioning 제거 및 배경 투명화 */
  .fixed.inset-0 {
    position: static !important;
    background-color: white !important;
    overflow: visible !important;
    display: block !important;
    padding: 0 !important;
    margin: 0 !important;
  }

  /* 사이드바 숨김 - 빈 페이지 방지 (print:hidden이 적용된 요소만) */
  .print\\:hidden,
  [class*="bg-\\[\\#252526\\]"],
  [class*="bg-\\[\\#1e1e1e\\]"]:not(.print-page):not([class*="print-page"]) {
    display: none !important;
  }

  /* 측정용 hidden div 제거 */
  [style*="visibility: hidden"] {
    display: none !important;
  }

  /* 인쇄 페이지 콘텐츠 강제 표시 */
  .print-page * {
    visibility: visible !important;
    opacity: 1 !important;
  }

  /* 배경 템플릿 렌더러 - 인쇄 시에도 표시 */
  .print-page .absolute.inset-0.pointer-events-none {
    visibility: visible !important;
    opacity: 1 !important;
    overflow: visible !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  .print-page {
    width: 210mm !important;
    height: 297mm !important;
    overflow: visible !important;
    page-break-after: always;
    break-after: page;
    position: relative !important;
    left: 0 !important;
    top: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    border: none !important;
  }

  .print-page:first-child {
    page-break-before: avoid;
    break-before: avoid;
  }

  .print-page:last-child {
    page-break-after: avoid;
    break-after: avoid;
  }

  /* 빈 페이지 방지 - 콘텐이너 여백 제거 */
  .py-8,
  .pb-32,
  .gap-10,
  .gap-8 {
    padding: 0 !important;
    margin: 0 !important;
    gap: 0 !important;
  }

  /* 미리보기 컨테이너 여백 제거 */
  .flex-grow.overflow-auto>div {
    padding: 0 !important;
    margin: 0 !important;
    gap: 0 !important;
  }

  /* KaTeX/Formula Fix - ensure proper display */
  .print-page .katex {
    display: inline-block !important;
    white-space: normal !important;
  }

  .print-page .katex-display {
    display: block !important;
    text-align: left !important;
    overflow-x: visible !important;
    padding-left: 0.5rem;
    /* margin은 유지하여 미리보기와 동일하게 */
  }

  /* 인쇄 시 텍스트/수식 간격 유지 - 미리보기와 동일하게 */
  .print-page p,
  .print-page .ProseMirror p {
    margin-top: 0.5em !important;
    margin-bottom: 0.5em !important;
    line-height: 1.6 !important;
  }

  .print-page .inline-editor-content,
  .print-page .ProseMirror {
    line-height: 1.6 !important;
  }

  .print-page .katex-display>.katex {
    text-align: left !important;
  }

  /* ===== 헤더/푸터 스타일 ===== */
  .print-page header {
    border-color: black !important;
  }

  /* ===== 유틸리티 클래스 ===== */
  .print\:break-after-page {
    break-after: page;
  }

  .print\:shadow-none {
    box-shadow: none !important;
  }

  .print\:m-0 {
    margin: 0 !important;
  }

  .print\:hidden {
    display: none !important;
  }

  .print\:border-gray-300 {
    border-color: #d1d5db !important;
  }

  .print\:border-solid {
    border-style: solid !important;
  }

  .print\:border-transparent {
    border-color: transparent !important;
  }

  .print\:bg-transparent {
    background-color: transparent !important;
  }

  /* 배경 투명화 */
  .bg-gray-50 {
    background-color: transparent !important;
    border: none !important;
    padding: 0 !important;
  }

  /* 컬럼 레이아웃 보존 */
  .break-inside-avoid-column {
    break-inside: avoid-column;
  }

  /* ===== 인라인 편집기 스타일 ===== */
  .inline-editor-content,
  .ProseMirror {
    border: none !important;
    background: transparent !important;
    padding: 0 !important;
  }

  /* Remove prose default margins for tighter spacing */
  .inline-editor-content p,
  .inline-editor-content .math-block-content {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }

  /* ===== 수학 렌더링 ===== */
  .katex-display,
  .katex {
    page-break-inside: avoid;
    break-inside: avoid;
  }

  /* ===== 선택 스타일 숨김 (ring, outline, selection) ===== */
  .print-page .ring-2,
  .print-page .ring-blue-400,
  .print-page .ring-blue-500,
  .print-page [class*="ring-"],
  .print-page .ProseMirror-selectednode,
  .print-page .bg-blue-50\/50 {
    box-shadow: none !important;
    outline: none !important;
    ring: none !important;
    --tw-ring-shadow: none !important;
    --tw-ring-color: transparent !important;
    background-color: transparent !important;
  }

  /* =========================================
     [추가] 문제 영역 빈 페이지 방지 패치 (수정됨)
     ========================================= */

  /* 1. 글자색 강제 검정 (다크모드 글씨가 흰 종이에서 안 보이는 문제 해결) */
  .print-page,
  .print-page * {
    color: #000000 !important;
    text-shadow: none !important;
    -webkit-text-fill-color: #000000 !important;
  }

  /* 2. 오버플로우만 visible로 (레이아웃은 유지) */
  .print-page .h-full {
    overflow: visible !important;
  }

  /* 3. 문제 카드 강제 노출 */
  .problem-card-measure {
    break-inside: avoid;
    visibility: visible !important;
    opacity: 1 !important;
    overflow: visible !important;
  }

  /* 4. 2단 해설 레이아웃 - 콘텐츠 표시 보장 */
  .print-page main {
    overflow: visible !important;
    max-width: 100% !important;
  }

  /* 5. 컬럼 레이아웃 - 2단 고정 (auto로 미리보기와 동일하게) */
  .print-page [style*="column-count"] {
    column-count: 2 !important;
    column-fill: auto !important;
    overflow: hidden !important;
  }
}