/* National OS Japan — Print Stylesheet (Phase G5)
 *
 * 全 view (index.html / trace.html) の印刷時レイアウトを破綻なく整える。
 * 検証: Chrome / Firefox / Safari の Ctrl+P (Cmd+P) プレビューで
 * 5 view + Tax Trace + プロファイルパネルが page break で切れず読み取れること。
 *
 * 設計方針:
 *   1. print 時は dark mode 強制解除 (用紙は常に白)
 *   2. インタラクション要素 (button / select / theme-toggle / view-toggle)
 *      および sidebar / header controls は非表示
 *   3. chart / card は page-break-inside: avoid で切らせない
 *   4. リンクは href URL を ::after で後置 (紙でも参照先が分かる)
 *   5. ECharts / Leaflet の SVG/Canvas は color-adjust: exact で色を保持
 */

@media print {
  /* === Force light mode token (dark mode override) === */
  :root,
  [data-theme="dark"],
  :root:not([data-theme="light"]) {
    --bg-hero-start: #FFFFFF;
    --bg-hero-end:   #FFFFFF;
    --bg-section:    #FFFFFF;
    --bg-card:       #FFFFFF;
    --bg-alt:        #F5F3F0;
    --bg-code:       #F8F6F3;
    --bg-overlay:    rgba(255, 255, 255, 0);

    --bg:      #FFFFFF;
    --surface: #FFFFFF;

    --text-primary:   #000000;
    --text-secondary: #333333;
    --text-tertiary:  #666666;
    --text-disabled:  #999999;
    --text-on-accent: #000000;

    --accent:       #2C5A3F;
    --accent-light: #E8F3EF;
    --accent-dark:  #1A3626;

    --border:       #999999;
    --border-light: #CCCCCC;
    --border-dark:  #666666;

    --shadow-sm: none;
    --shadow-md: none;
    --shadow-lg: none;
  }

  /* === Page setup === */
  @page {
    size: A4;
    margin: 18mm 15mm 20mm 15mm;
  }
  @page :first {
    margin-top: 22mm;
  }

  html, body {
    background: #FFFFFF !important;
    color: #000000 !important;
    font-size: 10.5pt;
    line-height: 1.55;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* === Hide interactive / chrome === */
  header .header-controls,
  .theme-toggle,
  .view-toggle,
  .sidebar,
  .topbar,
  nav.tabs,
  .breadcrumb-nav button,
  .pagination,
  .filter-bar,
  .toast-container,
  .modal-overlay,
  .skeleton,
  .spinner,
  button:not(.print-keep),
  select,
  input[type="search"],
  input[type="text"],
  .trace-header-controls,
  .trace-search,
  .trace-drill-stack,
  .autocomplete-popup {
    display: none !important;
  }

  /* === Headings === */
  h1 { font-size: 18pt; margin: 0 0 6pt; page-break-after: avoid; }
  h2 { font-size: 14pt; margin: 12pt 0 4pt; page-break-after: avoid; }
  h3 { font-size: 12pt; margin: 8pt 0 3pt; page-break-after: avoid; }
  h4 { font-size: 11pt; margin: 6pt 0 2pt; page-break-after: avoid; }

  /* === Cards / blocks: 切らせない === */
  .card,
  .chart,
  .panel,
  .profile-tabs__panel,
  .tier-section,
  .ranking-row,
  .audit-item,
  .compare-row,
  table,
  figure,
  .echart-container,
  .leaflet-container {
    page-break-inside: avoid;
    break-inside: avoid;
  }

  /* === Tables === */
  table {
    border-collapse: collapse;
    width: 100%;
    font-size: 9.5pt;
  }
  th, td {
    border: 1px solid #999;
    padding: 3pt 5pt;
    text-align: left;
  }
  thead { display: table-header-group; }
  tfoot { display: table-footer-group; }
  tr { page-break-inside: avoid; }

  /* === Links: URL を後置 (用紙でも参照先が分かる) === */
  a[href]:not(.no-print-url)::after {
    content: " (" attr(href) ")";
    font-size: 9pt;
    color: #555;
    word-wrap: break-word;
  }
  /* 内部 anchor (#id) や javascript:; は後置しない */
  a[href^="#"]::after,
  a[href^="javascript:"]::after,
  a[href=""]::after {
    content: "";
  }

  /* === ECharts / Leaflet: 色保持 === */
  canvas,
  svg,
  .echart-container,
  .leaflet-container {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
    max-width: 100% !important;
    height: auto !important;
    page-break-inside: avoid;
  }

  /* === Trace view (Sankey 印刷時の高さ調整) === */
  .trace-page #trace-sankey {
    height: 480px !important;
  }
  .trace-page .trace-header-back::after { content: ""; }

  /* === Status badges (印刷時にも残す) === */
  .badge,
  .status-pill {
    border: 1px solid #666;
    padding: 1pt 4pt;
    font-size: 9pt;
  }

  /* === Footer / page number hint === */
  body::after {
    content: "National OS Japan — " attr(data-print-source);
    display: block;
    margin-top: 12pt;
    font-size: 8.5pt;
    color: #666;
    text-align: center;
  }
}
