Color Palette
All colors as CSS custom properties under --ft-* prefix. Extracted from Franklin Templeton production CSS.
Primary Blue (pc1)
Neutral (nc1)
Purple (sc1)
Teal (sc2)
Magenta (sc3)
Red / Crimson (sc4)
Orange (sc5)
Semantic Colors
Chart Colors
Gradients
Typography
Font: TT Commons Pro loaded from cdn.franklintempleton.com. Weights: 400 (Regular), 700 (Bold). Italic available.
Font Sizes
48px / 3remThe quick brown fox
36px / 2.25remThe quick brown fox
30px / 1.875remThe quick brown fox
24px / 1.5remThe quick brown fox
20px / 1.25remThe quick brown fox
18px / 1.125remThe quick brown fox
16px / 1remThe quick brown fox
14px / 0.875remThe quick brown fox
12px / 0.75remThe quick brown fox
Font Weights
Line Heights
1.2Tight line height for headings and large display text that needs compact vertical rhythm.
1.375Snug line height for subheadings and medium-sized text blocks.
1.5Base line height for body text and general paragraph content throughout the site.
1.75Loose line height for small text and legal disclaimers that benefit from extra breathing room.
Spacing, Shadows & Radii
4px base unit spacing scale, elevation shadows, and border radius tokens.
Spacing Scale
Shadows
Border Radii
Layout
Container (max-width: 1272px), responsive grid, flex utilities, card wrapper, and divider.
Grid (2-column)
Grid (3-column)
Grid (4-column)
Card & Card Shadow
ft-card
Default card with border and padding.
ft-card ft-card--shadow
Shadow card variant with elevation.
Components
23 self-contained components in src/design-system/components/. Each uses only --ft-* tokens and .ft-* BEM classes.
Gradient Bar
components/gradient-bar.css
<div class="ft-gradient-bar"></div>
Header (Two-Part)
components/header.css
Dark blue utility bar (bg-pc1-800, 63px) + white main nav with logo, bold nav links, search icon, and Sign In pill button.
<header class="ft-header">
<div class="ft-header__utility">
<div class="ft-container">
<div class="ft-header__utility-inner">
<span class="ft-header__role">US - Individual Investor</span>
<a class="ft-header__utility-link" href="#">Link</a>
</div>
</div>
</div>
<div class="ft-header__main">
<div class="ft-container">
<div class="ft-header__main-inner">
<a class="ft-header__logo" href="/">...</a>
<nav class="ft-header__nav">
<a class="ft-header__nav-link" href="#">Link</a>
</nav>
<div class="ft-header__actions">
<a class="ft-header__search" href="#">...</a>
<a class="ft-header__signin" href="#">Sign In</a>
</div>
</div>
</div>
</div>
</header>
Hero Banner
components/hero-banner.css
Default (Navy)
Hero Banner Title
Subtitle or description text goes here.
Light variant
Light Hero Banner
For secondary pages with lighter styling.
<section class="ft-hero">
<div class="ft-container">
<h1 class="ft-hero__title">Page Title</h1>
<p class="ft-hero__subtitle">Description text</p>
</div>
</section>
<!-- Variants: ft-hero--primary, ft-hero--light -->
Fund Hero
components/fund-hero.css + gradient-bar.css
Light background with dark blue text (pc1-800), decorative gradient SVG behind right side, gradient bar at top. Sidebar card for Popular Documents.
<section class="ft-fund-hero">
<div class="ft-gradient-bar"></div>
<div class="ft-fund-hero__body">
<div class="ft-fund-hero__decor"><svg>...</svg></div>
<div class="ft-container">
<div class="ft-fund-hero__grid">
<div class="ft-fund-hero__main">
<div class="ft-fund-hero__meta">
<select>...</select>
<span class="ft-badge ft-badge--outline-dark">Multi-Asset</span>
</div>
<h1 class="ft-fund-hero__title">
<span class="ft-fund-hero__ticker">FKIQX</span>
<span class="ft-fund-hero__name">Franklin Income Fund</span>
</h1>
<ul class="ft-fund-hero__highlights">...</ul>
</div>
<div class="ft-fund-hero__sidebar">
<div class="ft-fund-hero__card">...</div>
</div>
</div>
</div>
</div>
</section>
Sticky Nav (Pill Tabs)
components/sticky-nav.css
Light blue (bg-pc1-50) bar with pill-shaped navigation links. Active pill has bg-pc1-500 (blue) text-nc1-0 (white). Shows condensed fund title when sticky.
<nav class="ft-sticky-nav" id="sticky-nav">
<div class="ft-sticky-nav__title">
<div class="ft-container">
<p>Fund Name - Class A - TICKER</p>
</div>
</div>
<div class="ft-container">
<ul class="ft-sticky-nav__list">
<li><a class="ft-sticky-nav__pill ft-sticky-nav__pill--active" href="#section">Overview</a></li>
<li><a class="ft-sticky-nav__pill" href="#section">Performance</a></li>
</ul>
</div>
</nav>
Curved Section
components/curved-section.css
Light blue (bg-pc1-50) background sections with large rounded corners (up to 8rem). Used behind stat cards, pricing charts, etc.
Section Title
Content goes here on light blue curved background...
<section class="ft-curved-section">
<div class="ft-container">
<h2 class="ft-section-title">Pricing</h2>
<p class="ft-section-meta">As of 01/31/2025</p>
...content...
</div>
</section>
<!-- Variants -->
<section class="ft-curved-section ft-curved-section--alt">...</section>
<section class="ft-curved-section ft-curved-section--both">...</section>
Product Summary Bar
Page-specific (inline CSS)
Dark navy (bg-pc1-800) stats bar with curved top-right corner (5rem mobile, 7rem desktop). Sits between the hero and sticky nav. Extends to the left edge via a ::before pseudo-element. Used for key at-a-glance metrics.
<div style="overflow: hidden;">
<div class="ft-container">
<div class="product-summary">
<div class="product-summary__item">
<div class="product-summary__label">NAV</div>
<div class="product-summary__value">$2.56</div>
<div class="product-summary__date">As of 02/04/2026</div>
</div>
<div class="product-summary__item">
<div class="product-summary__label">YTD Total Returns</div>
<div class="product-summary__value">3.72%</div>
<div class="product-summary__date">As of 02/04/2026</div>
</div>
<div class="product-summary__item">
<div class="product-summary__label">Total Net Assets</div>
<div class="product-summary__value">$77.25B</div>
<div class="product-summary__date">As of 12/31/2025</div>
</div>
</div>
</div>
</div>
<!-- Required page-specific CSS classes:
.product-summary - flex container, bg primary-800, curved top-right
.product-summary__label - stat label (white, slightly transparent)
.product-summary__value - stat value (bold, large)
.product-summary__date - date footnote (small, muted)
.product-summary::before - extends dark bg to left viewport edge
-->
Button
components/button.css
Variants
Sizes
<button class="ft-btn ft-btn--primary">Primary</button>
<button class="ft-btn ft-btn--secondary">Secondary</button>
<button class="ft-btn ft-btn--ghost">Ghost</button>
<button class="ft-btn ft-btn--primary ft-btn--sm">Small</button>
<button class="ft-btn ft-btn--primary ft-btn--lg">Large</button>
Badge
components/badge.css
<span class="ft-badge">Default</span>
<span class="ft-badge ft-badge--primary">Primary</span>
<span class="ft-badge ft-badge--outline">Outline</span>
Breadcrumbs
components/breadcrumbs.css
<nav class="ft-breadcrumbs" aria-label="Breadcrumb">
<ol class="ft-breadcrumbs__list">
<li class="ft-breadcrumbs__item"><a href="#">Home</a></li>
<li class="ft-breadcrumbs__item ft-breadcrumbs__item--active">Current</li>
</ol>
</nav>
Tabs
components/tabs.css
Default (Rounded top)
Overview content area.
Performance content area.
Portfolio content area.
Underline variant
Underline tab content.
Second tab content.
Third tab content.
<div class="ft-tabs">
<div class="ft-tabs__list" role="tablist">
<button class="ft-tabs__tab ft-tabs__tab--active" data-tab="id1">Tab</button>
<button class="ft-tabs__tab" data-tab="id2">Tab</button>
</div>
<div class="ft-tabs__border"></div>
<div class="ft-tabs__panel ft-tabs__panel--active" data-panel="id1">...</div>
<div class="ft-tabs__panel" data-panel="id2">...</div>
</div>
<!-- Underline variant: add ft-tabs--underline -->
Stat Card
components/stat-card.css
Bordered (default)
Shadow variant
Horizontal variant (fund facts)
<div class="ft-stat-card ft-stat-card--bordered">
<span class="ft-stat-card__label">NAV</span>
<span class="ft-stat-card__value">$2.56</span>
<span class="ft-stat-card__meta">As of date</span>
</div>
<!-- Variants: --bordered, --shadow, --highlight, --horizontal -->
<!-- Value mods: --positive, --negative, --lg -->
Data Table
components/data-table.css
Striped variant
| Metric | Fund | Benchmark |
|---|---|---|
| Alpha | 5.87 | — |
| Beta | 0.68 | 1.00 |
| Sharpe Ratio | 0.32 | -0.52 |
| Std Deviation | 10.36 | 11.54 |
Compact variant
| Period | 1 Yr | 3 Yr | 5 Yr | 10 Yr |
|---|---|---|---|---|
| With Sales Charge | 7.96% | 7.84% | 6.84% | 7.06% |
| Without Sales Charge | 12.18% | 9.17% | 7.64% | 7.46% |
<div class="ft-data-table ft-data-table--striped">
<table class="ft-data-table__table">
<thead><tr>
<th class="ft-data-table__th">Header</th>
<th class="ft-data-table__th ft-data-table__th--right">Value</th>
</tr></thead>
<tbody><tr class="ft-data-table__row">
<td class="ft-data-table__td">Data</td>
<td class="ft-data-table__td ft-data-table__td--right">0.00</td>
</tr></tbody>
</table>
</div>
<!-- Variants: --striped, --compact, --card -->
Progress Bar
components/progress-bar.css
<div class="ft-progress">
<div class="ft-progress__header">
<span class="ft-progress__label">Fixed Income</span>
<span class="ft-progress__value">49.40%</span>
</div>
<div class="ft-progress__track">
<div class="ft-progress__fill ft-progress__fill--0" style="width: 49.4%;"></div>
</div>
</div>
<!-- Color variants: ft-progress__fill--0 through --5 -->
Select
components/select.css
<div class="ft-select">
<label class="ft-select__label">Share Class</label>
<div class="ft-select__wrapper">
<select class="ft-select__input">
<option>Class A</option>
</select>
</div>
</div>
<!-- Variants: --sm, --inline -->
Rating (Stars)
components/rating.css
<div class="ft-rating" aria-label="5 out of 5 stars">
<span class="ft-rating__star ft-rating__star--filled">★</span>
<span class="ft-rating__star ft-rating__star--filled">★</span>
<span class="ft-rating__star ft-rating__star--filled">★</span>
<span class="ft-rating__star ft-rating__star--filled">★</span>
<span class="ft-rating__star ft-rating__star--filled">★</span>
<span class="ft-rating__label">Morningstar Rating</span>
</div>
Accordion
components/accordion.css
<div class="ft-accordion">
<button class="ft-accordion__trigger" aria-expanded="false">
<span class="ft-accordion__title">Question</span>
<span class="ft-accordion__icon">▾</span>
</button>
<div class="ft-accordion__content" hidden>
<div class="ft-accordion__body">Answer</div>
</div>
</div>
Manager Card
components/manager-card.css
Edward D. Perks, CFA
Managed Fund Since 2002
Brendan Circle, CFA
Managed Fund Since 2019
Todd Brighton, CFA
Managed Fund Since 2017
<div class="ft-manager">
<img class="ft-manager__photo" src="photo.webp" alt="Name" />
<div class="ft-manager__info">
<h4 class="ft-manager__name">Edward D. Perks, CFA</h4>
<p class="ft-manager__role">Managed Fund Since 2002</p>
</div>
</div>
Document Link
components/document-link.css
<a class="ft-doc-link" href="#">
<span class="ft-doc-link__icon"><svg>...</svg></span>
<span class="ft-doc-link__text">
<span class="ft-doc-link__title">Prospectus</span>
<span class="ft-doc-link__meta">PDF · 1.2 MB</span>
</span>
</a>
Icon
components/icon.css
Inline SVG icon sizing and color utilities. All icons use viewBox="0 0 24 24" and inherit stroke from currentColor.
Sizes
Colors
Icon Library
<!-- Default size (20px), primary color -->
<svg class="ft-icon ft-icon--primary" viewBox="0 0 24 24">
<circle cx="11" cy="11" r="8"/>
<line x1="21" y1="21" x2="16.65" y2="16.65"/>
</svg>
<!-- Large (32px), muted color -->
<svg class="ft-icon ft-icon--lg ft-icon--muted" viewBox="0 0 24 24">...</svg>
<!-- Sizes: --xs (12) | --sm (16) | default (20) | --md (24) | --lg (32) | --xl (48) | --2xl (56) -->
<!-- Colors: --primary | --muted | --dark | --inherit -->
Timeline
components/timeline.css
Vertical timeline for milestones, history, or events. Each item has a dot marker, year label, and description.
<div class="ft-timeline">
<div class="ft-timeline__item">
<div class="ft-timeline__dot"></div>
<div class="ft-timeline__year">1947</div>
<div class="ft-timeline__text">Milestone description...</div>
</div>
<div class="ft-timeline__item">
<div class="ft-timeline__dot"></div>
<div class="ft-timeline__year">2025</div>
<div class="ft-timeline__text">Another milestone...</div>
</div>
</div>
Insight Card
components/insight-card.css
Category + Authors variant (Royce-style)
Small-Cap Premier Quality Strategy: 4Q25 Update and Outlook
Royce Small-Cap Total Return: 4Q25 Update
The Royce Roundtable: Small-Caps Looking Strong in 2026
Date + Description variant (Putnam-style)
January 8, 2026
US Equities in 2026: What could go right?
2025 is ending with a range of worries for the stock market. But it’s important to also recognize what could go right.
December 10, 2025
Earnings growth is key for sustained market gains
While market volatility and uncertainties are possible, we see encouraging trends for equities.
August 14, 2025
Venezuela: Oil and gas optionality is large
The pathway from reserves to reliable exports runs through governance, contracts, and sustained capital investment.
<div class="ft-insight-grid">
<div class="ft-insight-card">
<img class="ft-insight-card__img" src="..." alt="..." />
<div class="ft-insight-card__body">
<span class="ft-insight-card__category ft-insight-card__category--perspective">Category</span>
<h3 class="ft-insight-card__title"><a href="#">Title</a></h3>
<p class="ft-insight-card__authors">Author names</p>
</div>
</div>
</div>
<!-- Link variant with date + description -->
<div class="ft-insight-grid">
<a class="ft-insight-card ft-insight-card--link" href="#">
<img class="ft-insight-card__img" src="..." alt="..." />
<div class="ft-insight-card__body">
<p class="ft-insight-card__date">January 8, 2026</p>
<h3 class="ft-insight-card__title">Title</h3>
<p class="ft-insight-card__desc">Description text</p>
</div>
</a>
</div>
Disclaimer
components/disclaimer.css
All investments involve risks, including possible loss of principal. Past performance does not guarantee future results. The fund's share price and yield will be affected by interest rate movements.
© 2025 Franklin Templeton Distributors, Inc. All rights reserved.
<div class="ft-disclaimer ft-disclaimer--bordered">
<p class="ft-disclaimer__text">Disclaimer text...</p>
</div>
Footer
components/footer.css
<footer class="ft-footer">
<div class="ft-container">
<div class="ft-footer__logo">
<img src="/assets/images/ft-logo-footer.webp" alt="Franklin Templeton" />
</div>
<div class="ft-footer__columns">...</div>
<div class="ft-footer__social">...</div>
<div class="ft-footer__bottom">
<p class="ft-footer__copyright">© 2025</p>
<div class="ft-footer__legal">...</div>
</div>
</div>
</footer>