Skip to content

Style Enhancement Guide

This guide documents patterns from the HashiCorp Helios Design System (used on developer.hashicorp.com) alongside current f5xc-docs-theme values. It serves as a reference for future enhancement sprints to improve visual polish — hover effects, shadows, sidebar navigation, button treatments, and hero backgrounds.

Each section presents:

  1. Current state — what the f5xc-docs-theme uses today
  2. Helios reference — the corresponding HashiCorp design token or pattern
  3. Recommendation — specific CSS changes for a future sprint

Token tables are split by light mode and dark mode where values differ. Priority labels indicate sprint sequencing.


The most impactful pattern from Helios is using alpha-transparent borders instead of solid gray colors. This allows borders to adapt naturally to any background.

Current approach — solid gray borders:

/* f5xc-docs-theme today */
border: 1px solid var(--sl-color-gray-5); /* #343434 dark, #cccccc light */

Helios approach — alpha-transparent borders:

/* Helios pattern */
border: 1px solid #656a7633; /* neutral-500 at 20% alpha */
Helios TokenValueOpacityUse Case
border-faint#656a761a10%Subtle separators, table rows
border-primary#656a763320%Default borders, card outlines
border-strong#3b3d456640%Emphasized borders, active states
Helios TokenValueOpacityUse Case
border-faint#f1f2f31a10%Subtle separators
border-primary#f1f2f33320%Default borders
border-strong#f1f2f36640%Emphasized borders

Map the alpha-border pattern onto the existing F5 neutral palette:

/* Light mode */
:root[data-theme='light'] {
--f5-border-faint: #3434341a; /* --f5-black-3 at 10% */
--f5-border-default: #34343433; /* --f5-black-3 at 20% */
--f5-border-strong: #22222266; /* --f5-black-4 at 40% */
}
/* Dark mode */
:root {
--f5-border-faint: #f5f5f51a; /* --f5-white-2 at 10% */
--f5-border-default: #f5f5f533; /* --f5-white-2 at 20% */
--f5-border-strong: #cccccc66; /* --f5-white-4 at 40% */
}

Priority: Sprint 1 — Foundation change that improves every bordered element.

Helios defines semantic surface tokens for hover and active states, absent from the current theme.

TokenHelios ValueF5 EquivalentPurpose
surface-primary#ffffff--f5-whiteMain backgrounds
surface-faint#fafafa--f5-white-1Sidebar, subtle areas
surface-strong#f1f2f3--f5-white-2Elevated surfaces
surface-interactive-hover#f1f2f3--f5-white-2Hover fill
surface-interactive-active#dedfe3--f5-white-3Pressed/active fill
TokenHelios ValueF5 EquivalentPurpose
surface-primary#1a1c22--f5-blackMain backgrounds
surface-faint#26282e--f5-black-4Sidebar, subtle areas
surface-interactive-hover#2e3038--f5-black-3Hover fill
surface-interactive-active#3b3d45--f5-black-2Pressed/active fill
:root[data-theme='light'] {
--f5-surface-hover: var(--f5-white-2); /* #f5f5f5 */
--f5-surface-active: var(--f5-white-3); /* #e6e6e6 */
}
:root {
--f5-surface-hover: var(--f5-black-3); /* #343434 */
--f5-surface-active: var(--f5-black-2); /* #666666 */
}

Priority: Sprint 2 — Needed before sidebar or button enhancements.


The theme uses a single heavy shadow across all elevated components:

/* Used on .mermaid-container, .starlight-aside, .expressive-code .frame, .swatch, .icon-card */
box-shadow:
0 2px 4px rgba(0, 0, 0, 0.04),
0 8px 16px rgba(0, 0, 0, 0.08),
0 24px 48px rgba(0, 0, 0, 0.12);

Issues:

  • Pure black (rgba(0,0,0,...)) shadows look harsh, especially in light mode
  • Single shadow level means no visual hierarchy between cards at rest, hover, and overlays

Helios uses neutral-tinted alpha shadows (#656a76 base) with double-layer values:

LevelValueUse Case
Insetinset 0px 1px 2px 1px #656a761aRecessed inputs
Low0px 1px 1px 0px #656a760d, 0px 2px 2px 0px #656a760dCards at rest
Mid0px 2px 3px 0px #656a761a, 0px 8px 16px -10px #656a7633Hover cards, dropdowns
High0px 2px 3px 0px #656a7626, 0px 16px 16px -10px #656a7633Popovers
Higher0px 2px 3px 0px #656a761a, 0px 12px 28px 0px #656a7640Modals
Overlay0px 2px 3px 0px #3b3d4540, 0px 12px 24px 0px #3b3d4559Full overlays

Helios Surface System (Border + Shadow Combined)

Section titled “Helios Surface System (Border + Shadow Combined)”

Helios combines a 0 0 0 1px border-shadow with elevation for crisp edges plus soft depth:

LevelValue
Base0 0 0 1px #656a7633
Low0 0 0 1px #656a7626, 0px 1px 1px 0px #656a760d, 0px 2px 2px 0px #656a760d
Mid0 0 0 1px #656a7626, 0px 2px 3px 0px #656a761a, 0px 8px 16px -10px #656a7633
High0 0 0 1px #656a7640, 0px 2px 3px 0px #656a7626, 0px 16px 16px -10px #656a7633

The 0 0 0 1px shadow acts as a crisp border without using the border property, avoiding layout shifts on hover.

Using --f5-black-3 (#343434) as the tint base for light mode:

:root[data-theme='light'] {
--f5-shadow-inset: inset 0px 1px 2px 1px #3434341a;
--f5-shadow-low:
0px 1px 1px 0px #3434340d,
0px 2px 2px 0px #3434340d;
--f5-shadow-mid:
0px 2px 3px 0px #3434341a,
0px 8px 16px -10px #34343433;
--f5-shadow-high:
0px 2px 3px 0px #34343426,
0px 16px 16px -10px #34343433;
--f5-shadow-higher:
0px 2px 3px 0px #3434341a,
0px 12px 28px 0px #34343440;
}

Using #cccccc as the tint base for dark mode:

:root {
--f5-shadow-inset: inset 0px 1px 2px 1px #cccccc0d;
--f5-shadow-low:
0px 1px 1px 0px #cccccc0a,
0px 2px 2px 0px #cccccc0a;
--f5-shadow-mid:
0px 2px 3px 0px #cccccc0d,
0px 8px 16px -10px #cccccc1a;
--f5-shadow-high:
0px 2px 3px 0px #cccccc1a,
0px 16px 16px -10px #cccccc1a;
--f5-shadow-higher:
0px 2px 3px 0px #cccccc0d,
0px 12px 28px 0px #cccccc26;
}
ComponentCurrentRecommended Level
.swatch, .icon-cardHeavy 3-layer shadow--f5-shadow-low (at rest)
.starlight-asideHeavy 3-layer shadow--f5-shadow-low
.expressive-code .frameHeavy 3-layer shadow--f5-shadow-mid
.mermaid-containerHeavy 3-layer shadow--f5-shadow-mid
Cards on hover(none)--f5-shadow-mid
Dropdowns, popovers(none)--f5-shadow-high
Modals(none)--f5-shadow-higher

Priority: Sprint 1 — Replacing the existing shadow with a graduated scale is the single most impactful visual improvement.


Every rounded element uses 0.75rem (12px):

/* Used everywhere: .mermaid-container, .starlight-aside, .expressive-code .frame, .swatch, .icon-card */
border-radius: 0.75rem;

Helios uses notably smaller, tighter radii:

TokenValueUse Case
x-small3px / 0.1875remBadges, tags, small chips
small5px / 0.3125remSidebar nav items, inline elements
medium6px / 0.375remCards, code blocks, inputs
large8px / 0.5remModals, large containers
:root {
--f5-radius-xs: 0.1875rem; /* 3px — badges, tags */
--f5-radius-sm: 0.3125rem; /* 5px — nav items, small controls */
--f5-radius-md: 0.375rem; /* 6px — cards, code blocks */
--f5-radius-lg: 0.5rem; /* 8px — modals, large containers */
--f5-radius-full: 999px; /* pills, fully rounded */
}
ComponentCurrentRecommended
.swatch0.75rem--f5-radius-md (6px)
.icon-card0.75rem--f5-radius-md (6px)
.starlight-aside0.75rem--f5-radius-md (6px)
.expressive-code .frame0.75rem--f5-radius-md (6px)
.mermaid-container0.75rem--f5-radius-lg (8px)
.edit-link999px--f5-radius-full (keep)
Sidebar nav items(none)--f5-radius-sm (5px)
Badges(none)--f5-radius-xs (3px)

Priority: Sprint 1 — Simple find-and-replace that tightens the visual feel.


The sidebar uses default Starlight styling with no custom hover, active, or spacing overrides.

PropertyValueNotes
Wrapper border1px solid #dedfe3Light mode; subtle right border
Wrapper padding16px horiz, 16px vertConsistent padding
Wrapper background#fafafa (surface-faint)Slightly off-white
Item height36pxConsistent click target
Item padding8px horiz, 4px vertCompact
Item spacing2px vertical gapTight grouping
Item border-radius5pxTight, not pill-shaped
Text color (default)#3b3d45 (foreground-primary)Readable but not heavy
Text color (muted)#656a76 (foreground-faint)Section labels, inactive items
Hover background#f1f2f3 (surface-interactive-hover)Subtle gray fill
Active background#c2c5cb (neutral-300)Visible selection
Active font weight600Bolder than siblings
PropertyValue
Wrapper background#26282e
Wrapper border1px solid #3b3d4540
Text color (default)#c2c5cb
Text color (muted)#8c909c
Hover background#2e3038
Active background#3b3d45
/* Sidebar navigation items */
nav.sidebar a {
border-radius: var(--f5-radius-sm); /* 5px */
padding: 0.25rem 0.5rem; /* 4px 8px */
min-height: 2.25rem; /* 36px */
display: flex;
align-items: center;
transition: background-color 0.15s ease, color 0.15s ease;
}
/* Light mode hover */
:root[data-theme='light'] nav.sidebar a:hover {
background-color: var(--f5-white-2); /* #f5f5f5 */
}
/* Dark mode hover */
:root nav.sidebar a:hover {
background-color: var(--f5-black-3); /* #343434 */
}
/* Active page indicator */
nav.sidebar a[aria-current="page"] {
background-color: var(--f5-white-3); /* #e6e6e6 light */
font-weight: 600;
}
:root:not([data-theme='light']) nav.sidebar a[aria-current="page"] {
background-color: var(--f5-black-2); /* #666666 → adjust for readability */
}

Helios uses a left border accent on the active item:

nav.sidebar a[aria-current="page"] {
border-left: 3px solid var(--sl-color-accent);
padding-left: calc(0.5rem - 3px); /* compensate for border */
}

Priority: Sprint 2 — High-impact UX improvement for navigation.


The theme has no button system. The only button-like element is the edit-link pill:

.edit-link {
padding: 0.25rem 0.75rem;
border-radius: 999px;
font-size: 0.75rem;
font-weight: 500;
border: 1px solid var(--sl-color-gray-5);
transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}
PropertyLight ModeDark Mode
Background#1060ff (action)#1060ff
Background hover#0c56e9 (action-hover)#0c56e9
Text color#ffffff#ffffff
Bordernonenone
Border radius5px5px
Padding10px 16px10px 16px
Font weight500500
Font size14px (0.875rem)14px
Shadow--f5-shadow-lowsubtle glow
PropertyLight ModeDark Mode
Backgroundtransparenttransparent
Background hover#f1f2f3#2e3038
Text color#3b3d45#c2c5cb
Border1px solid #656a76331px solid #f1f2f333
Border hover1px solid #3b3d45661px solid #f1f2f366
Border radius5px5px
PropertyLight ModeDark Mode
Backgroundtransparenttransparent
Background hover#f1f2f3#2e3038
Text color#1060ff#5990ff
Bordernonenone
Underline on hoveroptionaloptional
PropertyLight ModeDark Mode
Background#c00005#c00005
Background hover#a30004#a30004
Text color#ffffff#ffffff
Bordernonenone

Map Helios action colors to F5 brand equivalents:

/* Primary — using F5 Red as brand action */
.btn-primary {
background: var(--f5-red);
color: var(--f5-white);
border: none;
border-radius: var(--f5-radius-sm);
padding: 0.625rem 1rem;
font-weight: 500;
font-size: 0.875rem;
transition: background-color 0.15s ease, box-shadow 0.15s ease;
}
.btn-primary:hover {
background: var(--f5-red-3);
box-shadow: var(--f5-shadow-low);
}
/* Secondary — outline style */
.btn-secondary {
background: transparent;
color: var(--sl-color-gray-2);
border: 1px solid var(--f5-border-default);
border-radius: var(--f5-radius-sm);
padding: 0.625rem 1rem;
font-weight: 500;
font-size: 0.875rem;
transition: background-color 0.15s ease, border-color 0.15s ease;
}
.btn-secondary:hover {
background: var(--f5-surface-hover);
border-color: var(--f5-border-strong);
}
/* Tertiary — ghost/text-only */
.btn-tertiary {
background: transparent;
color: var(--sl-color-accent);
border: none;
border-radius: var(--f5-radius-sm);
padding: 0.625rem 1rem;
font-weight: 500;
font-size: 0.875rem;
transition: background-color 0.15s ease;
}
.btn-tertiary:hover {
background: var(--f5-surface-hover);
}
SizePaddingFont SizeMin Height
Small0.375rem 0.75rem0.8125rem (13px)32px
Medium (default)0.625rem 1rem0.875rem (14px)40px
Large0.75rem 1.5rem1rem (16px)48px

Priority: Sprint 3 — Depends on border and surface tokens from Sprint 1-2.


No hero or header background treatments exist. Pages use the plain page background.

Each HashiCorp product uses a unique gradient for hero sections. Example from Terraform:

TokenValueUse
Primary start#bb8debRich gradient for hero
Primary stop#844fba
Faint start#fcfaffSubtle page wash
Faint stop#f4ecff

Using the F5 brand palette:

/* Primary hero gradient — River blue */
.hero-gradient-primary {
background: linear-gradient(135deg, var(--f5-river-2) 0%, var(--f5-river) 100%);
/* #6e8dcc → #0e41aa */
}
/* Faint page wash — subtle warm tone */
:root[data-theme='light'] .hero-gradient-faint {
background: linear-gradient(180deg, #faf9f7 0%, #f5f5f5 100%);
}
:root .hero-gradient-faint {
background: linear-gradient(180deg, #222222 0%, #000000 100%);
}
/* Eggplant variant for feature pages */
.hero-gradient-eggplant {
background: linear-gradient(135deg, var(--f5-eggplant-2) 0%, var(--f5-eggplant) 100%);
/* #9c59c9 → #62228b */
}
/* Red brand variant for announcements */
.hero-gradient-red {
background: linear-gradient(135deg, var(--f5-red-2) 0%, var(--f5-red) 100%);
/* #f06680 → #e4002b */
}
/* Radial vignette for depth */
.hero-vignette::after {
content: '';
position: absolute;
inset: 0;
background: radial-gradient(ellipse at center, transparent 40%, rgba(0, 0, 0, 0.15) 100%);
pointer-events: none;
}
/* Bottom fade to page background */
.hero-fade::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 30%;
background: linear-gradient(to bottom, transparent, var(--sl-color-black));
pointer-events: none;
}

Priority: Sprint 4 — Visual polish after foundational tokens are in place.


Only the edit-link has transition properties:

.edit-link {
transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

No sidebar, navigation, card, or button hover transitions exist.

TypeDurationEasingUse Case
Standard0.15seaseMost hover states, color changes
Interactive0.2seaseBackground fills, border changes
Bouncy toggle0.2scubic-bezier(0.68, -0.2, 0.265, 1.15)Switches, toggles
Slide decelerate0.6scubic-bezier(0.5, 1, 0.89, 1)Tab indicators, sliding panels
Spring tooltip0.2scubic-bezier(0.54, 1.5, 0.38, 1.11)Tooltips, popover entry
PropertySafe to AnimateNotes
background-colorYesStandard for hover fills
colorYesText color changes
border-colorYesBorder emphasis on hover
box-shadowYesElevation changes (use will-change if jank)
transformYesScale, translate for feedback
opacityYesFade in/out
width, heightAvoidCauses layout reflow
padding, marginAvoidCauses layout reflow
:root {
--f5-transition-fast: 0.15s ease;
--f5-transition-base: 0.2s ease;
--f5-transition-bounce: 0.2s cubic-bezier(0.68, -0.2, 0.265, 1.15);
--f5-transition-decelerate: 0.6s cubic-bezier(0.5, 1, 0.89, 1);
--f5-transition-spring: 0.2s cubic-bezier(0.54, 1.5, 0.38, 1.11);
}
/* Sidebar nav items */
nav.sidebar a {
transition: background-color var(--f5-transition-fast),
color var(--f5-transition-fast);
}
/* Cards — shadow lift on hover */
.swatch, .icon-card {
transition: box-shadow var(--f5-transition-base),
transform var(--f5-transition-base);
}
.swatch:hover, .icon-card:hover {
box-shadow: var(--f5-shadow-mid);
transform: translateY(-1px);
}
/* Buttons */
.btn-primary, .btn-secondary, .btn-tertiary {
transition: background-color var(--f5-transition-fast),
border-color var(--f5-transition-fast),
box-shadow var(--f5-transition-fast);
}
/* Links */
a {
transition: color var(--f5-transition-fast);
}

Priority: Sprint 5 — Final polish layer after all components have hover states defined.


Default browser focus outlines. No custom focus ring styling.

Helios uses a double-ring pattern with an inset inner ring and an outer glow:

TypeValueUse Case
Actioninset 0 0 0 1px #0c56e9, 0 0 0 3px #5990ffInteractive elements (links, buttons)
Criticalinset 0 0 0 1px #c00005, 0 0 0 3px #dd7578Destructive action buttons
/* Action focus — using F5 River blue */
:root {
--f5-focus-action: inset 0 0 0 1px var(--f5-river), 0 0 0 3px var(--f5-river-2);
/* inset 0 0 0 1px #0e41aa, 0 0 0 3px #6e8dcc */
--f5-focus-critical: inset 0 0 0 1px var(--f5-red-3), 0 0 0 3px var(--f5-red-2);
/* inset 0 0 0 1px #a70020, 0 0 0 3px #f06680 */
}
/* Apply to interactive elements */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
outline: none;
box-shadow: var(--f5-focus-action);
}
/* Critical variant for destructive buttons */
.btn-critical:focus-visible {
box-shadow: var(--f5-focus-critical);
}
  • The double-ring pattern meets WCAG 2.2 Focus Appearance requirements (minimum 2px contrasting outline)
  • Using box-shadow instead of outline allows border-radius to be respected
  • :focus-visible ensures the ring only appears for keyboard navigation, not mouse clicks

Priority: Sprint 5 — Accessibility improvement bundled with transition polish.


:root {
--sl-font: "proximaNova", system-ui, "Segoe UI", Helvetica, Arial, sans-serif;
--sl-font-heading: "neusaNextProWide", system-ui, "Segoe UI", Helvetica, Arial, sans-serif;
--sl-line-height-headings: 1.1;
}
ScaleSizeLine HeightF5 Equivalent
Display 5001.875rem (30px)1.267--sl-text-h1
Display 4001.5rem (24px)1.333--sl-text-h2
Display 3001.125rem (18px)1.333--sl-text-h3
Display 2001rem (16px)1.5--sl-text-h4
Display 1000.8125rem (13px)1.385Overline text
Body 3001rem (16px)1.5Primary body
Body 2000.875rem (14px)1.429Sidebar text, captions
Body 1000.8125rem (13px)1.385Small print
AspectCurrent f5xcHeliosNotes
Heading line height1.11.267–1.333F5 headings are tighter; consider loosening to 1.2 for readability
Body line heightStarlight default (1.5)1.5Aligned
Font familyCustom brand fontsSystem fontsF5 correctly uses brand fonts; no change needed
Heading weightsh1-h2: 700, h3: 500, h4-h6: 700 uppercase400-600F5 typography is more opinionated (good for brand)

Priority: No sprint needed. Current typography is well-defined and brand-appropriate. Minor adjustment to heading line height (1.1 to 1.2) is optional.


Sprint 1: Foundation — Shadows + Border Radius

Section titled “Sprint 1: Foundation — Shadows + Border Radius”

Scope: Replace the single shadow with a graduated scale; introduce a border-radius scale.

TaskDetails
Define --f5-shadow-* tokens5 levels: inset, low, mid, high, higher
Define --f5-radius-* tokens4 levels: xs, sm, md, lg, full
Update .mermaid-container--f5-shadow-mid, --f5-radius-lg
Update .starlight-aside--f5-shadow-low, --f5-radius-md
Update .expressive-code .frame--f5-shadow-mid, --f5-radius-md
Update .swatch, .icon-card--f5-shadow-low, --f5-radius-md

Estimated diff: ~40 lines changed in custom.css.

Sprint 2: Sidebar Navigation + Surface Tokens

Section titled “Sprint 2: Sidebar Navigation + Surface Tokens”

Scope: Add hover/active states to sidebar; define interactive surface tokens.

TaskDetails
Define --f5-surface-hover, --f5-surface-activeLight and dark mode values
Define --f5-border-faint, --f5-border-default, --f5-border-strongAlpha-transparent borders
Style sidebar nav itemsHeight, padding, border-radius, hover bg, active bg
Add left accent indicatorActive page border-left
Add --f5-transition-fastApply to sidebar items

Estimated diff: ~60 lines added to custom.css.

Scope: Create primary, secondary, tertiary, and critical button classes.

TaskDetails
Define .btn-primaryF5 Red background, white text
Define .btn-secondaryOutline with alpha border
Define .btn-tertiaryGhost/text-only with hover fill
Define .btn-criticalRed destructive variant
Define size variantsSmall, medium (default), large
Update .edit-linkMigrate to .btn-secondary pattern

Estimated diff: ~80 lines added to custom.css.

Scope: Create hero gradient utilities and page wash effects.

TaskDetails
Define gradient classes.hero-gradient-primary, -eggplant, -red
Define faint page wash.hero-gradient-faint for subtle backgrounds
Create overlay utilities.hero-vignette, .hero-fade
Update hero componentApply gradient to documentation landing page

Estimated diff: ~50 lines added to custom.css.

Scope: Accessibility-compliant focus rings and comprehensive transition system.

TaskDetails
Define --f5-focus-action, --f5-focus-criticalDouble-ring focus pattern
Apply :focus-visible stylesAll interactive elements
Define --f5-transition-* tokensFast, base, bounce, decelerate, spring
Add card hover effectsShadow lift + translateY on swatches, icon cards
Add link transitionsColor transition on all links

Estimated diff: ~60 lines added to custom.css.


:root {
/* Border radius scale */
--f5-radius-xs: 0.1875rem; /* 3px */
--f5-radius-sm: 0.3125rem; /* 5px */
--f5-radius-md: 0.375rem; /* 6px */
--f5-radius-lg: 0.5rem; /* 8px */
--f5-radius-full: 999px;
/* Transition timing */
--f5-transition-fast: 0.15s ease;
--f5-transition-base: 0.2s ease;
--f5-transition-bounce: 0.2s cubic-bezier(0.68, -0.2, 0.265, 1.15);
--f5-transition-decelerate: 0.6s cubic-bezier(0.5, 1, 0.89, 1);
--f5-transition-spring: 0.2s cubic-bezier(0.54, 1.5, 0.38, 1.11);
/* Focus rings */
--f5-focus-action: inset 0 0 0 1px var(--f5-river), 0 0 0 3px var(--f5-river-2);
--f5-focus-critical: inset 0 0 0 1px var(--f5-red-3), 0 0 0 3px var(--f5-red-2);
/* Dark mode shadows (default) */
--f5-shadow-low: 0px 1px 1px 0px #cccccc0a, 0px 2px 2px 0px #cccccc0a;
--f5-shadow-mid: 0px 2px 3px 0px #cccccc0d, 0px 8px 16px -10px #cccccc1a;
--f5-shadow-high: 0px 2px 3px 0px #cccccc1a, 0px 16px 16px -10px #cccccc1a;
--f5-shadow-higher: 0px 2px 3px 0px #cccccc0d, 0px 12px 28px 0px #cccccc26;
/* Dark mode borders */
--f5-border-faint: #f5f5f51a;
--f5-border-default: #f5f5f533;
--f5-border-strong: #cccccc66;
/* Dark mode surfaces */
--f5-surface-hover: var(--f5-black-3);
--f5-surface-active: var(--f5-black-2);
}
:root[data-theme='light'] {
/* Light mode shadows */
--f5-shadow-low: 0px 1px 1px 0px #3434340d, 0px 2px 2px 0px #3434340d;
--f5-shadow-mid: 0px 2px 3px 0px #3434341a, 0px 8px 16px -10px #34343433;
--f5-shadow-high: 0px 2px 3px 0px #34343426, 0px 16px 16px -10px #34343433;
--f5-shadow-higher: 0px 2px 3px 0px #3434341a, 0px 12px 28px 0px #34343440;
/* Light mode borders */
--f5-border-faint: #3434341a;
--f5-border-default: #34343433;
--f5-border-strong: #22222266;
/* Light mode surfaces */
--f5-surface-hover: var(--f5-white-2);
--f5-surface-active: var(--f5-white-3);
}

Helios TokenHelios ValueF5 EquivalentF5 Value
neutral-0#ffffff--f5-white#ffffff
neutral-50#fafafa--f5-white-1#faf9f7
neutral-100#f1f2f3--f5-white-2#f5f5f5
neutral-200#dedfe3--f5-white-3#e6e6e6
neutral-300#c2c5cb--f5-white-4#cccccc
neutral-400#8c909c--f5-black-1#999999
neutral-500#656a76--f5-black-2#666666
neutral-600#3b3d45--f5-black-3#343434
neutral-700#0c0c0e--f5-black-4#222222

The F5 palette aligns closely with Helios neutrals. The Helios tokens have slightly cooler undertones (blue-gray) while F5 uses pure grays, but the value steps map well.

LevelCurrent f5xcProposed f5xc (light)Helios (light)
At rest3-layer heavy shadow--f5-shadow-lowElevation Low
Hover(same as rest)--f5-shadow-midElevation Mid
Dropdown(same as rest)--f5-shadow-highElevation High
Modal(same as rest)--f5-shadow-higherElevation Higher
Tint colorrgba(0,0,0,...) pure black#343434xx neutral-tinted#656a76xx neutral-tinted