Hosting
This route remains an internal static Astro reference and is marked noindex. Sanity Studio stays separate at entvex.sanity.studio.
Design system reference
Approved internal reference for public-site tokens, controls and Sanity-backed page sections. Each component sample is paired with the field behavior that the Astro frontend currently supports.
Reference decisions
This route remains an internal static Astro reference and is marked noindex. Sanity Studio stays separate at entvex.sanity.studio.
Manifests stay visible here so Sanity field behavior can be inspected without embedding Studio into the public app.
Component labels stay visible as reference markers. They describe samples, not public-page copy.
Framework, Studio hosting and publish-flow changes require a new ADR before implementation.
Typography
Display / hero scale
H1 visual scale - Manrope 800
H2 visual scale - section heading
H3 visual scale - subsection heading
H4 visual scale - component heading
H5 visual scale - dense heading
H6 visual scale - meta heading
Lead - Inter. A stronger introduction line has enough presence to bridge page titles and body copy.
Body - Inter. The quick brown fox jumps over the lazy dog while a clearer operating model takes shape across a comfortable measure.
Mono/meta - JetBrains Mono. ent + {v} -> ex
Cool gradient text
Warm gradient text
Brand colors
--ent-ink #112233 --ent-ink-deep #0A1828 --ent-blue #2F80ED --ent-blue-contrast #1267C6 --ent-teal #00A3A3 --ent-teal-contrast #00A3A3 --ent-bg-soft #F4F7FA --ent-divider #E1E7EE --ent-text-body #3A4856 --ent-text-muted #6B7785 V-Frame palette
vframe.vista #2F80ED Breadth, horizon, clarity and systemic overview.
vframe.vector #9B51E0 Strategic choice, transformation and intellectual leadership.
vframe.venture #F2994A Risk, experiment, novelty, creative energy and prototyping.
vframe.verity #27AE60 Truth, confirmation, green light, credibility and growth.
vframe.value #F2C94C Value, gold, profit, attention and exchange energy.
vframe.viability #F44747 Viability, criticality, survival energy and threshold loads.
vframe.velocity #56CCF2 Speed, flow, clean movement, technology and controlled kinetics.
vframe.vertex #6366F1 Peak, depth, systemic complexity and defensible advantage.
vframe.vow #00A3A3 Vow, trust, clarity, integrity and irreversible commitments.
Gradients
--ent-brand-grad --ent-grad-cool --ent-grad-warm Buttons
Use this inline text link example to compare links against CTA controls.
Buttons
Use this inline text link example to compare links against CTA controls on dark surfaces.
Chips & badges
Tag chips, outcome chips, system chips, clickable chips, detail chips and token-colored chips use separate visual patterns.
Section library
Each block below pairs a current sample render with the CMS fields the public frontend supports. This keeps design, content and implementation decisions in one internal reference.
Notation: * marks required fields. > marks nested fields such as cards, chips, steps and document topics.
heroSection Hero Section - Первый экран страницы: эйброу, заголовок, лид, поддерживающая строка, CTA и опциональная V-Frame диаграмма.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string* | rendered | |
lead | text | rendered | |
supportingLine | text | rendered | |
primaryCta | ctaLink | rendered | |
secondaryCta | ctaLink | rendered | |
microcopy | text | rendered | |
diagramRows[] | {label,summary,colorToken,meta} | rendered | Единственное место, где colorToken реально красит — полоса строки. |
visualAsset | assetReference | rendered | Media mode: full-bleed background image + video poster. Image/videoReady: side visual. Fallback when no diagramRows. |
backgroundVideoUrl | url | rendered | Media mode: full-bleed autoplay/muted/loop background video; visualAsset is the poster/fallback. |
backgroundMode | string (5 options) | rendered | media (full-bleed bg, text only) / systemArchitecture / gradient / image / videoReady. |
visualDirection | text | Design note for editors; intentionally not rendered. |
heroSection — все поля заполнены (9 строк диаграммы, оба CTA, microcopy) heroSection — gradient background + diagram Gradient hero
Gradient mode keeps the diagram and makes the first screen feel more decisive without requiring an image asset.
Use when the page needs a stronger transformation or technology signal.
Gradient mode still supports CTA hierarchy and microcopy.
heroSection — image mode with visualAsset Image hero
Image mode uses visualAsset as the side visual and keeps copy, supporting line, CTAs and caption readable.
Use when there is a real product, place, diagram or brand asset that clarifies the page.
Image captions render below the asset when present.
heroSection — videoReady mode with visualAsset Video-ready hero
Video-ready mode uses a dark surface and labels the visual slot, so a future poster or video asset has a distinct treatment.
Use only when the visual is meaningful enough to lead the first viewport.
No video runtime is introduced in Phase 1.
Video-ready asset heroSection — media (full-bleed background, text only) Media hero
Media mode renders the visual as a full-bleed background with a legibility scrim; the first screen carries text only.
Set a Background Video URL for an autoplaying, muted, looping hero; the visual asset becomes the poster.
Hero start screens carry text + background only (image or video).
textSection Text Section - Гибкий копи-блок (вступление / тезис / определение): заголовок, тело, маркеры, пул-цитата, CTA. 5 фонов.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
body | text | rendered | |
supportingPoints[] | string[] | rendered | Маркированный список. |
pullQuote | text | rendered | → <blockquote>. |
primaryCta | ctaLink | rendered | |
secondaryCta | ctaLink | rendered | |
appearance | string (5 фонов) | rendered | |
headingStyle | string (3 опции) | rendered | default / gradientCool / gradientWarm — градиентный заголовок (text-gradient--*) на светлом фоне. |
visualDirection | text | Design note for editors; intentionally not rendered. |
textSection — default, все поля textSection — appearance: soft Text
Тот же компонент, фон soft.
textSection — appearance: dark Text
Текст и кнопки автоматически светлеют.
textSection — appearance: gradient cool Text
Для моментов трансформации / технологий.
textSection — appearance: gradient warm Text
Для энергичных кампанийных моментов.
textSection — gradient heading on white Gradient heading
headingStyle renders the heading in a brand gradient on a light background — energy without a full gradient section.
richTextSection Rich Text Section - Длинный текст из Portable Text.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
content | block[] (Portable Text) | rendered | Shared Portable Text renderer: headings, paragraphs, lists, marks, links and blockquotes render. |
visualDirection | text | Design note for editors; intentionally not rendered. |
richTextSection — Portable Text renderer Rich text
Paragraph text keeps strong, emphasis and links.
Blockquote renders as a distinct long-form quote.
cardGridSection Card Grid Section - Сетка карточек — ключевой универсальный блок (возможности, ситуации, аудитория, пруфы, кейсы…).
Variant note: 9 вариантов в Sanity. Each variant now has a distinct grid or card treatment; ENT-DS-12 keeps shared rendering but differentiates the visual role of each variant.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
intro | text | rendered | |
variant | string (9 опций) | rendered | Controls variant-scoped grid and card treatment. |
items[] | card[] | rendered | |
outro | text | rendered | |
primaryCta | ctaLink | rendered | |
secondaryCta | ctaLink | rendered | |
appearance | string (5 фонов) | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. | |
› card.label | string | rendered | |
› card.title | string* | rendered | |
› card.body | text | rendered | |
› card.asset | assetReference | rendered | Renders in a stable media frame. |
› card.outputs[] | string[] | rendered | Список-результаты (исп. вариант detail). |
› card.href / linkLabel | string | rendered | Renders as a visible card link with an expanded hit area. |
› card.accentColorToken | string | rendered | Sets --card-accent for label, stripe, hover and output markers. |
› card.layoutHint | string (5 опций) | rendered | standard/compact/feature/dark/motionReady map to card layout classes. |
cardGridSection — variant: default (карточка со ВСЕМИ полями) cardGridSection — variant: situations (свой CSS: 4 колонки) Cards
Закрывающая строка.
cardGridSection — variant: capabilities cardGridSection — variant: detail (outputs) Cards
Со списком результатов.
Показывает двухколоночный output-rich layout.
cardGridSection — variant: vframe (soft) Cards
Горизонт возможностей.
Обязательство управлять.
cardGridSection — variant: proof (свой CSS, dark) Cards
Дифференциатор.
Дифференциатор.
Дифференциатор.
Дифференциатор.
cardGridSection — variant: caseTeaser cardGridSection — variant: fullWidthTiles cardGridSection — variant: motion Cards
Тонкие состояния движения.
Показывает, что эффект остаётся спокойным.
processSection Process Section - Последовательность шагов (диагностика → архитектура → запуск).
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
intro | text | rendered | |
steps[] | processStep[] | rendered | |
primaryCta | ctaLink | rendered | |
secondaryCta | ctaLink | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. | |
› step.label | string | rendered | |
› step.title | string* | rendered | |
› step.summary | text | rendered | |
› step.details | text | rendered | Secondary explanatory copy under the summary. |
› step.colorToken | string | rendered | Sets the step marker, connector and media accent. |
› step.asset | assetReference | rendered | Renders as an optional media panel for the step. |
processSection — timeline with details, colors and media Process
Контролируемое движение от запроса к системе.
Определить настоящую проблему.
Details остаются вторичным пояснением под summary.
Спроектировать систему.
Color token окрашивает маркер, линию и медиа-панель.
Сделать пригодным к использованию.
CTA стоит после всей последовательности и не разрывает шаги.
comparisonSection Comparison Section - Парные сравнения: до/после, было/стало.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
intro | text | rendered | |
pairs[] | {leftLabel,leftText,rightLabel,rightText} | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. |
comparisonSection — current / target pairs Comparison
Пары сравнения показывают переход от текущего состояния к целевой способности.
Фрагментированные усилия, разрозненные инструменты и решения, завязанные на отдельных людях.
Структурированная способность: роли, данные, ритмы и решения работают как единая система.
Команда реагирует на срочные запросы и теряет контекст между инициативами.
Работа управляется через понятный контур приоритетов, владельцев и обратной связи.
matrixSection Matrix Section - Матрица понятий (например 9 переменных V-Frame): метка, заголовок, смысл, ключевой вопрос, типовые результаты.
Variant note: 3 styles now render distinctly: threeByThree framework grid, phaseBands stacked methodology bands and routeMap sequence.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
intro | text | rendered | |
items[] | matrixItem[] | rendered | |
matrixStyle | string (3 опции) | rendered | Controls three distinct matrix layouts. |
visualDirection | text | Design note for editors; intentionally not rendered. | |
› item.label | string | rendered | |
› item.title | string* | rendered | |
› item.meaning | string | rendered | |
› item.question | string | rendered | |
› item.outputs[] | string[] | rendered |
matrixSection — matrixStyle: threeByThree Matrix
Nine-stage V-Frame rendered as a compact 3x3 methodology grid.
Breadth, horizon, clarity and systemic overview.
Ключевой вопрос?
Strategic choice, transformation and intellectual leadership.
Ключевой вопрос?
Risk, experiment, novelty, creative energy and prototyping.
Ключевой вопрос?
Truth, confirmation, green light, credibility and growth.
Ключевой вопрос?
Value, gold, profit, attention and exchange energy.
Ключевой вопрос?
Viability, criticality, survival energy and threshold loads.
Ключевой вопрос?
Speed, flow, clean movement, technology and controlled kinetics.
Ключевой вопрос?
Peak, depth, systemic complexity and defensible advantage.
Ключевой вопрос?
Vow, trust, clarity, integrity and irreversible commitments.
Ключевой вопрос?
matrixSection — matrixStyle: phaseBands Matrix
Stacked bands for methodology phases or operating layers.
Breadth, horizon, clarity and systemic overview.
What must be decided?
Strategic choice, transformation and intellectual leadership.
What must be decided?
Risk, experiment, novelty, creative energy and prototyping.
What must be decided?
Truth, confirmation, green light, credibility and growth.
What must be decided?
Value, gold, profit, attention and exchange energy.
What must be decided?
matrixSection — matrixStyle: routeMap Matrix
Sequential map for a journey, roadmap or staged transformation.
Value, gold, profit, attention and exchange energy.
What changes next?
Viability, criticality, survival energy and threshold loads.
What changes next?
Speed, flow, clean movement, technology and controlled kinetics.
What changes next?
Peak, depth, systemic complexity and defensible advantage.
What changes next?
Vow, trust, clarity, integrity and irreversible commitments.
What changes next?
accordionSection Accordion Section - Раскрывающиеся пункты / FAQ.
Variant note: default is a compact disclosure list; faq uses larger question cards and emits FAQPage JSON-LD.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
intro | text | rendered | |
variant | default | faq | rendered | Controls visual treatment and FAQPage structured data. |
items[] | {title, body} | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. |
accordionSection — variant: default Accordion
Use default accordions for optional supporting detail, not for the core proposition.
Use it when readers need to compare several related details or open only the items relevant to their situation.
Essential positioning, sales copy, next actions and key evidence should remain visible on the page.
Yes. The native details element allows multiple open items, which helps readers compare content.
accordionSection — variant: faq FAQ
FAQ variant uses question-style cards and emits structured data for complete question and answer pairs.
Yes. The public site can consume structured content from Sanity while keeping Studio separate from the public application.
Yes. When the section variant is faq and an item has both title and body, the renderer emits FAQPage JSON-LD.
No. If the answer is critical to conversion or trust, place it in visible page content instead of hiding it in an accordion.
quoteSection Quote Section - Крупная цитата / позиционное утверждение по центру.
Variant note: Single editorial treatment for manifesto, founder-note and client-proof quotes using current quote/attribution fields.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
quote | text* | rendered | |
attribution | string | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. |
quoteSection — editorial proof quote The strongest business work turns unclear intent into a decision that can be executed.
ctaSection CTA Section - Завершающая полоса с призывом к действию. 5 фонов (по умолчанию тёмный).
Variant note: Compact conversion band: copy stays short, primary action leads, secondary action supports, microcopy reassures.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string* | rendered | |
body | text | rendered | |
primaryCta | ctaLink | rendered | |
secondaryCta | ctaLink | rendered | |
microcopy | text | rendered | |
appearance | string (5 фонов) | rendered |
ctaSection — appearance: dark (default) Next step
Use the CTA band as a decisive final step after the page has already explained the value.
No generic discovery call. We start with the situation.
ctaSection — appearance: default (white) Contact
White CTAs work between dense sections when the page needs a clean conversion pause.
Response usually starts with one clarifying question.
ctaSection — appearance: soft Decision point
Soft CTAs are useful inside longer pages where the action should be clear but not loud.
Useful when the problem is still partly undefined.
ctaSection — appearance: gradient cool Transformation
Cool gradient CTAs signal technology, transformation or system-level work.
Best used once per page, near the final decision point.
ctaSection — appearance: gradient warm Momentum
Warm gradient CTAs should feel energetic without becoming another hero section.
Keep copy short so the action remains obvious.
contactSection Contact Section - Контактный блок: копи + рабочая лид-форма.
Variant note: Premium inquiry surface: visible email fallback, compact lead form, helper text, validation state and mock-safe delivery boundary.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
body | text | rendered | |
inquiryTypes[] | string[] | rendered | → опции селекта в форме. |
email | rendered | → mailto-ссылка. | |
primaryCta | ctaLink | rendered | |
secondaryCta | ctaLink | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. |
contactSection — form, email fallback and inquiry types Contact
Use the form for new ventures, B2B transformation work, partnerships or unclear operating constraints. Email remains visible as a direct fallback.
Prefer email? hello@entvex.com
chipListSection Chip List Section - Chip cloud, compact tag list or outcome-chip grid for tags, results and short capability clusters.
Variant note: Layouts are rendered through shared ChipCloud CSS: chipCloud is a flexible cloud, outcomeChips is a three-column outcome grid, inlineTags is a compact tag treatment.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
body | text | rendered | |
layout | string (3 options) | rendered | chipCloud / outcomeChips / inlineTags map to distinct layout and chip-density CSS. |
chips[] | chip[] | rendered | |
outro | text | rendered | |
primaryCta | ctaLink | rendered | |
secondaryCta | ctaLink | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. | |
› chip.label / description / href | string / text / string | rendered | |
› chip.colorToken | string | rendered | Sets --chip-accent when the token is supported by ChipCloud. |
› chip.tone | string | rendered | Supports default, system, outcome and accent tone classes. |
chipListSection — чипы с описанием и ссылкой Chips
Основной текст.
Закрывающая строка.
statsSection Stats Section - Числовые метрики.
Variant note: Use for 2-4 strong proof metrics. Each card should contain one clear value, one label and optional context note.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
intro | text | rendered | |
stats[] | {value*, label, note} | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. |
statsSection — compact proof metrics Stats
Use stats only when the numbers clarify scope, method or evidence.
routeSelectorSection Route Selector Section - Navigation cards for next-step, related-page and choose-your-route blocks.
Variant note: Routes use the card data shape but render through a route-specific navigation card: label, asset, outputs, linkLabel and accentColorToken are intentional route affordances.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
intro | text | rendered | |
routes[] | card[] (route-specific) | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. | |
› route.title | string* | rendered | |
› route.body | text | rendered | |
› route.href | string | rendered | |
› route.label | string | rendered | Optional route type or audience label. |
› route.asset | assetReference | rendered | Optional route visual at the top of the card. |
› route.outputs[] | string[] | rendered | Compact outcome list inside the linked card. |
› route.linkLabel | string | rendered | Visible action text; falls back to the shared read-more label. |
› route.accentColorToken | string | rendered | Sets the card stripe, label, outcome marker and link color. |
routeSelectorSection - next-step navigation cards Routes
Use this block when the user needs to choose a related page, capability area or next step.
articleListSection Article List Section - Manual editorial cards for insights, news and future thought-leadership lists.
Variant note: Current scope is curated manual items. `articleType` provides visible classification; automatic latest-article pulling requires a future query/schema contract.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
intro | text | rendered | |
articleType | news | insights | rendered | Renders as the card type label/fallback metadata; it does not auto-query articles yet. |
items[] | card[] (manual editorial) | rendered | |
visualDirection | text | Design note for editors; intentionally not rendered. | |
› item.label | string | rendered | Optional tag, date-like label or topic metadata next to articleType. |
› item.title | string* | rendered | |
› item.body | text | rendered | Editorial excerpt. |
› item.href / linkLabel | string | rendered | Visible link text with expanded card hit area. |
› item.asset | assetReference | rendered | Optional article visual. |
› item.outputs[] | string[] | rendered | Compact key takeaways or topics. |
› item.accentColorToken | string | rendered | Sets article stripe, type label, output marker and link color. |
articleListSection - curated insight cards Insights
Use this block for manually selected insights, news or editorial proof points.
A short editorial excerpt that explains why the article matters and what decision it supports.
Read insightUse the body as the article excerpt. Keep it concise enough to scan in a three-card row.
Read noteNews items can use the same manual card model while article automation remains future scope.
Read updateformulaSection Formula Section - Signature Entvex brand block that expresses the `ent + {v} -> ex` idea and explains each part.
Variant note: Use sparingly on identity, manifesto or methodology pages. Motion is intentionally static for now; recognition comes from typography, contrast and part explanations rather than animation.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
body | text | rendered | |
formula | string | rendered | Renders as a tokenized signature expression; known tokens `ent`, `{v}`, `ex`, `+` and `->` receive distinct styling. |
parts[] | card[] (via CardList) | rendered | Uses the shared base card renderer: asset, outputs, link, accentColorToken and layoutHint work. |
visualDirection | text | Design note for editors; intentionally not rendered. | |
› part.accentColorToken / layoutHint | string | rendered | Part cards should explain the formula, not act as a generic card grid. |
formulaSection - signature brand expression Formula
A compact way to explain how Entvex turns entities and variables into executable systems.
ent+{v}->ex

The business object, operating system or transformation context that needs to become readable.
The V-Frame lens: the variables that expose movement, constraints and leverage.
The usable result: a structure, system or next decision that can be operated.
mediaSection Media + Text Section - Stable image-and-text split block for editorial visuals, product/system diagrams and supporting case imagery.
Variant note: Current scope is image-only. Captions render below the image; `alt` is passed to the image element and should describe informative visuals. Video readiness is future scope.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
body | text | rendered | |
asset | assetReference (image + caption + alt) | rendered | Renders inside a stable media frame with fixed aspect-ratio rules. |
› asset.alt | string | rendered | Passed to the image `alt` attribute; empty alt remains decorative. |
› asset.caption | text | rendered | Renders below the media frame as secondary caption text. |
imagePosition | left | right | rendered | Controls desktop image side; mobile always reads copy first, media second. |
appearance | string (5 backgrounds) | rendered | Media frame and caption adapt across white, soft, dark and gradient backgrounds. |
primaryCta | ctaLink | rendered | |
secondaryCta | ctaLink | rendered |
mediaSection - image right with caption and CTA mediaSection - image left, soft background Media
Desktop placement can change, while mobile keeps copy first and media second for predictable reading.
mediaSection - dark background Media
The image shell, border, caption and CTA area remain legible when the section uses dark or gradient appearances.
docSection Document (TOC) Section - Long-form document benchmark for legal pages, methodology pages and structured reference content.
Variant note: Use docSection when content needs topic anchors, a table of contents and scroll-spy. Use richTextSection for shorter body copy that does not need in-page navigation.
| Field | Type | Status | Note |
|---|---|---|---|
blockName | string | CMS-only block label for editors. | |
eyebrow | string | rendered | |
heading | string | rendered | |
topics[] | {title, body} | rendered | Each topic becomes an anchored section and a TOC link. |
› topic.title | string* | rendered | Generates a unique anchor; duplicate titles receive numeric suffixes. |
› topic.body | block[] (Portable Text) | rendered | Uses the shared Portable Text HTML renderer with richTextSection. |
docSection - long-form TOC benchmark Document
Use this block for long content that benefits from topic anchors, a sticky table of contents and structured reading flow.
Portable Text marks such as strong text render through the shared renderer.
The content column stays constrained so legal, methodology and whitepaper-style pages remain readable.
A repeated title demonstrates unique anchor generation for duplicate topic labels.