/* ==========================================================================
   common-print.css
   --------------------------------------------------------------------------
   構造設計 WEB アプリ群の共通スタイル（印刷時 / 計算書 PDF 生成用）
   準拠仕様: 00_共通仕様/specs/report-spec.md, ui-spec.md §10

   配置: 00_共通仕様/shared/common-print.css
   読込:
     画面用と兼用する場合:
       <link rel="stylesheet" href="../../00_共通仕様/shared/common-print.css">
     印刷時のみ適用する場合:
       <link rel="stylesheet" href="../../00_共通仕様/shared/common-print.css" media="print">

   最終更新: 260520
     260520: 省略モード計算書の本体スタイルは計算書 HTML 内にインライン化したため、
            ここからは .cond-box / .calc-line / .calc-group-head を再削除。
            画面プレビュー用の .brief-case 系のみ残置。
     260519: 初版
   ========================================================================== */

/* ==========================================================================
   @media print: 印刷時の共通調整
   ui-spec.md §10
   ========================================================================== */
@media print {

  /* --- 用紙 --- */
  @page {
    size: A4 portrait;
    margin: 15mm 12mm 18mm 12mm;
  }
  @page landscape {
    size: A4 landscape;
    margin: 12mm 15mm 18mm 15mm;
  }

  /* --- 画面 UI を非表示 --- */
  .toolbar,
  .footer,
  .modal-bg,
  .no-print,
  details > summary {
    display: none !important;
  }

  /* --- 印刷時のみ表示要素 --- */
  .no-screen {
    display: block !important;
  }

  /* --- details は中身だけ表示 --- */
  details {
    display: block !important;
  }
  details > div,
  details > section,
  details > p,
  details > ul {
    display: block !important;
  }

  /* --- 背景・文字色 --- */
  body {
    background: #fff;
    color: #000;
    font-size: 10pt;
    line-height: 1.45;
  }

  /* --- アプリ用ラッパーの余白を削減 --- */
  .app-root {
    margin: 0;
  }

  /* --- パネル：枠線控えめ、影なし、ページ内分断回避 --- */
  .box, .panel, fieldset {
    background: #fff;
    border: 1px solid #888;
    box-shadow: none;
    break-inside: avoid;
  }

  /* --- 2ペインを縦並びに --- */
  .main {
    display: block;
  }
  .col-left, .col-right {
    flex: none;
    width: 100%;
    min-width: 0;
    max-width: none;
  }

  /* --- 見出し --- */
  h1 {
    font-size: 16pt;
    border-bottom-width: 2pt;
  }
  h1 small {
    font-size: 0.6em;
  }
  h2 {
    font-size: 12pt;
    background: #1a3c5e;
    color: #fff;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
    break-after: avoid;
  }
  h3 {
    font-size: 11pt;
    break-after: avoid;
  }
  h4 {
    font-size: 10pt;
    break-after: avoid;
  }

  /* --- 表 --- */
  table {
    font-size: 9pt;
    break-inside: auto;
  }
  table tr {
    break-inside: avoid;
  }
  table th {
    background: #e6e8f0;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* --- 改ページ規則 --- */
  h1                                  { break-before: page; }
  h2                                  { break-after: avoid; }
  h3                                  { break-after: avoid; }
  .formula, .figure, .graph-box,
  .svg-box, .res-summary, .verdict   { break-inside: avoid; }

  /* --- カラー要素は色付きで印刷 --- */
  .pill, .verdict, .res-summary, .ok, .ng, h2 {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* --- 計算式枠 --- */
  .formula {
    background: #f0f2fa;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
    border-left-width: 2pt;
  }

  /* --- 詳細計算ログ：印刷時はスクロールせず全展開 --- */
  pre.clog {
    max-height: none;
    overflow: visible;
    font-size: 8pt;
    background: #f8f8f8;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* --- KaTeX 印刷時調整 --- */
  .katex {
    font-size: 0.85em !important;
  }
  .katex-display {
    margin: 3mm 0 !important;
    overflow: visible !important;
  }

  /* --- 入力フィールドは値だけ見せる（枠を消す） --- */
  input[type="text"], input[type="number"], select {
    border: none;
    background: transparent;
    padding: 0;
  }
  input[readonly] {
    background: transparent;
  }
}


/* ==========================================================================
   計算書テンプレート用クラス（@media print 外でも適用）
   report-spec.md §15 計算書テンプレート HTML
   --------------------------------------------------------------------------
   新ウィンドウで開く計算書本体の HTML が
   <body class="report-body" data-report-mode="full"> を持つ前提
   ========================================================================== */

/* --- body.report-body の基本：印刷プレビューに近い表示 --- */
body.report-body {
  background: #fff;
  font-size: 10pt;
  color: #000;
  margin: 0;
}
body.report-body .app-root { margin: 0; padding: 10mm; }

/* ==========================================================================
   表紙
   report-spec.md §4
   ========================================================================== */
.report-cover {
  page-break-after: always;
  text-align: center;
  padding: 50mm 20mm;
  min-height: 200mm;
}
.report-cover h1 {
  font-size: 24pt;
  margin: 30mm 0 25mm 0;
  border-top: 2pt solid #1a3c5e;
  border-bottom: 2pt solid #1a3c5e;
  padding: 10mm 0;
  color: #1a3c5e;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}
.report-cover .meta {
  text-align: left;
  margin: 20mm auto;
  width: 75%;
  font-size: 12pt;
  line-height: 2.0;
}
.report-cover .meta .label {
  display: inline-block;
  width: 32%;
  color: #555;
}
.report-cover .meta .value {
  display: inline-block;
}
.report-cover .references {
  margin-top: 15mm;
  font-size: 10pt;
  text-align: left;
  width: 85%;
  margin-left: auto;
  margin-right: auto;
}
.report-cover .references h3 {
  border-left: none;
  padding-left: 0;
  text-align: center;
  font-size: 11pt;
  margin-bottom: 4mm;
}
.report-cover .references ul {
  list-style: none;
  padding-left: 0;
  margin: 0;
}
.report-cover .references li {
  margin-bottom: 2mm;
}
.report-cover .references li::before {
  content: "・";
  margin-right: 2mm;
}

/* 物件名行：空のときは行ごと非表示 */
.report-cover .meta .row.empty {
  display: none;
}

/* ==========================================================================
   目次
   report-spec.md §5
   ========================================================================== */
.report-toc {
  page-break-after: always;
  padding: 10mm 10mm 0 10mm;
}
.report-toc h1 {
  font-size: 18pt;
  margin-bottom: 8mm;
}
.report-toc ol {
  list-style: none;
  padding-left: 0;
  font-size: 11pt;
  line-height: 2.0;
}
.report-toc ol ol {
  padding-left: 8mm;
  font-size: 10pt;
}
.report-toc li {
  border-bottom: 1px dotted #ccc;
  display: flex;
  justify-content: space-between;
  padding: 1mm 0;
}
.report-toc li .toc-title { flex: 1; }
.report-toc li .toc-page  { width: 12mm; text-align: right; color: #555; }

/* ==========================================================================
   本文セクション
   report-spec.md §6〜§9
   ========================================================================== */
.report-section {
  break-before: page;
}
.report-section:first-of-type {
  break-before: auto;
}

/* 入力諸元・結果一覧 表 */
.report-input-table th,
.report-input-table td {
  font-size: 9pt;
  padding: 2pt 4pt;
}

/* ケース横断サマリ表 */
.report-summary-table {
  margin-top: 4mm;
}
.report-summary-table .judge-cell { text-align: center; }

/* 参考文献 */
.report-references ol {
  padding-left: 8mm;
  font-size: 9pt;
  line-height: 1.7;
}
.report-references li {
  margin-bottom: 3mm;
}

/* ==========================================================================
   省略モード（A4 1枚以下/ケース）
   report-spec.md §11
   ========================================================================== */
body.report-body[data-report-mode="brief"] .report-cover,
body.report-body[data-report-mode="brief"] .report-toc {
  display: none;
}

.brief-case {
  break-after: page;
  padding: 6mm 0 8mm 0;
  font-size: 10pt;
  line-height: 1.4;
}
.brief-case:last-child {
  break-after: auto;
}

.brief-case h2 {
  font-size: 12pt;
  background: #1a3c5e;
  color: #fff;
  padding: 2mm 4mm;
  margin: 0 0 3mm 0;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.brief-case h3 {
  font-size: 10pt;
  border-left: 2pt solid #1a3c5e;
  padding-left: 3mm;
  margin: 3mm 0 1mm 0;
  color: #1a3c5e;
}

.brief-case .input-inline {
  display: flex;
  flex-wrap: wrap;
  gap: 1mm 6mm;
  font-size: 9pt;
  margin: 1mm 0 3mm 0;
}
.brief-case .input-inline > span {
  white-space: nowrap;
}
.brief-case .input-inline .lbl {
  color: #555;
  margin-right: 1mm;
}

.brief-case .results-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1mm 4mm;
  font-size: 9pt;
}
.brief-case .results-grid > div {
  white-space: nowrap;
}

.brief-case .judge-box {
  background: #eaf5ea;
  border: 1.5pt solid #8b8;
  padding: 2mm 4mm;
  margin: 3mm 0;
  font-size: 11pt;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
  break-inside: avoid;
}
.brief-case .judge-box.ng {
  background: #fdecec;
  border-color: #c88;
  color: #8b1a1a;
}

.brief-case .small-svg {
  max-height: 40mm;
  margin-top: 2mm;
}

/* 注: 省略モード計算書の本体スタイル（.brief-case .case-header, .cond-box .cond-title,
   .calc-line, .final-judge, .footer-note 等）は、計算書 HTML 内に **インラインで埋め込まれる**
   （`templates/app-template.html` の `_briefReportStyles()` を参照、小梁の設計と同方式）。
   これは「計算書ウィンドウは自己完結で動く」ことを優先するため。
   本ファイル（common-print.css）の .brief-case 系スタイルは、画面プレビュー時の
   フォールバック用途のみで、計算書出力には使われない。 */

/* ==========================================================================
   フッタ（CSS Paged Media）
   report-spec.md §10
   --------------------------------------------------------------------------
   Chrome / Edge は @page の @bottom-* に対応するが、Firefox は限定的。
   report-generator.js が以下の CSS 変数を設定する想定:
     --footer-left   : 物件名 + タイトル
     --footer-center : 出力日
     --footer-right  : アプリ名/版数 + ページ番号
   ========================================================================== */
@page {
  @bottom-left {
    content: var(--footer-left, "");
    font-size: 8pt;
    color: #666;
    padding: 2mm 4mm;
  }
  @bottom-center {
    content: var(--footer-center, "");
    font-size: 8pt;
    color: #666;
  }
  @bottom-right {
    content: var(--footer-right, "") " | " counter(page) " / " counter(pages);
    font-size: 8pt;
    color: #666;
    padding: 2mm 4mm;
  }
}

/* 代替フッタ（CSS Paged Media 未対応ブラウザ用、必要時に有効化）
   report-generator.js が以下のクラスを設定するとフォールバック表示 */
.report-footer-fallback {
  display: none;  /* 通常は非表示 */
  position: fixed;
  bottom: 5mm;
  left: 12mm;
  right: 12mm;
  font-size: 8pt;
  color: #666;
  border-top: 1px solid #ccc;
  padding-top: 1mm;
  display: flex;
  justify-content: space-between;
}
body.use-fallback-footer .report-footer-fallback { display: flex; }
