/* ==========================================================================
   Search & Cite — PRINT
   Linked with media="print". A verification report is a document people file,
   hand to an editor and attach to a story; printing it must produce that
   document, not a screenshot of an app.

   SPECIFICITY IS THE WHOLE GAME IN THIS FILE.
   This sheet is the last <link> in the head, so at EQUAL specificity it wins
   on source order — but only at equal specificity. A bare `h3 { color:#000 }`
   is (0,0,1) and loses to `.insight-head h3 { color: var(--text-strong) }`
   (0,1,1) in the component sheets, which is #FFFFFF: every section heading
   printed white on white and simply vanished. The same trap took the stat
   numbers (`.mix-num`, `.integrity-score`) and every chip whose colour is set
   through a two-class selector like `.verdict-chip.v-supported` (0,2,0).

   So every rule below matches the component sheet's own selector shape, or
   goes one step beyond it. If you add a rule here, go and read the selector
   you are overriding first and count.
   ========================================================================== */

@page {
    margin: 18mm 15mm;
}

/* Ink, not glass. Every translucent surface becomes white with a hairline. */
body {
    background: #FFFFFF;
    color: #111111;
    font-size: 10.5pt;
    line-height: 1.45;
}

body::before,
body::after { display: none; }

/* ---- Chrome off --------------------------------------------------------
   Everything that is a control, an advert for the tool, or a thing you cannot
   click on paper. */
.banner-container,
.nav-container,
.mobile-menu,
.footer-v2,
footer,
.skip-link,
.hero-section,
.sidebar,
.header-actions,
.input-section,
.first-run,
.run-progress,
.board-jump,
.board-divider,
.citation-actions,
.claim-share,
.claim-retry,
.evidence-add,
.toggle-annotated,
.sc-modal,
#sc-toasts,
#tpi-upgrade-modal,
.tpi-modal-overlay,
.export-format-grid,
.btn-link,
.modal {
    display: none;
}

/* ---- Frame ------------------------------------------------------------- */
.app-container { max-width: none; padding: 0; }

.app-layout {
    display: block;
    gap: 0;
}

.app-layout,
.main-content,
.panel,
.claims-section,
.citation-section,
.insight-section {
    display: block;
    background: none;
    backdrop-filter: none;
    border: none;
    border-radius: 0;
    box-shadow: none;
    padding: 0;
    margin: 0 0 12pt;
    min-height: 0;
}

.content-header {
    background: none;
    border-bottom: 1pt solid #999;
    padding: 0 0 6pt;
    margin-bottom: 12pt;
}
.content-area { padding: 0; overflow: visible; }

/* Headings — matched to the component selectors, see the header note. */
h1, h2, h3, h4,
.claims-header h3,
.insight-head h3,
.citation-header h3,
.panel-title,
.sidebar-title,
.content-title,
.fr-title {
    color: #000;
    break-after: avoid;
    page-break-after: avoid;
}
.hero-title { -webkit-text-fill-color: #000; color: #000; }

/* ---- The summary bar prints as a header line, not as a floating pill ---- */
.board-summary {
    position: static;
    display: block;
    background: none;
    border: none;
    border-bottom: 1pt solid #999;
    border-radius: 0;
    box-shadow: none;
    padding: 0 0 6pt;
    margin: 0 0 10pt;
}
.integrity-meter { display: inline-flex; gap: 6pt; }
.integrity-copy  { display: inline-flex; gap: 4pt; align-items: baseline; }
.board-tally { display: inline-flex; gap: 6pt; margin-left: 10pt; }

/* ---- Cards stay whole -------------------------------------------------- */
.claim-card,
.evidence-item,
.plausibility,
.mix-stat {
    break-inside: avoid;
    page-break-inside: avoid;
    background: none;
    border: 1pt solid #CCC;
    border-radius: 0;
    padding: 8pt;
    margin-bottom: 8pt;
}
.claim-card { border-left-width: 3pt; }

.claim-card:has(.v-supported)    { border-left-color: #0A7A56; }
.claim-card:has(.v-disputed)     { border-left-color: #8A5800; }
.claim-card:has(.v-unsupported)  { border-left-color: #A81717; }
.claim-card:has(.v-insufficient) { border-left-color: #666; }

/* Primary ink. Each selector is at least as specific as the one it beats. */
.claim-main .claim-text,
.claim-main .claim-index,
.content-title,
.claims-header-info .claims-count,
.integrity-meter .integrity-score,
.integrity-copy .integrity-label,
.mix-stat .mix-num,
.mix-chip .mix-v,
.cite-line pre,
.cite-line .cite-num,
.claim-status-row .conf-value,
.claim-evidence .evidence-title,
.evidence-body .evidence-title {
    color: #111;
}
.mix-stat .mix-num { font-weight: 700; }

/* Secondary ink. Grey enough to recede on paper, black enough to read. */
.claim-main .claim-context,
.claim-evidence .claim-rationale,
.claim-rationale .claim-rationale-k,
.claim-evidence .evidence-head,
.evidence-body .evidence-meta,
.evidence-body .evidence-quote,
.evidence-quote .quote-text,
.plausibility .plaus-note,
.plausibility .plaus-caveat,
.insight-head .insight-sub,
.mix-stat .mix-lbl,
.mix-lbl .mix-sub,
.mix-chips .mix-chip,
.claim-evidence .no-evidence,
.claim-status-row .conf-label,
.verify-disclaimer,
.insight-note {
    color: #444;
}
.verify-disclaimer, .plausibility, .insight-note {
    background: none;
    border-color: #CCC;
}
.plausibility .plaus-tag { color: #111; }
.claim-evidence .claim-rationale { background: none; border-left: 2pt solid #DDD; }

/* A paraphrase must stay flagged in print — this is the copy an editor files.
   (0,2,0) to beat `.evidence-quote.is-paraphrased`.) */
.evidence-body .evidence-quote.is-paraphrased {
    background: none;
    border-left: 2pt dashed #8A5800;
    color: #111;
}
.evidence-quote .quote-flag { color: #8A5800; }

/* ---- State in ink -----------------------------------------------------
   Chips print as outlined text; browsers drop background colours by default,
   so a fill-only chip would print as an unreadable blank. Two-class selectors
   because that is how their colours are set. */
.claim-status-row .verdict-chip,
.evidence-item .stance-tag,
.evidence-meta .src-badge,
.mix-chips .mix-chip,
.board-tally .tally-chip,
.claim-status-row .disagree-flag,
.claim-status-row .run-flag {
    background: none;
    border: 1pt solid #999;
    color: #111;
    padding: 1pt 4pt;
}
.evidence-item .stance-tag i { border-color: #111; }

/* Confidence: the band NAME is the readable signal on paper; the meter is a
   hairline box with a grey fill, since colour may not print at all. */
.claim-status-row .conf-readout {
    display: inline-flex;
    gap: 6pt;
    background: none;
    border: 1pt solid #CCC;
    border-radius: 0;
    padding: 2pt 4pt;
    min-width: 0;
}
.conf-readout .conf-band { color: #111; }
.claim-status-row .conf-track,
.integrity-copy .integrity-bar {
    border: 1pt solid #999;
    background: none;
    height: 6pt;
    width: 60pt;
}
.conf-track .conf-fill,
.integrity-bar .integrity-fill { background: #555; }
.conf-track::after { display: none; }

/* ---- URLs visible ------------------------------------------------------
   A printed citation without its URL is not a citation. */
.evidence-body .evidence-title {
    color: #000;
    text-decoration: none;
    font-weight: 700;
}
.evidence-title[href]::after {
    content: ' (' attr(href) ')';
    font-weight: 400;
    font-size: 8.5pt;
    color: #444;
    word-break: break-all;
}
.evidence-title.is-unlinkable::after {
    content: ' [source URL withheld — not a valid web address]';
    font-size: 8.5pt;
    color: #444;
}
.readonly-banner {
    background: none;
    border: 1pt solid #CCC;
    color: #444;
}

/* ---- Citations --------------------------------------------------------- */
.citation-output {
    max-height: none;
    overflow: visible;
    background: none;
    border: none;
    padding: 0;
}
.cite-line { break-inside: avoid; page-break-inside: avoid; }
.cite-line pre { color: #111; font-family: inherit; max-width: none; }
.cite-hint { color: #444; }

/* ---- Annotated source -------------------------------------------------- */
.annotated-text {
    max-height: none;
    max-width: none;
    overflow: visible;
    background: none;
    border: 1pt solid #CCC;
    color: #111;
}
.annotated-text[hidden] { display: none; }
.anno { background: none; border-bottom: 1.5pt solid #666; }

/* Measures tuned for a 1440px column are wrong on a 180mm page. */
.claim-main .claim-text,
.claim-evidence .claim-rationale,
.evidence-body .evidence-quote,
.claim-main .claim-context { max-width: none; }

/* ---- Provenance footer ------------------------------------------------- */
.content-area::after {
    content: 'Generated by The Prompt Index — Search & Citation Tool. AI-assisted verification: confirm critical facts against the primary sources before publishing.';
    display: block;
    margin-top: 16pt;
    padding-top: 6pt;
    border-top: 1pt solid #999;
    font-size: 8pt;
    color: #444;
}
