<div class="wf-bg-primary wf-p-3 wf-rounded-3">...</div>
<div class="wf-bg-subtle wf-p-3 wf-rounded-3 wf-border">...</div>
<div class="wf-shadow-md wf-p-3 wf-rounded-3">...</div>
<div class="wf-opacity-50 wf-bg-primary wf-p-3 wf-rounded-3">...</div>
<div class="wf-shape wf-shape-circle wf-bg-positive wf-size-10 wf-center">...</div>
<div class="wf-cursor-pointer wf-border wf-rounded-2 wf-p-3">...</div>
CSS Utilities
A comprehensive set of single-purpose utility classes that cover spacing, sizing, display, positioning, backgrounds, borders, shadows, visual effects, overflow, cursors, loading states, and responsive modifiers. Every utility maps directly to one or a few CSS declarations – add the class, get the style.
Spacing
Padding and margin utilities use a 10-step spacing scale driven by CSS custom properties --wf-space-1 through --wf-space-10 . Step 0 sets the value to 0 . Directional shorthands cover inline (x), block (y), and individual sides (t/b/l/r). wf-mx-auto centres a block element horizontally.
Padding
<div class="wf-p-3">...</div>
<div class="wf-px-4">...</div>
<div class="wf-py-2">...</div>
<div class="wf-pt-5 wf-pb-2">...</div>
<div class="wf-pl-3 wf-pr-6">...</div>
Margin
<div class="wf-m-4">...</div>
<div class="wf-mx-auto">...</div>
<div class="wf-my-3">...</div>
<div class="wf-mt-5 wf-mb-2">...</div>
<div class="wf-ml-4 wf-mr-2">...</div>
| Class | Description | Values |
|---|---|---|
| wf-p-* | Padding on all sides | 0–10, x (CSS var) |
| wf-px-* | Padding inline (left + right) | 0–10, x |
| wf-py-* | Padding block (top + bottom) | 0–10, x |
| wf-pt-* | Padding top | 0–10, x |
| wf-pb-* | Padding bottom | 0–10, x |
| wf-pl-* | Padding left | 0–10, x |
| wf-pr-* | Padding right | 0–10, x |
| wf-m-* | Margin on all sides | 0–10, x |
| wf-mx-* | Margin inline (left + right) | 0–10, x, auto |
| wf-my-* | Margin block (top + bottom) | 0–10, x |
| wf-mt-* | Margin top | 0–10, x |
| wf-mb-* | Margin bottom | 0–10, x |
| wf-ml-* | Margin left | 0–10, x |
| wf-mr-* | Margin right | 0–10, x |
Responsive Spacing
All spacing utilities are available with four breakpoint prefixes. Classes without a prefix apply at all sizes; prefixed classes override only within their breakpoint. wf-fluid forces an element to full width and auto height inside a phone or mobile viewport.
| Prefix | Breakpoint | Example |
|---|---|---|
| wf-phone-* | ≤ 41.999 rem (≤ 671 px) | wf-phone-p-4 |
| wf-mobile-* | 42 – 61.999 rem (672 – 991 px) | wf-mobile-mt-3 |
| wf-tablet-* | 62 – 79.999 rem (992 – 1279 px) | wf-tablet-px-6 |
| wf-screen-* | ≥ 80rem (≥ 1280 px) | wf-screen-py-8 |
Each prefix supports the full set of p, px, py, pt, pb, pl, pr and m, mx, my, mt, mb, ml, mr, mx-auto variants with steps 0-10. wf-border-split-l and wf-border-split-r convert side borders to top/bottom borders on phone and mobile.
<!-- Full padding on desktop, reduced on phone -->
<div class="wf-p-8 wf-phone-p-3">...</div>
<!-- Centre on all sizes, add top margin only on tablet+ -->
<div class="wf-mx-auto wf-tablet-mt-6">...</div>
<!-- Fluid (full-width) on phone only -->
<div class="wf-fluid">...</div>
Sizing
Control the width and height of any element with keyword, fractional, or fixed-step classes. wf-size-* sets both width and height to a fixed step simultaneously.
Width
<div class="wf-w-full">100% width</div>
<div class="wf-w-1-2">50% width</div>
<div class="wf-w-1-4">25% width</div>
<div class="wf-max-w-xl">max-width: xl</div>
<div class="wf-w-screen">100vw width</div>
Size (with shape)
<div class="wf-size-4">...</div>
<div class="wf-shape wf-shape-rounded wf-size-6">...</div>
<div class="wf-shape wf-shape-circle wf-size-8">...</div>
<div class="wf-shape wf-shape-squarecircle wf-size-2xl">...</div>
| Class | Description | Values |
|---|---|---|
| wf-w-* | Width | auto full screen fit min max · fractions: 1-2 1-3 2-3 1-4 3-4 1-5 2-5 3-5 4-5
|
| wf-width | Width via --wf-width CSS variable |
- |
| wf-min-w-* | Min-width | 0 full |
| wf-max-w-* | Max-width | none full xs sm md lg xl 2xl 3xl 4xl 5xl 6xl screen |
| wf-h-* | Height | auto full screen svh fit min max |
| wf-height | Height via --wf-height CSS variable |
- |
| wf-min-h-* | Min-height | 0 full screen svh |
| wf-max-h-* | Max-height | none full screen |
| wf-size-* | Sets width and height equally | 1–12 · 2xl 3xl 4xl full |
Display & Visibility
Set the CSS display property with a single class. wf-hidden hides an element (removes from flow); wf-show and wf-hide toggle visibility via a JS-friendly convention.
<span class="wf-block">block</span>
<span class="wf-inline-block">inline-block</span>
<div class="wf-flex">flex container</div>
<div class="wf-inline-flex">inline flex</div>
<div class="wf-grid">grid container</div>
<div class="wf-hidden">hidden</div>
<div class="wf-show">shown by JS</div>
| Class | CSS |
|---|---|
| wf-hidden | display: none |
| wf-block | display: block |
| wf-inline-block | display: inline-block |
| wf-inline | display: inline |
| wf-flex | display: flex |
| wf-flex-wrap | display: flex; flex-wrap: wrap |
| wf-flex-1 | flex: 1 |
| wf-flex-grow | flex-grow: 1 |
| wf-flex-shrink | flex-shrink: 0 |
| wf-inline-flex | display: inline-flex |
| wf-grid | display: grid |
| wf-inline-grid | display: inline-grid |
| wf-contents | display: contents |
| wf-visible | visibility: visible |
| wf-invisible | visibility: hidden |
| wf-collapse | visibility: collapse |
| wf-show | display: revert — used with JS triggers |
| wf-hide | display: none — used with JS triggers |
Position & Z-index
Set the CSS position property and control inset offsets and stacking order with utility classes. Inset sides also have a CSS-variable-driven form ( wf-top , wf-right , etc.) that read from --wf-top etc.
<div class="wf-relative">
<div class="wf-absolute wf-top-0 wf-right-0">top-right</div>
<div class="wf-absolute wf-bottom-0 wf-left-0">bottom-left</div>
</div>
<div class="wf-sticky wf-top-0 wf-z-50">sticky header</div>
<div class="wf-fixed wf-bottom-0 wf-z-100">fixed footer</div>
| Class | Description | Values |
|---|---|---|
| wf-static | position: static | - |
| wf-relative | position: relative | - |
| wf-absolute | position: absolute | - |
| wf-fixed | position: fixed | - |
| wf-sticky | position: sticky | - |
| wf-inset-* | inset shorthand | 0 auto |
| wf-top-* | top offset | 0–10 auto full · CSS var form: wf-top |
| wf-right-* | right offset | 0–10 auto full · CSS var form: wf-right |
| wf-bottom-* | bottom offset | 0–10 auto full · CSS var form: wf-bottom |
| wf-left-* | left offset | 0–10 auto full · CSS var form: wf-left |
| wf-z-* | z-index | -1 auto 0 1 10 20 30 40 50 100 200 500 1000 |
Backgrounds
Background utilities cover semantic surface tokens, the full palette, inverted variants, opacity-adjusted tints, and gradient classes. Add a direction modifier or wf-soft to gradient classes to adjust appearance.
Semantic backgrounds
<div class="wf-bg-surface">...</div>
<div class="wf-bg-subtle">...</div>
<div class="wf-bg-primary">...</div>
<div class="wf-bg-secondary">...</div>
<div class="wf-bg-positive">...</div>
<div class="wf-bg-negative">...</div>
Palette backgrounds
<div class="wf-bg-sage">...</div>
<div class="wf-bg-indigo">...</div>
<div class="wf-bg-earth">...</div>
<div class="wf-bg-forest">...</div>
<div class="wf-bg-plum">...</div>
<div class="wf-bg-lavender">...</div>
<div class="wf-bg-light">...</div>
<div class="wf-bg-dark">...</div>
Opacity backgrounds & Gradients
<!-- Opacity tint (5–60) -->
<div class="wf-bg-primary wf-bg-20">...</div>
<!-- Gradient backgrounds -->
<div class="wf-gradient wf-gradient-primary">...</div>
<div class="wf-gradient wf-gradient-primary wf-gradient-soft">...</div>
<div class="wf-gradient wf-gradient-primary wf-gradient-right">...</div>
<div class="wf-linear">...</div>
<div class="wf-radial">...</div>
| Class | Description | Values |
|---|---|---|
| wf-bg-* (semantic) | Semantic background tokens | surface subtle primary secondary positive negative alert info |
| wf-bg-* (palette) | Palette background colors | sage indigo earth forest plum lavender dusk light dark grey |
| wf-bg-*-inverted | Inverted background variants | Same palette names with -inverted suffix |
| wf-bg-* (opacity) | Semi-transparent background tint over the current color | 5 10 20 30 40 50 60 |
| wf-gradient | Gradient base class – combine with color + direction modifiers | Colors: wf-gradient-{palette} · Directions: wf-gradient-right|bottom|left|top · Soft: wf-gradient-soft
|
| wf-linear | Linear gradient via --wf-gradient-* vars |
- |
| wf-radial | Radial gradient via --wf-gradient-* vars |
- |
Borders & Radius
Add borders on all sides or individual sides, set width, style, and color – all composable. Border-radius scales from wf-rounded-1 (2px) to wf-rounded-10 (24px) plus wf-rounded-full for pills and circles, with per-corner control.
Border utilities
<div class="wf-border">default border</div>
<div class="wf-border-t">top only</div>
<div class="wf-border wf-border-primary">primary color</div>
<div class="wf-border wf-border-2">2px width</div>
<div class="wf-border wf-border-dashed">dashed style</div>
<div class="wf-border wf-border-none">remove border</div>
Border radius
<div class="wf-rounded-3">rounded-3</div>
<div class="wf-rounded-full">pill / circle</div>
<!-- Per-corner: tl | tr | br | bl -->
<div class="wf-rounded-tl-5 wf-rounded-br-5">diagonal corners</div>
| Class | Description | Values |
|---|---|---|
| wf-border | 1px solid border on all sides | - |
| wf-border-t/r/b/l | Border on one side | - |
| wf-border-* (width) | Border width | 1 2 3 4 |
| wf-border-* (style) | Border style | solid dashed dotted none |
| wf-border-* (semantic) | Border color from semantic tokens | primary secondary positive negative alert |
| wf-border-* (palette) | Border color from palette | sage indigo earth forest plum lavender dusk light dark grey |
| wf-border-split-l/r | Converts a side border to top/bottom at phone/mobile breakpoints | - |
| wf-rounded-* | Border radius (all corners) | 1–10 full |
| wf-rounded-tl/tr/br/bl-* | Border radius per corner | 1–10 full |
Shadows
Seven levels of box-shadow depth from wf-shadow-none to wf-shadow-xl , all driven by the --shadow-color CSS variable so they adapt to dark mode automatically.
<div class="wf-shadow-none">no shadow</div>
<div class="wf-shadow-xs">xs shadow</div>
<div class="wf-shadow-sm">sm shadow</div>
<div class="wf-shadow">base shadow</div>
<div class="wf-shadow-md">md shadow</div>
<div class="wf-shadow-lg">lg shadow</div>
<div class="wf-shadow-xl">xl shadow</div>
Effects & Hover
Adjust opacity, apply CSS filters (blur, grayscale), rotate elements, and enable hover transitions with composable classes. Pair wf-hover with any wf-hoverable-* modifier to animate on mouse-over.
Opacity
<div class="wf-opacity-100">full</div>
<div class="wf-opacity-75">75%</div>
<div class="wf-opacity-50">50%</div>
<div class="wf-opacity-25">25%</div>
<div class="wf-opacity-0">hidden</div>
Blur & Grayscale
<img class="wf-blur-2" src="photo.jpg" alt="">
<img class="wf-grayscale-100" src="photo.jpg" alt="">
Hover effects
Combine wf-hover (adds CSS transition) with one wf-hoverable-* modifier. The wf-attached-* classes clip an element to one edge of its positioned parent for overlay panels.
<div class="wf-hover wf-hoverable-zoom">zoom on hover</div>
<div class="wf-hover wf-hoverable-lift">lifts up</div>
<div class="wf-hover wf-hoverable-float">floats</div>
<div class="wf-hover wf-hoverable-dim">dims</div>
<div class="wf-hover wf-hoverable-brighten">brightens</div>
<div class="wf-hover wf-hoverable-grayscale">grayscales</div>
<div class="wf-hover wf-hoverable-colorize">colorizes</div>
<div class="wf-hover wf-hoverable-blur">blurs</div>
<div class="wf-relative wf-hover wf-hoverable-overlay-dark">
<img src="photo.jpg" alt="">
</div>
| Class | Description | Values |
|---|---|---|
| wf-opacity-* | Element opacity | 0 5 10 15 20 25 30 40 50 60 70 75 80 90 95 100 |
| wf-blur-* | CSS blur filter | 0–10 |
| wf-grayscale-* | CSS grayscale filter | 0 25 50 75 100 |
| wf-hover | Enables CSS transition for hover modifiers | - |
| wf-hover-reveal | Hidden child element — fades in and slides up when wf-hover parent is hovered or focused |
— |
| wf-hoverable-* | Hover transformation effect | zoom lift float dim brighten grayscale colorize blur overlay-dark overlay-light overlay-primary
|
| wf-attached-* | Clips an element to parent edge (absolute) | top bottom left right |
Reveal Element
Add wf-hover-reveal to any child inside a wf-hover parent to hide it by default and reveal it smoothly on :hover or :focus-within . Useful for action links and secondary controls that should not clutter the idle state.
This startup is revolutionizing the industry with AI
<!-- wf-hover parent triggers reveal on :hover and :focus-within -->
<div class="wf-hover">
<div>
<p>Title</p>
<p>Subtitle</p>
</div>
<!-- hidden by default, fades + slides in on hover -->
<a href="#" class="wf-hover-reveal">Read →</a>
</div>
Shapes & Transform
Create geometric shapes, rotate elements by fixed angles, translate to center an element in its positioned parent, and lock an element to a specific aspect ratio.
Square, Circle & Shapes
<div class="wf-shape wf-shape-square">...</div>
<div class="wf-shape wf-shape-circle">...</div>
<div class="wf-shape wf-shape-squarecircle">...</div>
<div class="wf-shape wf-shape-rounded">...</div>
Rotate
<div class="wf-rotate-45">...</div>
<div class="wf-rotate-90">...</div>
<div class="wf-rotate-180">...</div>
<div class="wf-rotate--45">...</div>
<div class="wf-rotate--90">...</div>
Translate & Aspect Ratio
<!-- Centre element within a position:relative parent -->
<div class="wf-absolute wf-translate">centred</div>
<div class="wf-absolute wf-translate-x">centred horizontally</div>
<div class="wf-absolute wf-translate-y">centred vertically</div>
<!-- Aspect ratios -->
<div class="wf-aspect-video">16/9</div>
<div class="wf-aspect-square">1/1</div>
<div class="wf-aspect-4-3">4/3</div>
<div class="wf-aspect-3-2">3/2</div>
<div class="wf-aspect-16-6">16/6</div>
Overflow, Cursor & Select
Control how overflowing content is handled, change the pointer icon, disable or enable event capture, and restrict text selection behavior.
<div class="wf-overflow-hidden">...</div>
<div class="wf-overflow-auto">...</div>
<div class="wf-overflow-scroll">...</div>
<div class="wf-overflow-x-hidden wf-overflow-y-auto">...</div>
<!-- Cursor -->
<div class="wf-cursor-pointer">...</div>
<div class="wf-cursor-not-allowed">...</div>
<div class="wf-cursor-grab">...</div>
<!-- Pointer events -->
<div class="wf-pointer-events-none">...</div>
<div class="wf-pointer-events-auto">...</div>
<!-- User select -->
<div class="wf-select-none">not selectable</div>
<div class="wf-select-all">click to select all</div>
| Class | Description | Values |
|---|---|---|
| wf-overflow-* | Overflow on both axes | hidden auto scroll visible clip |
| wf-overflow-x-* | Overflow on x-axis | hidden auto scroll visible clip |
| wf-overflow-y-* | Overflow on y-axis | hidden auto scroll visible clip |
| wf-cursor-* | Cursor style | auto default pointer wait text move not-allowed grab grabbing zoom-in zoom-out crosshair help none
|
| wf-pointer-events-* | Pointer event capture | none auto |
| wf-select-* | User text selection | none text all auto |
Loading States
wf-loading overlays any container with a blurred backdrop and an animated dot spinner while blocking interaction. wf-button-loading turns a button into an animated three-dot loader – useful for async form submissions.
Container loading
<!-- Container loading overlay -->
<div class="wf-loading">
<p>Content hidden while loading</p>
</div>
<!-- Button loading state -->
<button class="wf-button-loading"></button>
Breadcrumb
A lightweight breadcrumb component built entirely with utility classes. The wf-breadcrumb wrapper handles flex layout and text casing; wf-crumb marks each item, is_active highlights the current page, and wf-separator renders the delimiter.
<nav class="wf-breadcrumb">
<ul>
<li class="wf-crumb"><a href="/">Home</a></li>
<li class="wf-crumb wf-separator">/</li>
<li class="wf-crumb"><a href="/utility">Utility</a></li>
<li class="wf-crumb wf-separator">/</li>
<li class="wf-crumb is_active">CSS Utilities</li>
</ul>
</nav>
| Class | Description |
|---|---|
| wf-breadcrumb | Wrapper – flex row, lowercase, 0.875rem font |
| wf-breadcrumb-sm | Smaller font variant (0.875rem) |
| wf-crumb | Individual breadcrumb item – link opacity 50%, 100% on hover |
| wf-separator | Delimiter between crumbs (flex-grow: 1) |
| is_active | Current/active breadcrumb - full opacity, font-weight 600 |
Responsive Visibility
Show or hide elements at specific breakpoints without writing media queries. wf-{bp}-hidden hides with display: none !important ; wf-{bp}-visible restores with display: revert !important .
<!-- Hidden on phone, visible everywhere else -->
<div class="wf-phone-hidden">...</div>
<!-- Hidden on mobile only -->
<div class="wf-mobile-hidden">...</div>
<!-- Visible only on tablet -->
<div class="wf-phone-hidden wf-mobile-hidden wf-screen-hidden wf-tablet-visible">...</div>
<!-- Hidden on large screens -->
<div class="wf-screen-hidden">...</div>
| Class | Breakpoint | Effect |
|---|---|---|
| wf-phone-hidden | ≤ 41.999 rem | display: none !important |
| wf-phone-visible | ≤ 41.999 rem | display: revert !important |
| wf-mobile-hidden | 42 – 61.999 rem | display: none !important |
| wf-mobile-visible | 42 – 61.999 rem | display: revert !important |
| wf-tablet-hidden | 62 – 79.999 rem | display: none !important |
| wf-tablet-visible | 62 – 79.999 rem | display: revert !important |
| wf-screen-hidden | ≥ 80 rem | display: none !important |
| wf-screen-visible | ≥ 80 rem | display: revert !important |
Class Reference
Complete listing of all utility classes grouped by category. Numeric suffixes and named variants are listed inline in the Values column.
| Class | Description | Values |
|---|---|---|
| Spacing | ||
| wf-p-* | Padding all sides | 0–10, x |
| wf-px-* | Padding inline | 0–10, x |
| wf-py-* | Padding block | 0–10, x |
| wf-pt/pb/pl/pr-* | Padding per side | 0–10, x |
| wf-m-* | Margin all sides | 0–10, x |
| wf-mx-* | Margin inline | 0–10, x, auto |
| wf-my-* | Margin block | 0–10, x |
| wf-mt/mb/ml/mr-* | Margin per side | 0–10, x |
| Responsive Spacing | ||
| wf-phone-p/px/py/pt/pb/pl/pr-* | Phone breakpoint padding | 0–10 |
| wf-phone-m/mx/my/mt/mb/ml/mr-* | Phone breakpoint margin | 0–10, mx-auto |
| wf-mobile-p/px/py/pt/pb/pl/pr-* | Mobile breakpoint padding | 0–10 |
| wf-mobile-m/mx/my/mt/mb/ml/mr-* | Mobile breakpoint margin | 0–10, mx-auto |
| wf-tablet-p/px/py/pt/pb/pl/pr-* | Tablet breakpoint padding | 0–10 |
| wf-tablet-m/mx/my/mt/mb/ml/mr-* | Tablet breakpoint margin | 0–10, mx-auto |
| wf-screen-p/px/py/pt/pb/pl/pr-* | Screen breakpoint padding | 0–10 |
| wf-screen-m/mx/my/mt/mb/ml/mr-* | Screen breakpoint margin | 0–10, mx-auto |
| wf-fluid | Force full-width/auto-height (phone & mobile) | - |
| Sizing | ||
| wf-w-* | Width | auto full screen fit min max · fractions: 1-2 1-3 2-3 1-4 3-4 1-5 2-5 3-5 4-5
|
| wf-width | Width via CSS variable | Set --wf-width |
| wf-min-w-* | Min-width | 0 full |
| wf-max-w-* | Max-width | none full xs sm md lg xl 2xl 3xl 4xl 5xl 6xl screen |
| wf-h-* | Height | auto full screen svh fit min max |
| wf-height | Height via CSS variable | Set --wf-height |
| wf-min-h-* | Min-height | 0 full screen svh |
| wf-max-h-* | Max-height | none full screen |
| wf-size-* | Width + height (square) | 1–12 2xl 3xl 4xl full |
| Display & Visibility | ||
| wf-hidden | display: none | - |
| wf-block / wf-inline-block / wf-inline | Block-level display | - |
| wf-flex / wf-inline-flex / wf-flex-wrap | Flex display | - |
| wf-flex-1 / wf-flex-grow / wf-flex-shrink | Flex item sizing | - |
| wf-grid / wf-inline-grid / wf-contents | Grid display | - |
| wf-visible / wf-invisible / wf-collapse | visibility property | - |
| wf-show / wf-hide | JS-friendly show/hide aliases | - |
| Position & Z-index | ||
| wf-static / wf-relative / wf-absolute / wf-fixed / wf-sticky | position property | - |
| wf-inset-* | inset shorthand | 0 auto |
| wf-top/right/bottom/left-* | Individual inset sides | 0–10 auto full · CSS var: wf-top etc. |
| wf-z-* | z-index | -1 auto 0 1 10 20 30 40 50 100 200 500 1000 |
| Backgrounds | ||
| wf-bg-* (semantic) | Semantic surface tokens | surface subtle primary secondary positive negative alert info |
| wf-bg-* (palette) | Palette colors | sage indigo earth forest plum lavender dusk light dark grey · add -inverted
|
| wf-bg-* (opacity) | Semi-transparent tint | 5 10 20 30 40 50 60 |
| wf-gradient wf-gradient-* | Gradient background | Color: palette names · Direction: right bottom left top · wf-gradient-soft
|
| wf-linear / wf-radial | Custom gradient via CSS vars | - |
| Borders & Radius | ||
| wf-border | 1px solid all sides | - |
| wf-border-t/r/b/l | Single-side border | - |
| wf-border-* (width/style/color) | Border modifier | Width: 1–4 · Style: solid dashed dotted none · Colors: semantic + palette |
| wf-border-split-l/r | Side → top/bottom border at small breakpoints | - |
| wf-rounded-* | Border radius all corners | 1–10 full |
| wf-rounded-tl/tr/br/bl-* | Border radius per corner | 1–10 full |
| Shadows | ||
| wf-shadow-* | Box shadow depth | none xs sm (base) md lg xl |
| Effects & Hover | ||
| wf-opacity-* | Element opacity | 0 5 10 15 20 25 30 40 50 60 70 75 80 90 95 100 |
| wf-blur-* | CSS blur filter | 0–10 |
| wf-grayscale-* | CSS grayscale filter | 0 25 50 75 100 |
| wf-hover | Enables hover transition | - |
| wf-hoverable-* | Hover effect modifier | zoom lift float dim brighten grayscale colorize blur overlay-dark overlay-light overlay-primary
|
| wf-attached-* | Clip to parent edge | top bottom left right |
| Shapes & Transform | ||
| wf-square / wf-circle | Force equal-side ratio / circle clip | - |
| wf-shape-* | Clip-path shapes | triangle rhombus pentagon and others |
| wf-rotate-* | CSS rotate transform | 0 45 90 180 -45 -90 -180 |
| wf-translate / wf-translate-x / wf-translate-y | Center in positioned parent | - |
| wf-aspect-* | Aspect ratio lock | auto square video 4-3 3-2 16-6 |
| Overflow, Cursor & Select | ||
| wf-overflow-* | Overflow (both axes) | hidden auto scroll visible clip |
| wf-overflow-x/y-* | Overflow per axis | hidden auto scroll visible clip |
| wf-cursor-* | Cursor style | auto default pointer wait text move not-allowed grab grabbing zoom-in zoom-out crosshair help none
|
| wf-pointer-events-* | Pointer event capture | none auto |
| wf-select-* | User text selection | none text all auto |
| Loading States | ||
| wf-loading | Blurred overlay + dot spinner, blocks interaction | - |
| wf-button-loading | Three-dot loading animation for buttons | - |
| Breadcrumb | ||
| wf-breadcrumb | Breadcrumb nav wrapper | - |
| wf-breadcrumb-sm | Smaller breadcrumb variant | - |
| wf-crumb | Individual breadcrumb item | - |
| wf-separator | Delimiter between items | - |
| is_active | Active/current page item | - |
| Responsive Visibility | ||
| wf-phone-hidden / wf-phone-visible | Hide or show at phone breakpoint | - |
| wf-mobile-hidden / wf-mobile-visible | Hide or show at mobile breakpoint | - |
| wf-tablet-hidden / wf-tablet-visible | Hide or show at tablet breakpoint | - |
| wf-screen-hidden / wf-screen-visible | Hide or show at screen breakpoint | - |