/* Sources lane: shared type ramp, warm untextured reading surfaces, coverage and integrity before metadata. */
.v31-sources-active [hidden] { display: none !important; }
.v31-sources-active.rd-page .app-main.rd-main-col { padding-top: var(--s-6); }
[data-v31-root="sources"] { color: var(--ink); font-size: var(--fs-body); line-height: var(--lh-body); overflow-wrap: anywhere; }
[data-v31-root="sources"] h2 { margin-bottom: var(--s-3); }
[data-v31-root="sources"] h3 { margin-bottom: var(--s-3); }
[data-v31-root="sources"] p + p { margin-top: var(--s-3); }
[data-v31-root="sources"] .v31-meta { display: block; }

/* Intro and example label */
.v31-source-intro { margin-bottom: var(--s-6); max-width: 76ch; }
.v31-eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2) var(--s-3); margin: 0 0 var(--s-3); }
.v31-eyebrow .v31-meta { display: inline; }
[data-v31-root="sources"] .v31-eyebrow .v31-example { display: inline-flex; align-items: center; margin: 0; padding: 2px var(--s-2); border: 1px solid var(--hairline-strong); border-radius: var(--r-pill); background: var(--sunken); color: var(--ink-2); font-weight: 500; }

/* Status pills (text always carries the meaning; colour is secondary) */
.v31-pill { display: inline-flex; align-items: center; gap: var(--s-1); max-width: 100%; padding: 2px var(--s-2); border: 1px solid var(--hairline-strong); border-radius: var(--r-pill); background: var(--raised); color: var(--ink-2); font-size: var(--fs-small); line-height: var(--lh-small); font-weight: 500; }
.v31-pill--ok { border-color: var(--success-line); background: var(--success-tint); color: var(--ink); }
.v31-pill--warn { border-color: var(--warning-line); background: var(--warning-tint); color: var(--ink); }
.v31-pill--bad { border-color: var(--danger-line); background: var(--danger-tint); color: var(--ink); }
.v31-pill--info { background: var(--sunken); }
.v31-pill--ok::before, .v31-pill--warn::before, .v31-pill--bad::before { content: ""; width: 8px; height: 8px; flex: none; border-radius: 50%; }
.v31-pill--ok::before { background: var(--success); }
.v31-pill--warn::before { background: var(--warning); }
.v31-pill--bad::before { background: var(--danger); }
.v31-tags { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); margin: var(--s-3) 0; }
.v31-tags .v31-study-type, .v31-tags .v31-publication-status { display: inline-flex; margin: 0; }
.v31-tags .v31-publication-status { padding: 0 var(--s-1); }

/* Summary tiles */
.v31-tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-4); margin: 0 0 var(--s-5); }
.v31-tile { min-width: 0; padding: var(--s-4); border: 1px solid var(--hairline-strong); border-radius: var(--r-lg); background: var(--raised); }
.v31-tile dt { font-size: var(--fs-small); color: var(--ink-2); margin-bottom: var(--s-1); }
.v31-tile dd { margin: 0; font-size: var(--fs-heading); line-height: var(--lh-heading); letter-spacing: var(--ls-heading); font-variant-numeric: tabular-nums; }
.v31-tile dd.v31-meta { margin-top: var(--s-1); font-size: var(--fs-small); line-height: var(--lh-small); letter-spacing: 0; }
.v31-tile.is-warn { border-color: var(--warning-line); background: var(--warning-tint); }

/* Cards and launch bar */
.v31-source-card { min-width: 0; padding: var(--s-5); border: 1px solid var(--hairline-strong); border-radius: var(--r-lg); background: var(--raised); margin-bottom: var(--s-5); }
.v31-source-launch { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-4) var(--s-6); min-width: 0; padding: var(--s-4) var(--s-5); margin-bottom: var(--s-5); border: 1px solid var(--hairline-strong); border-radius: var(--r-lg); background: var(--sunken); }
.v31-launch-copy { flex: 1 1 320px; min-width: 0; }
.v31-launch-copy p + p { margin-top: var(--s-1); }
[data-v31-selection] .v31-meta { margin-top: var(--s-1); }
.v31-launch-actions { display: flex; flex-wrap: wrap; gap: var(--s-3); }
.v31-source-stack { display: grid; gap: var(--s-5); min-width: 0; }
.v31-source-stack > .v31-source-card { margin-bottom: 0; }
.v31-source-empty { background: var(--sunken); }
.v31-source-empty ul { padding-left: var(--s-5); list-style: disc; margin: var(--s-3) 0; }
.v31-source-chosen { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }

/* Upload card */
.v31-upload-head { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--s-1) var(--s-4); margin-bottom: var(--s-3); }
.v31-upload-title { flex: 1 1 auto; min-width: 0; }
.v31-upload-title h3 { margin: 0; }
.v31-upload-head > .v31-pill { flex: none; }
.v31-source-title { font-size: var(--fs-body); }
.v31-source-select { display: inline-flex; align-items: center; gap: var(--s-1); min-height: 44px; flex: none; cursor: pointer; font-size: var(--fs-ui); color: var(--ink-2); }
.v31-source-select input { appearance: none; width: 44px; height: 44px; flex: none; margin: 0; padding: 12px; cursor: pointer; }
.v31-source-select input::before { content: ""; display: block; width: 20px; height: 20px; border: 1.5px solid var(--ink-3); border-radius: var(--r-sm); background: var(--raised); }
.v31-source-select input:hover::before { border-color: var(--accent); }
.v31-source-select input:checked::before { content: "✓"; color: var(--paper); background: var(--accent); border-color: var(--accent); text-align: center; font-size: var(--fs-small); font-weight: 600; line-height: 17px; }
.v31-source-select:has(input:checked) { color: var(--ink); }

/* Metadata grids, disclosures */
.v31-source-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-3) var(--s-5); margin: var(--s-3) 0; }
.v31-source-meta div { min-width: 0; }
.v31-source-meta dt { font-size: var(--fs-small); color: var(--ink-2); margin-bottom: 2px; }
.v31-source-meta dd { font-size: var(--fs-desc); line-height: var(--lh-desc); margin: 0; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.v31-details { margin-top: var(--s-4); border-top: 1px solid var(--hairline); }
.v31-details > summary { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); list-style: none; min-height: 44px; padding: var(--s-2) 0; cursor: pointer; font-size: var(--fs-ui); font-weight: 500; color: var(--ink); }
.v31-details > summary:hover { color: var(--accent-ink); }
.v31-details > summary::-webkit-details-marker { display: none; }
.v31-details > summary::after { content: ""; flex: none; width: 8px; height: 8px; border-right: 2px solid var(--ink-3); border-bottom: 2px solid var(--ink-3); transform: rotate(45deg) translateY(-2px); transition: transform .15s ease; }
.v31-details[open] > summary::after { transform: rotate(-135deg) translateY(-2px); }
@media (prefers-reduced-motion: reduce) { .v31-details > summary::after { transition: none; } }
.v31-details[open] > summary { margin-bottom: var(--s-2); }
.v31-details .v31-source-stack { padding-bottom: var(--s-2); }

/* Integrity */
.v31-integrity { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-1) var(--s-3); margin: var(--s-3) 0; font-size: var(--fs-desc); line-height: var(--lh-desc); }
.v31-integrity-note { color: var(--ink-2); }
.v31-integrity--alert { display: block; padding: var(--s-4) var(--s-5); margin: var(--s-4) 0 var(--s-5); border: 1px solid var(--warning-line); border-left: 4px solid var(--warning); border-radius: var(--r-md); background: var(--warning-tint); }
.v31-integrity--bad { border-color: var(--danger-line); border-left-color: var(--danger); background: var(--danger-tint); }
.v31-integrity--alert p + p { margin-top: var(--s-2); }
.v31-date { white-space: nowrap; }
.v31-integrity-kicker { font-size: var(--fs-small); font-weight: 600; color: var(--ink-2); }
.v31-integrity-title { font-size: var(--fs-heading); line-height: var(--lh-heading); letter-spacing: var(--ls-heading); font-weight: var(--fw-heading); }
.v31-integrity--alert .v31-source-links { margin-top: var(--s-3); }

/* Coverage */
.v31-source-coverage { margin: var(--s-4) 0 0; padding: var(--s-4); border: 1px solid var(--hairline); border-radius: var(--r-md); background: var(--paper); }
.v31-source-coverage.has-unread { border-color: var(--warning-line); }
.v31-cov-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-1) var(--s-3); margin-bottom: var(--s-3); }
.v31-cov-head h3 { margin: 0; flex: 1 1 auto; }
.v31-cov-count { font-size: var(--fs-ui); font-variant-numeric: tabular-nums; }
.v31-cov-head .v31-pill { align-self: center; }
.v31-meter { display: flex; gap: 3px; height: 8px; margin-bottom: var(--s-3); }
.v31-meter span { flex: 1 1 0; min-width: 4px; border-radius: 2px; }
.v31-meter .is-read, .v31-meter-fill { background: var(--success); }
.v31-meter .is-unread, .v31-meter-gap { background: repeating-linear-gradient(135deg, var(--warning-line) 0 3px, var(--warning-tint) 3px 6px); box-shadow: inset 0 0 0 1px var(--warning); }
.v31-source-coverage .v31-source-meta { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); margin-top: 0; }
.v31-source-coverage .v31-coverage { margin-top: var(--s-4); }
.v31-region-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-1) var(--s-2); margin-top: var(--s-3); font-size: var(--fs-small); color: var(--ink-2); }

/* Claims */
.v31-source-claim { display: grid; gap: var(--s-2); justify-items: start; min-width: 0; padding-top: var(--s-4); border-top: 1px solid var(--hairline); }
.v31-source-claim:first-child { padding-top: 0; border-top: 0; }
.v31-source-claim .v31-verdict-reason { margin-top: 0; }
.v31-source-links { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.v31-passage-nav { margin-top: var(--s-5); }
.v31-nav-label { margin-bottom: var(--s-2); font-size: var(--fs-small); font-weight: 600; color: var(--ink-2); }
.v31-citation.is-current { border-color: var(--accent); background: var(--accent-tint); font-weight: 500; }

/* Verdict badges: ink text on a raised chip so contrast never depends on a tint */
[data-v31-root="sources"] .v31-verdict { color: var(--ink); background: var(--raised); border: 1px solid var(--hairline-strong); border-left-width: 4px; }
[data-v31-root="sources"] .v31-verdict-confidence { color: var(--ink-2); }
[data-v31-root="sources"] .v31-verdict--supported { border-left-color: var(--success); }
[data-v31-root="sources"] .v31-verdict--not-supported { border-left-color: var(--danger); }
[data-v31-root="sources"] .v31-verdict--already-known { border-left-color: var(--accent); }
[data-v31-root="sources"] .v31-verdict--insufficient-evidence { border-left-color: var(--warning); }

/* Context list */
.v31-context { min-width: 0; padding: var(--s-4); border: 1px solid var(--hairline); border-radius: var(--r-md); background: var(--paper); }
.v31-context.is-flagged { border-color: var(--danger-line); }
.v31-context-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-2) var(--s-3); }
.v31-context-head h3 { margin: 0; flex: 1 1 240px; }
.v31-context .v31-integrity--alert { margin: var(--s-3) 0; }
.v31-context .v31-source-links { margin-top: var(--s-3); }

/* Reader */
.v31-reader-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 360px); align-items: end; gap: var(--s-3) var(--s-5); max-width: none; }
.v31-reader-top .v31-eyebrow { grid-column: 1 / -1; margin: 0; }
.v31-reader-nav { align-self: end; }
.v31-source-picker { display: grid; gap: var(--s-1); font-size: var(--fs-small); color: var(--ink-2); }
.v31-source-picker select { font-family: var(--font-sans); font-size: var(--fs-ui); color: var(--ink); width: 100%; min-height: 44px; border: 1px solid var(--hairline-strong); border-radius: var(--r-md); background: var(--raised); padding: var(--s-2) var(--s-3); }
.v31-source-picker select:hover { border-color: var(--ink-3); }
.v31-source-reader-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); align-items: start; gap: var(--s-5); }
.v31-source-document { background: var(--paper); margin-bottom: 0; }
.v31-source-document h2 { margin-bottom: 0; }
.v31-reader-facts { color: var(--ink-2); font-size: var(--fs-desc); line-height: var(--lh-desc); font-variant-numeric: tabular-nums; }
.v31-reader-facts strong { color: var(--ink); font-weight: 600; }
.v31-source-passage { margin-top: var(--s-5); padding: var(--s-4) var(--s-5); border: 1px solid var(--hairline-strong); border-radius: var(--r-md); background: var(--raised); }
.v31-source-passage.is-flagged { border-color: var(--danger-line); }
.v31-source-passage .v31-tags { margin-top: 0; }
.v31-passage-warn { margin: 0 0 var(--s-3); padding: var(--s-3); border-left: 4px solid var(--danger); background: var(--danger-tint); font-size: var(--fs-desc); line-height: var(--lh-desc); }
.v31-source-document blockquote { margin: var(--s-3) 0; padding: var(--s-4); border-left: 4px solid var(--accent); background: var(--accent-tint); white-space: pre-wrap; font-size: var(--fs-lead); line-height: var(--lh-lead); letter-spacing: var(--ls-lead); }
.v31-source-extract { margin-top: var(--s-6); }
.v31-source-text { font-family: var(--font-sans); font-size: var(--fs-body); line-height: 1.75; white-space: pre-wrap; overflow-wrap: anywhere; margin-top: var(--s-3); padding: var(--s-4); border: 1px solid var(--hairline); border-radius: var(--r-md); background: var(--raised); }
.v31-source-text mark { color: var(--ink); background: var(--warning-tint); outline: 1px solid var(--warning-line); border-radius: 2px; }
.v31-hash-line { padding-left: var(--s-3); border-left: 4px solid var(--success); font-size: var(--fs-desc); }
.v31-hash-line.v31-source-alert { border-left-color: var(--danger); background: var(--danger-tint); }
aside .v31-source-meta { grid-template-columns: minmax(0, 1fr); }
.v31-source-document .v31-source-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.v31-extract-card .v31-source-meta dd { font-family: var(--font-mono); font-size: var(--fs-mono); line-height: var(--lh-mono); }
.v31-upload .v31-source-meta dd[title], .v31-upload .v31-source-meta dd { overflow-wrap: anywhere; }

[data-v31-root="sources"] :is(button, select, input, summary, mark, a):focus-visible { outline: var(--focus-outline); outline-offset: var(--focus-offset); }
@media (max-width: 900px) {
  .v31-source-reader-grid { grid-template-columns: minmax(0, 1fr); }
  .v31-reader-top { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  .v31-source-card { padding: var(--s-4); }
  .v31-source-launch { padding: var(--s-4); }
  .v31-launch-actions { width: 100%; }
  .v31-launch-actions .btn { flex: 1 1 100%; width: 100%; white-space: normal; height: auto; min-height: 44px; }
  .v31-tiles { gap: var(--s-2); }
  .v31-tile { padding: var(--s-3); }
  .v31-source-meta, .v31-source-document .v31-source-meta { grid-template-columns: minmax(0, 1fr); }
  .v31-upload-head { grid-template-columns: auto minmax(0, 1fr); }
  .v31-upload-head > .v31-pill { grid-column: 2; justify-self: start; }
  .v31-integrity--alert { padding: var(--s-4); }
  .v31-source-passage { padding: var(--s-3); }
  .v31-source-document blockquote { padding: var(--s-3); font-size: var(--fs-body); line-height: var(--lh-body); }
  .v31-reader-nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v31-reader-nav > a { justify-content: center; text-align: center; }
  .v31-source-links > a { max-width: 100%; }
}
.v31-source-legacy { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); visibility: hidden; pointer-events: none; }
