Greenville Triumph mark
Brand Reference · 2026 Rebrand

The visual system for every Greenville Triumph artifact.

Logos, colors, typography, voice, patterns, and the proposal component kit. One URL, one source of truth.

Together we triumph
Building a Triumph dashboard? Jump to AI Starter
00 AI Starter 01 Logos 02 Colors 03 Elements 04 Type 05 Voice 06 Components 07 Web Elements 08 Motion 09 Pre-Ship
00 · AI Starter

One skeleton. Every Triumph dashboard.

Designed for one-fetch consumption by Claude and other AI agents.

If you are an AI agent told to "build a Triumph-branded dashboard," WebFetch this page once and copy the block below verbatim. Every other section on this page is reference detail — but everything you minimally need to ship a correctly-branded dashboard is in the single <pre> below. Replace the section IDs, titles, and stub content with your dashboard's actual content.

Human readers: this is the same skeleton documented in expanded form across sections 04 (Typography), 08 (Layout), and 11 (Pre-Ship). Consolidated here so an AI fetch returns it as one block.

Complete starter document
<!DOCTYPE html>
<html lang="en" style="background:#020022;color-scheme:only dark;">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Dark-mode lock. MUST be in head before any other style so dark-mode browser
     extensions read the explicit dark signal and skip auto-inversion. -->
<meta name="color-scheme" content="only dark">
<meta name="darkreader-lock">
<meta name="theme-color" content="#020022">
<style>:root,html,body{background:#020022!important;color:#f2fafa!important;color-scheme:only dark;}</style>
<title>Greenville Triumph · <Your Dashboard Name></title>

<!-- Triumph design system. Tokens.css ships @font-face for Fabiola + Inter (self-hosted,
     CORS open). Link, never copy. Order matters: tokens before components. -->
<link rel="stylesheet" href="https://design.greenvilletriumph.club/tokens.css">
<link rel="stylesheet" href="https://design.greenvilletriumph.club/components.css">

<!-- JetBrains Mono is a dashboard-engineering convention (numeric tables, code blocks);
     not in the Brandpad spec. Drop this link if your dashboard has no numeric tables. -->
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
</head>

<body>

<!-- Sticky nav with scroll-spy. Reference components.css for .sticky-nav styles. -->
<nav class="sticky-nav">
  <div class="nav-inner">
    <div class="nav-brand">Your Dashboard Name</div>
    <div class="nav-links">
      <a href="#overview">Overview</a>
      <a href="#sales">Sales</a>
    </div>
  </div>
</nav>

<!-- Banded numbered section. Alternate `class="bg-surface"` for visual rhythm. -->
<section id="overview">
  <div class="container">
    <span class="section-number">01 · Overview</span>
    <h2 class="section-title">Section title here.</h2>
    <div class="section-intro">
      <span class="lede">One-sentence lede.</span>
      <p>Supporting body copy in Inter 300.</p>
    </div>
  </div>
</section>

<section id="sales" class="bg-surface">
  <div class="container">
    <span class="section-number">02 · Sales</span>
    <h2 class="section-title">Banded alternate section.</h2>
  </div>
</section>

</body>
</html>
What this gets you
For AI agents: this section is the single source of truth for "what HTML do I need to start a Triumph dashboard." Other sections (Typography Contract in §04, Dashboard Skeleton in §08) repeat parts of this for human readers — they all point back here. If sections disagree, this one wins.
01 · Logos

Three lockups. Built for every canvas.

Each lockup carries the brand a little differently.

Main is the default. Simplified is for tight spots like avatars, app icons, and embroidery. Wordmark is for sponsor unit walls, co-branding, or any horizontal stripe where the shield would crowd a partner.

Main lockup
Triumph main lockup, full color
Main · Color
PNG
Triumph main lockup, on light
Main · On Light
PNG
Triumph main lockup, on dark
Main · On Dark
PNG
Simplified lockup
Triumph simplified lockup, full color
Simplified · Color
PNG
Triumph simplified lockup, on light
Simplified · On Light
PNG
Triumph simplified lockup, on dark
Simplified · On Dark
PNG
Wordmark lockup
Triumph wordmark, full color
Wordmark · Color
PNG
Triumph wordmark, on light
Wordmark · On Light
PNG
Triumph wordmark, on dark
Wordmark · On Dark
PNG
Misuse

Never distort, recolor, rotate, or apply effects to the mark. If a context seems to need a modified version, the right move is almost always to switch to a different lockup or variant, not to alter the logo.

Correct usage
Use the supplied lockupsPull from the cards above. Color on neutral, On Light on light, On Dark on dark.
Stretched
StretchNever scale unevenly. Always preserve aspect ratio.
Squashed
SquashSame rule, opposite direction. No vertical compression.
Rotated
RotateThe mark always sits upright. No tilted lockups.
Drop shadow
Add effectsNo drop shadows, glows, bevels, or strokes around the mark.
Recolored
RecolorUse the canonical color variants only. Never hue-shift or tint.
Outlined
OutlineThe mark does not have a keyline. Don't add one.
Low contrast
Low-contrast bgIf the background fights the mark, switch to the On Light or On Dark variant.
Vector source files (EPS / AI): sit alongside the PNGs in Triumph Projects/Logos and Pictures/Triumph Rebrand Assets/Greenville Triumph/01. Logo's/. Use them for print, embroidery, signage, anything that scales past raster resolution.
02 · Colors

Two primaries. Three neutrals. Two accents.

Seven colors. No eighth. The two accents never appear together in one layout.

Primaries (Greenville Blue, Triumph Green) carry brand identity. Neutrals (Upstate Fog, Morning Mist, Deep Night) build surfaces, copy, and breathing room. Accents (Electric Lime, Light Green) are reserved for highlights — pick one per layout. Brandpad's hard rule: never introduce an 8th color.

Tap any swatch to copy its hex.

Primary
PMS 295 C
Greenville Blue
#002855
RGB 0 · 40 · 85
CMYK 100 · 53 · 0 · 67
PMS 369 C
Triumph Green
#61a631
RGB 97 · 166 · 49
CMYK 40 · 0 · 93 · 35
Neutrals
PMS 7541 C
Upstate Fog
#f2fafa
RGB 242 · 250 · 250
CMYK 4 · 0 · 0 · 11
PMS 5455 C
Morning Mist
#d2e6e5
RGB 210 · 230 · 229
CMYK 22 · 3 · 12 · 0
PMS Black 6 C
Deep Night
#020022
RGB 2 · 0 · 34
CMYK 100 · 90 · 49 · 80
Accents (never together)
PMS 292 C
Electric Lime
#69b3e7
RGB 105 · 179 · 231
CMYK 55 · 23 · 0 · 9
Note Brandpad's name. Renders sky blue.
PMS 375 C
Light Green
#97d700
RGB 151 · 215 · 0
CMYK 30 · 0 · 100 · 16
Note Brandpad's name. Renders lime.
Which colors work together for text

Pick a text color, find your background, look at the score. AAA and AA are safe to read. FAIL means the text gets lost on that background, pick a different combo. The matrix already calls out the one combo on this palette that fails: Triumph Green on Upstate Fog. Use Greenville Blue or Deep Night for text on light surfaces instead.

PairingPreviewRatioWCAG
Upstate Fog on Deep NightAa19.33AAA
Upstate Fog on Greenville BlueAa13.82AAA
Morning Mist on Deep NightAa15.79AAA
Triumph Green on Deep NightAa6.83AA
Triumph Green on Greenville BlueAa4.88AA
Triumph Green on Upstate FogAa2.83FAIL
Deep Night on Triumph GreenAa6.83AA
Deep Night on Upstate FogAa19.33AAA
Greenville Blue on Upstate FogAa13.82AAA
Electric Lime on Deep NightAa8.97AAA
Light Green on Deep NightAa11.73AAA
Light Green on Greenville BlueAa8.39AAA
Engineering note: Triumph Green on Upstate Fog computes to a 2.83 contrast ratio (fails WCAG AA). Brandpad doesn't document accessibility rules; this is a dashboard-engineering call. For text on light backgrounds, use Greenville Blue or Deep Night.
CSS token reference

Every brand color is exposed as a CSS custom property by tokens.css. Use these names, never the raw hex (Chart.js canvas is the only exception — it can't read CSS vars, so its datasets must inline the --brand-* hex literals below). Token names below are the actual names in the live tokens.css, not inventions.

/* 7 brand colors — the only hex literals in the system. Reference these by --brand-*
   name in CSS, or by hex when Chart.js / canvas / external tooling can't resolve vars. */
--brand-greenville-blue:  #002855;  /* PMS 295 C   · formal navy, surfaces */
--brand-triumph-green:    #61a631;  /* PMS 369 C   · primary brand accent  */
--brand-upstate-fog:      #f2fafa;  /* PMS 7541 C  · primary text on dark  */
--brand-morning-mist:     #d2e6e5;  /* PMS 5455 C  · soft text on dark     */
--brand-deep-night:       #020022;  /* PMS Black 6 · page background       */
--brand-electric-lime:    #69b3e7;  /* PMS 292 C   · sky blue (Brandpad name) */
--brand-light-green:      #97d700;  /* PMS 375 C   · lime green (Brandpad name) */

/* Semantic surface roles — use these in components instead of reaching for --brand-*. */
--color-bg:              var(--brand-deep-night);       /* page background           */
--color-surface:         var(--brand-greenville-blue);  /* banded section / card     */
--color-surface-alt:     rgba(242,250,250,.04);         /* hover / inset surface     */
--color-text:            var(--brand-upstate-fog);      /* primary body + headings   */
--color-text-soft:       var(--brand-morning-mist);     /* secondary / supporting    */
--color-text-muted:      rgba(242,250,250,.55);         /* captions, labels, meta    */
--color-border:          rgba(242,250,250,.10);         /* default hairline          */
--color-border-emphasis: rgba(242,250,250,.22);         /* table headers, underlines */

/* Accent roles — one accent per layout. --color-accent or --color-blue, not both. */
--color-accent: var(--brand-triumph-green);   /* primary CTA, active nav, KPI 1st */
--color-blue:   var(--brand-electric-lime);   /* secondary accent, KPI 2nd        */
--color-pop:    var(--brand-light-green);     /* third accent, KPI 3rd, hover-pop */

/* Status — system signals only. Never decorative. Don't use --color-warning as a 4th accent. */
--color-success:        var(--brand-triumph-green);
--color-warning:        #d4a14b;
--color-danger:         #ef4444;
--color-info:           var(--brand-electric-lime);
Naming caveat. Brandpad's labels "Electric Lime" (#69b3e7, sky blue) and "Light Green" (#97d700, lime) are visually swapped from intuition. The token names mirror Brandpad's official names so the brand book and the code stay in sync. When picking by hue, look at the hex, not the name.
CMYK + PMS values in the swatches above are derived from the brand swatch file (.aco). Verify against Brandpad's print spec before sending to a printer — hex-to-CMYK math doesn't always match print-spec CMYK.
Link, never copy

Triumph dashboards link to the two sibling stylesheets. Tokens update once, every dashboard inherits. Tap to copy.

<!-- In every Triumph dashboard, in <head>. Order matters. -->
<link rel="stylesheet" href="https://design.greenvilletriumph.club/tokens.css">
<link rel="stylesheet" href="https://design.greenvilletriumph.club/components.css">

/* Then reference tokens by name, never by hex. */
.kpi-value { color: var(--color-accent); font-family: var(--font-mono); }
.section-pad { padding: var(--section-pad) 0; }

/* Chart.js exception — canvas can't read CSS vars, use hex literals. */
const TRIUMPH_PALETTE = [
  '#61a631', /* Triumph Green   */
  '#69b3e7', /* Electric Lime  */
  '#97d700', /* Light Green    */
  '#d2e6e5'  /* Morning Mist   */
];

tokens.css ships colors, type scale, weight scale, fluid spacing, radius (sharp by default), shadow, duration, and easing — plus the base reset, body, heading, and layout primitives. components.css ships every component on this page (buttons, inputs, toggle, badges, table, KPI markers, hover affordances, skeleton, frosted, stat band, phase, pillar, guideline card, delta chip, progress bar). Need just the color names? Both files are public — open /tokens.css directly.

03 · Elements

Pattern and shape.

Texture and accent, drawn from the club identity.

Use as background fill, watermark, or framing detail. Maintain contrast on whatever sits on top. Never overpower a primary brand element.

Triumph pattern
Pattern
Tileable brand texture. Use behind hero areas, as a divider band, or as a subtle overlay at low opacity. Never above text without darkening.
Triumph shape
Shape
Single-mark accent shape. Use as a watermark, page-corner detail, or framing element. Always at brand color, never tinted to a foreign palette.
Vector source files (AI): Triumph Projects/Logos and Pictures/Triumph Rebrand Assets/Greenville Triumph/04. Elements/. Open in Illustrator for path-perfect scaling, color overrides within the palette, or extraction to SVG.
04 · Typography

Fabiola for headlines. Inter for everything else.

Brandpad assigns two families. Anything else on this page is dashboard engineering.

Brandpad mandates only: Fabiola Capitals for H1/H2/H3, Inter Black for H4 (24px), Inter (labeled "Regular," renders at weight 300) for body. Everything below — exact pixel scale, line-heights, letter-spacing, JetBrains Mono — is our engineering choice, not brand canon.

Brand-mandated
H1 · Fabiola
Together we triumph
H2 · Fabiola
The visual system, in one place
H3 · Fabiola italic
A supporting line, in italic
H4 · Inter Black 24
Section heading, Inter Black 24
Body · Inter 300
Inter at weight 300 (Brandpad calls this "Regular") sets the rhythm for body copy, UI, captions, and data labels. It is highly legible at small sizes and pairs cleanly with the strong personality of the heading face.
Engineering only · not in brand spec

Tabular numerals and a monospace face for stats are dashboard conventions, not Brandpad rules. JetBrains Mono is loaded from Google Fonts; if the brand later adopts a monospace, swap it out here.

Stat · JetBrains
$381,020
Mono label
Section label · 01 / Logos
Copy-paste contract

Drop these rules into any Triumph dashboard verbatim. Family + weight assignments are Brandpad-mandated; the specific line-heights, font-sizes, and tracking values below are our engineering defaults (derived from how Brandpad's own page renders, not from a published spec).

/* 1. Link the system. Fonts auto-load via @font-face in tokens.css. */
<link rel="stylesheet" href="https://design.greenvilletriumph.club/tokens.css">
<link rel="stylesheet" href="https://design.greenvilletriumph.club/components.css">

/* 2. Headings — BRAND: Fabiola Capitals, weight 400. ENGINEERING: line-height + tracking. */
h1 { font-family: var(--font-display); font-weight: 400; line-height: 1.0;  letter-spacing: normal;     text-transform: none; }
h2 { font-family: var(--font-display); font-weight: 400; line-height: 1.1;  letter-spacing: -0.018em;  text-transform: none; }
h3 { font-family: var(--font-display); font-weight: 400; line-height: 1.25; letter-spacing: -0.007em;  text-transform: none; }
h4 { font-family: var(--font-sans);    font-weight: 900; line-height: 1.45; letter-spacing: -0.007em;  text-transform: none; }

/* 3. Body — BRAND: Inter, weight 300 (Brandpad labels it "Regular"; renders Light). */
body { font-family: var(--font-sans); font-size: 16px; font-weight: 300; line-height: 1.5; font-synthesis: none; }

/* 4. NEVER set font-weight > 400 on a Fabiola element. The OTF ships
      only ONE weight; asking for 900 triggers synthetic bolding that
      crushes the letters. font-synthesis: none on body is the safety
      net — but write the right weight from the start. */
Self-hosted, CORS-open. Both fonts live on this origin and are wired into tokens.css via @font-face. Any dashboard that links the two stylesheets above inherits the real fonts automatically — no Adobe Typekit kit, no Google Fonts call for the brand faces. Files served at /fonts/Fabiola-Capitals.otf, /fonts/Inter-VariableFont.ttf, and /fonts/Inter-Italic-VariableFont.ttf.
Why weight 400 matters. Fabiola Capitals is a single-weight licensed OTF — there is no 900-weight file. When CSS asks for one the browser synthesizes bold by inflating each glyph's strokes, which crushes the inter-letter spacing into a serif-looking mush. The font-synthesis: none rule baked into the body reset is the safety net — if a future stylesheet accidentally requests weight 900, the browser quietly returns the real 400 weight instead of fake-bold.
What's brand vs engineering. Brandpad documents only the family assignments (Fabiola for H1/H2/H3, Inter Black for H4, Inter for body). The specific font-sizes, line-heights, letter-spacing, and the choice of JetBrains Mono are this design system's engineering defaults, derived from inspecting Brandpad's typography page at desktop sizes. Treat them as sane defaults, not as brand law.
Source. Fabiola OTF + Inter variable TTFs live in Triumph Projects/Logos and Pictures/Triumph Rebrand Assets/Greenville Triumph/02. Fonts/. The canonical brand guide is brandpad.io/greenville-triumph (humans only — login required). For AI agents building Triumph dashboards, treat this page as canonical.
05 · Voice

What we say, how we say it.

Brandpad's voice section is short. So is this one.

The tagline and the brand belief below are Brandpad-confirmed. The Do/Avoid list is split: Brandpad-mandated rules first, house-style conventions second. Don't add to either without a Brandpad citation.

Together we triumph
Club tagline · Brandpad

Soccer connects people across cultures, languages, and backgrounds, creating community, opportunity, and a sense of home.

Brandpad-mandated
Do
  • Lead with clarity. Don't overcomplicate.
  • Stay inclusive — speak to belonging.
Avoid
  • Corporate or detached tone.
  • Aggressive or exclusionary language.
House style · not in Brandpad
Sean's rules
  • Use "Greenville Triumph" in normal copy. Spell out "Greenville Triumph Soccer Club" only when formality demands it (Brandpad uses "Greenville Triumph" and "Greenville Triumph SC" interchangeably).
  • Avoid "GVL Triumph" or any acronym stand-in.
  • Em-dashes piled into one sentence — pick commas, periods, or semicolons instead.
06 · Components

The proposal kit, built on the brand.

Structural blocks every Triumph client proposal uses. Treat as the unit. Don't invent per-client variants.

These components live in the canonical template at Proposal Creator/template/proposal.html. New proposals copy that file and edit in place — never reach for a different starting point. Engineering convention, not Brandpad.

Stat band
88%
First headline metric
85%
Second headline metric
73%
Third headline metric
54%
Fourth headline metric
Phase header
01
2026 · Phase Label

The phase headline goes here

One paragraph of body copy describing what this phase delivers and the structural pillars that follow.

Pillar row
Pillar 01

Pillar headline

Lead sentence describing the pillar at a high level. One or two sentences.

Sub-group label
  • Specific deliverable one
  • Specific deliverable two
  • Specific deliverable three
$25,000
Callout grid
+22%
Headline metric callout. One sentence of context.
#2
Headline metric callout. One sentence of context.
$2B+
Headline metric callout. One sentence of context.
Asset grid
Designation
Official Partner of Greenville Triumph
Presenting Rights
Presenting Partner of the 2026 season at GE Vernova Park
Launch Moments
Jersey reveal, schedule release, and season-ticket-holder events
Content Series
"Match Day Live" behind-the-scenes coverage
Investment summary
Phase 1, 2026
$100,510
Phase 1, 2027
$100,510
Phase 2
$180,000
Total Multi-Year Partnership
$381,020
07 · Web Elements

The primitives for every dashboard.

Buttons, inputs, tables, status badges, KPI cards. Use these before inventing a new component.

The same primitives shipped across every Greenville Triumph internal dashboard (sales, pricing, premium, vivenu). The palette is Brandpad; the patterns are engineering convention. Anything you'd build for a Triumph dashboard probably already exists here.

Buttons

Outline is the default for in-app selection. Solid for primary CTAs. Ghost for tertiary actions. All buttons lift 2px on hover, never scale.

Inputs

Bottom-border only. Accent underline grows from center on focus. Use this style for every text input; never boxed borders.

Toggle
Thumb shifts to brand green when active.
Status badges
Active Pending Overdue In Review
Accent Completed Archived

Status colors are semantic system signals only, never decorative. Success maps to Triumph Green, info maps to Electric Lime. Warning amber and danger red exist for state communication, not brand color.

KPI markers
Total Revenue
$2.4M
Tickets Sold
18,472
Avg. Order
$128
Sell-Through
94.2%

Left-border accent markers, no card wrappers. Each KPI cycles through accent → blue → light green → info via nth-child.

Data table
MatchTicketsRevenueStatus
6/3 vs Lexington3,842$112,400Sold Out
6/17 vs Charlotte2,961$84,200Strong
7/1 vs Forward Madison1,847$52,100Tracking
7/11 vs One Knoxville2,304$66,800In Review

Bare table, no card wrapper. Monospace numbers via font-variant-numeric: tabular-nums. Row hover tints in the accent's subtle fill.

Hover affordances
Lift
translateY(-3px) + shadow
Border tint
border-color → accent
Glow
accent ring + diffuse shadow

Lift over scale. Triumph motion rule is explicit: never scale-on-hover. Use translateY plus border tint or glow.

Skeleton loading

Shimmer animation using surface tokens. Use for any loading state. Animation collapses to 0.01ms under prefers-reduced-motion.

Frosted glass
Frosted panel
backdrop-filter: blur(20px) saturate(1.4). Semi-transparent over any background. Use sparingly — once per surface, never stacked.
Shadow elevation
Level 1
--shadow-sm
Level 2
--shadow-md
Level 3
--shadow-lg

Three elevation levels. Shadows convey hierarchy, not decoration. Use sparingly.

08 · Layout

One skeleton, every dashboard.

Continuous scroll, banded sections, numbered headers, sticky nav with scroll-spy.

This is the default for Triumph dashboards. Compose components inside section > .container. Alternate section.bg-surface for visual rhythm. Each section gets a numbered eyebrow, a title, and an intro lede with a left-rule paragraph. Scroll-progress bar at the top. Section spacing is --section-pad; element spacing inside sections is --space-sm to --space-md. Do not invent a different layout for "data-heavy" dashboards; this skeleton is already data-dense.

Dashboard skeleton

Paste this into the <head> and outer body of any new Triumph dashboard. Inline the dark-lock so it loads before paint; everything else links externally.

<!-- 1. Dark-mode lock. Inline. Loads before paint so extensions skip auto-invert. -->
<meta name="color-scheme" content="only dark">
<meta name="darkreader-lock">
<meta name="theme-color" content="#020022">
<style>:root,html,body{background:#020022!important;color:#f2fafa!important;color-scheme:only dark;}</style>

<!-- 2. Triumph design system. Link, never copy. -->
<link rel="stylesheet" href="https://design.greenvilletriumph.club/tokens.css">
<link rel="stylesheet" href="https://design.greenvilletriumph.club/components.css">

<!-- 3. Fonts. Fabiola + Inter are self-hosted by tokens.css. Only JetBrains Mono needs an external link. -->
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">

<!-- 4. Body: sticky nav with scroll-spy + banded numbered sections. -->
<nav class="sticky-nav"></nav>

<section id="overview">
  <div class="container">
    <span class="section-number">01 · Overview</span>
    <h2 class="section-title">Match-day snapshot.</h2>
    <div class="we-kpi-grid"><!-- KPI markers from components.css --></div>
  </div>
</section>

<section id="sales" class="bg-surface"><!-- banded alternate --></section>
Rhythm rules
09 · Anti-Patterns · Digital

What never ships, and why.

Hard-won rules from real Triumph dashboards. Each pair is a regression risk.

If the design system doesn't cover a case, stop and ask. Do not improvise. The cost of a wrong invention here is every future dashboard inheriting it.

Do
  • Reference tokens by name: var(--color-accent), var(--space-md).
  • Use translateY(-3px) + border tint on hover.
  • Flat var(--color-bg) backgrounds. Optional noise grain.
  • Sharp edges by default. --radius-full only on badges or thumbs.
  • Yellow only on genuine warning state (--color-warning).
  • Pick one accent per layout: Electric Lime or Light Green, never both.
  • On light surfaces, body text in Greenville Blue or Deep Night.
  • Dark-mode lock on color-critical pages: meta + darkreader-lock + first-style :root override.
  • Chart.js dataset colors: hex literals, listed in tokens.css comments.
  • Status colors are signals only (success/warning/danger/info), never decoration.
Don't
  • Hardcode hex, RGBA, or OKLCH. Every literal is a future drift point.
  • Scale on hover. Triumph never scales; it lifts.
  • Gradient backgrounds on page or section. No radial blobs that move with scroll.
  • Hand-roll border-radius in px. Sharp = 0, pill = --radius-full.
  • Use yellow as a 4th decorative accent. Yellow signals warning.
  • Combine Electric Lime and Light Green in one layout. Pick one.
  • Triumph Green on Upstate Fog — fails WCAG AA (2.83 ratio).
  • Skip the dark-mode lock. Without it, users with Dark Reader see remapped hexes.
  • Decorative backdrop-filter: blur() on flat cards. Frosted is for sticky nav or glass overlays only.
  • Gradient text. Never.
Critical for color-critical pages: the dark-mode lock pattern is documented in section 08 and used by this site itself. Browser dark-mode extensions will remap hex codes and make the brand palette wrong if the lock is not present. Required for any dashboard where palette accuracy matters (brand reference, premium spaces, proposal decks, anything sponsor-facing).
10 · Motion

Engineering convention, not brand canon.

Brandpad has no motion section. Everything below is this design system's house convention for Triumph dashboards.

If a future Brandpad release adds motion guidance, defer to it and update this section. Until then, treat these as opinionated defaults from past dashboard work, not as brand law.

House defaults
  • IntersectionObserver fade-up on first section entry.
  • Hover affordances at 2px translateY plus a border tint, never scale transforms.
  • Atmospheric gradients are position: fixed so they don't scroll.
Avoid
  • Scale-on-hover for cards.
  • Bobbing scroll arrows or progress-dot pulses.
  • Gradient text on long copy.
  • Decorative SVG patterns moving with scroll.
Reduced motion: when prefers-reduced-motion: reduce, animations and transitions collapse to 0.01ms. This is a UX preference, not a brand rule — but every Triumph dashboard should respect it.
11 · Pre-Ship

Before any Triumph artifact ships.

Run the list before anything leaves the building.

Every deck, every page, every print piece. One missed line is the difference between on-brand and off.

Logo: correct lockup for the canvas, correct variant for the background, never stretched, rotated, recolored, or otherwise altered.
Color: values drawn from this page only. No improvised hex codes. Both accents never appear in the same layout. Text/background pairings pass at least WCAG AA per the contrast matrix.
Type: Fabiola for headlines, Inter for everything else. No third typeface. No condensed or stretched glyphs.
Elements: pattern and shape kept inside the palette. Never recolored to a foreign tint. Pattern at low opacity when sitting under text.
Voice: reads in the club's voice, not corporate jargon. "Greenville Triumph", never "GVL Triumph". No exclusionary framing.
Restricted-access labels: no privacy disclaimers, watermarks, headers, footers, or meta tags marking a page as private. Em-dashes used sparingly, never piled into one sentence.
Numbers: tabular-nums on every column of figures. Cross-check totals against source dashboards (pricing, premium spaces) before quoting.