TheLBO Gridis a CSS Grid‑based layout system designed to provide consistent, modular track widths for your application. Tracks are derived from abase content widthand ascale ratio, ensuring that all layout widths remain mathematically aligned.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quo amet inventore repellat soluta ducimus fugiat a numquam blanditiis, cupiditate nisi saepe voluptas fugit similique necessitatibus mollitia deleniti doloremque officia impedit qui atque, iusto assumenda. Ratione laboriosam aliquam blanditiis? Reprehenderit ea ad aperiam corrupti dignissimos ipsa ut autem consequuntur optio eligendi.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quo amet inventore repellat soluta ducimus fugiat a numquam blanditiis, cupiditate nisi saepe voluptas fugit similique necessitatibus mollitia deleniti doloremque officia impedit qui atque, iusto assumenda. Ratione laboriosam aliquam blanditiis? Reprehenderit ea ad aperiam corrupti dignissimos ipsa ut autem consequuntur optio eligendi.
full
,xwide
,wide
,pop
,cont
,inset
,narrow
, andtiny
.cont
(content) track unless otherwise specified.You configure the grid system usingCSS custom properties:
--lbo-w-cont
→ the base content max width (e.g.1060px
).--lbo-scale
→ the modular scale ratio (e.g.1.25
for Major Third,1.618
for Golden ratio).--lbo-sz-pad-min
→ the minimum side padding/gutter (default:2rem
).All other widths are derived automatically:
--lbo-w-pop
= content × scale--lbo-w-wide
= content × scale²--lbo-w-xwide
= content × scale³--lbo-w-inset
= content ÷ scale--lbo-w-narrow
= inset ÷ scale--lbo-w-tiny
= narrow ÷ scaleYou can opt into different ratios using thedata-scale
attribute:
<div class="lbo-layout" data-scale="golden"> … </div>
Available scales:
Each track has a matching utility class to place children:
.lbo-full
→ full width (edge to edge).lbo-full-pad
→ full width with side padding.lbo-xwide
→ extra wide.lbo-wide
→ wide.lbo-pop
→ popout.lbo-cont
→ content (the default track).lbo-inset
→ inset.lbo-narrow
→ narrow.lbo-tiny
→ tinyIf no utility class is assigned, elements placed directly inside.lbo-layout
will automatically use thecontent
track:
.lbo-layout > * {
grid-column: lbo-cont;
}
<div class="lbo-layout" data-scale="golden">
<header class="lbo-full-pad">Header</header>
<section class="lbo-pop">Popout content</section>
<main>Default content (no class) auto-placed</main>
<aside class="lbo-inset">Inset sidebar</aside>
<footer class="lbo-full">Footer</footer>
</div>
--lbo-w-cont
) — set the maximum reading width for body text. (Recommended start:~840–960px
for text-heavy,~1060px
for spacious marketing layouts.)--lbo-scale
) — pick the geometric ratio that defines all relationships. Golden ratio gives balanced steps; Major Third (1.25) is a solid default.--lbo-sz-pad-min
) — the minimum side gutter, adjusts with breakpoints.Asubgrid
cannot create grid tracks on its own — it must inherit them from a parentgrid
. In the LBO system, that parent is always.lbo-layout
(or.lbo-full-width
).
+----------------------------------------------------+ | .lbo-layout ← master grid container | | | | [lbo-full-start] ... [lbo-full-end] | | | | +--------------------------------------------+ | | | .lbo-subgrid (display:grid; subgrid cols) | | | | | | | | +------------------+ +----------------+ | | | | | .branding | | .nav | | | | | | .lbo-cont-start | | .lbo-cont-end | | | | | +------------------+ +----------------+ | | | +--------------------------------------------+ | | | +----------------------------------------------------+
- The outer.lbo-layout
defines named grid lines like[lbo-cont-start]
/[lbo-cont-end]
.
- The inner.lbo-subgrid
inherits those lines from its parent and re‑exposes them to its children.
- Children inside.lbo-subgrid
can now use.lbo-cont
,.lbo-pop
,.lbo-cont-start
, etc. just like direct children of.lbo-layout
.