themes/high-contrast-mono.yaml
Rama main · réplica de lectura del repositorio original.
# High Contrast Mono — pure black and white, no mid-greys.
# Huge type, hard edges, zero decoration. The stark poster — vs swiss, which
# keeps hairlines and grey. Nothing but ink and paper.
name: high-contrast-mono
label: High Contrast Mono
summary: Pure black/white, huge type, hard edges — a stark poster.
tokens:
palette:
bg: "#FFFFFF" # paper
surface: "#FFFFFF"
ink: "#000000" # pure ink
ink_muted: "#000000"
accent: "#000000" # no secondary — black is the accent
accent_alt: "#FFFFFF"
rule: "#000000"
on_accent: "#FFFFFF"
surfaces:
title: { bg: "#000000", ink: "#FFFFFF", muted: "#FFFFFF", accent: "#FFFFFF" }
section: { bg: "#000000", ink: "#FFFFFF", muted: "#FFFFFF" }
# Charts are the one place this theme breaks its own rule, and it has to.
# Colour on a chart is data, not decoration: with a black accent and a white
# accent_alt the derived palette drew three identical black series and one
# white one that disappeared into the page. Greys alone cannot carry four
# series at a readable contrast either.
#
# These are flat poster primaries, which is the same design language the
# display face and the hard black rules already speak. Ink leads so a
# single-series chart still reads as this theme.
chart:
series:
- "#111111" # ink
- "#D32F2F" # vermillion
- "#1565C0" # cobalt
- "#B26A00" # ochre
- "#2E7D32" # green
- "#6A1B9A" # violet
dark:
bg: "#000000"
surface: "#111111"
ink: "#FFFFFF"
ink_muted: "#FFFFFF"
accent: "#FFFFFF"
accent_alt: "#000000"
rule: "#FFFFFF"
on_accent: "#000000"
type:
display: { family: "Anton", weight: 400, size: 46, line: 1.0, tracking: 0 }
heading: { family: "Anton", weight: 400, size: 34, line: 1.05, tracking: 0 }
subhead: { family: "Space Grotesk", weight: 500, size: 16, line: 1.3, tracking: 0 }
body: { family: "Space Grotesk", weight: 400, size: 14, line: 1.45, tracking: 0 }
caption: { family: "Space Grotesk", weight: 500, size: 11, line: 1.3, tracking: 0.1 }
eyebrow: { family: "Space Grotesk", weight: 700, size: 11, line: 1.2, tracking: 1.6, transform: upper }
stat: { family: "Anton", weight: 400, size: 60, line: 0.95, tracking: 0 }
grid:
margin: { top: 0.66, right: 0.8, bottom: 0.6, left: 0.8 }
gutter: 0.30
columns: 12
band: { eyebrow_y: 0.66, title_y: 1.40, body_y: 2.70 }
shape:
radius: { card: 0, pill: 0.40, chip: 0 } # nothing rounded
border: { width: 2, color: "#000000" } # thick ink outlines
card_pad: 0.32
shadow:
card: { type: outer, blur: 0, offset: 4, angle: 90, color: "000000", opacity: 1 }
# Composition — src/composition.js owns the vocabulary; every axis
# left out here is the shared default.
layout:
section:
composition: band
heading:
opening: bar
rule: under
list:
marker: square
plate:
enabled: false
voice:
feel: stark, confident, absolute, editorial
density: low
prefers:
- one idea, huge
- short declarative statements
- typographic contrast as the visual
avoid:
- mid-tones, gradients, shadows on text
- more than one idea per slide
- anything that softens the statement
headline_style: >
Say it flat and big. "BLACK AND WHITE" over "A Balanced Introduction".
Remove every word you can.
body_style: >
Short, blunt, complete. One sentence per point. No hedging.