Demo
Surface card
Soft elevation, subtle border. Use for report panels and narrative blocks.
3. Add class "agency" (or "agency-body") on
. 4. Core class names (see README.md for the full list): Shell: .ag-topbar .ag-topbar__brand .ag-topbar__nav .ag-container .ag-main .ag-footer Subnav: .ag-subnav Hero: .ag-hero .ag-eyebrow .ag-hero__title .ag-hero__subtitle .ag-meta .ag-display Section: .ag-section .ag-section__header .ag-section__title .ag-section__desc Cards: .ag-card .ag-card-grid .ag-card__title .ag-card__body KPIs: .ag-stat-grid .ag-stat .ag-stat__label .ag-stat__value .ag-stat__hint .ag-stat--data Badges: .ag-badge .ag-badge--pass .ag-badge--hold .ag-badge--kill .ag-badge--stub .ag-badge--info Tables: .ag-table-wrap .ag-table .ag-table--dense .ag-table--comfortable Callouts: .ag-callout .ag-callout--info|--success|--warn|--danger Buttons: .ag-btn .ag-btn--primary .ag-btn--ghost .ag-btn--sm Mono/UTM: .ag-mono .ag-code-chip .ag-code-block Empty: .ag-empty .ag-empty__icon .ag-empty__title .ag-empty__body Layout: .ag-cols .ag-cols--aside Utils: .ag-muted .ag-row .ag-stack .ag-demo-label Do NOT invent client campaign data — label demos with .ag-demo-label “Demo”. -->Shared · Cloudflare Pages
Premium dark theme with champagne accent and cool data cyan. Link agency.css, use the class names below, ship client-ready dashboards without reinventing chrome.
For other bots: Link /agency.css (hub) or copy from ad-agency-design-system/. Put agency on <body>. Prefer class names listed in the HTML comment at the top of this file and in README.md. Label invented numbers with ag-demo-label.
CSS variables on :root. Warm champagne primary · soft cyan for data.
Also defined: --radius*, --shadow*, --space-1…8, --font-sans|display|mono, --text-xs…4xl, --max-width (1120px).
.ag-card · .ag-card-grid · modifiers --2|--3|--4
Demo
Soft elevation, subtle border. Use for report panels and narrative blocks.
Demo
.ag-card--soft — flatter nest for nested content.
Demo
Pair with primary or ghost buttons.
View buttons.ag-stat-grid + .ag-stat · add .ag-stat--data for cyan accent bar
PASS · HOLD · KILL · stub · info · accent
Wrap in .ag-table-wrap. Dense or comfortable density.
Comfortable · .ag-table--comfortable
| Angle | Campaign | Status |
|---|---|---|
| Seltzer switch Demo | ss_a_seltzer | PASS |
| Awards claim Demo | — | KILL |
| City pilot Demo | ss_pilot | HOLD |
Dense · .ag-table--dense
| Cluster | UTM content | Metric | Flag |
|---|---|---|---|
| treasure_valley | utm_content=tv_core | Locator | stub |
| san_diego_nc | utm_content=sd_nc | Directions | live |
.ag-callout + --info|--success|--warn|--danger
Info. Primary CTA remains Find Near You — no purchase events in the stack.
Success. Angle cleared review gates. Ready for calendar slotting.
Hold. Spend gate not yet met — wait for 3 live days or $150 before kill/scale.
Kill. Hard fail — do not ship this angle or claim set.
.ag-btn--primary · .ag-btn--ghost · optional .ag-btn--sm
.ag-mono · .ag-code-chip · .ag-code-block
Inline: utm_source=meta and
utm_campaign=ss_<angle>
utm_source=meta&utm_medium=paid&utm_campaign=ss_a_seltzer&utm_content=tv_core
.ag-empty with icon, title, body, optional CTA
Connect locator analytics after the first spend gate. This panel stays polished while data is stubbed.
.ag-cols · .ag-cols--aside (stacks under 800px)
Demo
Wider column for strategy copy, week plans, or long tables. Use section headers above grids for rhythm.
This page already demos topbar, container, sticky subnav, and footer.
<body class="agency">
<header class="ag-topbar">…</header>
<main class="ag-container ag-main">
<header class="ag-hero">…</header>
<nav class="ag-subnav">…</nav>
<section class="ag-section">…</section>
</main>
<footer class="ag-footer">…</footer>
</body>