Reference: quell-light

quell

quell Light v1.0.0

Overview & System Role

quell-light.css represents the lean, high-fidelity starter track within the Quell Series framework eco-system. Engineered specifically to minimize initial paint latency and prevent layout thrashing, its core objective is to map a consistent, highly structured design language with near-zero runtime processor overhead. By enforcing a strict set of architectural boundaries, it decouples the layout engine from presentation styling, acting as a clean, rigid wireframe that remains resilient under highly active user interaction.

Strict Architectural Boundaries & Constraints

  1. Mobile-First Principals: The stylesheet adheres strictly to progressive enhancement. The basic layout structures, typographic settings, and functional elements (such as buttons, form-controls, and navigation components) are declared first within a mobile-centric footprint (viewports < 768px). Responsive transformations are deferred entirely to the --breakpoint-md (768px) media query block, keeping mobile parsing paths free of unused desktop rules.
  2. Flat Specificity Footprint: To protect developers from technical style wars, cascading depth is kept deliberately shallow. Element-selector chains are isolated, class-level definitions remain single-depth where possible, and heavy selector nesting is avoided. Specificity is kept low, enabling seamless down-stream overrides.
  3. Intentional Asset Lean-ness: quell-light.css restricts physical footprint by decoupling logic from external payload structures. It avoids complex visual decoration, relying instead on high-contrast system typography, mathematically calibrated layout gaps, and native CSS rendering capabilities.
  4. Font Architecture Continuity: The stylesheet contains zero @font-face asset declarations. Reflecting a strict design design choice, font files are not loaded directly by quell-light.css. This keeps the CSS footprint pristine and ensures zero network drag from typography calls. Typography definitions utilize fallback font-stacks that delegate inheritance to the underlying client environment or active downstream theme configurations, allowing instant, layout-stable text rendering.

Architecture & Breakpoint Matrix

The architectural system of quell-light.css is structured into sequential processing layers. This organization establishes a predictable vertical flow, ensuring that variables, global overrides, UI components, and layout systems build cascading layouts deterministically.

Framework Zone Media Query Boundary Native Specificity Cost Core Layout Responsibility Target Volume/Chapter Linkage
0. layer order None (CSS Comment Rule) None (0) Documenting system load boundaries and load-order requirements for proper cascading resolution. Vol. 1, Chapter 1: The Cascading Chain
1. design tokens :root selector, @supports (color: oklch(0% 0 0)) High element matching weight (:root is a pseudo-class, equivalent to a class 0-1-0) Defines the global custom properties, color palette (solid, RGB, and OKLCH), shadows, spacing ratios, and animation parameters. Vol. 1, Chapter 2: Mathematically Programmed Tokens
2. base styles Element level (body, h1-h6, p, ul, ol, a, etc.) Low element selector weight (0-0-1) Defines standard global typographical inheritance, line heights, fluid heading scales, native focus mechanics, and body background colors. Vol. 1, Chapter 3: Element Normalization
3. base color utilities Class level (.text-*, .bg-*, .border-*) Medium class selector weight (0-1-0) Maps semantic state and layout properties across the application canvas. Operates independently of viewport scale. Vol. 1, Chapter 4: Static Utility Systems
4. container & layout Class level (.container, .container-fluid, .card, etc.) Medium class selector weight (0-1-0) Enforces structural boundaries, centering, max-width clamping, and padding gutters for cards, sections, and view layouts. Vol. 1, Chapter 5: Structural Containment
5. components Class level (.navbar, .btn, .alert, .form-control, etc.) Medium class selector weight (0-1-0) Encapsulates visual behaviors, touch targets, state indicators, interactive transitions, and responsive navigation layouts. Vol. 1, Chapter 6: Modular UI Paradigms
6. utility spacing / typography Class level (.mx-auto, .m-*, .p-*, .fs-*, .fw-*, etc.) Medium class selector weight (0-1-0) Controls explicit spacings, negative margins, paddings, display settings, alignment, and fine typographic shifts. Vol. 1, Chapter 7: Utility Layout Override Engines
7. single breakpoint (md:) @media (min-width: 768px) override styles Medium class selector weight inside media query (0-1-0) Deploys flexbox alignment overrides, display changes, and triggers the mobile-first 12-column flexbox grid engine. Vol. 1, Chapter 8: Breakpoint Thresholds & Grid Physics

Rationale

The sequential execution flow resolves standard cascading conflicts natively. By establishing :root tokens first, elements mapped during base normalization are immediately bound to global constraints (e.g., body inherits var(--color-bg-light)). Color utilities are mapped prior to structural layouts, prioritizing general surface states before sizing constraints. Components are initialized using logical mobile definitions. Finally, spacing utilities and layout overrides behave as “last-priority wrappers”, resolving specific spacing constraints directly before breakpoint modifiers optimize the layout for tablets and desktops. By segregating responsive transformations entirely inside a single, unified @media (min-width: 768px) block, Quell Light avoids the visual jitter and specificity spikes caused by scattering scattered viewport rules across the stylesheet.


Token & System Deep-Dive

This section catalogs every CSS Custom Property defined within the global :root scope.

1. The Core Palette

Colors are declared with solid fallback Hex formats for older engines, paired with advanced OKLCH channels inside a modern @supports (color: oklch()) upgrade rule. This structural choice provides robust backward compatibility alongside precise, modern color rendering.

Variable Name Solid Hex Default OKLCH Primitive/Channel RGB Primitive Mapping System Role & Visual Weight
--color-primary #191970 28.813% 0.14368 272.778 25, 25, 112 Midnight Blue core theme color; primary brand focus.
--color-primary-light #35428f 41.252% 0.12747 272.402 53, 66, 143 Mid-spectrum blue; used for borders, hover states, navigation.
--color-primary-dark #05052e 15.77% 0.08029 272.364 5, 5, 46 Deep midnight blue; used for dark backgrounds, headers.
--color-secondary #35454f 38.062% 0.02673 235.901 53, 69, 79 Slate grey; base body text ink color, high WCAG legibility.
--color-secondary-light #4d616e 48.109% 0.03212 236.895 77, 97, 110 Muted slate; hover state background, outline styling.
--color-accent #ff3d40 65.735% 0.2289 25.532 255, 61, 64 Bright accent red; high-energy focus, callout buttons, active.
--color-matte-white #f8f9fa 98.164% 0.00181 249.244 248, 249, 250 Soft high-value grey/white; clean backdrop, button ground.
--color-matte-black #282828 27.685% 0.00003 271.152 40, 40, 40 Deep soft black; ensures highly readable dark contexts.
--color-muted-grey #616b7e 52.629% 0.03245 263.298 97, 107, 126 General mid-level neutral divider; borders.
--color-text-inverse #f2f2f4 96.172% 0.00276 285.761 242, 242, 244 Contrast white ink; used over dark overlays, accents.
--color-text-primary #191970 28.813% 0.14368 272.778 25, 25, 112 Midnight blue text; headings, strong emphasis.
--color-text-body #35454f 38.062% 0.02673 235.901 53, 69, 79 Slate grey text; default text readability.
--color-text-muted #657085 54.364% 0.03556 263.367 101, 112, 133 Lighter slate grey; sub-headings, meta data output.
--color-lighter-grey #eeeeee 94.912% 0.00011 271.152 238, 238, 238 Very light grey; disabled elements, background panels.
--color-light-grey #dddddd 89.755% 0.0001 271.152 221, 221, 221 Light divider grey; system boundaries, borders.
--color-grey #cccccc 84.522% 0.0001 271.152 204, 204, 204 Standard mid-neutral border; default form outlines.
--color-bg-light #f4f7f9 97.443% 0.00427 237.348 244, 247, 249 Deep soft off-white blue-tint fallback body background.
--color-bg-dark #05052e 15.77% 0.08029 272.364 5, 5, 46 Deep midnight blue; full panel/body inverse backgrounds.
--color-surface #f2f2f4 96.172% 0.00276 285.761 242, 242, 249 Ice white surface color; card backdrops, lists, inputs.
--color-surface-dark #121245 22.269% 0.09294 275.79 18, 18, 69 High-value deep blue surface; panels within dark grids.
--shadow-black #1b1b1b (approx) 10.668% 0.00001 271.152 4, 4, 4 Deep black foundation color for oklch-based alpha shadow logic.

Rationale

The use of double :root allocations with progressive enhancements via @supports (color: oklch(0% 0 0)) guarantees cross-platform rendering consistency. Legacy layouts fall back cleanly to solid HEX declarations, while modern rendering contexts gain access to device-independent OKLCH color spaces. Dividing colors into Hex, OKLCH components, and RGB maps empowers Quell Light to build real-time transparencies using native CSS variables, preventing the need to duplicate variables or import heavy image files to achieve modern graphic overlays.


2. Spacing, Borders, Shadows, and Utilities

A rigorous, mathematically controlled hierarchy governs spacing, visual depth, and elevation layers.

Spacing, Borders, and Radii Metrics

Variable Name Calibrated Rem/Pixel Value Math Formula/Scaling Factor Operational Purpose within Layout Grid
--spacing-xxs 0.25rem (4px) Baseline Spacing Unit Extra tight margins, inner padding, micro gaps.
--spacing-xs 0.375rem (6px) 1.5 × Preceding Value Tight margins, close details, input padding.
--spacing-sm 0.5625rem (9px) 1.5 × Preceding Value Light margins, section dividers, button vertical pad.
--spacing-md 0.843rem (13.5px) 1.5 × Preceding Value Standard UI gaps, row gaps, flex spacing baseline.
--spacing-lg 1.265rem (20.24px) 1.5 × Preceding Value Card vertical margins, general block padding.
--spacing-xl 1.898rem (30.36px) 1.5 × Preceding Value Major layout separations, layout section containers.
--spacing-xxl 2.848rem (45.56px) 1.5 × Preceding Value Dynamic grid paddings, landing page margins.
--spacing-xxxl 4.272rem (68.35px) 1.5 × Preceding Value Extreme top-of-funnel hero section spacers.
--spacing-neg-xxs -0.25rem Negative Offset Pulling aligned layouts together by tight values.
--spacing-neg-xs -0.375rem Negative Offset Pulling adjacent headers Closer to parent cards.
--spacing-neg-sm -0.5625rem Negative Offset Modulating structural negative padding overlaps.
--spacing-neg-md -0.843rem Negative Offset Negative margin shifts on intermediate grid blocks.
--spacing-neg-lg -1.265rem Negative Offset Pulling cards closer to offset hero titles on mobile.
--spacing-neg-xl -1.898rem Negative Offset Significant layout overlap designs.
--spacing-neg-xxl -2.848rem Negative Offset Drastic offset placements on desktop viewport structures.
--spacing-neg-xxxl -4.272rem Negative Offset Extreme section overlap layouts.
--border-width-sm 0.0625rem (1px) Minimum physical render size Subtle container dividers, card boundaries, table rules.
--border-width-md 0.125rem (2px) Focus Ring / Form Target Default form inputs, active input lines, focus outline rings.
--border-width-lg 0.25rem (4px) Accent Highlight Bold borders, card highlights, bottom focus trackers.
--border-width-xl 0.5rem (8px) Large Accent Highly styled structural margins, framing layouts.
--border-radius-sm 0.25rem (4px) Basic rounded edge Button wrappers, small badges, alert corners.
--border-radius-md 0.5rem (8px) Canonical radius Default card layouts, inputs, alerts, image panels.
--border-radius-lg 0.75rem (12px) Intermediate radius Floating panels, complex section wrappers.
--border-radius-xl 1rem (16px) High-radius accent Outer card groupings, dialogs, responsive side panels.
--border-radius-circle 50% Complete Circle User avatars, action icon backdrops, rounded pills.

Visual Elevation, Shadows, and Durations


| Variable Name | Native CSS Value Mapping | Base Alpha Factor | Architectural Intent |
| :--- | :--- | :--- | :--- |
| `--shadow-sm` | `0 var(--spacing-xs) var(--spacing-sm) var(--spacing-neg-xxs) oklch(var(--shadow-black-oklch) / var(--alpha-xs))` | `--alpha-xs` (`0.1`) | Micro shadow for small buttons, alerts, subtle hover layouts. |
| `--shadow-md` | `0 var(--spacing-sm) var(--spacing-md) var(--spacing-neg-xs) oklch(var(--shadow-black-oklch) / var(--alpha-sm))` | `--alpha-sm` (`0.125`) | Canonical card depth shadow; safe for general app interfaces. |
| `--shadow-lg` | `0 var(--spacing-md) var(--spacing-lg) var(--spacing-neg-sm) oklch(var(--shadow-black-oklch) / var(--alpha-md))` | `--alpha-md` (`0.4`) | Heavy card depth; indicates floating, drag-n-drop objects. |
| `--shadow-xl` | `0 var(--spacing-lg) var(--spacing-xl) var(--spacing-neg-md) oklch(var(--shadow-black-oklch) / var(--alpha-lg))` | `--alpha-lg` (`0.6`) | Heavy popups, drop-downs, modal wrappers, sticky bars. |
| `--shadow-elevation-sm` | `0 var(--spacing-xxs) var(--spacing-xs) var(--spacing-neg-xxs) oklch(...)`, `0 var(--spacing-xs) var(--spacing-sm) var(--spacing-neg-xxs) oklch(...)` | Dual Alpha (`0.1` + `0.125`) | Dual layering for flat-looking buttons with highly real depth. |
| `--shadow-elevation-md`| `0 var(--spacing-xs) var(--spacing-sm) var(--spacing-neg-xxs) oklch(...)`, `0 var(--spacing-sm) var(--spacing-md) var(--spacing-neg-xs) oklch(...)` | Dual Alpha (`0.125` + `0.4`) | High visual depth; floating dashboard elements. |
| `--shadow-elevation-lg`| `0 var(--spacing-sm) var(--spacing-md) var(--spacing-neg-xs) oklch(...)`, `0 var(--spacing-md) var(--spacing-lg) var(--spacing-neg-sm) oklch(...)` | Dual Alpha (`0.4` + `0.6`) | Extremely heavy multi-layer shadow. Used on overlays. |
| `--shadow-elevation-xl`| `0 var(--spacing-md) var(--spacing-lg) var(--spacing-neg-sm) oklch(...)`, `0 var(--spacing-lg) var(--spacing-xl) var(--spacing-neg-md) oklch(...)` | Dual Alpha (`0.6` + `0.8`) | Peak elevation layer shadow for modal overlay layers. |
| `--shadow-inset-sm` | `inset 0 var(--spacing-xxs) var(--spacing-xs) oklch(...)` | `--alpha-xs` (`0.1`) | Micro concave surface layout; pressed state indicators. |
| `--shadow-inset-md` | `inset 0 var(--spacing-xs) var(--spacing-sm) oklch(...)` | `--alpha-sm` (`0.125`) | Input field active backgrounds, inner shadow fields. |
| `--shadow-inset-lg` | `inset 0 var(--spacing-sm) var(--spacing-md) oklch(...)` | `--alpha-md` (`0.4`) | Sunken panels, scroll track backdrops. |
| `--shadow-inset-xl` | `inset 0 var(--spacing-md) var(--spacing-lg) oklch(...)` | `--alpha-lg` (`0.6`) | Deep concave graphic zones, simulated frame outlines. |
| `--z-index-hide` | `-1` | Absolute Value | Force layers behind base container layout stacks. |
| `--z-index-default` | `1` | Absolute Value | Standard rendering context baseline. |
| `--z-index-elevated`| `10` | Absolute Value | Drops-downs, relative navbar indicators, alerts. |
| `--z-index-sticky` | `100` | Absolute Value | Non-scrolling layouts, top-level pinned headers. |
| `--z-index-overlay` | `1000` | Absolute Value | Modal backdrops, backdrop click zones. |
| `--z-index-modal` | `1010` | Absolute Value | Modal windows, toast trackers. |
| `--container-width` | `90rem` (1440px) | Maximum Constraint | Centered layout content bounding limit on horizontal displays. |
| `--container-fluid-width`| `100%` | Percent Fluid | Fluid spanning layout boundary. |
| `--one-twelfth` | `8.333333%` | Grid Decimal Constant | Mathematical foundation constant for building 12 column layouts. |
| `--card-width` | `22.5rem` (360px) | Card Fixed Limit | Base maximum boundary of isolated content cards. |
| `--card-fluid-width` | `100%` | Percent Fluid | Adaptive card expansion on mobile screens. |
| `--card-image` | `100%` | Percent Fluid | Locks card head images to maximum bounding parent width. |
| `--icon-base` | `10rem` (160px) | Icon Outer Box | Sizing baseline for decorative system icons. |
| `--transition-speed-fast`| `0.15s` | Time (Seconds) | Instant active changes (hover shifts, toggle clicks). |
| `--transition-speed-normal`| `0.3s` | Time (Seconds) | Default animation length (accordion panels, slide drawers). |
| `--transition-speed-slow`| `0.5s` | Time (Seconds) | Heavy layout transitions (fade overrides on modal display). |
| `--transition-ease` | `ease-in-out` | Cubic bezier curve | Smooth, organic acceleration and deceleration curve. |
| `--min-width-default` | `15rem` (240px) | Absolute Value | Safeguards site structure against shrinking on micro screens. |

Rationale

Spacing leverages a continuous, mathematically optimized 1.5× scale factor. This establishes a predictable rhythm for typographic alignment and layout grids, transforming spacing adjustments into deterministic layout moves. Border radii are normalized to prevent visual inconsistency. Shadows are designed with high semantic intent, pairing basic offsets with elevation variables to convey surface depth layers. Integrating OKLCH calculations directly with opacity metrics allows shadow depth to automatically adapt and scale depending on whether it sits on a light or dark background, preventing grey outlines on dark backgrounds.


3. Responsive Architecture Rules & Fluid Typography

Rather than using discrete breakpoints to snap fonts across viewports, Quell Light enforces clean responsive structures using smooth fluid clamp rules under :root.

Variable Name Fallback Rem Value Native Dynamic Clamp Formula Specificity Goal & Scaling Rules
--font-size-h1 2.441rem clamp(2.441rem, 1.5rem + 3.2vw, 3.052rem) Anchored at 39px, scaling up to 48.8px via viewport scale.
--font-size-h2 1.953rem clamp(1.953rem, 1.3rem + 2.5vw, 2.441rem) Anchored at 31.2px, scaling up to 39px via viewport scale.
--font-size-h3 1.563rem clamp(1.563rem, 1.1rem + 1.9vw, 1.953rem) Anchored at 25px, scaling up to 31.2px via viewport scale.
--font-size-h4 1.25rem clamp(1.25rem, 0.9rem + 1.4vw, 1.563rem) Anchored at 20px, scaling up to 25px via viewport scale.
--font-size-h5 0.8rem clamp(0.8rem, 0.7rem + 0.8vw, 1rem) Anchored at 12.8px, scaling up to 16px via viewport scale.
--font-size-h6 0.64rem clamp(0.64rem, 0.6rem + 0.4vw, 0.8rem) Anchored at 10.2px, scaling up to 12.8px via viewport scale.

Rationale

CSS clamp() enables fluid typography scaling that dynamically responds to screen width changes without requiring multi-step media queries. By combining a fixed fallback (rem) with fluid viewport units (vw) and an upper ceiling, text scales smoothly on any device. This guarantees zoom-safe typography, preventing visual glitches and keeping layouts stable on everything from micro mobile devices to wide-aspect desktop monitors.


The 12-Column Responsive Grid Engine

This section lists the structural utility mechanics and mobile-first container engines that drive Quell Light layouts.

1. Container & Row Mechanics

Layout containment in quell-light.css is structured to ensure content blocks center and pad themselves elegantly across different screen sizes.

Class Name Target Property CSS Rule Specification Architectural and Gutter Math
.container max-width max-width: var(--container-width); Anchored at a static max constraint of 90rem (1440px) to prevent layout lines from spilling too far on wide screens.
.container margin margin: 0 auto; Natively centers structural blocks within standard browser windows.
.container padding padding: 0 var(--spacing-md); Implements responsive gutter buffers of 0.843rem (13.5px) on the left and right margins to prevent content from touching screen edges.
.container-fluid width width: var(--container-fluid-width); Extends layout elements fluidly to 100% viewport width.
.container-fluid padding padding: 0 var(--spacing-md); Maintains consistent 0.843rem (13.5px) gutters to match container alignments.

Rationale

Using a unified gutter standard based on var(--spacing-md) ensures that fluid elements align with fixed layouts. This simple containment layer provides maximum layout safety with a flat specificity cost.


2. Mobile-First Columns

Mobile styling in Quell Light uses full-width vertical stacking, keeping columns fluid on smaller devices.

Class Name Target Property CSS Rule Specification Grid Stacking Behavior on Viewports < 768px
.flex-item flex flex: 0 0 100%; Prevents shrinking or growing, forcing column blocks to stack vertically at 100% parent container width.

Rationale

Mobile-first vertical stacking prevents horizontal scrolling issues on narrow screens. It allows elements to span the full viewport width safely, postponing multi-column arrangements to the tablet/desktop breakpoint.


3. The Breakpoint Mutators

When the screen viewport reaches or passes the --breakpoint-md threshold of 768px (48rem), the responsive layout engine activates. Layouts shift from stacked to multi-column structures using the 12-column grid.

Alignment & Flex Direction Mutators (@media (min-width: 768px))

Responsive Class Name Targeted Layout Property Output CSS Specification Layout Alignment Mechanics
.md\:justify-content-center justify-content justify-content: center; Centers child elements along the primary row axis.
.md\:justify-content-between justify-content justify-content: space-between; Spreads elements evenly, anchoring the first and last to the grid edges.
.md\:justify-content-end justify-content justify-content: flex-end; Aligns all child elements to the end of the line.
.md\:align-items-center align-items align-items: center; Vertically centers child elements along the cross-axis.
.md\:align-items-start align-items align-items: flex-start; Aligns child elements to the top of the container.
.md\:align-items-end align-items align-items: flex-end; Aligns child elements to the bottom of the container.
.md\:flex-row flex-direction flex-direction: row; Arranges child elements horizontally.
.md\:flex-col flex-direction flex-direction: column; Reverts content to stacked vertical layouts.
.md\:flex-wrap flex-wrap flex-wrap: wrap; Allows row items to wrap onto new lines.
.md\:flex-nowrap flex-wrap flex-wrap: nowrap; Locks elements in a single row, forcing them to shrink if needed.

12-Column Responsive Grid Mutators (@media (min-width: 768px))

Responsive Class Name Targeted Property Output CSS Rule Specification Calculated Grid Box Width
.md\:flex-1-12 flex flex: 0 0 calc(var(--one-twelfth) * 1); 8.333333%
.md\:flex-2-12 flex flex: 0 0 calc(var(--one-twelfth) * 2); 16.666666%
.md\:flex-3-12 flex flex: 0 0 calc(var(--one-twelfth) * 3); 25.000000%
.md\:flex-4-12 flex flex: 0 0 calc(var(--one-twelfth) * 4); 33.333333%
.md\:flex-5-12 flex flex: 0 0 calc(var(--one-twelfth) * 5); 41.666666%
.md\:flex-6-12 flex flex: 0 0 calc(var(--one-twelfth) * 6); 50.000000%
.md\:flex-7-12 flex flex: 0 0 calc(var(--one-twelfth) * 7); 58.333333%
.md\:flex-8-12 flex flex: 0 0 calc(var(--one-twelfth) * 8); 66.666666%
.md\:flex-9-12 flex flex: 0 0 calc(var(--one-twelfth) * 9); 75.000000%
.md\:flex-10-12 flex flex: 0 0 calc(var(--one-twelfth) * 10); 83.333333%
.md\:flex-11-12 flex flex: 0 0 calc(var(--one-twelfth) * 11); 91.666666%
.md\:flex-12-12 flex flex: 0 0 calc(var(--one-twelfth) * 12); 100.000000%

Display State Overrides (@media (min-width: 768px))

Responsive Class Name Targeted Property Output CSS Rule Specification Architectural Action & Specificity Control
.md\:d-none display display: none !important; Completely hides elements from view on screen sizes above the breakpoint.
.md\:d-block display display: block; Restores block layouts.
.md\:d-flex display display: flex; Restures flexbox contexts.

Rationale

Applying .md\: classes within the (min-width: 768px) media query ensures layout stability across varying display dimensions. Designing column widths via multiplication of --one-twelfth ensures that the 12-column system is perfectly predictable on any screen size. Using !important on .md\:d-none guarantees that desktop-hidden elements remain hidden, overriding normal display styling conflicts.


Technical Elements Specification

A clean, responsive layout needs structured, predictable styles for basic elements to maintain typography and layout rhythm.

1. Element Resets, Base Typographic Mechanics & Anchor Focus Rings

Element Selector / Utility Targeted Property CSS Declaration Mapping Visual Layout Strategy
body font-family font-family: var(--font-fam-primary); Uses "Nunito", "Calibri", sans-serif stacks for clean readability.
body font-size font-size: var(--font-size-base); Anchored to baseline 1rem (16px) for normal sizing standard.
body line-height line-height: var(--line-height-base); Calibrated to 1.6 spacing ratio, optimizing paragraph readability.
body color color: var(--color-text-body); Uses --color-text-body dark grey to reduce eye strain.
body background-color background-color: var(--color-bg-light); Soft, off-white background to avoid bright glare.
h1 - h6 (and .h1 - .h6 counterparts) font-family font-family: var(--font-fam-secondary); Uses "Fraunces", "Georgia", serif stacks to provide editorial heading contrast.
h1 - h6 color color: var(--color-text-primary); Dark slate midnight blue to anchor heading typography.
h1 - h6 margin-bottom margin-bottom: var(--spacing-sm); Keeps layout flow tight with a standard 0.5625rem bottom gap.
p font-size / line-height font-size: var(--font-size-base); line-height: var(--line-height-base); Retains body typography baselines across content layout.
p margin-bottom margin-bottom: var(--spacing-md); Drops standard 0.843rem gap to separate trailing text blocks cleanly.
ul, ol margin / padding-left margin: 0; padding-left: var(--spacing-lg); Clears top/bottom list margins, introducing structured indentation.
ul list-style list-style: disc; Traditional disc indentation markers.
ol list-style list-style: decimal; Decimal list values.
a color / text-decoration color: var(--color-primary-light); text-decoration: none; Muted brand blue anchors text links without underlines.
a:hover color color: var(--color-accent); Moves to accent red, providing clear visual hover response.
a:focus outline-offset / box-shadow / border-radius outline-offset: var(--spacing-xxs); box-shadow: 0 0 0 var(--border-radius-md) var(--color-primary-light); border-radius: var(--border-radius-sm); Custom focus shadow replaces default browser outlines with a clean, branded focus ring.

2. Base Utility Layout Classes (Full Metric Manifest, No Placeholders)

These utilities enable precise layout spacing, typography styles, and color adjustments across the application.

Explicit Spacing Matrix (var(--spacing-*) Mapping)

Class Name Targeted Layout Properties Applied Native Value
All-Margin Utilities
.m-xxs margin 0.25rem (4px)
.m-xs margin 0.375rem (6px)
.m-sm margin 0.5625rem (9px)
.m-md margin 0.843rem (13.5px)
.m-lg margin 1.265rem (20.24px)
.m-xl margin 1.898rem (30.36px)
Top-Margin Utilities
.mt-xxs margin-top 0.25rem
.mt-xs margin-top 0.375rem
.mt-sm margin-top 0.5625rem
.mt-md margin-top 0.843rem
.mt-lg margin-top 1.265rem
.mt-xl margin-top 1.898rem
Right-Margin Utilities
.mr-xxs margin-right 0.25rem
.mr-xs margin-right 0.375rem
.mr-sm margin-right 0.5625rem
.mr-md margin-right 0.843rem
.mr-lg margin-right 1.265rem
.mr-xl margin-right 1.898rem
Bottom-Margin Utilities
.mb-xxs margin-bottom 0.25rem
.mb-xs margin-bottom 0.375rem
.mb-sm margin-bottom 0.5625rem
.mb-md margin-bottom 0.843rem
.mb-lg margin-bottom 1.265rem
.mb-xl margin-bottom 1.898rem
Left-Margin Utilities
.ml-xxs margin-left 0.25rem
.ml-xs margin-left 0.375rem
.ml-sm margin-left 0.5625rem
.ml-md margin-left 0.843rem
.ml-lg margin-left 1.265rem
.ml-xl margin-left 1.898rem
Y-Axis Margin Utilities
.my-xxs margin-top, margin-bottom 0.25rem
.my-xs margin-top, margin-bottom 0.375rem
.my-sm margin-top, margin-bottom 0.5625rem
.my-md margin-top, margin-bottom 0.843rem
.my-lg margin-top, margin-bottom 1.265rem
.my-xl margin-top, margin-bottom 1.898rem
X-Axis Margin Utilities
.mx-xxs margin-left, margin-right 0.25rem
.mx-xs margin-left, margin-right 0.375rem
.mx-sm margin-left, margin-right 0.5625rem
.mx-md margin-left, margin-right 0.843rem
.mx-lg margin-left, margin-right 1.265rem
.mx-xl margin-left, margin-right 1.898rem

Negative Overlap Marign Utilities

Class Name Targeted Layout Properties Applied Negative Value
.m-neg-xxs margin -0.25rem
.m-neg-xs margin -0.375rem
.m-neg-sm margin -0.5625rem
.m-neg-md margin -0.843rem
.m-neg-lg margin -1.265rem
.m-neg-xl margin -1.898rem
.mt-neg-xxs margin-top -0.25rem
.mt-neg-xs margin-top -0.375rem
.mt-neg-sm margin-top -0.5625rem
.mt-neg-md margin-top -0.843rem
.mt-neg-lg margin-top -1.265rem
.mt-neg-xl margin-top -1.898rem
.mr-neg-xxs margin-right -0.25rem
.mr-neg-xs margin-right -0.375rem
.mr-neg-sm margin-right -0.5625rem
.mr-neg-md margin-right -0.843rem
.mr-neg-lg margin-right -1.265rem
.mr-neg-xl margin-right -1.898rem
.mb-neg-xxs margin-bottom -0.25rem
.mb-neg-xs margin-bottom -0.375rem
.mb-neg-sm margin-bottom -0.5625rem
.mb-neg-md margin-bottom -0.843rem
.mb-neg-lg margin-bottom -1.265rem
.mb-neg-xl margin-bottom -1.898rem
.ml-neg-xxs margin-left -0.25rem
.ml-neg-xs margin-left -0.375rem
.ml-neg-sm margin-left -0.5625rem
.ml-neg-md margin-left -0.843rem
.ml-neg-lg margin-left -1.265rem
.ml-neg-xl margin-left -1.898rem
.my-neg-xxs margin-top, margin-bottom -0.25rem
.my-neg-xs margin-top, margin-bottom -0.375rem
.my-neg-sm margin-top, margin-bottom -0.5625rem
.my-neg-md margin-top, margin-bottom -0.843rem
.my-neg-lg margin-top, margin-bottom -1.265rem
.my-neg-xl margin-top, margin-bottom -1.898rem
.mx-neg-xxs margin-left, margin-right -0.25rem
.mx-neg-xs margin-left, margin-right -0.375rem
.mx-neg-sm margin-left, margin-right -0.5625rem
.mx-neg-md margin-left, margin-right -0.843rem
.mx-neg-lg margin-left, margin-right -1.265rem
.mx-neg-xl margin-left, margin-right -1.898rem

Padding & Gap Spacers Matrix

Class Name Targeted Layout Properties Applied Native Value
All-Padding Utilities
.p-xxs padding 0.25rem
.p-xs padding 0.375rem
.p-sm padding 0.5625rem
.p-md padding 0.843rem
.p-lg padding 1.265rem
.p-xl padding 1.898rem
Top-Padding Utilities
.pt-xxs padding-top 0.25rem
.pt-xs padding-top 0.375rem
.pt-sm padding-top 0.5625rem
.pt-md padding-top 0.843rem
.pt-lg padding-top 1.265rem
.pt-xl padding-top 1.898rem
Right-Padding Utilities
.pr-xxs padding-right 0.25rem
.pr-xs padding-right 0.375rem
.pr-sm padding-right 0.5625rem
.pr-md padding-right 0.843rem
.pr-lg padding-right 1.265rem
.pr-xl padding-right 1.898rem
Bottom-Padding Utilities
.pb-xxs padding-bottom 0.25rem
.pb-xs padding-bottom 0.375rem
.pb-sm padding-bottom 0.5625rem
.pb-md padding-bottom 0.843rem
.pb-lg padding-bottom 1.265rem
.pb-xl padding-bottom 1.898rem
Left-Padding Utilities
.pl-xxs padding-left 0.25rem
.pl-xs padding-left 0.375rem
.pl-sm padding-left 0.5625rem
.pl-md padding-left 0.843rem
.pl-lg padding-left 1.265rem
.pl-xl padding-left 1.898rem
Y-Axis Padding Utilities
.py-xxs padding-top, padding-bottom 0.25rem
.py-xs padding-top, padding-bottom 0.375rem
.py-sm padding-top, padding-bottom 0.5625rem
.py-md padding-top, padding-bottom 0.843rem
.py-lg padding-top, padding-bottom 1.265rem
.py-xl padding-top, padding-bottom 1.898rem
X-Axis Padding Utilities
.px-xxs padding-left, padding-right 0.25rem
.px-xs padding-left, padding-right 0.375rem
.px-sm padding-left, padding-right 0.5625rem
.px-md padding-left, padding-right 0.843rem
.px-lg padding-left, padding-right 1.265rem
.px-xl padding-left, padding-right 1.898rem
Flex Gap Spacers
.gap-xxs gap 0.25rem
.gap-xs gap 0.375rem
.gap-sm gap 0.5625rem
.gap-md gap 0.843rem
.gap-lg gap 1.265rem
.gap-xl gap 1.898rem
Extended Padding & Gaps
.py-2xl padding-top, padding-bottom var(--spacing-xxl) (2.848rem)
.py-3xl padding-top, padding-bottom var(--spacing-xxxl) (4.272rem)
.gap-2xl gap var(--spacing-xxl) (2.848rem)
.gap-3xl gap var(--spacing-xxxl) (4.272rem)
Universal Clearing Utilities
.mx-auto margin 0 auto (Horizontal containment centering)
.m-0 margin 0 (Clear all outer margins)
.p-0 padding 0 (Clear all inner paddings)

Static Colors & States Utilities


| Utility Class Name | Targeted Property | CSS Declaration | Visual Layout Intent |
| :--- | :--- | :--- | :--- |
| **Typography Ink Colors** | | | |
| `.text-heading` | `color` | `color: var(--color-primary);` | Forces dark midnight blue brand color. |
| `.text-body` | `color` | `color: var(--color-text-body);` | Forces base body dark grey tone. |
| `.text-on-accent` | `color` | `color: var(--color-text-inverse);` | Contrasts light text over deep color backdrops. |
| `.text-muted` | `color` | `color: var(--color-muted-grey);` | Subdued secondary info output. |
| `.text-success` | `color` | `color: var(--color-success);` | Green notification ink. |
| `.text-info` | `color` | `color: var(--color-info);` | Blue helper ink. |
| `.text-warning` | `color` | `color: var(--color-warning);` | Gold caution ink. |
| `.text-error` | `color` | `color: var(--color-error);` | Red error ink. |
| **Background Utilities** | | | |
| `.bg-light` | `background-color` | `background-color: var(--color-bg-light);` | Soft grey body background. |
| `.bg-dark` | `background-color` / `color` | `background-color: var(--color-primary-dark); color: var(--color-matte-white);` | Dark midnight canvas color backdrop. |
| `.bg-primary` | `background-color` / `color` | `background-color: var(--color-primary); color: var(--color-matte-white);` | Solid brand blue panel. |
| `.bg-accent` | `background-color` / `color` | `background-color: var(--color-accent); color: var(--color-matte-white);` | Bold brand accent highlight backdrop. |
| `.bg-surface` | `background-color` | `background-color: var(--color-surface);` | Grey surface canvas backdrop container. |
| `.bg-primary-light` | `background` / `color` | `background: var(--color-primary-light); color: var(--color-matte-white);` | Lighter blue panel backdrop. |
| `.bg-secondary` | `background-color` / `color` | `background-color: var(--color-secondary); color: var(--color-matte-white);` | Slate neutral backdrop panel. |
| **System States & Borders** | | | |
| `.bg-success` | `background-color` / `color` | `background-color: var(--color-success); color: var(--color-matte-white);` | Success notification block. |
| `.bg-success-light` | `background-color` | `background-color: var(--color-success-light);` | Medium-soft success border. |
| `.bg-success-lighter` | `background-color` | `background-color: var(--color-success-lighter);` | Soft tint panel (alert backdrops). |
| `.bg-success-accent` | `background-color` | `background-color: var(--color-success-accent);` | Solid focus boundary for green buttons. |
| `.bg-info` | `background-color` / `color` | `background-color: var(--color-info); color: var(--color-matte-white);` | Info highlight block. |
| `.bg-info-light` | `background-color` | `background-color: var(--color-info-light);` | Info boundary borders. |
| `.bg-info-lighter` | `background-color` | `background-color: var(--color-info-lighter);` | Soft tint informational panel backdrop. |
| `.bg-info-accent` | `background-color` | `background-color: var(--color-info-accent);` | Focus highlight for info tags. |
| `.bg-warning` | `background-color` / `color` | `background-color: var(--color-warning); color: var(--color-matte-black);` | Yellow alert box backdrop. Keeps black text for WCAG contrast. |
| `.bg-warning-light` | `background-color` | `background-color: var(--color-warning-light);` | Warning borders. |
| `.bg-warning-lighter` | `background-color` | `background-color: var(--color-warning-lighter);` | Soft yellow notice banner backdrop. |
| `.bg-warning-accent` | `background-color` | `background-color: var(--color-warning-accent);` | Solid highlight ring for caution zones. |
| `.bg-error` | `background-color` / `color` | `background-color: var(--color-error); color: var(--color-matte-white);` | Danger/alert background panel. |
| `.bg-error-light` | `background-color` | `background-color: var(--color-error-light);` | Urgent action boundaries. |
| `.bg-error-lighter` | `background-color` | `background-color: var(--color-error-lighter);` | Soft critical failure panel backdrop. |
| `.bg-error-accent` | `background-color` | `background-color: var(--color-error-accent);` | Red focus boundaries. |
| `.border-success` | `border-color` | `border-color: var(--color-success);` | Success state borders. |
| `.border-info` | `border-color` | `border-color: var(--color-info);` | Info state borders. |
| `.border-warning` | `border-color` | `border-color: var(--color-warning);` | Caution state borders. |
| `.border-error` | `border-color` | `border-color: var(--color-error);` | Failure state borders. |

Typography & Visual Sizing Override Utilities

Class Name Targeted Property Applied Native Value
Font-Size Overrides
.fs-xs font-size var(--font-size-xs) (0.64rem / 10.2px)
.fs-sm font-size var(--font-size-sm) (0.8rem / 12.8px)
.fs-base font-size var(--font-size-base) (1rem / 16px)
.fs-md font-size var(--font-size-md) (1.25rem / 20px)
.fs-lg font-size var(--font-size-lg) (1.563rem / 25px)
.fs-xl font-size var(--font-size-xl) (1.953rem / 31.2px)
.fs-xxl font-size var(--font-size-xxl) (2.441rem / 39px)
.fs-xxxl font-size var(--font-size-xxxl) (3.052rem / 48.8px)
Font-Weight Overrides
.fw-bold font-weight bold (Bold visual treatment)
.fw-bolder font-weight bolder (Ultra heavy visual weight)
.fw-lighter font-weight lighter (Thin modern styling)
Fine Typographic Controls
.text-center text-align center;
.text-left text-align left;
.text-right text-align right;
.text-justify text-align justify;
.text-start text-align start;
.text-end text-align end;
.text-lowercase text-transform lowercase;
.text-uppercase text-transform uppercase;
.text-capitalize text-transform capitalize;
.text-underline text-decoration underline;
.text-no-underline text-decoration none;
.text-italic font-style italic;
.text-strike text-decoration line-through;
Structural / Fluid Sizing
.w-full width 100%;
.h-full height 100%;
.pos-relative position relative;
.pos-absolute position absolute;
.overflow-hide overflow hidden;
.overflow-auto overflow auto;
Grid / Flex Display States
.d-block display block;
.d-inline display inline;
.d-inline-block display inline-block;
.d-none display none !important; (Strict visibility override)
.d-flex display flex;
.d-inline-flex display inline-flex;
.d-grid display grid;
.d-inline-grid display inline-grid;

Mobile-First Flexbox Layout Engine

These utilities establish the core flexbox layout system before responsive breakpoint modifiers scale them on larger viewports.

Class Name Targeted Property Applied Native CSS Value
Flex Direction Controls
.flex-row flex-direction row;
.flex-row-reverse flex-direction row-reverse;
.flex-col flex-direction column;
.flex-col-reverse flex-direction column-reverse;
Wrapping Logic
.flex-wrap flex-wrap wrap;
.flex-nowrap flex-wrap nowrap;
Axis Justification
.justify-content-center justify-content center;
.justify-content-between justify-content space-between;
.justify-content-around justify-content space-around;
.justify-content-evenly justify-content space-evenly;
.flex-start justify-content flex-start;
.flex-end justify-content flex-end;
Cross-Axis Alignment
.align-items-center align-items center;
.align-items-start align-items flex-start;
.align-items-end align-items flex-end;
.align-items-baseline align-items baseline;
.align-items-stretch align-items stretch;
Flex Sizing Rules
.flex-grow-1 flex-grow 1;
.flex-shrink-0 flex-shrink 0;
.flex-fill flex 1 1 auto; (Fills space based on content)

Rationale

Exposing all utility classes explicitly ensures technical clarity, allowing down-stream ingestion engines like NotebookLM to model Quell Light’s visual layout behavior accurately. These properties map structural relationships directly, creating a stable design system free of layout gaps.


3. Core Component Layout Rules

The structural definitions of Quell Light’s baseline interactive elements.

Complete Component Specifications

/* Card Component Block */
.card {
  width:            var(--card-width);             /* 22.5rem / 360px limit */
  background-color: var(--color-surface);          /* Soft white surface */
  border-radius:    var(--border-radius-md);       /* 0.5rem curves */
  padding:          var(--spacing-lg);             /* Generous padding */
  box-shadow:       var(--shadow-md);              /* Soft shadow profile */
}

.card-header {
  padding:       var(--spacing-xs);                /* Tight spacing */
  margin-bottom: var(--spacing-md);                /* Gaps below header */
  border-bottom: var(--border-width-sm) solid var(--color-primary-light); /* Clean divider line */
}

.card-body { 
  padding: var(--spacing-md);                      /* Baseline internal spacing */
}

.card-img  {
  width:   var(--card-image);                      /* Lock images of card tightly */
  height:  auto;
  display: block;
  border-top-left-radius:  var(--border-radius-md); /* Match top corners */
  border-top-right-radius: var(--border-radius-md);
}

/* Alert Notification Engines */
.alert {
  padding:         var(--spacing-md);              /* Outer gutters */
  margin-bottom:   var(--spacing-md);
  border:          var(--border-width-sm) solid transparent;
  border-radius:   var(--border-radius-sm);
  display:         flex;                            /* Horizon alignment */
  align-items:     center;
  justify-content: space-between;
}

.alert-message { 
  flex-grow: 1;                                    /* Expands text area */
}

.alert-close {
  background:  none;
  border:      none;
  font-size:   var(--font-size-lg);
  cursor:      pointer;
  margin-left: var(--spacing-md);
}

.alert-success { 
  color: var(--color-matte-white); 
  background-color: var(--color-success);          /* High-contrast green background */
  border-color: var(--color-success); 
}

.alert-info { 
  color: var(--color-matte-white); 
  background-color: var(--color-info);             /* Informational cyan/blue background */
  border-color: var(--color-info); 
}

/* Note: .alert-warning uses a dark-slate foreground color (--color-secondary).
   This is an intentional layout choice to guarantee WCAG AA contrast ratios, 
   as standard white text fails readability tests when paired with soft gold/yellow backdrops. */
.alert-warning { 
  color: var(--color-secondary); 
  background-color: var(--color-warning); 
  border-color: var(--color-warning); 
  font-weight: bolder; 
}

.alert-error { 
  color: var(--color-matte-white); 
  background-color: var(--color-error);            /* High-alert red background */
  border-color: var(--color-error); 
}

/* Form Controls & Inputs */
.form-control {
  display:          block;
  width:            100%;
  padding:          var(--spacing-sm);             /* Comfort target size */
  font-size:        var(--font-size-base);
  line-height:      var(--line-height-base);
  color:            var(--color-text-body);
  background-color: var(--color-surface);
  background-clip:  padding-box;
  border:           var(--border-width-md) solid var(--color-grey); /* Baseline 2px border */
  border-radius:    var(--border-radius-sm);
  appearance:       none;                          /* Strip browser defaults */
  transition:       border-color var(--transition-speed-normal) var(--transition-ease),
                    box-shadow   var(--transition-speed-normal) var(--transition-ease);
}

.form-control:focus {
  border-color: var(--color-primary-light);        /* Switch outline on hover/focus */
  outline:      none;
  box-shadow:   0 0 0 3px oklch(var(--color-primary-light-oklch) / var(--alpha-sm)); /* Focus glow */
}

.form-control:disabled {
  background-color: var(--color-lighter-grey);     /* Muted disabled state */
  cursor:           not-allowed;
}

.form-control-sm { 
  padding: var(--spacing-xs) var(--spacing-sm); 
  font-size: var(--font-size-sm); 
}

.form-control-lg { 
  padding: var(--spacing-md) var(--spacing-lg); 
  font-size: var(--font-size-lg); 
}

/* Base Navbars */
.navbar {
  display:          flex;
  justify-content:  space-between;
  align-items:      center;
  padding:          var(--spacing-xs) var(--spacing-md);
  background-color: var(--color-primary-light);
  position:         relative;
}

.navbar-brand {
  font-weight:     bold;
  font-size:       var(--font-size-h5);
  text-decoration: none;
  color:           var(--color-matte-white);
}

/* Hamburger menu - builds three line toggle through layout spans */
.nav-toggle {
  display:         flex;
  flex-direction:  column;
  justify-content: space-between;
  width:           var(--spacing-lg);
  height:          var(--spacing-lg);
  padding:         0;
  border:          none;
  background:      transparent;
  cursor:          pointer;
  gap:             4px;
}

.nav-toggle span {
  display:          block;
  width:            100%;
  height:           var(--spacing-xxs);
  background-color: var(--color-surface);
  border-radius:    2px;
  transition:       transform var(--transition-speed-fast)  var(--transition-ease),
                    opacity   var(--transition-speed-fast)  var(--transition-ease); 
}

.navbar-nav {
  display:          none;                          /* Hidden by default on mobile dimensions */
  list-style:       none;
  margin:           0;
  padding:          0;
  flex-direction:   column;
  background-color: var(--color-primary-dark);
  width:            100%;
  position:         absolute;                      /* Dynamic drop-down overlay setup */
  top:              100%;
  left:             0;
  z-index:          var(--z-index-elevated);
  box-shadow:       var(--shadow-md);
}

.navbar-nav.is-open { 
  display: flex;                                   /* Interactive toggle via JS */
}

.nav-item { 
  padding: var(--spacing-sm);
}

.nav-link {
  color:           var(--color-matte-white);
  text-decoration: none;
  transition:      color var(--transition-speed-fast) var(--transition-ease);
}

.nav-link:hover,
.nav-link:focus { 
  color: var(--color-accent); 
}

/* Interactive Button Normalization & Sizing */
.btn {
  display:         inline-block;
  font-family:     var(--font-fam-primary);
  font-size:       var(--font-size-base);
  line-height:     var(--line-height-h5);
  text-align:      center;
  text-decoration: none;
  vertical-align:  middle;
  cursor:          pointer;
  user-select:     none;
  border:          var(--border-width-sm) solid transparent;
  padding:         var(--spacing-sm) var(--spacing-md);
  border-radius:   var(--border-radius-sm);
  transition:      background-color var(--transition-speed-fast),
                   border-color     var(--transition-speed-fast),
                   color            var(--transition-speed-fast),
                   box-shadow       var(--transition-speed-fast);
}

.btn:hover    { background-color: var(--color-primary-light); color: var(--color-matte-white); }
.btn:active   { background-color: var(--color-primary); }
.btn:focus    { outline: var(--border-width-md) solid var(--color-accent); }
.btn:disabled { opacity: 0.6; cursor: not-allowed; pointer-events: none; }

.btn-sm { padding: var(--spacing-xs) var(--spacing-sm); font-size: var(--font-size-sm); }
.btn-md { padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-base); }
.btn-lg { padding: var(--spacing-md) var(--spacing-lg); font-size: var(--font-size-md); }

/* Solid Interactive Variants */
.btn-primary         { background-color: var(--color-primary); color: var(--color-matte-white); border-color: var(--color-primary); }
.btn-primary:hover   { background-color: var(--color-primary-light); border-color: var(--color-primary-light); }

.btn-secondary       { background-color: var(--color-secondary); color: var(--color-matte-white); border-color: var(--color-secondary); }
.btn-secondary:hover { background-color: var(--color-secondary-light); border-color: var(--color-secondary-light); }

.btn-accent          { background-color: var(--color-accent); color: var(--color-matte-white); border-color: var(--color-accent); }
.btn-accent:hover    { background-color: oklch(var(--color-accent-oklch) / var(--alpha-lg)); border-color: oklch(var(--color-accent-oklch) / var(--alpha-xl)); }

.btn-success         { background-color: var(--color-success); color: var(--color-matte-white); border-color: var(--color-success); }
.btn-success:hover   { background-color: oklch(var(--color-success-oklch) / var(--alpha-xl)); border-color: oklch(var(--color-success-oklch) / var(--alpha-xl)); }

.btn-info            { background-color: var(--color-info); color: var(--color-matte-white); border-color: var(--color-info); }
.btn-info:hover      { background-color: oklch(var(--color-info-oklch) / var(--alpha-xl)); border-color: oklch(var(--color-info-oklch) / var(--alpha-xl)); }

/* Warning utilizes dark contrast text to maintain accessibility standards */
.btn-warning         { background-color: var(--color-warning); color: var(--color-secondary); font-weight: bold; border-color: var(--color-warning); }
.btn-warning:hover   { background-color: oklch(var(--color-warning-oklch) / var(--alpha-xl)); border-color: oklch(var(--color-warning-oklch) / var(--alpha-xl)); }

.btn-error           { background-color: var(--color-error); color: var(--color-matte-white); border-color: var(--color-error); }
.btn-error:hover     { background-color: oklch(var(--color-error-oklch) / var(--alpha-xl)); border-color: oklch(var(--color-error-oklch) / var(--alpha-xl)); }

/* Outline Design Variants */
.btn-outline {
  background-color: transparent;
  border:           var(--border-width-sm) solid var(--color-primary);
  color:            var(--color-primary);
  transition:       all var(--transition-speed-normal) var(--transition-ease);
}
.btn-outline:hover { background-color: var(--color-primary); color: var(--color-text-inverse); }
.btn-outline:focus { outline: var(--border-width-md) solid var(--color-accent); outline-offset: var(--border-width-md); }

.btn-outline-primary       { border-color: var(--color-primary); color: var(--color-primary); }
.btn-outline-primary:hover { background-color: var(--color-primary); color: var(--color-text-inverse); }
.btn-outline-primary:focus { outline: var(--border-width-md) solid var(--color-primary); outline-offset: var(--border-width-md); }

.btn-outline-secondary       { border-color: var(--color-secondary); color: var(--color-secondary); }
.btn-outline-secondary:hover { background-color: var(--color-secondary); color: var(--color-text-inverse); }
.btn-outline-secondary:focus { outline: var(--border-width-md) solid var(--color-secondary); outline-offset: var(--border-width-md); }

.btn-outline-accent       { border-color: var(--color-accent); color: var(--color-accent); }
.btn-outline-accent:hover { background-color: var(--color-accent); color: var(--color-text-inverse); }
.btn-outline-accent:focus { outline: var(--border-width-md) solid var(--color-accent); outline-offset: var(--border-width-md); }

.btn-outline-success       { border-color: var(--color-success); color: var(--color-success); }
.btn-outline-success:hover { background-color: var(--color-success); color: var(--color-text-inverse); }
.btn-outline-success:focus { outline: var(--border-width-md) solid var(--color-success); outline-offset: var(--border-width-md); }

.btn-outline-info       { border-color: var(--color-info); color: var(--color-info); }
.btn-outline-info:hover { background-color: var(--color-info); color: var(--color-text-inverse); }
.btn-outline-info:focus { outline: var(--border-width-md) solid var(--color-info); outline-offset: var(--border-width-md); }

.btn-outline-warning       { border-color: var(--color-warning); color: var(--color-warning); }
.btn-outline-warning:hover { background-color: var(--color-warning); color: var(--color-secondary); font-weight: bold; }
.btn-outline-warning:focus { outline: var(--border-width-md) solid var(--color-warning); outline-offset: var(--border-width-md); }

.btn-outline-error       { border-color: var(--color-error); color: var(--color-error); }
.btn-outline-error:hover { background-color: var(--color-error); color: var(--color-text-inverse); }
.btn-outline-error:focus { outline: var(--border-width-md) solid var(--color-error); outline-offset: var(--border-width-md); }

Rationale

Exhibiting components directly alongside their underlying variables allows structural integration tools to trace user-interaction paths cleanly. Normalizing form-controls with standard padding targets (var(--spacing-sm)) and keeping button heights consistent across border widths guarantees high visual polish and cohesive alignment.


Key Architectural Decisions

To conclude, the design methodology of the quell-light.css layout system is summarized in these core structural choices:

  • Mobile-First Layout Dominance: Desktop layouts are treated as progressive overrides. By declaring 100% full-width column stacking as the mobile baseline and placing multi-column settings inside an isolated @media (min-width: 768px) media query block, Quell Light guarantees instant mobile painting and complete layout stability across small devices.
  • Defensive Structural Defaults: Every element normalization rule is designed defensively to protect downstream content formatting. Default list clearings, normalized margins (margin-bottom: var(--spacing-md) on paragraph blocks), and custom anchor focus shadows are deployed universally to establish structured layout defaults.
  • Typographic Contrast with Zero Asset Weight: Eliminating physical @font-face network calls ensures a lightweight CSS footprint and immediate rendering. Setting fluid heading sizes via CSS clamp() enables zoom-safe typographic contrast across different viewports, maintaining a beautiful editorial layout without requiring asset-generation pipelines or heavy font layers.
  • Clean System Parity with quell-light.js: Component styles (such as the drop-down behavior of .navbar-nav and toggle action of .nav-toggle) map directly to states managed by quell-light.js (using selectors under .is-open). This strict alignment ensures seamless handoffs between CSS states and JavaScript interactions, eliminating visual bugs and visual stutter.

© 2026 Ortiz Design Studio. | quell system documentation.