{
  "$defs": {
    "AndOptions": {
      "description": "Conjunction options between contributors.",
      "oneOf": [
        {
          "const": "text",
          "description": "Use the localized term for \"and\" (e.g., \"and\" in English).",
          "type": "string"
        },
        {
          "const": "symbol",
          "description": "Use the localized symbol for \"and\" (e.g., \"&\" in English).",
          "type": "string"
        },
        {
          "const": "none",
          "description": "No conjunction (e.g., \"Smith, Jones\").",
          "type": "string"
        }
      ]
    },
    "AndOtherOptions": {
      "description": "How to render \"and others\" / et al.",
      "enum": [
        "et-al",
        "text"
      ],
      "type": "string"
    },
    "ArticleJournalBibliographyConfig": {
      "description": "Article-journal-specific bibliography configuration.",
      "properties": {
        "no-page-fallback": {
          "anyOf": [
            {
              "$ref": "#/$defs/ArticleJournalNoPageFallback"
            },
            {
              "type": "null"
            }
          ],
          "description": "Fallback policy used when page data is absent from an article-journal reference."
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "ArticleJournalNoPageFallback": {
      "description": "Named fallback policies for page-less article-journal bibliography entries.",
      "oneOf": [
        {
          "const": "doi",
          "description": "Replace the standard article detail block with the DOI component.",
          "type": "string"
        }
      ]
    },
    "BibliographyGroup": {
      "description": "A bibliography group with selector, optional heading, and per-group sorting.\n\nGroups allow styles to divide bibliographies into labeled sections with\ndistinct sorting rules. Items match the first group whose selector evaluates\nto true (first-match semantics).\n\n# Examples\n\n```yaml\ngroups:\n  - id: vietnamese\n    heading:\n      localized:\n        vi: \"Tài liệu tiếng Việt\"\n        en-US: \"Vietnamese Sources\"\n    selector:\n      field:\n        language: vi\n    sort:\n      template:\n        - key: author\n          sort-order: given-family\n```",
      "properties": {
        "disambiguate": {
          "anyOf": [
            {
              "$ref": "#/$defs/DisambiguationScope"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional disambiguation scope.\n- `globally` (default): Year suffixes are assigned across the whole bibliography.\n- `locally`: Year suffixes are assigned independently within this group."
        },
        "heading": {
          "anyOf": [
            {
              "$ref": "#/$defs/GroupHeading"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional heading to display above this group.\nOmit for no heading (e.g., fallback group)."
        },
        "id": {
          "description": "Unique identifier for this group.",
          "type": "string"
        },
        "selector": {
          "$ref": "#/$defs/GroupSelector",
          "description": "Selector predicate to match references."
        },
        "sort": {
          "anyOf": [
            {
              "$ref": "#/$defs/GroupSortEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional per-group sorting specification.\nFalls back to global bibliography sort if omitted."
        },
        "template": {
          "description": "Optional per-group template override.\nFalls back to global bibliography template if omitted.",
          "items": {
            "$ref": "#/$defs/TemplateComponent"
          },
          "type": [
            "array",
            "null"
          ]
        }
      },
      "required": [
        "id",
        "selector"
      ],
      "type": "object"
    },
    "BibliographyLabelMode": {
      "description": "Bibliography label modes supported by scoped bibliography options.",
      "oneOf": [
        {
          "const": "none",
          "description": "No explicit label component.",
          "type": "string"
        },
        {
          "const": "numeric",
          "description": "Numeric bibliography labels.",
          "type": "string"
        },
        {
          "const": "author-date",
          "description": "Author-date bibliography labels.",
          "type": "string"
        }
      ]
    },
    "BibliographyLabelWrap": {
      "description": "Wrapper punctuation supported by bibliography label options.",
      "oneOf": [
        {
          "const": "none",
          "description": "No outer punctuation.",
          "type": "string"
        },
        {
          "const": "parentheses",
          "description": "Parentheses.",
          "type": "string"
        },
        {
          "const": "brackets",
          "description": "Brackets.",
          "type": "string"
        }
      ]
    },
    "BibliographyOptions": {
      "description": "Bibliography-local option overrides.",
      "properties": {
        "article-journal": {
          "anyOf": [
            {
              "$ref": "#/$defs/ArticleJournalBibliographyConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Article-journal-specific bibliography policies."
        },
        "compound-numeric": {
          "anyOf": [
            {
              "$ref": "#/$defs/CompoundNumericConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Configuration for compound numeric bibliography entries."
        },
        "contributors": {
          "anyOf": [
            {
              "$ref": "#/$defs/ContributorConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Contributor formatting defaults."
        },
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "date-position": {
          "anyOf": [
            {
              "$ref": "#/$defs/DatePosition"
            },
            {
              "type": "null"
            }
          ],
          "description": "Placement of issued dates within bibliography entries."
        },
        "dates": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Date formatting defaults."
        },
        "entry-suffix": {
          "description": "Suffix appended to each bibliography entry.",
          "type": [
            "string",
            "null"
          ]
        },
        "hanging-indent": {
          "description": "Whether to use a hanging indent.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "label-mode": {
          "anyOf": [
            {
              "$ref": "#/$defs/BibliographyLabelMode"
            },
            {
              "type": "null"
            }
          ],
          "description": "Bibliography label mode for label-bearing styles."
        },
        "label-wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/BibliographyLabelWrap"
            },
            {
              "type": "null"
            }
          ],
          "description": "Label wrap policy applied to bibliography labels."
        },
        "links": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinksConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Hyperlink configuration."
        },
        "localize": {
          "anyOf": [
            {
              "$ref": "#/$defs/Localize"
            },
            {
              "type": "null"
            }
          ],
          "description": "Localization settings."
        },
        "multilingual": {
          "anyOf": [
            {
              "$ref": "#/$defs/MultilingualConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Multilingual rendering defaults. Accepts a preset name (e.g., `\"apa\"`, `\"chicago\"`)\nor an explicit configuration block."
        },
        "page-range-format": {
          "anyOf": [
            {
              "$ref": "#/$defs/PageRangeFormat"
            },
            {
              "type": "null"
            }
          ],
          "description": "Page range formatting (expanded, minimal, chicago)."
        },
        "processing": {
          "anyOf": [
            {
              "$ref": "#/$defs/Processing"
            },
            {
              "type": "null"
            }
          ],
          "description": "Processing mode (author-date, numeric, etc.)."
        },
        "punctuation-in-quote": {
          "description": "Whether to place periods/commas inside quotation marks.",
          "type": "boolean"
        },
        "repeated-author-rendering": {
          "anyOf": [
            {
              "$ref": "#/$defs/RepeatedAuthorRendering"
            },
            {
              "type": "null"
            }
          ],
          "description": "Repeated-author rendering mode for bibliography entries."
        },
        "separator": {
          "description": "Separator between bibliography components.",
          "type": [
            "string",
            "null"
          ]
        },
        "sort-partitioning": {
          "anyOf": [
            {
              "$ref": "#/$defs/BibliographySortPartitioning"
            },
            {
              "type": "null"
            }
          ],
          "description": "Partitioning policy for multilingual bibliography sorting and sections."
        },
        "strip-periods": {
          "description": "Strip trailing periods from terms, labels, and abbreviated dates.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "subsequent-author-substitute": {
          "description": "String to substitute for repeating authors.",
          "type": [
            "string",
            "null"
          ]
        },
        "subsequent-author-substitute-rule": {
          "anyOf": [
            {
              "$ref": "#/$defs/SubsequentAuthorSubstituteRule"
            },
            {
              "type": "null"
            }
          ],
          "description": "Rule for when to apply the substitute."
        },
        "substitute": {
          "anyOf": [
            {
              "$ref": "#/$defs/SubstituteConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Substitution rules for missing data."
        },
        "suppress-period-after-url": {
          "description": "Whether to suppress the trailing period after URLs/DOIs.",
          "type": "boolean"
        },
        "title-terminator": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitleTerminator"
            },
            {
              "type": "null"
            }
          ],
          "description": "Terminator applied to primary-title bibliography components."
        },
        "titles": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitlesConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Title formatting defaults."
        },
        "volume-pages-delimiter": {
          "anyOf": [
            {
              "$ref": "#/$defs/DelimiterPunctuation"
            },
            {
              "type": "null"
            }
          ],
          "description": "Delimiter between volume/issue and pages for serial sources."
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "BibliographyPartitionHeading": {
      "anyOf": [
        {
          "description": "Fixed literal heading text.",
          "properties": {
            "literal": {
              "description": "Literal heading value.",
              "type": "string"
            }
          },
          "required": [
            "literal"
          ],
          "type": "object"
        },
        {
          "description": "Locale general term key resolved at render time.",
          "properties": {
            "form": {
              "anyOf": [
                {
                  "$ref": "#/$defs/TermForm"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional term form (defaults to long)."
            },
            "term": {
              "$ref": "#/$defs/GeneralTerm",
              "description": "Locale general term key."
            }
          },
          "required": [
            "term"
          ],
          "type": "object"
        },
        {
          "description": "Locale-indexed heading map.",
          "properties": {
            "localized": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Map keyed by BCP 47 locale identifiers or language tags.",
              "type": "object"
            }
          },
          "required": [
            "localized"
          ],
          "type": "object"
        }
      ],
      "description": "Localizable heading source for automatic bibliography partition sections."
    },
    "BibliographyPartitionKind": {
      "description": "Partition key source for bibliography partitioning.",
      "oneOf": [
        {
          "const": "script",
          "description": "Partition by Unicode script detected from author/editor/title sort text.",
          "type": "string"
        },
        {
          "const": "language",
          "description": "Partition by the reference's effective item language.",
          "type": "string"
        }
      ]
    },
    "BibliographyPartitionMode": {
      "description": "Rendering mode for bibliography partitioning.",
      "oneOf": [
        {
          "const": "sort-only",
          "description": "Sort a flat bibliography by partition before normal sort keys.",
          "type": "string"
        },
        {
          "const": "sections",
          "description": "Render visible sections for grouped bibliography output only.",
          "type": "string"
        },
        {
          "const": "sort-and-sections",
          "description": "Sort flat output by partition and render visible sections for grouped output.",
          "type": "string"
        }
      ]
    },
    "BibliographySortPartitioning": {
      "description": "Bibliography partitioning policy for multilingual sort order and sections.",
      "properties": {
        "by": {
          "$ref": "#/$defs/BibliographyPartitionKind",
          "description": "Source used to derive each reference's partition key."
        },
        "headings": {
          "additionalProperties": {
            "$ref": "#/$defs/BibliographyPartitionHeading"
          },
          "description": "Optional headings for visible partition sections.",
          "type": "object"
        },
        "mode": {
          "$ref": "#/$defs/BibliographyPartitionMode",
          "default": "sort-only",
          "description": "Whether partitioning affects flat sorting, visible sections, or both."
        },
        "order": {
          "description": "Preferred partition order. Unlisted partitions sort after listed ones.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "by"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "BibliographySpec": {
      "description": "Bibliography specification.",
      "properties": {
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "groups": {
          "description": "Optional bibliography grouping specification.\n\nWhen present, divides the bibliography into labeled sections with\noptional per-group sorting. Items match the first group whose selector\nevaluates to true (first-match semantics). Omit for flat bibliography.\n\nSee `BibliographyGroup` for examples.",
          "items": {
            "$ref": "#/$defs/BibliographyGroup"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "groups-enabled": {
          "default": true,
          "description": "Whether to apply manual `groups:` bibliography grouping.\n\nDefaults to `true`. Set to `false` to disable the `groups:` configuration\nand render a flat bibliography instead. Automatic sort-partition sections\nare unaffected by this toggle.",
          "type": "boolean"
        },
        "locales": {
          "description": "Locale-specific template overrides checked before the default template.",
          "items": {
            "$ref": "#/$defs/LocalizedTemplateSpec"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "options": {
          "anyOf": [
            {
              "$ref": "#/$defs/BibliographyOptions"
            },
            {
              "type": "null"
            }
          ],
          "description": "Bibliography-specific option overrides merged over the style config."
        },
        "sort": {
          "anyOf": [
            {
              "$ref": "#/$defs/GroupSortEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional global bibliography sorting specification.\n\nWhen present, used for sorting the flat bibliography or as default\nfor groups that don't specify their own sort."
        },
        "template": {
          "description": "The default template for bibliography entries.\nDefault template for entries when no localized override is selected.",
          "items": {
            "$ref": "#/$defs/TemplateComponent"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "template-ref": {
          "anyOf": [
            {
              "$ref": "#/$defs/TemplateReference"
            },
            {
              "type": "null"
            }
          ],
          "description": "Reference to an embedded template preset or external template.\n\nIf both `template-ref` and `template` are present, `template` takes precedence."
        },
        "type-variants": {
          "additionalProperties": {
            "$ref": "#/$defs/TemplateVariant"
          },
          "description": "Type-specific template overrides. When present, replaces the default\ntemplate for entries of the specified types. Keys are reference type\nnames (e.g., \"chapter\", \"article-journal\").",
          "type": [
            "object",
            "null"
          ]
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "CitationCollapse": {
      "description": "Citation collapse behavior for multi-item citations.",
      "oneOf": [
        {
          "const": "citation-number",
          "description": "Collapse adjacent citation numbers into a numeric range such as `1–3`.",
          "type": "string"
        }
      ]
    },
    "CitationField": {
      "description": "Discipline/field classification for a citation style.\n\nValues correspond to the CSL 1.0 `<category field=\"...\"/>` attribute,\n`generic-base` is silently ignored during migration.",
      "oneOf": [
        {
          "const": "anthropology",
          "description": "Anthropology styles.",
          "type": "string"
        },
        {
          "const": "biology",
          "description": "Biology styles.",
          "type": "string"
        },
        {
          "const": "botany",
          "description": "Botany styles.",
          "type": "string"
        },
        {
          "const": "chemistry",
          "description": "Chemistry styles.",
          "type": "string"
        },
        {
          "const": "communications",
          "description": "Communications studies styles.",
          "type": "string"
        },
        {
          "const": "engineering",
          "description": "Engineering styles.",
          "type": "string"
        },
        {
          "const": "geography",
          "description": "Geography styles.",
          "type": "string"
        },
        {
          "const": "geology",
          "description": "Geology styles.",
          "type": "string"
        },
        {
          "const": "history",
          "description": "History styles.",
          "type": "string"
        },
        {
          "const": "humanities",
          "description": "Humanities styles.",
          "type": "string"
        },
        {
          "const": "law",
          "description": "Law styles.",
          "type": "string"
        },
        {
          "const": "linguistics",
          "description": "Linguistics styles.",
          "type": "string"
        },
        {
          "const": "literature",
          "description": "Literature styles.",
          "type": "string"
        },
        {
          "const": "math",
          "description": "Mathematics styles.",
          "type": "string"
        },
        {
          "const": "medicine",
          "description": "Medicine styles.",
          "type": "string"
        },
        {
          "const": "philosophy",
          "description": "Philosophy styles.",
          "type": "string"
        },
        {
          "const": "physics",
          "description": "Physics styles.",
          "type": "string"
        },
        {
          "const": "political-science",
          "description": "Political science styles.",
          "type": "string"
        },
        {
          "const": "psychology",
          "description": "Psychology styles.",
          "type": "string"
        },
        {
          "const": "science",
          "description": "General science styles.",
          "type": "string"
        },
        {
          "const": "social-science",
          "description": "Social science styles.",
          "type": "string"
        },
        {
          "const": "sociology",
          "description": "Sociology styles.",
          "type": "string"
        },
        {
          "const": "theology",
          "description": "Theology styles.",
          "type": "string"
        },
        {
          "const": "zoology",
          "description": "Zoology styles.",
          "type": "string"
        }
      ]
    },
    "CitationGroupDelimiter": {
      "description": "Delimiters between grouped citations.",
      "oneOf": [
        {
          "const": "comma",
          "description": "`, `",
          "type": "string"
        },
        {
          "const": "semicolon",
          "description": "`; `",
          "type": "string"
        },
        {
          "const": "space",
          "description": "` `",
          "type": "string"
        }
      ]
    },
    "CitationOptions": {
      "description": "Citation-local option overrides.",
      "properties": {
        "contributors": {
          "anyOf": [
            {
              "$ref": "#/$defs/ContributorConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Contributor formatting defaults."
        },
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "dates": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Date formatting defaults."
        },
        "group-delimiter": {
          "anyOf": [
            {
              "$ref": "#/$defs/CitationGroupDelimiter"
            },
            {
              "type": "null"
            }
          ],
          "description": "Delimiter between grouped citation items."
        },
        "integral-name-memory": {
          "anyOf": [
            {
              "$ref": "#/$defs/IntegralNameMemoryConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Integral citation name-memory behavior."
        },
        "label-wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/LabelWrap"
            },
            {
              "type": "null"
            }
          ],
          "description": "Label wrap policy applied to citation labels."
        },
        "links": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinksConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Hyperlink configuration."
        },
        "localize": {
          "anyOf": [
            {
              "$ref": "#/$defs/Localize"
            },
            {
              "type": "null"
            }
          ],
          "description": "Localization settings."
        },
        "locators": {
          "anyOf": [
            {
              "$ref": "#/$defs/LocatorConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Locator rendering configuration."
        },
        "multilingual": {
          "anyOf": [
            {
              "$ref": "#/$defs/MultilingualConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Multilingual rendering defaults. Accepts a preset name (e.g., `\"apa\"`, `\"chicago\"`)\nor an explicit configuration block."
        },
        "notes": {
          "anyOf": [
            {
              "$ref": "#/$defs/NoteConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Document-level note marker placement and punctuation movement rules."
        },
        "org-abbreviation-memory": {
          "anyOf": [
            {
              "$ref": "#/$defs/OrgAbbreviationMemoryConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Organizational name abbreviation expansion policy."
        },
        "page-range-format": {
          "anyOf": [
            {
              "$ref": "#/$defs/PageRangeFormat"
            },
            {
              "type": "null"
            }
          ],
          "description": "Page range formatting (expanded, minimal, chicago)."
        },
        "processing": {
          "anyOf": [
            {
              "$ref": "#/$defs/Processing"
            },
            {
              "type": "null"
            }
          ],
          "description": "Processing mode (author-date, numeric, etc.)."
        },
        "punctuation-in-quote": {
          "description": "Whether to place periods/commas inside quotation marks.",
          "type": "boolean"
        },
        "strip-periods": {
          "description": "Strip trailing periods from terms, labels, and abbreviated dates.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "substitute": {
          "anyOf": [
            {
              "$ref": "#/$defs/SubstituteConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Substitution rules for missing data."
        },
        "titles": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitlesConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Title formatting defaults."
        },
        "volume-pages-delimiter": {
          "anyOf": [
            {
              "$ref": "#/$defs/DelimiterPunctuation"
            },
            {
              "type": "null"
            }
          ],
          "description": "Delimiter between volume/issue and pages for serial sources."
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "CitationSpec": {
      "description": "Citation specification.",
      "properties": {
        "collapse": {
          "anyOf": [
            {
              "$ref": "#/$defs/CitationCollapse"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional collapse behavior for adjacent multi-item citations."
        },
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "delimiter": {
          "description": "Delimiter between components within a single citation item (e.g., \", \" or \" \").\nDefaults to \", \".",
          "type": [
            "string",
            "null"
          ]
        },
        "ibid": {
          "anyOf": [
            {
              "$ref": "#/$defs/CitationSpec"
            },
            {
              "type": "null"
            }
          ],
          "description": "Configuration for ibid citations (ibid or ibid with locator).\nOverrides fields from the main citation spec when position is Ibid or IbidWithLocator.\nIf present, takes precedence over `subsequent` for these positions.\nAllows compact rendering like \"ibid.\" or \"ibid., p. 45\"."
        },
        "integral": {
          "anyOf": [
            {
              "$ref": "#/$defs/CitationSpec"
            },
            {
              "type": "null"
            }
          ],
          "description": "Configuration for integral (narrative) citations (e.g., \"Smith (2020)\").\nOverrides fields from the main citation spec when mode is Integral."
        },
        "locales": {
          "description": "Locale-specific template overrides checked before the default template.",
          "items": {
            "$ref": "#/$defs/LocalizedTemplateSpec"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "multi-cite-delimiter": {
          "description": "Delimiter between multiple citation items (e.g., \"; \").\nDefaults to \"; \".",
          "type": [
            "string",
            "null"
          ]
        },
        "non-integral": {
          "anyOf": [
            {
              "$ref": "#/$defs/CitationSpec"
            },
            {
              "type": "null"
            }
          ],
          "description": "Configuration for non-integral (parenthetical) citations (e.g., \"(Smith, 2020)\").\nOverrides fields from the main citation spec when mode is NonIntegral."
        },
        "note-start-text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/NoteStartTextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional text-case transform for standalone note-start citation output.\n\nThis is a style-owned rendering dimension layered on top of the\nexisting repeated-note state, not a new citation `Position`."
        },
        "options": {
          "anyOf": [
            {
              "$ref": "#/$defs/CitationOptions"
            },
            {
              "type": "null"
            }
          ],
          "description": "Citation-specific option overrides merged over the style config."
        },
        "prefix": {
          "description": "Prefix for the citation (use only when `wrap` doesn't suffice, e.g., \" (\" or \"[Ref \").",
          "type": [
            "string",
            "null"
          ]
        },
        "sort": {
          "anyOf": [
            {
              "$ref": "#/$defs/GroupSortEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional citation sorting specification."
        },
        "subsequent": {
          "anyOf": [
            {
              "$ref": "#/$defs/CitationSpec"
            },
            {
              "type": "null"
            }
          ],
          "description": "Configuration for subsequent citations.\nOverrides fields from the main citation spec when position is Subsequent.\nUseful for short-form citations in note-based styles or author-date styles\nthat show abbreviated citations after the first mention."
        },
        "suffix": {
          "description": "Suffix for the citation (use only when `wrap` doesn't suffice).",
          "type": [
            "string",
            "null"
          ]
        },
        "template": {
          "description": "Default template when no localized override is selected.",
          "items": {
            "$ref": "#/$defs/TemplateComponent"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "template-ref": {
          "anyOf": [
            {
              "$ref": "#/$defs/TemplateReference"
            },
            {
              "type": "null"
            }
          ],
          "description": "Reference to an embedded template preset or external template.\n\nIf both `template-ref` and `template` are present, `template` takes precedence."
        },
        "type-variants": {
          "additionalProperties": {
            "$ref": "#/$defs/TemplateVariant"
          },
          "description": "Type-specific template overrides for citations. When present, replaces\nthe default citation template for references of the specified types.\nType-variant lookup happens after mode (integral/non-integral) resolution.\nIf both the main spec and the active mode sub-spec have a `type-variants`\nentry for the same type, the mode-specific one wins.",
          "type": [
            "object",
            "null"
          ]
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/WrapConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Wrap the entire citation in punctuation. Preferred over prefix/suffix."
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "CitedStatus": {
      "description": "Citation status filter.",
      "oneOf": [
        {
          "const": "visible",
          "description": "Match only references cited in the document.",
          "type": "string"
        },
        {
          "const": "any",
          "description": "Match all references regardless of citation status.",
          "type": "string"
        }
      ]
    },
    "CompoundNumericConfig": {
      "description": "Configuration for compound numeric bibliography entries.\n\nGroups multiple references under a single citation number with sub-labels.\nUsed in chemistry journals (e.g., Angewandte Chemie).",
      "properties": {
        "collapse-subentries": {
          "default": false,
          "description": "Whether adjacent grouped sub-entries collapse in citations.\n\nWhen true, adjacent members from the same group may render as\n`1a,b` or `1a-c` instead of `1a,1b` or `1a,1b,1c`.",
          "type": "boolean"
        },
        "sub-delimiter": {
          "default": ", ",
          "description": "Delimiter between sub-items (default: \", \").",
          "type": "string"
        },
        "sub-label": {
          "$ref": "#/$defs/SubLabelStyle",
          "default": "alphabetic",
          "description": "Sub-label style: alphabetic (a, b, c) or numeric (1, 2, 3)."
        },
        "sub-label-suffix": {
          "default": ")",
          "description": "Suffix after sub-label (e.g., \")\" → \"a)\", \".\" → \"a.\").",
          "type": "string"
        },
        "subentry": {
          "default": true,
          "description": "Whether grouped item citations render sub-entry labels (`1a`, `1b`).\n\nWhen false, grouped item citations render the whole-group number (`1`).",
          "type": "boolean"
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "Config": {
      "description": "Top-level style configuration.",
      "properties": {
        "contributors": {
          "anyOf": [
            {
              "$ref": "#/$defs/ContributorConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Contributor formatting defaults. Accepts a preset name (e.g., \"apa\")\nor explicit configuration."
        },
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "dates": {
          "anyOf": [
            {
              "$ref": "#/$defs/DateConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Date formatting defaults. Accepts a preset name (e.g., \"long\")\nor explicit configuration."
        },
        "integral-name-memory": {
          "anyOf": [
            {
              "$ref": "#/$defs/IntegralNameMemoryConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Integral citation name-memory behavior."
        },
        "links": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinksConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Hyperlink configuration."
        },
        "locale-override": {
          "description": "Style-level locale override ID loaded from `locales/overrides/<id>.*`.\n\nThis patches the locale selected by `StyleInfo.default_locale` without\nduplicating the full base locale. Runtime loading is limited to the\nstyle-global config; nested citation or bibliography configs are ignored.",
          "type": [
            "string",
            "null"
          ]
        },
        "localize": {
          "anyOf": [
            {
              "$ref": "#/$defs/Localize"
            },
            {
              "type": "null"
            }
          ],
          "description": "Localization settings."
        },
        "locators": {
          "anyOf": [
            {
              "$ref": "#/$defs/LocatorConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Locator rendering configuration. Accepts a preset name (e.g., \"note\")\nor explicit configuration."
        },
        "multilingual": {
          "anyOf": [
            {
              "$ref": "#/$defs/MultilingualConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Multilingual rendering defaults. Accepts a preset name (e.g., `\"apa\"`, `\"chicago\"`)\nor an explicit configuration block."
        },
        "notes": {
          "anyOf": [
            {
              "$ref": "#/$defs/NoteConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Document-level note marker placement and punctuation movement rules."
        },
        "org-abbreviation-memory": {
          "anyOf": [
            {
              "$ref": "#/$defs/OrgAbbreviationMemoryConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Organizational name abbreviation expansion policy."
        },
        "page-range-format": {
          "anyOf": [
            {
              "$ref": "#/$defs/PageRangeFormat"
            },
            {
              "type": "null"
            }
          ],
          "description": "Page range formatting (expanded, minimal, chicago)."
        },
        "processing": {
          "anyOf": [
            {
              "$ref": "#/$defs/Processing"
            },
            {
              "type": "null"
            }
          ],
          "description": "Processing mode (author-date, numeric, etc.)."
        },
        "punctuation-in-quote": {
          "description": "Whether to place periods/commas inside quotation marks.\ntrue = American style (\"text.\"), false = British style (\"text\".)\nDefaults to false; en-US locale typically sets this to true.",
          "type": "boolean"
        },
        "strip-periods": {
          "description": "Strip trailing periods from terms, labels, and abbreviated dates.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "substitute": {
          "anyOf": [
            {
              "$ref": "#/$defs/SubstituteConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Substitution rules for missing data."
        },
        "titles": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitlesConfigEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Title formatting defaults. Accepts a preset name (e.g., \"apa\")\nor explicit configuration."
        },
        "volume-pages-delimiter": {
          "anyOf": [
            {
              "$ref": "#/$defs/DelimiterPunctuation"
            },
            {
              "type": "null"
            }
          ],
          "description": "Delimiter between volume/issue and pages for serial sources.\nProcessor adds trailing space when rendering.\nExamples: Comma (APA \", \"), Colon (Chicago \": \")."
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "ContributorConfig": {
      "description": "Contributor formatting configuration.",
      "properties": {
        "and": {
          "anyOf": [
            {
              "$ref": "#/$defs/AndOptions"
            },
            {
              "type": "null"
            }
          ],
          "description": "Conjunction between last two contributors."
        },
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "delimiter": {
          "description": "The delimiter between contributors. Defaults to `\", \"` if not specified.\n`None` means \"not configured at this level\" and will not override an inherited value.",
          "type": [
            "string",
            "null"
          ]
        },
        "delimiter-precedes-et-al": {
          "anyOf": [
            {
              "$ref": "#/$defs/DelimiterPrecedesLast"
            },
            {
              "type": "null"
            }
          ],
          "description": "When to include delimiter before \"et al.\"."
        },
        "delimiter-precedes-last": {
          "anyOf": [
            {
              "$ref": "#/$defs/DelimiterPrecedesLast"
            },
            {
              "type": "null"
            }
          ],
          "description": "When to include delimiter before the last contributor."
        },
        "demote-non-dropping-particle": {
          "anyOf": [
            {
              "$ref": "#/$defs/DemoteNonDroppingParticle"
            },
            {
              "type": "null"
            }
          ],
          "description": "Handling of non-dropping particles (e.g., \"van\" in \"van Gogh\")."
        },
        "display-as-sort": {
          "anyOf": [
            {
              "$ref": "#/$defs/DisplayAsSort"
            },
            {
              "type": "null"
            }
          ],
          "description": "When to display a contributor's name in sort order."
        },
        "initialize-with": {
          "description": "String to append after initialized given names (e.g., \". \" for \"J. Smith\").\nIf None, full given names are used (e.g., \"John Smith\").",
          "type": [
            "string",
            "null"
          ]
        },
        "initialize-with-hyphen": {
          "description": "Whether to include a hyphen when initializing names (e.g., \"J.-P. Sartre\").",
          "type": [
            "boolean",
            "null"
          ]
        },
        "name-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "How to render given names. See `NameForm` for variants.\nPer-scope overrides (per-mode, per-position) are expressed by setting\nthis field in the appropriate scope's contributor config block."
        },
        "role": {
          "anyOf": [
            {
              "$ref": "#/$defs/RoleOptionsEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "When and how to display contributor roles. Accepts a preset name\n(e.g., \"short-suffix\") or explicit configuration."
        },
        "shorten": {
          "anyOf": [
            {
              "$ref": "#/$defs/ShortenListOptions"
            },
            {
              "type": "null"
            }
          ],
          "description": "Shorten the list of contributors (et al. handling)."
        },
        "sort-separator": {
          "description": "Delimiter between family and given name when inverted (e.g., `\", \"` → \"Smith, John\").\nDefaults to `\", \"` in the engine when not specified.\n`None` means \"not configured at this level\" and will not override an inherited value.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "ContributorConfigEntry": {
      "anyOf": [
        {
          "$ref": "#/$defs/ContributorPreset",
          "description": "A named preset (e.g., \"apa\", \"chicago\", \"vancouver\", \"springer\")."
        },
        {
          "$ref": "#/$defs/ContributorConfig",
          "description": "Explicit contributor configuration."
        }
      ],
      "description": "Contributor config: either a preset name or explicit configuration.\n\nAllows styles to write `contributors: apa` as shorthand, or provide\nfull explicit configuration with field-level overrides."
    },
    "ContributorForm": {
      "description": "How to render contributor names.",
      "enum": [
        "long",
        "short",
        "family-only",
        "verb",
        "verb-short"
      ],
      "type": "string"
    },
    "ContributorPreset": {
      "description": "Contributor formatting presets.\n\nEach preset encodes the contributor formatting conventions for a major citation\nstyle or style family. Use doc comments to describe the visual behavior so\nstyle authors can choose the right preset without knowing style guide names.",
      "oneOf": [
        {
          "const": "apa",
          "description": "First author family-first, \"&\" symbol, et al. after 20 authors,\ninitials with period-space, comma before \"&\".\nExample: \"Smith, J. D., & Jones, M. K.\"",
          "type": "string"
        },
        {
          "const": "chicago",
          "description": "First author family-first, \"and\" text, contextual serial comma,\nfull given names (no initials).\nExample: \"Smith, John D., and Mary K. Jones\"",
          "type": "string"
        },
        {
          "const": "vancouver",
          "description": "All authors family-first, no conjunction, compact initials (no\nperiod/space), et al. after 6 of 7+.\nExample: \"Smith JD, Jones MK, Brown AB\"",
          "type": "string"
        },
        {
          "const": "ieee",
          "description": "Given-first format, \"and\" text, initials with period-space,\ncomma before \"and\".\nExample: \"J. D. Smith, M. K. Jones, and A. B. Brown\"",
          "type": "string"
        },
        {
          "const": "harvard",
          "description": "All authors family-first, \"and\" text, compact initials (period,\nno space), comma before \"and\".\nExample: \"Smith, J.D., Jones, M.K., and Brown, A.B.\"",
          "type": "string"
        },
        {
          "const": "springer",
          "description": "All authors family-first, no conjunction, compact initials (no\nperiod/space), space sort-separator, et al. after 3 of 5+.\nExample: \"Smith JD, Jones MK, Brown AB\"",
          "type": "string"
        },
        {
          "const": "numeric-compact",
          "description": "Numeric compact author list for journal-heavy corpora:\nall family-first, no conjunction, sort-only particle demotion,\nspace sort-separator, et al. after 6 of 7+.",
          "type": "string"
        },
        {
          "const": "numeric-medium",
          "description": "Numeric medium author list variant:\nsame as `numeric-compact`, but et al. after 3 of 4+.",
          "type": "string"
        },
        {
          "const": "numeric-tight",
          "description": "Numeric tight: all family-first, no initials, et al. after 3 of 7+.\nTighter than `numeric-compact` (use-first: 3 vs 6).\nExample: \"Smith J, Jones M, Brown A, et al.\"",
          "type": "string"
        },
        {
          "const": "numeric-large",
          "description": "Numeric large: all family-first, no initials, et al. after 10 of 11+.\nFor biomedical journals that show nearly all authors.\nExample: \"Smith J, Jones M, Brown A, [10 authors], et al.\"",
          "type": "string"
        },
        {
          "const": "numeric-all-authors",
          "description": "Numeric all-authors: all family-first, no conjunction, compact initials,\nno list shortening, particle demotion disabled.\nExample: \"Smith JD, Jones MK, Brown AB\"",
          "type": "string"
        },
        {
          "const": "numeric-given-dot",
          "description": "Numeric given-first with period-only initials (no space), no conjunction,\nand comma delimiters.\nExample: \"J.D. Smith, M.K. Jones, A.B. Brown\"",
          "type": "string"
        },
        {
          "const": "annual-reviews",
          "description": "Annual Reviews style: all family-first, no initials, et al. after 5 of 7+,\nparticle demotion never. Distinguishable by \"never\" demote policy.\nExample: \"van der Berg J, Smith M, Jones A, Brown B, White C, et al.\"",
          "type": "string"
        },
        {
          "const": "math-phys",
          "description": "Math/physics author-date: all family-first, period initial (no trailing\nspace), comma sort-separator, no conjunction. Used across Springer\nmath/physics and related author-date journals.\nExample: \"Smith, J., Jones, M., Brown, A.\"",
          "type": "string"
        },
        {
          "const": "soc-sci-first",
          "description": "Social science first-author inversion: first author family-first,\nremaining authors given-first, period-space initials, comma\nsort-separator, no conjunction. Common in sociology and civil engineering.\nExample: \"Smith, J. D., M. K. Jones, A. B. Brown\"",
          "type": "string"
        },
        {
          "const": "physics-numeric",
          "description": "Physics numeric given-first: no author inversion, period-space initial,\nno conjunction, sort-only particle demotion. Used by numeric physics\njournals like APS.\nExample: \"J. Smith, M. Jones, A. Brown\"",
          "type": "string"
        }
      ]
    },
    "ContributorRole": {
      "description": "Contributor roles.",
      "oneOf": [
        {
          "enum": [
            "author",
            "chair",
            "editor",
            "translator",
            "director",
            "publisher",
            "recipient",
            "interviewer",
            "interviewee",
            "guest",
            "inventor",
            "counsel",
            "composer",
            "collection-editor",
            "container-author",
            "editorial-director",
            "textual-editor",
            "illustrator",
            "original-author",
            "reviewed-author"
          ],
          "type": "string"
        }
      ]
    },
    "DateConfig": {
      "description": "Date formatting configuration.",
      "properties": {
        "approximation-marker": {
          "description": "Marker for approximate dates (e.g., \"ca. \" or \"~\"). None suppresses display.",
          "type": [
            "string",
            "null"
          ]
        },
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "era-labels": {
          "$ref": "#/$defs/EraLabels",
          "default": "default",
          "description": "Era label profile controlling which era suffixes are shown."
        },
        "month": {
          "$ref": "#/$defs/MonthFormat"
        },
        "negative-unspecified-years": {
          "$ref": "#/$defs/NegativeUnspecifiedYears",
          "default": "range",
          "description": "How negative EDTF years with unspecified digits are rendered."
        },
        "open-range-marker": {
          "description": "Marker for open-ended ranges (e.g., \"–present\"). None uses locale default.",
          "type": [
            "string",
            "null"
          ]
        },
        "range-delimiter": {
          "default": "–",
          "description": "Delimiter for date ranges (default: en-dash \"–\").",
          "type": "string"
        },
        "show-seconds": {
          "default": false,
          "description": "Whether to include seconds in time display (default: false).",
          "type": "boolean"
        },
        "show-timezone": {
          "default": false,
          "description": "Whether to include timezone in time display (default: false).",
          "type": "boolean"
        },
        "time-format": {
          "anyOf": [
            {
              "$ref": "#/$defs/TimeFormat"
            },
            {
              "type": "null"
            }
          ],
          "description": "Time display format. None suppresses time rendering."
        },
        "uncertainty-marker": {
          "description": "Marker for uncertain dates (e.g., \"?\" or \"uncertain\"). None suppresses display.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "month"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "DateConfigEntry": {
      "anyOf": [
        {
          "$ref": "#/$defs/DatePreset",
          "description": "A named preset (e.g., \"long\", \"short\", \"numeric\", \"iso\")."
        },
        {
          "$ref": "#/$defs/DateConfig",
          "description": "Explicit date configuration."
        }
      ],
      "description": "Date config: either a preset name or explicit configuration.\n\nAllows styles to write `dates: long` as shorthand, or provide\nfull explicit configuration with field-level overrides."
    },
    "DateForm": {
      "description": "Date rendering forms.",
      "oneOf": [
        {
          "enum": [
            "year",
            "year-month",
            "full",
            "month-day",
            "year-month-day",
            "day-month-abbr-year"
          ],
          "type": "string"
        },
        {
          "const": "month-abbr-day-year",
          "description": "Abbreviated month + day + year in US order: \"Jan 15, 2024\".",
          "type": "string"
        }
      ]
    },
    "DatePosition": {
      "description": "Placement of issued dates inside bibliography entries.",
      "oneOf": [
        {
          "const": "after-author",
          "description": "Immediately after the contributor component.",
          "type": "string"
        },
        {
          "const": "after-title",
          "description": "Immediately after the title component.",
          "type": "string"
        },
        {
          "const": "terminal",
          "description": "At the end of the entry.",
          "type": "string"
        }
      ]
    },
    "DatePreset": {
      "description": "Date formatting presets.\n\nEach preset defines how dates are displayed in citations and bibliographies,\nincluding month format, EDTF uncertainty/approximation markers, and range\ndelimiters.",
      "oneOf": [
        {
          "const": "long",
          "description": "Long month names, EDTF markers, en-dash ranges.\nExample: \"January 15, 2024\", \"ca. 2024\", \"2024?\"",
          "type": "string"
        },
        {
          "const": "short",
          "description": "Short month names, EDTF markers, en-dash ranges.\nExample: \"Jan 15, 2024\"",
          "type": "string"
        },
        {
          "const": "numeric",
          "description": "Numeric months, EDTF markers, en-dash ranges.\nExample: \"1/15/2024\"",
          "type": "string"
        },
        {
          "const": "iso",
          "description": "ISO 8601 numeric format, no EDTF markers.\nExample: \"2024-01-15\"",
          "type": "string"
        }
      ]
    },
    "DateVariable": {
      "description": "Date variables.",
      "enum": [
        "issued",
        "accessed",
        "original-published",
        "submitted",
        "event-date"
      ],
      "type": "string"
    },
    "DelimiterPrecedesLast": {
      "description": "When to use delimiter before last contributor.",
      "enum": [
        "after-inverted-name",
        "always",
        "never",
        "contextual"
      ],
      "type": "string"
    },
    "DelimiterPunctuation": {
      "description": "Delimiter punctuation options.",
      "type": "string"
    },
    "DemoteNonDroppingParticle": {
      "description": "Options for demoting non-dropping particles.",
      "enum": [
        "never",
        "sort-only",
        "display-and-sort"
      ],
      "type": "string"
    },
    "Disambiguation": {
      "description": "Disambiguation settings.\n\nControls how ambiguous citations are disambiguated in the output.",
      "properties": {
        "add-givenname": {
          "default": false,
          "description": "Whether to add given names to disambiguate similarly-named authors.",
          "type": "boolean"
        },
        "givenname-rule": {
          "$ref": "#/$defs/GivennameRule",
          "default": "by-cite",
          "description": "Which author positions receive given-name expansion."
        },
        "names": {
          "description": "Whether to attempt disambiguation by expanding author names.",
          "type": "boolean"
        },
        "year-suffix": {
          "description": "Whether to append year suffixes (a, b, c, ...) for multiple works from the same author-year.",
          "type": "boolean"
        }
      },
      "required": [
        "names",
        "year-suffix"
      ],
      "type": "object"
    },
    "DisambiguationScope": {
      "description": "Scope for disambiguation (e.g., year suffix assignment).",
      "oneOf": [
        {
          "const": "globally",
          "description": "Disambiguate across all items in the bibliography.",
          "type": "string"
        },
        {
          "const": "locally",
          "description": "Disambiguate only within the current group.",
          "type": "string"
        }
      ]
    },
    "DisplayAsSort": {
      "description": "When to display names in sort order (family-first).",
      "enum": [
        "all",
        "first",
        "none"
      ],
      "type": "string"
    },
    "EraLabels": {
      "description": "Era label profile for date rendering.",
      "oneOf": [
        {
          "const": "default",
          "description": "Preserve current behavior: negative years use locale `before-era`, positive years unlabeled.",
          "type": "string"
        },
        {
          "const": "bc-ad",
          "description": "Negative years use locale `bc`, positive years use locale `ad`.",
          "type": "string"
        },
        {
          "const": "bce-ce",
          "description": "Negative years use locale `bce`, positive years use locale `ce`.",
          "type": "string"
        }
      ]
    },
    "FieldMatcher": {
      "anyOf": [
        {
          "description": "Match exact field value.",
          "type": "string"
        },
        {
          "description": "Match any of multiple values.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      ],
      "description": "Field value matcher."
    },
    "GeneralTerm": {
      "description": "A list of general terms for citation formatting.\n\nThese are the standard terms that appear in bibliographies and citations,\nincluding prepositions (in, at, from, by), punctuation terms (and, et al),\ndate-related terms (accessed, no-date, circa), locator terms (page, chapter, volume),\nand special phrases (ibid, forthcoming, available-at).",
      "oneOf": [
        {
          "const": "in",
          "description": "The preposition \"in\" (e.g., \"in Smith, 2020\").",
          "type": "string"
        },
        {
          "const": "accessed",
          "description": "The term used for access dates (e.g., \"accessed May 1\").",
          "type": "string"
        },
        {
          "const": "retrieved",
          "description": "The term used for retrieval statements (e.g., \"retrieved from URL\").",
          "type": "string"
        },
        {
          "const": "at",
          "description": "The preposition \"at\" (e.g., \"at the conference\").",
          "type": "string"
        },
        {
          "const": "from",
          "description": "The preposition \"from\" (e.g., \"from the publisher\").",
          "type": "string"
        },
        {
          "const": "of",
          "description": "The preposition \"of\" (e.g., \"special issue of\").",
          "type": "string"
        },
        {
          "const": "to",
          "description": "The preposition \"to\" (e.g., \"from x to y\").",
          "type": "string"
        },
        {
          "const": "by",
          "description": "The preposition \"by\" (e.g., \"by John Smith\").",
          "type": "string"
        },
        {
          "const": "no-date",
          "description": "The term used when no date is available (e.g., \"n.d.\").",
          "type": "string"
        },
        {
          "const": "anonymous",
          "description": "The term used for anonymous authorship (e.g., \"anonymous\").",
          "type": "string"
        },
        {
          "const": "circa",
          "description": "The term used for approximate dates (e.g., \"circa\").",
          "type": "string"
        },
        {
          "const": "available-at",
          "description": "The phrase used for availability statements (e.g., \"available at URL\").",
          "type": "string"
        },
        {
          "const": "ibid",
          "description": "The term used for immediately repeated citations (e.g., \"ibid.\").",
          "type": "string"
        },
        {
          "const": "and",
          "description": "The conjunction \"and\" (e.g., \"Smith and Jones\").",
          "type": "string"
        },
        {
          "const": "et-al",
          "description": "The abbreviation for omitted additional names (e.g., \"et al.\").",
          "type": "string"
        },
        {
          "const": "and-others",
          "description": "The phrase \"and others\" (generic use).",
          "type": "string"
        },
        {
          "const": "forthcoming",
          "description": "The term used for forthcoming works (e.g., \"forthcoming\").",
          "type": "string"
        },
        {
          "const": "online",
          "description": "The term used for online resources (e.g., \"online\").",
          "type": "string"
        },
        {
          "const": "here",
          "description": "The adverb \"here\".",
          "type": "string"
        },
        {
          "const": "deposited",
          "description": "The term used for deposited materials.",
          "type": "string"
        },
        {
          "const": "review-of",
          "description": "The phrase used to introduce reviewed works (e.g., \"review of\").",
          "type": "string"
        },
        {
          "const": "original-work-published",
          "description": "The phrase used for original publication references (e.g., \"originally published\").",
          "type": "string"
        },
        {
          "const": "patent",
          "description": "The term used for patents (e.g., \"patent\").",
          "type": "string"
        },
        {
          "const": "volume",
          "description": "The general term for volume locators (e.g., \"volume\", \"vol.\").",
          "type": "string"
        },
        {
          "const": "issue",
          "description": "The general term for issue locators (e.g., \"issue\", \"no.\").",
          "type": "string"
        },
        {
          "const": "page",
          "description": "The general term for page locators (e.g., \"page\", \"p.\", \"pp.\").",
          "type": "string"
        },
        {
          "const": "chapter",
          "description": "The general term for chapter locators (e.g., \"chapter\", \"ch.\").",
          "type": "string"
        },
        {
          "const": "edition",
          "description": "The general term for editions (e.g., \"edition\", \"ed.\").",
          "type": "string"
        },
        {
          "const": "section",
          "description": "The general term for section locators (e.g., \"section\", \"§\").",
          "type": "string"
        },
        {
          "const": "personal-communication",
          "description": "The label for personal communications (e.g., \"personal communication\").",
          "type": "string"
        }
      ]
    },
    "GivennameRule": {
      "description": "Controls which author positions receive given-name expansion during disambiguation.\n\nMaps to CSL's `givenname-disambiguation-rule` attribute on `<citation>`.\nThe engine collapses these to two scopes: `PrimaryName` and\n`PrimaryNameWithInitials` expand only the first (primary) author; all other\nvalues expand all positions. Initials vs full form is always driven by the\ncontributor config's `initialize-with` / `name-form` settings.",
      "oneOf": [
        {
          "const": "by-cite",
          "description": "Disambiguate per-cite with a minimal subset of names (CSL 1.0.1 default).\nEngine behaviour: expand all positions (per-cite minimal-subset deferred).",
          "type": "string"
        },
        {
          "const": "all-names",
          "description": "Expand given names for all name positions.",
          "type": "string"
        },
        {
          "const": "all-names-with-initials",
          "description": "Expand given names (initials form) for all name positions.",
          "type": "string"
        },
        {
          "const": "primary-name",
          "description": "Expand given name of the first (primary) author only.",
          "type": "string"
        },
        {
          "const": "primary-name-with-initials",
          "description": "Expand given name (initials form) of the first (primary) author only.",
          "type": "string"
        }
      ]
    },
    "GrammaticalGender": {
      "description": "Grammatical gender used for locale agreement and term selection.",
      "oneOf": [
        {
          "const": "masculine",
          "description": "Masculine grammatical gender.",
          "type": "string"
        },
        {
          "const": "feminine",
          "description": "Feminine grammatical gender.",
          "type": "string"
        },
        {
          "const": "neuter",
          "description": "Neuter grammatical gender.",
          "type": "string"
        },
        {
          "const": "common",
          "description": "Common or shared grammatical gender.",
          "type": "string"
        }
      ]
    },
    "Group": {
      "description": "Grouping configuration for bibliography.\n\nSpecifies how bibliography entries should be grouped in the output.",
      "properties": {
        "template": {
          "description": "Sort keys used to define group boundaries (e.g., [Author, Year]).",
          "items": {
            "$ref": "#/$defs/SortKey"
          },
          "type": "array"
        }
      },
      "required": [
        "template"
      ],
      "type": "object"
    },
    "GroupHeading": {
      "anyOf": [
        {
          "description": "Fixed literal heading text.",
          "properties": {
            "literal": {
              "description": "Literal heading value.",
              "type": "string"
            }
          },
          "required": [
            "literal"
          ],
          "type": "object"
        },
        {
          "description": "Locale general term key resolved at render time.",
          "properties": {
            "form": {
              "anyOf": [
                {
                  "$ref": "#/$defs/TermForm"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional term form (defaults to long)."
            },
            "term": {
              "$ref": "#/$defs/GeneralTerm",
              "description": "Locale general term key."
            }
          },
          "required": [
            "term"
          ],
          "type": "object"
        },
        {
          "description": "Locale-indexed heading map.",
          "properties": {
            "localized": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Map keyed by BCP 47 locale identifiers or language tags.",
              "type": "object"
            }
          },
          "required": [
            "localized"
          ],
          "type": "object"
        }
      ],
      "description": "Localizable heading source for bibliography groups."
    },
    "GroupSelector": {
      "description": "Selector predicate for matching references to groups.\n\nAll specified conditions must match (AND logic).\nUse the `not` field for negation-based fallback groups.",
      "properties": {
        "cited": {
          "anyOf": [
            {
              "$ref": "#/$defs/CitedStatus"
            },
            {
              "type": "null"
            }
          ],
          "description": "Match references by citation status."
        },
        "field": {
          "additionalProperties": {
            "$ref": "#/$defs/FieldMatcher"
          },
          "description": "Match references by field values (e.g., language, keywords).",
          "type": [
            "object",
            "null"
          ]
        },
        "not": {
          "anyOf": [
            {
              "$ref": "#/$defs/GroupSelector"
            },
            {
              "type": "null"
            }
          ],
          "description": "Negation for fallback groups.\nMatches references that do NOT match the nested selector."
        },
        "type": {
          "anyOf": [
            {
              "$ref": "#/$defs/TypeSelector"
            },
            {
              "type": "null"
            }
          ],
          "description": "Match references by type."
        }
      },
      "type": "object"
    },
    "GroupSort": {
      "description": "Per-group sorting specification.\n\nSorting follows a template of sort keys, applied in order.\nThe first key is the primary sort, second is the tiebreaker, etc.",
      "properties": {
        "template": {
          "description": "Ordered list of sort keys to apply.",
          "items": {
            "$ref": "#/$defs/GroupSortKey"
          },
          "type": "array"
        }
      },
      "required": [
        "template"
      ],
      "type": "object"
    },
    "GroupSortEntry": {
      "anyOf": [
        {
          "$ref": "#/$defs/SortPreset",
          "description": "A named sort preset (e.g., \"author-date-title\")."
        },
        {
          "$ref": "#/$defs/GroupSort",
          "description": "Explicit sort configuration."
        }
      ],
      "description": "Citation sort configuration: either a preset name or explicit configuration."
    },
    "GroupSortKey": {
      "description": "A single sort key in a group sorting template.",
      "properties": {
        "ascending": {
          "default": true,
          "description": "Sort order direction.",
          "type": "boolean"
        },
        "key": {
          "$ref": "#/$defs/SortKey2",
          "description": "The field or variable to sort by."
        },
        "order": {
          "description": "For type-based ordering: explicit type sequence.\n\nExample: `[\"legal-case\", \"statute\", \"treaty\"]` for Bluebook hierarchy.\nItems appear in this order regardless of alphabetical content.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "sort-order": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameSortOrder"
            },
            {
              "type": "null"
            }
          ],
          "description": "For name-based sorting: culturally appropriate name order.\n\nExample: `given-family` for Vietnamese, `family-given` for Western."
        }
      },
      "required": [
        "key"
      ],
      "type": "object"
    },
    "IntegralNameContexts": {
      "description": "Which document contexts participate in integral citation name memory.",
      "oneOf": [
        {
          "const": "body-only",
          "description": "Only body-text integral citations participate.",
          "type": "string"
        },
        {
          "const": "body-and-notes",
          "description": "Body text and note citations both participate.",
          "type": "string"
        }
      ]
    },
    "IntegralNameMemoryConfig": {
      "description": "Integral citation name-memory policy.\n\nThe presence of this block enables full-then-short name memory for narrative\n(integral) citations. Absence disables it — there is no on/off field.",
      "properties": {
        "contexts": {
          "anyOf": [
            {
              "$ref": "#/$defs/IntegralNameContexts"
            },
            {
              "type": "null"
            }
          ],
          "description": "Which document contexts participate in name-memory tracking."
        },
        "scope": {
          "anyOf": [
            {
              "$ref": "#/$defs/IntegralNameScope"
            },
            {
              "type": "null"
            }
          ],
          "description": "Where the first-mention memory resets."
        },
        "subsequent-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/SubsequentNameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "The contributor form to use after the first mention in scope."
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "IntegralNameScope": {
      "description": "The scope where integral citation name-memory resets.",
      "oneOf": [
        {
          "const": "document",
          "description": "Keep one name-memory scope for the whole document.",
          "type": "string"
        },
        {
          "const": "chapter",
          "description": "Reset name memory at chapter boundaries.",
          "type": "string"
        },
        {
          "const": "section",
          "description": "Reset name memory at section boundaries.",
          "type": "string"
        }
      ]
    },
    "LabelConfig": {
      "description": "Configuration for label citation mode.",
      "properties": {
        "et-al-marker": {
          "description": "Suffix appended when truncated. Alpha/Ams default: \"+\", Din default: \"\".",
          "type": [
            "string",
            "null"
          ]
        },
        "et-al-min": {
          "description": "Max authors before truncation. Alpha/Ams default: 4, Din default: 3.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "et-al-names": {
          "description": "Names shown when truncated (et-al). Alpha default: 3, Ams default: 4.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "multi-author-chars": {
          "description": "Chars per author family name when 2+ authors. Preset default: 1.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "preset": {
          "$ref": "#/$defs/LabelPreset",
          "default": "alpha",
          "description": "Preset that determines default parameters."
        },
        "single-author-chars": {
          "description": "Chars taken from single author's family name. Preset default: 3 (Alpha/Ams), 4 (Din).",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "year-digits": {
          "description": "Year digits: 2 or 4. Preset default: 2.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "LabelForm": {
      "description": "Label rendering forms.",
      "enum": [
        "long",
        "short",
        "symbol"
      ],
      "type": "string"
    },
    "LabelForm2": {
      "description": "How a locator label is displayed.",
      "oneOf": [
        {
          "const": "none",
          "description": "No label, bare value: \"33\"",
          "type": "string"
        },
        {
          "const": "short",
          "description": "Short form: \"p. 33\"",
          "type": "string"
        },
        {
          "const": "long",
          "description": "Long form: \"page 33\"",
          "type": "string"
        },
        {
          "const": "symbol",
          "description": "Symbol form if available in locale",
          "type": "string"
        }
      ]
    },
    "LabelPlacement": {
      "description": "Label placement relative to contributor names.",
      "enum": [
        "prefix",
        "suffix"
      ],
      "type": "string"
    },
    "LabelPreset": {
      "description": "Label style preset conventions.",
      "oneOf": [
        {
          "const": "alpha",
          "description": "biblatex alphabetic / BibTeX alpha.bst: up to 4 authors, \"+\" marker, 2-digit year.",
          "type": "string"
        },
        {
          "const": "din",
          "description": "DIN 1505-2: up to 3 authors, no et-al marker, 2-digit year.",
          "type": "string"
        },
        {
          "const": "ams",
          "description": "American Mathematical Society: same label-generation algorithm as Alpha.",
          "type": "string"
        }
      ]
    },
    "LabelRepeat": {
      "description": "Whether labels appear on every segment, only the first, or none.",
      "oneOf": [
        {
          "const": "all",
          "description": "Label on every segment",
          "type": "string"
        },
        {
          "const": "first",
          "description": "Label only on the first segment",
          "type": "string"
        },
        {
          "const": "none",
          "description": "No labels",
          "type": "string"
        }
      ]
    },
    "LabelWrap": {
      "description": "Wrapper punctuation supported by citation and bibliography label options.",
      "oneOf": [
        {
          "const": "none",
          "description": "No outer punctuation.",
          "type": "string"
        },
        {
          "const": "parentheses",
          "description": "Parentheses.",
          "type": "string"
        },
        {
          "const": "brackets",
          "description": "Brackets.",
          "type": "string"
        },
        {
          "const": "superscript",
          "description": "Superscript-style numeric labels.",
          "type": "string"
        }
      ]
    },
    "LinkAnchor": {
      "description": "Link anchor options.",
      "oneOf": [
        {
          "const": "title",
          "description": "Link the title component.",
          "type": "string"
        },
        {
          "const": "url",
          "description": "Link the URL component itself.",
          "type": "string"
        },
        {
          "const": "doi",
          "description": "Link the DOI component itself.",
          "type": "string"
        },
        {
          "const": "component",
          "description": "Link the specific component this config is attached to.",
          "type": "string"
        },
        {
          "const": "entry",
          "description": "Link the entire bibliography entry.",
          "type": "string"
        }
      ]
    },
    "LinkTarget": {
      "description": "Link target options.",
      "enum": [
        "url",
        "doi",
        "url-or-doi",
        "pubmed",
        "pmcid"
      ],
      "type": "string"
    },
    "LinksConfig": {
      "description": "Structured link options.",
      "properties": {
        "anchor": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinkAnchor"
            },
            {
              "type": "null"
            }
          ],
          "description": "What text should be hyperlinked (title, url, etc.)."
        },
        "doi": {
          "description": "Link value to the item's DOI.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "target": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinkTarget"
            },
            {
              "type": "null"
            }
          ],
          "description": "The target for the link (url, doi, etc.)."
        },
        "url": {
          "description": "Link value to the item's URL.",
          "type": [
            "boolean",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "Localize": {
      "description": "Localization scope settings.",
      "properties": {
        "scope": {
          "$ref": "#/$defs/Scope"
        }
      },
      "required": [
        "scope"
      ],
      "type": "object"
    },
    "LocalizedTemplateSpec": {
      "description": "Locale-scoped template override with optional fallback behavior.",
      "properties": {
        "default": {
          "description": "Whether this override is the fallback when no locale matches.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "locale": {
          "description": "Language tags that should select this template override.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "template": {
          "description": "Template used when this localized override is selected.",
          "items": {
            "$ref": "#/$defs/TemplateComponent"
          },
          "type": "array"
        }
      },
      "required": [
        "template"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "LocatorConfig": {
      "description": "Top-level locator rendering configuration.",
      "properties": {
        "default-label-form": {
          "$ref": "#/$defs/LabelForm2",
          "default": "short",
          "description": "Default label form for all locator kinds (default: Short)."
        },
        "fallback-delimiter": {
          "default": ", ",
          "description": "Fallback delimiter for unmatched compound locators (default: \", \").",
          "type": "string"
        },
        "kinds": {
          "additionalProperties": {
            "$ref": "#/$defs/LocatorKindConfig"
          },
          "default": {},
          "description": "Per-kind configuration overrides.",
          "type": "object"
        },
        "patterns": {
          "default": [],
          "description": "Patterns for compound locators and type-specific rendering.",
          "items": {
            "$ref": "#/$defs/LocatorPattern"
          },
          "type": "array"
        },
        "range-format": {
          "$ref": "#/$defs/PageRangeFormat",
          "default": "expanded",
          "description": "Range format for all locator kinds (default: Expanded)."
        },
        "strip-label-periods": {
          "description": "Strip trailing periods from labels globally (e.g., \"p.\" → \"p\").",
          "type": [
            "boolean",
            "null"
          ]
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "LocatorConfigEntry": {
      "anyOf": [
        {
          "$ref": "#/$defs/LocatorPreset",
          "description": "A preset name."
        },
        {
          "$ref": "#/$defs/LocatorConfig",
          "description": "Explicit configuration."
        }
      ],
      "description": "Preset-or-explicit entry — same pattern as DateConfigEntry."
    },
    "LocatorKindConfig": {
      "description": "Per-locator-kind configuration overrides.",
      "properties": {
        "label-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/LabelForm2"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override the default label form for this locator kind."
        },
        "range-format": {
          "anyOf": [
            {
              "$ref": "#/$defs/PageRangeFormat"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override the global range format for this locator kind."
        },
        "strip-label-periods": {
          "description": "Strip trailing periods from labels (e.g., \"p.\" → \"p\").",
          "type": [
            "boolean",
            "null"
          ]
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "LocatorPattern": {
      "description": "A pattern matching a specific combination of LocatorType values.\n\nPatterns are tested in declaration order; first match wins.",
      "properties": {
        "delimiter": {
          "default": ", ",
          "description": "Delimiter between segments (default: \", \").",
          "type": "string"
        },
        "kinds": {
          "description": "The set of LocatorType values this pattern matches (order-insensitive).",
          "items": {
            "$ref": "#/$defs/LocatorType"
          },
          "type": "array"
        },
        "label-repeat": {
          "$ref": "#/$defs/LabelRepeat",
          "default": "all",
          "description": "Whether labels appear on every segment, only the first, or none."
        },
        "order": {
          "description": "Rendering order of segments when pattern matches.",
          "items": {
            "$ref": "#/$defs/LocatorType"
          },
          "type": "array"
        },
        "type-class": {
          "anyOf": [
            {
              "$ref": "#/$defs/TypeClass"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional gate on reference type class."
        }
      },
      "required": [
        "kinds",
        "order"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "LocatorPreset": {
      "description": "Named presets for common locator configurations.",
      "oneOf": [
        {
          "const": "note",
          "description": "Note style: bare page numbers, short labels for other kinds.",
          "type": "string"
        },
        {
          "const": "author-date",
          "description": "Author-date / numbered: short labels for all kinds.",
          "type": "string"
        }
      ]
    },
    "LocatorType": {
      "description": "Known locator label keyword or custom kebab-case identifier.",
      "type": "string"
    },
    "MonthFormat": {
      "description": "Month display format.",
      "enum": [
        "long",
        "short",
        "numeric"
      ],
      "type": "string"
    },
    "MultilingualConfig": {
      "description": "Multilingual rendering options.",
      "properties": {
        "name-mode": {
          "anyOf": [
            {
              "$ref": "#/$defs/MultilingualMode"
            },
            {
              "type": "null"
            }
          ],
          "description": "Preferred rendering mode for names."
        },
        "preferred-script": {
          "description": "Preferred script for transliterations (e.g., \"Latn\").",
          "type": [
            "string",
            "null"
          ]
        },
        "preferred-transliteration": {
          "description": "Ordered priority list of BCP 47 transliteration tags (e.g. `[\"ja-Latn-hepburn\", \"ja-Latn\"]`).\nTakes precedence over `preferred_script` when resolving transliterations.",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "scripts": {
          "additionalProperties": {
            "$ref": "#/$defs/ScriptConfig"
          },
          "description": "Script-specific behavior configuration.",
          "type": "object"
        },
        "title-mode": {
          "anyOf": [
            {
              "$ref": "#/$defs/MultilingualMode"
            },
            {
              "type": "null"
            }
          ],
          "description": "Preferred rendering mode for titles."
        }
      },
      "type": "object"
    },
    "MultilingualConfigEntry": {
      "anyOf": [
        {
          "$ref": "#/$defs/MultilingualPreset",
          "description": "A named preset (e.g., `\"apa\"`, `\"chicago\"`, `\"mla\"`, `\"ieee\"`)."
        },
        {
          "$ref": "#/$defs/MultilingualConfig",
          "description": "An explicit multilingual configuration block."
        }
      ],
      "description": "Entry for `options.multilingual`: either a preset name or an explicit config block.\n\nStyle YAML can use a short preset name:\n```yaml\noptions:\n  multilingual: chicago\n```\nor a full explicit block:\n```yaml\noptions:\n  multilingual:\n    title-mode: combined\n    name-mode: transliterated\n    preferred-script: Latn\n```"
    },
    "MultilingualMode": {
      "description": "Rendering modes for multilingual content.",
      "oneOf": [
        {
          "const": "primary",
          "description": "Use original script.",
          "type": "string"
        },
        {
          "const": "transliterated",
          "description": "Use transliteration.",
          "type": "string"
        },
        {
          "const": "translated",
          "description": "Use translation matching style locale.",
          "type": "string"
        },
        {
          "const": "combined",
          "description": "Combine transliteration and translation: `romanized [translated]`.\nEquivalent to `Pattern([transliterated, {translated, brackets}])`.",
          "type": "string"
        },
        {
          "additionalProperties": false,
          "description": "Ordered sequence of views joined by spaces.\n\nUse this when a style requires more than two views — e.g. Chicago's\n`romanized original [translated]` or MLA's `original [translated]`.\nEach segment specifies a view and an optional bracket wrap.\nSegments whose resolved text is empty or identical to the previous\nsegment are silently skipped (dedup).\n\nYAML form:\n```yaml\ntitle-mode:\n  pattern:\n    - view: transliterated\n    - view: original\n    - view: translated\n      wrap: brackets\n```",
          "properties": {
            "pattern": {
              "items": {
                "$ref": "#/$defs/MultilingualSegment"
              },
              "type": "array"
            }
          },
          "required": [
            "pattern"
          ],
          "type": "object"
        }
      ]
    },
    "MultilingualPreset": {
      "description": "Multilingual rendering policy presets.\n\nEach preset encodes the romanization and translation conventions for a major\ncitation style or style family when rendering references in an English-language\ncontext.  Style YAML authors can write a bare preset name:\n\n```yaml\noptions:\n  multilingual: chicago\n```\n\nand Citum resolves it to the full [`MultilingualConfig`] at load time.",
      "oneOf": [
        {
          "const": "apa",
          "description": "APA / Harvard / Vancouver / AMA / NLM / CSE family.\n\nTitles: `romanized [translated]`.  Names: romanized.\nMatches APA 7th-edition policy: no original CJK in bibliography;\ntranslation required in brackets.",
          "type": "string"
        },
        {
          "const": "mla",
          "description": "MLA 9th-edition policy.\n\nTitles: `original [translated]`.  Names: romanized.\nOriginal CJK title shown first; translation in brackets.",
          "type": "string"
        },
        {
          "const": "chicago",
          "description": "Chicago (Notes-Bibliography 18th / Author-Date 18th).\n\nTitles: `romanized original [translated]`.  Names: romanized.\nRomanized form is primary; original CJK follows as a supplement;\nEnglish translation in brackets for general audiences.",
          "type": "string"
        },
        {
          "const": "ieee",
          "description": "IEEE policy.\n\nTitles: romanized only.  Names: romanized.\nNo original CJK or translation required by the IEEE style guide.",
          "type": "string"
        }
      ]
    },
    "MultilingualSegment": {
      "description": "A single view segment in a `MultilingualMode::Pattern`.",
      "properties": {
        "view": {
          "$ref": "#/$defs/MultilingualView",
          "description": "Which textual view to render for this segment."
        },
        "wrap": {
          "$ref": "#/$defs/SegmentWrap",
          "description": "Optional wrapping applied around the resolved text."
        }
      },
      "required": [
        "view"
      ],
      "type": "object"
    },
    "MultilingualView": {
      "description": "Which textual representation of a multilingual field to use in a pattern segment.",
      "oneOf": [
        {
          "const": "original",
          "description": "The original text as stored in the data.",
          "type": "string"
        },
        {
          "const": "transliterated",
          "description": "The transliterated (romanized) form.",
          "type": "string"
        },
        {
          "const": "translated",
          "description": "The translation matching the style locale.",
          "type": "string"
        }
      ]
    },
    "NameForm": {
      "description": "How to render the given-name component of a contributor name.\n\nControls whether full given names, family name only, or initialized\ngiven names are rendered. Used to express first/subsequent mention\ndifferences (Chicago) and integral/non-integral differences.\n\nInitialization formatting details (`initialize_with`, `initialize_with_hyphen`)\nare separate fields and only take effect when `NameForm::Initials` is active.",
      "oneOf": [
        {
          "const": "full",
          "description": "Render full given names: \"John D. Smith\".",
          "type": "string"
        },
        {
          "const": "family-only",
          "description": "Render family name only, suppressing given names: \"Smith\".\nUsed for subsequent mentions in Chicago/Turabian note styles.",
          "type": "string"
        },
        {
          "const": "initials",
          "description": "Render initialized given names using `initialize_with` separator.\nIf `initialize_with` is None, defaults to \". \" (e.g., \"J. Smith\").\nEmpty string gives compact initials: \"JD Smith\".",
          "type": "string"
        }
      ]
    },
    "NameOrder": {
      "description": "Name display order.",
      "oneOf": [
        {
          "const": "given-first",
          "description": "Display as \"Given Family\" (e.g., \"John Smith\").",
          "type": "string"
        },
        {
          "const": "family-first",
          "description": "Display as \"Family, Given\" (e.g., \"Smith, John\").",
          "type": "string"
        },
        {
          "const": "family-first-only",
          "description": "First contributor inverted (\"Family, Given\"); subsequent contributors given-first.",
          "type": "string"
        }
      ]
    },
    "NameSortOrder": {
      "description": "Name sorting order for culturally appropriate collation.",
      "oneOf": [
        {
          "const": "family-given",
          "description": "Family name first (Western convention).\nExample: \"Smith, John\" → \"S\" sorts before \"T\"",
          "type": "string"
        },
        {
          "const": "given-family",
          "description": "Given name first (Vietnamese convention).\nExample: \"Nguyễn Văn A\" → \"Nguyễn\" sorts before \"Trần\"",
          "type": "string"
        }
      ]
    },
    "NegativeUnspecifiedYears": {
      "description": "Rendering policy for negative EDTF years with unspecified digits.",
      "oneOf": [
        {
          "const": "range",
          "description": "Render as explicit historical ranges (e.g., `-009u` → `100–91 BC`).",
          "type": "string"
        },
        {
          "const": "fuzzy",
          "description": "Reserved for future prose-oriented output; falls back to `range` if selected.",
          "type": "string"
        }
      ]
    },
    "NoteConfig": {
      "description": "Document-level note marker placement rules.",
      "properties": {
        "number": {
          "anyOf": [
            {
              "$ref": "#/$defs/NoteNumberPlacement"
            },
            {
              "type": "null"
            }
          ],
          "description": "Desired location of the note marker relative to closing quotation marks."
        },
        "order": {
          "anyOf": [
            {
              "$ref": "#/$defs/NoteMarkerOrder"
            },
            {
              "type": "null"
            }
          ],
          "description": "Whether the note marker appears before or after the closest movable\npunctuation mark."
        },
        "punctuation": {
          "anyOf": [
            {
              "$ref": "#/$defs/NoteQuotePlacement"
            },
            {
              "type": "null"
            }
          ],
          "description": "Desired location of movable punctuation relative to closing quotation\nmarks when note markers are introduced."
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "NoteMarkerOrder": {
      "description": "Controls whether a note marker appears before or after adjacent movable punctuation.",
      "oneOf": [
        {
          "const": "before",
          "description": "Place the note marker before the closest movable punctuation mark.",
          "type": "string"
        },
        {
          "const": "after",
          "description": "Place the note marker after the closest movable punctuation mark.",
          "type": "string"
        }
      ]
    },
    "NoteNumberPlacement": {
      "description": "Controls where a footnote number marker is placed relative to closing quotation marks.",
      "oneOf": [
        {
          "const": "inside",
          "description": "Place the note marker inside the closing quotation mark.",
          "type": "string"
        },
        {
          "const": "outside",
          "description": "Place the note marker outside the closing quotation mark.",
          "type": "string"
        },
        {
          "const": "same",
          "description": "Place the note marker on the same side as the movable punctuation when\nonly one side has punctuation; otherwise default to outside.",
          "type": "string"
        }
      ]
    },
    "NoteQuotePlacement": {
      "description": "Controls where movable punctuation is placed relative to closing quotation marks.",
      "oneOf": [
        {
          "const": "inside",
          "description": "Keep movable punctuation inside the closing quotation mark.",
          "type": "string"
        },
        {
          "const": "outside",
          "description": "Keep movable punctuation outside the closing quotation mark.",
          "type": "string"
        },
        {
          "const": "adaptive",
          "description": "Follow org-cite-style adaptive behavior: punctuation stays inside when\nit is already flush with the closing quote, otherwise it is placed\noutside.",
          "type": "string"
        }
      ]
    },
    "NoteStartTextCase": {
      "description": "Text-case transform applied when a citation renders at note start.",
      "oneOf": [
        {
          "const": "capitalize-first",
          "description": "Uppercase the first character of the rendered citation.",
          "type": "string"
        },
        {
          "const": "lowercase",
          "description": "Lowercase the rendered citation text.",
          "type": "string"
        }
      ]
    },
    "NumberForm": {
      "description": "Number rendering forms.",
      "enum": [
        "numeric",
        "ordinal",
        "roman"
      ],
      "type": "string"
    },
    "NumberVariable": {
      "description": "Known number variable keyword or custom kebab-case identifier.",
      "type": "string"
    },
    "OrgAbbreviationMemoryConfig": {
      "description": "Organizational name abbreviation expansion policy.\n\nThe presence of this block enables first-mention expansion of org names —\n\"World Health Organization (WHO)\" on first mention, \"WHO\" thereafter.\nAbsence disables org abbreviation entirely.",
      "properties": {
        "contexts": {
          "anyOf": [
            {
              "$ref": "#/$defs/IntegralNameContexts"
            },
            {
              "type": "null"
            }
          ],
          "description": "Which document contexts participate in org-abbreviation tracking."
        },
        "scope": {
          "anyOf": [
            {
              "$ref": "#/$defs/IntegralNameScope"
            },
            {
              "type": "null"
            }
          ],
          "description": "Where the first-mention memory resets."
        },
        "short-name-display": {
          "anyOf": [
            {
              "$ref": "#/$defs/ShortNameDisplay"
            },
            {
              "type": "null"
            }
          ],
          "description": "How to display an organizational short name on the first integral mention."
        }
      },
      "type": "object"
    },
    "PageRangeFormat": {
      "description": "Page range formatting options.",
      "oneOf": [
        {
          "const": "expanded",
          "description": "Full expansion: 321-328 → 321–328",
          "type": "string"
        },
        {
          "const": "minimal",
          "description": "Minimal digits: 321-328 → 321–8",
          "type": "string"
        },
        {
          "const": "minimal-two",
          "description": "Minimal two digits: 321-328 → 321–28",
          "type": "string"
        },
        {
          "const": "chicago",
          "description": "Chicago Manual of Style 15th ed rules",
          "type": "string"
        },
        {
          "const": "chicago16",
          "description": "Chicago Manual of Style 16th/17th ed rules",
          "type": "string"
        }
      ]
    },
    "Processing": {
      "description": "Processing mode for citation/bibliography generation.\n\nDetermines how citations and bibliographies are sorted, grouped, and disambiguated.\nCan be specified as a simple string or with complex configuration maps:\n- A string: `\"author-date\"`, `\"numeric\"`, `\"note\"`, or `\"label\"`\n- A label config map: `{ label: { preset: din } }`\n- A custom config map: `{ sort: ..., group: ..., disambiguate: ... }`",
      "oneOf": [
        {
          "const": "author-date",
          "description": "Author-date styles (e.g., APA, Chicago).\nDefault bibliography ordering: author, year, title.",
          "type": "string"
        },
        {
          "const": "numeric",
          "description": "Numeric styles (e.g., IEEE, Nature).\nDo not imply a bibliography sort; citations are numbered in order of appearance.",
          "type": "string"
        },
        {
          "const": "note",
          "description": "Note styles (e.g., Chicago Notes-Bibliography).\nWith a bibliography default to author, title, year ordering.",
          "type": "string"
        },
        {
          "additionalProperties": false,
          "description": "Label styles (e.g., Alpha, DIN 1505-2).\nDefault bibliography ordering: author, year, title.",
          "properties": {
            "label": {
              "$ref": "#/$defs/LabelConfig"
            }
          },
          "required": [
            "label"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "Fully custom processing behavior.\nExplicit `sort` configuration remains authoritative.",
          "properties": {
            "custom": {
              "$ref": "#/$defs/ProcessingCustom"
            }
          },
          "required": [
            "custom"
          ],
          "type": "object"
        }
      ]
    },
    "ProcessingCustom": {
      "description": "Custom processing configuration.\n\nAllows explicit specification of sorting, grouping, and disambiguation rules\nwithout relying on preset defaults.",
      "properties": {
        "disambiguate": {
          "anyOf": [
            {
              "$ref": "#/$defs/Disambiguation"
            },
            {
              "type": "null"
            }
          ],
          "description": "Disambiguation settings (optional)."
        },
        "group": {
          "anyOf": [
            {
              "$ref": "#/$defs/Group"
            },
            {
              "type": "null"
            }
          ],
          "description": "Bibliography grouping configuration (optional)."
        },
        "sort": {
          "anyOf": [
            {
              "$ref": "#/$defs/SortEntry"
            },
            {
              "type": "null"
            }
          ],
          "description": "Bibliography sorting configuration (optional)."
        }
      },
      "type": "object"
    },
    "RepeatedAuthorRendering": {
      "description": "Repeated-author rendering policies for bibliographies.",
      "oneOf": [
        {
          "const": "full",
          "description": "Always render full contributor names.",
          "type": "string"
        },
        {
          "const": "dash",
          "description": "Replace repeated authors with an em dash.",
          "type": "string"
        },
        {
          "const": "dash-with-space",
          "description": "Replace repeated authors with an em dash followed by a space.",
          "type": "string"
        }
      ]
    },
    "RoleLabel": {
      "description": "Configuration for role labels (e.g., \"eds.\", \"trans.\").",
      "properties": {
        "form": {
          "$ref": "#/$defs/RoleLabelForm",
          "default": "short",
          "description": "Term form: short (\"eds.\") or long (\"editors\")."
        },
        "placement": {
          "$ref": "#/$defs/LabelPlacement",
          "default": "suffix",
          "description": "Where to place the label relative to names."
        },
        "term": {
          "description": "Locale term key for the role (e.g., \"editor\", \"translator\").",
          "type": "string"
        }
      },
      "required": [
        "term"
      ],
      "type": "object"
    },
    "RoleLabelForm": {
      "description": "Term form for role labels.",
      "enum": [
        "short",
        "long"
      ],
      "type": "string"
    },
    "RoleLabelPreset": {
      "description": "Named role-label presets for secondary contributor rendering.",
      "oneOf": [
        {
          "const": "none",
          "description": "Suppress the configured role label.",
          "type": "string"
        },
        {
          "const": "verb-prefix",
          "description": "Render the localized verb label before the names.",
          "type": "string"
        },
        {
          "const": "verb-short-prefix",
          "description": "Render the localized short verb label before the names.",
          "type": "string"
        },
        {
          "const": "short-suffix",
          "description": "Render the localized short label after the names.",
          "type": "string"
        },
        {
          "const": "long-suffix",
          "description": "Render the localized long label after the names.",
          "type": "string"
        }
      ]
    },
    "RoleOptions": {
      "description": "Role display options.",
      "properties": {
        "form": {
          "description": "Global role label form.",
          "type": [
            "string",
            "null"
          ]
        },
        "omit": {
          "description": "Contributor roles for which to omit the role description.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "prefix": {
          "description": "Global prefix for role labels.",
          "type": [
            "string",
            "null"
          ]
        },
        "preset": {
          "anyOf": [
            {
              "$ref": "#/$defs/RoleLabelPreset"
            },
            {
              "type": "null"
            }
          ],
          "description": "Global role-label preset applied before legacy compatibility."
        },
        "roles": {
          "additionalProperties": {
            "$ref": "#/$defs/RoleRendering"
          },
          "description": "Formatting for specific roles.",
          "type": [
            "object",
            "null"
          ]
        },
        "suffix": {
          "description": "Global suffix for role labels.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "RoleOptionsEntry": {
      "anyOf": [
        {
          "$ref": "#/$defs/RoleLabelPreset",
          "description": "A named preset (e.g., \"short-suffix\", \"long-suffix\")."
        },
        {
          "$ref": "#/$defs/RoleOptions",
          "description": "Explicit role options."
        }
      ],
      "description": "Role options: either a preset name or explicit configuration.\n\nAllows styles to write `role: short-suffix` as shorthand, or provide\nfull explicit configuration with field-level overrides."
    },
    "RoleRendering": {
      "description": "Rendering options for contributor roles.",
      "properties": {
        "emph": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "name-order": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameOrder"
            },
            {
              "type": "null"
            }
          ]
        },
        "prefix": {
          "type": [
            "string",
            "null"
          ]
        },
        "preset": {
          "anyOf": [
            {
              "$ref": "#/$defs/RoleLabelPreset"
            },
            {
              "type": "null"
            }
          ],
          "description": "Per-role label preset override."
        },
        "small-caps": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "SchemaVersion": {
      "description": "A schema version (major.minor).",
      "type": "string"
    },
    "Scope": {
      "description": "Localization scope.",
      "enum": [
        "global",
        "per-item"
      ],
      "type": "string"
    },
    "ScriptConfig": {
      "description": "Configuration for specific scripts.",
      "properties": {
        "delimiter": {
          "description": "Custom delimiter between name parts for this script.",
          "type": [
            "string",
            "null"
          ]
        },
        "sort-separator": {
          "description": "Custom delimiter between family and given name when this script is inverted.",
          "type": [
            "string",
            "null"
          ]
        },
        "use-native-ordering": {
          "default": false,
          "description": "Whether to use native ordering for this script (e.g., FamilyGiven for CJK).",
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "SegmentWrap": {
      "description": "Bracket wrapping applied to a pattern segment.",
      "oneOf": [
        {
          "const": "none",
          "description": "No wrapping.",
          "type": "string"
        },
        {
          "const": "brackets",
          "description": "Wrap in square brackets: `[text]`.",
          "type": "string"
        },
        {
          "const": "parentheses",
          "description": "Wrap in parentheses: `(text)`.",
          "type": "string"
        }
      ]
    },
    "ShortNameDisplay": {
      "description": "How to display a contributor's short name on the first integral mention.",
      "oneOf": [
        {
          "const": "full-then-parenthetical",
          "description": "\"Full Name (Short)\" on first mention (default). For narrative/integral context.",
          "type": "string"
        },
        {
          "const": "full-then-bracketed",
          "description": "`\"Full Name [Short]\"` on first mention. For parenthetical context (already inside parens).",
          "type": "string"
        },
        {
          "const": "short-then-parenthetical",
          "description": "\"Short (Full Name)\" on first mention.",
          "type": "string"
        },
        {
          "const": "short-then-bracketed",
          "description": "\"Short [Full Name]\" on first mention.",
          "type": "string"
        }
      ]
    },
    "ShortenListOptions": {
      "description": "Et al. / list shortening options.",
      "properties": {
        "and-others": {
          "$ref": "#/$defs/AndOtherOptions",
          "default": "et-al",
          "description": "How to render \"and others\"."
        },
        "delimiter-precedes-last": {
          "$ref": "#/$defs/DelimiterPrecedesLast",
          "default": "contextual",
          "description": "When to use delimiter before last name."
        },
        "min": {
          "description": "Minimum number of names to trigger shortening.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": "integer"
        },
        "subsequent-min": {
          "description": "Minimum number of names to trigger shortening on subsequent cites.\nDefaults to `min` if not set.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "subsequent-use-first": {
          "description": "Number of names to show when shortened on subsequent cites.\nDefaults to `use_first` if not set.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        },
        "use-first": {
          "description": "Number of names to show when shortened.",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": "integer"
        },
        "use-last": {
          "description": "Number of names to show after the ellipsis (et-al-use-last).",
          "format": "uint8",
          "maximum": 255,
          "minimum": 0,
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "required": [
        "min",
        "use-first"
      ],
      "type": "object"
    },
    "SimpleVariable": {
      "description": "Simple string variables.\n\nUse `variable:` for string passthrough fields, even when the field name is\nalso present in [`NumberVariable`]. For example, `variable: volume` keeps the\nsource value as plain text, while `number: volume` opts into numeric\nformatting behavior.",
      "enum": [
        "doi",
        "isbn",
        "issn",
        "url",
        "pmid",
        "pmcid",
        "abstract",
        "note",
        "annote",
        "keyword",
        "genre",
        "medium",
        "source",
        "status",
        "archive",
        "archive-location",
        "archive-name",
        "archive-place",
        "archive-collection",
        "archive-collection-id",
        "archive-series",
        "archive-box",
        "archive-folder",
        "archive-item",
        "archive-url",
        "eprint-id",
        "eprint-server",
        "eprint-class",
        "publisher",
        "publisher-place",
        "original-publisher",
        "original-publisher-place",
        "event-place",
        "dimensions",
        "scale",
        "version",
        "locator",
        "container-title-short",
        "authority",
        "code",
        "reporter",
        "page",
        "section",
        "volume",
        "number",
        "docket-number",
        "patent-number",
        "standard-number",
        "report-number",
        "ads-bibcode"
      ],
      "type": "string"
    },
    "Sort": {
      "description": "Sorting configuration.\n\nSpecifies how bibliography entries are ordered.",
      "properties": {
        "render-substitutions": {
          "default": false,
          "description": "Whether to apply the same name substitutions during sorting as during rendering.",
          "type": "boolean"
        },
        "shorten-names": {
          "default": false,
          "description": "Whether to shorten name lists for sorting the same as for display.",
          "type": "boolean"
        },
        "template": {
          "description": "Sort keys in order of application.",
          "items": {
            "$ref": "#/$defs/SortSpec"
          },
          "type": "array"
        }
      },
      "required": [
        "template"
      ],
      "type": "object"
    },
    "SortEntry": {
      "anyOf": [
        {
          "$ref": "#/$defs/SortPreset",
          "description": "A named sort preset (e.g., `author-date-title`, `author-title-date`)."
        },
        {
          "$ref": "#/$defs/Sort",
          "description": "Explicit sort configuration with custom keys and order."
        }
      ],
      "description": "Sort configuration: either a preset name or explicit configuration.\n\nCan be a preset name like `author-date-title` or a full `Sort` struct with explicit settings."
    },
    "SortKey": {
      "description": "Available sort keys.\n\nSpecifies what field to sort bibliography entries by.",
      "oneOf": [
        {
          "const": "author",
          "description": "Sort by the work's author(s).",
          "type": "string"
        },
        {
          "const": "year",
          "description": "Sort by publication year.",
          "type": "string"
        },
        {
          "const": "title",
          "description": "Sort by the work's title.",
          "type": "string"
        },
        {
          "const": "citation-number",
          "description": "Sort by citation order (typically used for numeric styles).",
          "type": "string"
        }
      ]
    },
    "SortKey2": {
      "description": "Sort key selector.",
      "oneOf": [
        {
          "const": "type",
          "description": "Sort by reference type.",
          "type": "string"
        },
        {
          "const": "author",
          "description": "Sort by author/contributor.",
          "type": "string"
        },
        {
          "const": "title",
          "description": "Sort by title.",
          "type": "string"
        },
        {
          "const": "issued",
          "description": "Sort by issued date.",
          "type": "string"
        },
        {
          "additionalProperties": false,
          "description": "Sort by custom field.",
          "properties": {
            "field": {
              "type": "string"
            }
          },
          "required": [
            "field"
          ],
          "type": "object"
        }
      ]
    },
    "SortPreset": {
      "description": "Sort order presets for bibliography entries.\n\nEach preset encodes the sort key sequence for a citation style family.\nUse for the `bibliography.sort` field to avoid repeating boilerplate key lists.",
      "oneOf": [
        {
          "const": "author-date-title",
          "description": "Author → year → title. Standard for author-date styles (APA, Chicago, Harvard).",
          "type": "string"
        },
        {
          "const": "author-title-date",
          "description": "Author → title → year. Used in some footnote and note styles.",
          "type": "string"
        },
        {
          "const": "citation-number",
          "description": "Citation number only. Used in numeric styles (Vancouver, IEEE).",
          "type": "string"
        }
      ]
    },
    "SortSpec": {
      "description": "A single sort specification.\n\nDefines one sort dimension with its key and direction.",
      "properties": {
        "ascending": {
          "default": true,
          "description": "Whether to sort in ascending order (default: true).",
          "type": "boolean"
        },
        "key": {
          "$ref": "#/$defs/SortKey",
          "description": "The field to sort by."
        }
      },
      "required": [
        "key"
      ],
      "type": "object"
    },
    "StyleBase": {
      "description": "A named, compiled-in style base that serves as an inheritance root.\n\nA style file declares `extends: <key>` to inherit a complete base style.\nAny top-level fields in the file (`options`, `citation`, `bibliography`,\netc.) are merged over the base, with local fields taking\nultimate precedence.",
      "oneOf": [
        {
          "const": "elsevier-harvard-core",
          "description": "Hidden Elsevier Harvard family root.",
          "type": "string"
        },
        {
          "const": "elsevier-with-titles-core",
          "description": "Hidden Elsevier with-titles family root.",
          "type": "string"
        },
        {
          "const": "elsevier-vancouver-core",
          "description": "Hidden Elsevier Vancouver family root.",
          "type": "string"
        },
        {
          "const": "springer-basic-author-date-core",
          "description": "Hidden Springer Basic author-date root.",
          "type": "string"
        },
        {
          "const": "springer-basic-brackets-core",
          "description": "Hidden Springer Basic brackets root.",
          "type": "string"
        },
        {
          "const": "springer-vancouver-brackets-core",
          "description": "Hidden Springer Vancouver root.",
          "type": "string"
        },
        {
          "const": "taylor-and-francis-chicago-author-date-core",
          "description": "Hidden Taylor & Francis Chicago root.",
          "type": "string"
        },
        {
          "const": "taylor-and-francis-council-of-science-editors-author-date-core",
          "description": "Hidden Taylor & Francis CSE root.",
          "type": "string"
        },
        {
          "const": "taylor-and-francis-national-library-of-medicine-core",
          "description": "Hidden Taylor & Francis NLM root.",
          "type": "string"
        },
        {
          "const": "chicago-shortened-notes-bibliography-core",
          "description": "Hidden Chicago shortened-notes root.",
          "type": "string"
        },
        {
          "const": "chicago-notes-18th",
          "description": "Chicago Manual of Style 18th edition — notes without bibliography.",
          "type": "string"
        },
        {
          "const": "chicago-author-date-18th",
          "description": "Chicago Manual of Style 18th edition — author-date system.",
          "type": "string"
        },
        {
          "const": "chicago-shortened-notes-bibliography",
          "description": "Chicago Manual of Style (shortened notes and bibliography).",
          "type": "string"
        },
        {
          "const": "apa-7th",
          "description": "APA 7th edition — author-date system.",
          "type": "string"
        },
        {
          "const": "elsevier-harvard",
          "description": "Elsevier Harvard (author-date).",
          "type": "string"
        },
        {
          "const": "elsevier-with-titles",
          "description": "Elsevier with Titles (numeric).",
          "type": "string"
        },
        {
          "const": "elsevier-vancouver",
          "description": "Elsevier Vancouver (numeric).",
          "type": "string"
        },
        {
          "const": "springer-basic-author-date",
          "description": "Springer Basic (author-date).",
          "type": "string"
        },
        {
          "const": "springer-vancouver-brackets",
          "description": "Springer Vancouver Brackets (numeric).",
          "type": "string"
        },
        {
          "const": "springer-basic-brackets",
          "description": "Springer Basic Brackets (numeric).",
          "type": "string"
        },
        {
          "const": "american-medical-association",
          "description": "American Medical Association 11th edition (numeric).",
          "type": "string"
        },
        {
          "const": "ieee",
          "description": "Institute of Electrical and Electronics Engineers (numeric).",
          "type": "string"
        },
        {
          "const": "taylor-and-francis-chicago-author-date",
          "description": "Taylor & Francis Chicago author-date.",
          "type": "string"
        },
        {
          "const": "taylor-and-francis-council-of-science-editors-author-date",
          "description": "Taylor & Francis Council of Science Editors author-date.",
          "type": "string"
        },
        {
          "const": "taylor-and-francis-national-library-of-medicine",
          "description": "Taylor & Francis National Library of Medicine.",
          "type": "string"
        },
        {
          "const": "modern-language-association",
          "description": "Modern Language Association 9th edition (author-page).",
          "type": "string"
        }
      ]
    },
    "StyleInfo": {
      "description": "Style metadata.",
      "properties": {
        "citum-version": {
          "description": "Minimum Citum engine version required to load and render this style.\n\nAccepts a [`semver::VersionReq`]-compatible string (e.g. `\">=0.38.0\"`,\n`\"^0.40\"`). When the running engine does not satisfy the requirement,\nthe resolver returns\n[`ResolutionError::VersionMismatch`]\ninstead of attempting to deserialize fields the engine may not\nunderstand. Omit for styles that use only stable, long-lived features.",
          "type": [
            "string",
            "null"
          ]
        },
        "default-locale": {
          "description": "Default locale for the style (e.g., \"en-US\", \"de-DE\").\nUsed for locale-aware term resolution.",
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "description": "Short summary of the style's intended use or provenance.",
          "type": [
            "string",
            "null"
          ]
        },
        "edition": {
          "description": "Edition or version qualifier used alongside `short_name` to\ndisambiguate multiple editions of the same style family\n(e.g. `\"7th\"`, `\"18th edition\"`). Omit when only one edition exists.",
          "type": [
            "string",
            "null"
          ]
        },
        "fields": {
          "description": "Discipline classifications for this style.",
          "items": {
            "$ref": "#/$defs/CitationField"
          },
          "type": "array"
        },
        "id": {
          "description": "Stable identifier for the style, usually a URI or slug.",
          "type": [
            "string",
            "null"
          ]
        },
        "short-name": {
          "description": "Concise display name for the style family, used by UIs to label\nsearch results and match banners (e.g. `\"APA\"`, `\"Chicago Notes\"`,\n`\"MLA\"`). Omit for journal-specific styles whose full title is their\nidentity. Combine with `edition` to produce labels like `\"APA 7th\"`.",
          "type": [
            "string",
            "null"
          ]
        },
        "source": {
          "anyOf": [
            {
              "$ref": "#/$defs/StyleSource"
            },
            {
              "type": "null"
            }
          ],
          "description": "Provenance: set when this style was adapted from a CSL 1.0 source."
        },
        "title": {
          "description": "Human-readable title of the style.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "StyleLink": {
      "description": "A hyperlink associated with a style (documentation, self-link, etc.).",
      "properties": {
        "href": {
          "description": "Link target for related style metadata.",
          "type": "string"
        },
        "rel": {
          "description": "Relationship type for the link, such as `self` or `documentation`.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "href"
      ],
      "type": "object"
    },
    "StylePerson": {
      "description": "A person credit (author or contributor) for a style.",
      "properties": {
        "email": {
          "description": "Contact email for the credited person.",
          "type": [
            "string",
            "null"
          ]
        },
        "name": {
          "description": "Display name for the credited person.",
          "type": [
            "string",
            "null"
          ]
        },
        "uri": {
          "description": "URI identifying the credited person.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    },
    "StyleReference": {
      "anyOf": [
        {
          "$ref": "#/$defs/StyleBase",
          "description": "A named builtin style base."
        },
        {
          "description": "A URI reference to a remote or local style.\n\nSupported schemes: `file://`, `https://`, `git+https://`, `cid:`.",
          "type": "string"
        }
      ],
      "description": "A reference to a base style, which can be either a named builtin base,\na URI (e.g., `file://...`, `@hub/...`, `https://...`, `git+https://...`),\nor a content-addressed identifier (`cid:bafkrei...`)."
    },
    "StyleSource": {
      "description": "Provenance block for styles adapted from a CSL 1.0 source.",
      "properties": {
        "adapted-by": {
          "description": "Who performed the adaptation (e.g., \"citum-migrate\" or a person's name).",
          "type": [
            "string",
            "null"
          ]
        },
        "csl-id": {
          "description": "The original CSL style ID (URI).",
          "type": "string"
        },
        "license": {
          "description": "License URI (e.g., CC BY-SA).",
          "type": [
            "string",
            "null"
          ]
        },
        "links": {
          "description": "Links from the original CSL style (documentation, self, etc.).",
          "items": {
            "$ref": "#/$defs/StyleLink"
          },
          "type": "array"
        },
        "original-authors": {
          "description": "Original CSL style authors.",
          "items": {
            "$ref": "#/$defs/StylePerson"
          },
          "type": "array"
        }
      },
      "required": [
        "csl-id"
      ],
      "type": "object"
    },
    "SubLabelStyle": {
      "description": "Sub-label style for compound numeric bibliography entries.",
      "oneOf": [
        {
          "const": "alphabetic",
          "description": "Alphabetic sub-labels: a, b, c, ...",
          "type": "string"
        },
        {
          "const": "numeric",
          "description": "Numeric sub-labels: 1, 2, 3, ...",
          "type": "string"
        }
      ]
    },
    "SubsequentAuthorSubstituteRule": {
      "description": "Rules for subsequent author substitution.",
      "oneOf": [
        {
          "const": "complete-all",
          "description": "Substitute only if ALL authors match.",
          "type": "string"
        },
        {
          "const": "complete-each",
          "description": "Substitute each matching name individually.",
          "type": "string"
        },
        {
          "const": "partial-each",
          "description": "Substitute each matching name until the first mismatch.",
          "type": "string"
        },
        {
          "const": "partial-first",
          "description": "Substitute only the first name if it matches.",
          "type": "string"
        }
      ]
    },
    "SubsequentNameForm": {
      "description": "The contributor form used after the first integral mention in scope.\n\n`Short` preserves non-dropping particles (\"van Beethoven\"); `FamilyOnly`\nstrips them (\"Beethoven\"). MLA-style narrative memory uses `Short`.",
      "oneOf": [
        {
          "const": "short",
          "description": "Use the short contributor form for subsequent mentions.",
          "type": "string"
        },
        {
          "const": "family-only",
          "description": "Use family name only (without non-dropping particles) for subsequent mentions.",
          "type": "string"
        }
      ]
    },
    "Substitute": {
      "description": "Explicit substitution configuration.",
      "properties": {
        "contributor-role-form": {
          "description": "Form to use for contributor roles when substituting.",
          "type": [
            "string",
            "null"
          ]
        },
        "overrides": {
          "additionalProperties": {
            "items": {
              "$ref": "#/$defs/SubstituteKey"
            },
            "type": "array"
          },
          "description": "Type-specific substitution overrides.",
          "type": "object"
        },
        "role-substitute": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": "Per-role fallback chains for non-author contributor substitution.\n\nKeys and fallback entries normalize to canonical kebab-case role names.\nBuilt-in template roles use locale-aware labels automatically. Custom\nrole names still participate in fallback and suppression even when they\ndo not have a dedicated template enum variant.",
          "type": "object"
        },
        "template": {
          "default": [],
          "description": "Ordered list of fields to try as substitutes.",
          "items": {
            "$ref": "#/$defs/SubstituteKey"
          },
          "type": "array"
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "SubstituteConfig": {
      "anyOf": [
        {
          "$ref": "#/$defs/SubstitutePreset",
          "description": "A named preset (e.g., \"standard\", \"editor-first\", \"title-first\")."
        },
        {
          "$ref": "#/$defs/Substitute",
          "description": "Explicit substitution configuration."
        }
      ],
      "description": "Substitution rules for missing author data."
    },
    "SubstituteKey": {
      "description": "Fields that can be used as author substitutes.",
      "enum": [
        "editor",
        "title",
        "translator"
      ],
      "type": "string"
    },
    "SubstitutePreset": {
      "description": "Substitute presets for author substitution fallback logic.\n\nThese presets define the order in which fields are tried when the primary\nauthor is missing. Most styles follow the standard order, but some have\nvariations.",
      "oneOf": [
        {
          "const": "standard",
          "description": "Standard substitution order: Editor → Title → Translator.\nUsed by most citation styles (APA, Chicago, etc.).",
          "type": "string"
        },
        {
          "const": "editor-first",
          "description": "Editor-first: Editor → Translator → Title.\nPrioritizes contributors over title.",
          "type": "string"
        },
        {
          "const": "title-first",
          "description": "Title-first: Title → Editor → Translator.\nUsed when anonymous works should show title prominently.",
          "type": "string"
        },
        {
          "const": "editor-short",
          "description": "Editor only with short role labels.",
          "type": "string"
        },
        {
          "const": "editor-long",
          "description": "Editor only with long role labels.",
          "type": "string"
        },
        {
          "const": "editor-translator-short",
          "description": "Editor then translator with short role labels.",
          "type": "string"
        },
        {
          "const": "editor-translator-long",
          "description": "Editor then translator with long role labels.",
          "type": "string"
        },
        {
          "const": "editor-title-short",
          "description": "Editor then title with short role labels.",
          "type": "string"
        },
        {
          "const": "editor-title-long",
          "description": "Editor then title with long role labels.",
          "type": "string"
        },
        {
          "const": "editor-translator-title-short",
          "description": "Editor then translator then title with short role labels.",
          "type": "string"
        },
        {
          "const": "editor-translator-title-long",
          "description": "Editor then translator then title with long role labels.",
          "type": "string"
        }
      ]
    },
    "TemplateAddOperation": {
      "additionalProperties": false,
      "description": "Addition operation that inserts a component before or after an anchor.",
      "properties": {
        "after": {
          "anyOf": [
            {
              "$ref": "#/$defs/TemplateComponentSelector"
            },
            {
              "type": "null"
            }
          ],
          "description": "Anchor selector after which the component should be inserted."
        },
        "before": {
          "anyOf": [
            {
              "$ref": "#/$defs/TemplateComponentSelector"
            },
            {
              "type": "null"
            }
          ],
          "description": "Anchor selector before which the component should be inserted."
        },
        "component": {
          "$ref": "#/$defs/TemplateComponent",
          "description": "Component to insert."
        }
      },
      "required": [
        "component"
      ],
      "type": "object"
    },
    "TemplateComponent": {
      "anyOf": [
        {
          "$ref": "#/$defs/TemplateContributor"
        },
        {
          "$ref": "#/$defs/TemplateDate"
        },
        {
          "$ref": "#/$defs/TemplateTitle"
        },
        {
          "$ref": "#/$defs/TemplateNumber"
        },
        {
          "$ref": "#/$defs/TemplateVariable"
        },
        {
          "$ref": "#/$defs/TemplateGroup"
        },
        {
          "$ref": "#/$defs/TemplateTerm"
        }
      ],
      "description": "A template component - the building blocks of citation/bibliography templates.\n\nEach variant handles a specific data type with appropriate formatting options."
    },
    "TemplateComponentSelector": {
      "additionalProperties": true,
      "description": "Partial component selector used to locate anchors in a template.",
      "type": "object"
    },
    "TemplateContributor": {
      "additionalProperties": false,
      "description": "A contributor component for rendering names.",
      "properties": {
        "and": {
          "anyOf": [
            {
              "$ref": "#/$defs/AndOptions"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override the conjunction between the last two names.\nUse `none` for bibliography when citation uses `text` or `symbol`."
        },
        "contributor": {
          "$ref": "#/$defs/ContributorRole",
          "description": "Which contributor role to render (author, editor, etc.)."
        },
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "delimiter": {
          "description": "Custom delimiter between names (overrides global setting).",
          "type": [
            "string",
            "null"
          ]
        },
        "emph": {
          "description": "Render in italics/emphasis.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "form": {
          "$ref": "#/$defs/ContributorForm",
          "description": "How to display the contributor (long names, short, with label, etc.)."
        },
        "gender": {
          "anyOf": [
            {
              "$ref": "#/$defs/GrammaticalGender"
            },
            {
              "type": "null"
            }
          ],
          "description": "Explicit grammatical gender override for role-label agreement."
        },
        "initialize-with": {
          "description": "Override name initialization (e.g., \". \" or \"\").",
          "type": [
            "string",
            "null"
          ]
        },
        "label": {
          "anyOf": [
            {
              "$ref": "#/$defs/RoleLabel"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional role label configuration (e.g., \"eds.\" for editors)."
        },
        "links": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinksConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Structured link options (DOI, URL)."
        },
        "name-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override name form (e.g., initials, full, family-only)."
        },
        "name-order": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameOrder"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override the global name order for this specific component.\nUse to show editors as \"Given Family\" even when global setting is \"Family, Given\"."
        },
        "prefix": {
          "description": "Text to prepend to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "description": "Render in quotes.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "shorten": {
          "anyOf": [
            {
              "$ref": "#/$defs/ShortenListOptions"
            },
            {
              "type": "null"
            }
          ],
          "description": "Shorten the list of names (et al. configuration)."
        },
        "small-caps": {
          "description": "Render in small caps.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "sort-separator": {
          "description": "Delimiter between family and given name when inverted (overrides global setting).",
          "type": [
            "string",
            "null"
          ]
        },
        "strip-periods": {
          "description": "Strip trailing periods from rendered value.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "description": "Render in bold/strong.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "description": "Text to append to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "suppress": {
          "description": "If true, suppress this component entirely (render as empty string).\nUseful for type-specific overrides like suppressing publisher for journals.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/TextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Text-case transform to apply to the rendered value."
        },
        "vertical-align": {
          "anyOf": [
            {
              "$ref": "#/$defs/VerticalAlign"
            },
            {
              "type": "null"
            }
          ],
          "description": "Vertical alignment to apply to rendered output."
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/WrapConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Wrapping punctuation and optional inner affixes (text inside the wrap)."
        }
      },
      "required": [
        "contributor",
        "form"
      ],
      "type": "object"
    },
    "TemplateDate": {
      "additionalProperties": false,
      "description": "A date component for rendering dates.",
      "properties": {
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "date": {
          "$ref": "#/$defs/DateVariable"
        },
        "emph": {
          "description": "Render in italics/emphasis.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "fallback": {
          "description": "Fallback components if the primary date is missing.",
          "items": {
            "$ref": "#/$defs/TemplateComponent"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "form": {
          "$ref": "#/$defs/DateForm"
        },
        "initialize-with": {
          "description": "Override name initialization (e.g., \". \" or \"\").",
          "type": [
            "string",
            "null"
          ]
        },
        "links": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinksConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Structured link options (DOI, URL)."
        },
        "name-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override name form (e.g., initials, full, family-only)."
        },
        "prefix": {
          "description": "Text to prepend to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "description": "Render in quotes.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "small-caps": {
          "description": "Render in small caps.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strip-periods": {
          "description": "Strip trailing periods from rendered value.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "description": "Render in bold/strong.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "description": "Text to append to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "suppress": {
          "description": "If true, suppress this component entirely (render as empty string).\nUseful for type-specific overrides like suppressing publisher for journals.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/TextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Text-case transform to apply to the rendered value."
        },
        "vertical-align": {
          "anyOf": [
            {
              "$ref": "#/$defs/VerticalAlign"
            },
            {
              "type": "null"
            }
          ],
          "description": "Vertical alignment to apply to rendered output."
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/WrapConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Wrapping punctuation and optional inner affixes (text inside the wrap)."
        }
      },
      "required": [
        "date",
        "form"
      ],
      "type": "object"
    },
    "TemplateGroup": {
      "additionalProperties": false,
      "description": "A group component for grouping multiple components with a delimiter,\nmatching CSL 1.0 `<group>` semantics.",
      "properties": {
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "delimiter": {
          "anyOf": [
            {
              "$ref": "#/$defs/DelimiterPunctuation"
            },
            {
              "type": "null"
            }
          ]
        },
        "emph": {
          "description": "Render in italics/emphasis.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "group": {
          "items": {
            "$ref": "#/$defs/TemplateComponent"
          },
          "type": "array"
        },
        "initialize-with": {
          "description": "Override name initialization (e.g., \". \" or \"\").",
          "type": [
            "string",
            "null"
          ]
        },
        "name-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override name form (e.g., initials, full, family-only)."
        },
        "prefix": {
          "description": "Text to prepend to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "description": "Render in quotes.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "small-caps": {
          "description": "Render in small caps.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strip-periods": {
          "description": "Strip trailing periods from rendered value.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "description": "Render in bold/strong.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "description": "Text to append to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "suppress": {
          "description": "If true, suppress this component entirely (render as empty string).\nUseful for type-specific overrides like suppressing publisher for journals.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/TextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Text-case transform to apply to the rendered value."
        },
        "vertical-align": {
          "anyOf": [
            {
              "$ref": "#/$defs/VerticalAlign"
            },
            {
              "type": "null"
            }
          ],
          "description": "Vertical alignment to apply to rendered output."
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/WrapConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Wrapping punctuation and optional inner affixes (text inside the wrap)."
        }
      },
      "required": [
        "group"
      ],
      "type": "object"
    },
    "TemplateModifyOperation": {
      "additionalProperties": false,
      "description": "Rendering-only modification for the component matched by `match`.",
      "properties": {
        "emph": {
          "description": "Render in italics/emphasis.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "initialize-with": {
          "description": "Override name initialization (e.g., \". \" or \"\").",
          "type": [
            "string",
            "null"
          ]
        },
        "label-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/LabelForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override the localized number label form when modifying number components."
        },
        "match": {
          "$ref": "#/$defs/TemplateComponentSelector",
          "description": "Selector identifying exactly one component to modify."
        },
        "name-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override name form (e.g., initials, full, family-only)."
        },
        "prefix": {
          "description": "Text to prepend to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "description": "Render in quotes.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "small-caps": {
          "description": "Render in small caps.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strip-periods": {
          "description": "Strip trailing periods from rendered value.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "description": "Render in bold/strong.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "description": "Text to append to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "suppress": {
          "description": "If true, suppress this component entirely (render as empty string).\nUseful for type-specific overrides like suppressing publisher for journals.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/TextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Text-case transform to apply to the rendered value."
        },
        "vertical-align": {
          "anyOf": [
            {
              "$ref": "#/$defs/VerticalAlign"
            },
            {
              "type": "null"
            }
          ],
          "description": "Vertical alignment to apply to rendered output."
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/WrapConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Wrapping punctuation and optional inner affixes (text inside the wrap)."
        }
      },
      "required": [
        "match"
      ],
      "type": "object"
    },
    "TemplateNumber": {
      "additionalProperties": false,
      "description": "A number component (volume, issue, pages, etc.).",
      "properties": {
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "emph": {
          "description": "Render in italics/emphasis.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NumberForm"
            },
            {
              "type": "null"
            }
          ]
        },
        "gender": {
          "anyOf": [
            {
              "$ref": "#/$defs/GrammaticalGender"
            },
            {
              "type": "null"
            }
          ],
          "description": "Explicit grammatical gender override for number/ordinal agreement."
        },
        "initialize-with": {
          "description": "Override name initialization (e.g., \". \" or \"\").",
          "type": [
            "string",
            "null"
          ]
        },
        "label-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/LabelForm"
            },
            {
              "type": "null"
            }
          ]
        },
        "links": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinksConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Structured link options (DOI, URL)."
        },
        "name-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override name form (e.g., initials, full, family-only)."
        },
        "number": {
          "$ref": "#/$defs/NumberVariable"
        },
        "prefix": {
          "description": "Text to prepend to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "description": "Render in quotes.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "show-with-locator": {
          "description": "When `true`, show this pages component even when a locator is present in a note-style citation.\nBy default, pages are suppressed in note-style citations when a locator is present.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "small-caps": {
          "description": "Render in small caps.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strip-periods": {
          "description": "Strip trailing periods from rendered value.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "description": "Render in bold/strong.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "description": "Text to append to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "suppress": {
          "description": "If true, suppress this component entirely (render as empty string).\nUseful for type-specific overrides like suppressing publisher for journals.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/TextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Text-case transform to apply to the rendered value."
        },
        "vertical-align": {
          "anyOf": [
            {
              "$ref": "#/$defs/VerticalAlign"
            },
            {
              "type": "null"
            }
          ],
          "description": "Vertical alignment to apply to rendered output."
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/WrapConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Wrapping punctuation and optional inner affixes (text inside the wrap)."
        }
      },
      "required": [
        "number"
      ],
      "type": "object"
    },
    "TemplatePreset": {
      "description": "Available embedded template presets.\n\nThese reference battle-tested templates for common citation styles.\nSee `citum_schema::embedded` for the actual template implementations.",
      "oneOf": [
        {
          "const": "apa",
          "description": "APA 7th edition (author-date)",
          "type": "string"
        },
        {
          "const": "chicago-author-date",
          "description": "Chicago Manual of Style (author-date)",
          "type": "string"
        },
        {
          "const": "vancouver",
          "description": "Vancouver (numeric)",
          "type": "string"
        },
        {
          "const": "ieee",
          "description": "IEEE (numeric)",
          "type": "string"
        },
        {
          "const": "harvard",
          "description": "Harvard/Elsevier (author-date)",
          "type": "string"
        },
        {
          "const": "numeric-citation",
          "description": "Numeric citation number only (citation-focused preset)",
          "type": "string"
        }
      ]
    },
    "TemplateReference": {
      "anyOf": [
        {
          "$ref": "#/$defs/TemplatePreset",
          "description": "A named builtin template preset."
        },
        {
          "description": "A URI reference to a remote or local template.",
          "type": "string"
        }
      ],
      "description": "A reference to a template, which can be either a named builtin preset\nor a URI (e.g., `file://...`, `@hub/...`, `https://...`)."
    },
    "TemplateRemoveOperation": {
      "additionalProperties": false,
      "description": "Removal operation for the component matched by `match`.",
      "properties": {
        "match": {
          "$ref": "#/$defs/TemplateComponentSelector",
          "description": "Selector identifying exactly one component to remove."
        }
      },
      "required": [
        "match"
      ],
      "type": "object"
    },
    "TemplateTerm": {
      "additionalProperties": false,
      "description": "A term component for rendering locale-specific text.",
      "properties": {
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "emph": {
          "description": "Render in italics/emphasis.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "form": {
          "anyOf": [
            {
              "$ref": "#/$defs/TermForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Form: long (default), short, or symbol."
        },
        "gender": {
          "anyOf": [
            {
              "$ref": "#/$defs/GrammaticalGender"
            },
            {
              "type": "null"
            }
          ],
          "description": "Explicit grammatical gender override for term selection."
        },
        "initialize-with": {
          "description": "Override name initialization (e.g., \". \" or \"\").",
          "type": [
            "string",
            "null"
          ]
        },
        "name-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override name form (e.g., initials, full, family-only)."
        },
        "prefix": {
          "description": "Text to prepend to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "description": "Render in quotes.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "small-caps": {
          "description": "Render in small caps.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strip-periods": {
          "description": "Strip trailing periods from rendered value.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "description": "Render in bold/strong.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "description": "Text to append to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "suppress": {
          "description": "If true, suppress this component entirely (render as empty string).\nUseful for type-specific overrides like suppressing publisher for journals.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "term": {
          "$ref": "#/$defs/GeneralTerm",
          "description": "Which term to render."
        },
        "text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/TextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Text-case transform to apply to the rendered value."
        },
        "vertical-align": {
          "anyOf": [
            {
              "$ref": "#/$defs/VerticalAlign"
            },
            {
              "type": "null"
            }
          ],
          "description": "Vertical alignment to apply to rendered output."
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/WrapConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Wrapping punctuation and optional inner affixes (text inside the wrap)."
        }
      },
      "required": [
        "term"
      ],
      "type": "object"
    },
    "TemplateTitle": {
      "additionalProperties": false,
      "description": "A title component.",
      "properties": {
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "disambiguate-only": {
          "description": "When true, suppress this title component unless the reference needs\ndisambiguation (i.e. multiple works by the same author appear in the\ndocument). Used by author-class styles (e.g. MLA) where the title\nappears in citations only to resolve same-author ambiguity.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "emph": {
          "description": "Render in italics/emphasis.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "form": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitleForm"
            },
            {
              "type": "null"
            }
          ]
        },
        "initialize-with": {
          "description": "Override name initialization (e.g., \". \" or \"\").",
          "type": [
            "string",
            "null"
          ]
        },
        "links": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinksConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Structured link options (DOI, URL)."
        },
        "name-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override name form (e.g., initials, full, family-only)."
        },
        "prefix": {
          "description": "Text to prepend to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "description": "Render in quotes.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "small-caps": {
          "description": "Render in small caps.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strip-periods": {
          "description": "Strip trailing periods from rendered value.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "description": "Render in bold/strong.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "description": "Text to append to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "suppress": {
          "description": "If true, suppress this component entirely (render as empty string).\nUseful for type-specific overrides like suppressing publisher for journals.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/TextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Text-case transform to apply to the rendered value."
        },
        "title": {
          "$ref": "#/$defs/TitleType"
        },
        "vertical-align": {
          "anyOf": [
            {
              "$ref": "#/$defs/VerticalAlign"
            },
            {
              "type": "null"
            }
          ],
          "description": "Vertical alignment to apply to rendered output."
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/WrapConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Wrapping punctuation and optional inner affixes (text inside the wrap)."
        }
      },
      "required": [
        "title"
      ],
      "type": "object"
    },
    "TemplateVariable": {
      "additionalProperties": false,
      "description": "A simple variable component (DOI, ISBN, URL, etc.).",
      "properties": {
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "emph": {
          "description": "Render in italics/emphasis.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "initialize-with": {
          "description": "Override name initialization (e.g., \". \" or \"\").",
          "type": [
            "string",
            "null"
          ]
        },
        "links": {
          "anyOf": [
            {
              "$ref": "#/$defs/LinksConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Structured link options (DOI, URL)."
        },
        "name-form": {
          "anyOf": [
            {
              "$ref": "#/$defs/NameForm"
            },
            {
              "type": "null"
            }
          ],
          "description": "Override name form (e.g., initials, full, family-only)."
        },
        "prefix": {
          "description": "Text to prepend to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "description": "Render in quotes.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "small-caps": {
          "description": "Render in small caps.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strip-periods": {
          "description": "Strip trailing periods from rendered value.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "description": "Render in bold/strong.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "description": "Text to append to the rendered value (outside any wrap).",
          "type": [
            "string",
            "null"
          ]
        },
        "suppress": {
          "description": "If true, suppress this component entirely (render as empty string).\nUseful for type-specific overrides like suppressing publisher for journals.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/TextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Text-case transform to apply to the rendered value."
        },
        "variable": {
          "$ref": "#/$defs/SimpleVariable"
        },
        "vertical-align": {
          "anyOf": [
            {
              "$ref": "#/$defs/VerticalAlign"
            },
            {
              "type": "null"
            }
          ],
          "description": "Vertical alignment to apply to rendered output."
        },
        "wrap": {
          "anyOf": [
            {
              "$ref": "#/$defs/WrapConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Wrapping punctuation and optional inner affixes (text inside the wrap)."
        }
      },
      "required": [
        "variable"
      ],
      "type": "object"
    },
    "TemplateVariant": {
      "anyOf": [
        {
          "description": "Complete replacement template used by Template V1/V2 styles.",
          "items": {
            "$ref": "#/$defs/TemplateComponent"
          },
          "type": "array"
        },
        {
          "$ref": "#/$defs/TemplateVariantDiff",
          "description": "Structural diff applied to a parent template during style resolution."
        }
      ],
      "description": "Type-specific template override, either as a complete legacy template or a V3 diff."
    },
    "TemplateVariantDiff": {
      "additionalProperties": false,
      "description": "Structural diff that derives a type-specific template from a parent template.",
      "properties": {
        "add": {
          "description": "Component additions applied in authored order.",
          "items": {
            "$ref": "#/$defs/TemplateAddOperation"
          },
          "type": "array"
        },
        "extends": {
          "anyOf": [
            {
              "$ref": "#/$defs/TypeSelector"
            },
            {
              "type": "null"
            }
          ],
          "description": "Optional parent type variant selector within the same section."
        },
        "modify": {
          "description": "Rendering-only modifications applied in authored order.",
          "items": {
            "$ref": "#/$defs/TemplateModifyOperation"
          },
          "type": "array"
        },
        "remove": {
          "description": "Component removals applied in authored order.",
          "items": {
            "$ref": "#/$defs/TemplateRemoveOperation"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "TermForm": {
      "description": "Form for term lookup.\n\nSpecifies which form variant of a term should be used in citation output.",
      "oneOf": [
        {
          "const": "long",
          "description": "Long form of a term (e.g., \"page\" vs \"p.\").",
          "type": "string"
        },
        {
          "const": "short",
          "description": "Short form of a term (e.g., \"p.\" vs \"page\").",
          "type": "string"
        },
        {
          "const": "verb",
          "description": "Verb form of a term (e.g., \"edited by\").",
          "type": "string"
        },
        {
          "const": "verb-short",
          "description": "Short verb form of a term (e.g., \"ed.\" vs \"edited by\").",
          "type": "string"
        },
        {
          "const": "symbol",
          "description": "Symbol form of a term (e.g., \"§\" for section).",
          "type": "string"
        }
      ]
    },
    "TextCase": {
      "description": "Text-case transform applied to title-like fields.\n\nStyles select which transform applies to which field category.\nThe engine provides the generic primitives; styles own the selection.",
      "oneOf": [
        {
          "const": "title",
          "description": "English headline-style title case (capitalize principal words).",
          "type": "string"
        },
        {
          "const": "sentence",
          "description": "Generic sentence case (capitalize first word only).",
          "type": "string"
        },
        {
          "const": "sentence-apa",
          "description": "APA-style sentence case: capitalize first word of main title\nand first word after each subtitle boundary.",
          "type": "string"
        },
        {
          "const": "sentence-nlm",
          "description": "NLM-style sentence case: capitalize first word of main title only;\nsubtitles preserve only explicit/protected capitals.",
          "type": "string"
        },
        {
          "const": "capitalize-first",
          "description": "Capitalize the first letter of the value.",
          "type": "string"
        },
        {
          "const": "lowercase",
          "description": "Transform the entire value to lowercase.",
          "type": "string"
        },
        {
          "const": "uppercase",
          "description": "Transform the entire value to uppercase.",
          "type": "string"
        },
        {
          "const": "as-is",
          "description": "No transformation; render the value exactly as stored.",
          "type": "string"
        }
      ]
    },
    "TimeFormat": {
      "description": "Time display format.",
      "oneOf": [
        {
          "const": "hour12",
          "description": "12-hour clock with AM/PM (e.g., \"11:30 PM\")",
          "type": "string"
        },
        {
          "const": "hour24",
          "description": "24-hour clock (e.g., \"23:30\")",
          "type": "string"
        }
      ]
    },
    "TitleForm": {
      "description": "Title rendering forms.",
      "enum": [
        "short",
        "long"
      ],
      "type": "string"
    },
    "TitlePreset": {
      "description": "Title formatting presets.\n\nEach preset defines how different types of titles (articles, books, journals)\nare formatted. Presets typically differ in whether titles are quoted, italicized,\nor plain.",
      "oneOf": [
        {
          "const": "apa",
          "description": "APA style: article titles plain, book/journal titles italic.\nExample: Article title. *Book Title*. *Journal Title*.",
          "type": "string"
        },
        {
          "const": "chicago",
          "description": "Chicago style: article titles quoted, book/journal titles italic.\nExample: \"Article Title.\" *Book Title*. *Journal Title*.",
          "type": "string"
        },
        {
          "const": "ieee",
          "description": "IEEE style: article titles quoted, book/journal titles italic.\nExample: \"Article title,\" *Book Title*. *Journal Title*.",
          "type": "string"
        },
        {
          "const": "humanities",
          "description": "Humanities style: monographs, periodicals, and serials all italic,\narticles plain. Common in geography, history, and social sciences.\nExample: Article title. *Book Title*. *Journal Title*. *Series Title*.",
          "type": "string"
        },
        {
          "const": "journal-emphasis",
          "description": "Journal-focused emphasis: periodicals and serials italic,\nmonographs plain.",
          "type": "string"
        },
        {
          "const": "scientific",
          "description": "Scientific/Vancouver style: all titles plain (no formatting).\nExample: Article title. Book title. Journal title.",
          "type": "string"
        }
      ]
    },
    "TitleRendering": {
      "description": "Rendering options for titles.",
      "properties": {
        "emph": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "locale-overrides": {
          "additionalProperties": {
            "$ref": "#/$defs/TitleRendering"
          },
          "type": [
            "object",
            "null"
          ]
        },
        "prefix": {
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "small-caps": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "strong": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "suffix": {
          "type": [
            "string",
            "null"
          ]
        },
        "text-case": {
          "anyOf": [
            {
              "$ref": "#/$defs/TextCase"
            },
            {
              "type": "null"
            }
          ],
          "description": "Text-case transform to apply to this title category."
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "TitleTerminator": {
      "description": "Terminator punctuation for bibliography titles.",
      "oneOf": [
        {
          "const": "period",
          "description": "Period.",
          "type": "string"
        },
        {
          "const": "comma",
          "description": "Comma.",
          "type": "string"
        },
        {
          "const": "none",
          "description": "No terminator.",
          "type": "string"
        }
      ]
    },
    "TitleType": {
      "description": "Types of titles.",
      "oneOf": [
        {
          "const": "primary",
          "description": "The primary title of the cited work.",
          "type": "string"
        },
        {
          "const": "parent-monograph",
          "description": "Title of a book/monograph containing the cited work.",
          "type": "string"
        },
        {
          "const": "parent-serial",
          "description": "Title of a periodical/serial containing the cited work.",
          "type": "string"
        }
      ]
    },
    "TitlesConfig": {
      "description": "Title formatting configuration by title type.",
      "properties": {
        "component": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitleRendering"
            },
            {
              "type": "null"
            }
          ],
          "description": "Formatting for component titles (articles, chapters)."
        },
        "container-monograph": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitleRendering"
            },
            {
              "type": "null"
            }
          ],
          "description": "Formatting for monograph containers (book containing chapters)."
        },
        "custom": {
          "additionalProperties": true,
          "description": "Custom user-defined fields for extensions.",
          "type": [
            "object",
            "null"
          ]
        },
        "default": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitleRendering"
            },
            {
              "type": "null"
            }
          ],
          "description": "Default formatting for all titles."
        },
        "monograph": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitleRendering"
            },
            {
              "type": "null"
            }
          ],
          "description": "Formatting for monograph titles (books)."
        },
        "periodical": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitleRendering"
            },
            {
              "type": "null"
            }
          ],
          "description": "Formatting for periodical titles (journals, magazines)."
        },
        "serial": {
          "anyOf": [
            {
              "$ref": "#/$defs/TitleRendering"
            },
            {
              "type": "null"
            }
          ],
          "description": "Formatting for serial titles (series)."
        },
        "type-mapping": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Mapping of reference types to title categories.\nCategory keys: monograph, periodical, component.\nExample: { \"thesis\": \"monograph\", \"article-journal\": \"periodical\" }",
          "type": "object"
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "TitlesConfigEntry": {
      "anyOf": [
        {
          "$ref": "#/$defs/TitlePreset",
          "description": "A named preset (e.g., \"apa\", \"chicago\", \"humanities\", \"scientific\")."
        },
        {
          "$ref": "#/$defs/TitlesConfig",
          "description": "Explicit title configuration."
        }
      ],
      "description": "Title config: either a preset name or explicit configuration.\n\nAllows styles to write `titles: apa` as shorthand, or provide\nfull explicit configuration with field-level overrides."
    },
    "TypeClass": {
      "description": "A coarse reference genre used as an optional gate on locator patterns.",
      "oneOf": [
        {
          "const": "legal",
          "description": "Legal citations (e.g., \"legal-case\", \"statute\")",
          "type": "string"
        },
        {
          "const": "classical",
          "description": "Classical works with traditional numbering",
          "type": "string"
        },
        {
          "const": "standard",
          "description": "Standard reference types",
          "type": "string"
        }
      ]
    },
    "TypeSelector": {
      "description": "Selector for reference types in overrides.\nCan be a single type string or a list of types.",
      "oneOf": [
        {
          "additionalProperties": false,
          "properties": {
            "Single": {
              "type": "string"
            }
          },
          "required": [
            "Single"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "Multiple": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "required": [
            "Multiple"
          ],
          "type": "object"
        }
      ]
    },
    "VerticalAlign": {
      "description": "Vertical text alignment relative to the baseline.",
      "oneOf": [
        {
          "const": "baseline",
          "description": "Render at the baseline (default).",
          "type": "string"
        },
        {
          "const": "superscript",
          "description": "Render as superscript.",
          "type": "string"
        },
        {
          "const": "subscript",
          "description": "Render as subscript.",
          "type": "string"
        }
      ]
    },
    "WrapConfig": {
      "description": "Wrapping punctuation and optional inner affixes applied around a rendered value.\n\nCombines the wrap punctuation with optional text that appears inside the wrap\n(between the wrap character and the rendered content).",
      "properties": {
        "inner-prefix": {
          "description": "Text inserted after the opening wrap character but before the content.",
          "type": [
            "string",
            "null"
          ]
        },
        "inner-suffix": {
          "description": "Text inserted after the content but before the closing wrap character.",
          "type": [
            "string",
            "null"
          ]
        },
        "punctuation": {
          "$ref": "#/$defs/WrapPunctuation",
          "description": "The wrapping punctuation style."
        }
      },
      "required": [
        "punctuation"
      ],
      "type": "object"
    },
    "WrapPunctuation": {
      "description": "Punctuation to wrap a component in.",
      "enum": [
        "parentheses",
        "brackets",
        "quotes"
      ],
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "The new Citum Style model.\n\nThis is the target schema for Citum, featuring declarative options\nand simple template components instead of procedural conditionals.",
  "properties": {
    "bibliography": {
      "anyOf": [
        {
          "$ref": "#/$defs/BibliographySpec"
        },
        {
          "type": "null"
        }
      ],
      "description": "Bibliography specification."
    },
    "citation": {
      "anyOf": [
        {
          "$ref": "#/$defs/CitationSpec"
        },
        {
          "type": "null"
        }
      ],
      "description": "Citation specification."
    },
    "custom": {
      "additionalProperties": true,
      "description": "Custom user-defined fields for extensions.",
      "type": [
        "object",
        "null"
      ]
    },
    "extends": {
      "anyOf": [
        {
          "$ref": "#/$defs/StyleReference"
        },
        {
          "type": "null"
        }
      ],
      "description": "Extends a base style, with optional local overrides.\n\nWhen present, the base [`StyleReference`](style_base::StyleReference) is resolved and the local\noverrides are merged before any further processing. Explicit `options`,\n`citation`, and `bibliography` keys at the same document level take\nprecedence over the resolved base."
    },
    "extends-pin": {
      "description": "Optional content-addressed integrity pin for the parent style referenced\nby [`extends`](Self::extends).\n\nWhen present, the resolver verifies that the SHA-256 of the fetched\nparent matches this CIDv1 string before merging. Mismatches abort\nresolution with [`ResolutionError::IntegrityFailure`]. Absent means\n\"no integrity check\" — appropriate for `file://` parents under user\ncontrol or trusted local registries.",
      "type": [
        "string",
        "null"
      ]
    },
    "info": {
      "$ref": "#/$defs/StyleInfo",
      "default": {},
      "description": "Style metadata."
    },
    "options": {
      "anyOf": [
        {
          "$ref": "#/$defs/Config"
        },
        {
          "type": "null"
        }
      ],
      "description": "Global style options."
    },
    "templates": {
      "additionalProperties": {
        "items": {
          "$ref": "#/$defs/TemplateComponent"
        },
        "type": "array"
      },
      "description": "Named reusable templates.",
      "type": [
        "object",
        "null"
      ]
    },
    "version": {
      "$ref": "#/$defs/SchemaVersion",
      "default": "0.59.0",
      "description": "Style schema version."
    }
  },
  "title": "Style",
  "type": "object",
  "unevaluatedProperties": false
}