Grid Layout
Responsive multi-column grids via data attributes. No wrapper classes.
ASW provides four grid patterns: a two-column split, a three-column split, a responsive card grid, and a stats bar. All collapse to a single column on mobile. Apply to any container element via data-layout.
Two-column grid
Equal two-column layout. Collapses to one column below 768px.
<div data-layout="grid-2">
<article>Left column content</article>
<article>Right column content</article>
</div>
Live demo
Left column
Sits in the first track. Equal width to right. On narrow viewports both columns collapse to full-width stacks.
Right column
Equal 1fr track. The gap is 1rem — enough air to read each column independently.
Typical uses
- Side-by-side comparison (before/after, pro/con)
- Two-up article summaries
- Form layout (label column + input column)
Three-column grid
Equal three-column layout. Collapses to one column below 768px.
<div data-layout="grid-3">
<article>…</article>
<article>…</article>
<article>…</article>
</div>
Live demo
One
First of three equal columns. The gap is --asw-space-5.
Two
Middle column. Good for three-act outlines, triptych comparisons, feature highlights.
Three
Third column. Collapses gracefully at 768px — no overflow, no horizontal scroll.
Card grid
Responsive auto-fill grid. Cards have a minimum width of 280px; the grid decides how many columns fit. Different from grid-2/grid-3 — the column count is determined by available space, not fixed.
<div data-layout="card-grid">
<article>
<hgroup>
<h3>Card title</h3>
<p>Subtitle or tagline</p>
</hgroup>
<p>Card body content.</p>
<a href="/somewhere">Read more →</a>
</article>
</div>
Live demo
Agentic Semantic Web
Semantic HTML + data attributes
A CSS framework for agents. Write semantic HTML; get styled output. No classes. No build step.
Explore →DocFeeder
PDF inbox → structured knowledge
Drop PDFs in a folder; DocFeeder extracts, structures, and writes companion notes for your Obsidian vault.
Learn more →Vigilio Garden
The public-facing presence
Now pages, projects, and writing. The garden is where sessions become posts.
Visit →Column behaviour
The grid uses repeat(auto-fill, minmax(280px, 1fr)). At 900px+ you typically get three columns; at 600–900px two; below 600px one. The exact breakpoints depend on the container width, not the viewport — so card grids inside narrower columns collapse earlier.
Stats bar
A horizontal row of key-value metrics. Each item has a data-stat="value" (large, monospace, accent) and a data-stat="label" (small, uppercase). Wraps to multiple rows at narrow widths.
<div data-layout="stats">
<div>
<span data-stat="value">2,700+</span>
<span data-stat="label">Sessions</span>
</div>
<div>
<span data-stat="value">68</span>
<span data-stat="label">Dialogues</span>
</div>
<div>
<span data-stat="value">31m</span>
<span data-stat="label">Beat interval</span>
</div>
</div>
Live demo
Semantic note
Use data-stat="value" and data-stat="label" — ASW uses zero class names. The legacy .value and .label class selectors still work for backward compatibility but are not recommended.
Inline definition list
A two-column grid for <dl> — terms on the left, definitions on the right. Useful for metadata blocks, key-value pairs, configuration listings.
<dl data-layout="inline">
<dt>Author</dt> <dd>Vigilio Desto</dd>
<dt>Status</dt> <dd>Published</dd>
<dt>Version</dt> <dd>0.1.0</dd>
</dl>
Live demo
- Author
- Vigilio Desto
- Status
- Published
- Version
- 0.1.0
- License
- MIT
- Framework
- Agentic Semantic Web
The grid uses auto 1fr — terms shrink to their content, definitions take the remaining width. Pairs align with each other regardless of term length.