/* Qaz.Vision AVDS 5 page composition. No tokens are declared here. */
/* Document / source / quote archive adapters retain the Jinja public contracts. */

*,
*::before,
*::after {
  box-sizing: border-box;
}

body.public-shell {
  margin: 0;
  min-inline-size: 20rem;
}

.qv-page-frame {
  display: grid;
  /* A grid container otherwise adopts the min-content width of its densest
     descendant (citation IDs, API paths and long source titles).  The public
     archive has exactly one column, so make that ownership explicit and let
     each surface reflow inside the viewport. */
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto 1fr auto;
  min-block-size: 100vh;
}

.qv-page-frame > * {
  min-inline-size: 0;
}

/* Stable identifiers and primary-source titles are legitimate long tokens.
   They must not turn the page frame into the horizontal scroll container. */
.public-shell :where(a, b, code, dd, dt, li, p, small, span, strong, summary) {
  overflow-wrap: anywhere;
}

.qv-main {
  inline-size: min(100% - var(--qv5-gap-6), var(--qv5-content-measure));
  margin-inline: auto;
  padding-block: var(--qv5-gap-8);
}

.qv-reading,
.document-prose,
.quote-body,
.article-prose,
.about-prose {
  max-inline-size: var(--qv5-reading-measure);
}

.briefing-watch__kicker {
  letter-spacing: normal;
  text-transform: none;
}

.site-header,
.qv5-site-header {
  background: var(--qv5-canvas);
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule-strong);
  position: relative;
  z-index: 20;
}

.site-header-inner,
.masthead,
.qv5-masthead {
  align-items: center;
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: auto minmax(0, 1fr) auto;
  inline-size: min(100% - var(--qv5-gap-6), var(--qv5-content-measure));
  margin-inline: auto;
  min-block-size: calc(var(--spacing) * 16);
  padding-block: var(--qv5-gap-3);
}

.site-brand,
.brand-lockup,
.masthead-brand {
  align-items: baseline;
  color: var(--qv5-ink);
  display: inline-flex;
  font-family: var(--font-serif);
  font-size: clamp(1.25rem, 1rem + 1vw, 1.8rem);
  font-weight: var(--heading-weight);
  gap: var(--qv5-gap-2);
  letter-spacing: var(--heading-letter-spacing);
  text-decoration: none;
  white-space: nowrap;
}

.site-brand:visited,
.brand-lockup:visited,
.masthead-brand:visited {
  color: var(--qv5-ink);
}

.site-brand small,
.brand-lockup small,
.masthead-brand small {
  color: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--body-weight);
  letter-spacing: normal;
}

.site-menu-button,
.search-toggle,
.language-picker-button {
  align-items: center;
  background: transparent;
  border: var(--qv5-border-width) solid transparent;
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink);
  cursor: pointer;
  display: inline-flex;
  justify-content: center;
  min-block-size: calc(var(--spacing) * 11);
  min-inline-size: calc(var(--spacing) * 11);
  padding: var(--qv5-gap-2);
}

.site-menu-button:hover,
.search-toggle:hover,
.language-picker-button:hover {
  background: var(--qv5-surface-muted);
  border-color: var(--qv5-rule);
}

.site-nav,
.primary-nav,
.masthead-nav {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1);
  justify-content: end;
}

.site-nav a,
.primary-nav a,
.masthead-nav a {
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink);
  font-size: var(--small-font-size);
  padding: var(--qv5-gap-2);
  text-decoration: none;
}

.site-nav a:hover,
.site-nav a[aria-current="page"],
.primary-nav a:hover,
.primary-nav a[aria-current="page"],
.masthead-nav a:hover,
.masthead-nav a[aria-current="page"] {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
}

.site-actions,
.masthead-actions,
.header-actions {
  align-items: center;
  display: flex;
  gap: var(--qv5-gap-1);
  justify-content: end;
}

.language-picker,
.locale-switcher,
.language-menu {
  position: relative;
}

.language-picker [role="menu"],
.locale-switcher [role="menu"],
.language-menu [role="menu"] {
  background: var(--qv5-surface);
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-1);
  inset-block-start: calc(100% + var(--qv5-gap-1));
  inset-inline-end: 0;
  min-inline-size: 10rem;
  padding: var(--qv5-gap-1);
  position: absolute;
}

.language-picker [role="menu"] a,
.locale-switcher [role="menu"] a,
.language-menu [role="menu"] a {
  color: var(--qv5-ink);
  padding: var(--qv5-gap-2);
  text-decoration: none;
}

.language-picker [role="menu"] a:hover,
.locale-switcher [role="menu"] a:hover,
.language-menu [role="menu"] a:hover {
  background: var(--qv5-surface-muted);
}

.site-menu,
.mobile-menu,
.nav-drawer {
  background: var(--qv5-canvas);
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: none;
}

.site-menu[data-open="true"],
.site-menu.is-open,
.mobile-menu[data-open="true"],
.mobile-menu.is-open,
.nav-drawer[data-open="true"],
.nav-drawer.is-open {
  display: block;
}

.site-menu-inner,
.mobile-menu-inner,
.nav-drawer-inner {
  display: grid;
  gap: var(--qv5-gap-3);
  inline-size: min(100% - var(--qv5-gap-6), var(--qv5-content-measure));
  margin-inline: auto;
  padding-block: var(--qv5-gap-4);
}

.site-menu a,
.mobile-menu a,
.nav-drawer a {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink);
  display: block;
  padding-block: var(--qv5-gap-2);
  text-decoration: none;
}

.site-menu a:hover,
.mobile-menu a:hover,
.nav-drawer a:hover {
  color: var(--qv5-link);
}

.page-header,
.page-head,
.section-head,
.document-header,
.quote-header,
.timeline-header,
.search-header,
.hero {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule-strong);
  margin-block-end: var(--qv5-gap-6);
  padding-block-end: var(--qv5-gap-6);
}

.page-header h1,
.page-head h1,
.section-head h1,
.document-header h1,
.quote-header h1,
.timeline-header h1,
.search-header h1,
.hero h1,
.qv-display {
  font-size: clamp(2.15rem, 1.25rem + 3vw, 4.5rem);
  margin: var(--qv5-gap-2) 0;
  max-inline-size: 19ch;
}

.page-header p,
.page-head p,
.section-head p,
.document-header p,
.quote-header p,
.timeline-header p,
.search-header p,
.hero p,
.lead,
.page-lead {
  color: var(--qv5-ink-muted);
  font-size: clamp(1.05rem, 0.98rem + 0.3vw, 1.3rem);
  max-inline-size: var(--qv5-reading-measure);
}

.section,
.content-section,
.page-section {
  margin-block: var(--qv5-gap-8);
}

.section-title,
.section-heading,
.content-section h2 {
  font-size: clamp(1.45rem, 1.1rem + 1.2vw, 2.15rem);
  margin-block: 0 var(--qv5-gap-3);
}

.section-intro,
.section-description {
  color: var(--qv5-ink-muted);
  max-inline-size: var(--qv5-reading-measure);
}

.qv-grid,
.card-grid,
.section-grid,
.homepage-grid,
.briefing-grid,
.ministers-grid,
.timeline-grid,
.search-results,
.atoms-grid,
.publisher-grid,
.status-grid,
.assistant-grid {
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
}

.qv-grid--wide,
.homepage-grid,
.briefing-grid,
.timeline-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
}

.card,
.avds-card,
.document-card,
.quote-card,
.source-card,
.timeline-card,
.minister-card,
.briefing-card,
.search-result,
.atom-card,
.publisher-card,
.status-card,
.assistant-panel,
.quote-embed-card {
  background: var(--qv5-surface);
  display: flex;
  flex-direction: column;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
  padding: var(--qv5-gap-4);
}

.card:hover,
.avds-card:hover,
.document-card:hover,
.quote-card:hover,
.source-card:hover,
.timeline-card:hover,
.minister-card:hover,
.briefing-card:hover,
.search-result:hover {
  background: var(--qv5-surface-muted);
}

.card h2,
.card h3,
.avds-card h2,
.avds-card h3,
.document-card h2,
.document-card h3,
.quote-card h2,
.quote-card h3,
.source-card h2,
.source-card h3,
.search-result h2,
.search-result h3 {
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.7rem);
  margin: 0;
}

.card p,
.avds-card p,
.document-card p,
.quote-card p,
.source-card p,
.search-result p {
  margin: 0;
}

.card a,
.avds-card a,
.document-card a,
.quote-card a,
.source-card a,
.search-result a {
  align-self: start;
}

.card-meta,
.document-meta,
.quote-meta,
.source-meta,
.result-meta,
.timeline-meta,
.status-meta,
.meta-list {
  color: var(--qv5-ink-muted);
  display: flex;
  flex-wrap: wrap;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-2);
}

.card-meta > *,
.document-meta > *,
.quote-meta > *,
.source-meta > *,
.result-meta > *,
.timeline-meta > *,
.status-meta > *,
.meta-list > * {
  align-items: center;
  display: inline-flex;
  gap: var(--qv5-gap-1);
}

.document-layout,
.quote-layout,
.source-layout,
.evolution-layout,
.publisher-layout,
.api-layout,
.assistant-layout {
  display: grid;
  gap: var(--qv5-gap-6);
  grid-template-columns: minmax(0, 1fr) minmax(15rem, 19rem);
}

.document-layout > :first-child,
.quote-layout > :first-child,
.source-layout > :first-child,
.evolution-layout > :first-child,
.publisher-layout > :first-child,
.api-layout > :first-child,
.assistant-layout > :first-child {
  min-inline-size: 0;
}

.document-sidebar,
.quote-sidebar,
.source-sidebar,
.evolution-sidebar,
.publisher-sidebar,
.api-sidebar,
.assistant-sidebar,
.aside,
.page-aside {
  align-self: start;
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-3);
  padding-block-start: var(--qv5-gap-3);
}

.document-prose > :first-child,
.quote-body > :first-child,
.article-prose > :first-child,
.about-prose > :first-child {
  margin-block-start: 0;
}

.document-prose > :last-child,
.quote-body > :last-child,
.article-prose > :last-child,
.about-prose > :last-child {
  margin-block-end: 0;
}

.document-prose p,
.quote-body p,
.article-prose p,
.about-prose p,
.document-prose li,
.quote-body li {
  font-size: clamp(1rem, 0.96rem + 0.2vw, 1.15rem);
  line-height: 1.7;
}

.document-prose blockquote,
.quote-text,
.pull-quote {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-link);
  font-family: var(--font-serif);
  font-size: clamp(1.35rem, 1rem + 1.4vw, 2.15rem);
  line-height: 1.35;
  margin: var(--qv5-gap-6) 0;
  padding-inline-start: var(--qv5-gap-3);
}

.document-prose blockquote p,
.quote-text p,
.pull-quote p {
  font-size: inherit;
  line-height: inherit;
}

.facts,
.fact-list,
.document-facts,
.quote-facts,
.source-facts,
.definition-list {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
  margin: 0;
}

.facts > div,
.fact-list > div,
.definition-list > div {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: minmax(8rem, 1fr) minmax(0, 2fr);
  padding-block: var(--qv5-gap-2);
}

.facts dt,
.fact-list dt,
.definition-list dt {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.facts dd,
.fact-list dd,
.definition-list dd {
  margin: 0;
}

.source-list,
.document-list,
.quote-list,
.timeline-list,
.result-list,
.sitemap-list,
.status-list,
.api-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.source-list > li,
.document-list > li,
.quote-list > li,
.timeline-list > li,
.result-list > li,
.sitemap-list > li,
.status-list > li,
.api-list > li {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  padding-block: var(--qv5-gap-3);
}

.source-list > li:first-child,
.document-list > li:first-child,
.quote-list > li:first-child,
.timeline-list > li:first-child,
.result-list > li:first-child,
.sitemap-list > li:first-child,
.status-list > li:first-child,
.api-list > li:first-child {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
}

.source-list a,
.document-list a,
.quote-list a,
.timeline-list a,
.result-list a,
.sitemap-list a,
.status-list a,
.api-list a {
  color: var(--qv5-ink);
  font-family: var(--font-serif);
  font-size: clamp(1.1rem, 1rem + 0.5vw, 1.45rem);
  text-decoration: none;
}

.source-list a:hover,
.document-list a:hover,
.quote-list a:hover,
.timeline-list a:hover,
.result-list a:hover,
.sitemap-list a:hover,
.status-list a:hover,
.api-list a:hover {
  color: var(--qv5-link);
  text-decoration: underline;
}

.search-form,
.filter-form,
.toolbar,
.search-controls,
.filter-controls {
  align-items: end;
  border-block: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-3);
  margin-block: var(--qv5-gap-4);
  padding-block: var(--qv5-gap-3);
}

.search-form label,
.filter-form label,
.search-controls label,
.filter-controls label {
  display: grid;
  flex: 1 1 12rem;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-1);
}

.search-form input,
.filter-form input,
.search-controls input,
.filter-controls input {
  inline-size: 100%;
}

.filter-chip,
.tag,
.badge,
.status-badge,
.topic-chip {
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: 999px;
  color: var(--qv5-ink-muted);
  display: inline-flex;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-1);
  padding: calc(var(--qv5-gap-1) / 2) var(--qv5-gap-2);
}

.filter-chip[aria-pressed="true"],
.tag--active,
.badge--accent,
.status-badge--ok,
.topic-chip--active {
  background: var(--qv5-accent);
  border-color: var(--qv5-accent);
  color: var(--qv5-accent-ink);
}

.status-badge--warning,
.status-badge--error,
.badge--danger {
  border-color: var(--qv5-danger);
  color: var(--qv5-danger);
}

.avds-empty,
.search-empty,
.empty-state,
.error-state,
.qv-notice,
.notice,
.callout {
  border-block: var(--qv5-border-width) solid var(--qv5-rule-strong);
  margin-block: var(--qv5-gap-4);
  padding: var(--qv5-gap-4);
}

.error-state,
.qv-notice--error,
.notice--error {
  border-block-color: var(--qv5-danger);
}

.pagination,
.pager,
.results-pagination {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  margin-block-start: var(--qv5-gap-4);
}

.pagination a,
.pager a,
.results-pagination a {
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink);
  min-block-size: calc(var(--spacing) * 10);
  padding: var(--qv5-gap-2);
  text-decoration: none;
}

.pagination a:hover,
.pager a:hover,
.results-pagination a:hover,
.pagination [aria-current="page"],
.pager [aria-current="page"] {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
}

.timeline {
  border-inline-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-4);
  margin-inline-start: var(--qv5-gap-2);
  padding-inline-start: var(--qv5-gap-4);
}

.timeline-item {
  position: relative;
}

.timeline-item::before {
  background: var(--qv5-canvas);
  border: var(--qv5-border-width) solid var(--qv5-link);
  border-radius: 50%;
  block-size: calc(var(--spacing) * 3);
  content: "";
  inline-size: calc(var(--spacing) * 3);
  inset-inline-start: calc(var(--qv5-gap-4) * -1 - var(--spacing));
  position: absolute;
}

.share-tools,
.document-actions,
.quote-actions,
.embed-actions,
.print-actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.share-tools a,
.document-actions a,
.quote-actions a,
.embed-actions a,
.print-actions a {
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink);
  min-block-size: calc(var(--spacing) * 10);
  padding: var(--qv5-gap-2);
  text-decoration: none;
}

.share-tools a:hover,
.document-actions a:hover,
.quote-actions a:hover,
.embed-actions a:hover,
.print-actions a:hover {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
}

.quote-embed,
.quote-embed-page {
  background: var(--qv5-canvas);
  margin: 0;
  padding: var(--qv5-gap-3);
}

.quote-embed-card {
  inline-size: min(100%, 48rem);
  margin-inline: auto;
}

.quote-embed-card .quote-text {
  margin-block: var(--qv5-gap-3);
}

.code-block,
pre,
code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

pre,
.code-block {
  background: var(--qv5-surface-muted);
  border-block: var(--qv5-border-width) solid var(--qv5-rule);
  overflow-x: auto;
  padding: var(--qv5-gap-3);
}

.site-footer,
.qv5-site-footer {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
  margin-block-start: var(--qv5-gap-8);
}

.site-footer-inner,
.footer-inner {
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: 2fr repeat(2, minmax(0, 1fr));
  inline-size: min(100% - var(--qv5-gap-6), var(--qv5-content-measure));
  margin-inline: auto;
  padding-block: var(--qv5-gap-6);
}

.site-footer h2,
.site-footer h3,
.site-footer p,
.site-footer ul,
.site-footer li,
.qv5-site-footer h2,
.qv5-site-footer h3,
.qv5-site-footer p,
.qv5-site-footer ul,
.qv5-site-footer li {
  margin-block: 0;
}

.site-footer ul,
.qv5-site-footer ul {
  display: grid;
  gap: var(--qv5-gap-1);
  list-style: none;
  padding: 0;
}

.site-footer a,
.qv5-site-footer a {
  color: var(--qv5-ink-muted);
}

.site-footer a:hover,
.qv5-site-footer a:hover {
  color: var(--qv5-ink);
}

.footer-bottom,
.footer-meta {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink-muted);
  display: flex;
  flex-wrap: wrap;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-2);
  justify-content: space-between;
  margin-inline: auto;
  padding-block: var(--qv5-gap-3);
  width: min(100% - var(--qv5-gap-6), var(--qv5-content-measure));
}

.source-pulse-grid {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
}

.source-pulse-card {
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.source-pulse-card__head,
.source-pulse-card__dates {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-2);
  justify-content: space-between;
}

.source-pulse-card__head span,
.source-pulse-card__dates span,
.source-pulse-card p {
  color: var(--avds-color-text-muted);
  font-size: var(--qv5-font-size-sm);
  margin: 0;
}

.source-pulse-card--ok { --qv5-pulse-accent: var(--avds-color-success); }
.source-pulse-card--warn { --qv5-pulse-accent: var(--avds-color-warning); }
.source-pulse-card--quiet { --qv5-pulse-accent: var(--avds-color-text-muted); }

.source-pulse-card__head::before {
  background: var(--qv5-pulse-accent);
  border-radius: 50%;
  content: "";
  inline-size: 0.5rem;
  block-size: 0.5rem;
  flex: 0 0 auto;
}

@media (max-width: 62rem) {
  .site-header-inner,
  .masthead,
  .qv5-masthead {
    grid-template-columns: auto 1fr auto;
  }

  .site-nav,
  .primary-nav,
  .masthead-nav {
    display: none;
  }

  .document-layout,
  .quote-layout,
  .source-layout,
  .evolution-layout,
  .publisher-layout,
  .api-layout,
  .assistant-layout {
    grid-template-columns: minmax(0, 1fr);
  }

  .document-sidebar,
  .quote-sidebar,
  .source-sidebar,
  .evolution-sidebar,
  .publisher-sidebar,
  .api-sidebar,
  .assistant-sidebar,
  .aside,
  .page-aside {
    border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
    padding-block-end: var(--qv5-gap-3);
  }

  .site-footer-inner,
  .footer-inner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .site-footer-inner > :first-child,
  .footer-inner > :first-child {
    grid-column: 1 / -1;
  }
}

@media (min-width: 62.0625rem) {
  .site-menu-button,
  .mobile-menu-button,
  .nav-drawer-toggle {
    display: none;
  }
}

@media (max-width: 44rem) {
  .qv-main {
    inline-size: min(100% - var(--qv5-gap-4), var(--qv5-content-measure));
    padding-block: var(--qv5-gap-6);
  }

  .site-header-inner,
  .masthead,
  .qv5-masthead {
    inline-size: min(100% - var(--qv5-gap-4), var(--qv5-content-measure));
  }

  .site-brand small,
  .brand-lockup small,
  .masthead-brand small {
    display: none;
  }

  .site-actions,
  .masthead-actions,
  .header-actions {
    gap: 0;
  }

  .page-header,
  .page-head,
  .section-head,
  .document-header,
  .quote-header,
  .timeline-header,
  .search-header,
  .hero {
    margin-block-end: var(--qv5-gap-4);
    padding-block-end: var(--qv5-gap-4);
  }

  .card,
  .avds-card,
  .document-card,
  .quote-card,
  .source-card,
  .timeline-card,
  .minister-card,
  .briefing-card,
  .search-result,
  .atom-card,
  .publisher-card,
  .status-card,
  .assistant-panel,
  .quote-embed-card {
    padding: var(--qv5-gap-3);
  }

  .facts > div,
  .fact-list > div,
  .definition-list > div {
    gap: var(--qv5-gap-1);
    grid-template-columns: 1fr;
  }

  .search-form,
  .filter-form,
  .toolbar,
  .search-controls,
  .filter-controls {
    align-items: stretch;
  }

  .search-form button,
  .filter-form button {
    inline-size: 100%;
  }

  .site-footer-inner,
  .footer-inner {
    grid-template-columns: 1fr;
    inline-size: min(100% - var(--qv5-gap-4), var(--qv5-content-measure));
  }

  .site-footer-inner > :first-child,
  .footer-inner > :first-child {
    grid-column: auto;
  }

  .footer-bottom,
  .footer-meta {
    align-items: start;
    flex-direction: column;
    width: min(100% - var(--qv5-gap-4), var(--qv5-content-measure));
  }
}

/* Adapter for the preserved Jinja shell and its existing client-side hooks. */
.site-header .container,
.footer-institutional .container {
  inline-size: 100%;
}

.nav-shell {
  display: grid;
  gap: var(--qv5-gap-2);
}

/* The Jinja shell nests full-width brand and corpus-navigation rows. */
.site-header-inner,
.nav-shell.qv5-masthead {
  grid-template-columns: minmax(0, 1fr);
}

.nav-brand-row {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.logo {
  color: var(--qv5-ink);
  display: grid;
  flex: 0 0 auto;
  line-height: 1;
  text-decoration: none;
}

.logo:visited {
  color: var(--qv5-ink);
}

.logo-title {
  font-family: var(--font-serif);
  font-size: clamp(1.25rem, 1rem + 1vw, 1.8rem);
  font-weight: var(--heading-weight);
}

.logo-subline {
  color: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: 0.68rem;
  letter-spacing: var(--label-letter-spacing);
  margin-block-start: var(--qv5-gap-1);
  text-transform: uppercase;
}

.nav-links {
  align-items: center;
  display: flex;
  gap: var(--qv5-gap-1);
  margin-inline-start: auto;
  min-inline-size: 0;
}

.nav-link,
.speaker-tab,
.corpus-nav-links a {
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink);
  font-size: var(--small-font-size);
  padding: var(--qv5-gap-2);
  text-decoration: none;
}

.nav-links--global {
  flex-wrap: wrap;
}

.nav-links--global .nav-link {
  white-space: nowrap;
}

.nav-link:hover,
.nav-link.active,
.nav-link[aria-current="page"],
.speaker-tab:hover,
.speaker-tab.active,
.corpus-nav-links a:hover,
.corpus-nav-links a.active {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
}

.nav-utilities {
  align-items: center;
  display: flex;
  flex: 0 1 auto;
  gap: var(--qv5-gap-2);
}

.header-search {
  align-items: center;
  display: flex;
  gap: var(--qv5-gap-1);
}

.header-search input {
  inline-size: min(14rem, 22vw);
  min-block-size: calc(var(--spacing) * 9);
}

.header-search button,
.nav-share-button {
  background: transparent;
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink);
  min-block-size: calc(var(--spacing) * 9);
  padding: var(--qv5-gap-1) var(--qv5-gap-2);
}

.header-search button:hover,
.nav-share-button:hover {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
}

.nav-share-button svg {
  block-size: 1.15rem;
  inline-size: 1.15rem;
}

.lang-switcher,
.mobile-nav-lang,
.mobile-nav-switcher {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: calc(var(--qv5-gap-1) / 2);
}

.lang-switcher__link,
.mobile-nav-tab {
  border: var(--qv5-border-width) solid transparent;
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  padding: var(--qv5-gap-1);
  text-decoration: none;
}

.lang-switcher__link.active,
.lang-switcher__link:hover,
.mobile-nav-tab.active,
.mobile-nav-tab:hover {
  border-color: var(--qv5-rule-strong);
  color: var(--qv5-ink);
}

.nav--sectioned {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: minmax(0, 1fr);
  padding-block-start: var(--qv5-gap-2);
}

.speaker-switcher,
.corpus-nav-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1);
}

.corpus-nav {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.corpus-label {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.mobile-nav {
  background: var(--qv5-canvas);
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: none;
  inset-inline: 0;
  max-block-size: calc(100vh - var(--mobile-nav-offset, 0px));
  overflow-y: auto;
  padding: var(--qv5-gap-3) max(var(--qv5-gap-3), calc((100% - var(--qv5-content-measure)) / 2));
  position: absolute;
}

.mobile-nav.open {
  display: grid;
  gap: var(--qv5-gap-3);
}

.mobile-nav-group {
  display: grid;
}

.mobile-nav-link {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink);
  padding-block: var(--qv5-gap-2);
  text-decoration: none;
}

.mobile-nav-link:hover,
.mobile-nav-link.active {
  color: var(--qv5-link);
}

.mobile-nav-label {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.mobile-nav-backdrop {
  display: none;
}

.sr-only {
  block-size: 1px;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  inline-size: 1px;
  overflow: hidden;
  position: absolute;
  white-space: nowrap;
}

.footer-shell {
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: 2fr repeat(2, minmax(0, 1fr));
  padding-block: var(--qv5-gap-6);
}

.footer-brand,
.footer-column {
  display: grid;
  gap: var(--qv5-gap-2);
}

.footer-column ul,
.footer-links {
  display: grid;
  gap: var(--qv5-gap-1);
  list-style: none;
  margin: 0;
  padding: 0;
}

.footer-institutional a {
  color: var(--qv5-ink-muted);
}

.footer-institutional a:hover {
  color: var(--qv5-ink);
}

.footer-bottom {
  grid-column: 1 / -1;
}

/* Public-template adapter: density comes from composition, not legacy CSS. */
.qv-main .container {
  inline-size: 100%;
}

.page-title,
.quote-page__title,
.document-title,
.atom-title,
.timeline-title,
.doc-title {
  font-family: var(--font-serif);
  font-size: clamp(1.8rem, 1.2rem + 2.2vw, 3.35rem);
  line-height: var(--heading-line-height);
  margin: var(--qv5-gap-2) 0;
  max-inline-size: 23ch;
}

.page-desc,
.page-subtitle,
.section-desc,
.hero-subtitle,
.visual-source-note,
.timeline-page-note,
.assistant-source-note,
.quote-panel__muted {
  color: var(--qv5-ink-muted);
  max-inline-size: var(--qv5-reading-measure);
}

.avds-page-hero,
.ministers-head,
.atoms-head,
.timeline-head,
.briefing-hero__grid,
.quote-page__hero,
.publisher-hero,
.assistant-hero-grid {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: minmax(0, 1fr) minmax(13rem, 20rem);
  margin-block-end: var(--qv5-gap-6);
  padding-block-end: var(--qv5-gap-6);
}

.avds-page-hero > :only-child,
.ministers-head > :only-child,
.atoms-head > :only-child,
.timeline-head > :only-child {
  grid-column: 1 / -1;
}

.avds-source-panel,
.briefing-toolbar,
.timeline-toolbar,
.ministers-toolbar,
.filter-drawer,
.theses-nav-strip,
.selection-summary,
.theses-active-summary,
.evolution-map,
.evolution-year-strip,
.evolution-trajectory,
.ministers-profile,
.timeline-year-profile,
.briefing-review,
.briefing-speaker-overview {
  border-block: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-3);
  margin-block: var(--qv5-gap-4);
  padding: var(--qv5-gap-4) 0;
}

.avds-source-panel__intro,
.overview-section-head,
.briefing-section-head,
.evolution-map__head,
.evolution-trajectory__head,
.ministers-profile__intro,
.timeline-year-profile__intro,
.quote-card__head,
.quote-panel > header {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.avds-source-panel__kicker,
.quote-card__kicker,
.quote-panel__kicker,
.evolution-map__kicker,
.timeline-toolbar__label,
.filter-label,
.assistant-message-label,
.doc-type,
.doc-type-badge,
.year-badge,
.atom-block-badge,
.quote-card__code {
  color: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.avds-source-panel__facts,
.briefing-signal-overview,
.assistant-hero-facts-grid,
.briefing-speaker-overview__rows {
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr));
}

.avds-source-fact,
.avds-stat-card,
.briefing-signal-overview-card,
.assistant-coverage-card,
.assistant-chat-brief__item {
  border-block: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-1);
  padding-block: var(--qv5-gap-2);
}

.avds-source-fact strong,
.avds-source-fact b,
.avds-stat-card strong,
.briefing-signal-overview-card strong {
  font-family: var(--font-serif);
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.75rem);
}

.docs-list,
.theses-list,
.atoms-list,
.ministers-groups,
.evolution-timeline,
.timeline,
.assistant-side-links,
.assistant-latest,
.quote-page__rail,
.quote-page__lower-grid {
  display: grid;
  gap: var(--qv5-gap-3);
}

/* A repeated document row owns its single end rule: no card lattice. */
.docs-list-item,
.thesis-card,
.atom-card,
.minister-row,
.evolution-map__row,
.evolution-year-strip__row,
.timeline-year-profile__row,
.briefing-speaker-overview__row,
.assistant-latest-item {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink);
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
  padding-block: var(--qv5-gap-3);
  text-decoration: none;
}

.docs-list-item:first-child,
.thesis-card:first-child,
.atom-card:first-child,
.minister-row:first-child,
.evolution-map__row:first-child,
.evolution-year-strip__row:first-child,
.timeline-year-profile__row:first-child,
.briefing-speaker-overview__row:first-child {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
}

.docs-list-item:hover,
.thesis-card:hover,
.atom-card:hover,
.minister-row:hover,
.evolution-map__row:hover,
.evolution-map__row.is-active,
.timeline-year-profile__row:hover,
.timeline-year-profile__row.is-active {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
}

.docs-list-item--overview-card,
.docs-list-item--search-card,
.timeline-content,
.assistant-message,
.assistant-prompts,
.assistant-note,
.quote-panel,
.quote-page__status {
  background: var(--qv5-surface);
  padding: var(--qv5-gap-3);
}

.doc-meta,
.atom-header__row,
.timeline-meta,
.quote-card__byline,
.quote-panel__meta,
.quote-card__actions,
.timeline-actions,
.briefing-actions,
.evolution-trajectory__actions,
.evolution-trajectory__legend,
.lang-pills,
.geo-chip-row,
.theses-active-summary__chips,
.theses-nav-strip__links {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.doc-title,
.atom-doc-link,
.minister-row__person,
.minister-row__role,
.timeline-title,
.thesis-title,
.assistant-side-links a,
.quote-panel__source-link {
  color: var(--qv5-ink);
  font-family: var(--font-serif);
  text-decoration: none;
}

.doc-title:hover,
.atom-doc-link:hover,
.minister-row__person:hover,
.minister-row__role:hover,
.timeline-title:hover,
.thesis-title:hover,
.assistant-side-links a:hover,
.quote-panel__source-link:hover {
  color: var(--qv5-link);
  text-decoration: underline;
}

.filter-drawer__body,
.filters-bar,
.briefing-periods,
.avds-segmented-nav,
.timeline-toolbar__group {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.filter-chip,
.briefing-periods a,
.avds-segmented-nav a,
.theses-active-chip,
.geo-chip,
.lang-pill,
.atom-block-badge,
.quote-status,
.avds-status-badge {
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: 999px;
  color: var(--qv5-ink-muted);
  display: inline-flex;
  font-size: var(--small-font-size);
  padding: calc(var(--qv5-gap-1) / 2) var(--qv5-gap-2);
  text-decoration: none;
}

.filter-chip.active,
.briefing-periods a.active,
.avds-segmented-nav a.active,
.theses-active-chip,
.quote-status--verified,
.quote-status--confirmed,
.avds-status-badge--ok {
  background: var(--qv5-accent);
  border-color: var(--qv5-accent);
  color: var(--qv5-accent-ink);
}

.quote-status--warning,
.quote-status--unverified,
.quote-status--disputed,
.avds-status-badge--warning,
.avds-status-badge--error {
  border-color: var(--qv5-danger);
  color: var(--qv5-danger);
}

.quote-page__grid,
.document-reading-grid,
.assistant-layout,
.publisher-layout,
.briefing-layout {
  display: grid;
  gap: var(--qv5-gap-6);
  grid-template-columns: minmax(0, 1fr) minmax(15rem, 21rem);
}

.quote-page__lower-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.quote-card__text,
.quote-evidence {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-link);
  font-family: var(--font-serif);
  font-size: clamp(1.45rem, 1.05rem + 1.5vw, 2.3rem);
  line-height: 1.32;
  margin: var(--qv5-gap-4) 0;
  padding-inline-start: var(--qv5-gap-3);
}

.quote-evidence {
  font-size: clamp(1.05rem, 0.98rem + 0.4vw, 1.35rem);
}

.quote-evidence mark {
  background: var(--qv5-surface-muted);
  color: inherit;
}

.minister-row,
.ministers-profile__row,
.evolution-map__row,
.evolution-year-strip__row,
.timeline-year-profile__row,
.briefing-speaker-overview__row {
  align-items: center;
  grid-template-columns: minmax(0, 1fr) minmax(7rem, 2fr) auto;
}

.minister-row__counts,
.ministers-profile__metrics,
.evolution-map__meter,
.evolution-year-strip__meter,
.timeline-year-profile__meter,
.briefing-speaker-overview__meter,
.minister-row__signal-bar,
.avds-scorebar,
.assistant-coverage-bars {
  background: var(--qv5-surface-muted);
  block-size: calc(var(--spacing) * 2);
  display: block;
  min-inline-size: 4rem;
  overflow: hidden;
}

.ministers-profile__metrics i,
.evolution-map__meter span,
.evolution-year-strip__meter span,
.timeline-year-profile__meter i,
.briefing-speaker-overview__meter i,
.minister-row__signal-bar span,
.avds-scorebar__fill,
.assistant-coverage-bars i {
  background: var(--qv5-link);
  block-size: 100%;
  display: block;
}

.evolution-trajectory__scroll,
.evolution-trajectory__figure,
.avds-table-shell {
  overflow-x: auto;
}

.evolution-trajectory__grid {
  min-inline-size: 44rem;
}

.evolution-trajectory__row {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: minmax(12rem, 2fr) repeat(var(--trajectory-columns), minmax(3rem, 1fr)) auto;
  padding-block: var(--qv5-gap-2);
}

.evolution-trajectory__row--head {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.evolution-trajectory__bar {
  background: var(--qv5-surface-muted);
  block-size: calc(var(--spacing) * 2);
  display: block;
}

.evolution-trajectory__bar i {
  block-size: 100%;
  display: block;
}

.assistant-chat-shell,
.assistant-chat-log,
.assistant-chat-form,
.assistant-starter-grid,
.assistant-chat-brief,
.assistant-coverage-grid {
  display: grid;
  gap: var(--qv5-gap-3);
}

.assistant-starter-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
}

button.assistant-starter-card,
.assistant-starter-card {
  align-items: start;
  background: transparent;
  border: 0;
  color: var(--qv5-ink);
  display: grid;
  text-align: start;
}

button.assistant-starter-card:hover,
.assistant-starter-card:hover {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
}

/* The autonomous embed inherits the same editorial evidence hierarchy. */
.qazvision-embed-card {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
  display: block;
  margin: 0;
  padding: var(--qv5-gap-4);
}

.qazvision-embed-brand {
  color: var(--qv5-ink-muted);
  display: block;
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  margin-block-end: var(--qv5-gap-2);
}

.qazvision-embed-quote {
  font-family: var(--font-serif);
  font-size: clamp(1.2rem, 1rem + 1vw, 1.8rem);
  line-height: var(--heading-line-height);
  margin: 0 0 var(--qv5-gap-3);
}

.qazvision-embed-card footer {
  color: var(--qv5-ink-muted);
  display: grid;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-1);
}

.qazvision-embed-byline,
.qazvision-embed-links {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
}

.qazvision-embed-speaker,
.qazvision-embed-title {
  color: var(--qv5-ink);
  font-weight: var(--label-weight);
}

/* Share actions are a public JS contract; keep their popover inside the
 * editorial layer instead of giving it a legacy card treatment. */
.public-shell .nav-share-button,
.overview-primary-action--share,
.hero-share-trigger {
  align-items: center;
  display: inline-flex;
  gap: var(--qv5-gap-1);
}

.qaz-share-menu {
  background: var(--qv5-surface);
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  box-shadow: var(--qv5-shadow);
  display: grid;
  gap: var(--qv5-gap-1);
  inset-block-end: max(var(--qv5-gap-3), env(safe-area-inset-bottom));
  inset-inline: var(--qv5-gap-3);
  margin-inline: auto;
  max-inline-size: 28rem;
  padding: var(--qv5-gap-3);
  position: fixed;
  z-index: 40;
}

.qaz-share-menu__option--primary {
  background: var(--qv5-ink);
  color: var(--qv5-canvas);
}

.overview-primary-action--share::after {
  content: "↗";
}

@media (max-width: 62rem) {
  .avds-page-hero,
  .ministers-head,
  .atoms-head,
  .timeline-head,
  .briefing-hero__grid,
  .quote-page__hero,
  .publisher-hero,
  .assistant-hero-grid,
  .quote-page__grid,
  .document-reading-grid,
  .assistant-layout,
  .publisher-layout,
  .briefing-layout {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 44rem) {
  .avds-source-panel,
  .briefing-toolbar,
  .timeline-toolbar,
  .ministers-toolbar,
  .filter-drawer,
  .theses-nav-strip,
  .selection-summary,
  .theses-active-summary,
  .evolution-map,
  .evolution-year-strip,
  .evolution-trajectory,
  .ministers-profile,
  .timeline-year-profile,
  .briefing-review,
  .briefing-speaker-overview {
    padding-block: var(--qv5-gap-3);
  }

  .quote-page__lower-grid,
  .minister-row,
  .ministers-profile__row,
  .evolution-map__row,
  .evolution-year-strip__row,
  .timeline-year-profile__row,
  .briefing-speaker-overview__row {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* The seven task links and the language controls have a larger intrinsic
   measure than a 1024px reading surface.  Switch to the existing accessible
   menu before that point; this keeps the masthead from becoming the layout
   owner for the entire document. */
@media (max-width: 70rem) {
  .nav-links,
  .header-search,
  .nav-share-button,
  .nav--sectioned {
    display: none;
  }

  .nav-utilities {
    margin-inline-start: auto;
  }

  .nav-burger {
    display: inline-flex;
    flex-direction: column;
    gap: 0.22rem;
  }

  .nav-burger span {
    background: currentColor;
    block-size: var(--qv5-border-width);
    inline-size: 1.25rem;
  }
}

@media (max-width: 44rem) {
  .logo-subline,
  .lang-switcher__link:not(.active) {
    display: none;
  }

  .footer-shell {
    grid-template-columns: 1fr;
  }

  .footer-bottom {
    grid-column: auto;
  }
}

/* Search and assistant are dense public work surfaces.  Their controls retain
   semantic HTML, while this composition layer assigns a single responsive
   layout owner instead of leaving intrinsic form widths to compete. */
.search-shell,
.search-page-form,
.search-page-form__query,
.search-facets,
.search-compare,
.search-compare__options,
.assistant-frame-shell,
.assistant-chat-shell,
.assistant-chat-log,
.assistant-starter-grid,
.assistant-prompt-disclosures,
.assistant-prompts-group {
  max-inline-size: 100%;
  min-inline-size: 0;
}

.search-task-strip {
  border-block: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
  margin-block: var(--qv5-gap-5);
  padding-block: var(--qv5-gap-3);
}

.search-task-strip a {
  color: var(--qv5-ink-muted);
  overflow-wrap: anywhere;
}

.search-task-strip a:hover,
.search-task-strip a:focus-visible {
  color: var(--qv5-ink);
}

.search-page-form {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-3);
  margin-block-end: var(--qv5-gap-5);
  padding-block-end: var(--qv5-gap-5);
}

.search-page-form__query {
  align-items: end;
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: minmax(0, 1fr) auto;
}

.search-page-form__query label {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  grid-column: 1 / -1;
  letter-spacing: var(--label-letter-spacing);
}

.search-page-form__query input,
.search-facets :is(input, select) {
  inline-size: 100%;
  min-inline-size: 0;
}

.search-page-form__query button {
  white-space: nowrap;
}

.search-filters,
.search-compare,
.assistant-disclosure {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  padding-block-start: var(--qv5-gap-3);
}

.search-filters > summary,
.search-compare > summary,
.assistant-disclosure > summary {
  color: var(--qv5-ink);
  cursor: pointer;
  font-weight: var(--label-weight);
  padding-block: var(--qv5-gap-1);
}

.search-facets {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
  padding-block-start: var(--qv5-gap-3);
}

.search-facets label {
  color: var(--qv5-ink-muted);
  display: grid;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.search-compare__options {
  display: grid;
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
  padding-block: var(--qv5-gap-3);
}

.search-compare__options label {
  align-items: start;
  color: var(--qv5-ink);
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: 1.75rem minmax(0, 1fr);
  min-inline-size: 0;
  overflow-wrap: anywhere;
}

.search-compare__options input[type="checkbox"] {
  accent-color: var(--qv5-link);
  block-size: 1.75rem;
  inline-size: 1.75rem;
  margin: 0;
}

.assistant-prompt-disclosures,
.assistant-prompts-group {
  display: grid;
  gap: var(--qv5-gap-2);
}

.assistant-prompts-group {
  padding-block: var(--qv5-gap-2);
}

body.public-shell .assistant-starter-grid > button.assistant-starter-card,
body.public-shell .assistant-prompts-group > button.assistant-starter-card {
  align-content: start;
  display: grid;
  inline-size: 100%;
  justify-content: start;
  min-inline-size: 0;
  overflow-wrap: anywhere;
}

@media (max-width: 44rem) {
  .search-task-strip,
  .search-page-form__query,
  .search-facets,
  .search-compare__options,
  .assistant-starter-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .search-task-strip {
    display: grid;
  }

  .search-page-form__query button {
    inline-size: 100%;
  }

  .search-compare__options input[type="checkbox"] {
    block-size: var(--avds-mobile-touch-target);
    inline-size: var(--avds-mobile-touch-target);
  }
}

/* Route templates predate this composition layer: they emit page-specific
 * families (page heads, kickers, panels, grids, rows, meters) that had no
 * rules at all, so each route fell back to user-agent defaults and the pages
 * no longer shared one visual system.  The blocks below map every such family
 * onto the contracts already established above — surface + rule + gap,
 * uppercase micro-label, serif display, single-rule row, pill, meter, and
 * auto-fit grid — without adding tokens or touching templates. */

/* Institutional footer.  The shell renders one `.footer-row` inside a
 * three-column `.footer-shell`, so the real two-part layout (colophon and
 * three link groups) has to be declared for that grandchild; the legacy
 * `.footer-brand`/`.footer-column` pair is not part of the public shell. */
.footer-shell {
  grid-template-columns: minmax(0, 1fr);
}

.footer-row {
  display: grid;
  gap: var(--qv5-gap-6);
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr);
}

.footer-row .footer-meta {
  border-block-start: 0;
  display: grid;
  gap: var(--qv5-gap-2);
  justify-content: start;
  padding-block: 0;
  width: auto;
}

.footer-title {
  color: var(--qv5-ink);
  font-family: var(--font-serif);
  font-size: clamp(1.1rem, 1rem + 0.4vw, 1.4rem);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.footer-copy-row {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.footer-copy,
.footer-contact {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.footer-contact {
  text-decoration: none;
}

.footer-contact:hover {
  color: var(--qv5-ink);
  text-decoration: underline;
}

.footer-badge {
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: 999px;
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  padding: calc(var(--qv5-gap-1) / 2) var(--qv5-gap-2);
  text-decoration: none;
}

.footer-badge:hover {
  border-color: var(--qv5-accent);
  color: var(--qv5-ink);
}

.footer-nav {
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
}

.footer-nav-group {
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.footer-nav-heading {
  color: var(--qv5-ink);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  margin: 0;
  text-transform: uppercase;
}

.footer-nav-links {
  display: grid;
  gap: var(--qv5-gap-1);
}

.footer-nav-links a {
  color: var(--qv5-ink-muted);
  font-size: var(--qv5-font-size-sm);
  text-decoration: none;
}

.footer-nav-links a:hover {
  color: var(--qv5-ink);
  text-decoration: underline;
}

/* Sectioned corpus navigation, muted inline links and the open-corpus pages
 * that share the About shell. */
.nav--sectioned {
  display: grid;
  gap: var(--qv5-gap-3);
}

.nav-link--muted {
  color: var(--qv5-ink-muted);
}

.about-shell,
.ministers-shell,
.publisher-shell {
  display: grid;
  gap: var(--qv5-gap-8);
}

/* Page heads and micro-labels.  Every route opens with the same two beats:
 * an uppercase kicker and a serif display title above a muted lede, with an
 * optional factual note in the side column. */
.hero-kicker,
.page-kicker,
.micro-heading,
.home-microtitle,
.doc-ai-kicker,
.macro-corpus-kicker,
.publisher-section__kicker,
.doc-fulltext-label,
.doc-provenance__label,
.doc-theme-profile__label,
.ministers-profile__label,
.briefing-signal-overview__label,
.doc-echo-metric__label,
.overview-live-copy,
.status-view-nav__label,
.publisher-list-label {
  color: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  margin: 0;
  text-transform: uppercase;
}

.hero-kicker--gold {
  color: var(--qv5-accent);
}

.hero-title {
  font-size: clamp(2.15rem, 1.25rem + 3vw, 4.5rem);
  margin: var(--qv5-gap-2) 0;
  max-inline-size: 19ch;
}

.page-head,
.page-intro,
.briefing-hero,
.assistant-hero,
.status-hero,
.training-hero {
  display: grid;
  gap: var(--qv5-gap-4);
}

.page-head--split,
.page-head--search,
.page-head--sitemap,
.page-head--timeline,
.page-intro--about,
.status-hero .assistant-hero-grid,
.assistant-hero .assistant-hero-grid,
.training-hero__grid {
  align-items: start;
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: minmax(0, 1fr) minmax(13rem, 20rem);
}

.page-head-main,
.page-intro-main,
.assistant-hero-main,
.status-hero .assistant-hero-main,
.training-hero__copy {
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.page-head-note,
.page-intro-side,
.page-note {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
}

.page-note-label {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.page-note-copy,
.page-desc,
.page-subtitle,
.assistant-status-detail,
.doc-use-note,
.doc-language-note,
.publisher-note,
.briefing-signal-meta,
.doc-prevnext-label,
.doc-copy-status,
.quote-copy-status,
.toolbar-note {
  color: var(--qv5-ink-muted);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.assistant-status-detail,
.doc-use-note,
.doc-language-note,
.doc-copy-status,
.quote-copy-status,
.toolbar-note,
.page-note-copy {
  font-size: var(--qv5-font-size-sm);
}

/* Section rhythm and the page-level section modifiers used by home,
 * ministers, briefing, search and status. */
.section--dashboard {
  margin-block: var(--qv5-gap-6);
}

.section--compact {
  margin-block: var(--qv5-gap-4);
}

.section--alt {
  background: var(--qv5-surface-muted);
  margin-inline: calc(var(--qv5-gap-6) * -1);
  padding-inline: var(--qv5-gap-6);
}

.section--ministers {
  display: grid;
  gap: var(--qv5-gap-4);
}

/* About / API / sitemap shell: one divider between top-level blocks, one
 * heading size, one prose measure. */
.about-section-sep {
  background: var(--qv5-rule-strong);
  block-size: var(--qv5-border-width);
  margin-block: var(--qv5-gap-6);
}

.about-section-title {
  font-size: clamp(1.45rem, 1.1rem + 1.2vw, 2.15rem);
  margin-block: 0 var(--qv5-gap-3);
}

.about-copy {
  color: var(--qv5-ink);
  margin-block: 0 var(--qv5-gap-3);
  max-inline-size: var(--qv5-reading-measure);
}

.about-copy--compact {
  font-size: var(--qv5-font-size-sm);
}

.about-directory,
.filter-drawer {
  border-block: var(--qv5-border-width) solid var(--qv5-rule-strong);
  padding-block: var(--qv5-gap-3);
}

.about-directory > summary,
.filter-drawer__summary,
.context-summary,
.status-catalog-disclosure > summary {
  cursor: pointer;
  font-weight: var(--label-weight);
  list-style-position: inside;
}

/* Coverage blocks on About and status monitoring share the fact-grid and
 * meter contracts so a percentage bar looks identical on every route. */
.coverage-summary-grid,
.about-coverage-profile__grid,
.status-hero-facts-grid,
.api-overview-data-grid {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
}

.coverage-summary-item {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-1);
  padding-block-start: var(--qv5-gap-2);
}

.coverage-summary-item strong {
  font-family: var(--font-serif);
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.75rem);
}

.coverage-summary-item span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.about-coverage-profile,
.sitemap-route-profile,
.doc-theme-profile,
.ministers-profile,
.doc-provenance,
.avds-threshold-list {
  display: grid;
  gap: var(--qv5-gap-3);
}

.about-coverage-profile__head,
.sitemap-route-profile__intro,
.doc-theme-profile__head,
.doc-provenance__summary,
.doc-context-panel__head,
.doc-use-workspace__head,
.doc-echo-panel__head,
.avds-threshold-card__head,
.theses-active-summary__head,
.theses-nav-strip__head,
.ministers-group__head,
.workspace-matches__head,
.macro-corpus-head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.about-coverage-profile__year,
.about-coverage-profile__quality-row,
.doc-theme-profile__row,
.doc-provenance__item,
.sitemap-route-profile__row,
.avds-threshold-card__scale {
  align-items: center;
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: minmax(0, 12rem) minmax(0, 1fr) auto;
}

.about-coverage-profile__meter,
.sitemap-route-profile__meter,
.doc-theme-profile__meter,
.ministers-profile__metric,
.avds-threshold-meter {
  background: var(--qv5-surface-muted);
  block-size: calc(var(--spacing) * 2);
  display: block;
  min-inline-size: 4rem;
  overflow: hidden;
}

.about-coverage-profile__meter i,
.sitemap-route-profile__meter i,
.doc-theme-profile__meter i,
.ministers-profile__metric i,
.avds-threshold-meter__zone,
.avds-threshold-meter__marker {
  background: var(--qv5-link);
  block-size: 100%;
  display: block;
}

.ministers-profile__metric--gold i,
.avds-scorebar--gold .avds-scorebar__fill {
  background: var(--qv5-accent);
}

/* ---------------------------------------------------------------------------
 * Actions.  Route templates mint their own action names, so the same "primary
 * call to action" was an ink `.avds-btn` on one page and an unstyled inline
 * link on another.  The blocks below resolve every action family onto the
 * existing button, link and focus contracts.
 * ------------------------------------------------------------------------- */

.avds-btn--primary {
  background: var(--qv5-link);
  border-color: var(--qv5-link);
  color: var(--qv5-canvas);
}

.avds-btn--primary:hover {
  background: var(--qv5-ink);
  border-color: var(--qv5-ink);
  color: var(--qv5-canvas);
}

.avds-inline-action,
.atom-action-link,
.atom-copy-action,
.atom-share-action,
.atom-doc-link--headline,
.atom-side-link,
.doc-language-link,
.doc-source-link,
.doc-source-name,
.doc-speaker-link,
.status-view-inline-link,
.qazgeo-panel__source,
.export-btn,
.latest-addition-link {
  color: var(--qv5-link);
  font-weight: var(--label-weight);
  text-decoration: underline;
  text-decoration-thickness: var(--qv5-border-width);
  text-underline-offset: 0.22em;
}

.avds-inline-action:hover,
.atom-action-link:hover,
.doc-language-link:hover,
.doc-source-link:hover,
.doc-source-name:hover,
.doc-speaker-link:hover,
.status-view-inline-link:hover,
.qazgeo-panel__source:hover,
.export-btn:hover,
.latest-addition-link:hover {
  color: var(--qv5-ink);
  text-decoration-color: currentColor;
}

.atom-action-link--muted,
.atom-side-link--muted,
.atom-action-link--share {
  color: var(--qv5-ink-muted);
}

.atom-action-link--featured {
  color: var(--qv5-accent-ink);
}

/* Template buttons inherit the global `button:not(...)` shell from
 * qazvision-avds5.css, which outranks a single class.  The `:not()` pair below
 * restores parity so the toolbar, tab and floating controls can be restyled
 * without editing the shell or the templates. */

button:is(.lang-tab, .doc-reading-control, .doc-reading-exit, .atom-copy-action, .atom-share-action, .hero-search-btn, .training-submit, .back-to-top, .overview-primary-action):not(.site-menu-button):not(.search-toggle) {
  border-radius: var(--qv5-radius);
  min-block-size: var(--avds-mobile-touch-target);
}

button:is(.lang-tab, .doc-reading-control, .doc-reading-exit, .atom-copy-action, .atom-share-action):not(.site-menu-button):not(.search-toggle) {
  background: transparent;
  border-color: var(--qv5-rule-strong);
  color: var(--qv5-ink);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  padding: var(--qv5-gap-1) var(--qv5-gap-2);
}

button:is(.lang-tab, .doc-reading-control, .doc-reading-exit, .atom-copy-action, .atom-share-action):not(.site-menu-button):not(.search-toggle):hover {
  background: var(--qv5-surface-muted);
  border-color: var(--qv5-ink);
  color: var(--qv5-ink);
}

button:is(.hero-search-btn):not(.site-menu-button):not(.search-toggle) {
  background: var(--qv5-ink);
  border-color: var(--qv5-ink);
  color: var(--qv5-canvas);
  inline-size: var(--avds-mobile-touch-target);
  padding: var(--qv5-gap-1);
}

.back-to-top {
  background: var(--qv5-ink);
  border-color: var(--qv5-ink);
  border-radius: 999px;
  color: var(--qv5-canvas);
  inline-size: var(--avds-mobile-touch-target);
  inset-block-end: var(--qv5-gap-4);
  inset-inline-end: var(--qv5-gap-4);
  padding: 0;
  position: fixed;
  z-index: 40;
}

.back-to-top:hover {
  background: var(--qv5-link);
  border-color: var(--qv5-link);
}

.skip-link {
  border-radius: var(--qv5-radius);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
}

/* ---------------------------------------------------------------------------
 * Utility text and micro chrome.
 * ------------------------------------------------------------------------- */

.text-muted {
  color: var(--qv5-ink-muted);
}

.text-danger {
  color: var(--qv5-danger);
}

.small {
  font-size: var(--small-font-size);
}

.icon-fixed {
  align-items: center;
  display: inline-flex;
  flex: 0 0 auto;
  justify-content: center;
  inline-size: 1.1em;
}

.logo--text {
  align-items: baseline;
  gap: var(--qv5-gap-1);
}

.selection-title {
  color: var(--qv5-ink);
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.selection-meta {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.is-current {
  border-color: var(--qv5-accent);
}

/* ---------------------------------------------------------------------------
 * Tags, chips, language chrome and status badges.  Every one of these pills
 * shares the `.filter-chip` / `.avds-status-badge` geometry already declared
 * above; the blocks below only add the missing members and their modifiers.
 * ------------------------------------------------------------------------- */

.atom-tags,
.doc-tags,
.atom-echo-terms,
.doc-echo-terms,
.match-reasons,
.lang-tabs,
.avds-pill-tabs,
.page-meta-strip {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.atom-tag,
.atom-lang-badge,
.doc-lang-badge,
.lang-badge,
.doc-echo-chip,
.atom-echo-chip,
.match-reasons > * {
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: 999px;
  color: var(--qv5-ink-muted);
  display: inline-flex;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-1);
  padding: calc(var(--qv5-gap-1) / 2) var(--qv5-gap-2);
  text-decoration: none;
}

.atom-lang-badge,
.doc-lang-badge,
.lang-badge {
  background: var(--qv5-surface-muted);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.atom-lang-badge--inline,
.doc-thesis-flag--inline,
.atom-theme-inline {
  border: 0;
  color: var(--qv5-ink-muted);
  padding: 0;
}

.lang-badge--official {
  border-color: var(--qv5-accent);
  color: var(--qv5-accent-ink);
}

.lang-badge--translation {
  border-color: var(--qv5-rule-strong);
  color: var(--qv5-ink-muted);
}

.doc-thesis-flag,
.doc-echo-term,
.atom-echo-term {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.doc-thesis-flag {
  border-inline-start: calc(var(--qv5-border-width) * 2) solid var(--qv5-accent);
  padding-inline-start: var(--qv5-gap-2);
}

.lang-tabs {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
}

button:is(.lang-tab):not(.site-menu-button):not(.search-toggle) {
  background: transparent;
  border: 0;
  border-block-end: calc(var(--qv5-border-width) * 2) solid transparent;
  border-radius: 0;
  color: var(--qv5-ink-muted);
  gap: var(--qv5-gap-1);
  padding: var(--qv5-gap-2) var(--qv5-gap-2);
}

button:is(.lang-tab):not(.site-menu-button):not(.search-toggle):hover {
  background: transparent;
  color: var(--qv5-ink);
}

button:is(.lang-tab.active, .lang-tab[aria-selected="true"]):not(.site-menu-button):not(.search-toggle) {
  border-block-end-color: var(--qv5-accent);
  color: var(--qv5-ink);
  font-weight: var(--label-weight);
}

.lang-panel {
  display: none;
}

.lang-panel.active {
  display: block;
}

.lang-pills--timeline {
  margin-inline-start: var(--qv5-gap-1);
}

.avds-pill-tabs {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
}

.avds-status-badge--health {
  border-color: var(--avds-color-success);
  color: var(--avds-color-success);
}

.avds-status-badge--warn {
  border-color: var(--avds-color-warning);
  color: var(--avds-color-warning);
}

.avds-status-badge--danger {
  border-color: var(--qv5-danger);
  color: var(--qv5-danger);
}

.avds-status-badge--muted {
  border-color: var(--qv5-rule-strong);
  color: var(--qv5-ink-muted);
}

.avds-status-badge__dot {
  background: currentColor;
  border-radius: 999px;
  block-size: 0.5rem;
  flex: 0 0 auto;
  inline-size: 0.5rem;
}

/* ---------------------------------------------------------------------------
 * Data tables.  `.qv-main table` already owns row rules and cell padding; the
 * template wrappers only need to declare their own scroll and stacking
 * behaviour so an ops matrix cannot widen the page frame.
 * ------------------------------------------------------------------------- */

.coverage-table-shell,
.avds-table-shell--responsive,
.ops-matrix-table--responsive {
  overflow-x: auto;
}

.coverage-table,
.ops-matrix-table {
  border-collapse: collapse;
  inline-size: 100%;
}

.avds-table-shell--responsive > table,
.ops-matrix-table--responsive {
  min-inline-size: 40rem;
}

.ops-matrix-table--compact :where(th, td) {
  padding-block: var(--qv5-gap-1);
}

.status-catalog-name {
  color: var(--qv5-ink);
  font-weight: var(--label-weight);
}

.status-catalog-type,
.status-catalog-sources,
.status-catalog-note {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.status-catalog-body {
  display: grid;
  gap: var(--qv5-gap-3);
}

.context-details {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  padding-block: var(--qv5-gap-2);
}

.context-details > summary {
  cursor: pointer;
  font-weight: var(--label-weight);
}

.context-body {
  display: grid;
  gap: var(--qv5-gap-3);
  padding-block: var(--qv5-gap-3);
}

/* ---------------------------------------------------------------------------
 * "Latest additions" list and pagination.  Both are plain link/date rows that
 * previously fell back to inline text with browser-default spacing.
 * ------------------------------------------------------------------------- */

.latest-additions {
  display: grid;
  gap: var(--qv5-gap-1);
}

.latest-additions--compact-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
}

.latest-additions > * {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.latest-addition-title {
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
}

.latest-addition-date {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.pagination-ellipsis {
  color: var(--qv5-ink-muted);
  padding-inline: var(--qv5-gap-1);
}

/* ---------------------------------------------------------------------------
 * Card, grid and panel primitives.  Public templates compose their routes from
 * link cards, feature cards and card grids, but only `.avds-card` itself had a
 * rule, so an interactive card stayed a browser-default underlined link and a
 * three-column directory collapsed into one stacked list.  Everything below
 * reuses the surface, rule and gap tokens already in `qazvision-avds5.css`.
 * ------------------------------------------------------------------------- */

.avds-card--interactive {
  color: inherit;
  text-decoration: none;
}

.avds-card--interactive:is(:hover, :focus-within) {
  box-shadow: inset 0 0 0 var(--qv5-border-width) var(--qv5-rule-strong);
}

.avds-card-grid--two {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
}

.avds-card-grid--three {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
}

.site-map-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
}

.avds-link-card {
  align-content: start;
}

.avds-link-card__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.avds-link-card__title {
  color: var(--qv5-ink);
  font-family: var(--font-serif);
  font-size: clamp(1.05rem, 0.95rem + 0.5vw, 1.35rem);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
  text-decoration: none;
}

.avds-link-card__title:hover {
  text-decoration: underline;
}

.avds-link-card__copy {
  color: var(--qv5-ink-muted);
  font-size: var(--qv5-font-size-sm);
  margin: 0;
}

.avds-link-card__meta {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
  white-space: nowrap;
}

.avds-link-card__links {
  align-items: center;
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-3);
  padding-block-start: var(--qv5-gap-3);
}

.avds-feature-card {
  align-content: start;
  align-items: start;
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: auto minmax(0, 1fr);
}

.avds-feature-card__num {
  color: var(--qv5-accent);
  font-family: var(--font-serif);
  font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.4rem);
  font-weight: var(--heading-weight);
  line-height: 1;
}

.avds-feature-card__body {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.avds-feature-card__title {
  font-size: clamp(1rem, 0.95rem + 0.3vw, 1.2rem);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.avds-feature-card__copy {
  color: var(--qv5-ink-muted);
  font-size: var(--qv5-font-size-sm);
  margin: 0;
}

/* A bare `.avds-panel` that is not also an `.avds-card` receives only the
   vendor surface background, so its content touched the panel edge.  The
   `:not()` keeps `.avds-card` padding ownership untouched. */
.avds-panel:not(.avds-card) {
  display: grid;
  gap: var(--qv5-gap-3);
  padding: var(--qv5-gap-4);
}

.avds-panel__kicker {
  color: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  margin: 0;
  text-transform: uppercase;
}

.avds-panel__copy {
  color: var(--qv5-ink-muted);
  font-size: var(--qv5-font-size-sm);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.avds-editorial-surface {
  display: grid;
  gap: var(--qv5-gap-8);
}

.operator-list {
  display: grid;
  gap: var(--qv5-gap-2);
  margin: 0;
  padding-inline-start: var(--qv5-gap-4);
}

/* Empty states previously rendered as loose text with inline buttons. */
.avds-empty-state {
  align-items: start;
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: auto minmax(0, 1fr);
  padding-block: var(--qv5-gap-4);
}

.avds-empty-state__mark {
  background: var(--qv5-surface-muted);
  block-size: calc(var(--spacing) * 6);
  border-radius: var(--qv5-radius);
  inline-size: calc(var(--spacing) * 6);
}

.avds-empty-state__body {
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.avds-empty-state__kicker {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.avds-empty-state__actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.avds-skeleton {
  display: grid;
  gap: var(--qv5-gap-2);
}

.avds-skeleton__line {
  animation: qv5-skeleton-pulse 1.6s ease-in-out infinite;
  background: var(--qv5-surface-muted);
  block-size: calc(var(--spacing) * 2);
  border-radius: var(--qv5-radius);
  inline-size: 100%;
}

.avds-skeleton__line--title {
  block-size: calc(var(--spacing) * 3);
  inline-size: 60%;
}

@keyframes qv5-skeleton-pulse {
  50% {
    opacity: 0.55;
  }
}

@media (prefers-reduced-motion: reduce) {
  .avds-skeleton__line {
    animation: none;
  }
}

/* Theme directory cards appear both as bare links (home corpus, 404) and as
   interactive cards, so only the bare variant needs to mint its own surface. */
.theme-grid {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
}

.theme-grid--balanced {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
}

.theme-card {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.theme-card:not(.avds-card) {
  background: var(--qv5-surface);
  color: inherit;
  padding: var(--qv5-gap-3);
  text-decoration: none;
}

.theme-card--cta {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
}

.theme-card-main {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.theme-card-ident {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.theme-code {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.theme-name {
  font-size: clamp(1rem, 0.95rem + 0.3vw, 1.2rem);
  margin: 0;
}

.theme-count {
  color: var(--qv5-ink-muted);
  font-family: var(--font-serif);
  font-size: var(--qv5-font-size-sm);
  white-space: nowrap;
}

/* Hero statistic cards and the route-level stat cards share one rhythm. */
.stat-card {
  align-content: start;
}

.stat-num {
  font-family: var(--font-serif);
  font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.2rem);
  font-weight: var(--heading-weight);
  line-height: 1.1;
}

.stat-label {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.avds-stat-card__kicker {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.avds-stat-card__value {
  font-family: var(--font-serif);
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.75rem);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.avds-stat-card__note {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  margin: 0;
}

.avds-stat-strip {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr));
}

.avds-mini-metric-strip {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
}

.avds-source-panel__docs {
  display: grid;
  gap: var(--qv5-gap-2);
}

.avds-source-doc {
  align-items: baseline;
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
  padding-block: var(--qv5-gap-2);
}

.avds-source-doc > strong {
  flex: 1 1 12rem;
  min-inline-size: 0;
}

.avds-source-doc > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  margin-inline-start: auto;
}

/* ---------------------------------------------------------------------------
 * Analytics and corpus surfaces.  Status, API and home pages wrap their data
 * blocks in `.overview-surface` / `.avds-analytics-panel` / `.avds-corpus-card`
 * but those wrappers had no rules at all, so panels lost their padding and the
 * two-column analytics layout rendered as one long column.
 * ------------------------------------------------------------------------- */

.overview-surface {
  align-content: start;
  background: var(--qv5-surface);
  display: grid;
  gap: var(--qv5-gap-4);
  padding: var(--qv5-gap-4);
}

.overview-surface--full {
  gap: var(--qv5-gap-6);
  padding: var(--qv5-gap-6);
}

.overview-surface--themes,
.overview-surface--search {
  gap: var(--qv5-gap-3);
}

.overview-subhead {
  display: grid;
  gap: var(--qv5-gap-1);
}

.overview-subtitle {
  font-size: clamp(1.05rem, 0.95rem + 0.5vw, 1.45rem);
  line-height: var(--heading-line-height);
  margin: 0;
}

.overview-subcopy {
  color: var(--qv5-ink-muted);
  font-size: var(--qv5-font-size-sm);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.overview-section-head--compact {
  gap: var(--qv5-gap-1);
  margin-block: var(--qv5-gap-3);
}

.avds-analytics-grid {
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
}

.avds-analytics-panel {
  align-content: start;
  min-inline-size: 0;
}

.avds-corpus-list {
  display: grid;
  gap: var(--qv5-gap-3);
}

.avds-corpus-card {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  padding-block: var(--qv5-gap-3);
}

.avds-corpus-card__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.avds-corpus-card__body {
  display: grid;
  gap: var(--qv5-gap-2);
}

.avds-corpus-card__metric {
  display: grid;
  gap: var(--qv5-gap-1);
}

.avds-corpus-card__metric > span {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.avds-corpus-card__foot {
  align-items: baseline;
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink-muted);
  display: flex;
  flex-wrap: wrap;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-2);
  justify-content: space-between;
  padding-block-start: var(--qv5-gap-2);
}

.avds-scorebar--compact {
  block-size: var(--qv5-gap-1);
}

/* Score bars carry their value in an inline `width`, so the meter itself only
   has to keep three threshold zones side by side with a positioned marker. */
.avds-threshold-card {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  padding-block: var(--qv5-gap-3);
}

.avds-threshold-card .avds-threshold-meter {
  display: flex;
  position: relative;
}

.avds-threshold-card .avds-threshold-meter__zone {
  flex: 1 1 0;
}

.avds-threshold-card .avds-threshold-meter__marker {
  background: var(--qv5-ink);
  inline-size: calc(var(--qv5-border-width) * 2);
  inset-block: 0;
  position: absolute;
}

.avds-threshold-meter__zone--danger {
  background: var(--qv5-danger);
}

.avds-threshold-meter__zone--warn {
  background: var(--avds-color-warning);
}

.avds-threshold-meter__zone--safe {
  background: var(--avds-color-success);
}

.api-view-nav {
  border-block: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  padding-block: var(--qv5-gap-2);
}

.api-view-nav__link {
  color: var(--qv5-ink-muted);
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 12rem;
  padding: var(--qv5-gap-2);
  text-decoration: none;
}

.api-view-nav__link.is-active {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
}

.api-view-nav__link strong {
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
}

.api-view-nav__link small {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.api-overview-panel {
  align-content: start;
}

.api-reference-lede {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-2);
  padding-block-end: var(--qv5-gap-4);
}

.api-entry-list {
  gap: var(--qv5-gap-1);
}

.qv-notice--attention {
  border-block-color: var(--avds-color-warning);
  display: grid;
  gap: var(--qv5-gap-2);
}

.qv-notice__title {
  font-weight: var(--label-weight);
  margin: 0;
}

.qv-notice__copy {
  color: var(--qv5-ink-muted);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.qv-notice__meta {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  margin: 0;
}

.geo-summary-strip {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
}

.status-hero-facts {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.status-grid--compact {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
}

.status-overview-monitoring-grid {
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: minmax(0, 1fr);
}

.status-overview-monitoring-grid--has-publication {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr));
}

.status-freshness-panel {
  align-content: start;
}

.status-publication-freshness {
  border-block-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-accent);
}

.status-pipeline-list {
  gap: var(--qv5-gap-2);
}

.status-pipeline-card__body {
  gap: var(--qv5-gap-2);
}

.status-pipeline-card__scope {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.status-pipeline-source-breakdown {
  display: grid;
  gap: var(--qv5-gap-1);
  list-style: none;
  margin: 0;
  padding: 0;
}

.status-pipeline-source-breakdown li {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.status-pipeline-alert,
.status-pipeline-delivery-note {
  color: var(--qv5-ink-muted);
  font-size: var(--qv5-font-size-sm);
  margin: 0;
}

.status-pipeline-alert {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.status-view-nav {
  align-items: baseline;
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-3);
  padding-block-end: var(--qv5-gap-2);
}

.status-view-nav__links {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-3);
}

.status-view-nav__link {
  color: var(--qv5-ink-muted);
  font-size: var(--qv5-font-size-sm);
  font-weight: var(--label-weight);
  text-decoration: none;
}

.status-view-nav__link.is-active,
.status-view-nav__link:hover {
  color: var(--qv5-ink);
  text-decoration: underline;
}

.status-catalog-table {
  min-inline-size: 44rem;
}

/* ---------------------------------------------------------------------------
 * Homepage, corpus and geo composition.  The front page mixes `.overview-*`,
 * `.hero-*`, `.home-*` and `.corpus-*` names that carried no rules at all, so
 * it rendered as raw document flow while every other route showed composed
 * panels.  These blocks give that family one rhythm drawn from the tokens
 * already in use on the corpus, status and analytics surfaces.
 * ------------------------------------------------------------------------- */

.hero--overview,
.hero--dashboard {
  padding-block-start: var(--qv5-gap-3);
}

.overview-hero {
  display: grid;
  gap: var(--qv5-gap-6);
  grid-template-columns: minmax(0, 1fr) minmax(16rem, 22rem);
}

.overview-hero-primary,
.overview-hero-main,
.overview-hero-side {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-3);
  min-inline-size: 0;
}

.overview-hero-meta {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
  justify-content: space-between;
}

.overview-hero-platform {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  letter-spacing: var(--label-letter-spacing);
  margin: 0;
  text-transform: uppercase;
}

.overview-hero-note {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
}

.overview-hero-search,
.hero-search {
  align-items: center;
  border-block: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  padding-block: var(--qv5-gap-2);
}

.overview-hero-search input,
.hero-search-input {
  flex: 1 1 14rem;
  inline-size: 100%;
  min-inline-size: 0;
}

.overview-hero-search button,
.hero-search-btn {
  white-space: nowrap;
}

.overview-live-head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.overview-live-head > strong {
  font-family: var(--font-serif);
  font-size: var(--qv5-font-size-sm);
}

.overview-live-docs,
.home-stack {
  display: grid;
  gap: var(--qv5-gap-2);
}

.overview-live-doc {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink);
  display: grid;
  gap: var(--qv5-gap-1);
  padding-block: var(--qv5-gap-2);
  text-decoration: none;
}

.overview-live-doc:hover {
  color: var(--qv5-link);
}

.overview-live-doc > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.overview-live-doc > strong {
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.overview-live-badges,
.overview-primary-actions,
.hero-status-badges {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.overview-primary-action {
  align-items: center;
  color: var(--qv5-link);
  display: inline-flex;
  font-weight: var(--label-weight);
  gap: var(--qv5-gap-1);
  min-block-size: var(--avds-mobile-touch-target);
  text-decoration: underline;
  text-decoration-thickness: var(--qv5-border-width);
  text-underline-offset: 0.22em;
}

.overview-primary-action:hover {
  color: var(--qv5-ink);
  text-decoration-color: currentColor;
}

.overview-primary-action--primary {
  border: var(--qv5-border-width) solid var(--qv5-ink);
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink);
  padding-inline: var(--qv5-gap-3);
  text-decoration: none;
}

.overview-primary-action--primary:hover {
  background: var(--qv5-ink);
  color: var(--qv5-canvas);
}

.overview-more-row {
  display: flex;
  justify-content: flex-end;
}

.overview-doc-speaker {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

/* `.home-panel` is always a card, so it only needs the internal rhythm the
   card shell does not provide. */
.home-panel {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-3);
}

.home-panel-head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.home-panel-title {
  font-size: clamp(1.05rem, 1rem + 0.4vw, 1.35rem);
  margin: 0;
}

.home-panel-quote {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink);
  display: grid;
  gap: var(--qv5-gap-1);
  padding-block-start: var(--qv5-gap-2);
  text-decoration: none;
}

.home-panel-quote:hover {
  color: var(--qv5-link);
}

.home-panel-quote-body {
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.home-panel-quote-meta {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

/* The corpus stack pairs the narrow profile panels and lets the full-width
   lists span both columns, so the front page stops being one long tail. */
.corpus-overview-stack {
  display: grid;
  gap: var(--qv5-gap-5);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
}

.home-panel--wide,
.corpus-overview-stack > .avds-empty-state,
.corpus-overview-stack > .qazgeo-disclosure {
  grid-column: 1 / -1;
}

.corpus-signal-grid {
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
}

.corpus-signal-card {
  align-content: start;
}

.corpus-signal-card__kicker {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.corpus-signal-card__value {
  font-family: var(--font-serif);
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.75rem);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.corpus-signal-card__note {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  margin: 0;
}

.corpus-empty-state {
  justify-items: start;
}

.hero-main,
.hero-side {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-3);
  min-inline-size: 0;
}

.hero-grid.avds-page-hero {
  align-items: start;
}

.hero-stats.avds-stat-strip {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
}

.hero-toolbar {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
}

.hero-actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.hero-side-links {
  display: grid;
  gap: var(--qv5-gap-2);
}

/* Signal themes reuse the compact scorebar from the status surfaces. */
.overview-signal-panel {
  display: grid;
  gap: var(--qv5-gap-3);
}

.overview-signal-panel__themes {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
}

.overview-signal-panel__theme {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-1);
}

.overview-signal-panel__theme-head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

/* The homepage bands are anchor targets (`#speakers`), so their sticky-header
   offset belongs to the band family rather than to each route template. */
.overview-home-band,
.overview-home-band--signal,
.overview-home-band--people,
.overview-home-band--themes,
.overview-home-band--latest {
  scroll-margin-block-start: var(--qv5-gap-6);
}

/* Macro corpora are the speaker-facing half of the homepage; each surface
   carries an intro, a metric strip, two focus cards and the role directory. */
.macro-corpus-stack {
  display: grid;
  gap: var(--qv5-gap-4);
}

.macro-corpus-surface {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-3);
  scroll-margin-block-start: var(--qv5-gap-6);
}

.macro-corpus-intro {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.macro-corpus-title {
  font-size: clamp(1.1rem, 1rem + 0.5vw, 1.45rem);
  margin: 0;
}

.macro-corpus-subtitle {
  color: var(--qv5-ink-muted);
  font-size: var(--qv5-font-size-sm);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.macro-corpus-metrics {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-3);
}

.macro-corpus-metric {
  display: grid;
  gap: var(--qv5-gap-1);
}

.macro-corpus-metric > span {
  font-family: var(--font-serif);
  font-size: clamp(1.1rem, 1rem + 0.6vw, 1.5rem);
  font-weight: var(--heading-weight);
  line-height: 1.1;
}

.macro-corpus-metric > strong {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.macro-corpus-focus,
.macro-corpus-role-grid {
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
}

.macro-corpus-focus-card {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-1);
  padding-block-start: var(--qv5-gap-2);
}

.macro-corpus-focus-card > span,
.macro-corpus-role-card > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.macro-corpus-focus-card > strong {
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.macro-corpus-focus-card > small,
.macro-corpus-role-card > em {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-style: normal;
}

.macro-corpus-role-card {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  color: inherit;
  display: grid;
  gap: var(--qv5-gap-1);
  padding-block: var(--qv5-gap-2);
  text-decoration: none;
}

.macro-corpus-role-card:hover {
  color: var(--qv5-link);
}

.macro-corpus-role-card > strong {
  font-weight: var(--label-weight);
}

/* The role trajectory is a list of dated postings, so it reads as a track of
   rule-separated cells rather than a card grid. */
.role-trajectory {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-3);
}

.role-trajectory__intro {
  display: grid;
  gap: var(--qv5-gap-1);
}

.role-trajectory__intro > p {
  color: var(--qv5-ink-muted);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.role-trajectory__track {
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
}

.role-trajectory__item {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  color: inherit;
  display: grid;
  gap: var(--qv5-gap-1);
  padding-block-start: var(--qv5-gap-2);
  text-decoration: none;
}

.role-trajectory__item.is-current {
  border-block-start-color: var(--qv5-accent);
}

.role-trajectory__meta {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.role-trajectory__meta > span,
.role-trajectory__institution,
.role-trajectory__counts,
.role-trajectory__note {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.role-trajectory__item > strong {
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.role-trajectory__note {
  margin: 0;
}

/* Repeated document rows already own their end rule, so the compact overview
   and search lists drop the extra grid gap; only the corpus grid pairs cards. */
.docs-list--overview,
.docs-list--overview-home,
.docs-list--search,
.docs-list--search-compact {
  gap: 0;
}

.docs-list--corpus-grid {
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
}

.docs-list-item--corpus-card {
  border-block: var(--qv5-border-width) solid var(--qv5-rule);
  padding: var(--qv5-gap-3);
}

.doc-date,
.doc-list-footer {
  align-items: baseline;
  color: var(--qv5-ink-muted);
  display: flex;
  flex-wrap: wrap;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
}

.doc-list-footer {
  justify-content: space-between;
}

.doc-venue,
.doc-venue-line,
.doc-source {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.doc-source-row {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
}

.doc-source-sep {
  color: var(--qv5-ink-muted);
}

/* The machine passport is a chip strip, not a sentence. */
.doc-passport {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1);
}

.doc-passport > span {
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: 999px;
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  padding: 0 var(--qv5-gap-2);
}

.geo-chip-row--inline {
  gap: var(--qv5-gap-1);
}

.geo-chip-row--timeline {
  margin-block-start: var(--qv5-gap-2);
}

/* QazGeo panels: map shell plus a ranked region list, used on home, search
   and timeline.  The wrapper carries no padding of its own otherwise. */
.qazgeo-panel {
  display: grid;
  gap: var(--qv5-gap-3);
}

.qazgeo-panel__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.qazgeo-grid {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
}

.qazgeo-map-shell {
  background: var(--qv5-surface-muted);
  border: var(--qv5-border-width) solid var(--qv5-rule);
  position: relative;
}

.qazgeo-map {
  block-size: clamp(14rem, 24vw, 22rem);
  inline-size: 100%;
}

.qazgeo-map-fallback {
  align-items: center;
  color: var(--qv5-ink-muted);
  display: flex;
  font-size: var(--small-font-size);
  justify-content: center;
  min-block-size: 8rem;
  padding: var(--qv5-gap-3);
  text-align: center;
}

.qazgeo-rank,
.qazgeo-summary {
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.qazgeo-rank__meta {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.qazgeo-region-matrix {
  display: grid;
  gap: var(--qv5-gap-2);
  list-style: none;
  margin: 0;
  padding: 0;
}

.qazgeo-row,
.qazgeo-region-matrix__item {
  align-items: center;
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: minmax(0, 6rem) minmax(0, 1fr) auto;
}

.qazgeo-row__name {
  color: var(--qv5-ink);
  font-size: var(--qv5-font-size-sm);
}

.qazgeo-row__bar {
  background: var(--qv5-surface-muted);
  block-size: calc(var(--spacing) * 2);
  display: block;
  overflow: hidden;
}

.qazgeo-row__bar i {
  background: var(--qv5-link);
  block-size: 100%;
  display: block;
}

.qazgeo-row__value {
  color: var(--qv5-ink-muted);
  font-family: var(--font-serif);
  font-variant-numeric: tabular-nums;
}

.qazgeo-disclosure {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  padding-block: var(--qv5-gap-3);
}

.qazgeo-disclosure > summary {
  color: var(--qv5-ink);
  cursor: pointer;
  font-weight: var(--label-weight);
  padding-block: var(--qv5-gap-1);
}

.qazgeo-empty {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  margin: 0;
}

/* ---------------------------------------------------------------------------
 * Timeline, evolution, ministers, atoms and the entity graph.  These routes
 * already owned their row and meter geometry; the blocks below fill in the
 * year rail, filter and legend members that had no declarations, so a route
 * no longer depends on which template happen to load last.
 * ------------------------------------------------------------------------- */

.timeline-year {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule-strong);
  padding-block-end: var(--qv5-gap-2);
}

.timeline-dot {
  background: var(--qv5-surface-muted);
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: 999px;
  block-size: calc(var(--spacing) * 3);
  inline-size: calc(var(--spacing) * 3);
}

.timeline-date,
.timeline-source,
.timeline-venue {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.timeline-meta--compact,
.timeline-actions--item,
.lang-pills--timeline {
  gap: var(--qv5-gap-1) var(--qv5-gap-2);
}

.timeline-actions--item {
  justify-content: flex-end;
}

.filters-bar--compact,
.filters-bar--dense,
.filters-bar--years {
  gap: var(--qv5-gap-1) var(--qv5-gap-2);
}

.filter-chip--theme-active {
  border-color: var(--qv5-ink);
  color: var(--qv5-ink);
}

.filter-section {
  display: grid;
  gap: var(--qv5-gap-1);
}

.filter-section--blocks {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  padding-block-start: var(--qv5-gap-2);
}

.filter-drawer--compact .filter-drawer__body,
.filter-drawer__body--static,
.filter-drawer--static .filter-drawer__body {
  padding-block: var(--qv5-gap-2);
}

/* Evolution route: the map, the year strip and the trajectory strip already
   own their rows; only the code, count and legend members are new. */
.evolution-map__rows,
.evolution-year-strip__rows,
.ministers-profile__rows,
.timeline-year-profile__rows {
  display: grid;
  gap: 0;
}

.evolution-map__code {
  color: var(--qv5-ink-muted);
  font-family: var(--font-mono);
  font-size: var(--small-font-size);
  letter-spacing: var(--label-letter-spacing);
}

.evolution-map__label {
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
  min-inline-size: 0;
}

.evolution-map__count {
  color: var(--qv5-ink-muted);
  font-variant-numeric: tabular-nums;
}

.evolution-year-strip__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.evolution-trajectory__topic {
  font-weight: var(--label-weight);
  min-inline-size: 0;
}

.evolution-trajectory__cell {
  align-items: center;
  display: flex;
  min-inline-size: 0;
}

.evolution-trajectory__total {
  font-variant-numeric: tabular-nums;
  text-align: end;
}

.evolution-trajectory__meta,
.evolution-trajectory__scroll-hint,
.evolution-trajectory__source {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.evolution-trajectory__scroll-hint {
  margin: 0;
}

.evolution-trajectory__legend-item {
  align-items: center;
  display: inline-flex;
  gap: var(--qv5-gap-1);
}

.evolution-trajectory__source-links {
  display: inline-flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.evolution-pagination,
.evolution-pagination__links {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.evolution-pagination {
  justify-content: center;
}

.evolution-empty-state {
  margin-block: var(--qv5-gap-3);
}

.evo-year-block {
  display: grid;
  gap: var(--qv5-gap-2);
}

.evo-year-header {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.evo-year-meta {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.evo-atoms {
  display: grid;
  gap: var(--qv5-gap-3);
}

/* Ministers catalog.  The legacy meter rule also matched `.minister-row__counts`,
   which is a text block in the template, so the numbers were clipped; the
   declarations below restore the counts layout and leave the meter to
   `.minister-row__signal-bar`. */
.minister-row__counts {
  align-items: baseline;
  background: transparent;
  block-size: auto;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
  min-inline-size: 0;
  overflow: visible;
}

.minister-row__identity {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.minister-row__signal {
  align-items: center;
  display: flex;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.minister-row__actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: flex-end;
}

.ministers-groups,
.ministers-latest {
  display: grid;
  gap: var(--qv5-gap-4);
}

.ministers-group {
  display: grid;
  gap: var(--qv5-gap-2);
}

.ministers-table {
  display: grid;
  gap: 0;
}

.ministers-profile__legend {
  color: var(--qv5-ink-muted);
  display: flex;
  flex-wrap: wrap;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
}

.ministers-profile__person {
  color: var(--qv5-ink);
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
  text-decoration: none;
}

.ministers-profile__person:hover {
  color: var(--qv5-link);
}

.ministers-empty {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

/* Atom cards carry the thesis text itself: one quote, one paraphrase, an
   inline action row and a disclosure footer.  Split and evolution variants add
   a side rail for the linked document and role context. */
.atom-card--stream,
.atom-card__main,
.atom-card__side {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.atom-card--split,
.atom-card--evolution {
  grid-template-columns: minmax(0, 1fr) minmax(0, 18rem);
}

.atom-header {
  display: grid;
  gap: var(--qv5-gap-1);
}

.atom-doc-info {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
}

.atom-doc-date {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.atom-quote,
.atom-paraphrase {
  color: var(--qv5-ink);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.atom-quote {
  border-inline-start: calc(var(--spacing) * 0.5) solid var(--qv5-accent);
  font-family: var(--font-serif);
  font-size: clamp(1.05rem, 1rem + 0.4vw, 1.3rem);
  padding-inline-start: var(--qv5-gap-3);
}

.atom-paraphrase {
  color: var(--qv5-ink-muted);
}

.atom-inline-actions,
.atom-card__actions,
.atom-card__more-links {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.atom-card__footer {
  align-items: start;
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
  padding-block-start: var(--qv5-gap-2);
}

.atom-card__more {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.atom-card__more-body {
  display: grid;
  gap: var(--qv5-gap-2);
}

.atom-side-block {
  display: grid;
  gap: var(--qv5-gap-1);
}

.atom-side-label {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.atom-side-title {
  font-family: var(--font-serif);
  font-weight: var(--heading-weight);
  line-height: var(--heading-line-height);
}

.atom-side-links {
  display: grid;
  gap: var(--qv5-gap-1);
}

.atom-block-badge--theme {
  border-color: var(--qv5-rule-strong);
  color: var(--qv5-ink);
}

.atom-block-badge--key {
  border-color: var(--qv5-accent);
  color: var(--qv5-ink);
}

.atom-block-badge--evidence {
  border-color: var(--qv5-rule);
  color: var(--qv5-ink-muted);
}

.atom-source-proof {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  padding-block-start: var(--qv5-gap-2);
}

.atom-source-proof > summary {
  color: var(--qv5-ink);
  cursor: pointer;
  font-weight: var(--label-weight);
  padding-block: var(--qv5-gap-1);
}

/* The inline Echo disclosure expands related theses inside the same card. */
.atom-echo,
.atom-echo-results,
.atom-echo-list {
  display: grid;
  gap: var(--qv5-gap-2);
}

.atom-echo-trigger {
  justify-self: start;
}

.atom-echo-trigger--compact {
  font-size: var(--small-font-size);
}

.atom-echo-card {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-1);
  padding-block-start: var(--qv5-gap-2);
}

.atom-echo-card__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.atom-echo-title {
  color: var(--qv5-ink);
  font-weight: var(--label-weight);
}

.atom-echo-score {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-variant-numeric: tabular-nums;
}

/* Entity graph: the SVG workbench keeps node, text and edge roles on the same
   token palette as the surrounding analytics panels. */
.entity-graph-workbench {
  display: grid;
  gap: var(--qv5-gap-3);
}

.entity-graph-canvas {
  inline-size: 100%;
  min-block-size: clamp(18rem, 32vw, 30rem);
  overflow-x: auto;
}

.entity-graph-node {
  fill: var(--qv5-surface);
  stroke: var(--qv5-rule-strong);
  stroke-width: var(--qv5-border-width);
}

.entity-graph-node--person {
  fill: var(--qv5-canvas);
}

.entity-graph-node--role {
  fill: var(--qv5-surface-muted);
}

.entity-graph-node--institution {
  fill: var(--qv5-surface);
}

.entity-graph-node-text {
  fill: var(--qv5-ink);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
}

.entity-graph-node-subtext,
.entity-graph-label {
  fill: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
}

.entity-graph-edge {
  stroke: var(--qv5-rule-strong);
  stroke-width: var(--qv5-border-width);
}

.entity-graph-edge--person {
  stroke: var(--qv5-link);
}

.entity-graph-edge--institution {
  stroke: var(--qv5-rule-strong);
}

.entity-graph-filter {
  margin-block-end: var(--qv5-gap-3);
}

.entity-chain-list {
  display: grid;
  gap: var(--qv5-gap-2);
}

.entity-chain-card {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  padding-block-start: var(--qv5-gap-3);
}

.entity-chain-card__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.entity-chain-card__body {
  display: grid;
  gap: var(--qv5-gap-1);
}

.entity-chain-card__meta {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

/* ---------------------------------------------------------------------------
 * Document route composition.  document.html wraps its reading surface in
 * `.doc-*`, `.document-*` and `.av-evidence-reading__*` names.  Only a few of
 * them carried rules, so the record page fell back to unstyled document flow
 * while every other route rendered composed panels.  These blocks finish the
 * family from the tokens and primitives already used on the corpus pages.
 * ------------------------------------------------------------------------- */

.document-shell,
.document-shell--reading,
.av-evidence-reading {
  display: grid;
  gap: var(--qv5-gap-6);
  min-inline-size: 0;
}

.doc-breadcrumbs,
.quote-breadcrumbs,
.publisher-breadcrumbs {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-2);
}

.doc-breadcrumbs a,
.quote-breadcrumbs a,
.publisher-breadcrumbs a {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  text-decoration: none;
}

.doc-breadcrumbs a:hover,
.quote-breadcrumbs a:hover,
.publisher-breadcrumbs a:hover {
  color: var(--qv5-ink);
  text-decoration: underline;
}

.doc-breadcrumb-sep {
  color: var(--qv5-rule-strong);
}

.doc-header,
.av-evidence-reading__header {
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.doc-meta--header {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.doc-page-title {
  font-size: clamp(1.9rem, 1.15rem + 2.2vw, 3rem);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.doc-alt-title {
  color: var(--qv5-ink-muted);
  font-family: var(--font-serif);
  font-size: var(--qv5-font-size-sm);
  font-style: italic;
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.doc-alt-title--spaced {
  margin-block-start: var(--qv5-gap-1);
}

/* The provenance record is one bordered unit: the source row, the provenance
   signals and the evidence passport have to read as a single document. */
.doc-record-surface {
  background: var(--qv5-surface);
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  display: grid;
  gap: var(--qv5-gap-3);
  min-inline-size: 0;
  padding: var(--qv5-gap-4);
}

.av-evidence-reading__source,
.av-evidence-reading__evidence {
  min-inline-size: 0;
}

.av-evidence-reading__signals,
.av-evidence-reading__actions {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  padding-block-start: var(--qv5-gap-3);
}

/* The plain provenance row carries a label and a value, so it must not reserve
   the signal column that the pinned confidence rows use. */
.doc-provenance__item--plain {
  grid-template-columns: minmax(0, 12rem) minmax(0, 1fr);
}

.doc-provenance__signal {
  background: var(--qv5-surface-muted);
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: 999px;
  block-size: calc(var(--spacing) * 2);
  inline-size: calc(var(--spacing) * 2);
  justify-self: end;
}

.doc-provenance__signal--ok {
  background: var(--avds-color-success);
  border-color: var(--avds-color-success);
}

.doc-provenance__signal--warn {
  background: var(--avds-color-warning);
  border-color: var(--avds-color-warning);
}

.doc-provenance__signal--danger {
  background: var(--qv5-danger);
  border-color: var(--qv5-danger);
}

.doc-evidence-passport {
  background: var(--qv5-surface-muted);
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  padding: var(--qv5-gap-3);
}

.doc-evidence-passport > summary {
  cursor: pointer;
  font-weight: var(--label-weight);
}

.doc-evidence-passport > summary > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  margin-inline-start: var(--qv5-gap-2);
}

.doc-evidence-passport__grid {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
  margin-block-start: var(--qv5-gap-3);
}

.doc-evidence-passport__grid > div {
  display: grid;
  gap: var(--qv5-gap-1);
}

.doc-evidence-passport__grid span,
.doc-evidence-passport__identity small {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.doc-evidence-passport__identity {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
  margin-block-start: var(--qv5-gap-3);
}

.doc-evidence-passport__identity > span {
  display: grid;
  gap: var(--qv5-gap-1);
}

/* Task navigation between the read, evidence and use views. */
.doc-task-nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.doc-task-nav__link {
  background: var(--qv5-surface-muted);
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink-muted);
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 11rem;
  padding: var(--qv5-gap-2) var(--qv5-gap-3);
  text-decoration: none;
}

.doc-task-nav__link strong {
  color: var(--qv5-ink);
}

.doc-task-nav__link small {
  font-size: var(--small-font-size);
}

.doc-task-nav__link:hover,
.doc-task-nav__link.is-active {
  border-color: var(--qv5-link);
  color: var(--qv5-ink);
}

.doc-context-panel {
  display: grid;
  gap: var(--qv5-gap-4);
  min-inline-size: 0;
}

.doc-context-panel__facts-grid {
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
}

.doc-context-panel__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
}

.doc-context-panel__links a {
  font-size: var(--qv5-font-size-sm);
}

.doc-theme-profile__rows {
  display: grid;
  gap: var(--qv5-gap-1);
}

/* The editorial brief is a bordered advisory strip above the reading grid. */
.document-editorial-brief {
  background: var(--qv5-surface);
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  display: grid;
  gap: var(--qv5-gap-3);
  padding: var(--qv5-gap-4);
}

.document-editorial-brief__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.document-editorial-brief__head > div {
  display: grid;
  gap: var(--qv5-gap-1);
}

.document-editorial-brief__list {
  display: grid;
  gap: var(--qv5-gap-2);
}

.document-editorial-brief__item {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-1);
  padding-inline-start: var(--qv5-gap-3);
}

.document-editorial-brief__item > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.doc-reading-controls {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.doc-reading-control--share {
  border-color: var(--qv5-rule-strong);
}

.doc-reading-controls > a {
  color: var(--qv5-link);
  font-size: var(--qv5-font-size-sm);
}

.doc-full-text,
.document-reading-main,
.document-reading-rail {
  display: grid;
  gap: var(--qv5-gap-3);
  min-inline-size: 0;
}

.document-reading-grid--single,
.document-reading-grid--evidence {
  min-inline-size: 0;
}

.doc-body {
  color: var(--qv5-ink);
  font-family: var(--font-serif);
  line-height: var(--body-line-height);
  max-inline-size: var(--qv5-reading-measure);
}

.doc-body > * + * {
  margin-block-start: var(--qv5-gap-3);
}

.doc-body h3,
.doc-section-heading {
  font-family: var(--font-sans);
  font-size: var(--qv5-font-size-sm);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  margin: var(--qv5-gap-4) 0 0;
  text-transform: uppercase;
}

/* The reading script builds a section table of contents at the top of every
   long body; it had no rules, so it printed as an unstyled list. */
.doc-toc {
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  display: grid;
  gap: var(--qv5-gap-2);
  margin-block-end: var(--qv5-gap-4);
  padding: var(--qv5-gap-3);
}

.doc-toc-label {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.doc-toc-list {
  display: grid;
  gap: var(--qv5-gap-1);
  margin: 0;
  padding-inline-start: var(--qv5-gap-4);
}

.doc-fulltext-header {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.doc-subtitle {
  font-size: clamp(1.05rem, 1rem + 0.4vw, 1.35rem);
  margin: 0;
}

.doc-language-note-label {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  text-transform: uppercase;
}

.doc-evidence-bridge {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  padding-block-start: var(--qv5-gap-3);
}

.doc-evidence-empty {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  margin: 0;
}

.doc-atoms-section {
  display: grid;
  gap: var(--qv5-gap-3);
  min-inline-size: 0;
}

.doc-use-workspace {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-4);
  min-inline-size: 0;
  padding-block-start: var(--qv5-gap-6);
}

.doc-use-workspace__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
}

.doc-prevnext {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.doc-prevnext-link {
  background: var(--qv5-surface);
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  display: grid;
  gap: var(--qv5-gap-1);
  padding: var(--qv5-gap-3);
  text-decoration: none;
}

.doc-prevnext-link--next {
  text-align: end;
}

.doc-prevnext-title {
  color: var(--qv5-ink);
  font-weight: var(--heading-weight);
}

.doc-ai-panel {
  background: var(--qv5-surface);
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  display: grid;
  gap: var(--qv5-gap-2);
  padding: var(--qv5-gap-4);
}

.doc-ai-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  margin-block-start: var(--qv5-gap-2);
}

/* The echo panel is the document's linked-thesis summary.  It renders from a
   fetch, so it has to stay readable while the grid and the cards stream in. */
.doc-echo-panel {
  background: var(--qv5-surface);
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  display: grid;
  gap: var(--qv5-gap-4);
  padding: var(--qv5-gap-4);
}

.doc-echo-panel__body {
  display: grid;
  gap: var(--qv5-gap-4);
  min-inline-size: 0;
}

.doc-echo-panel__intro,
.doc-echo-panel__loading {
  color: var(--qv5-ink-muted);
  font-size: var(--qv5-font-size-sm);
  margin: 0;
}

.doc-echo-panel__link {
  color: var(--qv5-link);
  font-size: var(--small-font-size);
}

.doc-echo-summary {
  display: grid;
  gap: var(--qv5-gap-2);
  max-inline-size: var(--qv5-reading-measure);
}

.doc-echo-grid {
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
}

.doc-echo-list {
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.doc-echo-title {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  margin: 0;
  text-transform: uppercase;
}

.doc-echo-metrics {
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 6rem), 1fr));
}

.doc-echo-metric {
  display: grid;
  gap: var(--qv5-gap-1);
}

.doc-echo-metric__value {
  font-family: var(--font-serif);
  font-size: 1.35rem;
  font-variant-numeric: tabular-nums;
}

.doc-echo-card {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  padding-block-start: var(--qv5-gap-3);
}

.doc-echo-card--atom {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-link);
  padding-inline-start: var(--qv5-gap-3);
}

.doc-echo-card__meta {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.doc-echo-card__stats {
  color: var(--qv5-ink-muted);
  display: flex;
  flex-wrap: wrap;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
}

.doc-echo-quote {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-rule-strong);
  color: var(--qv5-ink);
  font-family: var(--font-serif);
  margin: 0;
  padding-inline-start: var(--qv5-gap-3);
}

.doc-echo-score {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-variant-numeric: tabular-nums;
}

.doc-echo-chip,
.doc-echo-term {
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: 999px;
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  padding: 0 var(--qv5-gap-2);
}

.doc-echo-terms {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1);
}

/* ---------------------------------------------------------------------------
 * Corpus homepage.  The persona hero, its compact toolbar and the theme/year
 * profile blocks were the last unnamed members of the front-page family, so
 * they rendered with the default document rhythm instead of the meters and
 * hero bands every other route already uses.
 * ------------------------------------------------------------------------- */

/* The hero section and its inner `.avds-page-hero` grid each draw the same
 * closing rule, so the persona overview stacked two dividers three gaps
 * apart.  The inner grid owns the divider on every other route, so the outer
 * section drops its duplicate band. */
.avds-corpus-hero {
  border-block-end: 0;
  margin-block-end: 0;
  padding-block-end: 0;
}

.hero-actions--compact {
  gap: var(--qv5-gap-1);
}

.hero-search--compact {
  padding-block: var(--qv5-gap-1);
}

.home-panel--hero {
  border-block-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-rule-strong);
  padding-block-start: var(--qv5-gap-3);
}

.home-panel--hero-compact {
  gap: var(--qv5-gap-2);
}

.corpus-theme-bars {
  display: grid;
  gap: var(--qv5-gap-2);
}

.corpus-theme-row {
  align-items: center;
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: minmax(0, 12rem) minmax(0, 1fr) auto;
}

.corpus-theme-row__label {
  align-items: baseline;
  display: grid;
  gap: 0 var(--qv5-gap-2);
  grid-template-columns: auto minmax(0, 1fr);
  min-inline-size: 0;
}

.corpus-theme-row__label span {
  color: var(--qv5-ink-muted);
  font-family: var(--font-mono);
  font-size: var(--small-font-size);
  letter-spacing: var(--label-letter-spacing);
}

.corpus-theme-row__label strong {
  font-weight: var(--label-weight);
  min-inline-size: 0;
}

.corpus-theme-row__meter {
  background: var(--qv5-surface-muted);
  block-size: calc(var(--spacing) * 2);
  display: block;
  min-inline-size: 4rem;
  overflow: hidden;
}

.corpus-theme-row__fill {
  background: var(--accent-color, var(--qv5-link));
  block-size: 100%;
  display: block;
}

.corpus-theme-row__value {
  color: var(--qv5-ink-muted);
  font-variant-numeric: tabular-nums;
}

.corpus-year-profile {
  align-content: start;
}

.role-trajectory__source {
  color: var(--qv5-link);
  font-size: var(--small-font-size);
  justify-self: start;
  overflow-wrap: anywhere;
}

.role-trajectory__source:hover,
.role-trajectory__source:focus-visible {
  color: var(--qv5-ink);
}

/* ---------------------------------------------------------------------------
 * Publisher route.  The page used bare `h1`/`h2` elements and uncomposed
 * workflow, format and integration lists, so it sat a full type step below
 * every other route and lost the section rhythm.  These blocks map it back
 * onto the display-title, section-title and card-grid contracts.
 * ------------------------------------------------------------------------- */

.publisher-page {
  margin-block: var(--qv5-gap-8);
}

.publisher-hero h1 {
  font-size: clamp(2.15rem, 1.25rem + 3vw, 4.5rem);
  margin: var(--qv5-gap-2) 0;
  max-inline-size: 19ch;
}

.publisher-hero__main {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.publisher-hero__copy {
  color: var(--qv5-ink-muted);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.publisher-hero__actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.publisher-hero__status {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
}

.publisher-hero__status dl {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-1);
  margin: 0;
  padding-block-start: var(--qv5-gap-2);
}

.publisher-hero__status dl > div {
  align-items: baseline;
  display: flex;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.publisher-hero__status dt {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.publisher-hero__status dd {
  font-variant-numeric: tabular-nums;
  margin: 0;
}

.publisher-hero__status-kicker {
  color: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  margin: 0;
  text-transform: uppercase;
}

.publisher-section {
  display: grid;
  gap: var(--qv5-gap-4);
}

.publisher-section--workflow,
.publisher-section--integration {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  padding-block-start: var(--qv5-gap-4);
}

.publisher-section h2 {
  font-size: clamp(1.45rem, 1.1rem + 1.2vw, 2.15rem);
  margin-block: 0 var(--qv5-gap-3);
}

.publisher-section__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
  justify-content: space-between;
}

.publisher-section__head > p {
  color: var(--qv5-ink-muted);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.publisher-workflow {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  list-style: none;
  margin: 0;
  padding: 0;
}

.publisher-workflow__item {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
}

.publisher-workflow__number {
  color: var(--qv5-accent);
  font-family: var(--font-mono);
  font-size: var(--small-font-size);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
}

.publisher-format-grid {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
}

.publisher-format {
  align-content: start;
  color: inherit;
  display: grid;
  gap: var(--qv5-gap-2);
  text-decoration: none;
}

.publisher-format:hover,
.publisher-format:focus-visible {
  color: var(--qv5-link);
}

.publisher-format__code {
  color: var(--qv5-ink-muted);
  font-family: var(--font-mono);
  font-size: var(--small-font-size);
  letter-spacing: var(--label-letter-spacing);
}

.publisher-integration-grid {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
}

.publisher-integration-grid > div {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.publisher-integration-grid a {
  color: var(--qv5-link);
  overflow-wrap: anywhere;
}

/* ---------------------------------------------------------------------------
 * Training simulator.  The hero grid never received the closing rule every
 * other route hero owns, the workbench had no board layout, and the case,
 * rail and decision columns carried bare headings and a hidden debrief that
 * `display: grid` would have forced open.  These blocks give the route the
 * same hero, section-heading and panel contracts as the rest of the site.
 * ------------------------------------------------------------------------- */

.training-hero__grid {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule-strong);
  margin-block-end: var(--qv5-gap-6);
  padding-block-end: var(--qv5-gap-6);
}

.training-hero h1 {
  font-size: clamp(2.15rem, 1.25rem + 3vw, 4.5rem);
  margin: var(--qv5-gap-2) 0;
  max-inline-size: 19ch;
}

.training-hero__lead {
  color: var(--qv5-ink-muted);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.training-hero__meta {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
}

.training-hero__meta > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.training-status-panel {
  align-content: start;
  background: var(--qv5-surface);
  display: grid;
  gap: var(--qv5-gap-2);
  padding: var(--qv5-gap-4);
}

.training-status-panel h2,
.training-decision h3 {
  font-size: clamp(1.05rem, 1rem + 0.4vw, 1.35rem);
  margin: 0;
}

.training-status-panel ul {
  color: var(--qv5-ink-muted);
  display: grid;
  font-size: var(--qv5-font-size-sm);
  gap: var(--qv5-gap-1);
  margin: 0;
  padding-inline-start: var(--qv5-gap-4);
}

.training-workbench {
  display: grid;
  gap: var(--qv5-gap-4);
  margin-block: var(--qv5-gap-8);
}

.training-workbench__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
  justify-content: space-between;
}

.training-workbench__head h2 {
  font-size: clamp(1.45rem, 1.1rem + 1.2vw, 2.15rem);
  margin-block: 0 var(--qv5-gap-3);
}

.training-progress {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.training-progress > span {
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: 999px;
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-variant-numeric: tabular-nums;
  padding: calc(var(--qv5-gap-1) / 2) var(--qv5-gap-2);
}

.training-board {
  align-items: start;
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: minmax(0, 14rem) minmax(0, 1fr) minmax(0, 18rem);
}

.training-rail {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-3);
  min-inline-size: 0;
}

.training-filter {
  display: grid;
  gap: var(--qv5-gap-1);
}

.training-filter label,
.training-decision label {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.training-scenario-list {
  display: grid;
  gap: var(--qv5-gap-1);
}

.training-case {
  align-content: start;
  background: var(--qv5-surface);
  display: grid;
  gap: var(--qv5-gap-3);
  min-inline-size: 0;
  padding: var(--qv5-gap-4);
}

.training-case h3 {
  font-family: var(--font-serif);
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.7rem);
  margin: 0;
}

.training-case__topline {
  align-items: center;
  color: var(--qv5-ink-muted);
  display: flex;
  flex-wrap: wrap;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.training-evidence,
.training-rubric,
.training-debrief {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  padding-block-start: var(--qv5-gap-3);
}

.training-evidence h4,
.training-rubric h4,
.training-debrief h4 {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  margin: 0;
  text-transform: uppercase;
}

.training-evidence__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
}

.training-evidence__links a {
  color: var(--qv5-link);
  overflow-wrap: anywhere;
}

.training-decision {
  align-content: start;
  background: var(--qv5-surface);
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
  padding: var(--qv5-gap-4);
}

.training-submit {
  inline-size: 100%;
}

.training-debrief[hidden] {
  display: none;
}

/* Search route.  The workbench, comparison strip and result stack share one
   spacing rhythm; the disclosure shells keep their native details behaviour
   while gaining the same rule ownership the rest of the public pages use. */
.workspace-active {
  align-items: baseline;
  border-block: var(--qv5-border-width) solid var(--qv5-rule);
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-accent);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
  justify-content: space-between;
  margin-block: var(--qv5-gap-4);
  padding-block: var(--qv5-gap-3);
  padding-inline-start: var(--qv5-gap-3);
}

.workspace-active > div {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.workspace-active__eyebrow {
  color: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.workspace-active > div > strong {
  font-family: var(--font-serif);
  font-size: clamp(1.05rem, 0.95rem + 0.4vw, 1.35rem);
  line-height: var(--heading-line-height);
}

.workspace-active__state {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.saved-searches {
  border-block: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-2);
  margin-block: var(--qv5-gap-4);
  padding-block: var(--qv5-gap-3);
}

.saved-searches--active {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-accent);
  padding-inline-start: var(--qv5-gap-3);
}

.saved-searches__summary {
  align-items: baseline;
  cursor: pointer;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
  justify-content: space-between;
  padding-block: var(--qv5-gap-1);
}

.saved-searches__title {
  font-size: clamp(1.05rem, 0.95rem + 0.5vw, 1.45rem);
  line-height: var(--heading-line-height);
}

.saved-searches__copy {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  max-inline-size: var(--qv5-reading-measure);
}

.saved-searches__body {
  display: grid;
  gap: var(--qv5-gap-3);
}

.saved-searches__body[hidden] {
  display: none;
}

.saved-searches__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.saved-searches__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.saved-searches__list {
  display: grid;
  gap: 0;
}

.saved-searches__list[hidden] {
  display: none;
}

.saved-searches__item {
  align-items: baseline;
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
  min-inline-size: 0;
  padding-block: var(--qv5-gap-2);
}

.saved-searches__item:first-child {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
}

.saved-searches__item > a {
  flex: 1 1 12rem;
  min-inline-size: 0;
  overflow-wrap: anywhere;
}

.workspace-matches {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  padding-block-start: var(--qv5-gap-3);
}

.workspace-matches[hidden] {
  display: none;
}

.workspace-matches__list {
  display: grid;
  gap: 0;
}

.workspace-matches__list > a {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink);
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
  overflow-wrap: anywhere;
  padding-block: var(--qv5-gap-2);
}

.workspace-matches__list > a > small {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.search-workbench-strip {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
  margin-block: var(--qv5-gap-4);
}

.search-workbench-card {
  border-block-start: calc(var(--qv5-border-width) * 2) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
  padding-block-start: var(--qv5-gap-2);
}

.search-workbench-card > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.search-workbench-card > strong {
  font-family: var(--font-serif);
  font-size: clamp(1.05rem, 0.95rem + 0.4vw, 1.35rem);
  line-height: var(--heading-line-height);
}

.search-workbench-card > small {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

/* Comparison and overview panels repeat the panel contract: one strong rule
   pair around the block, baseline-aligned head, start-aligned content. */
.comparison-strip,
.search-overview-panel,
.briefing-overview-panel,
.about-overview-panel,
.sitemap-overview-panel {
  align-content: start;
  margin-block: var(--qv5-gap-5);
}

.comparison-strip {
  border-block: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-3);
  padding-block: var(--qv5-gap-4);
}

.comparison-strip__head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
  justify-content: space-between;
}

.comparison-strip__head > div:first-child {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.comparison-strip__head > div:first-child > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.comparison-strip__head > div:first-child > strong {
  font-family: var(--font-serif);
  font-size: clamp(1.05rem, 0.95rem + 0.5vw, 1.45rem);
  line-height: var(--heading-line-height);
}

.comparison-strip__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-3);
  font-size: var(--small-font-size);
}

.comparison-strip__grid {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
}

.comparison-strip__grid--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.comparison-strip__grid--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.comparison-strip__grid--4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.comparison-strip__item {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.comparison-strip__item > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.comparison-strip__item > strong {
  font-family: var(--font-serif);
  font-size: clamp(1.05rem, 0.95rem + 0.4vw, 1.35rem);
  line-height: var(--heading-line-height);
}

.comparison-strip__item > em {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-style: normal;
}

.comparison-strip__density {
  display: grid;
  gap: var(--qv5-gap-1);
  margin-block-start: var(--qv5-gap-1);
}

.comparison-strip__density > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.comparison-strip__density > i {
  background: var(--qv5-surface-muted);
  block-size: calc(var(--spacing) * 2);
  border-radius: var(--qv5-radius);
  display: block;
  inline-size: 100%;
  overflow: hidden;
}

.comparison-strip__density > i > b {
  background: var(--qv5-accent);
  block-size: 100%;
  display: block;
}

.comparison-strip__themes {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-2);
  font-size: var(--small-font-size);
  margin-block-start: var(--qv5-gap-1);
}

.comparison-strip__themes > span {
  color: var(--qv5-ink-muted);
  overflow-wrap: anywhere;
}

.search-results-head {
  align-items: end;
}

.search-results-head .section-desc {
  margin: 0;
}

.search-page-form--faceted {
  gap: var(--qv5-gap-4);
}

.search-overview-panel__meta {
  display: grid;
  gap: var(--qv5-gap-3);
}

.search-overview-panel__chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-2);
}

.search-overview-panel__comparison {
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
}

.search-overview-panel__comparison-item {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
  padding-block-start: var(--qv5-gap-2);
}

.search-overview-panel__comparison-item > strong {
  font-family: var(--font-serif);
  font-size: clamp(1rem, 0.95rem + 0.3vw, 1.2rem);
  line-height: var(--heading-line-height);
}

.search-overview-panel__comparison-item > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  overflow-wrap: anywhere;
}

.search-results-grid {
  display: grid;
  gap: var(--qv5-gap-4);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr));
}

.search-result-section--hidden {
  display: none;
}

.search-result-modes {
  align-items: center;
  border-block: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
  margin-block: var(--qv5-gap-4);
  padding-block: var(--qv5-gap-3);
}

.search-result-modes > a {
  color: var(--qv5-ink-muted);
  overflow-wrap: anywhere;
}

.search-result-modes > a[aria-current="page"] {
  color: var(--qv5-ink);
  font-weight: var(--label-weight);
}

.search-result-excerpt {
  border-inline-start: calc(var(--qv5-border-width) * 2) solid var(--qv5-rule-strong);
  color: var(--qv5-ink-muted);
  display: block;
  font-size: var(--small-font-size);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
  padding-inline-start: var(--qv5-gap-2);
}

.search-empty-state {
  margin-block: var(--qv5-gap-4);
}

.search-empty-copy {
  margin: 0;
}

/* Search result theses are the dense variant of the shared thesis card, so
   the stack drops the grid gap and every row owns its own end rule. */
.thesis-card-stack {
  display: grid;
  gap: var(--qv5-gap-3);
}

.thesis-card-stack--search {
  gap: 0;
}

.thesis-card--dense {
  gap: var(--qv5-gap-1);
  padding-block: var(--qv5-gap-2);
}

.thesis-card--search {
  gap: var(--qv5-gap-2);
}

.thesis-card__header {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
  justify-content: space-between;
}

.thesis-card__speaker {
  color: var(--qv5-ink);
  font-weight: var(--label-weight);
  overflow-wrap: anywhere;
}

.thesis-card__date {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-variant-numeric: tabular-nums;
}

.thesis-card__evidence {
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  justify-self: start;
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  padding-inline: var(--qv5-gap-2);
  text-transform: uppercase;
}

.thesis-card__quote {
  font-family: var(--font-serif);
  font-size: clamp(1rem, 0.95rem + 0.3vw, 1.2rem);
  line-height: var(--body-line-height);
}

.thesis-card__paraphrase {
  color: var(--qv5-ink-muted);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.thesis-card__links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
  font-size: var(--small-font-size);
}

/* Assistant route.  The chat surface, its status notice and the coverage
   disclosures stay inside the shared card contract; only the answering
   affordances get a distinct rule so the conversation reads as dialogue. */
.assistant-chat-section {
  scroll-margin-block-start: var(--qv5-gap-6);
}

.assistant-chat-header {
  align-items: baseline;
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-4);
  justify-content: space-between;
  padding-block-end: var(--qv5-gap-3);
}

.assistant-chat-header > div {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.assistant-chat-header > div > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.assistant-chat-header > div > strong {
  font-family: var(--font-serif);
  font-size: clamp(1.05rem, 0.95rem + 0.5vw, 1.45rem);
  line-height: var(--heading-line-height);
}

.assistant-chat-header > em {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-style: normal;
}

.assistant-message--assistant {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-accent);
}

.assistant-chat-actions {
  align-items: baseline;
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2) var(--qv5-gap-3);
  justify-content: space-between;
  padding-block-start: var(--qv5-gap-2);
}

.assistant-chat-actions > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.assistant-contract-line {
  background: var(--qv5-surface-muted);
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-rule-strong);
  font-size: var(--small-font-size);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
  padding: var(--qv5-gap-2) var(--qv5-gap-3);
}

.assistant-panel-signal {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--avds-color-warning);
}

.assistant-chat-brief-disclosure,
.assistant-coverage-disclosure {
  margin-block-start: var(--qv5-gap-2);
}

.assistant-chat-brief__item--limit {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--avds-color-warning);
  padding-inline-start: var(--qv5-gap-2);
}

.assistant-loading {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  padding-block-start: var(--qv5-gap-3);
}

.assistant-loading[hidden] {
  display: none;
}

.assistant-prompts-lead,
.assistant-prompts-note {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.assistant-prompts-group--disclosure {
  padding-inline-start: var(--qv5-gap-3);
}

.assistant-note-freshness {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  padding-block-start: var(--qv5-gap-2);
}

/* The Janus status mini reads the same on the assistant, status, data and
   graph routes, so it is owned once here as a compact two-line signal. */
.assistant-status-mini {
  border-block: var(--qv5-border-width) solid var(--qv5-rule);
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
  padding-block: var(--qv5-gap-2);
  padding-inline-start: var(--qv5-gap-3);
}

.assistant-status-mini > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.assistant-status-mini > strong {
  font-family: var(--font-serif);
  font-size: clamp(1rem, 0.95rem + 0.3vw, 1.2rem);
  line-height: var(--heading-line-height);
  overflow-wrap: anywhere;
}

.assistant-status-mini--ok {
  border-inline-start-color: var(--avds-color-success);
}

.assistant-status-mini--warn {
  border-inline-start-color: var(--avds-color-warning);
}

/* Briefing route.  The daily surface is the densest public workspace, so its
   blocks keep the shared panel contract while the repeated signal and document
   rows own their end rules instead of building a card lattice. */
.briefing-workspace {
  margin-block-start: var(--qv5-gap-5);
}

.briefing-main,
.briefing-side {
  align-content: start;
  min-inline-size: 0;
}

.briefing-action--export {
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink);
  padding-inline: var(--qv5-gap-3);
}

.briefing-signal-groups {
  display: grid;
  gap: var(--qv5-gap-5);
}

.briefing-signal-group > h3 {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  font-size: clamp(1.1rem, 0.98rem + 0.6vw, 1.5rem);
  margin: 0;
}

.briefing-signal-group > h3 > span {
  border: var(--qv5-border-width) solid var(--qv5-rule);
  border-radius: var(--qv5-radius);
  color: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  padding-inline: var(--qv5-gap-2);
}

.briefing-signal-list,
.briefing-document-list {
  display: grid;
  gap: 0;
}

.briefing-signal-row {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
  padding-block: var(--qv5-gap-3);
}

.briefing-signal-row:first-child {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
}

.briefing-signal-row > p {
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

.briefing-signal-row > a {
  font-size: var(--small-font-size);
}

.briefing-document-list > .briefing-document-row {
  background: transparent;
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
  padding: var(--qv5-gap-3) 0;
}

.briefing-document-list > .briefing-document-row:first-child {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule-strong);
}

.briefing-document-list > .briefing-document-row:hover {
  background: var(--qv5-surface-muted);
}

.briefing-document-row > span,
.briefing-document-row > em {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-style: normal;
  overflow-wrap: anywhere;
}

.briefing-document-row > strong {
  overflow-wrap: anywhere;
}

.briefing-signal-overview-head,
.briefing-speaker-overview__head,
.page-meta-strip--sitemap {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-2);
  justify-content: space-between;
}

.briefing-speaker-overview__label {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.briefing-speaker-overview__label > em {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-style: normal;
}

.briefing-watch.avds-panel {
  align-items: baseline;
  gap: var(--qv5-gap-3) var(--qv5-gap-4);
  grid-template-columns: minmax(0, 1fr) auto;
}

.briefing-empty {
  grid-template-columns: minmax(0, 1fr);
}

/* Sitemap and evolution route index. */
.page-meta-strip--sitemap {
  justify-content: flex-end;
}

.sitemap-route-profile__rows {
  display: grid;
  gap: 0;
}

.theses-nav-strip--sitemap {
  margin-block: 0;
}

.theses-nav-strip--compact {
  gap: var(--qv5-gap-2);
  padding-block: var(--qv5-gap-3);
}

/* Thesis index chrome.  The analytics strip mirrors the source-panel rhythm
   and the utility bar splits navigation, export summary and actions into
   three aligned columns. */
.theses-analytics-strip {
  border-block: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-3);
  margin-block: var(--qv5-gap-4);
  padding: var(--qv5-gap-4) 0;
}

.theses-analytics-strip__intro {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.theses-analytics-strip__facts {
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr));
}

.theses-analytics-strip__fact {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-1);
  padding-block-start: var(--qv5-gap-2);
}

.theses-analytics-strip__fact > span {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.theses-analytics-strip__fact > strong {
  font-family: var(--font-serif);
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.75rem);
}

.theses-analytics-strip__themes {
  display: grid;
  gap: var(--qv5-gap-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
}

.theses-analytics-strip__theme {
  color: var(--qv5-ink);
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
  text-decoration: none;
}

.theses-analytics-strip__theme:hover {
  background: var(--qv5-surface-muted);
  color: var(--qv5-ink);
}

.theses-analytics-strip__theme-head {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  justify-content: space-between;
}

.theses-analytics-strip__theme-head > strong {
  font-weight: var(--label-weight);
  overflow-wrap: anywhere;
}

.theses-analytics-strip__theme-head > em {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-style: normal;
  font-variant-numeric: tabular-nums;
}

.theses-utility-bar {
  align-items: baseline;
  gap: var(--qv5-gap-3) var(--qv5-gap-4);
  grid-template-columns: minmax(0, 1fr) auto auto;
}

.theses-utility-bar__nav {
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.theses-utility-bar__actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
}

.export-toolbar__summary {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.export-toolbar__summary--compact {
  align-items: baseline;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
}

.export-toolbar__stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-1) var(--qv5-gap-3);
}

.theses-active-summary--rich {
  gap: var(--qv5-gap-3);
}

.theses-active-summary__title {
  font-size: clamp(1.05rem, 0.95rem + 0.5vw, 1.45rem);
  line-height: var(--heading-line-height);
  margin: 0;
}

.theses-active-summary__reset {
  align-self: start;
  font-size: var(--small-font-size);
}

.search-bar {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--qv5-gap-2);
  margin-block: var(--qv5-gap-4);
}

.search-input {
  flex: 1 1 16rem;
  min-inline-size: 0;
}

/* Quote route composition.  The hero, source panels and evidence block keep
 * their shared AVDS box contract; these rules restore the vertical rhythm
 * between them and give the primary quote and the citation passport the same
 * accent / rule / serif devices already used on the rest of the archive. */
.quote-page {
  min-inline-size: 0;
  overflow-wrap: anywhere;
}

.quote-page__container {
  display: grid;
  gap: var(--qv5-gap-4);
  min-inline-size: 0;
}

.quote-card--primary {
  border-block-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-accent);
}

.quote-panel--formats {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
}

.quote-panel--formats > a {
  color: var(--qv5-link);
  font-size: var(--small-font-size);
  justify-self: start;
}

.quote-panel--wide {
  align-content: start;
  min-inline-size: 0;
}

.quote-panel__source-name {
  color: var(--qv5-ink);
  font-family: var(--font-serif);
  font-size: clamp(1.05rem, 0.98rem + 0.4vw, 1.3rem);
  line-height: var(--heading-line-height);
  margin: 0;
}

.quote-panel__paraphrase {
  border-inline-start: calc(var(--qv5-border-width) * 3) solid var(--qv5-rule-strong);
  color: var(--qv5-ink-muted);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
  padding-inline-start: var(--qv5-gap-3);
}

.quote-panel__paraphrase strong {
  color: var(--qv5-ink);
}

.quote-passport-meta {
  border-block-start: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
  padding-block-start: var(--qv5-gap-2);
}

.quote-passport-meta > span {
  display: grid;
  gap: var(--qv5-gap-1);
  min-inline-size: 0;
}

.quote-passport-meta small {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
}

.quote-passport-meta code {
  font-family: var(--font-mono);
  font-size: var(--small-font-size);
}

.quote-passport-meta > a {
  font-size: var(--small-font-size);
  justify-self: start;
}

.quote-page__notice {
  border-block: var(--qv5-border-width) solid var(--qv5-rule-strong);
  display: grid;
  gap: var(--qv5-gap-2);
  padding-block: var(--qv5-gap-4);
}

.quote-page__notice strong {
  font-family: var(--font-serif);
  font-size: clamp(1.05rem, 0.98rem + 0.4vw, 1.3rem);
  line-height: var(--heading-line-height);
}

.quote-page__notice span {
  color: var(--qv5-ink-muted);
  max-inline-size: var(--qv5-reading-measure);
}

/* About coverage profile: the by-year ledger and the quality meters are two
 * independent stacks inside the shared fact grid, not a single flex row. */
.about-coverage-profile__years,
.about-coverage-profile__quality {
  align-content: start;
  display: grid;
  gap: var(--qv5-gap-2);
  min-inline-size: 0;
}

.about-coverage-profile__quality > p {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  margin: 0;
  max-inline-size: var(--qv5-reading-measure);
}

/* Status operations: pipeline job cards keep the corpus-card ledger rule and
 * borrow the serif row title every other repeatable archive row uses. */
.status-pipeline-card {
  align-content: start;
  min-inline-size: 0;
}

.status-pipeline-card .avds-corpus-card__head strong {
  font-family: var(--font-serif);
  font-size: clamp(1rem, 0.95rem + 0.3vw, 1.2rem);
  line-height: var(--heading-line-height);
}

/* Search result groups top-align so an uneven section never stretches its
 * neighbours; the mixed ("all") view reuses the same lattice contract. */
.search-results-grid--polished,
.search-results-grid--mixed {
  align-items: start;
}

/* Responsive closure.  These families declare fixed multi-column tracks, so
 * they need an explicit collapse owner; every other grid in the composition
 * layer already reflows through auto-fit minmax() and is deliberately left
 * alone.  Both widths match the breakpoints the shell already uses. */
@media (max-width: 62rem) {
  .overview-hero,
  .training-hero__grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 44rem) {
  .footer-row,
  .doc-prevnext,
  .qazgeo-row,
  .qazgeo-region-matrix__item,
  .corpus-theme-row,
  .comparison-strip__grid--2,
  .comparison-strip__grid--3,
  .comparison-strip__grid--4,
  .briefing-watch.avds-panel,
  .theses-utility-bar,
  .about-coverage-profile__year,
  .about-coverage-profile__quality-row,
  .avds-threshold-card__scale {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* `.section--alt` bleeds the muted band out of `.qv-main`, whose inline gutter
   is exactly half of the responsive gap token (`100% - gap`, centred). Bleeding
   by the whole token overshot that gutter on home, status and the entity graph
   and produced a horizontal scrollbar on every viewport below the wide
   breakpoint, so the bleed is calibrated to the gutter it actually cancels. */
.section--alt {
  margin-inline: calc(var(--qv5-gap-6) / -2);
  padding-inline: calc(var(--qv5-gap-6) / 2);
}

@media (max-width: 44rem) {
  .section--alt {
    margin-inline: calc(var(--qv5-gap-4) / -2);
    padding-inline: calc(var(--qv5-gap-4) / 2);
  }
}

/* The training board declares three fixed tracks while its native form
   controls (Select/Textarea) keep their intrinsic min-content width, so below
   the shared 44rem breakpoint the case column collapsed to a sliver and the
   decision controls pushed the page past the viewport. The board now collapses
   together with its hero and its columns may shrink. */
.training-board > *,
.training-rail > *,
.training-case > *,
.training-decision > *,
.training-rail :is(select, input, textarea),
.training-decision :is(select, input, textarea) {
  min-inline-size: 0;
}

.training-rail :is(select, input, textarea),
.training-decision :is(select, input, textarea) {
  inline-size: 100%;
}

@media (max-width: 44rem) {
  .training-board {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Scenario list, rubric and debrief.  `training-simulator.js` mints the
   scenario buttons, the rubric rows and the evidence chips, but only their
   containers owned composition rules.  The buttons therefore fell back to the
   global ink button shell, which centres inline content and keeps min-content
   label widths, so the rail rendered its labels one or two characters per
   line; the rubric rows stayed bare inline labels running into each other.
   These blocks give the simulator the same selectable-card, checklist and
   chip contracts the rest of the public site already uses. */

.training-scenario-button:not(.site-menu-button):not(.search-toggle):not(.language-picker-button) {
  align-items: stretch;
  background: var(--qv5-surface);
  border-color: var(--qv5-rule-strong);
  color: var(--qv5-ink);
  display: grid;
  gap: var(--qv5-gap-1);
  grid-template-columns: minmax(0, 1fr);
  inline-size: 100%;
  justify-content: start;
  justify-items: start;
  overflow-wrap: anywhere;
  padding: var(--qv5-gap-2);
  text-align: start;
  white-space: normal;
}

.training-scenario-button:not(.site-menu-button):not(.search-toggle):not(.language-picker-button):hover,
.training-scenario-button:not(.site-menu-button):not(.search-toggle):not(.language-picker-button):focus-visible {
  background: var(--qv5-surface-muted);
  border-color: var(--qv5-link);
  color: var(--qv5-ink);
}

.training-scenario-button.active:not(.site-menu-button):not(.search-toggle):not(.language-picker-button) {
  background: var(--qv5-accent);
  border-color: var(--qv5-accent);
  color: var(--qv5-accent-ink);
}

.training-scenario-button__id,
.training-scenario-button__meta {
  color: var(--qv5-ink-muted);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

.training-scenario-button strong {
  font-size: 1rem;
  line-height: 1.35;
}

.training-rubric #trainingRubric {
  display: grid;
  gap: var(--qv5-gap-2);
}

.training-rubric-check {
  align-items: start;
  border: var(--qv5-border-width) solid var(--qv5-rule);
  display: grid;
  gap: var(--qv5-gap-2);
  grid-template-columns: auto minmax(0, 1fr);
  line-height: var(--body-line-height);
  padding: var(--qv5-gap-2);
}

.training-rubric-check input {
  margin-block-start: calc(var(--qv5-gap-1) / 2);
}

.training-evidence-link {
  align-items: center;
  border: var(--qv5-border-width) solid var(--qv5-rule-strong);
  border-radius: var(--qv5-radius);
  color: var(--qv5-link);
  display: inline-flex;
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  min-block-size: calc(var(--spacing) * 8);
  overflow-wrap: anywhere;
  padding: var(--qv5-gap-1) var(--qv5-gap-2);
  text-decoration: none;
}

.training-case p,
.training-debrief p {
  margin: 0;
}

.training-debrief p {
  color: var(--qv5-ink-muted);
}

.training-debrief ul {
  color: var(--qv5-ink-muted);
  display: grid;
  font-size: var(--small-font-size);
  gap: var(--qv5-gap-1);
  margin: 0;
  padding-inline-start: var(--qv5-gap-4);
}

/* ---------------------------------------------------------------------------
 * Release 6 — opener contract convergence.
 *
 * The public page openers had drifted into three different renderings of the
 * same two beats declared above ("an uppercase kicker and a serif display
 * title above a muted lede"):
 *   * the lead-paragraph rule for .page-head / .hero also caught the kicker
 *     and inflated it to the 20px lede step, while the .page-intro,
 *     .assistant-hero, .briefing-hero and .training-hero openers kept the
 *     12px label step;
 *   * .page-intro and .briefing-hero opened at the secondary .page-title
 *     step (50.9px at 1440) instead of the display step (63.2px) used by
 *     every .page-head opener;
 *   * their ledes stayed at body size (16px) while .page-head ledes were
 *     lead-sized (20px);
 *   * .page-intro had no closing rule, so its opener never separated from the
 *     sections below the way every other opener does;
 *   * .overview-eyebrow (/status) had no owner at all and rendered as body
 *     copy next to neighbouring 12px uppercase labels.
 * These blocks put every opener on the one contract; the shells that already
 * match it are left untouched.
 * ------------------------------------------------------------------------- */

/* 1. Kickers keep the micro-label step inside any lead-paragraph container. */
.page-header .hero-kicker,
.page-header .page-kicker,
.page-head .hero-kicker,
.page-head .page-kicker,
.section-head .hero-kicker,
.section-head .page-kicker,
.document-header .hero-kicker,
.document-header .page-kicker,
.quote-header .hero-kicker,
.quote-header .page-kicker,
.timeline-header .hero-kicker,
.timeline-header .page-kicker,
.search-header .hero-kicker,
.search-header .page-kicker,
.hero .hero-kicker,
.hero .page-kicker,
.page-head .micro-heading,
.hero .micro-heading {
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  text-transform: uppercase;
}

/* 2. Display-title step for the remaining page openers. */
.page-intro h1,
.page-intro .page-title,
.briefing-hero h1,
.briefing-hero .page-title {
  font-family: var(--font-serif);
  font-size: clamp(2.15rem, 1.25rem + 3vw, 4.5rem);
  line-height: var(--heading-line-height);
  margin: var(--qv5-gap-2) 0;
  max-inline-size: 19ch;
}

/* 3. Lead step for every opener lede. */
.page-intro .page-desc,
.page-intro .page-subtitle,
.briefing-hero .page-desc,
.briefing-hero .page-subtitle,
.assistant-hero .hero-subtitle,
.assistant-hero .page-desc,
.assistant-hero .page-subtitle,
.status-hero .hero-subtitle,
.status-hero .page-desc,
.status-hero .page-subtitle,
.training-hero .training-hero__lead {
  font-size: clamp(1.05rem, 0.98rem + 0.3vw, 1.3rem);
}

/* 4. .page-intro closes its opener exactly like .page-head does. */
.page-intro {
  border-block-end: var(--qv5-border-width) solid var(--qv5-rule-strong);
  margin-block-end: var(--qv5-gap-6);
  padding-block-end: var(--qv5-gap-6);
}

/* 5. Section eyebrow on /status had no owner. */
.overview-eyebrow {
  color: var(--qv5-ink-muted);
  font-family: var(--font-sans);
  font-size: var(--small-font-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-letter-spacing);
  line-height: var(--label-line-height);
  margin: 0;
  text-transform: uppercase;
}

/* ---------------------------------------------------------------------------
 * Release 7 — collection-opener convergence.
 *
 * Release 6 put the .page-head, .page-intro, .briefing-hero, .assistant-hero,
 * .status-hero and .training-hero openers on one contract.  Two openers were
 * still outside it:
 *   * /ministerstva renders inside .ministers-head, which is not a .page-head
 *     shell, so its .page-title fell back to the secondary 50.9px step and its
 *     .page-desc stayed at body size, while the sibling collection route
 *     /ministerstva/{slug} opened at the 63.2px display step with a 20px lede;
 *   * /dlya-redaktsiy had no lede rule at all, so .publisher-hero__copy
 *     rendered at 16px next to 20px ledes everywhere else.
 * The document reader (.doc-header) is a separate reading surface and keeps
 * its own scale.
 * ------------------------------------------------------------------------- */

.ministers-head h1,
.ministers-head .page-title {
  font-family: var(--font-serif);
  font-size: clamp(2.15rem, 1.25rem + 3vw, 4.5rem);
  line-height: var(--heading-line-height);
  margin: var(--qv5-gap-2) 0;
  max-inline-size: 19ch;
}

.ministers-head .page-desc,
.ministers-head .page-subtitle,
.publisher-hero .publisher-hero__copy {
  font-size: clamp(1.05rem, 0.98rem + 0.3vw, 1.3rem);
}

/* ---------------------------------------------------------------------------
 * Release 8 — card-context typography ownership.
 *
 * The shared card-heading rule (.card h2, .avds-card h2, .document-card h2, …)
 * around line 365 carries element-level specificity (0,1,1) and therefore
 * silently outranked the single-class heading steps declared earlier in this
 * file (0,1,0).  Two measured symptoms:
 *   * .section-title rendered 34.4px in plain sections (/, /ministerstva,
 *     /status, /poisk) but 27.2px inside .avds-card shells (/prezident,
 *     /ministerstva/ekonomika, /ii-assistent) — same class, two scales;
 *   * .overview-subtitle rendered 22.4px almost everywhere but 27.2px inside
 *     the .avds-card monitoring panels on /status, i.e. two scales on one
 *     screen ("Сигналы системы" 22.4 vs "Свежесть представлений каталога"
 *     27.2).
 * This block re-asserts the declared class steps inside card contexts only.
 * Classless card headings keep the 27.2px card step, and component-scoped
 * classes (.doc-title, .theme-name, .macro-corpus-title) are intentionally
 * left untouched — see docs/audit-2026-09-11-ui-consistency.md.
 * ------------------------------------------------------------------------- */

.card .section-title,
.avds-card .section-title,
.document-card .section-title,
.quote-card .section-title,
.source-card .section-title,
.search-result .section-title {
  font-size: clamp(1.45rem, 1.1rem + 1.2vw, 2.15rem);
}

.card .overview-subtitle,
.avds-card .overview-subtitle,
.document-card .overview-subtitle,
.quote-card .overview-subtitle,
.source-card .overview-subtitle,
.search-result .overview-subtitle {
  font-size: clamp(1.05rem, 0.95rem + 0.5vw, 1.45rem);
}
