Deep page

One topic in depth: the page head, the role switcher on role pages, a hub grid when the page is also a hub, the page body with On this page, related pages and the call to action.

Page · stable · v1.0.0 · owner: Site system lead · contract 19 of 20 points (open: figma)

Do and don't

Do: /product/see/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/product/shape/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /company/about/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /company/accessibility/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /company/engagement/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /company/identity/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /company/partners/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /company/trust/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/company/about/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/company/engagement/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/company/identity/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/demos/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/product/govern/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/product/loom-base/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/product/operations/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/product/run/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/product/security/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /ja/product/see/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /product/academy/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /product/agents-mcp/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /product/govern/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /product/loom-base/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /product/operations/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /product/operations/cost/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /product/run/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /product/security/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /product/shape/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /resources/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /resources/rubric/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/accessibility/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/ceo/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/content/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/cto/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/design-system-owners/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/designers/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/developers/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/ops-leads/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/organisations/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Do: /roles/product-managers/

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. Open associated page (declared association; rendered-page verification is separate).

Declared composition; rendered page verification is separate.

Don't: An unregistered block

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. No captured page instance is attached.

Pages compose only registered templates.

Don't: Two fields touching

Declared by deep.ts

A page declaration: page-head → persona-strip → tile-grid → prose-section → related → cta-section. No captured page instance is attached.

A field is always followed by cotton.

Rules

RuleWhyCheck
Built pages follow: header, page-head, persona-strip?, tile-grid?, prose-section, related?, cta-section, footer.A declared composition is what makes the page checkable and the site consistent.Automated: scripts/site/system/check-pages.ts (check_composition per page)

API

No props.

Contract details

The full contract: identity, anatomy, variants, states, tokens, layout, motion, accessibility, content, tests

Identity

AspectValue
Idpage-deep
LayerPages
Categorypage
OwnerSite system lead
Statusstable
Version1.0.0
Sourceapps/showcase/site/system/pages/deep.ts (private repository; the contract and the render function are this one module)
VersionDateChange
1.0.02026-10-26Deep page as one module: its markup moved out of the page builder (scripts/site) into the system.

Use when

  • Paths matching /^\/(ja\/)?(product|solutions|roles|resources|company|academy|demos)\/.*/. Fallback only when no specific matching composition applies. Why: Every page of this kind is composed the same way, so readers learn it once.

Do not use when

  • For a page with a different job. Why: A new kind of page gets its own declaration and review.

Anatomy

PartWhat it is
1page-head
2persona-strip (optional)
3tile-grid (optional)
4prose-section
5related (optional)
6cta-section

Made of: header, page-head, persona-strip, tile-grid, prose-section, related, cta-section, footer.

Used in: pages directly.

Variants

VariantWhenWhy
defaultWherever the page declaration places it.One shape per job keeps pages predictable.

States

StateRendered or not applicable
defaultdefault
hoverNot applicable: The deep page is not interactive, so it has no hover state.
focus-visibleNot applicable: The deep page does not take focus; links and buttons inside it carry their own focus ring.
activeNot applicable: The deep page cannot be pressed.
disabledNot applicable: The deep page has nothing to disable.
loadingNot applicable: The deep page is rendered at build time and is complete when the page loads.
emptyNot applicable: The deep page is not rendered without content; the builder skips it.
errorNot applicable: The deep page shows no data that can fail.
currentNot applicable: The deep page has no current item.
visitedNot applicable: The deep page is not a link.
expandedNot applicable: The deep page does not open or close.

Tokens

PartToken
page.ground--cotton

Layout

AspectValue
breakpointsRequired review at 390, 768, 1024 and 1440 px; execution is not implied by this declaration; columns stack under 768 px; the wrap keeps a 16 px gutter on phones.
wrappingText wraps; nothing scrolls sideways.
textExpansionJapanese runs 20 to 40% longer; headings break between phrases (jaBreaks) and blocks grow downwards.

Spacing and rhythm

AspectValue
internalEach template's own padding.
externalNone.
rhythmField, cotton, field: never two fields touching; the woven edge at each join (D-SITE-002, D-SITE-003).

Motion

AspectValue
NoneNo intrinsic element animation. The optional claude-entrance consumer profile may translate below-fold structure once (20px, --dur-weave, --ease-enter, --stagger); reduced motion disables it. This preserved baseline entrance is separate from element playback.

Runtime and reuse

  1. Render-only element; mount any registered child enhancements separately. Preserve required Site CSS, fonts, responsive and locale rules from nativeElement.

Accessibility passport

AspectValue
rolea landmark or list, as stated in its parts
nameIts visible text
keyboardLinks and buttons inside, in reading order.
focusThe --focus ring on every link and button inside.
screenReaderRead in source order; decorative weaving is aria-hidden.
contrastInk on cotton 14:1; text on every dye field 4.5:1 or better (checked by check-brand).
targetLinks and buttons are 44 px tall.

Content

SlotLengthVoice
page-head: topic title and ledeOne topic and promise within Page head limits.Say what this page explains and for whom.
prose-section: topic bodyRequired body with meaningful headings; persona strip, hub tiles and related links only in their declared optional positions.Explain actual behavior, examples and limitations before the shared closing action.

Good: “A security page explains data handling and links the documented limits.”

Bad: “A broad product promise with no explanation of the selected topic.”

Japanese: Use the existing localized page body and Japanese navigation when that route exists. Keep source evidence attributable; fallback route matching does not create translations or supersede more specific page kinds.

Icons and illustrations

None: this element uses no icon or illustration of its own.

Decisions and exceptions

Usage

58 uses across the built pages (measured by npm run site:system).

Tests

AspectValue
unittests/unit/site-system.test.ts: renders every do and don't example through the registry and checks the classes it owns
visualNot yet: there are no screenshot baselines; the Library page is checked for sideways scroll at 1440 px by tests/site/system.spec.ts
a11ytests/site/system.spec.ts: axe (0 serious or critical) on the element's Library page in light and dark
parityscripts/site/system/check.ts: Library examples are rendered by the same render function the site imports

Figma

not-yet: The Loom Site Figma library is the last stage of the plan; this element is not mapped yet.

Start with a conversation about your system.

We read your system, show you what we found, and agree with your team what to fix first.