/* ============================================================
   print.css — the aggregated "Export PDF" document
   ============================================================
   Loaded ONLY by templates/layouts/print.html (the /{version}/print/ page),
   never by style.css — so normal pages are untouched. It reuses the site design
   tokens and the .page-body / pill / callout / table styles from style.css so the
   exported PDF matches the web version, and layers on a cover, a table of contents,
   per-page sections, a screen-only toolbar, and the @media print rules that turn
   the page into a clean, paginated document the browser can "Save as PDF".

   Class contract (keep in sync with templates/layouts/print.html):
     body.print-body
     .print-toolbar  > .print-toolbar__back .print-toolbar__meta .print-toolbar__btn
     .print-doc
       .print-cover  > .print-cover__logo(.--light/.--dark) .print-cover__title
                        .print-cover__version .print-cover__date .print-cover__url
       .print-toc    > .print-toc__title  ol.print-toc__list > li.print-toc__item(.--d0..d3) > a
       .print-section[id]  > header.page-header (reused) + .page-body (reused)
   ============================================================ */

.print-body { background: var(--color-bg-muted); }

/* ---- screen-only floating toolbar ---- */
.print-toolbar {
  position: sticky; top: 0; z-index: 30;
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  padding: var(--space-3) var(--space-5);
  background: var(--color-bg);
  border-bottom: 1px solid var(--color-border);
}
.print-toolbar__back { color: var(--color-fg-muted); font-size: var(--text-sm); white-space: nowrap; }
.print-toolbar__back:hover { color: var(--color-fg); text-decoration: none; }
.print-toolbar__meta { color: var(--color-fg-subtle); font-size: var(--text-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.print-toolbar__btn {
  display: inline-flex; align-items: center; gap: var(--space-2); flex: 0 0 auto;
  padding: 8px var(--space-4); border: 0; border-radius: var(--radius-md);
  background: var(--color-accent); color: #fff; font: inherit; font-size: var(--text-sm); font-weight: 600;
  cursor: pointer;
}
.print-toolbar__btn:hover { background: var(--color-accent-hover); }
.print-toolbar__btn svg { display: block; }

/* ---- the document "sheet" ---- */
.print-doc {
  max-width: 820px; margin: var(--space-6) auto var(--space-10);
  background: var(--color-bg);
  border: 1px solid var(--color-border); border-radius: var(--radius-lg);
  padding: var(--space-8);
}

/* ---- cover ---- */
.print-cover {
  text-align: center;
  padding: var(--space-10) 0;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: var(--space-8);
}
.print-cover__logo { height: 56px; width: auto; margin: 0 auto var(--space-6); display: block; }
.print-cover__logo--dark { display: none; }
.print-cover__title { font-size: var(--text-3xl); letter-spacing: -0.02em; margin: 0 0 var(--space-2); }
.print-cover__version { font-size: var(--text-lg); color: var(--color-fg-muted); margin: 0 0 var(--space-5); }
.print-cover__date, .print-cover__url { font-size: var(--text-sm); color: var(--color-fg-subtle); margin: 0; }
.print-cover__url { margin-top: var(--space-1); }

/* ---- table of contents ---- */
.print-toc { margin-bottom: var(--space-8); }
.print-toc__title { font-size: var(--text-xl); margin: 0 0 var(--space-4); }
.print-toc__list { list-style: none; margin: 0; padding: 0; }
.print-toc__item { padding: 4px 0; border-bottom: 1px dotted var(--color-border); font-size: var(--text-sm); }
.print-toc__item a { color: var(--color-fg); }
.print-toc__item a:hover { color: var(--color-accent); }
.print-toc__item--d0 { font-weight: 600; margin-top: var(--space-3); }
.print-toc__item--d1 { padding-left: var(--space-4); }
.print-toc__item--d2 { padding-left: var(--space-6); }
.print-toc__item--d3 { padding-left: var(--space-8); }
.print-toc__item--d4 { padding-left: var(--space-10); }

/* ---- per-page sections ---- */
.print-section { padding-top: var(--space-6); }
.print-section + .print-section { margin-top: var(--space-5); }
/* the export is a continuous reference, so don't suppress the page chrome — but the
   per-page "Published/Updated" dates read as noise stacked back-to-back; keep them,
   just calmer. */
.print-section .page-meta { color: var(--color-fg-subtle); }

/* ============================================================
   print
   ============================================================ */
@media print {
  /* keep brand colors (pills, callouts, code, accents) in the PDF */
  * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  html, body { background: #fff; }
  .print-toolbar { display: none !important; }

  .print-doc {
    max-width: none; margin: 0; padding: 0;
    border: 0; border-radius: 0; background: #fff;
  }

  /* cover fills its own first page */
  .print-cover {
    min-height: 86vh;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    border: 0; margin: 0;
    break-after: page;
  }
  .print-toc { break-after: page; margin: 0; }

  /* one page (or more) per source page */
  .print-section { break-before: page; padding-top: 0; margin-top: 0; }
  .print-section:first-of-type { break-before: auto; }

  /* don't tear these blocks across a page boundary */
  pre, table, .callout, .endpoint-line, .auth-block, .responses, .request-body,
  .param-table tr, blockquote, figure, .embed { break-inside: avoid; }
  .page-header, h1, h2, h3 { break-after: avoid; }
  tr, img { break-inside: avoid; }

  a { color: var(--color-accent); text-decoration: none; }

  /* iframes don't render in print — the figcaption "open ↗" link is the fallback */
  .embed__frame { display: none; }

  @page { margin: 18mm 16mm; }
}
