/**
 * print.css
 * 印刷・PDF出力専用スタイルシート（@media print）
 * ステップ5実装（AI誤検知判定結果の印刷追加対応）
 *
 * 印刷出力順序（CSS order プロパティで制御）:
 *   1. #integrated-report-upper（エグゼクティブサマリー + カテゴリ別通信分析）
 *   2. #ai-judge-section.has-results（AI誤検知判定結果）
 *   3. #integrated-report-lower（端末別ランキング + 端末別詳細 + 傾向分析）
 *
 * 非表示対象: CSVアップロード・データ統計・プレビュー・ホワイトリスト管理・
 *             既存レポートセクション・操作UI
 */

/* ページ設定: A4横向き */
@page {
  size: A4 landscape;
  margin: 15mm;
}

@media print {

  /* ============================================
     印刷時の表示順序制御（flex + order）
     ============================================ */

  /* main-content を flex コンテナにして order で順序制御 */
  .main-content {
    display: flex !important;
    flex-direction: column !important;
    max-width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
  }

  /* 統合レポート上部（エグゼクティブサマリー + カテゴリ別通信分析）: 最初に印刷 */
  #integrated-report-upper {
    order: 1;
    display: block !important;
    box-shadow: none !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 0 8pt 0 !important;
  }

  /* AI誤検知判定結果（has-results クラスあり時のみ表示）: 2番目に印刷 */
  #ai-judge-section.has-results {
    order: 2;
    display: block !important;
    box-shadow: none !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 0 8pt 0 !important;
  }

  /* AI判定未実施時は非表示 */
  #ai-judge-section:not(.has-results) {
    display: none !important;
  }

  /* 統合レポート下部（端末別ランキング + 端末別詳細 + 傾向分析）: 3番目に印刷 */
  #integrated-report-lower {
    order: 3;
    display: block !important;
    box-shadow: none !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
  }

  /* ============================================
     非表示にする要素
     ============================================ */

  /* ヘッダー */
  .app-header,
  /* CSVアップロードセクション */
  section.card:has(#dropZone),
  section.card:has(#statsArea),
  section.card:has(#previewArea),
  /* ホワイトリスト管理セクション */
  #whitelist-section,
  /* 既存レポートセクション（ステップ2） */
  #report-sections,
  /* 印刷ボタン自体 */
  .btn-print,
  /* ナビゲーション・フッター */
  nav, footer,
  /* ページ固定要素 */
  .print-hide {
    display: none !important;
  }

  /* AI判定操作UI（has-results クラスありの場合のみ非表示）*/
  .judge-controls-no-print {
    display: none !important;
  }

  /* ヘルスステータス（Worker接続中・APIキー設定済み）を非表示 */
  #judge-health-status {
    display: none !important;
  }

  /* ホワイトリスト追加ボタン（印刷時は非表示） */
  .btn-add-wl {
    display: none !important;
  }

  /* 統合レポートのカードヘッダーは印刷不要 */
  #integrated-report-upper .card-header,
  #integrated-report-lower .card-header {
    display: none !important;
  }

  /* AI判定セクションのカードヘッダーも非表示
     （印刷専用見出し .print-only-heading が代替） */
  #ai-judge-section .card-header {
    display: none !important;
  }

  /* ============================================
     印刷専用見出し（画面では非表示、印刷時のみ表示）
     ============================================ */

  .print-only-heading {
    display: block !important;
    font-size: 13pt !important;
    font-weight: 700 !important;
    color: #1a2744 !important;
    margin-bottom: 8pt !important;
    padding-bottom: 4pt !important;
    border-bottom: 2pt solid #2563eb !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* ============================================
     AI判定サマリー・テーブルの表示制御
     ============================================ */

  /* 判定サマリー（印刷時に表示） */
  .judge-summary-printable {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 6pt !important;
    margin-bottom: 10pt !important;
  }

  /* 判定結果テーブルラッパー（印刷時に表示） */
  .judge-table-printable {
    display: block !important;
  }

  /* サマリーアイテム */
  .judge-summary-item {
    border: 1pt solid #ccc !important;
    padding: 4pt 6pt !important;
    background: #f8f9fa !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  .judge-summary-label {
    font-size: 7pt !important;
    color: #555 !important;
    margin-bottom: 2pt;
  }

  .judge-summary-value {
    font-size: 11pt !important;
    font-weight: 700 !important;
  }

  /* 判定結果テーブルのフォントサイズ（列が多いため小さく） */
  .judge-table-printable .data-table {
    font-size: 9pt !important;
    width: 100% !important;
    border-collapse: collapse !important;
  }

  /* 判定結果テーブルの理由列 */
  .judge-table-printable .judge-reason-cell {
    max-width: 200px !important;
    white-space: normal !important;
    font-size: 8pt !important;
  }

  /* 判定結果テーブルのURL列 */
  .judge-table-printable .judge-url-cell {
    max-width: 150px !important;
    word-break: break-all !important;
    font-size: 8pt !important;
  }

  /* ============================================
     基本スタイル
     ============================================ */

  body {
    background: #fff !important;
    color: #000 !important;
    font-size: 10pt;
    font-family: 'Noto Sans JP', sans-serif;
  }

  /* レポートセクション */
  .report-section {
    display: block !important;
    page-break-inside: avoid;
    margin-bottom: 16pt;
    padding: 8pt 0;
    border-bottom: 1pt solid #ccc;
  }

  /* セクションタイトル */
  .ir-section-title {
    font-size: 13pt !important;
    color: #1a2744 !important;
    page-break-after: avoid;
    margin-bottom: 8pt;
  }

  /* ============================================
     テーブル（統合レポート）
     ============================================ */

  .data-table,
  .ir-cat-table {
    width: 100% !important;
    border-collapse: collapse !important;
    font-size: 8pt !important;
  }

  .data-table th,
  .data-table td {
    border: 1pt solid #333 !important;
    padding: 3pt 4pt !important;
  }

  .data-table thead tr {
    background-color: #1a2744 !important;
    color: #fff !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* 誤検知率警告行 */
  .ir-row-warning td {
    background-color: #fff8e1 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* ============================================
     バッジ（印刷時も色を維持）
     ============================================ */

  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;

  .risk-badge,
  .judge-badge,
  .judge-result-badge,
  .category-badge {
    border: 1pt solid #555 !important;
    padding: 1pt 3pt !important;
    font-size: 7pt !important;
    border-radius: 2pt !important;
  }

  /* リスクバッジの背景色 */
  .risk-safe      { background-color: #d4edda !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .risk-suspicious{ background-color: #fff3cd !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .risk-dangerous { background-color: #f8d7da !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .risk-unknown   { background-color: #e9ecef !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  /* 判定結果バッジ */
  .judge-result-miss    { background-color: #f8d7da !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .judge-result-ok      { background-color: #d4edda !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .judge-result-unknown { background-color: #e9ecef !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .judge-result-known   { background-color: #cce5ff !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  /* ============================================
     グラフ（Canvasは非表示、画像で表示）
     ============================================ */

  /* body.printing クラス付与時は canvas を非表示 */
  body.printing canvas {
    display: none !important;
  }

  .print-chart-image {
    max-width: 100% !important;
    height: auto !important;
    page-break-inside: avoid;
    display: block;
    margin: 4pt auto;
  }

  /* ============================================
     エグゼクティブサマリー
     ============================================ */

  .ir-exec-grid {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 6pt !important;
    margin-bottom: 8pt;
  }

  .ir-exec-card {
    border: 1pt solid #ccc !important;
    padding: 4pt 6pt !important;
    background: #f8f9fa !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  .ir-exec-block {
    background: #fff5f5 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* ============================================
     対策提案カード
     ============================================ */

  .ir-rec-cards {
    display: flex !important;
    flex-direction: column !important;
    gap: 4pt !important;
  }

  .recommendation-card {
    border-left-width: 3pt !important;
    padding: 4pt 8pt !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  .recommendation-warning { background: #fffbeb !important; border-left-color: #d97706 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .recommendation-info    { background: #eff6ff !important; border-left-color: #2563eb !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .recommendation-success { background: #f0fdf4 !important; border-left-color: #16a34a !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .recommendation-neutral { background: #f8fafc !important; border-left-color: #94a3b8 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  .recommendation-text {
    font-size: 9pt !important;
  }

  /* ============================================
     折りたたみ詳細（印刷時は常に表示）
     ============================================ */

  .ir-detail-row {
    display: table-row !important;
  }

  /* MACアドレス詳細アコーディオン（印刷時は常に展開） */
  .ir-mac-accordion-body {
    display: block !important;
  }

  /* ============================================
     端末詳細ブロック
     ============================================ */

  .ir-mac-detail-block {
    page-break-inside: avoid;
    margin-bottom: 12pt;
    border: 1pt solid #ccc !important;
  }

  .ir-mac-accordion-header {
    background: #f1f5f9 !important;
    padding: 4pt 8pt !important;
    font-size: 9pt !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* URL列・理由列（統合レポート内） */
  .judge-url-cell {
    font-size: 7pt !important;
    word-break: break-all !important;
    max-width: 120pt !important;
  }

  .judge-reason-cell,
  .ir-risk-reason {
    font-size: 7pt !important;
    white-space: normal !important;
    max-width: 140pt !important;
  }

  /* 注記 */
  .ir-note,
  .ir-note-bottom {
    font-size: 8pt !important;
    color: #666 !important;
  }

  /* ============================================
     AI誤検知判定結果 — 印刷専用テーブル制御
     ============================================ */

  /* 画面用サマリーグリッドを非表示 */
  .judge-summary-printable {
    display: none !important;
  }

  /* 印刷用サマリーテーブル（1行・6列）を表示 */
  .judge-summary-print-table {
    display: table !important;
    width: 100% !important;
    border-collapse: collapse !important;
    font-size: 9pt !important;
    margin-bottom: 8pt !important;
  }
  .judge-summary-print-table th {
    background: #1e3a5f !important;
    color: #fff !important;
    border: 1pt solid #555 !important;
    padding: 4pt 6pt !important;
    text-align: center !important;
    font-size: 8pt !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .judge-summary-print-table td {
    border: 1pt solid #ccc !important;
    padding: 4pt 6pt !important;
    text-align: center !important;
    font-size: 9pt !important;
  }

  /* 画面用データテーブルを非表示 */
  .judge-table-printable .data-table {
    display: none !important;
  }

  /* 印刷専用データテーブル（6列）を表示 */
  .judge-print-table {
    display: table !important;
    width: 100% !important;
    border-collapse: collapse !important;
    font-size: 9pt !important;
    margin-bottom: 12pt !important;
  }
  .judge-print-table th {
    background: #1e3a5f !important;
    color: #fff !important;
    border: 1pt solid #555 !important;
    padding: 4pt 6pt !important;
    text-align: left !important;
    font-size: 8pt !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .judge-print-table td {
    border: 1pt solid #ccc !important;
    padding: 4pt 6pt !important;
    vertical-align: top !important;
    font-size: 8.5pt !important;
  }
  /* URL列：折り返し表示（省略しない） */
  .judge-print-table .url-cell {
    max-width: 200pt !important;
    word-break: break-all !important;
    font-size: 7.5pt !important;
  }
  /* 実際のサービス列：全文表示 */
  .judge-print-table .service-cell {
    white-space: normal !important;
  }
  /* 誤検知行の背景色 */
  .judge-print-table .judge-row-miss {
    background: #fff8f8 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  /* ページ内折り返し制御 */
  .judge-print-table tbody tr {
    page-break-inside: avoid;
  }
}

