/* spatial-velvelyne-complete-family-20260911-v5
   Complete Velvelyne family, final four-cut hierarchy, and opt-in Sixtyfour Convergence.
   Convergence is globally available but intentionally unassigned. */
@font-face {
  font-family: "SP Velvelyne Light";
  src: url("/assets/fonts/velvelyne-light.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "SP Velvelyne Book";
  src: url("/assets/fonts/velvelyne-book.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "SP Velvelyne Regular";
  src: url("/assets/fonts/velvelyne-regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "SP Velvelyne Bold";
  src: url("/assets/fonts/velvelyne-bold.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "SP Sixtyfour Convergence";
  src: url("/assets/fonts/sixtyfour-convergence.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

:root {
  --sp-type-velvelyne-light: "SP Velvelyne Light", sans-serif;
  --sp-type-velvelyne-book: "SP Velvelyne Book", sans-serif;
  --sp-type-velvelyne-regular: "SP Velvelyne Regular", sans-serif;
  --sp-type-velvelyne-bold: "SP Velvelyne Bold", sans-serif;

  /* Velvelyne now has four distinct semantic jobs. */
  --sp-type-quiet: var(--sp-type-velvelyne-light);
  --sp-type-deck: var(--sp-type-velvelyne-book);
  --sp-type-metadata: var(--sp-type-velvelyne-regular);
  --sp-type-press: var(--sp-type-velvelyne-bold);
  --sp-type-footer: var(--sp-type-metadata);

  /* Book reads more naturally with a little more air than the old Bold deck. */
  --sp-type-deck-tracking: -.012em;
  --sp-type-deck-leading: 1.08;
  --sp-type-quiet-tracking: .018em;
  --sp-type-quiet-leading: 1.24;
  --sp-type-metadata-tracking: -.018em;

  /* Opt-in only: Sixtyfour Convergence is deliberately not assigned to a hierarchy tier. */
  --sp-type-sixtyfour-convergence: "SP Sixtyfour Convergence", monospace;
  --sp-type-convergence: var(--sp-type-sixtyfour-convergence);
  --sp-convergence-bled: 18;
  --sp-convergence-scan: 62;
  --sp-convergence-xela: 0;
  --sp-convergence-yela: 0;
}

/* Semantic deck copy is now the Book cut, never synthesized Bold. */
[data-type-role="deck"] {
  font-family: var(--sp-type-deck) !important;
  font-weight: 400 !important;
  line-height: var(--sp-type-deck-leading) !important;
  letter-spacing: var(--sp-type-deck-tracking) !important;
  font-synthesis: none !important;
}

#spatial-about-book .spatial-about-deck[data-type-role="deck"] {
  font-family: var(--sp-type-deck) !important;
  font-weight: 400 !important;
  line-height: var(--sp-type-deck-leading) !important;
  letter-spacing: var(--sp-type-deck-tracking) !important;
  font-synthesis: none !important;
}

/* Short chapter decks are intentionally lighter and materially larger: a breath
   between the mechanical display tier and dense Basteleur manuscript copy. */
#spatial-about-book .spatial-about-section-deck {
  font-family: var(--sp-type-quiet) !important;
  font-size: clamp(19px, 1.8vw, 25px) !important;
  font-weight: 400 !important;
  line-height: var(--sp-type-quiet-leading) !important;
  letter-spacing: var(--sp-type-quiet-tracking) !important;
  font-synthesis: none !important;
}

/* Optional semantic hook for future supporting copy in any generated surface. */
[data-type-role="quiet"],
.sp-type-quiet {
  font-family: var(--sp-type-quiet) !important;
  font-weight: 400 !important;
  line-height: var(--sp-type-quiet-leading) !important;
  letter-spacing: var(--sp-type-quiet-tracking) !important;
  font-synthesis: none !important;
}

/* Sixtyfour Convergence special-effect hook. Nothing uses this unless explicitly tagged.
   All four axes are variables so a tiny future use can react to state/interaction without
   changing the canonical display hierarchy. Its COLRv1 palette remains the font default
   until a named Spatial Press @font-palette-values treatment is deliberately authored. */
.sp-type-convergence,
[data-type-role="convergence"] {
  font-family: var(--sp-type-convergence) !important;
  font-style: normal !important;
  font-weight: 400 !important;
  font-variation-settings:
    "BLED" var(--sp-convergence-bled),
    "SCAN" var(--sp-convergence-scan),
    "XELA" var(--sp-convergence-xela),
    "YELA" var(--sp-convergence-yela) !important;
  font-palette: normal;
  font-synthesis: none !important;
}
