AI-designed · Human-shipped · Built for the future

Build anything.
Style everything.
One hue changes it all.

VeloraCSS is an AI-designed utility-first CSS framework with Color Genetics, Container Intelligence, and zero-JS State Machines built in.

Color DNA
258°

One number. Every color on this page derives from it via oklch().

Badge
← all react to the hue
474KBfull bundle
29components
300+utilities
0dependencies
What makes Velora different

Frameworks don't
do this.

Three capabilities that no other utility framework ships out of the box. Each one replaces a category of JavaScript you no longer need to write.

01
Color Genetics

One hue = 50+ derived colors via oklch(). Perceptually uniform, mathematically coherent. Change a single number and the entire UI recolors.

/* The entire palette from one number */ --vel-dna-hue: 145; --vel-color-primary: oklch(65% 0.21 var(--vel-dna-hue));
--vel-dna-hue: 145
02
Zero-JS State Machine

CSS State Machine tabs and toggles via :has() and radio inputs. The browser tracks state. No JavaScript at all.

State is tracked by native radio input. CSS reads it via :has(:checked).
No event listeners. No useState. No re-renders. Just CSS selectors.
.tabs:has(#t1:checked) #panel-1
03
Container Intelligence

@container queries — components adapt to their own space, not the viewport. The same card stacks in a sidebar and reflows in a wide area.

@container (min-width: 460px) { .vel-cq-card { grid: auto / 200px 1fr; }} }
@container (min-width: 460px)
Rich component library

Every component included.

29 production-ready components, all as vel- classes. Open DevTools and inspect any element below — real framework classes, no tricks.

vel-btn — Button variants
vel-badge — Badge variants
PrimarySuccessDangerWarningInfoNeutralSolidSmallLarge
vel-alert — Alert variants
InfoSomething worth knowing about your project.
SuccessYour changes were saved successfully.
ErrorSomething went wrong. Please try again.
vel-card

Default card with hover lift. Uses framework border, shadow, and surface tokens.

vel-card-elevated

Elevated shadow variant. Borderless, deeper drop shadow for prominent content.

vel-card-primary

Brand-tinted surface with primary glow. Perfect for featured or highlighted items.

vel-input — Form inputs
Progress · Avatars · Spinners
JD
AK
MR
vel-skeleton — Loading states
Innovation 04 · Scope Theming

One stylesheet.
Infinite themes.

Set data-vel-theme on any element — every child instantly inherits a new color world. The same vel-btn and vel-badge classes, four different hues.

Default (Violet)
VeloraCSS
Same classes, different hue.
Badge
Ocean
VeloraCSS
Same classes, different hue.
Badge
Forest
VeloraCSS
Same classes, different hue.
Badge
Ember
VeloraCSS
Same classes, different hue.
Badge
data-vel-theme — default
Token Cascade
All colors inherit from theme
Zero JS Logic
One attribute, full retheme
Nestable
Themes can nest inside themes
Instant
CSS transitions handle everything
tokens.css
/* One line per theme — hue shift handles everything */
[data-vel-theme="ocean"]  { --vel-dna-hue: 205; }
[data-vel-theme="forest"] { --vel-dna-hue: 145; }
[data-vel-theme="ember"]  { --vel-dna-hue: 22;  }
[data-vel-theme="aurora"] { --vel-dna-hue: 300; }

/* All tokens derive from the hue — nothing to override */
--vel-color-primary: oklch(65% 0.21 var(--vel-dna-hue));
--vel-surface-1:     oklch(10% 0.025 var(--vel-dna-hue));

/* The entire theming "logic" in JavaScript: */
el.dataset.velTheme = 'ocean';
Innovation 01 · Color Genetics

One number.
An entire universe.

Other frameworks ship 1,540 hardcoded swatches. VeloraCSS generates every color mathematically from --vel-dna-hue using oklch(), the only perceptually uniform color space. Drag the hero slider — watch these react.

tokens.css
/* The entire palette from one variable */
--vel-dna-hue: 258;

/* All colors are derived — nothing hardcoded */
--vel-color-primary:  oklch(65% 0.21 var(--vel-dna-hue));
--vel-surface-0:      oklch(7%  0.02 var(--vel-dna-hue));
--vel-text-1:         oklch(92% 0.015 var(--vel-dna-hue));
--vel-border:         oklch(26% 0.045 var(--vel-dna-hue));

/* Change in JS with one line: */
document.documentElement.style
  .setProperty('--vel-dna-hue', 145);
Primaryoklch(65% 0.21 hue)
Primary Lightoklch(80% 0.14 hue)
Primary Dimoklch(50% 0.22 hue)
Surface 0oklch(7% 0.02 hue)
Surface 3oklch(17% 0.035 hue)
Borderoklch(26% 0.045 hue)
Text Primaryoklch(92% 0.015 hue)
Text Mutedoklch(50% 0.04 hue)
Auto-themed cardlive

Every color in this card derives from the DNA hue. Drag the slider above to see it react.

Innovation 02 · Container Intelligence

Components that
know their space.

VeloraCSS components watch themselves. Drag the box handle — the card reflows based on its own container width, not the screen size.

↙ Drag the bottom-right corner to resize
Container Query
Adapts to its space
Stacks in tight containers, reflows when there's room. No media queries.
velora.css
/* Mark the parent as a query context */
.vel-cq-wrapper {
  container-type: inline-size;
}

/* Component reacts to ITS container, not viewport */
@container (min-width: 460px) {
  .vel-cq-card {
    grid-template-columns: 200px 1fr;
  }
  .vel-cq-image {
    border-right: 1px solid var(--vel-border);
    border-bottom: none;
  }
}

/* Result: works in any layout — sidebar, grid, full-width */
/* No JavaScript. No class toggling. Just CSS. */
Innovation 03 · CSS State Machine

Tabs, toggles, state.
Zero JavaScript.

VeloraCSS uses :has() — the parent selector — to make containers aware of their children's state. Radio inputs drive the state machine. CSS reads which one is checked and updates the entire UI.

:has() makes parents aware of their children

The CSS :has() pseudo-class is the first true parent selector. It lets a container change its own styles based on what's happening inside it — without JavaScript reading the DOM.

Zero JS
State machine runs entirely in CSS
Cascades
Child state propagates to parent and siblings
Accessible
Native radio semantics, keyboard navigable
Performant
No JS parsing, no event listeners, no re-renders

The entire tab system is ~8 lines of CSS

These tabs are powered by a radio group + :has(). The browser tracks which radio is checked. CSS reads that state and updates the UI. Click between tabs — you're executing a state machine with zero JavaScript.

velora.css
/* Panel visibility — :has() reads radio state */
.vel-tabs:has(#tab-1:checked) #panel-1 { display: block; }
.vel-tabs:has(#tab-2:checked) #panel-2 { display: block; }

/* Active tab highlight — parent reacts to child state */
.vel-tabs:has(#tab-1:checked) label[for=tab-1] {
  color: var(--vel-color-primary);
  border-bottom-color: var(--vel-color-primary);
}

/* Zero JavaScript. Browser tracks state natively. */

What you'd write in another framework vs. VeloraCSS

JS framework approach
// JavaScript required
const [tab, setTab] = useState(0)

// Class toggling in JSX
className={tab === 0
  ? 'border-b-2 border-indigo-500'
  : 'text-gray-500'}

// Event handler
onClick={() => setTab(0)}
VeloraCSS approach
<!-- Just HTML + CSS, no JS -->
<input type="radio" id="t1" checked>
<label for="t1">Tab 1</label>

/* In CSS */
.vel-tabs:has(#t1:checked) #panel-1 {
  display: block;
}

The JS pattern requires a framework, component state, and event listeners. VeloraCSS requires none of that — it works in plain HTML.

Innovation 05 · Smart Forms

Form validation.
Zero JavaScript.

VeloraCSS uses :has() with :valid and :invalidto build a complete validation UI in pure CSS. Type in the fields below — labels change color, error messages appear, borders react. No JS needed.

At least 2 charactersName must be at least 2 charactersLooks good!
We'll never share your emailEnter a valid email addressValid email address
velora.css
/* :has() reads browser validity — no JS needed */

/* Label turns red when input is invalid */
.vel-field:has(.vel-input:invalid:not(:placeholder-shown)) label {
  color: oklch(65% 0.22 25);
}

/* Border + ring on invalid */
.vel-field:has(.vel-input:invalid:not(:placeholder-shown)) .vel-input {
  border-color: oklch(65% 0.22 25);
  box-shadow: 0 0 0 3px oklch(65% 0.22 25 / 0.12);
}

/* Show error message — CSS toggles visibility */
.vel-field:has(.vel-input:invalid:not(:placeholder-shown)) .vel-field-error {
  display: block; /* zero JS */
}

/* Valid state — green automatically */
.vel-field:has(.vel-input:valid:not(:placeholder-shown)) .vel-input {
  border-color: oklch(70% 0.2 162);
}
Get started in 60 seconds

Up and running,
three steps.

Install the package, import the stylesheet, use the classes. No configuration file required to get started.

Install the package
Terminal
npm install veloracss
Import the stylesheet
main.js
import 'veloracss/dist/velora.css'
Use vel- classes in HTML
index.html
<button class="vel-btn vel-btn-primary">
  Get Started
</button>

<div class="vel-card vel-p-6">
  <h2 class="vel-text-2xl vel-font-bold">Hello</h2>
  <p class="vel-text-muted vel-mt-2">It just works.</p>
</div>
Read the full docs →Open Playground
Real UIs, real components

Build anything
with vel- classes.

These components are rendered live using VeloraCSS utility classes — no custom stylesheets, no inline styles beyond what the framework provides.

Modern interior design
Design · Lifestyle

Modern Minimalism in Interior Design

How clean spaces and warm palettes transform everyday living environments into works of art.

Circuit board technology
Technology · Dev

AI-Generated CSS Frameworks Are Here

What happens when you let artificial intelligence design the utility classes that power your entire UI system?

Mountain landscape
Travel · Nature

The Peaks That Changed Everything

A journey through the world's most breathtaking mountain ranges and the lessons hidden at altitude.

Built with:vel-cardvel-btn-primaryvel-rounded-lgvel-text-whitevel-flexvel-gap-3vel-font-bold
300+utility classes
29components
6CSS innovations
0dependencies

AI-designed.
Human-shipped.

VeloraCSS is open source and free to use. Star the repo, open an issue, or submit a pull request — every contribution ships real CSS to real developers.

Star on GitHubGet Started →