schema: ai-cjm-component-contract/v1 id: article-content version: 1.0.0 status: stable owner: AI CJM Design purpose: Организует длинный case или editorial narrative в читаемую структуру. use_when: - Материал длиннее одного экранного блока и имеет несколько разделов. evidence: - id: production-style url: https://aicjm.ru/edu/cases/case.css?v=20260811-card-source locator: .case-article, .case-body, article, article section, article h2, article p, article ul supports: - anatomy - variant:case-study - size:default - state:default - id: production-dom url: https://aicjm.ru/edu/cases/goodwood/ locator: .case-story > .case-article > .case-section with .case-prose and .case-result-facts supports: - approved-example - content anatomy: - id: title required: true role: H1 документа. - id: lede required: false role: Краткое резюме. - id: section required: true role: Тематический раздел. - id: heading required: true role: Последовательный h2/h3. - id: media required: false role: Evidence-backed asset. - id: source required: false role: Locator для claims. variants: - id: case-study status: stable description: Задача → работа → артефакт → результат. evidence_refs: - production-style - id: editorial status: candidate description: Объясняющий материал. sizes: - id: default status: stable description: Размер определяется содержимым и перечисленными semantic/component tokens; raw dimensions запрещены. evidence_refs: - production-style states: default: status: stable basis: observed description: default is observed at the exact production locator in evidence_refs. evidence_refs: - production-style hover: status: not-applicable basis: not-applicable description: hover is not owned by article-content. focus-visible: status: not-applicable basis: not-applicable description: focus-visible is not owned by article-content. active: status: not-applicable basis: not-applicable description: active is not owned by article-content. selected: status: not-applicable basis: not-applicable description: selected is not owned by article-content. open: status: not-applicable basis: not-applicable description: open is not owned by article-content. disabled: status: not-applicable basis: not-applicable description: disabled is not owned by article-content. loading: status: not-applicable basis: not-applicable description: loading is not owned by article-content. success: status: not-applicable basis: not-applicable description: success is not owned by article-content. error: status: not-applicable basis: not-applicable description: error is not owned by article-content. empty: status: not-applicable basis: not-applicable description: empty is not owned by article-content. responsive: mode: measured-article-to-fluid-column reading_order: DOM order remains authoritative in every mode. rules: - Preserve heading hierarchy and source order. - Use the semantic content measure until the viewport requires fluid width. - Tables and code-like evidence scroll within their own region instead of widening the page. accessibility: pattern: semantic-long-form-article semantics: - Use article, one h1 and sequential heading levels; lists, figures and tables use native semantics. keyboard: - Reading content owns no keyboard behavior; links and scroll regions remain keyboard reachable. focus: - Skip links or page landmarks reach the article; focus is never moved while reading. motion: - Reading order and evidence remain complete with all motion disabled. tokens: - surface.page - text.primary - text.secondary - action.primary - type.size.body - type.line-height.body - type.size.heading-medium - type.weight.heading - layout.container-max content: required: - Один H1. - Последовательные headings. - Evidence locators. constraints: - Не пропускать уровень heading. - Длина строки ограничивается читаемой колонкой semantic layout. do: - Использовать списки и таблицы по смыслу. dont: - Не выделять каждый абзац новой карточкой. examples: approved: status: stable description: Компонент article-content в указанном scoped production locator. evidence: https://aicjm.ru/edu/cases/goodwood/ prohibited: description: Не выделять каждый абзац новой карточкой. acceptance: - id: article-content-1 criterion: Heading outline логичен. method: manual - id: article-content-2 criterion: Claims имеют источник. method: manual