/* Signal Scope - print / Save as PDF. Light theme, single column, 11pt, all sections open, chips printed as [n], sources spelled out. */
@page { size: A4; margin: 16mm; }
@media print {
  html, body, body.sg-page { background: #fff !important; color: #111 !important; font-size: 11pt !important; overflow: visible !important; }
  .banner-container, .nav-container, header.site-nav, footer, .site-footer, .footer-v2, #cookie-consent, .cookie-banner, [class*="cookie"], .sg-skip, .sg-bar, .sg-rail, .sg-banners, .sg-secbar, .sg-rhead__actions, .sg-sec__toggle, .sg-toasts, .sg-viewtoggle, .sg-map__cap .sg-btn, .sg-expandall,
  .sg-sharebanner .sg-btn, .sg-samplebanner .sg-btn, .sg-iconbtn, #tpiUpgradeModal, .sg-layer, .sg-menu, .sg-pop, noscript, .sg-callout--legacy .sg-btn { display: none !important; }
  .sg-app, .sg-layout, .sg-canvas, .sg-pagewrap { display: block !important; max-width: none !important; padding: 0 !important; margin: 0 !important; }
  .sg, .sg * { color: #111 !important; background: transparent !important; box-shadow: none !important; text-shadow: none !important; backdrop-filter: none !important; animation: none !important; }
  .sg a { color: #1d3fbf !important; text-decoration: underline; }
  .sg h1, .sg h2, .sg h3, .sg h4 { color: #111 !important; break-after: avoid; page-break-after: avoid; }
  .sg-rhead { position: static !important; display: block; border-bottom: 2px solid #111; padding: 0 0 8pt; margin-bottom: 10pt; }
  .sg-rhead__title { font-size: 20pt; -webkit-line-clamp: unset; display: block; }
  .sg-rhead__meta { font-size: 10pt; }
  .sg-report__body { display: block; padding: 0; }
  .sg-sec { display: block; content-visibility: visible !important; break-inside: auto; margin: 0 0 14pt; }
  .sg-sec__title { font-size: 15pt; border-bottom: 1px solid #999; padding-bottom: 3pt; margin-bottom: 8pt; }
  .sg-sec__body[hidden] { display: block !important; }
  .sg-sec__body { display: block; }
  .sg-sec__body > * + * { margin-top: 10pt; }
  /* V5-11: only small cards are kept whole. The map figure and the plan columns may break across pages (keeping them whole left up to half a page blank). */
  .sg-verdict, .sg-gauge, .sg-finding, .sg-action, .sg-gap, .sg-bcard, .sg-pricecard, .sg-seocard, .sg-swot__q, .sg-plancard, .sg-source, .sg-stat, .sg-cocard, .sg-watch__item, .sg-extra, .sg-legend, .sg-legend__row, .sg-disclaimer, tr { break-inside: avoid; page-break-inside: avoid; }   /* V6-05b: the evidence legend travels as one block (its last row was orphaned at the top of a page) */
  .sg-plancol, .sg-plancols, .sg-swot, .sg-bcgrid, .sg-pricegrid, .sg-seogrid { break-inside: auto; page-break-inside: auto; }
  .sg-map { display: block; break-inside: avoid; page-break-inside: avoid; }   /* caption + drawing travel together (the drawing cannot split); the table twin is not printed, so the block is short enough to fit under the matrix */
  .sg-map { border: 0 !important; padding: 0 !important; }   /* no box around a figure that may start on the next page */
  .sg-verdict, .sg-gauge, .sg-finding, .sg-action, .sg-gap, .sg-bcard, .sg-pricecard, .sg-seocard, .sg-swot__q, .sg-plancol, .sg-stat, .sg-source, .sg-extra { border: 0.75pt solid #999 !important; border-radius: 4pt; padding: 8pt; }
  .sg-gauges, .sg-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6pt; }
  .sg-gauge__bar { border: 0.75pt solid #666 !important; height: 6pt; }
  /* V6-05c: Chrome's default Save as PDF drops background paint, which removed the score bar. The fill is drawn as a solid top and bottom border
     (borders always print), so the bar shows with "Background graphics" off; a withheld score (is-na) draws nothing. */
  .sg-gauge__fill { background: #444 !important; border-top: 3pt solid #444 !important; border-bottom: 3pt solid #444 !important; border-left: 0 !important; border-right: 0 !important; box-sizing: border-box; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  .sg-gauge.is-na .sg-gauge__fill { display: none !important; }
  .sg-gauge__tick { background: #666 !important; border-left: 0.75pt solid #666 !important; width: 0 !important; }
  .sg-tablewrap { overflow: visible !important; border: 0 !important; }
  .sg-matrix { min-width: 0 !important; width: 100% !important; max-width: 100% !important; table-layout: fixed !important; font-size: 8pt; }
  .sg-matrix th, .sg-matrix td { position: static !important; padding: 3pt 3pt; width: auto !important; white-space: normal !important; overflow-wrap: normal; word-break: normal; hyphens: none; }
  .sg-matrix .sg-th--evidence, .sg-matrix .sg-td--evidence { display: none !important; } /* V5-11: [n] chips are useless on paper and the column forced mid-word breaks in the others */
  /* V6-05a: "Momentum" ran into the next header in its 9% column (8pt bold, keep-all). Headers are 7.5pt, may wrap at a letter if they must, and the
     threat / momentum columns are 11% so a one-word header fits on A4 without touching its neighbour. */
  .sg-matrix thead th { font-size: 7.5pt; line-height: 1.2; overflow-wrap: anywhere; word-break: normal; hyphens: auto; }
  .sg-matrix .sg-co__dom, .sg-matrix .sg-tagchip { overflow-wrap: anywhere; }
  /* V7-04: the threat / momentum reasons sit in 11% columns (~74px on A4). At 7pt the longest real word ("repositioning.") fits, so lines
     break between words only; break-word remains as the last resort for a token longer than the column (never hyphens: auto, which
     hyphenated words that fitted). */
  .sg-matrix .sg-cell-why { font-size: 7pt; max-width: none; overflow-wrap: break-word; hyphens: manual; }
  .sg-matrix .sg-th--name { width: 17% !important; } .sg-matrix .sg-th--price_tier { width: 8% !important; } .sg-matrix .sg-th--threat, .sg-matrix .sg-th--momentum { width: 11% !important; }
  .sg-matrix thead th { text-transform: none; letter-spacing: 0; }
  .sg-table { max-width: 100% !important; }
  .sg-tablewrap, .sg-matrixholder { max-width: 100% !important; overflow: visible !important; }
  .sg-tagchip, .sg-taglist { white-space: normal; }
  .sg-scrollhint { display: none !important; }
  .sg-table th, .sg-table td { border: 0.5pt solid #bbb !important; font-size: 8.5pt; }
  .sg-table thead th { position: static; font-weight: 700; background: #eee !important; }
  .sg-matrixholder[data-view="cards"] .sg-tablewrap { display: block !important; } .sg-matrixholder[data-view="cards"] .sg-cocards, .sg-cocards { display: none !important; }
  .sg-sortbtn .sg-icon { display: none; }
  .sg-swot, .sg-pricegrid, .sg-bcgrid, .sg-seogrid { display: grid; grid-template-columns: 1fr 1fr; gap: 8pt; }
  .sg-plancols { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6pt; }
  .sg-oppwrap { display: block; } .sg-grid3 { display: none; }
  .sg-chip, .sg-ev, .sg-pill, .sg-tagchip, .sg-domain { border: 0.5pt solid #777 !important; border-radius: 3pt; padding: 0 3pt; font-size: 8pt; white-space: normal; max-width: 100%; }
  /* source chips print as [n] */
  .sg-ev--src { border: 0 !important; padding: 0; }
  .sg-ev--src::before { content: "["; } .sg-ev--src::after { content: "]"; position: static; inset: auto; }
  .sg-icon { display: none !important; }
  .sg-sources { display: block; } .sg-source { margin-bottom: 4pt; }
  .sg-source a[href]::after { content: " (" attr(href) ")"; font-size: 8pt; color: #333; word-break: break-all; }
  .sg-map__label, .sg-map__axis, .sg-map__axistitle { fill: #111 !important; stroke: none !important; }
  .sg-map__grid, .sg-map__frame { stroke: #aaa !important; }
  .sg-map__pt circle:not(.sg-map__hit) { fill: #666 !important; stroke: #111 !important; }
  .sg-map__hit { fill: none !important; stroke: none !important; } /* the transparent hit ring printed as a large grey disc around every dot */
  .sg .sg-map__svg { max-width: 380pt !important; margin: 0 auto; } /* a full-width map was a page on its own; `.sg svg` in base.css outranks a lone class */
  .sg-map__leader { stroke: #666 !important; }
  .sg-secnav__arrow, .sg-cmd__close { display: none !important; }
  .sg-map__stage[hidden] { display: block !important; } .sg-map table { display: none !important; }   /* print the drawing, never its table twin as well */
  .sg-disclaimer { border-top: 0.75pt solid #666 !important; font-size: 9pt; }
  .sg-report::after { content: "Signal Scope by The Prompt Index. Findings are decision support, not professional advice. Verify sources before acting."; display: block; margin-top: 12pt; padding-top: 6pt; border-top: 0.75pt solid #666; font-size: 8.5pt; color: #333; }
  details > * { display: block !important; }
  /* V7-04 (real report 9902): base.css gives every td/th `overflow-wrap: anywhere`, which also shrinks a cell's MIN-CONTENT width to one
     letter, so an auto-layout plan table squeezed its columns and broke "Stand/ard", "Profes/sional", "$16/m/o", and a chip in the
     narrow Fit column printed as "Qui/ck/win". On paper a word breaks only when it alone is wider than its column (break-word keeps
     the min-content width), plan names get the widest column, and a short chip never wraps at all. */
  .sg td, .sg th, .sg p, .sg li, .sg dd, .sg dt { overflow-wrap: break-word; word-break: normal; hyphens: manual; }
  .sg-pricecard .sg-table { table-layout: auto !important; width: 100% !important; }
  .sg-pricecard .sg-table th[scope="row"] { width: 38%; }
  .sg-pricecard .sg-table th, .sg-pricecard .sg-table td { white-space: normal; padding: 3pt 4pt; }
  .sg-pricecard { min-width: 0; overflow: hidden; }
  .sg-table .sg-chip, .sg-chip--sm { white-space: nowrap !important; overflow-wrap: normal; word-break: keep-all; }
  /* ...except in the matrix's narrow level / tier columns, where a chip may break at a space or after a hyphen ("Mid-/market"), never inside a word. */
  .sg-matrix .sg-chip { white-space: normal !important; overflow-wrap: normal; word-break: normal; max-width: 100%; }
  .sg-chip { overflow-wrap: break-word; word-break: normal; }
  /* Chrome does not paint a <button> box in a table header it REPEATS on a continuation page, which left Company / Threat / Momentum /
     Price level blank there (crit/r6_9902_p3_top.png). On paper the sort button is no box at all: display: contents leaves only its label
     text in the cell (measured on the figma_deep PDF: inline-flex and appearance: none both still printed the repeated header blank). */
  .sg-matrix .sg-sortbtn { display: contents !important; }
  .sg-matrix thead { display: table-header-group; }
  .sg-clamp3 { display: block !important; -webkit-line-clamp: unset !important; overflow: visible !important; }
  .sg-matrix tbody th.sg-td--name { box-shadow: none !important; border-bottom-color: #bbb !important; }
  /* Headings travel with what follows them ("Do this first" was orphaned at the foot of page 1): the next block may not start a page
     after its heading, and the grid wrappers become plain blocks so the fragmentation hints apply. */
  .sg-block, .sg-actions { display: block !important; }
  .sg-actions > * + * { margin-top: 6pt; }
  .sg h2 + *, .sg h3 + *, .sg h4 + * { break-before: avoid; page-break-before: avoid; }
  .sg-block > .sg-h3 + * > :first-child { break-before: avoid; page-break-before: avoid; }
}
/* Narrow print (a phone-width window being printed): the nine-column matrix cannot fit, so print one card per company instead. */
@media print and (max-width: 600px) {
  .sg-matrixholder .sg-tablewrap, .sg-matrixholder[data-view="cards"] .sg-tablewrap { display: none !important; }
  .sg-matrixholder .sg-cocards, .sg-cocards { display: grid !important; grid-template-columns: 1fr; gap: 6pt; }
  .sg-swot, .sg-pricegrid, .sg-bcgrid, .sg-seogrid, .sg-plancols { grid-template-columns: 1fr !important; }
  .sg-gauges, .sg-stats { grid-template-columns: 1fr 1fr !important; }
  .sg-table { table-layout: fixed !important; width: 100% !important; min-width: 0 !important; }
  .sg-table th, .sg-table td { white-space: normal !important; overflow-wrap: break-word; padding: 2pt 3pt; }
  .sg-oppwrap { display: block; } .sg-oppwrap > * + * { margin-top: 8pt; }
}
