diff --git a/CHANGELOG.md b/CHANGELOG.md index a1ecb3f..51c7c47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ Entries are newest-first. Dates are UTC, ISO 8601 (§14). Versioning policy: bum for upstream skill changes, registry updates (§2.1, §15.1), factual corrections to normative content, and brand/identity changes. +- **v1.39 (2026-07-26):** **Three external palettes registered, and a new class for the two that cannot conform.** **§11.3.5 added — Tokyo Night**, taken verbatim from the upstream editor theme (canvas Night `#1A1B26`, `surface` the documented Storm background `#24283B`, `surface-alt` the Night `bg_dark` `#16161E`, which sits darker than the canvas as §11.0.1 permits). It needed no Spacecraft-derived substitutes: every role token clears 4.5:1 on all three backgrounds — accent `#7AA2F7` 6.79:1, structure `#BB9AF7` 7.39:1, success `#9ECE6A` 9.35:1, error `#F7768E` 6.46:1, warning `#E0AF68` 8.55:1, focus `#7DCFFF` 9.96:1 — so it is registered as a conforming alternate, with `tokyonight-high-contrast` lifting the two tokens below 7:1 on the canvas (`accent` → `#97B6F9` 8.44:1, `error` → `#F998AA` 8.22:1). The upstream comment tone `#565F89` (2.76:1) is recorded as not bindable to any role token. **§11.5 added — Fidelity Palettes (registered, non-conforming):** a new class for palettes reproduced exactly from a widely used external theme so tooling can meet a user already working in it. **Solarized Dark (§11.5.1) and Solarized Light (§11.5.2)** are registered verbatim from Ethan Schoonover's Solarized — no token substituted, deepened, or lifted to make a number pass — and they **do not** satisfy §11's contrast guarantee. Solarized Dark: body text `base0` 4.75:1 on the canvas, twelve pairings below 4.5:1, and `structure`/`border` (2.97:1) and `error` (2.81:1) below 3:1 on `base02`. Solarized Light is worse: body text `base00` measures **4.13:1, under the AA floor**, and `success` (2.97:1), `warning` (2.98:1), and `focus` (2.93:1) fall below 3:1, so an interface built on it cannot signal status by color at all. §11.5 therefore bars adopting a fidelity palette as a project's §11.4 palette, keeps `steelbore-mono` as the accessible-mode path, and ships no `-high-contrast` sibling for them (lifting would change the values they exist to reproduce); † and ‡ mark the two failure bands throughout. Solarized defines one elevated tone per mode, so `surface-alt` shares `surface`. **§11.4.1 added — Reference Names:** every palette gains an additive reference name for prose (`steelbore-color-palette`, `steelboreclassic-color-palette`, `blue-color-palette`, `blackpinkpanther-color-palette`, `matrixgreen-color-palette`, `navywhite-color-palette`, `tokyonight-color-palette`, `solarizeddark-color-palette`, `solarizedlight-color-palette`). Slugs are unchanged and remain the machine identifier, so no consumer breaks. **§11.4** gains bullets for both additions. - **v1.38 (2026-07-26):** **§4.3 corrected — the symlink runs the other way.** v1.36 required the root `LICENSE` to be a symlink into `LICENSES/`, on the premise that GitHub follows symlinks for license detection. It does not: GitHub's detector reads **git blobs**, and a symlink's blob is the target *path*, not the license text. Measured after v1.36 landed, both `Standard` and `Construct` reported `NOASSERTION` — no identified license — where sibling repos with a regular `LICENSE` file report `GPL-3.0`. The rule is inverted: the root `LICENSE` is now a **regular file** holding the verbatim primary license text, and `LICENSES/.txt` for that license is a **symlink back to it** (`ln -s ../LICENSE LICENSES/GPL-3.0-or-later.txt`). `reuse` reads the working tree through the filesystem, so it follows the link and lints clean; GitHub gets a real blob. The single-source-of-truth goal of v1.36 is preserved — the text still exists exactly once — and two independently maintained copies remain non-compliant. Added: the root text MUST be a **canonical, unmodified** copy as published (FSF text for the GPL family, Creative Commons text for CC-BY-SA-4.0, or the choosealicense.com copy) — reflowed or Markdown-formatted texts defeat detection even when the wording is intact. Secondary licenses in `LICENSES/` (§4.2 upstream texts, a differently-licensed tooling class per §4.1.1) stay regular files; only the primary license is linked. §5.2 `LICENSE` row and the §16 checklist bullet updated to match. - **v1.37 (2026-07-26):** **Changelog extracted from the document.** The full version history moves out of §1 — Preamble into this file (`CHANGELOG.md`) at diff --git a/The_Steelbore_Standard.md b/The_Steelbore_Standard.md index fdba58c..8e6592b 100644 --- a/The_Steelbore_Standard.md +++ b/The_Steelbore_Standard.md @@ -29,7 +29,7 @@ repository](https://github.com/Spacecraft-Software/Standard), newest entry first. It is kept out of this document so the standard reads as the rules *in force* rather than the record of how they got there. -This document is **version 1.38**, updated 2026-07-26 (§14: UTC, ISO +This document is **version 1.39**, updated 2026-07-26 (§14: UTC, ISO 8601). The skill encoding of the standard keeps a parallel history in `spacecraft-standard-constitution/references/CHANGELOG.md` in the [Construct @@ -902,7 +902,7 @@ Red Oxide is 1.13:1 and Radium Green on Liquid Coolant is 1.01:1. ## §11.3 — Alternate Palettes -Four alternate palettes are registered. Each declares its own canvas, +Five alternate palettes are registered. Each declares its own canvas, its own surfaces, and a full set of §11.1 role tokens verified against all three of its backgrounds. **A project adopts exactly one palette** (§11.4); tokens are never mixed across palettes. @@ -1039,6 +1039,41 @@ backgrounds. (7.76:1). `foreground` and `structure` are already ≥7:1 and carry over verbatim. +### §11.3.5 — Tokyo Night + +Anchored on **Night** and **Tokyo Blue**, registered verbatim from the +upstream editor theme +([enkia/tokyo-night-vscode-theme](https://github.com/enkia/tokyo-night-vscode-theme)). +`surface` is that project’s documented *Storm* background and +`surface-alt` its *Night* `bg_dark` — like MatrixGreen’s Ambient Black, +the code well sits *darker* than the canvas, which §11.0.1 permits. No +Spacecraft-derived substitutes were needed: every role token clears +4.5:1 on all three backgrounds, so this palette is registered as a +conforming alternate rather than a §11.5 fidelity palette. + +| Role token | Color | Hex | vs canvas | +|---------------|----------------|-----------|-----------| +| `background` | Night | `#1A1B26` | (canvas) | +| `surface` | Storm | `#24283B` | 1.17:1 | +| `surface-alt` | Night Deep | `#16161E` | 1.05:1 | +| `foreground` | Starlight | `#C0CAF5` | 10.59:1 | +| `accent` | Tokyo Blue | `#7AA2F7` | 6.79:1 | +| `structure` | Neon Purple | `#BB9AF7` | 7.39:1 | +| `success` | Signal Green | `#9ECE6A` | 9.35:1 | +| `error` | Sakura Red | `#F7768E` | 6.46:1 | +| `warning` | Lantern Yellow | `#E0AF68` | 8.55:1 | +| `focus` | Ice Cyan | `#7DCFFF` | 9.96:1 | +| `border` | Neon Purple | `#BB9AF7` | 7.39:1 | + +The upstream comment tone **Comment Slate** `#565F89` (2.76:1 on Night) +is **not bindable to a role token** — it clears neither the 4.5:1 text +floor nor the 3:1 non-text floor. Boundaries are drawn in `structure` +per §11.0.1. + +`tokyonight-high-contrast` lifts the two tokens that sit below 7:1 on +the canvas: `accent` to `#97B6F9` (8.44:1) and `error` to `#F998AA` +(8.22:1). The other six carry over verbatim. + ## §11.4 — Palette Selection - **Modern is the default.** An artifact that declares nothing uses @@ -1067,6 +1102,128 @@ verbatim. declared palette. Where no project context exists (a standalone document, a one-off diagram), use Modern. +- **Fidelity palettes are not adoptable.** The §11.5 palettes are + registered for interoperability and are excluded from this section — a + project may not declare one as its palette. They also ship no + high-contrast sibling, so the bullet above does not apply to them. + +- **Palettes have reference names.** Every palette carries a reference + name (§11.4.1) alongside its slug. The slug stays the machine + identifier; the reference name is for prose and conversation. + +### §11.4.1 — Reference Names + +Each palette carries a **reference name** for prose, conversation, and +documentation. Reference names are *additive*: the slug remains the +machine identifier that themes, `steelbore.toml` keys, and application +theme lookups use, and it is unchanged by this section. Both forms +appear in the canonical file, the reference name as the `reference` key +of each `[palettes.]` table. + +| Slug (machine identifier) | Reference name | +|------------------------------|----------------------------------| +| `steelbore` | `steelbore-color-palette` | +| `steelbore-classic` | `steelboreclassic-color-palette` | +| `steelbore-blue` | `blue-color-palette` | +| `steelbore-blackpinkpanther` | `blackpinkpanther-color-palette` | +| `steelbore-matrixgreen` | `matrixgreen-color-palette` | +| `steelbore-navywhite` | `navywhite-color-palette` | +| `tokyonight` | `tokyonight-color-palette` | +| `solarized-dark` | `solarizeddark-color-palette` | +| `solarized-light` | `solarizedlight-color-palette` | + +———————————————————————— + +## §11.5 — Fidelity Palettes (registered, non-conforming) + +A **fidelity palette** reproduces a widely used external theme +**exactly**, so Spacecraft Software tooling can meet a user who already +works in it — an editor, a terminal, a diff viewer. Its values are +copied verbatim from upstream; no token is substituted, deepened, or +lifted to make a number pass. + +The consequence is stated plainly: **a fidelity palette is not required +to satisfy §11’s contrast guarantee, and the two registered here do +not.** The ratios printed below are **the measurement, not a target**. +They are recorded so the gap is visible rather than discovered later. + +**Rules for fidelity palettes.** + +- A project **MUST NOT** adopt a fidelity palette as its declared §11.4 + palette. §13’s WCAG 2.2 Level AA obligation and §18’s accessible-mode + requirements are unaffected by this section. + +- Where an application offers one as a *user-selectable* theme, a + conforming palette remains the default, and `steelbore-mono` (§11.1.1, + palette-independent) remains the accessible-mode path. + +- A fidelity palette ships **no** `-high-contrast` sibling. Lifting its + tokens to 7:1 would change the very values it exists to reproduce. + +- Fidelity palettes are recorded in `steelbore.toml` under + `meta.fidelity-palettes`, and each theme carries + `conformance = "non-conforming"` in its `rules` table. + +† marks a token whose worst pairing falls between 3:1 and 4.5:1 — large +text, icons, and non-text UI only. ‡ marks one below 3:1, which carries +no legible use at any size. + +### §11.5.1 — Solarized Dark + +Ethan Schoonover’s Solarized +([ethanschoonover.com/solarized](https://ethanschoonover.com/solarized/)), +dark mode: canvas `base03`, elevated tone `base02`, body text `base0`. +Solarized defines a single elevated tone per mode, so `surface-alt` +shares `surface`. + +| Role token | Color | Hex | vs canvas | +|---------------|--------|-----------|--------------| +| `background` | base03 | `#002B36` | (canvas) | +| `surface` | base02 | `#073642` | 1.15:1 | +| `surface-alt` | base02 | `#073642` | 1.15:1 | +| `foreground` | base0 | `#839496` | **4.75:1** † | +| `accent` | blue | `#268BD2` | **4.08:1** † | +| `structure` | violet | `#6C71C4` | **3.43:1** ‡ | +| `success` | green | `#859900` | **4.69:1** † | +| `error` | red | `#DC322F` | **3.25:1** ‡ | +| `warning` | yellow | `#B58900` | **4.68:1** † | +| `focus` | cyan | `#2AA198` | **4.75:1** † | +| `border` | violet | `#6C71C4` | **3.43:1** ‡ | + +Body text clears AA on the canvas (4.75:1) and falls to 4.11:1 on +`base02`. Restricted to large text, icons, and non-text UI: `foreground` +(4.11:1), `accent` (3.53:1), `success` (4.06:1), `warning` (4.05:1), +`focus` (4.12:1). Below 3:1 on `base02`: `structure` (2.97:1), `error` +(2.81:1), `border` (2.97:1). + +### §11.5.2 — Solarized Light + +The same accent set on Solarized’s light bases: canvas `base3`, elevated +tone `base2`, body text `base00`. + +| Role token | Color | Hex | vs canvas | +|---------------|--------|-----------|--------------| +| `background` | base3 | `#FDF6E3` | (canvas) | +| `surface` | base2 | `#EEE8D5` | 1.14:1 | +| `surface-alt` | base2 | `#EEE8D5` | 1.14:1 | +| `foreground` | base00 | `#657B83` | **4.13:1** † | +| `accent` | blue | `#268BD2` | **3.41:1** † | +| `structure` | violet | `#6C71C4` | **4.06:1** † | +| `success` | green | `#859900` | **2.97:1** ‡ | +| `error` | red | `#DC322F` | **4.29:1** † | +| `warning` | yellow | `#B58900` | **2.98:1** ‡ | +| `focus` | cyan | `#2AA198` | **2.93:1** ‡ | +| `border` | violet | `#6C71C4` | **4.06:1** † | + +**Solarized Light does not clear the AA floor for body text.** `base00` +on `base3` measures 4.13:1, below 4.5:1 — Solarized’s own emphasized +tone `base01` (4.99:1) would, but substituting it would no longer be +Solarized. Restricted (3:1–4.5:1): `foreground` (3.64:1), `accent` +(3.00:1), `structure` (3.57:1), `error` (3.77:1), `border` (3.57:1). +Below 3:1, and so carrying no legible use at any size: `success` +(2.62:1), `warning` (2.62:1), `focus` (2.58:1) — an interface built on +these values cannot signal success, warning, or focus by color at all. + ———————————————————————— # §12 — Typography (FOSS-Licensed Fonts Only) diff --git a/The_Steelbore_Standard.texi b/The_Steelbore_Standard.texi index 4c28081..23b4096 100644 --- a/The_Steelbore_Standard.texi +++ b/The_Steelbore_Standard.texi @@ -5,10 +5,10 @@ @setfilename The_Steelbore_Standard.info @documentencoding UTF-8 @documentlanguage en -@settitle The Steelbore Standard 1.38 +@settitle The Steelbore Standard 1.39 @c %**end of header -@set VERSION 1.38 +@set VERSION 1.39 @set UPDATED 2026-07-26 @set SUBDOMAIN https://Standard.SpacecraftSoftware.org/ @@ -1329,6 +1329,7 @@ forbidden (§11.4). * Steelbore Classic:: * Alternate Palettes:: * Palette Selection:: +* Fidelity Palettes:: @end menu @node Surface Class @@ -1677,7 +1678,7 @@ on Red Oxide is 1.13:1 and Radium Green on Liquid Coolant is 1.01:1. @node Alternate Palettes @section §11.3 — Alternate Palettes -Four alternate palettes are registered. Each declares its own canvas, +Five alternate palettes are registered. Each declares its own canvas, its own surfaces, and a full set of §11.1 role tokens verified against all three of its backgrounds. @strong{A project adopts exactly one palette} (§11.4); tokens are never mixed across palettes. @@ -2014,6 +2015,90 @@ lightens: @code{accent} and @code{focus} to @code{#1F4A73} (7.30:1), (7.76:1). @code{foreground} and @code{structure} are already ≥7:1 and carry over verbatim. +@subsection §11.3.5 — Tokyo Night + +Anchored on @strong{Night} and @strong{Tokyo Blue}, registered verbatim +from the upstream editor theme (@uref{https://github.com/enkia/tokyo-night-vscode-theme,enkia/tokyo-night-vscode-theme}). +@code{surface} is that project's documented @emph{Storm} background and +@code{surface-alt} its @emph{Night} @code{bg_dark} --- like MatrixGreen's +Ambient Black, the code well sits @emph{darker} than the canvas, which +§11.0.1 permits. No Spacecraft-derived substitutes were needed: every role +token clears 4.5:1 on all three backgrounds, so this palette is registered as a +conforming alternate rather than a §11.5 fidelity palette. + +@multitable {@code{surface-alt}} {Lantern Yellow} {@code{#000000}} {vs canvas} +@headitem +Role token + @tab Color + @tab Hex + @tab vs canvas +@item +@code{background} + @tab Night + @tab @code{#1A1B26} + @tab (canvas) +@item +@code{surface} + @tab Storm + @tab @code{#24283B} + @tab 1.17:1 +@item +@code{surface-alt} + @tab Night Deep + @tab @code{#16161E} + @tab 1.05:1 +@item +@code{foreground} + @tab Starlight + @tab @code{#C0CAF5} + @tab 10.59:1 +@item +@code{accent} + @tab Tokyo Blue + @tab @code{#7AA2F7} + @tab 6.79:1 +@item +@code{structure} + @tab Neon Purple + @tab @code{#BB9AF7} + @tab 7.39:1 +@item +@code{success} + @tab Signal Green + @tab @code{#9ECE6A} + @tab 9.35:1 +@item +@code{error} + @tab Sakura Red + @tab @code{#F7768E} + @tab 6.46:1 +@item +@code{warning} + @tab Lantern Yellow + @tab @code{#E0AF68} + @tab 8.55:1 +@item +@code{focus} + @tab Ice Cyan + @tab @code{#7DCFFF} + @tab 9.96:1 +@item +@code{border} + @tab Neon Purple + @tab @code{#BB9AF7} + @tab 7.39:1 +@end multitable + +The upstream comment tone @strong{Comment Slate} @code{#565F89} (2.76:1 on +Night) is @strong{not bindable to a role token} --- it clears neither the +4.5:1 text floor nor the 3:1 non-text floor. Boundaries are drawn in +@code{structure} per §11.0.1. + +@code{tokyonight-high-contrast} lifts the two tokens that sit below 7:1 on the +canvas: @code{accent} to @code{#97B6F9} (8.44:1) +and @code{error} to @code{#F998AA} (8.22:1). The +other six carry over verbatim. + @node Palette Selection @section §11.4 — Palette Selection @@ -2045,8 +2130,256 @@ governs and the file is corrected. Documents, editor themes, and terminal themes follow the project's declared palette. Where no project context exists (a standalone document, a one-off diagram), use Modern. +@item +@strong{Fidelity palettes are not adoptable.} The §11.5 palettes are +registered for interoperability and are excluded from this section --- a +project may not declare one as its palette. They also ship no +high-contrast sibling, so the bullet above does not apply to them. +@item +@strong{Palettes have reference names.} Every palette carries a +reference name (§11.4.1) alongside its slug. The slug stays the machine +identifier; the reference name is for prose and conversation. +@end itemize + +@subsection §11.4.1 — Reference Names + +Each palette carries a @strong{reference name} for prose, conversation, and +documentation. Reference names are @emph{additive}: the slug remains the +machine identifier that themes, @code{steelbore.toml} keys, and application +theme lookups use, and it is unchanged by this section. Both forms appear in +the canonical file, the reference name as the @code{reference} key of each +@code{[palettes.]} table. + +@multitable {@code{steelbore-blackpinkpanther}} {@code{blackpinkpanther-color-palette}} +@headitem +Slug (machine identifier) + @tab Reference name +@item +@code{steelbore} + @tab @code{steelbore-color-palette} +@item +@code{steelbore-classic} + @tab @code{steelboreclassic-color-palette} +@item +@code{steelbore-blue} + @tab @code{blue-color-palette} +@item +@code{steelbore-blackpinkpanther} + @tab @code{blackpinkpanther-color-palette} +@item +@code{steelbore-matrixgreen} + @tab @code{matrixgreen-color-palette} +@item +@code{steelbore-navywhite} + @tab @code{navywhite-color-palette} +@item +@code{tokyonight} + @tab @code{tokyonight-color-palette} +@item +@code{solarized-dark} + @tab @code{solarizeddark-color-palette} +@item +@code{solarized-light} + @tab @code{solarizedlight-color-palette} +@end multitable + + +@iftex +@bigskip@hrule@bigskip +@end iftex +@ifnottex +------------------------------------------------------------------------ +@end ifnottex + +@node Fidelity Palettes +@section §11.5 — Fidelity Palettes (registered, non-conforming) + +A @strong{fidelity palette} reproduces a widely used external theme +@strong{exactly}, so Spacecraft Software tooling can meet a user who already +works in it --- an editor, a terminal, a diff viewer. Its values are copied +verbatim from upstream; no token is substituted, deepened, or lifted to make a +number pass. + +The consequence is stated plainly: @strong{a fidelity palette is not required +to satisfy §11's contrast guarantee, and the two registered here do not.} The +ratios printed below are @strong{the measurement, not a target}. They are +recorded so the gap is visible rather than discovered later. + +@strong{Rules for fidelity palettes.} + +@itemize +@item +A project @strong{MUST NOT} adopt a fidelity palette as its declared §11.4 +palette. §13's WCAG 2.2 Level AA obligation and §18's accessible-mode +requirements are unaffected by this section. +@item +Where an application offers one as a @emph{user-selectable} theme, a +conforming palette remains the default, and @code{steelbore-mono} (§11.1.1, +palette-independent) remains the accessible-mode path. +@item +A fidelity palette ships @strong{no} @code{-high-contrast} sibling. Lifting +its tokens to 7:1 would change the very values it exists to reproduce. +@item +Fidelity palettes are recorded in @code{steelbore.toml} under +@code{meta.fidelity-palettes}, and each theme carries +@code{conformance = "non-conforming"} in its @code{rules} table. @end itemize +† marks a token whose worst pairing falls between 3:1 and 4.5:1 --- large text, +icons, and non-text UI only. ‡ marks one below 3:1, which carries no legible +use at any size. + +@subsection §11.5.1 — Solarized Dark + +Ethan Schoonover's Solarized (@uref{https://ethanschoonover.com/solarized/,ethanschoonover.com/solarized}), +dark mode: canvas @code{base03}, elevated tone @code{base02}, body text +@code{base0}. Solarized defines a single elevated tone per mode, so +@code{surface-alt} shares @code{surface}. + +@multitable {@code{surface-alt}} {base03} {@code{#000000}} {vs canvas} +@headitem +Role token + @tab Color + @tab Hex + @tab vs canvas +@item +@code{background} + @tab base03 + @tab @code{#002B36} + @tab (canvas) +@item +@code{surface} + @tab base02 + @tab @code{#073642} + @tab 1.15:1 +@item +@code{surface-alt} + @tab base02 + @tab @code{#073642} + @tab 1.15:1 +@item +@code{foreground} + @tab base0 + @tab @code{#839496} + @tab @strong{4.75:1} † +@item +@code{accent} + @tab blue + @tab @code{#268BD2} + @tab @strong{4.08:1} † +@item +@code{structure} + @tab violet + @tab @code{#6C71C4} + @tab @strong{3.43:1} ‡ +@item +@code{success} + @tab green + @tab @code{#859900} + @tab @strong{4.69:1} † +@item +@code{error} + @tab red + @tab @code{#DC322F} + @tab @strong{3.25:1} ‡ +@item +@code{warning} + @tab yellow + @tab @code{#B58900} + @tab @strong{4.68:1} † +@item +@code{focus} + @tab cyan + @tab @code{#2AA198} + @tab @strong{4.75:1} † +@item +@code{border} + @tab violet + @tab @code{#6C71C4} + @tab @strong{3.43:1} ‡ +@end multitable + +Body text clears AA on the canvas (4.75:1) and falls +to 4.11:1 on @code{base02}. Restricted to large +text, icons, and non-text UI: @code{foreground} (4.11:1), @code{accent} (3.53:1), @code{success} (4.06:1), @code{warning} (4.05:1), @code{focus} (4.12:1). Below 3:1 on +@code{base02}: @code{structure} (2.97:1), @code{error} (2.81:1), @code{border} (2.97:1). + +@subsection §11.5.2 — Solarized Light + +The same accent set on Solarized's light bases: canvas @code{base3}, elevated +tone @code{base2}, body text @code{base00}. + +@multitable {@code{surface-alt}} {base00} {@code{#000000}} {vs canvas} +@headitem +Role token + @tab Color + @tab Hex + @tab vs canvas +@item +@code{background} + @tab base3 + @tab @code{#FDF6E3} + @tab (canvas) +@item +@code{surface} + @tab base2 + @tab @code{#EEE8D5} + @tab 1.14:1 +@item +@code{surface-alt} + @tab base2 + @tab @code{#EEE8D5} + @tab 1.14:1 +@item +@code{foreground} + @tab base00 + @tab @code{#657B83} + @tab @strong{4.13:1} † +@item +@code{accent} + @tab blue + @tab @code{#268BD2} + @tab @strong{3.41:1} † +@item +@code{structure} + @tab violet + @tab @code{#6C71C4} + @tab @strong{4.06:1} † +@item +@code{success} + @tab green + @tab @code{#859900} + @tab @strong{2.97:1} ‡ +@item +@code{error} + @tab red + @tab @code{#DC322F} + @tab @strong{4.29:1} † +@item +@code{warning} + @tab yellow + @tab @code{#B58900} + @tab @strong{2.98:1} ‡ +@item +@code{focus} + @tab cyan + @tab @code{#2AA198} + @tab @strong{2.93:1} ‡ +@item +@code{border} + @tab violet + @tab @code{#6C71C4} + @tab @strong{4.06:1} † +@end multitable + +@strong{Solarized Light does not clear the AA floor for body text.} +@code{base00} on @code{base3} measures 4.13:1, below 4.5:1 --- +Solarized's own emphasized tone @code{base01} (4.99:1) +would, but substituting it would no longer be Solarized. Restricted (3:1–4.5:1): +@code{foreground} (3.64:1), @code{accent} (3.00:1), @code{structure} (3.57:1), @code{error} (3.77:1), @code{border} (3.57:1). Below 3:1, and so carrying no legible use at any size: +@code{success} (2.62:1), @code{warning} (2.62:1), @code{focus} (2.58:1) --- an interface built on these values cannot signal success, +warning, or focus by color at all. + @iftex @bigskip@hrule@bigskip @end iftex