SV Brand Guide v6 ยท CBO Reviewed

StorageValet

Operation Midnight Teal โ€” A dark-first design system for a tech-forward storage concierge. 6-agent validated, WCAG AA+.

12 Colors 4-Step Accent Ramp Dark-First WCAG AA+ DM Serif + Outfit
April 2026 ยท My Storage Valet LLC ยท Delaware ยท Operation Midnight Teal ยท 6 agents
ยง00.5

Voice & Tone

Storage Valet is a premium, white-glove storage concierge โ€” not a storage facility, not a moving company. We are a service + data platform that brings reliability, clarity, and trust to urban household overflow.

Voice Principles

  • Confident but not arrogant โ€” We know our value; we don't oversell
  • Clear and direct โ€” No jargon, no filler, no corporate-speak
  • Warm but professional โ€” Approachable premium, like a trusted concierge
  • Action-oriented โ€” Every piece of copy should guide toward a next step

Do / Don't Examples

Do: "We pick up, store, and return your items โ€” so you never have to think about storage again."
Don't: "Our innovative storage solutions leverage cutting-edge logistics to optimize your spatial needs."
Do: "Schedule a pickup with 48 hours' notice. We handle the rest."
Don't: "Simply submit a retrieval request through our proprietary scheduling interface."

Language Rules

Always SayNever Say
"as needed""on-demand"
"48-hour lead time""instant" or "same-day"
"schedule returns""request delivery"
"valet service""storage unit"
"better value""cheaper"
"planned pickup""on-demand retrieval"
Important: Storage Valet does NOT photograph or catalog items โ€” customers do that themselves via the portal. Never say "we photograph and catalog your items."

Content Principles

  1. Lead with the resident benefit, not Storage Valet features
  2. Specificity sells โ€” "$2,000 included coverage" beats "insurance included"
  3. One CTA per section โ€” Don't create choice paralysis
  4. Social proof when available โ€” Building partnerships, resident count, promo redemptions
  5. Seasonal hooks โ€” Holiday decorations, back-to-school, spring cleaning, baby gear rotation
ยง01

Color Palette

A 12-color system anchored by near-black Midnight and Electric Teal. Dark backgrounds are the default canvas; light surfaces are the exception. Status colors are functional tokens โ€” they are not part of the brand palette count.

Dark Range โ€” 3 Colors

Abyss
#060E1A
Page background, deepest layer
Midnight
#0A1628
Cards, nav, footer, primary surfaces
Deep Sea
#0D2137
Gradients, depth layers, elevated surfaces

Accent Range โ€” 4 Colors (Teal Ramp)

Electric Teal
#00D4AA
CTA fills (both modes); icons, focus, accent text on dark only
Teal Dark
#00A888
Button hover/active; primary button border on light bg
Deep Teal
#008F72
Pressed/tertiary accent โ€” dark surfaces only
Link Teal
#007A62
Text links and interactive text on light backgrounds

Neutral Range โ€” 5 Colors

Storm
#3D4F54
Body text on light surfaces
Mist
#8BA4A8
Body & secondary text on dark surfaces
Seafoam
#E6F0EE
Warm card surface, feature highlights
Cloud
#F4F7F6
Light-mode page background
White
#FFFFFF
Cards, modals, inputs on light bg
Palette Lock โ€” 12 colors. 3 dark + 4 teal + 5 neutral = 12. No new hex values permitted under any circumstance. Opacity tokens (rgba) may be used for decorative chrome, dividers, glows, and disabled ornaments only โ€” never for readable text. Status/functional colors (success, info, warning, error) are not brand colors and are not counted.
Mist โ‰  Storm cross-rule: Mist (#8BA4A8) is a dark-mode-only text color. Storm (#3D4F54) is a light-mode-only text color. They never appear on the other mode's surfaces. Mist on Cloud = 2.44:1 โ€” a hard accessibility failure.
ยง02

Color Usage Rules

Which color goes where โ€” and which combinations are prohibited.

Dark Surfaces (Default)

ElementColorValue
Page backgroundAbyss#060E1A
Card / elevated surfaceMidnight or Deep Sea#0A1628 / #0D2137
Headlines (H1, H2)White#FFFFFF
Body textMist โ€” full opacity#8BA4A8
Secondary / meta textMist โ€” full opacity#8BA4A8 (same token; no opacity)
CTA button fillElectric Teal#00D4AA
CTA button textMidnight#0A1628
LinksElectric Teal#00D4AA
Icons (standalone)Electric Teal (follows --sv-accent-text)#00D4AA
Focus ringsElectric Teal, 2px solid, 2px offset#00D4AA
BordersWhite at 6% opacityrgba(255,255,255,0.06)
No opacity text on dark: Secondary and meta text must use full-opacity Mist (#8BA4A8), not a dimmed opacity variant. Opacity is reserved for decorative chrome only. If a visually lighter tertiary level is ever needed, define it as a named token (--sv-text-tertiary) with verified contrast โ€” never use opacity as a shortcut.

Light Surfaces

ElementColorValue
Page backgroundCloud#F4F7F6
CardsWhite#FFFFFF
Featured / warm cardsSeafoam#E6F0EE
HeadlinesMidnight#0A1628
Body textStorm โ€” full opacity#3D4F54
Secondary / meta textStorm โ€” full opacity#3D4F54 (same token; no opacity)
CTA button fillElectric Teal + 2px Teal Dark border#00D4AA / border #00A888
CTA button textMidnight#0A1628
LinksLink Teal#007A62
Icons (standalone)Link Teal (follows --sv-accent-text)#007A62
Focus ringsLink Teal, 2px solid, 2px offset#007A62
Critical Prohibitions: (1) Electric Teal (#00D4AA) must NEVER be used as text on light backgrounds โ€” it fails WCAG at 1.9:1 on Cloud, 1.8:1 on White. (2) Mist (#8BA4A8) must NEVER be used as text on light backgrounds โ€” it fails at 2.44:1 on Cloud. (3) Storm (#3D4F54) must NEVER appear on dark backgrounds.
ยง03

The Teal Accent Ramp

Four steps from luminous to deep. One teal can't work everywhere โ€” the ramp solves dark-vs-light contrast without leaving the accent family.

Electric #00D4AA
Dark #00A888
Deep #008F72
Link #007A62
StepHexRoleOn AbyssOn Cloud
Electric Teal #00D4AA CTA fills both modes; icons, focus rings, accent text โ€” dark surfaces only 10.1:1 AAA โœ“ 1.9:1 FAIL โœ—
Teal Dark #00A888 Button hover/active; light-mode primary button border 6.4:1 AA โœ“ 2.6:1 FAIL โœ—
Deep Teal #008F72 Pressed states, tertiary accents โ€” dark only 4.8:1 AA โœ“ 3.5:1 AA Large โš 
Link Teal #007A62 Text links on light bg, outline buttons โ€” light only 3.65:1 AA Large โš  4.9:1 AA โœ“
The Surface Split: Electric Teal on dark โ†’ Link Teal on light. CTA button fills always use Electric Teal regardless of surface mode (the text sits on the teal, not on the background). Link Teal on Abyss is only 3.65:1 โ€” AA Large only. The accent-text split already prevents this use case, but the table must be accurate.
Icon token: Standalone icons follow the --sv-accent-text pattern: Electric Teal on dark surfaces, Link Teal on light surfaces. No separate icon token is needed โ€” the existing accent-text mapping covers it.
ยง04

Typography

DM Serif Display for emotional headlines. Outfit for everything else. Warmth meets precision.

Display โ€” DM Serif Display

Your Home, Reclaimed.

Used for: H1, H2, hero headlines, pull quotes, logo lockup, and emotional moments.
Weight: 400 Regular + 400 Italic only. Never bold. Never H3 or smaller.

Fallback stack: 'DM Serif Display', Georgia, 'Times New Roman', serif

Body UI โ€” Outfit

Outfit 700 โ€” H3, card titles

Outfit 500 โ€” Subheadings, nav labels

Outfit 300 โ€” Body text, descriptions, long-form content

Available weights: 300, 400, 500, 600, 700. Geometric, modern, optimized for digital.

Fallback stack: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif

Monospace โ€” hex values, code, token displays

#00D4AA --sv-electric-teal rgb(0, 212, 170)

Use mono stack for all hex values, CSS code blocks, and technical reference displays. Never use 'Outfit' as a monospace font.

Fallback stack: 'SF Mono', 'JetBrains Mono', 'Fira Code', Consolas, monospace

Type Scale

ElementSizeWeightFontColor (Dark)Color (Light)
H1 โ€” Heroclamp(48px, 7vw, 96px)400DM Serif DisplayWhiteMidnight
H2 โ€” Sectionclamp(32px, 4vw, 44px)400DM Serif DisplayWhiteMidnight
H3 โ€” Card title20โ€“24px700OutfitWhiteMidnight
H4 โ€” Label13โ€“16px600โ€“700OutfitMistStorm
Body15โ€“16px300โ€“400OutfitMistStorm
Eyebrow11โ€“12px700OutfitElectric TealLink Teal
Small / Meta12โ€“13px400OutfitMist โ€” full opacityStorm โ€” full opacity
Button14โ€“16px700OutfitPer button spec (ยง05)
Code / Hex11โ€“13px400Monospace stackElectric TealLink Teal
The authoritative typography is DM Serif Display + Outfit. Any mockup that uses Plus Jakarta Sans or Inter is exploratory only and should not be referenced during implementation.
ยง05

Components

Live-rendered buttons, cards, chips, links, and status elements across both surface modes.

Buttons

Dark Surface
Primary Outline Ghost
Light Surface
Primary Dark Outline Ghost
ButtonSurfaceFillTextBorderHover
PrimaryBothElectric TealMidnightElectric Teal (dark) / Teal Dark 2px (light)Teal Dark fill + translateY(-1px)
DarkLight onlyMidnightWhiteMidnightDeep Sea fill + translateY(-1px)
OutlineDarkTransparentElectric TealElectric Teal @ 35%Teal glow bg
OutlineLightTransparentLink TealLink Teal 2pxSeafoam bg
GhostDarkTransparentElectric TealNoneUnderline color shift
GhostLightTransparentLink TealNoneElectric Teal underline
Primary buttons use Midnight text on Electric Teal fill โ€” always. This combination yields 9.5:1 (AAA) and works on both surfaces. On light backgrounds, a 2px Teal Dark border is added to meet WCAG 1.4.11 non-text contrast (3:1 minimum for UI boundaries).
Dark button is restricted to light-mode surfaces only. On dark backgrounds, use Primary (Electric Teal) or Outline instead. Using a dark Midnight button on a dark Midnight/Abyss background creates zero visual separation.

Status Chips

On Dark Surface
Stored Pending Scheduled Cancelled
On Light Surface โ€” with 1px border
Stored Pending Scheduled Cancelled
Icon + label is mandatory. Every status chip requires a dot indicator or icon alongside the text label โ€” never rely on color alone (WCAG 1.4.1). Light-mode chips add a 1px border of currentColor as an additional WCAG 1.4.11 safeguard. Info chip light-mode BG is #E0EBF0 (shifted from the former #E6F0EE to prevent Seafoam collision).

Link Component Spec

ContextColorUnderlineHoverFocus Ring
Link on dark bgElectric Teal #00D4AANone (underline on hover)Teal Dark #00A888 + underlineElectric Teal, 2px solid, 2px offset
Link on light bgLink Teal #007A62None (underline on hover)Deep Teal #008F72 + underlineLink Teal, 2px solid, 2px offset
Link on light bg (alt)Midnight #0A1628Electric Teal underline, 3px offsetTeal Dark underlineLink Teal, 2px solid, 2px offset
Never use Electric Teal (#00D4AA) as link text on light backgrounds. It fails at 1.9:1 on Cloud and 1.8:1 on White. The alt style above (Midnight + teal underline) is the only valid way to use Electric Teal in a light-mode link context โ€” as a decorative underline, not the text itself.

Warm Cards

Seafoam Card

Teal left-border accent on Seafoam surface. Feature highlights and callouts on light pages. Body text must be Storm, never Mist.

White Card

Teal left-border accent on White surface. Content cards on Cloud-background pages.

ยง06

Motion & Interaction

Purposeful, restrained motion. Every animation must earn its place.

Transition Tokens

TokenValueUse
--sv-transition0.2s cubic-bezier(0.22, 1, 0.36, 1)Buttons, links, hover states, focus rings
--sv-transition-slow0.4s cubic-bezier(0.22, 1, 0.36, 1)Page reveals, card entrances, modals

Permitted Animations

AnimationDurationContext
fadeUp (opacity + translateY)0.6โ€“0.8sHero content, page load reveals
fadeIn (opacity only)0.8โ€“1.0sBackground elements, ambient glows
Staggered delays0.1โ€“0.15s incrementsSequential element reveals โ€” max 6 items
Scale on hover0.2sCards, tiles โ€” max scale: 1.02
Button lift0.2stranslateY(-1px) + one-step color darken on hover
Never: Parallax scrolling, auto-playing carousels, bounce/elastic easing, text animations that delay readability, or any animation exceeding 1 second duration.
/* Mandatory reduced-motion override โ€” must be in every implementation */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
ยง07

Spacing & Layout

An 8px base grid with named tokens. Generous whitespace is a brand signal โ€” not wasted space.

Space Tokens

TokenValueUse
--sv-space-xs4pxInline gaps, icon margins
--sv-space-sm8pxTight component padding
--sv-space-md16pxDefault component gap, card padding
--sv-space-lg24pxSection inner padding
--sv-space-xl32pxSection margins, card padding (large)
--sv-space-2xl48pxPage section spacing
--sv-space-3xl64pxMajor section breaks
--sv-space-4xl96pxHero/footer vertical padding

Border Radius Tokens

TokenValueUse
--sv-radius-sm6pxChips, badges, small buttons
--sv-radius-md8pxButtons, inputs, code blocks
--sv-radius-lg12pxCards, modals
--sv-radius-xl16pxFeature cards, panels
--sv-radius-2xl20pxHero panels, pricing cards

Layout Constraints

ElementMax WidthHorizontal Padding
Content container1100px48px (24px on mobile)
Pricing card580px48px internal
Body text640pxโ€”
Hero headline880pxโ€”
ยง08

Accessibility

WCAG 2.1 AA minimum for all text. AAA targeted for primary reading combinations. Ratios are Claude Desktop verified calculations.

Text on Dark Backgrounds

TextBackgroundRatioRating
White (#FFF)Abyss (#060E1A)19.3:1AAA โœ“
White (#FFF)Midnight (#0A1628)18.1:1AAA โœ“
White (#FFF)Deep Sea (#0D2137)16.3:1AAA โœ“
Mist (#8BA4A8)Abyss (#060E1A)7.4:1AA โœ“
Mist (#8BA4A8)Midnight (#0A1628)6.9:1AA โœ“
Electric Teal (#00D4AA)Abyss (#060E1A)10.1:1AAA โœ“
Electric Teal (#00D4AA)Midnight (#0A1628)9.5:1AAA โœ“
Teal Dark (#00A888)Abyss (#060E1A)6.4:1AA โœ“
Teal Dark (#00A888)Midnight (#0A1628)6.0:1AA โœ“
Deep Teal (#008F72)Abyss (#060E1A)4.8:1AA โœ“
Link Teal (#007A62)Abyss (#060E1A)3.65:1AA Large โš 
Link Teal (#007A62)Midnight (#0A1628)3.4:1AA Large โš 
Link Teal on dark: 3.65:1 (Abyss) and 3.4:1 (Midnight) โ€” AA Large only. The accent-text split already prevents this use case (Link Teal belongs on light surfaces). These values are documented for accuracy; no implementation should use Link Teal as text on dark backgrounds.

Text on Light Backgrounds

TextBackgroundRatioRating
Midnight (#0A1628)White (#FFF)18.1:1AAA โœ“
Midnight (#0A1628)Cloud (#F4F7F6)15.6:1AAA โœ“
Midnight (#0A1628)Seafoam (#E6F0EE)15.6:1AAA โœ“
Storm (#3D4F54)White (#FFF)8.6:1AAA โœ“
Storm (#3D4F54)Cloud (#F4F7F6)7.9:1AAA โœ“
Storm (#3D4F54)Seafoam (#E6F0EE)7.5:1AAA โœ“
Link Teal (#007A62)White (#FFF)5.3:1AA โœ“
Link Teal (#007A62)Cloud (#F4F7F6)4.9:1AA โœ“
Mist (#8BA4A8)Cloud (#F4F7F6)2.44:1FAIL โœ—
Mist (#8BA4A8)White (#FFF)2.6:1FAIL โœ—
Electric Teal (#00D4AA)Cloud (#F4F7F6)1.9:1FAIL โœ—
Electric Teal (#00D4AA)White (#FFF)1.8:1FAIL โœ—

Button Text Contrast (WCAG 1.4.3)

TextButton FillRatioRating
Midnight (#0A1628)Electric Teal (#00D4AA)9.5:1AAA โœ“
White (#FFF)Midnight (#0A1628)18.1:1AAA โœ“
Midnight (#0A1628)Teal Dark (#00A888)6.0:1AA โœ“
White (#FFF)Electric Teal (#00D4AA)1.8:1FAIL โœ—

WCAG 1.4.11 โ€” Non-Text Contrast

UI component boundaries (button borders, input outlines, focus indicators) require a 3:1 minimum contrast against adjacent colors. Electric Teal button fill on Cloud is ~1.9:1 for the boundary alone โ€” below the 3:1 requirement. Mitigation: light-surface primary buttons add a 2px solid var(--sv-teal-dark) border (Teal Dark on Cloud = 3.5:1 AA boundary). This is a light-mode-only addition; dark-surface primary buttons do not need it.

Key Accessibility Rules

NEVER: Electric Teal as text on Cloud, White, or Seafoam โ€” fails at 1.8โ€“1.9:1.
NEVER: Mist as text on Cloud, White, or Seafoam โ€” fails at 2.44:1. Mist is dark-mode only. Storm is light-mode only. They never cross.
ALWAYS: Link Teal for all interactive text on light surfaces. Electric Teal for interactive text/icons on dark surfaces.
ALWAYS: Visible focus indicators on all interactive elements โ€” 2px solid, 2px offset. Electric Teal on dark, Link Teal on light.
ยง09

Dark & Light Modes

Dark is the default. Light mode is the inversion for specific contexts โ€” emails, print, property manager materials, and OS-level light-mode preference on certain products.

Per-Product Dark-Mode Behavior

ProductBehaviorImplementation
sv-website (mystoragevalet.com) Always dark. No toggle. No system preference detection. :root applies dark tokens unconditionally. Never add a media query or theme toggle. The brand statement is strongest when unequivocal.
sv-portal-2026 (portal.mystoragevalet.com) Dark default, respects prefers-color-scheme: light via media query. :root dark tokens are the base. Add a media query to override with light tokens for users who have OS-level light mode enabled. No manual toggle required.
sv-wiki (wiki.mystoragevalet.com) Dark default, respects prefers-color-scheme: light via media query. Same behavior pattern as sv-portal-2026. The wiki is a long-form internal reading surface; honoring OS preference improves readability without diluting the brand stance. No manual toggle.
Print / Email Light body always. Hardcode light palette hex values (CSS vars are stripped by email clients). See ยง12 Email Templates.

Semantic Token Mapping

TokenDark Mode (Default)Light Mode
--sv-bg-pageAbyss #060E1ACloud #F4F7F6
--sv-bg-surfaceMidnight #0A1628White #FFFFFF
--sv-bg-elevatedDeep Sea #0D2137Seafoam #E6F0EE
--sv-text-primaryWhite #FFFFFFMidnight #0A1628
--sv-text-bodyMist #8BA4A8 (full opacity)Storm #3D4F54 (full opacity)
--sv-text-secondaryMist #8BA4A8 (full opacity)Storm #3D4F54 (full opacity)
--sv-accentElectric Teal #00D4AAElectric Teal #00D4AA
--sv-accent-textElectric Teal #00D4AALink Teal #007A62
--sv-focusElectric Teal #00D4AALink Teal #007A62
--sv-borderrgba(255,255,255,0.06)rgba(0,0,0,0.06)
--sv-btn-primary-fillElectric TealElectric Teal
--sv-btn-primary-textMidnightMidnight
--sv-text-secondary uses full-opacity values. Opacity-based text creates unpredictable accessibility failures on non-solid backgrounds. Both --sv-text-body and --sv-text-secondary resolve to the same full-opacity value. If a visually lighter tertiary level is required, define --sv-text-tertiary as a separate named token with verified contrast โ€” never use opacity.

Portal & Wiki Implementation (prefers-color-scheme)

/* sv-portal-2026 and sv-wiki dark/light implementation */
/* Dark is the base โ€” no condition required */
:root {
  --sv-bg-page:       #060E1A;
  --sv-bg-surface:    #0A1628;
  --sv-text-primary:  #FFFFFF;
  --sv-text-body:     #8BA4A8;
  --sv-text-secondary:#8BA4A8;
  --sv-accent-text:   #00D4AA;
  --sv-focus:         #00D4AA;
  --sv-border:        rgba(255,255,255,0.06);
}

/* Respect OS-level light mode preference */
@media (prefers-color-scheme: light) {
  :root {
    --sv-bg-page:       #F4F7F6;
    --sv-bg-surface:    #FFFFFF;
    --sv-text-primary:  #0A1628;
    --sv-text-body:     #3D4F54;
    --sv-text-secondary:#3D4F54;
    --sv-accent-text:   #007A62;
    --sv-focus:         #007A62;
    --sv-border:        rgba(0,0,0,0.06);
  }
}

/* sv-website: always dark โ€” no media query, no toggle */
ยง10

Photography & Art Direction

Cinematic, editorial, human. Never stock-photo sterile.

Aesthetic: "Cinematic Concierge"

Photography should feel like stills from a documentary about beautifully organized urban life. Moody natural light, shallow depth-of-field, real spaces with real wear. The dark palette means photos need to hold their own on both dark and light surfaces.

Principles

PrincipleDoDon't
LightNatural window light, golden hour, soft shadowsFlash, flat studio light, fluorescent
ColorDesaturated, cool undertones, teal/slate tintsOversaturated, warm orange filters, HDR
PeopleCandid moments, genuine expressions, diverse ages/backgroundsPosed stock faces, models with forced smiles
SpacesReal apartments, lived-in texture, window views of Hudson CountyCatalog staging, empty rooms
ItemsClose-ups of real belongings (coats, boxes, sports gear) handled with careGeneric boxes, warehouse interiors, padlocks

Color Treatment for Dark Surfaces

When placing photography on dark backgrounds, apply a subtle overlay: linear-gradient(rgba(6,14,26,0.3), rgba(6,14,26,0.6)) to ensure text readability over images. Photos should feel like they emerge from the darkness, not sit on top of it.

ยง12

Email Templates

Email clients strip CSS variables, ignore dark backgrounds, and force their own dark-mode inversions. The rules here are different from the web โ€” hardcode everything.

Default Email Structure

Your pickup is confirmed.

Your Storage Valet pickup has been scheduled for Thursday, April 23rd between 10amโ€“12pm. Our team will arrive at the address on file.

Questions? Contact our team anytime or reply to this email.

Email Design Rules

ElementValue (hardcoded hex)Reason
Header background#0A1628 (Midnight)Dark header creates brand signature; safe in most clients
Body background#FFFFFF (White)Light body is the safe email default โ€” consistent across all clients
Body text#3D4F54 (Storm)High contrast on white; never use Mist in email body
Headlines#0A1628 (Midnight)DM Serif Display; hardcode the hex, not a token
CTA buttonFill #00D4AA, text #0A1628Must have Midnight text โ€” white-on-teal fails (1.8:1)
Text links#007A62 (Link Teal)AA on white; underline always present in email
Footer background#F4F7F6 (Cloud)Subtle separation from white body
Footer text#3D4F54 (Storm)Maintain accessibility in footer

Client Behavior Notes

ClientDark Mode BehaviorMitigation
Gmail (mobile)Forces dark-mode inversion on light email contentAdd color-scheme: light dark and test; inversion is partial and inconsistent
Outlook (Windows)Ignores dark background colors entirely โ€” background reverts to whiteDark header will revert to white. Ensure header text has dark fallback. Use table-based layouts.
Apple MailRespects CSS @media (prefers-color-scheme: dark)Safe to add a dark-mode media query block for Apple Mail specifically if desired
CSS custom properties (var(--sv-...)) do not work in any email client. All email templates must hardcode every hex value. Dark email templates (fully dark body) require explicit testing in every target client before production use.
ยง13

Warm Accent Migration

The Navy + Berry system (v2.0โ€“v4.2) included warm accent tokens that have no equivalent in Midnight Teal. This section documents their canonical migration targets so agents encountering v4.x hex values in any codebase know exactly where they go.

Deprecated Token Mapping

Deprecated TokenOld ValueMigration TargetNotes
Rose Taupe decorative borders #AC928A --sv-border (rgba subtle border) Warm borders had decorative-only purpose; the rgba border system achieves the same subtlety without a warm hue
Rosey Tint highlight backgrounds #E8DAD6 Seafoam #E6F0EE Seafoam is the warm-light surface in the Midnight Teal system; slightly cooler but functionally equivalent for highlights
Parchment page backgrounds Warm off-white Cloud #F4F7F6 (light) / Abyss #060E1A (dark) Parchment implied warmth that conflicts with the teal-led system; Cloud and Abyss are the new mode-appropriate page backgrounds
Berry CTA #A14567 Electric Teal #00D4AA All CTA fills migrate to Electric Teal. The warm CTA era is fully retired.
Oxford Navy heading #213C47 Midnight #0A1628 (dark) / Midnight text on light Midnight is darker and more refined; use for all heading and surface roles previously held by Oxford Navy
Mist Blue secondary text Named legacy token Mist #8BA4A8 (dark) / Storm #3D4F54 (light) Do not confuse with the new Mist token โ€” the legacy "Mist Blue" was a different value entirely
Action Brown Named legacy token Deprecated โ€” no replacement Action Brown is fully retired from the system with no equivalent. Do not introduce any brown or warm-brown accent.
If you find a warm hex value from the v4.x era in any codebase, match it to the table above and migrate to the Midnight Teal equivalent. Any warm hex that cannot be mapped to a row above should be treated as an error โ€” escalate rather than guess.
ยง14

Common Mistakes

The patterns developers reach for that break the system.

MistakeWhy It FailsCorrect Pattern
Electric Teal text on Cloud / White / Seafoam1.8โ€“1.9:1 โ€” invisible to many usersLink Teal (#007A62) for all readable text on light surfaces
Mist text on Cloud / White / Seafoam2.44:1 โ€” hard accessibility failure. Mist is dark-mode only. Storm is light-mode only. They never cross.Storm (#3D4F54) for all body text on light surfaces
White text on Electric Teal buttons1.8:1 โ€” FAIL; close to invisibleMidnight (#0A1628) text on Electric Teal โ€” always. This is the only approved combination.
Using Electric Teal for both fill and textConflates two distinct rolesElectric Teal for fills/icons/focus on dark; Link Teal for readable text on light
Dark button on dark surfacesMidnight on Midnight/Abyss = zero separationDark button is light-surface only. Use Primary (teal) or Outline on dark surfaces.
Opacity-based text tokensFails on non-solid backgrounds; produces unpredictable contrast valuesFull-opacity Mist on dark, full-opacity Storm on light. Define named tokens if lighter text is needed.
Mist or Storm as text in the wrong modeMist on Cloud = 2.44:1 fail; Storm on Abyss = wrong toneMist โ†’ dark surfaces only. Storm โ†’ light surfaces only.
Using Outfit as monospaceOutfit is a geometric sans โ€” it is not monospaced; hex values and code look inconsistentUse the mono stack: 'SF Mono', 'JetBrains Mono', 'Fira Code', Consolas, monospace
Skipping the accent-text swap in light modeElectric Teal links on Cloud = invisible textMap --sv-accent-text to Link Teal in light mode
Using Abyss for card backgroundsNo visual separation from the page backgroundMidnight or Deep Sea for cards on Abyss page
DM Serif Display below H2Serif at small sizes loses legibility; system only loads 400 Regular weightOutfit 700 for H3 and below
DM Serif Display in bold (font-weight: 700)Only ships Regular โ€” browser faux-bold is visually brokenDM Serif Display 400 only. Use Outfit for bold needs.
Using Plus Jakarta Sans or Inter in implementationsThese were used in exploratory mockups only โ€” not authoritativeThe production typefaces are DM Serif Display + Outfit. No substitutions.
Adding new hex values to the paletteBreaks the 12-color palette lockUse rgba opacity on existing colors for decorative/data-vis variations only โ€” never for text
CSS variables in email templatesStripped by every major email clientHardcode all hex values in email HTML using inline styles
Skipping prefers-reduced-motionAccessibility violation for motion-sensitive usersAlways include the reduced-motion media query (see ยง06)
Writing "Storage Valet" with a space in the logo lockup, favicon, or other visual brand markThe logo lockup is "StorageValet" โ€” the color split provides word separation; a space disrupts visual symmetry"StorageValet" (no space) only in visual marks: logo lockup, favicon/app icon, merchandise, URL slugs, social profile handles, hashtags. "Storage Valet" (with space) everywhere text is read: page titles, meta tags, email subject/body copy, headings in documents, product and plan names, press, legal, documentation, and the LLC name.
ยง15

Quick Start

Copy-paste CSS custom properties. This is the complete design system in one code block โ€” start here.

/* =============================================
   STORAGEVALET โ€” Brand Tokens v6
   Operation Midnight Teal ยท Dark-First
   12 colors: 3 dark + 4 teal + 5 neutral
   ============================================= */

:root {

  /* PALETTE โ€” 12 COLORS (LOCKED) */
  --sv-abyss:          #060E1A;
  --sv-midnight:       #0A1628;
  --sv-deep-sea:       #0D2137;
  --sv-electric-teal:  #00D4AA;
  --sv-teal-dark:      #00A888;
  --sv-deep-teal:      #008F72;
  --sv-link-teal:      #007A62;
  --sv-storm:          #3D4F54;
  --sv-mist:           #8BA4A8;
  --sv-seafoam:        #E6F0EE;
  --sv-cloud:          #F4F7F6;
  --sv-white:          #FFFFFF;

  /* TYPOGRAPHY */
  --sv-font-display: 'DM Serif Display', Georgia, 'Times New Roman', serif;
  --sv-font-body:    'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --sv-font-mono:    'SF Mono', 'JetBrains Mono', 'Fira Code', Consolas, monospace;

  /* SEMANTIC TOKENS โ€” dark mode default */
  --sv-bg-page:        var(--sv-abyss);
  --sv-bg-surface:     var(--sv-midnight);
  --sv-bg-elevated:    var(--sv-deep-sea);
  --sv-text-primary:   var(--sv-white);
  --sv-text-body:      var(--sv-mist);
  --sv-text-secondary: var(--sv-mist);
  --sv-accent:         var(--sv-electric-teal);
  --sv-accent-text:    var(--sv-electric-teal);
  --sv-focus:          var(--sv-electric-teal);
  --sv-border:         rgba(255,255,255,0.06);

  /* STATUS TOKENS โ€” dark mode default */
  --sv-status-success-text: #34D399;
  --sv-status-success-bg:   rgba(52,211,153,0.10);
  --sv-status-info-text:    #67B8BF;
  --sv-status-info-bg:      rgba(103,184,191,0.08);
  --sv-status-warning-text: #FBBF24;
  --sv-status-warning-bg:   rgba(251,191,36,0.08);
  --sv-status-error-text:   #F87171;
  --sv-status-error-bg:     rgba(248,113,113,0.08);

  /* MOTION */
  --sv-transition:      0.2s cubic-bezier(0.22, 1, 0.36, 1);
  --sv-transition-slow: 0.4s cubic-bezier(0.22, 1, 0.36, 1);

  /* SPACING (8px base) */
  --sv-space-xs: 4px;    --sv-space-sm: 8px;
  --sv-space-md: 16px;   --sv-space-lg: 24px;
  --sv-space-xl: 32px;   --sv-space-2xl: 48px;
  --sv-space-3xl: 64px;  --sv-space-4xl: 96px;

  /* BORDER RADIUS */
  --sv-radius-sm: 6px;   --sv-radius-md: 8px;
  --sv-radius-lg: 12px;  --sv-radius-xl: 16px;
  --sv-radius-2xl: 20px;
}

/* Light mode override โ€” sv-portal-2026 and sv-wiki only */
@media (prefers-color-scheme: light) {
  :root {
    --sv-bg-page:        var(--sv-cloud);
    --sv-bg-surface:     var(--sv-white);
    --sv-bg-elevated:    var(--sv-seafoam);
    --sv-text-primary:   var(--sv-midnight);
    --sv-text-body:      var(--sv-storm);
    --sv-text-secondary: var(--sv-storm);
    --sv-accent-text:    var(--sv-link-teal);
    --sv-focus:          var(--sv-link-teal);
    --sv-border:         rgba(0,0,0,0.06);

    --sv-status-success-text: #1B6B4A;
    --sv-status-success-bg:   #E6F5EC;
    --sv-status-info-text:    #3D5A5E;
    --sv-status-info-bg:      #E0EBF0;
    --sv-status-warning-text: #8B5E1A;
    --sv-status-warning-bg:   #FFF3E0;
    --sv-status-error-text:   #9A2D22;
    --sv-status-error-bg:     #FDECEB;
  }
}

/* Reduced motion โ€” mandatory in every stylesheet */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
ยง16

Activation Checklist

Every item a developer must verify before shipping. Check each against the guide sections cited.

Phase 1 โ€” Palette & Tokens

  • Google Fonts loaded: DM Serif Display (400, 400i) + Outfit (300โ€“800) โ€” ยง04
  • All 12 palette hex values match this guide exactly โ€” no approximations โ€” ยง01
  • No 13th color in the codebase. Status colors are functional tokens, not palette โ€” ยง01
  • CSS custom properties from ยง15 Quick Start are in the global stylesheet
  • --sv-font-display uses the Georgia fallback stack โ€” ยง04
  • --sv-font-body uses the -apple-system stack โ€” ยง04
  • --sv-font-mono is defined and used for all hex displays, code blocks, token labels โ€” ยง04
  • --sv-text-secondary resolves to full-opacity Mist/Storm โ€” no opacity shorthand โ€” ยง09
  • All 8 status semantic tokens (4 ร— text/bg) are defined and switch on mode โ€” ยง09

Phase 2 โ€” Color Correctness

  • Dark mode is the :root default โ€” light mode overrides via media query (portal + wiki) or never (site) โ€” ยง09
  • --sv-accent-text swaps from Electric Teal to Link Teal in light mode โ€” ยง09
  • --sv-focus swaps from Electric Teal to Link Teal in light mode โ€” ยง09
  • Zero instances of Electric Teal (#00D4AA) as text on Cloud, White, or Seafoam โ€” ยง08
  • Zero instances of Mist (#8BA4A8) as text on Cloud, White, or Seafoam โ€” ยง08
  • Zero instances of Storm (#3D4F54) as text on Abyss, Midnight, or Deep Sea
  • Info status light-mode BG is #E0EBF0, not #E6F0EE โ€” ยง05
  • All warm-era hex values from v4.x have been migrated per ยง13

Phase 3 โ€” Components

  • All CTA buttons use Midnight text on Electric Teal fill โ€” ยง05
  • Light-surface primary buttons have a 2px solid Teal Dark border (WCAG 1.4.11) โ€” ยง05, ยง08
  • Dark button (Midnight fill) is not used on dark surfaces โ€” ยง05
  • Light-mode status chips have a 1px currentColor border โ€” ยง05
  • Status chips use icon + label โ€” never color alone (WCAG 1.4.1) โ€” ยง05
  • All interactive elements have visible focus rings (2px solid, 2px offset) โ€” ยง08
  • Link colors match the spec table in ยง05: Electric Teal on dark, Link Teal on light
  • Button hover includes translateY(-1px) and one-step color darken on the ramp โ€” ยง06

Phase 4 โ€” Typography

  • DM Serif Display is used only for H1, H2, and the logo lockup โ€” ยง04
  • DM Serif Display is never set to font-weight: bold or 700 โ€” ยง04
  • Body and UI text use Outfit โ€” no Plus Jakarta Sans or Inter anywhere โ€” ยง04
  • Hex values and code displays use the mono font stack โ€” ยง04

Phase 5 โ€” Accessibility & Motion

  • prefers-reduced-motion: reduce media query is present in every stylesheet โ€” ยง06
  • Film grain overlay uses opacity โ‰ค 0.03 (decorative only) โ€” ยง06
  • Ambient glow radials use Electric Teal at โ‰ค 6% opacity โ€” ยง06
  • Focus ring: 2px solid, 2px offset

Phase 6 โ€” Email & Assets (deferred)

  • Email templates use hardcoded hex values โ€” zero CSS custom properties โ€” ยง12
  • Email CTA uses Midnight (#0A1628) text on Electric Teal fill โ€” ยง12
  • Logo lockup implemented per ยง11 (White+Teal on dark, Midnight+Teal on light)
  • Logo rendered as "StorageValet" (no space) in visual marks only โ€” logo lockup, favicon, merchandise, URL slugs. Written text uses "Storage Valet" (with space) โ€” ยง11
  • Favicon and OG images updated to Midnight Teal system (deferred)
  • Stripe portal branding updated (deferred)
  • Canva brand kit updated to SV_Brand_Kit_2026_v6 (Midnight Teal)
  • Print/Pantone mappings defined when producing physical materials (deferred)
ยง17

Changelog

VersionDateStatusSummary
v6 Apr 9, 2026 CURRENT Major version consolidating all Operation Midnight Teal work. Naming convention formalized: "StorageValet" (no space, PascalCase) is the visual wordmark โ€” used only where the brand name is rendered as a mark with the color split (logo lockups, favicon/app icon, merchandise, URL slugs, social handles, hashtags). "Storage Valet" (with space) is the written brand name โ€” used everywhere the name is read as text (page titles, meta tags, H1/H2/H3 headings, email copy, calendar invites, product names, CLAUDE.md/README headers, press, legal, and all documentation). Incorporates all v5.x fixes: Storm/Mist swatch corrections, Link Teal on light logo surfaces, button border 2px standardization, [data-theme="light"] clarification, 6-agent validation, sv-wiki row added to ยง09 per-product dark-mode behavior table. Version number reset for clarity.
v5.1.1 Apr 8, 2026 Archived Patch release. Storm/Mist swatch role labels corrected. Link spec inline style fixed. Button border standardized to 2px. Logo "Valet" on light digital surfaces changed to Link Teal. [data-theme="light"] clarification added. Agent count updated to 6.
SV Brand Guide v6 [Operation Midnight Teal]. Dark-first. WCAG AA+. 12 colors. Palette locked. CBO reviewed. 6-agent validated.
ยฉ 2026 My Storage Valet LLC ยท Delaware