BAGSDesign Kit · v1.1
Oct 24, 2026
Derived from
SOTU 2026-10 · fffe295
The Bags HoldingsDesign Kit · News · Announcements · Press · API docs
Brand guidelines · the poster-card system for every Bags meta-tag headlineMarkdownOG rendererProposed Doctrine marked PROPOSED is for @FinnBags to ratify.
Oct 2026 ▲ Record

Fiction Until It’s A Receipt

One card. Black on cream, white on black, red only as a signal. Every Bags headline that lives in a meta tag — news, announcements, press releases, API docs — is written and set the same way. This page is the rulebook, and it is built from the rules.

A headline is a poster. It will be screenshotted, cropped, and reposted without its deck, so it must be true on its own: one idea, under sixty characters, the number as the hero, a verb the reader can do. The date lives in the kicker, the facts live in the deck, the source lives under the deck, and anything after NOW says, out loud, that it is fiction until it is a receipt.

The system has two inks (ink and paper), one signal (red), two typefaces (Archivo Black for display, Inter for everything else), square corners, and a rule hierarchy from a 1px hairline to an 8px poster bar. Nothing else is allowed, which is why it looks like one thing.

ScopeWhat a “meta-tag headline” is, and where this kit is mandatory
Section A · Purpose
A meta-tag headline is

The <title>, og:title, twitter:title and the on-page H1 or poster-card headline. Same line of copy, written once under the doctrine, placed four times. The og:image is that same headline rendered as the card.

Mandatory for

News (The Bags Holdings, weekly briefs) · Announcements (ships, partner notes, changelog on ship day) · Press releases · API docs (docs.bags.fm reference pages, endpoint groups, guides, changelogs, README headlines) · every og:image for the above.

Does not govern

In-app UI (bags.fm web, mobile, Bubl, Cashback, TG mini-app) — those keep their product design systems. Charts, dashboards and live stat pages (/stats, /pnl-leaderboard, /screener). Social post bodies (the headline may be the post; the body is free). Legal, ToS, privacy.

TokensTwo inks, one signal, two faces, square corners, a rule hierarchy
Section B · Colour · Type · Space · Motion · Modes

Colour

Paper--paper #f7f4ee
Paper 2--paper2 #efebe2
Ink--ink #0b0b0b
Ink 2--ink2 #2b2a28
Muted--mut #6a665f
Hairline--hair #c9c3b6
Signal--sig #e0252b
Card caption#fff · .72
Card hairline#fff · .22
Ticker ▼#ff5a5f
Future · ft 0hsl(355 92% 56%)
Future · ft 1hsl(215 92% 56%)

Red is a signal, never a decoration: ▼ setbacks, PROPOSED outline, RATIFY, NOW, the share button’s “Copied” state. If red is on a page for any other reason, the page is wrong. There is no third colour.

Type

Google Fonts, one tag: Archivo+Black · Archivo:wdth,wght@100..125,400..900 · Inter:wght@400..900. Display type is always uppercase and tight (negative tracking); label type is always uppercase and loose (positive tracking). Nothing in between. text-wrap:balance; hyphens:none on every headline.

Wordmarkclamp(44px,7.2vw,84px) · .88 · −.04em
The Bags Holdings
H1 hedclamp(40px,6.6vw,84px) · .95 · −.025em
Launch. Trade. Claim.
H2 hedclamp(30px,3.6vw,46px) · .95 · −.02em

The Curve Bends

H3 hed25px · 1.0 · −.012em

Every Fee You’re Owed. One GET.

Card hedclamp(19px,1.7vw,23px) · .96 · −.02em
You Paid In 2023. You Go First. Always.
Hero numeralArchivo 900 wdth 118 · 2.1em · .86 · −.045em
$10B
DeckInter 400 · 18px · 1.42 · ink2

The number in one sentence, dated, with the source underneath, unedited.

BodyInter 400 · 15.5px · 1.58

Body copy reads like a newspaper: left-aligned, short paragraphs, drop cap on the lede only.

Pull-quoteArchivo Black · 22px · 1.12 · −.015em
The goal. #1 protocol by creator income. One receipt at a time.The Editors · Oct 2026
Kicker / chipInter 700–800 · 9–10.5px · +.14em
Jan 2026 ▲ Record   Nov 2028 · Prophecy
CaptionInter · 12.5px · 1.45 · white .72
NOV 2028 · prophecy. Rooted in: BagsPay receipt → global. Use when someone asks where this goes — say “fiction until it’s a receipt.”
SourceInter · 10px · +.04em · muted
Sources · ClickHouse datapi.bags_trade_feed · DefiLlama · X archive

Spacing & radius

TokenValue
Sheet max-width · padding1180px · 0 28px 60px (≤720: 0 16px 40px)
Card padding · gap · min-height20px 18px 16px · 12px · 170px
Card hed right-pad (SHARE)58px
Section head margin-top56px
Item padding / margin bottom16px / 16px
Column gap · column rule30px · 1px hair
Masthead padding18px 26px 24px
Chip · share padding4px 8px 3px · 3px 7px 2px
Radius0 — everything is square
Breakpoints1000 · 860 · 720
Card grid3 → 2 (≤1000) → 1 (≤720)

Rules

8px · section bar (+1px bottom)
6px · poster bar: folio, era, pull-quote, colophon, label row
4px · ledger head · THE PLAY left edge
3px signal · edge of the future
2px · box
1px ink · closes
1px hair · separates (inside black: #fff .22)
1px dotted · (reconstructed) flag

Motion

EventSpec
Mode change (paper ↔ future)bg/color .6s ease
Accent change.4s
Card reveal.3s ease · translateY(18px) · view() entry 0–30%
Stamp flip · sweep · pulse.32s · .9s · .7s×2 — cubic-bezier(.2,.8,.2,1)
Share “Copied”1600ms then revert
Reduced motionno transitions, no animations, reveals forced visible

Modes & the hue-shift rule

Paper (default): cream, ink, theme-color #f7f4ee. Future (prophecy / dark): the section inverts to #0b0b0b with white .78 / .55 / .18 steps, a 1px-in-3px scanline overlay, and theme-color #0b0b0b. Anything written about the future carries a progress scalar --ft ∈ [0,1] (0 = next month, 1 = beyond) and its accent is hsl(calc(355 − 140·ft) 92% 56%): it starts at signal red and walks to blue as the prophecy gets further out. The reader can see how speculative a claim is. The card itself is never tinted.

ft 0 · next month · hsl 355ft .5 · hsl 285ft 1 · beyond · hsl 215
Nov 2028 · Prophecy · Proposed

$10BA Month. Every Country. One Receipt.

Future mode, ft .9. Rooted in: BagsPay receipt → global. Fiction until it’s a receipt.

Print: white paper, black ink, 10.5pt body; share buttons and TOC hidden; section heads break the page; cards, boxes, quotes and rows avoid breaks; black surfaces keep print-color-adjust:exact; future mode collapses to black on white.

ComponentsLive, with the production class names — copy from the markdown twin
Section C · Poster card · Chips · Masthead · Ticker · Rules · Share · Quote · Play

Every component below is rendered by the same CSS that ships on the broadsheet. Class names are the production names; keep them so the share script and the print rules keep working. Copy-pasteable HTML + CSS for each lives in DESIGN-KIT.md §3.

Poster card · default / hero-numeral / prophecy

Card rules: hero numeral alone on its own line; headline ≤ 60 characters; caption = when to use it, never a restatement; prophecy captions open MON YYYY · prophecy. Rooted in: <roadmap item>. and close with the disclaimer. The SHARE button copies HEADLINE — https://bags.holdings/<slug>/#id.

Kicker chip system

Editorial

Jan 2026 ▲ Record

Oct 2026 Now

Aug 2025 ▼ Setback

Nov 2028 · Prophecy · Proposed

Era 0 (reconstructed)

Oct 23 Shipped

Your orders Post the chart. Tag the creator.

API methods — same system, method in the chip, path in mono

GET /trade/quote

POST /trade/swap

PUT /fee-share/:id

PATCH /launch/:mint Beta

DELETE /fee-share/:id Deprecated

Chip logic

GET solid ink (reads are safe) · POST outlined (writes) · PUT / PATCH paper-2 outlined · DELETE signal red (destructive). No green, blue or amber: the chip system has two inks and one signal. Beta / Deprecated reuse the PROPOSED outline.

Masthead bar

Vol. I · No. 1
Oct 23, 2026
Reference · Guides · Changelog
docs.bags.fm
Bags APIQuote · Swap · Settle · One Key
For immediate release · San Francisco, Oct 23, 2026Section A · Front page

News and press use the THE BAGS HOLDINGS wordmark; API docs use BAGS API with the small line Reference · Guides · Changelog. Ears carry volume/number/date on the left and a price or domain on the right; they hide below 860px.

Markets / ticker strip

Volume · 7d
$412M
▲ 18% w/w
Traders · 7d
61,204
▼ 4%
Launches
3,118
flat
Fees to creators
$4.1M
▲ 22%
Take rate
1.0%
by design
Robinhood Chain
412 ETH
▲

Six numbers, tabular, with ▲▼ and basis. Illustrative values. For API docs the strip becomes the status strip: uptime 30d · p50 latency · rate limit · version · last deploy · status.

Share button + clipboard

Launch. Trade. Claim. The Machine Works.

Outlined 1px, Inter 700 9px +.14em uppercase, 3px 7px 2px, square. Hover inverts; the copied state is signal red for 1.6s and reads COPIED. Copies HEADLINE — url#id. The script is ten lines and ships unchanged on every page:

(function(){
  var base = location.origin + location.pathname;
  function copy(text, btn){
    var done = function(){ btn.classList.add('done'); var t = btn.textContent; btn.textContent = 'Copied'; setTimeout(function(){ btn.classList.remove('done'); btn.textContent = t; }, 1600); };
    if (navigator.clipboard) navigator.clipboard.writeText(text).then(done, done); else { var ta = document.createElement('textarea'); ta.value = text; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); ta.remove(); done(); }
  }
  document.addEventListener('click', function(e){
    var btn = e.target.closest('.sh'); if (!btn) return;
    if (btn.id === 'copyall') { copy(document.getElementById('narrblock').textContent, btn); return; }
    var host = btn.closest('[id]'); var id = btn.getAttribute('data-target') || (host && host.id);
    var hed = btn.parentNode.cloneNode(true); hed.querySelectorAll('.sh').forEach(function(x){ x.remove(); });
    copy(hed.textContent.trim().replace(/\s+/g,' ') + ' — ' + base + (id ? '#' + id : ''), btn);
  });
})();

Pull-quote · The Play · Your Orders

The goal. #1 protocol on Solana by creator income. One receipt at a time.The Editors · Oct 2026
The play Proposed

Bags does Ship the receipt. @FinnBags does Post the chart, tag the creator.

Your orders Launch one coin for someone you believe in this week.

A pull-quote without a handle and a month is not a pull-quote. THE PLAY is marked PROPOSED until ratified; YOUR ORDERS is one verb the reader can do today.

Labels & legendWhat each label means and when it is required
Section D · Truth states
LabelLooks likeMeansRequired when
Jan 2026 RecordInk chip, timeline tagHappened; dated; sourced.Every past item on a timeline.
NowSignal chip, dashed outline, red nodeThe current month / live state.Exactly one per document with a timeline.
ProphecyNeutral kicker + hue-shifted accent; dark sectionFuture; fiction until it’s a receipt.Any claim about a date that hasn’t happened; disclaimer in the same unit.
ProposedSignal outlined chipNot in force until @FinnBags ratifies.Every Play, doctrine, date commitment or policy not yet ratified. Removed only by a dated RATIFIED note.
Your ordersBlack chip, dashed inner outlineThe one thing the reader does next.Every Play; optional on announcements; never on press releases or API reference.
(reconstructed)Muted dotted flagInferred from references, not a primary record.Any item without a primary source (document, trade, post).
▲ / ▼Ink / signal glyph in the kickerWent our way / taught us something.Every Chronicle and news item.
ShippedInk chipIt is live, with the receipt link.Every announcement kicker on ship day.
Beta DeprecatedSignal outlined chipAPI surface not stable / leaving.API reference, next to the method chip.
Headline doctrineThe poster rules, and ten pairs that show them
Section E · Proposed

1. ≤ 60 characters

Counts spaces. The og:title limit and the card’s two-line budget are the same number.

2. One idea

If there is an “and”, cut one side.

3. Direct address

You, imperatives, present tense. The reader is in the sentence.

4. Number as the hero

If a number is the point it goes first, alone, in .hero-num. One number per headline.

5. Slogan cadence

Short beats. Full stops as rhythm. “Launch. Trade. Claim.” reads; “Launch, trade and claim” doesn’t.

6. No dates in the headline

The kicker carries the date. The headline must still be true next year.

7. Optimistic, exact

Extreme in ambition, exact in fact. The deck carries the facts and the source, unedited.

8. Enlistment line

Where a Play exists, close with YOUR ORDERS — a verb the reader can do today.

9. Label the truth state

PROPOSED / PROPHECY / (reconstructed) are part of the headline unit, never optional.

10. Future is fiction

Anything after NOW carries “fiction until it’s a receipt” — in the caption, the section label, or the deck. No exceptions, including API roadmaps.

Ten good / bad pairs

#ContextBadGood
1API docs · overviewIntroduction to the Bags Trade APIQUOTE. SWAP. SETTLE. ONE KEY.
2API docs · guideHow to sell a token position using the swap endpointSELL ANYTHING IN TWO CALLS
3API docs · referenceGET /fee-share/claimable — returns claimable fee positionsEVERY FEE YOU’RE OWED. ONE GET.
4API changelogv2.3.1 release notes (Oct 23, 2026)SHIPPED: PRICE IMPACT ON EVERY QUOTE
5AnnouncementWe’re excited to announce that Stocks on Bags is now available to all usersSHIPPED: STOCKS ON BAGS. FOR EVERYONE.
6Announcement · numberBags creators have now earned over $50 million in cumulative fees$50M (hero) PAID TO THE PEOPLE COINS ARE ABOUT
7Press releaseBags.fm Announces Expansion to Robinhood Chain in Q4 2026BAGS IS LIVE ON ROBINHOOD CHAIN
8News · setbackAugust 2025 incident post-mortem and remediation updateTHE SUMMER THAT TAUGHT US SHARE ▼
9News · recordWeekly volume reaches new all-time high of $412 million$412M (hero) THE CURVE BENDS
10ProphecyOur 2028 vision for global paymentsANY COUNTRY. IN SOL. EVERY 15 MINUTES. · NOV 2028 · PROPHECY

What changed in every pair: the date left for the kicker, the number became the hero, the verb became yours, the sentence became a poster. Patterns by document type are in the markdown twin, §5.2.

Wordmark & lockupThe BAGS publisher mark — the Dow Jones to THE BAGS HOLDINGS’ Wall Street Journal
Section F · New in v1.1 · Proposed

THE BAGS HOLDINGS is the paper’s name; BAGS is the publisher. The wordmark is the word BAGS set in Archivo Black, uppercase, tracked −.04em, converted to outlines so it renders without webfonts. The icon is the existing Bags money-bag mark, vectorised from /assets/icon-512.png — never redrawn. Together they are the lockup. Three colours exist: ink, paper, signal red (wordmark only).

Specimen

BAGS lockup, ink on paper
bags-lockup-h.svg · ink on paper
BAGS lockup, paper on ink
bags-lockup-h-paper.svg · paper on ink (future mode, mastheads)
BAGS wordmark
bags-wordmark.svg · wordmark alone
BAGS wordmark, red
bags-wordmark-red.svg · signal red — setbacks and NOW only
BAGS stacked lockup
bags-lockup-v.svg · stacked, for square slots
Bags icon
bags-icon-paper.svg · icon alone, favicon-safe (also bags-icon-tile-512.png)

Construction

BAGS lockup with clear spacexxxx

Clear space x = the height of the B’s upper counter = 0.17 × cap height (≈ 0.12 × lockup height). Nothing enters it: no type, no rules, no edges.

MeasureValue
FaceArchivo Black · uppercase · outlined
Tracking−.04em (plus the face’s own B·A −17 / A·G −18 kern)
Icon heightcap height × 1.15 · bottom on the baseline
Icon aspect0.82 (w / h) · 241 × 294 px source
Gap icon → wordmarkcap height × 0.5
Lockup aspect4.78 : 1 (558 × 117 units) · wordmark 4.0 : 1
Stackedicon = cap height × 2, centred, gap cap × 0.5
Clear spaceB counter height = 0.17 × cap height
Minimum widthlockup 96 px · wordmark 64 px · icon 16 px
Masthead use18 px tall, paper variant, top-left ear (.pub)

Do / Don’t

  • Use the SVG. It is outlined — no font request, no fallback face, no FOUT.
  • Ink on paper, paper on ink. Red for the wordmark alone, as a signal.
  • Lockup in a masthead’s left ear; wordmark alone where height is under 24 px.
  • Where only HTML text works (email, a CMS), use <span class="bags-wordmark">BAGS</span> with wordmark.css and the Archivo Black link.
  • No stretching, skewing, rotating. Scale uniformly only.
  • No recolouring outside ink / paper / red. No green, no gradients — the product-green bag belongs to the app, not the paper.
  • No outlines, strokes, shadows, glows, blur or glass. No containers that crop the clear space.
  • Don’t set BAGS in Inter, Archivo (regular), OpenBags or any other face. Don’t retype it — place the file.
  • Don’t pair the icon with THE BAGS HOLDINGS wordmark or the BAGS API line. The icon belongs to BAGS only.

Files

/brand/wordmark/bags-wordmark.svg          ink      /brand/wordmark/bags-wordmark.png / @2x.png
/brand/wordmark/bags-wordmark-paper.svg    paper    /brand/wordmark/bags-wordmark-paper@2x.png
/brand/wordmark/bags-wordmark-red.svg      signal
/brand/wordmark/bags-lockup-h.svg          ink      /brand/wordmark/bags-lockup-h@2x.png
/brand/wordmark/bags-lockup-h-paper.svg    paper    /brand/wordmark/bags-lockup-h-paper@2x.png
/brand/wordmark/bags-lockup-v.svg          ink      /brand/wordmark/bags-lockup-v@2x.png
/brand/wordmark/bags-lockup-v-paper.svg    paper    /brand/wordmark/bags-lockup-v-paper@2x.png
/brand/wordmark/bags-icon.svg              ink      /brand/wordmark/bags-icon-512.png
/brand/wordmark/bags-icon-paper.svg        paper    /brand/wordmark/bags-icon-tile.svg · bags-icon-tile-512.png (favicon tile)
/brand/wordmark/wordmark.css               inline-HTML fallback (.bags-wordmark / .bags-lockup)
/brand/wordmark/spec.json                  the numbers above, machine-readable

API docs topbar: bags-lockup-h.svg on light, bags-lockup-h-paper.svg on dark, 20–24 px tall. All assets are also mirrored in the workspace at docs/brand/wordmark/.

Meta tagsSame copy, four places
Section G
TagPatternLimit
<title>HEADLINE — The Bags Holdings (news / announcements / press) · HEADLINE — Bags API (API docs)≤ 60 + suffix
og:title / twitter:titleHEADLINE exactly as on the card; write it in sentence case, the renderer uppercases≤ 60
description · og:descriptionthe deck, verbatim≤ 155
og:type · og:site_namearticle · bags.holdings (or Bags API)—
og:url · canonicalhttps://bags.holdings/<slug>/ — trailing slash, no query—
og:imagehttps://bags.holdings/<slug>/og.png — the poster card, 1200 × 630, from og-card.html1200 × 630
twitter:cardsummary_large_image—
theme-color#f7f4ee paper · #0b0b0b when the page opens in future mode or is an API doc in dark—

Full <head> snippet and the og:image renderer parameters are in the markdown twin, §6.

VoiceSix rules and the disclaimer
Section H

1. Receipts, not teases

A link, a tx, a table, a date. If you can’t attach one, it’s PROPHECY and says so.

2. Direct address

You, your coin, your fees. Never “users”.

3. One idea

One headline, one number, one verb.

4. Number as the hero

The number leads; the sentence explains it.

5. Slogan cadence

Short. Beats. Full stops. Read it aloud before you ship it.

6. Culture over charts

The chart is the deck; the headline is the culture — what it means for the person the coin is about.

The disclaimer rule: anything dated after NOW carries “fiction until it’s a receipt” in the same visual unit. Prophecy is a genre we publish on purpose; it is never dressed as a record.

Do / Don’tThe whole kit in two lists
Section I
  • Uppercase display type, tight tracking; uppercase labels, loose tracking.
  • Black on cream or white on black. Red as a signal only.
  • Square corners. Hairlines inside cards, poster bars between sections.
  • Date in the kicker; source under the deck; label in the kicker.
  • One hero numeral, on its own line, Archivo 900 wdth 118.
  • Headline ≤ 60, caption = when to use it.
  • Ship the og:image with the page, same headline, same slug.
  • BAGS lockup top-left of every masthead; THE BAGS HOLDINGS stays the paper’s name.
  • No contract addresses. Ever. Not in headlines, decks, cards, og:images, or alt text.
  • No wallet addresses in headlines or cards. No dates in headlines.
  • No third colour. No gradients except the hue-shift accent in future mode.
  • No serif. No italic. No title- or sentence-case override inside a poster card.
  • No rounded corners, shadows, blur, or glass. No emoji in headlines or chips.
  • No “We’re excited to announce”. No “Introduction to”. No question headlines.
  • No tinted or coloured cards. No pull-quote without a handle and a month.
  • No prophecy without the disclaimer. No PROPOSED removed without a dated RATIFIED note.
FilesWhere the kit lives
Section J · Versioning
public/brand/index.html                         this kit, rendered in the system        https://bags.holdings/brand/
public/brand/DESIGN-KIT.md                      markdown twin                           https://bags.holdings/brand/DESIGN-KIT.md
public/brand/og-card.html                       og:image renderer (query params, §6.1)
public/brand/wordmark/                          BAGS wordmark + lockup assets (§F)
public/press-release-template/index.html        the blank broadsheet; its footer links here
public/state-of-the-union-2026-10/index.html    the reference implementation (commit fffe295)
~/.openclaw/workspace/docs/brand/               workspace twin: BAGS-DESIGN-KIT.md · wordmark/

Versioning. v1.1 · Oct 24 2026 — adds the BAGS wordmark & lockup (§F) and the publisher mark in every masthead. v1.0 · Oct 23 2026 — derived from SOTU 2026-10 (fffe295). Token or component changes bump the minor; a new mode or a change to the headline doctrine bumps the major. Every published page prints its kit version in the DESIGN KIT footer block. Drafted by Bond for Finn; doctrine items marked PROPOSED until ratified.

Design Kitv1.1 · Oct 24 2026 · derived from SOTU 2026-10 (fffe295) · bags.holdings/brand/ · markdown · og-card

Poster rules for every headline, <title>, og:title and og:image: ≤ 60 chars · one idea · direct address · number as hero · slogan cadence · no dates in the headline · PROPOSED / PROPHECY / (reconstructed) labelled · anything after NOW is fiction until it’s a receipt. Ink on paper, white on ink, red as a signal only. Archivo Black / Inter. Square. BAGS lockup top-left.

Typography: Archivo Black / Inter. Wordmark: Archivo Black, outlined. Icon: the Bags money bag, vectorised from icon-512.png.

The Bags Holdings · Design Kit · v1.1 · Oct 24, 2026Drafted by Bond for Finn · not posted to Xbags.holdings/brand/