A page that can grow
Start with the document and let the reading measure guide the layout.
19 examples. Use Compact to see how the same HTML reflows.
A bounded measure and wrapping actions keep the composition centered.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Vertical rhythm
Wrapping actions
<div class="marketing-specimen" data-theme="neutral" data-tone="sky" data-category="features" data-treatment="tiles">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-01-headline"><div class="marketing-composition" data-composition="center"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-01-headline">Six centered feature tiles</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Stack</h4>
<p>Vertical rhythm</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>Cluster</h4>
<p>Wrapping actions</p>
</li></ul></div></section>
</div>
</div>The tracks sit side by side when their container has room and stack in source order when it narrows.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
<div class="marketing-specimen" data-theme="neutral" data-tone="amber" data-category="features" data-treatment="art plain">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-02-headline"><div class="marketing-composition" data-composition="split"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-02-headline">Illustrated feature checklist</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><div class="marketing-composition" data-composition="split"><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li></ul><div class="marketing-art" aria-hidden="true"><i></i><i></i><i></i></div></div></div></section>
</div>
</div>Intrinsic tracks fit the available inline size and let content set the row height.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Vertical rhythm
Wrapping actions
<div class="marketing-specimen" data-theme="neutral" data-tone="neutral" data-category="features" data-treatment="plain">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-03-headline"><div class="marketing-composition" data-composition="grid"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-03-headline">Open six-feature grid</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Stack</h4>
<p>Vertical rhythm</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>Cluster</h4>
<p>Wrapping actions</p>
</li></ul></div></section>
</div>
</div>A bounded measure and wrapping actions keep the composition centered.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Vertical rhythm
Wrapping actions
<div class="marketing-specimen" data-theme="night-signal" data-tone="violet" data-category="features" data-treatment="plain">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-04-headline"><div class="marketing-composition" data-composition="center"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-04-headline">Violet icon feature grid</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Stack</h4>
<p>Vertical rhythm</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>Cluster</h4>
<p>Wrapping actions</p>
</li></ul></div></section>
</div>
</div>The tracks sit side by side when their container has room and stack in source order when it narrows.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation

<div class="marketing-specimen" data-theme="neutral" data-tone="neutral" data-category="features" data-treatment="portrait plain">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-05-headline"><div class="marketing-composition" data-composition="split"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-05-headline">Benefits beside a full-height photo</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><div class="marketing-composition" data-composition="split"><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li></ul><figure class="marketing-image"><img src="/_astro/marketing-portrait.BvfY0JqU.webp" width="1050" height="788" alt="A designer in a cobalt jacket" loading="lazy" decoding="async"></figure></div></div></section>
</div>
</div>A bounded measure and wrapping actions keep the composition centered.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Vertical rhythm
Wrapping actions
<div class="marketing-specimen" data-theme="paper" data-tone="paper" data-category="features" data-treatment="tiles">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-06-headline"><div class="marketing-composition" data-composition="center"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-06-headline">Centered low-contrast feature tiles</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Stack</h4>
<p>Vertical rhythm</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>Cluster</h4>
<p>Wrapping actions</p>
</li></ul></div></section>
</div>
</div>The tracks sit side by side when their container has room and stack in source order when it narrows.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Collect references
Draft the story
Review the layout
Share the edition
<div class="marketing-specimen" data-theme="neutral" data-tone="sky" data-category="features" data-treatment="board tiles">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-07-headline"><div class="marketing-composition" data-composition="split"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-07-headline">Outlined feature tiles beside a dashboard</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><div class="marketing-composition" data-composition="split"><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p>
</li></ul><figure class="marketing-board thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li><li class="thin-box"><strong>Ready</strong><p>Review the layout</p></li><li class="thin-box"><strong>Published</strong><p>Share the edition</p></li></ul>
</figure></div></div></section>
</div>
</div>Text measure and logical spacing control the reading rhythm.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Vertical rhythm
Wrapping actions
<div class="marketing-specimen" data-theme="neutral" data-tone="neutral" data-category="features" data-treatment="plain compact">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-08-headline"><div class="marketing-composition" data-composition="editorial"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-08-headline">Two-column list of compact features</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Stack</h4>
<p>Vertical rhythm</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>Cluster</h4>
<p>Wrapping actions</p>
</li></ul></div></section>
</div>
</div>Text measure and logical spacing control the reading rhythm.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
<div class="marketing-specimen" data-theme="neutral" data-tone="neutral" data-category="features" data-treatment="plain">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-09-headline"><div class="marketing-composition" data-composition="editorial"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-09-headline">Editorial lead and three features</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li></ul></div></section>
</div>
</div>The tracks sit side by side when their container has room and stack in source order when it narrows.
Start with readable content and let the composition grow around it.
Read the guideLive HTML updates
Server-rendered pages
Native submission and validation
<div class="marketing-specimen" data-theme="paper" data-tone="paper" data-category="features" data-treatment="links plain">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-10-headline"><div class="marketing-composition" data-composition="split"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-10-headline">Feature index and linked detail</h3>
<p>Start with readable content and let the composition grow around it.</p>
<a href="/guides/marketing-site/">Read the guide</a>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4><a href="/guides/live-updates/">Datastar</a></h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4><a href="/guides/server-rendered-app/">HTTP</a></h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4><a href="/guides/submit-form/">HTML forms</a></h4>
<p>Native submission and validation</p>
</li></ul></div></section>
</div>
</div>Text measure and logical spacing control the reading rhythm.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Vertical rhythm
Wrapping actions
<div class="marketing-specimen" data-theme="neutral" data-tone="rose" data-category="features" data-treatment="plain accent">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-11-headline"><div class="marketing-composition" data-composition="editorial"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-11-headline">Accent heading and open <em>feature tiles</em></h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Stack</h4>
<p>Vertical rhythm</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>Cluster</h4>
<p>Wrapping actions</p>
</li></ul></div></section>
</div>
</div>Sections keep their order and grow with the content.
Start with readable content and let the composition grow around it.
Start with the document and let the reading measure guide the layout.
Collect references
Draft the story
Review the layout
Collect references
Draft the story
Review the layout
Build around links, forms, and readable server responses.
Keep the first request light and let the browser do the layout work.
Collect references
Draft the story
Review the layout
<div class="marketing-specimen" data-theme="night-signal" data-tone="ink" data-category="features" data-treatment="device">
<div class="marketing-section">
<div class="thin-stack" data-space="l"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-12-headline">Dark device feature walkthrough</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><div class="marketing-composition" data-composition="split"><article class="thin-stack" data-space="xs"><h4><a href="/guides/content-website/">A page that can grow</a></h4><p>Start with the document and let the reading measure guide the layout.</p></article><figure class="marketing-board marketing-device thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li><li class="thin-box"><strong>Ready</strong><p>Review the layout</p></li></ul>
</figure></div>
<div class="marketing-composition" data-composition="media-first"><figure class="marketing-board marketing-device thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li><li class="thin-box"><strong>Ready</strong><p>Review the layout</p></li></ul>
</figure><article class="thin-stack" data-space="xs"><h4><a href="/guides/server-rendered-app/">The next action belongs in HTML</a></h4><p>Build around links, forms, and readable server responses.</p></article></div>
<div class="marketing-composition" data-composition="split"><article class="thin-stack" data-space="xs"><h4><a href="/guides/constrained-devices/">Design for a smaller device</a></h4><p>Keep the first request light and let the browser do the layout work.</p></article><figure class="marketing-board marketing-device thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li><li class="thin-box"><strong>Ready</strong><p>Review the layout</p></li></ul>
</figure></div></div>
</div>
</div>Sections keep their order and grow with the content.
Start with readable content and let the composition grow around it.
Start with the document and let the reading measure guide the layout.
Collect references
Draft the story
Review the layout
Collect references
Draft the story
Review the layout
Build around links, forms, and readable server responses.
Keep the first request light and let the browser do the layout work.
Collect references
Draft the story
Review the layout
<div class="marketing-specimen" data-theme="night-signal" data-tone="gradient" data-category="features" data-treatment="board">
<div class="marketing-section">
<div class="thin-stack" data-space="l"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-13-headline">Alternating gradient product panels</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><div class="marketing-composition" data-composition="split"><article class="thin-stack" data-space="xs"><h4><a href="/guides/content-website/">A page that can grow</a></h4><p>Start with the document and let the reading measure guide the layout.</p></article><figure class="marketing-board thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li><li class="thin-box"><strong>Ready</strong><p>Review the layout</p></li></ul>
</figure></div>
<div class="marketing-composition" data-composition="media-first"><figure class="marketing-board thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li><li class="thin-box"><strong>Ready</strong><p>Review the layout</p></li></ul>
</figure><article class="thin-stack" data-space="xs"><h4><a href="/guides/server-rendered-app/">The next action belongs in HTML</a></h4><p>Build around links, forms, and readable server responses.</p></article></div>
<div class="marketing-composition" data-composition="split"><article class="thin-stack" data-space="xs"><h4><a href="/guides/constrained-devices/">Design for a smaller device</a></h4><p>Keep the first request light and let the browser do the layout work.</p></article><figure class="marketing-board thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li><li class="thin-box"><strong>Ready</strong><p>Review the layout</p></li></ul>
</figure></div></div>
</div>
</div>Intrinsic tracks fit the available inline size and let content set the row height.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Vertical rhythm
Wrapping actions
Readable measure
Local padding
<div class="marketing-specimen" data-theme="neutral" data-tone="sky" data-category="features" data-treatment="tiles compact">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-14-headline"><div class="marketing-composition" data-composition="grid"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-14-headline">Eight compact feature cards</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 11rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Stack</h4>
<p>Vertical rhythm</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>Cluster</h4>
<p>Wrapping actions</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>Center</h4>
<p>Readable measure</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Box</h4>
<p>Local padding</p>
</li></ul></div></section>
</div>
</div>A bounded measure and wrapping actions keep the composition centered.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Vertical rhythm
Wrapping actions
<div class="marketing-specimen" data-theme="night-signal" data-tone="ink" data-category="features" data-treatment="tiles accent">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-15-headline"><div class="marketing-composition" data-composition="center"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-15-headline">Dark stage with tinted <em>feature cards</em></h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Stack</h4>
<p>Vertical rhythm</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>Cluster</h4>
<p>Wrapping actions</p>
</li></ul></div></section>
</div>
</div>Text measure and logical spacing control the reading rhythm.
Start with readable content and let the composition grow around it.
Read the guide<div class="marketing-specimen" data-theme="paper" data-tone="paper" data-category="features" data-treatment="plain compact links">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-16-headline"><div class="marketing-composition" data-composition="editorial"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-16-headline">Two-column help topics</h3>
<p>Start with readable content and let the composition grow around it.</p>
<a href="/guides/marketing-site/">Read the guide</a>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4><a href="/guides/live-updates/">Datastar</a></h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4><a href="/guides/server-rendered-app/">HTTP</a></h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4><a href="/guides/submit-form/">HTML forms</a></h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4><a href="/layouts/grid/">Grid</a></h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4><a href="/layouts/stack/">Stack</a></h4>
<p>Vertical rhythm</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4><a href="/layouts/cluster/">Cluster</a></h4>
<p>Wrapping actions</p>
</li></ul></div></section>
</div>
</div>Intrinsic tracks fit the available inline size and let content set the row height.
Start with readable content and let the composition grow around it.
Live HTML updates
Server-rendered pages
Native submission and validation
<div class="marketing-specimen" data-theme="neutral" data-tone="neutral" data-category="features" data-treatment="plain logos">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-17-headline"><div class="marketing-composition" data-composition="grid"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-17-headline">Features followed by partner marks</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p>
</li></ul></div><ul class="thin-grid marketing-collection marketing-marks" role="list" style="--thin-grid-min: 8rem"><li><strong>Fieldwork</strong></li><li><strong>Relay</strong></li><li><strong>Northline</strong></li><li><strong>Afterlight</strong></li><li><strong>Commonform</strong></li></ul></section>
</div>
</div>Intrinsic tracks fit the available inline size and let content set the row height.
Start with readable content and let the composition grow around it.
Live HTML updates
Collect references
Draft the story
Server-rendered pages
Collect references
Draft the story
Native submission and validation
Collect references
Draft the story
Intrinsic columns
Collect references
Draft the story
<div class="marketing-specimen" data-theme="night-signal" data-tone="violet" data-category="features" data-treatment="board tiles">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-18-headline"><div class="marketing-composition" data-composition="grid"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-18-headline">Violet grid of product screenshots</h3>
<p>Start with readable content and let the composition grow around it.</p>
</div><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4>Datastar</h4>
<p>Live HTML updates</p><figure class="marketing-board thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li></ul>
</figure>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4>HTTP</h4>
<p>Server-rendered pages</p><figure class="marketing-board thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li></ul>
</figure>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4>HTML forms</h4>
<p>Native submission and validation</p><figure class="marketing-board thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li></ul>
</figure>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4>Grid</h4>
<p>Intrinsic columns</p><figure class="marketing-board thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li></ul>
</figure>
</li></ul></div></section>
</div>
</div>The tracks sit side by side when their container has room and stack in source order when it narrows.
Start with readable content and let the composition grow around it.
Read the guideLive HTML updates
Server-rendered pages
Native submission and validation
Intrinsic columns
Vertical rhythm
Collect references
Draft the story
Review the layout
<div class="marketing-specimen" data-theme="neutral" data-tone="neutral" data-category="features" data-treatment="device links">
<div class="marketing-section">
<section class="thin-stack" aria-labelledby="marketing-features-19-headline"><div class="marketing-composition" data-composition="split"><div class="marketing-intro thin-stack" data-space="s">
<h3 class="marketing-display" id="marketing-features-19-headline">Premium feature index and device preview</h3>
<p>Start with readable content and let the composition grow around it.</p>
<a href="/guides/marketing-site/">Read the guide</a>
</div><div class="marketing-composition" data-composition="split"><ul class="thin-grid marketing-collection marketing-feature-list" role="list" style="--thin-grid-min: 13rem"><li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4><a href="/guides/live-updates/">Datastar</a></h4>
<p>Live HTML updates</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">✦</span>
<h4><a href="/guides/server-rendered-app/">HTTP</a></h4>
<p>Server-rendered pages</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">↗</span>
<h4><a href="/guides/submit-form/">HTML forms</a></h4>
<p>Native submission and validation</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">▥</span>
<h4><a href="/layouts/grid/">Grid</a></h4>
<p>Intrinsic columns</p>
</li>
<li class="marketing-card thin-stack" data-space="xs">
<span aria-hidden="true" class="marketing-mark">◆</span>
<h4><a href="/layouts/stack/">Stack</a></h4>
<p>Vertical rhythm</p>
</li></ul><figure class="marketing-board marketing-device thin-stack" data-space="s">
<figcaption>Project overview</figcaption>
<ul class="thin-grid marketing-collection " role="list" style="--thin-grid-min: 9rem"><li class="thin-box"><strong>Planned</strong><p>Collect references</p></li><li class="thin-box"><strong>In progress</strong><p>Draft the story</p></li><li class="thin-box"><strong>Ready</strong><p>Review the layout</p></li></ul>
</figure></div></div></section>
</div>
</div>Load Thin-Sky’s Foundation, Themes, Layouts, Components, and Marketing styles with these rules. Adapt the media, links, and form actions to your site.
@layer thin-patterns {
.marketing-specimen {
container: marketing-specimen / inline-size;
color: var(--thin-color-text);
background: var(--thin-color-surface);
}
.marketing-specimen[data-tone="sky"] { --thin-color-surface: oklch(96% .022 231); }
.marketing-specimen[data-tone="mint"] { --thin-color-surface: oklch(96% .035 155); }
.marketing-specimen[data-tone="rose"] { --thin-color-surface: oklch(96% .035 18); }
.marketing-specimen[data-tone="amber"] { --thin-color-surface: oklch(96% .06 91); }
.marketing-specimen[data-tone="blue"] { --thin-color-surface: oklch(39% .15 257); }
.marketing-specimen[data-tone="violet"] { --thin-color-surface: oklch(35% .16 290); }
.marketing-specimen[data-tone="gradient"] { background: linear-gradient(125deg, oklch(33% .13 272), oklch(37% .125 326)); }
.marketing-specimen[data-treatment~="accent"]:not([data-tone="gradient"]) {
background: radial-gradient(ellipse at 92% 88%, color-mix(in oklch, var(--thin-color-accent) 19%, transparent), transparent 60%), var(--thin-color-surface);
}
.marketing-section {
--marketing-inset: clamp(var(--thin-space-m), 5cqi, 4rem);
--marketing-gap: clamp(var(--thin-space-m), 4cqi, 3rem);
display: grid;
gap: var(--marketing-gap);
padding-block: clamp(var(--thin-space-l), 5cqi, 4rem);
padding-inline: var(--marketing-inset);
overflow-wrap: anywhere;
}
.marketing-section > *,
.marketing-composition > *,
.marketing-nav > *,
.marketing-card,
.marketing-board,
.marketing-section .thin-price-card {
min-inline-size: 0;
}
.marketing-specimen[data-category="navigations"] .marketing-section,
.marketing-specimen[data-treatment~="compact"]:not([data-category="headers"], [data-category="blog"]) .marketing-section {
padding-block: var(--thin-space-m);
}
.marketing-section :where(ul[role="list"], dl) { margin-block: 0; }
.marketing-section :where(a.thin-button, button) { max-inline-size: 100%; }
.marketing-composition {
display: grid;
gap: var(--marketing-gap);
}
.marketing-composition:is([data-composition="split"], [data-composition="media-first"]) {
grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr));
align-items: center;
}
.marketing-composition[data-composition="band"] {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
}
.marketing-composition[data-composition="band"] > .marketing-intro {
flex: 1 1 17rem;
}
.marketing-composition[data-composition="center"] > .marketing-intro,
.marketing-composition[data-composition="showcase"] > .marketing-intro {
align-items: center;
justify-self: center;
text-align: center;
}
.marketing-composition:is([data-composition="center"], [data-composition="showcase"]) > .marketing-intro .marketing-actions {
justify-content: center;
}
.marketing-composition[data-composition="editorial"] > .marketing-intro {
inline-size: min(100%, 62ch);
}
.marketing-intro {
inline-size: min(100%, 62ch);
}
.marketing-display {
max-inline-size: 23ch;
font-size: clamp(1.55rem, 1.05rem + 3.4cqi, 4rem);
line-height: 1.07;
letter-spacing: -.025em;
text-wrap: balance;
}
.marketing-display em {
color: var(--thin-color-accent);
font-style: normal;
}
.marketing-specimen[data-treatment~="light"] .marketing-display { font-weight: 430; }
.marketing-specimen[data-treatment~="uppercase"] :is(.marketing-display, .marketing-nav nav) { text-transform: uppercase; }
.marketing-specimen[data-treatment~="pill"] .thin-button { border-radius: 2em; }
.marketing-intro > p:not(.marketing-kicker) { max-inline-size: 54ch; }
.marketing-kicker { color: var(--thin-color-accent); font-size: .9em; font-weight: 700; }
.marketing-specimen[data-treatment~="pill"] .marketing-kicker { padding: .25em .8em; border: 1px solid currentColor; border-radius: 2em; inline-size: fit-content; }
.marketing-nav {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: var(--thin-space-xs) var(--thin-space-m);
}
.marketing-nav[data-nav="start"] > nav { flex: 1 1 auto; }
.marketing-nav[data-nav="band"] > nav { margin-inline-start: auto; }
.marketing-nav[data-nav="wordmark"] { justify-content: center; }
.marketing-nav > nav a,
.marketing-nav-actions > a:not(.thin-button) {
display: inline-flex;
align-items: center;
min-block-size: var(--thin-density-control);
}
.marketing-brand {
color: var(--thin-color-text);
font-size: 1.25em;
font-weight: 780;
text-decoration: none;
}
.marketing-stage,
.marketing-launch,
.marketing-cta,
.marketing-foot {
display: grid;
gap: var(--marketing-gap);
}
.marketing-stage {
position: relative;
isolation: isolate;
}
.marketing-stage .marketing-nav {
padding-block-end: var(--thin-space-s);
border-block-end: 1px solid var(--thin-color-border);
}
.marketing-stage:has(.marketing-backdrop) {
border-radius: var(--thin-radius-m);
padding: var(--marketing-inset);
overflow: clip;
}
.marketing-backdrop {
position: absolute;
inset: 0;
z-index: -1;
display: grid;
background: oklch(24% .04 258);
}
.marketing-backdrop img {
inline-size: 100%;
block-size: 100%;
object-fit: cover;
opacity: .23;
}
.marketing-panel {
padding: var(--marketing-inset);
border: 1px solid var(--thin-color-border);
border-radius: var(--thin-radius-m);
background: var(--thin-color-surface-raised);
}
.marketing-notice {
justify-content: center;
padding: var(--thin-space-xs) var(--thin-space-m);
border: 1px solid var(--thin-color-border);
border-radius: var(--thin-radius-s);
background: var(--thin-color-surface-raised);
}
.marketing-notice a { padding-block: var(--thin-space-2xs); }
.marketing-notice-inset { max-inline-size: 62ch; margin-inline: auto; }
.marketing-travel { display: grid; gap: var(--marketing-gap); align-items: center; }
@container marketing-specimen (inline-size >= 52rem) {
.marketing-travel { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.marketing-travel > figure { grid-column: 1 / 5; grid-row: 1; }
.marketing-travel > .marketing-panel { grid-column: 4 / -1; grid-row: 1; }
}
.marketing-image :is(img, video) {
inline-size: 100%;
block-size: auto;
border-radius: var(--thin-radius-m);
}
.marketing-image:only-child { inline-size: min(100%, 55rem); }
.marketing-composition[data-composition="showcase"] > .marketing-image { inline-size: min(100%, 56rem); justify-self: center; }
.marketing-collage {
display: grid;
grid-template-columns: 2fr 1fr;
gap: var(--thin-space-xs);
}
.marketing-collage img {
inline-size: 100%;
block-size: 100%;
min-block-size: 0;
object-fit: cover;
border-radius: var(--thin-radius-s);
}
.marketing-collage img:first-child { grid-row: span 2; }
.marketing-art {
display: grid;
place-items: center;
grid-template-columns: repeat(3, 1fr);
gap: 6%;
min-block-size: clamp(6rem, 25cqi, 16rem);
padding: 10%;
border-radius: var(--thin-radius-m);
background: color-mix(in oklch, var(--thin-color-accent) 14%, var(--thin-color-surface-raised));
}
.marketing-art i {
inline-size: 100%;
aspect-ratio: 1;
border: .2rem solid currentColor;
border-radius: 50% 50% 12% 50%;
color: var(--thin-color-accent);
background: color-mix(in oklch, currentColor 18%, transparent);
}
.marketing-art i:nth-child(2) { border-radius: 16%; translate: 0 -18%; }
.marketing-art i:nth-child(3) { border-radius: 50%; translate: 0 18%; }
.marketing-board {
padding: var(--thin-space-m);
border: 1px solid var(--thin-color-border);
border-block-start-width: .75rem;
border-radius: var(--thin-radius-m);
background: var(--thin-color-surface-raised);
}
.marketing-device { border-width: .65rem; }
.marketing-board figcaption { margin: 0; font-weight: 700; }
.marketing-board .thin-box { background: var(--thin-color-surface); }
.marketing-code > figcaption { margin-block-end: var(--thin-space-xs); }
.marketing-code pre { margin-block: 0; }
.marketing-marks {
align-items: stretch;
text-align: center;
}
.marketing-marks > li {
display: grid;
place-items: center;
min-block-size: 3rem;
padding: var(--thin-space-xs);
border: 1px solid var(--thin-color-border);
border-radius: var(--thin-radius-s);
font-family: var(--thin-font-display);
}
[data-treatment~="plain"] .marketing-marks > li { border-color: transparent; }
[data-treatment~="tiles"] .marketing-marks > li { background: var(--thin-color-surface-raised); }
.marketing-service-mark { font-weight: 750; }
.marketing-metrics dd { margin: 0; color: var(--thin-color-accent); font-size: var(--thin-text-1); font-weight: 720; }
.marketing-form {
inline-size: min(100%, 36rem);
text-align: start;
}
.marketing-form p { font-size: .9em; }
.marketing-form-fields {
display: grid;
gap: var(--thin-space-xs);
align-items: end;
}
.marketing-form-fields > * { min-inline-size: 0; }
:is(.marketing-form[data-form-layout="inline"], .marketing-search) .marketing-form-fields {
display: flex;
flex-wrap: wrap;
}
:is(.marketing-form[data-form-layout="inline"], .marketing-search) .marketing-form-fields > :is(.thin-field, input) {
flex: 1 1 12rem;
inline-size: auto;
}
.marketing-search { inline-size: min(100%, 40rem); text-align: start; }
.marketing-collection > * { min-inline-size: 0; }
.marketing-card {
block-size: 100%;
padding: var(--thin-space-m);
border: 1px solid var(--thin-color-border);
border-radius: var(--thin-radius-m);
background: var(--thin-color-surface-raised);
}
[data-treatment~="plain"] .marketing-card {
border-color: transparent;
background: transparent;
}
[data-treatment~="accent"] .marketing-card { border-block-start: .25rem solid var(--thin-color-accent); }
.marketing-card > img {
inline-size: 100%;
aspect-ratio: 3 / 2;
object-fit: cover;
border-radius: var(--thin-radius-s);
}
.marketing-mark,
.marketing-person-mark {
display: inline-grid;
place-items: center;
inline-size: 2.6em;
aspect-ratio: 1;
border-radius: 50%;
color: var(--thin-color-accent);
background: color-mix(in oklch, var(--thin-color-accent) 14%, var(--thin-color-surface-raised));
font-weight: 750;
}
.marketing-member { display: grid; align-content: start; gap: var(--thin-space-s); }
.marketing-member > img { aspect-ratio: 1; }
[data-treatment~="compact"] .marketing-member { grid-template-columns: auto minmax(0, 1fr); }
.marketing-quotation { max-inline-size: 62ch; }
[data-composition="center"] > .marketing-quotation { text-align: center; justify-self: center; }
[data-composition="center"] > .marketing-quotation .marketing-attribution { justify-content: center; }
.marketing-quotation blockquote { border: 0; padding: 0; color: var(--thin-color-text); font-size: var(--thin-text-1); }
.marketing-attribution { display: flex; flex-wrap: wrap; align-items: center; gap: var(--thin-space-xs); }
.marketing-questions { inline-size: 100%; text-align: start; }
.marketing-questions[data-questions="grid"] {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
align-items: start;
}
.marketing-answers { display: grid; gap: var(--thin-space-s); }
.marketing-questions details > p { margin-block-start: var(--thin-space-xs); }
[data-treatment~="plain"] .marketing-questions details { background: transparent; }
[data-treatment~="accent"] .marketing-questions details { border-inline: 0; border-block-start: 0; border-radius: 0; }
.marketing-offers { min-inline-size: 0; }
.marketing-offers fieldset { justify-self: start; }
.marketing-yearly { display: none; }
.marketing-offers:has(input[value="yearly"]:checked) .marketing-monthly { display: none; }
.marketing-offers:has(input[value="yearly"]:checked) .marketing-yearly { display: inline; }
.marketing-offers .thin-price small { font-size: .55em; }
.marketing-plan-title small { color: var(--thin-color-accent); font-weight: 700; }
.marketing-offers [data-composition="stack"] .thin-pricing { grid-template-columns: minmax(0, 1fr); }
[data-treatment~="accent"] .marketing-offers .thin-price-card { border-block-start: .3rem solid var(--thin-color-accent); }
.marketing-foot [data-composition="grid"] {
grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
}
.marketing-foot [data-composition="center"] {
justify-items: center;
text-align: center;
}
.marketing-foot nav > ul { margin-block-start: var(--thin-space-xs); }
.marketing-foot [data-composition="grid"] nav > ul { display: grid; }
.marketing-foot > small { border-block-start: 1px solid var(--thin-color-border); padding-block-start: var(--thin-space-s); }
@container marketing-specimen (inline-size >= 46rem) {
.marketing-stories > [data-lead] { grid-column: span 2; }
.marketing-nav[data-nav="brand-middle"] {
display: grid;
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
}
.marketing-nav[data-nav="brand-middle"] .marketing-nav-actions { justify-self: end; }
}
@media (forced-colors: active) {
.marketing-backdrop { display: none; }
.marketing-specimen, .marketing-card, .marketing-panel { background: Canvas; color: CanvasText; }
.marketing-kicker, .marketing-display em { color: CanvasText; }
}
}