/*
 * Print stylesheet for every PDF and for browser print (#1008).
 *
 * Spec: docs/designs/print-spec.md. Linked once from _base.html with
 * media="print", so nothing here touches the screen.
 *
 * Opt-in: everything except @font-face, .no-print and .print-section is
 * scoped under .print-doc, the class a print document puts on its wrapper.
 * A page without it prints exactly as it did before this file existed.
 * There is no unnamed @page and no bare html/body/heading selector.
 *
 * Stored PDFs (apps/pdfs, docs/features/pdf-rendering.md) inline this same
 * file in pdfs/document_base.html, so browser print and the PDF match.
 *
 * Client branding is deferred until organization branding (#988) ships:
 * no client logo, colour or brand token lives here.
 */

/* ---- Tokens ------------------------------------------------------------
 * Every colour mirrors a token in docs/designs/design-system.pen (named in
 * its comment) and is used by a rule below. */
.print-doc {
  --print-color-text: #111827; /* pen: gray-900 */
  --print-color-text-muted: #374151; /* pen: gray-700 */
  --print-color-caption: #6B7280; /* pen: gray-500 */
  --print-color-accent-text: #8B6B3D; /* pen: gold-700 */
  --print-color-rule: #A67C00; /* pen: gold-600 */
  --print-color-hairline: #D1D5DB; /* pen: gray-300 */

  --print-size-caption: 9pt;
  --print-size-body: 10.5pt;
  --print-size-h3: 12pt;
  --print-size-h2: 14pt;
  --print-size-h1: 20pt;
  --print-size-cover-title: 28pt;
  --print-leading: 1.4;

  --print-space-1: 4pt;
  --print-space-2: 8pt;
  --print-space-3: 12pt;
  --print-space-4: 18pt;
  --print-space-5: 28pt;
}

/* ---- Fonts --------------------------------------------------------------
 * Montserrat for Latin; Noto for ja, zh-hans, ko and hi. The Noto families
 * ship Regular and Bold only, so Bold covers 600-700 and a SemiBold heading
 * in those scripts uses it rather than a synthesized weight. */
@font-face {
  font-family: "Montserrat Print";
  src: url("../assets/fonts/Montserrat/Montserrat-Regular.38712903602f.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
}
@font-face {
  font-family: "Montserrat Print";
  src: url("../assets/fonts/Montserrat/Montserrat-SemiBold.6e7bd3eacb1d.ttf") format("truetype");
  font-weight: 600;
  font-style: normal;
}
@font-face {
  font-family: "Montserrat Print";
  src: url("../assets/fonts/Montserrat/Montserrat-Bold.354dc625a35b.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
}
@font-face {
  font-family: "Noto Sans JP Print";
  src: url("../assets/fonts/NotoSansJP/NotoSansJP-Regular.02bb20cbb7d9.ttf") format("truetype");
  font-weight: 400;
}
@font-face {
  font-family: "Noto Sans JP Print";
  src: url("../assets/fonts/NotoSansJP/NotoSansJP-Bold.7b0f01180a0e.ttf") format("truetype");
  font-weight: 600 700;
}
@font-face {
  font-family: "Noto Sans SC Print";
  src: url("../assets/fonts/NotoSansSC/NotoSansSC-Regular.c465a38dae43.ttf") format("truetype");
  font-weight: 400;
}
@font-face {
  font-family: "Noto Sans SC Print";
  src: url("../assets/fonts/NotoSansSC/NotoSansSC-Bold.2e944489ee09.ttf") format("truetype");
  font-weight: 600 700;
}
@font-face {
  font-family: "Noto Sans KR Print";
  src: url("../assets/fonts/NotoSansKR/NotoSansKR-Regular.800640922d09.ttf") format("truetype");
  font-weight: 400;
}
@font-face {
  font-family: "Noto Sans KR Print";
  src: url("../assets/fonts/NotoSansKR/NotoSansKR-Bold.f805f930c725.ttf") format("truetype");
  font-weight: 600 700;
}
@font-face {
  font-family: "Noto Sans Devanagari Print";
  src: url("../assets/fonts/NotoSansDevanagari/NotoSansDevanagari-Regular.c9c2aaa06fa1.ttf") format("truetype");
  font-weight: 400;
}
@font-face {
  font-family: "Noto Sans Devanagari Print";
  src: url("../assets/fonts/NotoSansDevanagari/NotoSansDevanagari-Bold.76e7470939c5.ttf") format("truetype");
  font-weight: 600 700;
}

/* ---- Pages --------------------------------------------------------------
 * US Letter. The footer is language-neutral (a margin box's content cannot
 * be translated): the PsyOPTIMAL wordmark and "X / Y". Covers are a named
 * page with no footer, so only a cover page loses it. */
@page doc {
  size: letter;
  margin: 0.75in 0.75in 0.6in 0.75in;

  @bottom-left {
    content: "PsyOPTIMAL";
    font-family: "Montserrat Print", sans-serif;
    font-size: 8pt;
    font-weight: 600;
    color: #8B6B3D; /* pen: gold-700; margin boxes do not inherit custom properties */
  }
  @bottom-right {
    content: counter(page) " / " counter(pages);
    font-family: "Montserrat Print", sans-serif;
    font-size: 8pt;
    color: #6B7280; /* pen: gray-500 */
  }
}

@page cover {
  size: letter;
  margin: 0.75in;
}

/* ---- Global rules: same meaning the inline print blocks already give ---- */
.no-print {
  display: none !important;
}

.print-section {
  break-inside: avoid;
}

/* ---- Document root and typography -------------------------------------- */
.print-doc {
  page: doc;
  font-family: "Montserrat Print", sans-serif;
  font-size: var(--print-size-body);
  line-height: var(--print-leading);
  color: var(--print-color-text);
  background: #FFFFFF; /* pen: white */
  orphans: 3;
  widows: 3;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.print-doc:lang(ja) {
  font-family: "Noto Sans JP Print", "Montserrat Print", sans-serif;
}
.print-doc:lang(zh-hans) {
  font-family: "Noto Sans SC Print", "Montserrat Print", sans-serif;
}
.print-doc:lang(ko) {
  font-family: "Noto Sans KR Print", "Montserrat Print", sans-serif;
}
.print-doc:lang(hi) {
  font-family: "Noto Sans Devanagari Print", "Montserrat Print", sans-serif;
}
.print-doc:lang(ja),
.print-doc:lang(zh-hans),
.print-doc:lang(ko) {
  line-break: strict;
  word-break: normal;
  letter-spacing: 0;
}

.print-doc h1 {
  font-size: var(--print-size-h1);
  font-weight: 400;
  line-height: 1.2;
  color: var(--print-color-accent-text);
  margin: 0 0 var(--print-space-3);
  break-after: avoid;
}
.print-doc h2 {
  font-size: var(--print-size-h2);
  font-weight: 600;
  line-height: 1.25;
  margin: var(--print-space-4) 0 var(--print-space-2);
  break-after: avoid;
}
.print-doc h3 {
  font-size: var(--print-size-h3);
  font-weight: 600;
  line-height: 1.3;
  margin: var(--print-space-3) 0 var(--print-space-1);
  break-after: avoid;
}
.print-doc p {
  margin: 0 0 var(--print-space-2);
}
.print-doc a {
  color: inherit;
  text-decoration: underline;
}
.print-doc table {
  border-collapse: collapse;
  width: 100%;
}
.print-doc th,
.print-doc td {
  border-bottom: 0.5pt solid var(--print-color-hairline);
  padding: var(--print-space-1) var(--print-space-2);
  text-align: left;
  vertical-align: top;
}
.print-doc thead {
  display: table-header-group;
}
.print-doc tr,
.print-doc img,
.print-doc svg,
.print-doc figure {
  break-inside: avoid;
}

/* ---- Classes templates apply -------------------------------------------- */
.print-doc .print-cover {
  page: cover;
  break-after: page;
  min-height: 0;
  padding-top: 2.5in;
}
.print-doc .print-cover-title {
  font-size: var(--print-size-cover-title);
  font-weight: 400;
  line-height: 1.15;
  color: var(--print-color-accent-text);
  margin: 0 0 var(--print-space-3);
}
.print-doc .print-doc-header {
  border-bottom: 1.25pt solid var(--print-color-rule);
  padding-bottom: var(--print-space-2);
  margin-bottom: var(--print-space-4);
  break-after: avoid;
}
.print-doc .print-confidential {
  font-size: var(--print-size-caption);
  color: var(--print-color-text-muted);
}
.print-doc .print-page-break {
  break-before: page;
}
.print-doc .print-keep {
  break-inside: avoid;
}
.print-doc .print-caption {
  font-size: var(--print-size-caption);
  color: var(--print-color-caption);
}
.print-doc .print-footnote {
  font-size: var(--print-size-caption);
  color: var(--print-color-caption);
  border-top: 0.5pt solid var(--print-color-hairline);
  padding-top: var(--print-space-1);
  margin-top: var(--print-space-4);
}

/* ---- Web pages printed as documents -------------------------------------
 * A web page that opts in (report/report.html) keeps its screen layout; these
 * undo what only makes sense on screen. */
.print-doc header#header {
  padding: 0 0 var(--print-space-3);
}
.print-doc main,
.print-doc #main_header {
  max-width: none;
  padding-left: 0;
  padding-right: 0;
}
.print-doc .shadow-sm,
.print-doc .shadow-xs {
  box-shadow: none;
}
/* A category's "about" text sits in a click-to-open popover on screen; on
 * paper it is printed open, in place. */
.print-doc details::details-content {
  content-visibility: visible;
  display: contents;
}
.print-doc details.info-popover > div {
  position: static !important;
  box-shadow: none !important;
  border: 0 !important;
  padding: 0 !important;
  max-width: none !important;
  font-size: var(--print-size-body);
  font-weight: 400;
}
