/* ==========================================================================
   COUNTRY PROFILE (p-country) — the page-level composition layer for the
   country *issue*. This file holds ONLY what the design system + the three
   built systems genuinely lack: the imprimatur head layout (the medallion
   shelf beside the verdict apparatus), the honest-coverage banner, the
   small-multiples sparkline grid with its two absence cells, the factor-
   evidence row, the segregated "not assessed in this domain" register, and the
   suppressed-overall demonstration inset.

   Everything score-bearing is COMPOSED from s2 (badge / medallion / ledger /
   sparkline / coverage-states / provenance / stamps / tally); everything
   chrome is COMPOSED from s1 (nameplate / breadcrumb / crosslink / colophon);
   collect + tray are COMPOSED from s3. Nothing here re-pitches a token or
   re-styles a score glyph. Tokens only, below 01-settings. Link AFTER
   offprint.css and the built systems' components.
   ========================================================================== */

/* — vertical rhythm between the issue's major movements — */
.pc-issue > * + * { margin-top: var(--space-2xl); }

/* ==========================================================================
   1 · THE IMPRIMATUR HEAD — the medallion shelf beside the verdict apparatus.
   The seal sits left (or on top, on a phone); the provenance, stamps, candour
   and the quiet actions stand to its right. This is the D1 framing region.
   ========================================================================== */
.pc-imprimatur {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-xl);
  align-items: start;
  padding: var(--space-lg);
  background: var(--surface-raised);
  border: 1px solid var(--rule);
  border-top: 3px solid var(--bk-line, var(--rule-strong));
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  box-shadow: var(--shadow-raised);
}

/* The seal column: the medallion over its coverage stat */
.pc-imprimatur__seal {
  display: grid;
  justify-items: center;
  gap: var(--space-md);
  text-align: center;
}
.pc-imprimatur__seal .op-medallion { --size: 10rem; }

.pc-imprimatur__body { display: grid; gap: var(--space-md); }

/* The verdict line — a mono headline figure echoing the seal, for the reader
   who scans the prose column rather than the seal. */
.pc-verdict {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.5em var(--space-md);
}
.pc-verdict__figure {
  font-family: var(--font-data);
  font-size: var(--text-2xl);
  font-weight: var(--weight-semibold);
  line-height: 1;
  font-variant-numeric: tabular-nums lining-nums;
  color: var(--bk-ink, var(--text));
}
.pc-verdict__max { font-size: var(--text-md); color: var(--text-muted); }
.pc-verdict__band {
  font-family: var(--font-furniture);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--bk-ink, var(--text));
}

.pc-rationale {
  font-family: var(--font-reading);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--text);
  max-width: var(--measure);
  margin: 0;
}
.pc-rationale em { font-style: italic; }

/* The honesty note — the verdict is a band, not false precision (s2 §6) */
.pc-note {
  font-family: var(--font-furniture);
  font-size: var(--text-2xs);
  font-style: italic;
  color: var(--text-muted);
  margin: 0;
}
.pc-note a { color: inherit; }

/* The actions cluster — quiet, editorial; one solid-ink "keep reading" only */
.pc-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-sm);
  padding-top: var(--space-sm);
  border-top: 1px solid var(--rule-faint);
}
/* the profile-level collect carries a label, unlike the bare row slot */
.pc-collect-line {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2xs);
  font-family: var(--font-furniture);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
  color: var(--text-secondary);
}

@media (max-width: 56.25rem) {
  .pc-imprimatur { grid-template-columns: 1fr; gap: var(--space-lg); }
  .pc-imprimatur__seal { justify-items: start; text-align: start; }
}

/* ==========================================================================
   2 · THE HONEST-COVERAGE BANNER — the denominator stated in plain words, set
   as ruled apparatus directly under the verdict. Names what is and is NOT
   published, so the reader meets the gaps before scrolling to them.
   ========================================================================== */
.pc-coverage {
  display: grid;
  gap: var(--space-sm);
  padding: var(--space-md);
  background: var(--surface-sunken);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--rule-strong);
  border-radius: var(--radius-xs);
}
.pc-coverage__stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xl) var(--space-2xl);
}
.pc-coverage__text {
  font-family: var(--font-furniture);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--text-secondary);
  max-width: 70ch;
  margin: 0;
}
.pc-coverage__text b {
  font-family: var(--font-data);
  font-variant-numeric: tabular-nums lining-nums;
  font-weight: var(--weight-medium);
  color: var(--text);
}

/* ==========================================================================
   2b · THE ASSESSMENT ROLL-UP — the demoted overall. The strong/weak record
   leads the page; this compact strip carries the coarse mean ONCE (a small seal,
   not a hero figure) beside the coverage stats, with the coverage-floor rule
   folded into a footnote. Composes the s2 medallion / coverage-tag / stat; it
   re-pitches no token and no score glyph. (Distinct from .pc-imprimatur /
   .pc-coverage, which the sibling specialty page still renders.)
   ========================================================================== */
.pc-rollup {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-lg) var(--space-xl);
  align-items: center;
  padding: var(--space-md) var(--space-lg);
  background: var(--surface-sunken);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--bk-line, var(--rule-strong));
  border-radius: var(--radius-xs);
}
.pc-rollup__seal {
  display: grid;
  justify-items: center;
  gap: var(--space-xs);
  text-align: center;
}
.pc-rollup__body { display: grid; gap: var(--space-sm); }
.pc-rollup__stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md) var(--space-2xl);
}
.pc-rollup__gloss {
  font-family: var(--font-furniture);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--text-secondary);
  max-width: 70ch;
  margin: 0;
}
.pc-rollup__gloss a { color: var(--accent); text-decoration: none; }
.pc-rollup__gloss a:hover { text-decoration: underline; }
.pc-rollup__floor { margin: 0; }
.pc-rollup__floor > summary {
  font-family: var(--font-furniture);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--text-muted);
  cursor: pointer;
}
.pc-rollup__floor > p {
  font-family: var(--font-furniture);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--text-secondary);
  max-width: 70ch;
  margin: var(--space-xs) 0 0;
}
.pc-rollup__floor b {
  font-family: var(--font-data);
  font-variant-numeric: tabular-nums lining-nums;
  font-weight: var(--weight-medium);
  color: var(--text);
}
@media (max-width: 40rem) {
  .pc-rollup { grid-template-columns: 1fr; gap: var(--space-md); }
  .pc-rollup__seal { justify-items: start; text-align: start; }
}

/* ==========================================================================
   3 · THE SHAPE OF THE EIGHT DOMAINS — small-multiples sparkline grid (Fig. 1).
   Reuses .op-sparkline for the six published domains; the two absent domains
   get an honest cell (the hatch register + a coverage tag), never a flat line
   that could read as "zero".
   ========================================================================== */
.pc-sparkgrid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: var(--space-lg) var(--space-xl);
}
/* the absence cell — same footprint as a sparkline, but a hatch chip + tag */
.pc-spark-absent { display: grid; gap: var(--space-3xs); margin: 0; }
.pc-spark-absent__chart {
  block-size: 2rem;
  border: 1px solid var(--band-none-line);
  border-radius: var(--radius-xs);
  background-color: var(--surface);
  background-image: var(--hatch-image);
}
.pc-spark-absent[data-coverage="suppressed"] .pc-spark-absent__chart {
  background-image: var(--hatch-image-dense);
}
.pc-spark-absent__meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2xs);
}
.pc-spark-absent__label {
  font-family: var(--font-furniture);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--text-secondary);
}

/* ==========================================================================
   4 · THE STRONG/WEAK CENTERPIECE — the merged ledger + evidence. Each domain is
   one .op-accordion disclosure: the summary folds in the old ledger row (printed
   bar + escorted badge + n/total coverage), so a *closed* domain still reads its
   standing and all eight are visible at once; opening it reveals a dense factor
   list (subcategory subheads preserved). Composes .op-accordion, .op-bar,
   .op-badge, .op-collect — it re-pitches no token and no score glyph.
   ========================================================================== */

/* the accordion summary, enriched: name (serif) left, finding cluster right */
.pc-domain__summary { gap: var(--space-md); }
.pc-domain__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2xs) var(--space-md);
  flex: 1;
}
.pc-domain__name { font-family: var(--font-reading); }
.pc-domain__no {
  font-family: var(--font-data);
  font-size: var(--text-sm);
  font-weight: var(--weight-regular);
  color: var(--text-muted);
}
.pc-domain__finding { display: inline-flex; align-items: center; gap: var(--space-sm); }
/* the folded-in ledger bar — the printed measure beside the escorted badge */
.pc-domain__bar { inline-size: 4.5rem; flex: none; }
.pc-domain__coverage {
  font-family: var(--font-furniture);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--text-muted);
}
.pc-domain__coverage [data-numeric] {
  font-family: var(--font-data);
  font-variant-numeric: tabular-nums lining-nums;
}

/* a subcategory rung inside a panel */
.pc-subhead {
  margin-top: var(--space-md);
  padding-bottom: var(--space-2xs);
  border-bottom: 1px solid var(--rule);
}
.pc-subhead:first-child { margin-top: 0; }

/* a single, dense factor row: collect · escorted badge · name + provenance on
   one baseline (the description rides as a hover title, not a paragraph) */
.pc-factor {
  display: grid;
  grid-template-columns: 1.45rem 8.5rem minmax(0, 1fr);
  gap: var(--space-2xs) var(--space-md);
  align-items: baseline;
  padding-block: var(--space-2xs);
  border-top: 1px solid var(--rule-faint);
}
.pc-factor:first-of-type { border-top: 0; }
.pc-factor .op-collect { margin-top: 0.1rem; }
.pc-factor .op-badge { justify-self: start; }

/* name + provenance run inline so the row is one or two lines tall, not a block */
.pc-factor__body {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2xs) var(--space-md);
}
.pc-factor__name {
  font-family: var(--font-reading);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--text);
  text-decoration: none;
}
.pc-factor__name:hover { color: var(--accent); }
.pc-factor__name::after {                /* the link-into-the-report cue */
  content: "\2192";
  margin-left: 0.35em;
  color: var(--accent);
  opacity: 0;
  transition: var(--transition-ink);
}
.pc-factor__name:hover::after,
.pc-factor__name:focus-visible::after { opacity: 1; }
/* the per-report provenance line — research date, clinic/term tallies, PDF door */
.pc-factor__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2xs) var(--space-sm);
  font-family: var(--font-furniture);
  font-size: var(--text-3xs);
  letter-spacing: var(--tracking-wide);
  color: var(--text-muted);
}
.pc-factor__meta time,
.pc-factor__meta [data-numeric] {
  font-family: var(--font-data);
  font-variant-numeric: tabular-nums lining-nums;
}
.pc-factor__pdf { color: var(--accent); text-decoration: none; }
.pc-factor__pdf:hover { text-decoration: underline; }
/* the gated-report whisper — quiet, editorial, one per row at most */
.pc-factor__gate {
  font-family: var(--font-furniture);
  font-size: var(--text-3xs);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--text-muted);
}

/* ==========================================================================
   5 · HONEST ABSENCES — the segregated "not yet assessed in this domain"
   register, and the suppressed/no-data domain candour. Never a thin number,
   never a grey box, never mingled into the ranked factors.
   ========================================================================== */
.pc-absence {
  margin-top: var(--space-md);
  padding: var(--space-md);
  background: var(--surface-sunken);
  border: 1px solid var(--rule);
  border-radius: var(--radius-xs);
}
.pc-absence__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-sm);
  margin-bottom: var(--space-sm);
}
.pc-absence__why {
  font-family: var(--font-reading);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--text-secondary);
  max-width: var(--measure);
  margin: 0 0 var(--space-sm);
}
/* the bare list of unassessed factor names — escorted by the open-ring tag */
.pc-absent-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: 0.1rem var(--space-lg);
}
.pc-absent-list li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-sm);
  padding: 0.3em 0;
  border-top: 1px solid var(--rule-faint);
}
.pc-absent-list__name {
  font-family: var(--font-furniture);
  font-size: var(--text-sm);
  color: var(--text-secondary);
}

/* a suppressed / no-data DOMAIN panel reads its candour, not a verdict */
.pc-domain--absent .op-accordion__panel,
.pc-domain__panel { }

/* ==========================================================================
   6 · THE SUPPRESSED-OVERALL DEMONSTRATION — the same imprimatur design shown
   in its honest floor state (a country below 4/8 domains). A deliberately
   quieter inset, clearly an editor's note, so it never competes with the issue
   it sits inside — it demonstrates how the verdict behaves when the record is
   too thin to publish.
   ========================================================================== */
.pc-floor {
  padding: var(--space-lg);
  background: var(--surface-sunken);
  border: 1px solid var(--rule);
  border-radius: var(--radius-sm);
}
.pc-floor__inner {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-xl);
  align-items: center;
  margin-top: var(--space-md);
}
.pc-floor__seal { display: grid; justify-items: center; gap: var(--space-sm); }
.pc-floor__body { display: grid; gap: var(--space-sm); }
.pc-floor__title {
  font-family: var(--font-reading);
  font-weight: var(--weight-bold);
  font-size: var(--text-lg);
  line-height: var(--leading-tight);
  margin: 0;
}
.pc-floor__title .pc-iso {
  font-family: var(--font-data);
  font-size: var(--text-md);
  color: var(--text-muted);
  font-weight: var(--weight-medium);
  margin-left: 0.4em;
}
@media (max-width: 40rem) {
  .pc-floor__inner { grid-template-columns: 1fr; gap: var(--space-md); }
  .pc-floor__seal { justify-items: start; }
}

/* ==========================================================================
   7 · A masthead helper — the ISO sits beside the issue title as a mono serial.
   Composes .op-masthead; this only places the serial, no new identity.
   ========================================================================== */
.pc-masthead__title-row {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.4em var(--space-md);
}
.pc-masthead__iso {
  font-family: var(--font-data);
  font-size: var(--text-xl);
  font-weight: var(--weight-medium);
  letter-spacing: var(--tracking-wide);
  color: var(--text-muted);
}

/* ==========================================================================
   8 · MOBILE — the factor row folds so the column never becomes a wall of
   numbers: the escorted badge rides beside the collect slot, the name + why
   drop to a full-width second line.
   ========================================================================== */
@media (max-width: 35rem) {
  .pc-factor {
    grid-template-columns: 1.45rem 1fr;
    column-gap: var(--space-sm);
  }
  .pc-factor .op-badge { grid-column: 2; }
  .pc-factor__body { grid-column: 1 / -1; }
  .pc-absent-list { grid-template-columns: 1fr; }
  .pc-coverage__stats { gap: var(--space-md) var(--space-xl); }
}

/* ==========================================================================
   9 · THE PROVIDERS DASHBOARD CARD — an aggregate summary of the country's
   catalogued providers (headline totals, a domain/sub-domain breakdown and a
   by-city breakdown), the whole card a single click-through to the country-
   scoped clinics view. It names no individual provider. Composes the s2 .op-stat;
   it re-pitches no token and no score glyph.
   ========================================================================== */
.pc-providers {
  display: grid;
  gap: var(--space-lg);
  padding: var(--space-lg);
  background: var(--surface-raised);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--bk-line, var(--rule-strong));
  border-radius: var(--radius-xs);
  color: inherit;
  text-decoration: none;
  transition: var(--transition-ink);
}
.pc-providers:hover { border-color: var(--rule-strong); background: var(--surface); }

.pc-providers__totals {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md) var(--space-2xl);
}

.pc-providers__group { display: grid; gap: var(--space-xs); }
.pc-providers__subhead {
  font-family: var(--font-furniture);
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--text-secondary);
  margin: 0;
}
.pc-providers__breakdown {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.1rem;
}
.pc-providers__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: baseline;
  gap: var(--space-2xs) var(--space-md);
  padding: 0.3em 0;
  border-top: 1px solid var(--rule-faint);
}
.pc-providers__row:first-child { border-top: 0; }
.pc-providers__label {
  font-family: var(--font-reading);
  font-size: var(--text-base);
  color: var(--text);
}
.pc-providers__count {
  font-family: var(--font-data);
  font-variant-numeric: tabular-nums lining-nums;
  font-weight: var(--weight-medium);
  color: var(--text);
}
.pc-providers__subs {
  grid-column: 1 / -1;
  font-family: var(--font-furniture);
  font-size: var(--text-2xs);
  color: var(--text-muted);
}
.pc-providers__cta {
  font-family: var(--font-furniture);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wide);
  color: var(--accent);
}

.dir-head__back {
  font-family: var(--font-furniture);
  font-size: var(--text-sm);
  margin: var(--space-sm) 0 0;
}
.dir-head__back a { color: var(--accent); text-decoration: none; }
.dir-head__back a:hover { text-decoration: underline; }

/* a section header used across the issue (Fig. labels + titles) */
.pc-section__head { margin-bottom: var(--space-md); }
.pc-section__title {
  font-family: var(--font-reading);
  font-weight: var(--weight-bold);
  font-size: var(--text-xl);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-tight);
  margin: var(--space-2xs) 0 0;
}
.pc-section__intro {
  font-family: var(--font-reading);
  font-size: var(--text-md);
  line-height: var(--leading-snug);
  color: var(--text-secondary);
  max-width: var(--measure);
  margin: var(--space-sm) 0 0;
}
.pc-figcaption {
  font-family: var(--font-furniture);
  font-size: var(--text-2xs);
  font-style: italic;
  color: var(--text-muted);
  margin-top: var(--space-sm);
}
