/* 2026-09-14 - retired-template prune: 37 selectors removed from this file.
   Each named a class that exists nowhere - not on any of the 370 published
   URLs, not in any post_content/postmeta/option row in any status, not emitted
   by any theme PHP or JS. See the note at the top of style.css for the method
   and the verification. */
/**
 * Editorial Visual System — Gold Standard Components
 * Cross-brand, component-driven, token-owned.
 * Instantiated for Vanity or Vice using existing semantic tokens.
 * Surface rhythm: dark entry → light elevated body → occasional dark emphasis → quiet sources.
 * Prohibitions: no freehand colors; accents role-mapped only.
 */

/* —— 1. Surface & Token Authority (already in semantic.css; reinforced here) ——

   Promoted from `.vovn-article, .vovn-prose` to :root, 14 September 2026.
   These are plain aliases onto the semantic layer with no per-context
   variation, but scoping them to the prose containers meant every component
   in this file that sits OUTSIDE prose resolved them to nothing. The visible
   consequence was on /routines/: `.vov-card` carries
   `background: var(--evs-surface-elevated)`, which computed to transparent,
   so the card showed the oxblood .vov-card-grid behind it while keeping its
   ink text — measured at 1.40:1 across the headline, the body and the link.
   Its border-radius and its color-mix() border were failing the same way.
   The scoped block is kept below so nothing depending on the cascade order
   changes; it now simply restates the same values. */
:root,
.vovn-article,
.vovn-prose {
  --evs-surface-deep: var(--color-surface-espresso);
  --evs-surface-elevated: var(--color-surface-page);
  --evs-surface-mid: var(--color-surface-stone);
  --evs-text-primary: var(--color-text-primary);
  --evs-text-on-dark: var(--color-text-on-dark);
  --evs-text-muted: var(--color-text-quiet);
  --evs-accent-meta: var(--color-accent-metal); /* gold-family metadata / counters */
  --evs-accent-boundary: var(--color-status-worth); /* oxblood / science / regulation */
  --evs-accent-interactive: var(--color-support-bronze);
  --evs-accent-secondary: var(--color-support-putty);
  --evs-radius-subtle: 2px;
  --evs-radius-medium: 6px;
  --evs-space: 1rem; /* base of modular scale */
}

/* —— 2. Dossier / Hero Header (dark entry field option) —— */
/* The .vovn-dossier-hero block that stood here (hero grid, noise overlay,
   eyebrow, figure and its 820px stack) was removed 2026-09-14. The class is
   not emitted by any template; .vovn-dossier is the header in service. */

/* Preserve existing light article-hero; allow toggle via class */


/* —— 3. Section Display Headers —— */
.vovn-prose h2,
.vovn-article-body h2 {
  margin: 3.2rem 0 1rem;
  font: 500 clamp(1.85rem, 3vw, 2.75rem)/1.12 var(--font-display, "Bodoni Moda", Georgia, serif);
  letter-spacing: -0.02em;
  max-width: 22ch;
  text-wrap: balance;
}
.vovn-prose h2:first-of-type {
  margin-top: 0;
}
.vovn-article--section-dense .vovn-prose h2,
.vovn-article--section-dense .vovn-article-body h2{
  margin-top:2.25rem;
  font-size:clamp(1.65rem,2.55vw,2.4rem);
  line-height:1.16;
}

/* House language should read like a signature, not another template-sized section. */
.vovn-prose h2.vv-house-verdict,
.vovn-article-body h2.vv-house-verdict{
  margin:clamp(2.4rem,5vw,4rem) 0 .8rem;
  padding-top:1rem;
  border-top:3px solid var(--evs-accent-strong,#5A0E1A);
  max-width:none;
  font:700 .72rem/1.2 var(--font-mono,"IBM Plex Mono",monospace);
  letter-spacing:.16em;
  text-transform:uppercase;
}
.vovn-prose h2.vv-house-verdict + p,
.vovn-article-body h2.vv-house-verdict + p{
  font-family:var(--font-display,"Bodoni Moda",Georgia,serif);
  font-size:clamp(1.28rem,2vw,1.65rem);
  line-height:1.5;
}
.vovn-prose .vv-trust-note,
.vovn-article-body .vv-trust-note{
  font-size:.9rem;
  line-height:1.55;
  color:var(--evs-text-muted,#625b5d);
}
.vovn-prose h2.vv-trust-heading,
.vovn-article-body h2.vv-trust-heading{
  margin:2.5rem 0 .75rem;
  padding-top:1rem;
  border-top:1px solid color-mix(in srgb,var(--evs-text-muted,#625b5d) 28%,transparent);
  max-width:none;
  font:700 .68rem/1.2 var(--font-mono,"IBM Plex Mono",monospace);
  letter-spacing:.14em;
  text-transform:uppercase;
}

/* —— 4. Card Grids (soft elevated, cycling accent borders) —— */
.vovn-card-grid,
.vov-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
  gap: 1.25rem;
  margin: 2.5rem 0;
}
.vovn-card,
.vov-card {
  position: relative;
  padding: clamp(1.35rem, 3vw, 2rem);
  background: var(--evs-surface-elevated);
  border: 1px solid color-mix(in srgb, var(--color-border-rule) 70%, transparent);
  border-radius: var(--evs-radius-subtle);
  box-shadow: 0 12px 40px -28px rgba(36, 27, 25, 0.35);
  transition: transform 180ms ease, box-shadow 180ms ease;
}
.vovn-card:hover,
.vov-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 20px 48px -24px rgba(36, 27, 25, 0.45);
}
.vovn-card:nth-child(4n+1) { border-top: 3px solid var(--evs-accent-boundary); }
.vovn-card:nth-child(4n+2) { border-top: 3px solid var(--evs-accent-meta); }
.vovn-card:nth-child(4n+3) { border-top: 3px solid var(--evs-accent-interactive); }
.vovn-card:nth-child(4n+4) { border-top: 3px solid var(--evs-accent-secondary); }

/* —— 5. Accent Column / Tactics Blocks —— */


/* —— 6. Emphatic Callout / Boundary Box —— */
.vovn-callout{
  margin: 2.5rem 0;
  padding: 1.5rem 1.6rem;
  border-left: 5px solid var(--evs-accent-boundary);
  background: linear-gradient(90deg, color-mix(in srgb, var(--evs-accent-boundary) 9%, var(--evs-surface-elevated)), var(--evs-surface-elevated));
  border-radius: 0 var(--evs-radius-medium) var(--evs-radius-medium) 0;
}
.vovn-callout p:last-child{
  margin-bottom: 0;
}

/* —— 7. Numbered Insight Blocks —— */
.vovn-numbered-insights {
  display: grid;
  gap: 1rem;
  margin: 2.5rem 0;
}
.vovn-numbered-insights > * {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1.1rem;
  align-items: start;
  padding: 1.35rem 1.5rem;
  background: var(--evs-surface-deep);
  color: var(--evs-text-on-dark);
  border-radius: var(--evs-radius-subtle);
}
.vovn-numbered-insights > *::before {
  content: counter(evs-num, decimal-leading-zero);
  counter-increment: evs-num;
  font: 500 2.4rem/1 var(--font-display, "Bodoni Moda", serif);
  color: var(--evs-accent-meta);
  letter-spacing: -0.02em;
}
.vovn-numbered-insights {
  counter-reset: evs-num;
}

/* —— 8. Sources / Attribution Footer —— */
.vovn-sources{
  margin-top: 4rem;
  padding-top: 2rem;
  border-top: 1px solid color-mix(in srgb, var(--color-border-rule) 80%, transparent);
  font-size: 0.875rem;
  color: var(--evs-text-muted);
  line-height: 1.55;
}
.vovn-sources h2,
.vovn-sources h3{
  margin: 0 0 0.75rem;
  font: 700 0.7rem/1.3 var(--font-mono, monospace);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--evs-text-muted);
  max-width: none;
}
.vovn-sources ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.vovn-sources li {
  padding: 0.35rem 0;
  border-bottom: 1px solid color-mix(in srgb, var(--color-border-rule) 40%, transparent);
}
.vovn-sources li:last-child {
  border-bottom: 0;
}

/* —— 9. Typography & Hierarchy (reinforcement) —— */
.vovn-prose {
  font-size: var(--text-body, 1.0625rem);
  line-height: var(--leading-body, 1.75);
  letter-spacing: var(--tracking-body, 0.012em);
  max-width: var(--measure-body, none);
}
.vovn-prose p {
  margin: 0 0 1.35em;
}
.vovn-prose ul,
.vovn-prose ol {
  margin: 0 0 1.5em;
  padding-left: 1.35em;
}
.vovn-prose li + li {
  margin-top: 0.4em;
}
.vovn-prose blockquote {
  margin: 2rem 0;
  padding: 1.25rem 0 1.25rem 1.5rem;
  border-left: 4px solid var(--evs-accent-meta);
  font-family: var(--font-display, "Bodoni Moda", serif);
  font-size: 1.15rem;
  line-height: 1.45;
  color: var(--evs-text-primary);
}

/* —— 10. Elevation, motion, a11y —— */
@media (prefers-reduced-motion: reduce) {
  .vovn-card,
  .vov-card {
    transition: none;
  }
  .vovn-card:hover,
  .vov-card:hover {
    transform: none;
  }
}
.vovn-card:focus-within,
.vov-card:focus-within {
  outline: 3px solid var(--evs-accent-interactive);
  outline-offset: 3px;
}

/* —— 11. Evidence Tier Component ——
 * Formalizes the "Evidence check" module that already exists in treatment
 * and supplement articles. Four tiers, matching the editorial framework:
 *   strong · moderate · limited (emerging) · marketing (ahead of evidence)
 * Markup convention:
 *   <div class="vov-evidence" data-tier="moderate">
 *     <p class="vov-evidence-tier">Evidence: Moderate</p>
 *     <p>…what the evidence supports and where it stops…</p>
 *     <ul class="vovn-sources">…dated sources…</ul>
 *   </div>
 * Rules: never hover-dependent, readable at mobile sizes, tier conveyed by
 * label text AND color (not color alone), accents role-mapped from tokens.
 */
.vov-evidence {
  margin: 2.75rem 0;
  padding: 1.4rem 1.6rem 1.5rem;
  background: var(--evs-surface-elevated, var(--color-surface-page));
  border: 1px solid color-mix(in srgb, var(--color-border-rule) 70%, transparent);
  border-left-width: 5px;
  border-radius: 0 var(--evs-radius-medium, 6px) var(--evs-radius-medium, 6px) 0;
}
.vov-evidence-tier {
  display: inline-block;
  margin: 0 0 0.75rem;
  font: 700 0.7rem/1.3 var(--font-mono, "IBM Plex Mono", monospace);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.vov-evidence > p {
  margin: 0 0 0.9em;
}
.vov-evidence > p:last-child,
.vov-evidence > ul:last-child {
  margin-bottom: 0;
}
/* Tier accents — label color + left border, role-mapped, no freehand colors */
.vov-evidence[data-tier="strong"] {
  border-left-color: var(--color-support-bronze);
}
.vov-evidence[data-tier="strong"] .vov-evidence-tier {
  color: var(--color-support-bronze);
}
.vov-evidence[data-tier="moderate"] {
  border-left-color: var(--color-accent-metal);
}
.vov-evidence[data-tier="moderate"] .vov-evidence-tier {
  /* The evidence block sits in the article body on parchment, where champagne
     measures 1.56:1. The on-light metal is 4.82:1. The border-left above keeps
     champagne: a 3px rule is not text and reads fine at that weight. */
  color: var(--color-accent-metal-ink, var(--color-accent-metal));
}
.vov-evidence[data-tier="limited"] {
  border-left-color: var(--color-support-putty);
}
.vov-evidence[data-tier="limited"] .vov-evidence-tier {
  color: var(--color-text-quiet);
}
.vov-evidence[data-tier="marketing"] {
  border-left-color: var(--color-status-worth);
}
.vov-evidence[data-tier="marketing"] .vov-evidence-tier {
  color: var(--color-status-worth);
}
/* Sources list inside the component inherits the quiet sources treatment */
.vov-evidence .vovn-sources,
.vov-evidence ul {
  margin-top: 1rem;
  padding-top: 0;
  border-top: 0;
  font-size: 0.875rem;
  color: var(--evs-text-muted, var(--color-text-quiet));
}
@media (max-width: 640px) {
  .vov-evidence {
    padding: 1.15rem 1.1rem 1.25rem;
    margin: 2.25rem 0;
  }
}

/* —— 12. Cohort Plate ——
 * [vov_cohort] — "Who was measured". Sits beside the evidence tier component
 * above: that one grades whether a claim is supported, this one grades whether
 * the support reaches the reader looking at it. Four transfer states, conveyed
 * by label text AND colour, never colour alone. Role-mapped tokens only.
 *
 *   <figure class="vov-cohort" data-transfers="unknown"> …
 *
 * The plate inherits the article measure and takes no max-width of its own, so
 * it honours the house bleed contract rather than reintroducing a narrow column.
 */
.vov-cohort {
  margin: 2.75rem 0;
  padding: clamp(1.15rem, 0.8rem + 1.1vw, 2rem);
  background: var(--color-surface-ink);
  color: var(--color-text-on-dark);
  border: 1px solid color-mix(in srgb, var(--color-accent-metal) 32%, transparent);
  border-left: 5px solid var(--color-support-warm-grey);
  max-width: none;
}
.vov-cohort__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.65rem 1rem;
  padding-bottom: 0.7rem;
  border-bottom: 1px solid color-mix(in srgb, var(--color-accent-metal) 28%, transparent);
}
.vov-cohort__stamp {
  font: 500 max(12px, var(--text-utility, 0.72rem)) / var(--leading-utility, 1.35) var(--font-mono, monospace);
  letter-spacing: var(--tracking-utility, 0.14em);
  text-transform: uppercase;
  color: var(--color-accent-metal);
}
.vov-cohort__chip {
  font: 700 0.66rem/1.3 var(--font-mono, monospace);
  letter-spacing: 0.13em;
  text-transform: uppercase;
  padding: 0.3rem 0.62rem;
  white-space: nowrap;
  background: var(--color-support-warm-grey);
  color: var(--color-text-primary);
}
.vov-cohort__claim {
  margin: 1rem 0 0;
  font-family: var(--font-display, "Bodoni Moda", serif);
  font-size: var(--text-h3, clamp(1.2rem, 1.5vw, 1.55rem));
  line-height: var(--leading-h3, 1.3);
  letter-spacing: var(--tracking-h3, -0.01em);
  color: var(--color-text-on-dark);
}
.vov-cohort__rows {
  margin: 1.1rem 0 0;
  display: grid;
  gap: 0;
}
.vov-cohort__row {
  display: grid;
  grid-template-columns: minmax(7.5rem, 11rem) 1fr;
  gap: 0 1.25rem;
  padding: 0.62rem 0;
  border-top: 1px solid color-mix(in srgb, var(--color-support-warm-grey) 22%, transparent);
}
.vov-cohort__row dt {
  margin: 0;
  padding-top: 0.16rem;
  font: 700 var(--text-utility, 0.72rem) / var(--leading-utility, 1.35) var(--font-mono, monospace);
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--color-support-warm-grey);
}
.vov-cohort__row dd {
  margin: 0;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--color-text-on-dark);
}
.vov-cohort__note {
  margin: 1.15rem 0 0;
  padding-top: 0.9rem;
  border-top: 1px solid color-mix(in srgb, var(--color-accent-metal) 28%, transparent);
  font-size: 1.04rem;
  line-height: 1.62;
  color: var(--color-accent-metal);
}
.vov-cohort__caption {
  margin: 0.9rem 0 0;
  font-size: 0.84rem;
  line-height: 1.55;
  color: var(--color-text-on-dark-muted);
}

/* Transfer states — border and chip together, so the state survives both a
   greyscale print and a reader who does not separate the two warm tones. */
.vov-cohort[data-transfers="yes"] {
  border-left-color: var(--color-support-bronze);
}
.vov-cohort[data-transfers="yes"] .vov-cohort__chip,
.vov-cohort-key__item[data-transfers="yes"] .vov-cohort-key__chip {
  background: var(--color-support-bronze);
  color: var(--color-text-on-dark);
}
.vov-cohort[data-transfers="partly"] {
  border-left-color: var(--color-accent-metal);
}
/* --color-surface-ink, not --color-text-primary. These two chips are light
   badges, and .vov-cohort is one of the dark bands where brand.css rebinds
   --color-text-primary to the on-dark value so headings inside a dark plate
   stop rendering in ink. A light chip nested in that band read the rebound
   token and came out parchment on champagne and parchment on warm grey —
   1.72:1 measured on "Untested here". --color-surface-ink is the same ink
   value and does not flip with the ground, which is what a self-contained
   badge wants. */
.vov-cohort[data-transfers="partly"] .vov-cohort__chip,
.vov-cohort-key__item[data-transfers="partly"] .vov-cohort-key__chip {
  background: var(--color-accent-metal);
  color: var(--color-surface-ink);
}
.vov-cohort[data-transfers="unknown"] {
  border-left-color: var(--color-support-warm-grey);
}
.vov-cohort[data-transfers="unknown"] .vov-cohort__chip,
.vov-cohort-key__item[data-transfers="unknown"] .vov-cohort-key__chip {
  background: var(--color-support-warm-grey);
  color: var(--color-surface-ink);
}
.vov-cohort[data-transfers="no"] {
  border-left-color: var(--color-status-stop);
}
.vov-cohort[data-transfers="no"] .vov-cohort__chip,
.vov-cohort-key__item[data-transfers="no"] .vov-cohort-key__chip {
  background: var(--color-status-stop);
  color: var(--color-text-on-dark);
}

/* The key, for the section landing page. */
.vov-cohort-key {
  margin: 2.25rem 0;
  display: grid;
  gap: 0.8rem;
}
.vov-cohort-key__item {
  display: grid;
  grid-template-columns: minmax(8rem, 11rem) 1fr;
  gap: 0 1.25rem;
  align-items: start;
  padding-bottom: 0.8rem;
  border-bottom: 1px solid color-mix(in srgb, var(--color-border-rule) 45%, transparent);
}
.vov-cohort-key__chip {
  font: 700 0.66rem/1.3 var(--font-mono, monospace);
  letter-spacing: 0.13em;
  text-transform: uppercase;
  padding: 0.3rem 0.62rem;
  text-align: center;
}
.vov-cohort-key__gloss {
  font-size: 1rem;
  line-height: 1.55;
  color: var(--color-text-primary);
}

/* Drawn cohort thumbnails (inc/cohort-thumb.php). The SVG is the image, so it
   fills whatever slot a photograph would have filled and keeps its 16:9. */
.vov-cohort-thumb-wrap {
  display: block;
}
.vov-cohort-thumb {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
}

@media (max-width: 640px) {
  .vov-cohort__row,
  .vov-cohort-key__item {
    grid-template-columns: 1fr;
    gap: 0.3rem;
  }
  .vov-cohort__row dt {
    padding-top: 0;
  }
  .vov-cohort-key__chip {
    justify-self: start;
  }
}

/* —— Standard interior page: dossier + editorial body (Salt Notes / HTH pattern) —— */
.vovn-dossier {
  background: linear-gradient(145deg, var(--color-surface-espresso) 0%, color-mix(in srgb, var(--color-status-worth) 28%, var(--color-surface-espresso)) 100%);
  color: var(--color-text-on-dark);
  padding: clamp(3rem, 7vw, 5.5rem) 0;
  min-height: 0;
}
/* The dossier band itself. Added 14 September 2026, because it was missing.

   Every part of this component was written for a dark ground — __title takes
   `color: inherit`, __dek takes --color-text-on-dark-muted, __kicker takes the
   metal — but no rule anywhere in the theme gave `.vovn-dossier` a background
   or a colour. The styling that would have done it was written against
   `.vovn-dossier-hero`, a class the templates do not emit, so the band
   rendered transparent on parchment and the page title rendered parchment on
   parchment. Measured at 1.00:1 on /devices/, /every-skin/, /the-register/,
   the lookbook archive, /about/ and /treatment-room/ — the H1 of six hub
   pages was invisible. The gradient is the one .vovn-dossier-hero already
   describes, so the two remain the same object. */
.vovn-dossier {
  position: relative;
  background: linear-gradient(145deg,
    var(--color-surface-espresso) 0%,
    color-mix(in srgb, var(--color-status-worth) 35%, var(--color-surface-espresso)) 70%,
    var(--color-surface-field) 100%);
  color: var(--color-text-on-dark);
  padding-block: clamp(3.5rem, 8vw, 6.5rem);
}
/* On a dark ground the kicker is champagne again, not the on-light metal. */
.vovn-dossier .vovn-dossier__kicker {
  color: var(--color-accent-metal);
}
/* The split variant supplies its own grid and its own padding. */
.vovn-dossier--split {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  align-items: stretch;
  padding: 0;
}
.vovn-dossier__inner {
  width: 90vw;
  margin-inline: auto;
}
.vovn-dossier--split .vovn-dossier__inner {
  width: auto;
  padding: clamp(3rem, 6vw, 5rem) clamp(1.5rem, 5vw, 4rem);
  align-self: end;
}
.vovn-dossier__kicker {
  margin: 0 0 1rem;
  font: 700 0.7rem/1.3 var(--font-mono, "IBM Plex Mono", monospace);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  /* The dossier copy sits on parchment on every template measured — the
     media cell is a sibling, not an ancestor — and champagne is 1.56:1 there.
     Champagne comes back only where the kicker is genuinely on dark ground. */
  color: var(--color-accent-metal-ink, var(--color-accent-metal));
}
.vovn-dossier__media .vovn-dossier__kicker,
[data-surface="ink"] .vovn-dossier__kicker {
  color: var(--color-accent-metal);
}
.vovn-dossier__kicker .rule {
  display: inline-block;
  width: 2.2rem;
  height: 1px;
  margin-right: 0.7rem;
  vertical-align: middle;
  background: currentColor;
}
.vovn-dossier__title {
  margin: 0 0 0.4em;
  font: 500 clamp(2.2rem, 5vw, 3.6rem)/1.08 var(--font-display, "Bodoni Moda", Georgia, serif);
  letter-spacing: -0.02em;
  text-wrap: balance;
  max-width: 18ch;
  color: inherit;
}
.vovn-dossier__dek {
  margin: 0;
  max-width: 46ch;
  font-size: clamp(1.05rem, 1.4vw, 1.2rem);
  line-height: 1.55;
  color: var(--color-text-on-dark-muted);
}
.vovn-dossier__meta {
  margin: 1.1rem 0 0;
  font: 500 0.78rem/1.4 var(--font-mono, "IBM Plex Mono", monospace);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-on-dark-muted);
}
.vovn-dossier__meta a {
  color: var(--color-accent-metal);
}

.vovn-dossier__media {
  margin: 0;
  overflow: hidden;
  min-height: 0;
  background: var(--color-surface-espresso);
}
.vovn-dossier__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.vovn-editorial-body {
  background: var(--color-surface-page);
  padding: clamp(2.25rem, 5vw, 4rem) 0;
  overflow: visible;
}
.vovn-editorial-body > .vovn-shell {
  width: 90vw;
  margin-inline: auto;
}
.vovn-page-stamp {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  margin: 0 0 2rem;
  padding-bottom: 1.15rem;
  border-bottom: 1px solid var(--color-border-rule);
}
.vovn-page-stamp dt {
  font: 700 0.68rem/1.3 var(--font-mono, monospace);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-text-quiet);
}
.vovn-page-stamp dd {
  margin: 0.2rem 0 0;
  font-size: 0.95rem;
}
.vovn-filter-bar span{
  margin: 0 0 0.7rem;
  font: 700 0.7rem/1.3 var(--font-mono, monospace);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-accent-metal);
}

.vovn-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 1rem;
  align-items: baseline;
  margin: 0 0 2rem;
}
.vovn-filter-bar a {
  font-size: 0.92rem;
  color: var(--color-text-primary);
}
.vovn-empty {
  padding: 0.5rem 0 2rem;
}

.vovn-missing .vovn-editorial-body {
  padding-top: 2rem;
}
@media (max-width: 900px) {
  .vovn-dossier--split {
    grid-template-columns: 1fr;
  }
  .vovn-dossier__media {
    order: -1;
    min-height: 14rem;
  }
  .vovn-page-stamp {
    grid-template-columns: 1fr;
  }
}
