quell Core v1.0.0
Overview & System Role
quell-core.css is the unlayered reference theme sheet and formal override surface that sits directly above quell-base.css in the Quell cascade contract.
Load Order
quell-base.css(foundation, ghost_tokens, normalization, framework layers)quell-core.css(reference theme + override surfaces)- Brand/theme implementations (example:
quell-light.css) - Application-specific styles
Why It Wins Without !important
Quell uses modern cascade architecture instead of specificity escalation:
| Mechanism | Result |
|---|---|
| Surface A tokens outside layers | Override layered token values automatically |
| Surface B layer append | Extends named layers without selector inflation |
| Surface C unlayered selectors | Outrank all layered rules regardless of specificity |
:where() selectors |
Zero specificity overhead |
No !important |
Predictable override behavior |
Rationale
The system separates cascade control from selector specificity. Overrides occur through layer ordering and token replacement rather than selector wars.
Override Surface Matrix
| Override Channel | Specificity Cost | Primary Target Elements | Core Architectural Purpose | Target Volume / Chapter |
|---|---|---|---|---|
| Surface A — Token Override | 0 | Design tokens | Theme replacement | Tokens & Theming |
| Surface B — Layer Append | Varies by selector | Framework layers | Extend existing architecture | Cascade Layers |
| Surface C — Unlayered Rules | Selector-native | Components | Guaranteed downstream wins | Component Architecture |
Token System Deep-Dive
Font Architecture
| Family | Style | Weight Range | Display |
|---|---|---|---|
| Fraunces | Normal | 100–900 | swap |
| Fraunces | Italic | 100–900 | swap |
| Nunito | Normal | 300–900 | swap |
| Nunito | Italic | 300–900 | swap |
| JetBrains Mono | Normal | 300–800 | swap |
| JetBrains Mono | Italic | 300–800 | swap |
Rationale
Fonts are loaded before token declaration so typography tokens resolve immediately and avoid layout instability.
Typography Tokens
| Token | Value |
|---|---|
--font-fam-primary |
"Nunito", "Calibri", "Trebuchet MS", sans-serif |
--font-fam-secondary |
"Fraunces", "Georgia", "Garamond", "Times New Roman", serif |
Rationale
Primary typography optimizes readability while secondary typography provides editorial hierarchy.
Accent System
| Token | Value |
|---|---|
--color-accent |
#ff3d40 |
--color-accent-hover |
oklch(65.735% 0.2289 25.532 / 0.8) |
--color-accent-subtle |
rgba(255, 61, 64, 0.1) |
--shadow-focus |
0 0 0 3px rgba(255, 61, 64, 0.35) |
Rationale
The accent system centralizes interaction feedback, focus visibility, hover states, alerts, and action affordances.
Surface & Text Tokens — Light Mode
| Token | Value |
|---|---|
--color-surface |
#f2f2f4 |
--color-surface-subtle |
#f4f7f9 |
--color-surface-raised |
#f2f2f4 |
--color-text-primary |
#191970 |
--color-text-secondary |
#35454f |
--color-text-muted |
#616b7e |
--color-text-inverse |
#f2f2f4 |
--color-border |
#dddddd |
--color-border-strong |
#cccccc |
Surface & Text Tokens — Dark Mode
Media query: @media (prefers-color-scheme: dark)
| Token | Value |
|---|---|
--color-surface |
#121245 |
--color-surface-subtle |
#05052e |
--color-surface-raised |
#1e1e5a |
--color-text-primary |
#f2f2f4 |
--color-text-secondary |
#eeeeee |
--color-text-muted |
#616b7e |
--color-text-inverse |
#05052e |
--color-border |
#35428f |
--color-border-strong |
#4d616e |
--color-accent-subtle |
rgba(255, 61, 64, 0.125) |
--shadow-focus |
0 0 0 3px rgba(255, 61, 64, 0.5) |
Rationale
Dark mode swaps semantic roles rather than component rules. Components continue referencing the same tokens while values change automatically.
Radius Tokens
| Token | Value |
|---|---|
--radius-sm |
0.25rem |
--radius-md |
0.5rem |
--radius-lg |
0.75rem |
--radius-xl |
1rem |
--border-radius-sm |
0.25rem |
--border-radius-md |
0.5rem |
--border-radius-lg |
0.75rem |
--border-radius-xl |
1rem |
Rationale
A friendly rounded geometry establishes a consumer-oriented personality while preserving tokenized replacement capability.
Motion Tokens
| Token | Value |
|---|---|
--duration-fast |
0.15s |
--duration-base |
0.3s |
--duration-slow |
0.5s |
--ease-default |
ease-in-out |
Rationale
Motion is standardized into three interaction tiers: micro, component, and page-level transitions.
Shadow Tokens
Light Mode
| Token | Value |
|---|---|
--shadow-sm |
0 0.375rem 0.5625rem -0.25rem oklch(10.668% 0.00001 271.152 / 0.1) |
--shadow-md |
0 0.5625rem 0.843rem -0.375rem oklch(10.668% 0.00001 271.152 / 0.125) |
Dark Mode
| Token | Value |
|---|---|
--shadow-sm |
0 0.375rem 0.5625rem -0.25rem oklch(10.668% 0.00001 271.152 / 0.3) |
--shadow-md |
0 0.5625rem 0.843rem -0.375rem oklch(10.668% 0.00001 271.152 / 0.4), 0 0.25rem 0.5rem -0.375rem oklch(10.668% 0.00001 271.152 / 0.3) |
Rationale
Dark surfaces require stronger opacity values to maintain equivalent perceived depth.
Layer Append & Surface C Component Breakdown
Baseline Appends
Smooth Scrolling
Selector:
:where(html)
Property:
scroll-behavior: smooth;
Optional Flow Spacing
Commented opt-in owl selector:
*:where(* + *:not(br, dt, dd, li, tr, td, th, option, optgroup))
Rhythm token:
--spacing-md (0.843rem)
Rationale
:where() contributes zero specificity, allowing future overrides without escalation.
Form Layer Enhancements
Targets:
- input (excluding checkbox, radio, range, color, hidden)
- select
- textarea
Applied Contract
| Property | Value |
|---|---|
| display | block |
| width | 100% |
| padding-block | var(--spacing-sm) |
| padding-inline | var(--spacing-md) |
| background | var(--color-surface) |
| color | var(--color-text-primary) |
| border | var(--border-width-sm, 0.0625rem) |
| border-radius | var(--border-radius-md, 0.5rem) |
Hover State
border-color: var(--color-border-strong)
Focus Visible State
| Property | Value |
|---|---|
| outline | none |
| border-color | var(--color-accent) |
| box-shadow | var(--shadow-focus) |
Placeholder
| Property | Value |
|---|---|
| color | var(--color-text-muted, #616b7e) |
| opacity | 1 |
Rationale
Forms become full-width layout primitives with token-driven accessibility and consistent focus visibility.
Utility Appends
.sr-only
Visually hides content while preserving screen reader access.
.not-sr-only
Reverses .sr-only behavior.
.truncate
| Property | Value |
|---|---|
| overflow | hidden |
| text-overflow | ellipsis |
| white-space | nowrap |
.skip-link
| Property | Value |
|---|---|
| position | absolute |
| inset-block-start | var(--spacing-sm, 0.5625rem) |
| inset-inline-start | var(--spacing-sm, 0.5625rem) |
| z-index | var(--z-index-overlay,1000) |
| padding | var(--spacing-sm,0.5625rem) var(--spacing-md,0.843rem) |
| border-radius | var(--border-radius-md,0.5rem) |
| background | var(--color-accent,#ff3d40) |
| color | var(--color-text-inverse,#f2f2f4) |
| transform | translateY(-200%) |
Focus-visible reveals the control with:
transform: translateY(0)
Rationale
Utilities provide accessibility primitives, overflow management, and keyboard navigation support without component coupling.
Surface C Components
.card
Specificity: (0,1,0)
| Property | Value |
|---|---|
| width | var(--card-width,22.5rem) |
| background | var(--color-surface,#f2f2f4) |
| border | var(--border-width-sm,0.0625rem) |
| border-radius | var(--border-radius-md,0.5rem) |
| box-shadow | var(--shadow-md) |
| padding | var(--spacing-lg,1.265rem) |
.card-header
| Property | Value |
|---|---|
| padding | var(--spacing-xs,0.375rem) |
| margin-bottom | var(--spacing-md,0.843rem) |
| border-bottom | var(--border-width-sm,0.0625rem) solid var(--color-primary-light,#35428f) |
.card-body
| Property | Value |
|---|---|
| padding | var(--spacing-md,0.843rem) |
Rationale
Surface C components intentionally live outside layers so they automatically outrank framework defaults while remaining easy to replace downstream.
Key Architectural Decisions
- Cascade layers replace specificity escalation.
- Surface A establishes token-first theme.
- Surface B enables structured framework extension.
- Surface C provides deterministic component overrides.
- Semantic tokens enable automatic dark-mode substitution.
- Variable fonts centralize typography control.
- Focus-visible states are treated as first-class accessibility primitives.
- Logical properties (
inset-block-start,inset-inline-start,padding-block,padding-inline) improve internationalization and writing-mode compatibility. :where()selectors intentionally preserve a zero-specificity footprint.- Unlayered selectors outperform layered rules without requiring
!important. - The architecture favors composability, predictability, accessibility, and long-term maintainability over selector complexity.
© 2026 Ortiz Design Studio. | quell system documentation.