/* ==========================================================================
   Rapport — impression / PDF A4 (chargé avec media="print"). S2-07 et S2-08.
   Référence : design/maquettes/rapport/07-pdf.html et 05-synthese.html.
   - Page 1 : couverture pleine page avec le sommaire (sans numéros de page :
     Chromium n'implémente pas target-counter() à l'impression).
   - Pages suivantes : marges 22/20/20 mm, titre courant (prénom, partie) et folio
     par boîtes de marge @page (Chromium ≥ 131 ; Safari n'a ni titre ni folio).
   - Coupure de page PAR PARTIE seulement ; les chapitres s'enchaînent.
   - « Ta carte en une page » : une page A4 exacte (page nommée « carte »).
   - Toujours en clair (theme-init.js), fond blanc pour les pages intérieures,
     visualisations vectorielles. Le prénom, la date de scellement et le titre
     courant sont posés par js/rapport/print.js (CSSOM : la CSP interdit <style>).
   ========================================================================== */

/* Format et marges (statiques). Les boîtes de marge (titre courant, partie, folio, date de scellement)
   sont posées par js/rapport/print.js : le prénom et la date n'existent que dans le rapport rendu, et
   Chromium ignore les boîtes de marge déclarées ici lorsque la feuille est liée en media="print". */
@page { size: A4; margin: 22mm 20mm 20mm; }
@page :first { margin: 0; }
@page carte { size: A4; margin: 10mm 12mm; }

@media print {
  html, body, body.report-page { background: white !important; background-image: none !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  body { font-size: 10pt; }
  html { scroll-behavior: auto; }
  .no-print, .topbar, .skip, .site-foot, .readbar, .reader__nav, .reader__margin, .sheet, .sheet-scrim, .enhance-banner, .share-mini, .op-actions, .next, .xlink::after { display: none !important; }
  .premium-shell { max-width: none; padding: 0; overflow: visible; }
  .cover.rp, .toc.rp { display: none; }
  a[href]::after { content: ""; }
  .reader { display: block; }
  .reader__main { max-width: none; width: auto; margin: 0; padding: 0; }

  /* Les replis sont dépliés : un <details> fermé masquerait son contenu (le JS d'impression les ouvre aussi). */
  details::details-content { content-visibility: visible; display: block; height: auto; }
  details > summary { list-style: none; }
  details > summary::-webkit-details-marker { display: none; }
  .more, .dw-line > summary .i, .dw-line__body { display: none; }

  /* ---------- Page 1 : couverture et sommaire ---------- */
  .print-cover { display: flex; flex-direction: column; height: 296mm; padding: 18mm 20mm 12mm; background: var(--paper); break-after: page; break-inside: avoid; overflow: hidden; }
  .print-cover__top { display: flex; justify-content: space-between; align-items: baseline; }
  .print-cover .brand .ko-b { font-size: 15px; }
  .print-cover .brand span:last-child { font-size: 17px; }
  .print-cover__body { margin-top: 10mm; display: grid; grid-template-columns: 1fr 72mm; gap: 12mm; align-items: start; }
  .print-cover .cover__title { margin: 0; line-height: 0.9; }
  .print-cover .cover__title em { font-size: 26px; }
  .print-cover .cover__title strong { font-size: 92px; margin-top: 4px; }
  .print-cover .cover__birth { text-align: left; margin-top: 10px; font-size: 12px; min-height: 0; }
  .print-cover .cover__dm { margin-top: 8mm; justify-items: start; grid-auto-flow: column; justify-content: start; align-items: baseline; gap: 12px; }
  .print-cover .cover__dm .kicker { display: none; }
  .print-cover .cover__dm-name { font-size: 26px; }
  .print-cover .cover__sig { margin: 7mm 0 0; max-width: 26em; font-size: 21px; min-height: 0; text-align: left; }
  .print-cover .seal-wrap { --s: 72mm; gap: 6px; }
  .print-cover .seal { box-shadow: none; }
  .print-cover .seal__legend span { font-size: 9px; letter-spacing: 0.08em; }
  .print-cover .seal__legend small { font-size: 10px; }
  .print-cover .tldr { margin: 7mm 0 0; max-width: none; box-shadow: none; padding: 14px 16px; break-inside: avoid; }
  .print-cover .tldr li { font-size: 14.5px; }
  .print-cover .tldr ol { gap: 7px; }
  .print-toc { margin-top: auto; padding-top: 7mm; border-top: 1px solid var(--line-strong); }
  .print-toc h2 { font: 600 24px/1.1 var(--font-display); }
  .print-toc__cols { margin-top: 4mm; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8mm; }
  .print-toc h3 { font: 650 9px/1.3 var(--font-ui); letter-spacing: 0.16em; text-transform: uppercase; color: var(--accent-ink); padding-bottom: 4px; border-bottom: 1px solid var(--line); }
  .print-toc li { display: grid; grid-template-columns: 18px 1fr auto; gap: 4px; align-items: baseline; padding: 4px 0; font: 400 13px/1.2 var(--font-display); border-bottom: 1px dotted var(--line); }
  .print-toc li span:first-child { font-style: italic; color: var(--ink-3); }
  .print-toc li span:last-child { font: 400 10px var(--font-ui); color: var(--ink-2); }
  .print-toc__extra { margin-top: 4mm; display: flex; flex-wrap: wrap; gap: 4mm 10mm; font-size: 10px; color: var(--ink-2); }
  .print-toc .disclaimer { margin: 4mm 0 0; text-align: left; max-width: none; font-size: 9px; }

  /* ---------- Chapitres : flux continu, coupure par partie ---------- */
  .chapter[data-part="0"] { page: part0; }
  .chapter[data-part="1"] { page: part1; }
  .chapter[data-part="2"] { page: part2; }
  .chapter { padding: 0; margin-top: 5mm; border-top: 1px solid var(--line-soft); padding-top: 4mm; font-size: 10pt; }
  .chapter:first-child, .chapter[data-part-first] { margin-top: 0; border-top: 0; padding-top: 0; break-before: page; }
  .chapter[data-part-first] .chapter__part { padding-bottom: 3mm; border-bottom: 1.5px solid var(--accent); margin-bottom: 1mm; font-size: 10px; }
  .chapter[data-part-first] .chapter__part::after { display: none; }
  .chapter:not([data-part-first]) .chapter__part { display: none; }
  .chapter__open { margin-top: 4mm; break-after: avoid; }
  .chapter__num { font-size: 44px; }
  .chapter__title { font-size: 23px; break-after: avoid; }
  .chapter__time { font-size: 9.5px; }
  .chapter__key { margin-top: 3mm; font-size: 14px; padding-left: 12px; break-inside: avoid; break-after: avoid; }
  .prose { margin-top: 2.5mm; font-size: 10.2pt; line-height: 1.44; orphans: 3; widows: 3; text-align: justify; hyphens: auto; }
  .prose p + p, .prose > p + .has-side, .prose > .has-side + p { margin-top: 0.55em; }
  .dropcap::first-letter { font-size: 3.4em; }
  .term { text-decoration: none; }
  .term sup, .gloss-pop { display: none !important; }
  .has-side { break-inside: avoid-page; }
  .sidenote { display: block; position: static; width: auto; margin-top: 1.5mm; padding-left: 8px; border-left: 2px solid var(--accent); font: 400 8.5pt/1.4 var(--font-ui); color: var(--ink-2); text-align: left; hyphens: manual; }
  .sidenote b { display: inline; font-size: 8pt; margin-right: 4px; }
  .pull { margin: 2mm 0; padding: 0 6mm 1.5mm; break-inside: avoid; }
  .pull::before { height: 20px; font-size: 40px; line-height: 1.1; }
  .pull blockquote { font-size: 16.5px; }
  .pull figcaption { display: none; }
  .chapter__end { display: none; }
  .xref { margin-top: 3mm; font-size: 9.5pt; break-inside: avoid; }

  /* Encadrés, cartes, visualisations : insécables */
  .practice, .advice, .balance, .allies-box, .key, .why, .pcard, .gcard, .dw-now, .dw-next, .now-card, .viz, .keys { break-inside: avoid; box-shadow: none; }
  .practice { margin: 4mm 0 0; }
  .practice__head { padding: 8px 12px 6px; }
  .practice__head h3 { font-size: 16px; }
  .practice__rows { display: grid; grid-template-columns: 1fr 1fr; }
  .practice__row { grid-template-columns: 1fr; padding: 6px 12px; gap: 0; }
  .practice__row + .practice__row { border-top: 0; }
  .practice__row:nth-child(n + 3) { border-top: 1px solid var(--line-soft); }
  .practice__row:nth-child(even) { border-left: 1px solid var(--line-soft); }
  .practice__ico { display: none; }
  .practice__row p { font-size: 10.5pt; line-height: 1.35; }
  .practice__src { font-size: 8.5px; padding: 5px 12px 6px; }
  .advice { margin: 4mm 0 0; padding: 12px 14px 10px; }
  .advice h3 { font-size: 18px; }
  .advice__lead, .advice li { font-size: 10.5pt; }
  .advice ol { gap: 6px; margin-top: 8px; }
  .advice__note { display: none; }
  .count-table, .viz .legend { display: none; }
  .viz { margin: 3mm 0 0; display: flow-root; } /* flow-root : sans lui Chromium repousse la figure à la page suivante */
  .viz--wheel { max-width: 92mm; }
  .viz-m { display: block; } .viz-d { display: none; }
  .viz--frieze { margin: 4mm 0 0; padding: 8px; }
  .keys { margin-top: 4mm; grid-template-columns: repeat(3, 1fr); gap: 6px; }
  .key { grid-template-columns: 1fr; padding: 8px 10px; gap: 6px; }
  .key__badge { width: 30px; height: 30px; font-size: 16px; }
  .key strong { font-size: 14px; } .key p { font-size: 9pt; }
  .why { margin-top: 4mm; padding: 10px 12px; } .why p { font-size: 10.5pt; }
  .balance { margin: 4mm 0 0; padding: 12px 14px; }
  .allies-box { margin-top: 4mm; padding: 10px 14px; }
  .pillars { display: grid; grid-template-columns: 1fr 1fr; gap: 4mm; margin-top: 4mm; }
  .pcard { padding: 10px 12px; margin: 0; }
  .pcard__narr p { font-size: 9.5pt; }
  .gcards { display: grid; grid-template-columns: 1fr; gap: 3mm; margin-top: 4mm; }
  .gcard { padding: 6px 12px; }
  .gcards { gap: 2mm; margin-top: 3mm; }
  .gcard p { font-size: 9.2pt; line-height: 1.38; }
  .gcard h3 { font-size: 15px; }
  .dw-now, .dw-next, .now-card { margin-top: 4mm; padding: 10px 14px; }
  .dw-card__text p { font-size: 10pt; line-height: 1.42; }
  .dw-card__chips { display: none; }
  .now-card { padding: 8px 12px; }
  .now-card p { font-size: 9.6pt; line-height: 1.38; margin-top: 1.5mm; }
  .now-card__lead { font-size: 12.5pt; }
  .now-card .meta { font-size: 8pt; }
  .dw-line > summary { padding: 1px 0; min-height: 0; }
  .dw-past { margin-top: 3mm; } .dw-past h4 { margin: 0 0 1mm; }
  .dw-line { break-inside: avoid; border-bottom: 1px solid var(--line-soft); }
  .dw-past h4 { break-after: avoid; }
  .now-grid { display: block; }

  /* ---------- « Ta carte en une page » : A4 exact ---------- */
  .onepage { page: carte; display: flex; flex-direction: column; break-before: page; break-after: page; break-inside: avoid; width: auto; max-width: none; height: 275mm; overflow: hidden; margin: 0; padding: 0; border: 0; }
  body[data-print="card"] #premium-root > :not(#carte), body[data-print="card"] .premium-footer { display: none !important; }
  body[data-print="card"] .onepage { break-before: auto; break-after: auto; }
  .op-head { grid-template-columns: 1fr auto; justify-items: start; text-align: left; align-items: center; gap: 12px; }
  .op-head h2 { font-size: 40px; } .op-head h2 em { font-size: 19px; }
  .op-head .seal-wrap { --s: 118px; } .op-head .seal { box-shadow: none; }
  .op-head .seal__legend span { font-size: 6.5px; letter-spacing: 0; } .op-head .seal__legend small { display: none; }
  .op-sig { margin: 3mm 0 0; max-width: none; text-align: left; font-size: 17px; }
  .op-grid { margin-top: 4mm; grid-template-columns: 1fr 1fr; gap: 8px; flex: 1; align-content: start; }
  .blk { padding: 10px 12px 9px; box-shadow: none; break-inside: avoid; }
  .blk.wide { grid-column: 1 / -1; }
  .blk > h3 { font-size: 9.5px; }
  .arch .ko-b { font-size: 46px; } .arch strong { font-size: 19px; } .arch p { font-size: 12.5px; margin-top: 4px; }
  .sig-viz { grid-template-columns: 96px 1fr; } .sig-list { font-size: 11px; gap: 4px; } .sig-list b { font-size: 14px; }
  .forces { gap: 6px; } .forces strong { font-size: 15px; } .forces small { font-size: 10.5px; }
  .rem-lead { font-size: 13.5px; margin-top: 5px; }
  .blk .allies { font-size: 11px; margin-top: 6px; gap: 4px 10px; }
  .period { display: grid; grid-template-columns: 1.35fr 1fr; gap: 6px 16px; align-items: center; }
  .period > h3 { grid-column: 1 / -1; }
  .period p { margin-top: 0; font-size: 13px; line-height: 1.35; }
  .advice3 { gap: 5px; } .advice3 li { font-size: 13px; line-height: 1.3; grid-template-columns: 18px 1fr; }
  .hidden-signs { gap: 4px; font-size: 11px; margin-top: 5px; }
  .op-foot { margin-top: 6px; font-size: 9px; }

  /* ---------- Fin de lecture et annexe ---------- */
  .legacy { max-width: none; padding: 0; }
  .colophon { break-inside: avoid; padding: 5mm 0 3mm; border-top: 1px solid var(--line); }
  .colophon__stamp { width: 36px; height: 36px; font-size: 18px; }
  .colophon__close { font-size: 17px; }
  .colophon__link { display: none; }
  .annex-fold { margin: 0; border: 0; max-width: none; }
  .annex-fold > .tech-fold-summary { display: none; } /* le titre « Annexe technique » suit */
  .annex-fold > .tech-fold-summary::after { display: none; }
  .annex-fold .tech-fold-body { padding: 0; }
  .annex { break-before: auto; }
  .annex-table { font-size: 7.5pt; }
  .annex-table th, .annex-table td { padding: 1px 5px; }
  .annex-table .ko { font-size: 9pt; }
  .annex-table tr { break-inside: avoid; }
  .annex-h, .gl-list h3 { break-after: avoid; margin: 9px 0 4px; font-size: 1.05rem; }
  .annex-title { font-size: 1.25rem; margin: 2px 0 4px; }
  /* Le tableau des 60 années (2 pages) reste à l'écran : le PDF garde les huit décennies et l'empreinte. */
  .annex-years, .annex-elems, .annex-markers, .annex-intro, .gl-list { display: none; }
  .gl-list dl { gap: 4px; } .gl-item { padding-bottom: 4px; break-inside: avoid; }
  .gl-item dd { font-size: 8pt; line-height: 1.35; }
  .premium-footer { break-inside: avoid; padding-top: 3mm; font-size: 8pt; }
  .premium-footer p { margin: 1mm 0; }

  /* « Ton année » */
  .annual-chapter { break-inside: auto; }
  .yr-card, .yr-peaks, .yr-strip { break-inside: avoid; }
  .yr-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
