Skip to main content
Full documentation available at velinstyle.info — This is the quick reference. Visit the full docs for 80+ pages with live examples, API tables, and guides.

Layout System

VelinStyle provides a complete layout toolkit — containers, a responsive 12-column grid, flex utilities, container queries, and ready-made page layout patterns. Everything uses CSS custom properties and logical properties for full RTL support.

Container

The .velin-container centers content and constrains its width at each breakpoint. It also establishes a container query context named velin.

Default Container

.velin-container — centered, width capped per breakpoint
<div class="velin-container">
  <!-- Content centered with responsive max-width -->
</div>

Container Variants

.velin-container--narrow (max 40rem)
.velin-container (default)
.velin-container--wide (max 96rem)
.velin-container--fluid (no max-width)
<div class="velin-container velin-container--narrow">...</div>
<div class="velin-container">...</div>
<div class="velin-container velin-container--wide">...</div>
<div class="velin-container velin-container--fluid">...</div>

Responsive Width Table

BreakpointMin WidthContainer Max Width
Default—100%
sm36rem (576px)33rem
md48rem (768px)45rem
lg62rem (992px)60rem
xl80rem (1280px)76rem
2xl96rem (1536px)90rem

Grid System

A responsive 12-column grid built on CSS Grid. Use .velin-grid for the container and .velin-col-* classes for column spans.

Equal Columns

1 / 3
2 / 3
3 / 3
<div class="velin-grid velin-grid--cols-3">
  <div>1 / 3</div>
  <div>2 / 3</div>
  <div>3 / 3</div>
</div>

12-Column Spans

col-4
col-8
col-3
col-6
col-3
2
2
2
2
2
2
<div class="velin-grid velin-grid--cols-12">
  <div class="velin-col-4">col-4</div>
  <div class="velin-col-8">col-8</div>
</div>

<div class="velin-grid velin-grid--cols-12">
  <div class="velin-col-3">col-3</div>
  <div class="velin-col-6">col-6</div>
  <div class="velin-col-3">col-3</div>
</div>

Full-Width Column

.velin-col-full (spans all 12 columns)
<div class="velin-grid velin-grid--cols-12">
  <div class="velin-col-full">Full width</div>
</div>

Auto-Fit Grid

Cards automatically wrap and fill available space with .velin-grid--auto-fit.

Auto 1
Auto 2
Auto 3
Auto 4
Auto 5
<div class="velin-grid velin-grid--auto-fit">
  <div>Auto 1</div>
  <div>Auto 2</div>
  <div>Auto 3</div>
  <div>Auto 4</div>
  <div>Auto 5</div>
</div>

Gap Modifiers

gap-2
gap-2
gap-2
gap-2
gap-8
gap-8
gap-8
gap-8
<div class="velin-grid velin-grid--cols-4 velin-grid--gap-2">...</div>
<div class="velin-grid velin-grid--cols-4 velin-grid--gap-8">...</div>

Dense flow and app template

.velin-grid--flow-dense enables grid-auto-flow: dense. Combine .velin-grid.velin-grid--areas-app with .velin-area-head, .velin-area-side, .velin-area-main on children for a named dashboard grid.

<div class="velin-grid velin-grid--gap-4 velin-grid--areas-app">
  <header class="velin-area-head">…</header>
  <aside class="velin-area-side">…</aside>
  <main class="velin-area-main" id="main">…</main>
</div>

Grid API Reference

ClassDescription
.velin-gridGrid container with default gap
.velin-grid--cols-{1-4,6,12}Set equal column count
.velin-grid--auto-fitAuto-fit columns (min 16rem)
.velin-grid--auto-fillAuto-fill columns (min 16rem)
.velin-col-{1-12}Span N columns
.velin-col-fullSpan all columns
.velin-grid--gap-{0,2,4,6,8}Gap size modifier
.velin-grid--items-{start,center,end,stretch}Cross-axis alignment
.velin-grid--flow-denseDense auto-placement
.velin-grid--areas-app + .velin-area-*Named template for header / sidebar / main

Flex Utilities

Compose one-dimensional layouts with .velin-flex and its modifiers for direction, alignment, wrapping, and gap.

Row (default)

Item A
Item B
Item C
<div class="velin-flex">
  <div>Item A</div>
  <div>Item B</div>
  <div>Item C</div>
</div>

Column

Row 1
Row 2
Row 3
<div class="velin-flex velin-flex--col">
  <div>Row 1</div>
  <div>Row 2</div>
  <div>Row 3</div>
</div>

Justify Content

.velin-flex--justify-between

Start
Middle
End

.velin-flex--justify-center

Centered
Items

.velin-flex--justify-evenly

A
B
C
<div class="velin-flex velin-flex--justify-between">...</div>
<div class="velin-flex velin-flex--justify-center">...</div>
<div class="velin-flex velin-flex--justify-evenly">...</div>

Align Items

Short
Tall item
Short
<div class="velin-flex velin-flex--items-center">
  <div>Short</div>
  <div style="padding-block:1.5rem">Tall item</div>
  <div>Short</div>
</div>

Wrap & Gap

Tag 1
Tag 2
Tag 3
Tag 4
Tag 5
Tag 6
Tag 7
<div class="velin-flex velin-flex--wrap velin-flex--gap-3">
  <div>Tag 1</div>
  <div>Tag 2</div>
  <!-- ... -->
</div>

Child Utilities

Fixed
.velin-flex__grow — fills remaining space
Fixed
<div class="velin-flex">
  <div>Fixed</div>
  <div class="velin-flex__grow">Fills remaining space</div>
  <div>Fixed</div>
</div>

Stack & Cluster

.velin-stack

Stacked 1
Stacked 2
Stacked 3

.velin-cluster

Chip
Chip
Chip
Chip
Chip
<div class="velin-stack">...</div>   <!-- vertical flex, gap-4 -->
<div class="velin-cluster">...</div> <!-- horizontal wrap, gap-4, items-center -->

Flex API Reference

ClassDescription
.velin-flexFlex container (row, gap-4)
.velin-flex--inlineInline flex
.velin-flex--colColumn direction
.velin-flex--row-reverseReversed row
.velin-flex--col-reverseReversed column
.velin-flex--wrapEnable wrapping
.velin-flex--justify-{start,center,end,between,around,evenly}Main axis alignment
.velin-flex--items-{start,center,end,baseline,stretch}Cross axis alignment
.velin-flex--gap-{0-8}Gap size modifier
.velin-flex__growChild: flex-grow: 1
.velin-flex__shrinkChild: flex-shrink: 1
.velin-flex__noshrinkChild: flex-shrink: 0
.velin-flex__autoChild: flex 1 1 auto
.velin-flex__noneChild: flex none
.velin-stackVertical flex stack
.velin-clusterHorizontal wrapping cluster

Container Queries

VelinStyle uses container queries (not just media queries) so grid layouts adapt to their container width, not the viewport. The .velin-container class sets container-type: inline-size and container-name: velin automatically.

Responsive Grid via Container

These grids start at 1 column and increase column count based on the container width — resize your browser to see the effect.

Card 1
Card 2
Card 3
Card 4
<div class="velin-container">
  <!-- container-name: velin is set automatically -->
  <div class="velin-grid velin-grid--cols-1 velin-grid--sm-cols-2 velin-grid--md-cols-3 velin-grid--lg-cols-4">
    <div>Card 1</div>
    <div>Card 2</div>
    <div>Card 3</div>
    <div>Card 4</div>
  </div>
</div>

Container Query Breakpoints

Container QueryMin WidthAvailable Grid Classes
@container velin (min-width: 36rem)576px--sm-cols-{2,3,4}
@container velin (min-width: 48rem)768px--md-cols-{2,3,4,6}
@container velin (min-width: 62rem)992px--lg-cols-{3,4,6,12}

Nested Container Demo

Place content inside a narrower container to see how container queries respond independently from the viewport.

This container is max 32rem wide

A
B

Layout Patterns

Ready-made page-level layouts for common application shells. Apply a single class to your wrapper element and drop in your content.

.velin-layout-sidebar

Sidebar + main content. Collapses to a single column below 48rem.

Sidebar

Navigation, filters, etc.

Main Content

Your primary content area fills the remaining space.

<div class="velin-layout-sidebar">
  <aside>Sidebar</aside>
  <main>Main Content</main>
</div>

.velin-layout-holy-grail

Classic layout with full-width header/footer and a sidebar beside the main content.

Header (full width)

Sidebar

Content

Main area grows to fill available space.

Footer (full width)
<div class="velin-layout-holy-grail">
  <header>Header</header>
  <aside>Sidebar</aside>
  <main>Content</main>
  <footer>Footer</footer>
</div>

.velin-layout-sticky-footer

Footer always sits at the bottom, even with minimal content. The <main> grows to fill available space.

<div class="velin-layout-sticky-footer">
  <header>Header</header>
  <main>Content (grows)</main>
  <footer>Sticky Footer</footer>
</div>

.velin-layout-center

Perfectly centers content both horizontally and vertically using place-items: center.

Centered Content

Great for login pages, empty states, or loading screens.

<div class="velin-layout-center">
  <div>Centered content</div>
</div>

.velin-layout-pancake

Three-row stack where the middle row expands to fill all remaining space. Header and footer get auto height.

Top (auto)

Middle row — expands to fill (1fr)

Bottom (auto)
<div class="velin-layout-pancake">
  <header>Top</header>
  <main>Middle (expands)</main>
  <footer>Bottom</footer>
</div>

.velin-layout-aside-main

Main content with a right sidebar (20rem). Collapses to single column below 56rem.

Main Content

Primary content takes 1fr of available space. Great for article layouts with a table of contents or related links on the side.

Right Sidebar

Fixed 20rem width.

<div class="velin-layout-aside-main">
  <main>Main Content</main>
  <aside>Right Sidebar</aside>
</div>

.velin-layout-split

Two equal columns with gap; stacks to one column below 48rem.

Column A
Column B

.velin-layout-dashboard

Expected direct children: header, aside, main (in that order).

Header
Nav
Main

.velin-layout-auth

Full-viewport centered shell. Place a card in .velin-layout-auth__panel.

Auth panel

Login / register forms

Layout Patterns API

ClassLayoutCollapse
.velin-layout-sidebarSidebar (12-16rem) + Main≤ 48rem
.velin-layout-holy-grailHeader, Sidebar + Main, Footer≤ 48rem
.velin-layout-sticky-footerFlex column, main growsN/A
.velin-layout-centerGrid place-items: centerN/A
.velin-layout-pancakeauto / 1fr / auto rowsN/A
.velin-layout-aside-mainMain + Right sidebar (20rem)≤ 56rem
.velin-layout-splitTwo equal columns≤ 48rem
.velin-layout-dashboardHeader + sidebar + main (3 children)≤ 48rem
.velin-layout-authCentered auth shell + .velin-layout-auth__panelN/A

Breakpoints

VelinStyle defines five breakpoint tokens as CSS custom properties. The framework uses a mobile-first min-width media query strategy.

Breakpoint Tokens

TokenValuePixelsTypical Use
--velin-bp-sm36rem576pxLarge phones / landscape
--velin-bp-md48rem768pxTablets
--velin-bp-lg62rem992pxSmall desktops / laptops
--velin-bp-xl80rem1280pxDesktops
--velin-bp-2xl96rem1536pxLarge desktops

Visual Reference

sm
576px
md
768px
lg
992px
xl
1280px
2xl
1536px

Media Query Strategy

VelinStyle is mobile-first. Base styles target the smallest screens, then progressive enhancements are added at each breakpoint using min-width:

/* Base: mobile-first (all widths) */
.my-component { flex-direction: column; }

/* sm: 36rem / 576px and up */
@media (min-width: 36rem) {
  .my-component { flex-direction: row; }
}

/* md: 48rem / 768px and up */
@media (min-width: 48rem) {
  .my-component { gap: var(--velin-space-6); }
}

/* lg: 62rem / 992px and up */
@media (min-width: 62rem) {
  .my-component { max-inline-size: 60rem; }
}

Container Queries vs Media Queries

When to use which?

Use media queries for page-level layout decisions (sidebar collapse, navigation changes). Use container queries for component-level responsiveness (card grid columns, component density). VelinStyle's responsive grid classes (--sm-cols-*, --md-cols-*, --lg-cols-*) use container queries so components work correctly regardless of where they are placed.

Layout audit (0.8.0)

Prüfe HTML auf typische Flex-, Grid- und Responsive-Fehler. Ausführlich: Responsive Layout Guide.

npx velinstyle layout audit ./samples
npx velinstyle layout suggest page.html
npx velinstyle layout fix page.html --write

Theme waehlen