Mithrandir

Metrics OBS.

SEA 23:14 UTC Ingest OK
Mithrandir Metrics
v 1.0 · 2026.04.23
Design System · v 1.0 · 23 April 2026

A baseball intelligence
system of record.

An Observatory-grade structure, Almanac voice, and restrained Scouting-Desk energy — composed into one working visual system for Mithrandir Metrics. Built for density, readability, and Flask/Jinja realism.

Contents

  1. Final visual identity
  2. Color tokens
  3. Typography rules
  4. Navigation rules
  5. Table rules
  6. Card rules
  7. Data-visual rules
  8. Mobile rules
  9. Page-specific guidance
  10. Things to avoid

01Final visual identity

The working identity — what we're calling Observatory · Almanac — blends all three earlier directions in specific, defensible ratios. Nothing in the system is decoration; every piece earns its place against the constraint of dense baseball information rendered on Flask/Jinja pages.

Observatory gives us the chassis. Almanac gives us the voice. Scouting Desk shows up for one specific moment — the Daily page — and nowhere else.

The blend, in one sentence

Observatory structure (top bar + contextual rail, 12-col grid, ruled tables, confidence-interval charts) · Almanac typography & voice (Source Serif 4 masthead, italic pull-quotes, mono numerals, warm ink-black surface) · Scouting-Desk accents (reserved daily yellow, exclusively for today-only / live callouts on the Daily page).

What this feels like to a user

Mythic restraint

Mithrandir is the operator's name, not a theme. Signal color is staff-grey rather than any fantasy palette. There are no runic glyphs, no sword icons, no gradients that suggest "wizard." Model names (Palantir, Fangorn, Valinor) carry all the mythic load the product needs. The rest of the surface stays an instrument.

Strike zone
Diamond
MM
Wordmark
Range & point

02Color tokens

A neutral ink-black surface system (slight warm cast at oklch(…0.006 70)) with two semantic accents and one reserved accent. Everything else is ink grey at graded opacity. This is the smallest palette that can carry the whole product.

Surface

Ink 900 · Page
--mm-ink-900
Ink 850 · Card
--mm-ink-850
Ink 800 · Raised
--mm-ink-800
Ink 750 · Hover
--mm-ink-750

Ink (text)

Text 1 · Primary
--mm-text-1
Text 2 · Secondary
--mm-text-2
Text 3 · Tertiary
--mm-text-3
Text 4 · Disabled
--mm-text-4

Accents

Signal · informational
--mm-signal
Warn · market edge / alert
--mm-warn
Reserved daily yellow
Daily live token
Outcome scale
--mm-down / --mm-up

Daily yellow is reserved Do not use the reserved yellow outside the Daily page masthead or live-state indicators. Signal carries all other informational emphasis site-wide.

Do
  • Use Signal for links, selected rows, projection ranges, and "confidence" callouts.
  • Use Warn for market edges > threshold, injury flags, data-staleness alerts.
  • Let grey do the work. 90% of the UI is graded ink.
Don't
  • Don't tint surfaces with accent color — accents belong to text, rules, and small fills.
  • Don't combine Signal and Warn on the same element (pick one).
  • Don't introduce a green for "positive" outside the Outcome scale.

03Typography rules

Three families, each with a specific job. Type hierarchy is the single strongest tool we have for making dense baseball data feel organized; we lean on it aggressively before reaching for color.

Display · Source Serif 4
Nightly Dispatch â„– 112

Mastheads, hub titles, player-card names, feature headlines, italic pull-quotes. Never used for UI chrome or numbers.

UI · Inter Tight
Market Watch · Updated 14 s ago
Secondary body text for descriptions, explainers, labels.

Buttons, nav, form labels, body copy in cards, row text in tables.

Numerals · JetBrains Mono
.327 / .411 / .589 · +18.4 WAR

Every stat, every delta, every timestamp. Always tabular-nums. Eyebrow labels and folio tags also use mono at 10.5px / .22em letter-spacing / UPPERCASE.

Scale
Display 1 — 44px / -.015em  Â·  masthead
Display 2 — 32px  Â·  hub title
H1 — 22px  Â·  card title
H2 — 17px  Â·  subsection
Body — 14px / 1.45  Â·  default
Caption — 12px  Â·  table foot, helper
Micro — 10.5px / .22em UPPER  Â·  folios, eyebrows

Rules

Hybrid: a sticky top bar for the seven hubs, a contextual left rail that appears on any hub (Analytics, Betting, Lab, Prospects) with sub-sections. Home and Daily have no rail.

Rules

05Table rules

Box-score almanac: ruled hairlines between rows, no vertical rules, mono tabular numbers right-aligned, text left-aligned, uppercase mono headers. Tables carry more informational weight than cards do — they are the primary medium.

Example · Analytics · Projections142 players
# Player Pos Proj WAR 90% CI wRC+ Δ 7d Tier
01Aaron Judge NYYRF 7.45.8 · 8.9178 +0.3Elite
02Shohei Ohtani LADDH 6.95.2 · 8.4169 −0.1Elite
03Bobby Witt Jr. KCRSS 6.24.7 · 7.6152 +0.4Elite
04Gunnar Henderson BALSS 5.84.3 · 7.2144 —Star
05Juan Soto NYMRF 5.64.1 · 7.0163 +0.2Star
As of W 15 · 2026 · Model: Palantir v 4.2

Rules

06Card rules

Cards are containers for content that isn't tabular — summaries, player profiles, market snapshots, lab experiments. They use ruled borders, small radii (4px), and generous internal padding. Cards never float or stack shadows; the rule-line is the container.

Example · Player cardDaily · Profile
PORTRAIT
Bobby Witt Jr. SS · KCR
Age 26 · 6'1" · Bats R · Throws R · DOB 15 Jan 2000
Elite tier Palantir 94 Valinor 91 Knee · day-to-day
Proj WAR · 2026
6.2
90% CI · 4.7 – 7.6
Example · Summary card (head + body + foot)reusable
Analytics · Scorecard

Top movers · last 7 days

Updated 14 s ago

Players whose 2026 projection shifted by more than 0.3 WAR over the past seven days. Witt, Skenes, and Crow-Armstrong lead the climb; Acuña and Strider slide on injury news.

As of W 15 · 2026 · Palantir v 4.2 View all 23 →

Rules

07Data-visual rules

Data is our imagery. We don't put stock photos on the site; we put spray charts, strike zones, park outlines, and distribution plots. Every chart is built in the same drawing vocabulary.

Sparkline · 7-day projection trend

Lines are always 1.25px, filled area is --mm-signal-tint. Final point is a filled dot.

Confidence interval · projection range
369 WAR

Tinted bar = 80–90% CI. Dot = point estimate. Every projection carries a CI — uncertainty is a first-class citizen.

Strike zone · heat cells
3×3 heat grid
Signal at alpha 0.10 → 0.90
Rule-frame always visible
Distribution · histogram w/ median
MEDIAN 6.2

Neutral ink bars. Signal-colored dashed line for median/reference value, with a mono label.

Rules

08Mobile rules

Mobile is not a shrunk desktop. The rail collapses, the top bar becomes a section switcher, and tables reflow to card-per-row with the most informative columns kept visible.

Mithrandir Metrics
W 15
Home Analytics Betting Lab Daily Prospects
Analytics · Projections
Top 142 position players
Aaron Judge NYY · RF
7.4
Shohei Ohtani LAD · DH
6.9
Bobby Witt Jr. KCR · SS
6.2

Pattern: chip section-switcher

The seven hubs become a horizontally-scrollable chip rail below a compact top bar. Active chip uses the Signal underline pattern translated to a tinted pill. Sub-sections of a hub appear as a second chip row below when the hub is deep (Analytics, Lab).

Pattern: table → card list

Tables reflow to row-cards with: primary identity on the left, the single most-important number on the right, and two supporting stats revealed on tap. No horizontal scrolling.

Reach & hit targets

44px minimum hit target. Primary actions move to the bottom half of the screen. A single sticky footer appears on Daily for the "Today's edge" shortcut.

Rules

09Page-specific guidance

Each of the seven hubs gets a distinct compositional job, but all share the same system. This is where architecture meets identity.

Home Orientation

Home is the front page of the almanac, not a marketing landing. It answers three questions in this order: what's new tonight?, what changed this week?, where should I go?

Composition
  • Masthead: "Mithrandir Metrics" + date folio + one dek sentence ("Nightly baseball intelligence · W 15 · 2026").
  • Hero row: a single wide Daily-preview card (links to Daily) + a 3-column KPI strip (leaderboard movers, market edges, new prospects).
  • Three hub-entry cards below: Analytics, Lab, Prospects. Each card shows a sparkline/chart thumbnail, a one-line summary, and a "go" affordance.
  • Footer strip: Methods identities (Palantir, Fangorn, Valinor) as mono chips linking to the Methods hub.
Forbidden
  • No rotating hero carousel. No "Sign up today" CTA. No testimonials or feature lists.
Daily (flagship) Dispatch

The flagship page. Feels like a newspaper front printed for tonight. This is the only place the reserved yellow appears.

Composition
  • Full-bleed masthead: DISPATCH â„– 112 · 23 APR 2026 folio, Display-1 dek ("Palantir sees a narrow AL West"), byline row with author + model version.
  • Below masthead: scoreboard-style stat block (C · Scouting-Desk borrow) — 4–5 big mono numbers with reserved-yellow labels — the only reserved-yellow usage.
  • Lead report: serif long-form column, 62ch max. Pull-quote in italic Display-2 with left-border signal.
  • Right rail (desktop): today's cards — a stack of compact player/game cards.
  • Footer: archive drawer ("Yesterday · â„– 111 · → dispatch") as a horizontal list of the last 7 dispatches.
Forbidden
  • No reserved-yellow accent anywhere except the masthead stat block and live-state dots. No "read time" labels. No social share bar at top.
Analytics Hub · 6 sections

Analytics is the densest hub. Contextual left rail with Projections · Standings · Player forecasts · Awards · Leaders · Scorecard.

Composition
  • Sub-page header: folio (ANALYTICS / PROJECTIONS · W 15) + Display-2 title + filter bar (team, position, model, as-of).
  • Primary region is always a table (see §05). Tables are the content.
  • Above the table: one full-width summary card with a sparkline/histogram answering "what's the headline?"
  • Right side of table row: on hover, a Signal-colored "→" reveals the player-forecast page.
Realistic Flask/Jinja
  • Each sub-section is a Jinja template extending _hub.jinja with masthead/folio blocks and a {% block table %}. Filters are simple form GETs.
Betting Market-facing

Distinct lane: market analysis, never touting. Warn-amber is Betting's working color.

Composition
  • Rail: Market watch · Futures gaps · Prop boards · Parlay calculator.
  • Masthead carries a persistent disclaimer micro-strip ("Analysis, not advice · Mithrandir Metrics does not accept wagers.").
  • Prop boards and market-watch tables use the standard table pattern; edges above threshold are tagged with mm-tag--warn, not highlighted rows.
  • Parlay calculator is a compact form card (8-col) beside a results card (4-col). Pure utility, no gambling-site chrome.
Forbidden
  • No odds-flash green. No "pick of the day" hero. No bookmaker logos larger than 16px. No flashing/live-odds ticker.
Lab Research · optimization

The research back-room. Tonal-only — no accent colors except for active-experiment state.

Composition
  • Rail: Unlock candidates · Optimization runs · Backtests · Archive.
  • Each experiment renders as a long card with a header (experiment name + version + as-of), a methodology note (serif italic 62ch), a result block (mono KPIs), and a "reproduce" footer linking to Methods.
  • Backtest archive is a dense zebra-free table with a mono run-id column and a signal-tinted row for "canonical" runs.
Forbidden
  • No marketing framing ("Unlock alpha!"). Experiment names are literal: CS-2026-04-23 · Palantir v 4.2 · AL-West.
Prospects Universe · tiered

Prospects get the most visual breathing room because users compare across hundreds. Tiers are the organizing principle.

Composition
  • Rail: Universe · Tiers · Profiles · Archive.
  • Universe view is a virtualized long table with a fixed leftmost identity column and tier swatches (signal at graded alpha).
  • Profile page uses the Player Card pattern, plus a four-panel projection-vs-comparable grid and a serif "scout's note" column.
  • Tier legend sits persistently in the page masthead ("Tier 1 · 2 · 3 · 4 — Palantir confidence").
Methods Model identities

The credibility anchor of the whole site. Methods is where Palantir, Fangorn, and Valinor live. Mythic names carry the atmosphere so nothing else has to.

Composition
  • Rail: Palantir · Fangorn · Valinor · Changelog.
  • Each model page leads with a serif masthead (the model's name in Display-1), a one-paragraph italic description, a version matrix table, and an Observatory-style operational strip (status, last-updated, sample size, error rate).
  • Methods pages are the one place a quote from the scientific/observatory tradition is welcome ("All models are wrong; some are useful.") — serif, italic, 60ch, as a pull-quote not a banner.
Forbidden
  • No sigils, runes, sword imagery, or stylized fonts. No gradient backgrounds on model cards. Mithrandir influence stays in naming, not graphics.

10Things to avoid

A living list. Every item has killed a dense analytics product we respect. Keep this list close.

Sportsbook / Casino
  • Neon green "Win!" highlights
  • Bookmaker logos sized as brand partners
  • Live-odds scroll tickers
  • "Pick of the day" hero cards
  • Parlay-builder in the primary nav
Generic SaaS dashboard
  • Purple → blue gradient hero
  • Filled rounded-20px cards with soft shadows
  • "Good morning, Jordan ✨" greeting rows
  • Welcome-tour onboarding modals
  • Lucide-icon soup beside every label
Fantasy / Mythic cosplay
  • Runic typography or sword icons
  • Parchment textures or glowing orbs
  • Tolkien-named UI chrome (never "Rivendell sidebar")
  • Fantasy-novel pull-quotes unrelated to baseball
  • Purple/gold "wizard" palettes
Cluttered card soup
  • More than 4 cards in a row on desktop
  • Cards with 6+ stats and no hierarchy
  • Nested cards (card-in-card)
  • Accent-colored card backgrounds
  • Shadowed floating cards on dark surfaces
Marketing-page fluff
  • Testimonials, "trusted by" logo bars, feature grids
  • Hero copy promising alpha / edges
  • Rotating carousels
  • Animated background gradients
  • Stock photos of stadiums or generic players
Typographic mistakes
  • Proportional numerals in tables
  • Serif labels in UI chrome
  • Multiple italic weights on one screen
  • Centered body copy over 40ch
  • Long prose at 14px without 1.6 leading

End of document · Mithrandir Metrics Design System v 1.0 · 23 April 2026