Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 10 additions & 25 deletions .impeccable/design.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
"role": "neutral",
"displayName": "Muted Ink",
"canonical": "#4c5751",
"purpose": "Secondary text, leader line, dimension bracket by day (--muted, --edge).",
"purpose": "Secondary text by day (--muted, --edge).",
"tonalRamp": [
"#1d211e",
"#343c38",
Expand Down Expand Up @@ -264,7 +264,7 @@
"role": "secondary",
"displayName": "Walnut",
"canonical": "#4a2f1f",
"purpose": "Header, footer, cabinet carcass, screenshot ring.",
"purpose": "Header, footer, screenshot ring.",
"tonalRamp": [
"#2b1b12",
"#4f3221",
Expand All @@ -280,7 +280,7 @@
"role": "secondary",
"displayName": "Walnut Front",
"canonical": "#5d3c28",
"purpose": "Drawer fronts, walnut plates, goods medallions, nav hover.",
"purpose": "Walnut plates, nav hover.",
"tonalRamp": [
"#2b1c12",
"#4e3322",
Expand Down Expand Up @@ -312,7 +312,7 @@
"role": "secondary",
"displayName": "Walnut Edge",
"canonical": "#2e1c12",
"purpose": "Inset edges of cabinet and drawers; cabinet feet.",
"purpose": "Kept as a token; nothing on the site draws with it now.",
"tonalRamp": [
"#2c1b11",
"#513120",
Expand Down Expand Up @@ -452,7 +452,7 @@
},
"label": {
"displayName": "Label",
"purpose": "Buttons, nav, holder names and counts, crest, leader and dimension figures, pills, toc cards. Tabular figures."
"purpose": "Buttons, nav, pills, toc cards. Tabular figures."
},
"lead": {
"displayName": "Lead",
Expand All @@ -472,12 +472,6 @@
}
},
"materials": [
{
"name": "walnut",
"file": "docs/assets/textures/walnut.webp",
"size": "720x180",
"use": "background-size 720px auto; tiles both ways; offset on the mini cabinets' drawers so they don't repeat the carcass grain; fallback #3a2416 (carcass) / #5d3c28 (drawer)."
},
{
"name": "kraft",
"file": "docs/assets/textures/kraft.webp",
Expand Down Expand Up @@ -505,7 +499,7 @@
{
"name": "generator",
"file": "docs/assets/textures/make_textures.py",
"use": "numpy + Pillow, fixed seed 1200, no source images, no generative model."
"use": "numpy + Pillow, fixed seed 1200, no source images, no generative model. It still draws the old walnut grain, unsaved, so the other textures' random numbers stay the same."
}
],
"shadows": [
Expand All @@ -514,11 +508,6 @@
"value": "0 1px 0 rgba(20,14,8,.35), 0 12px 22px -14px rgba(20,14,8,.7)",
"purpose": "Screenshots in their walnut and brass frame. Night: 0 1px 0 rgba(0,0,0,.55), 0 14px 24px -14px rgba(0,0,0,.9)."
},
{
"name": "carcass-wash",
"value": "inset 0 0 0 2px #2e1c12, inset 0 0 0 999px rgba(28,16,8,.38)",
"purpose": "The scale folio's mini cabinets: edge and darkening wash."
},
{
"name": "plate-lift",
"value": "0 8px 16px -10px rgba(20,14,8,.75)",
Expand Down Expand Up @@ -579,16 +568,12 @@
"docs/assets/demo.js",
"docs/assets/hero-panel.js"
],
"note": "Reproduces the mod's panel in the game's colours, frames and Noto Sans; reads only --ink, --muted, --edge and --orange from the site. The hero shows its top (title, summary, cards) with the same classes. Not site style: don't reuse it elsewhere or restyle it."
"note": "Reproduces the mod's panel in the game's colours, frames and Noto Sans; reads only --ink, --muted, --edge and --orange from the site. The hero and the three sizes show its top (title, summary, cards) with the same classes. Not site style: don't reuse it elsewhere or restyle it."
}
],
"browserChrome": {
"theme-color": "#16231c",
"purpose": "<meta name=\"theme-color\" content=\"#16231c\"> on every page, one value for both modes (a green-black near the night ground); not a palette token."
},
"carcassFill": {
"value": "#3a2416",
"purpose": "The fill under the walnut texture on the scale folio mini cabinets (.mini-cab); their drawers use walnut-2 #5d3c28."
}
},
"components": [
Expand Down Expand Up @@ -667,9 +652,9 @@
],
"narrative": {
"northStar": "The Apothecary Drawer Cabinet",
"overview": "The site is a walnut cabinet standing against a painted wall: walnut header and footer, brass plates, kraft cards, brass cup pulls on every accordion, and the goods keep the game's own icons. The rules section draws the same share at three capacities at true scale, as mini cabinets whose drawers are shares, with a leader line and a dimension bracket, like a measured folio drawing. The mod itself is never drawn in wood: the hero shows the top of the mod's real Storage Allocation panel, in the game's look, redrawn with the mod's own rounding.\n\nMaterials are real and made, not faked. Walnut, brass and kraft are procedural textures (`docs/assets/textures/make_textures.py`, fixed seed, no source images, no generative model). Walnut tiles so a drawer of any height keeps its grain, the brass label holder is a nine-slice border image, and the pull is one image used on every accordion. CSS supplies only edge lines, recesses and cast shadows over those textures. The wall behind the cabinet is plain paint: sage limewash by day, deep verdigris by lamplight. Walnut, brass and kraft keep their values in both modes, because they are materials, not themes.\n\nDensity is calm and reading-first. Type is split by job. Alegreya SC, engraved brass-label small caps, names things: the wordmark, headings, labels, buttons, counts. The system face carries every sentence. The in-game panel replica (`game-panel.css`, `demo.js`) is a contained exception. It reproduces the mod's panel in the game's own look and is not part of this system.",
"overview": "The site is a walnut cabinet standing against a painted wall: walnut header and footer, brass plates, kraft cards, brass cup pulls on every accordion, and the goods keep the game's own icons. The rules section shows the same share in three sizes of warehouse, as three small copies of the mod's own panel. The mod itself is never drawn in wood: the hero shows the top of the mod's real Storage Allocation panel, in the game's look, redrawn with the mod's own rounding.\n\nMaterials are real and made, not faked. Walnut, brass and kraft are procedural textures (`docs/assets/textures/make_textures.py`, fixed seed, no source images, no generative model). Kraft tiles, the brass label holder is a nine-slice border image, and the pull is one image used on every accordion. CSS supplies only edge lines, recesses and cast shadows over those textures. The wall behind the cabinet is plain paint: sage limewash by day, deep verdigris by lamplight. Walnut, brass and kraft keep their values in both modes, because they are materials, not themes.\n\nDensity is calm and reading-first. Type is split by job. Alegreya SC, engraved brass-label small caps, names things: the wordmark, headings, labels, buttons, counts. The system face carries every sentence. The in-game panel replica (`game-panel.css`, `demo.js`) is a contained exception. It reproduces the mod's panel in the game's own look and is not part of this system.",
"keyCharacteristics": [
"One metaphor for the site: capacity is a cabinet, a share is a drawer's height. The mod's own UI is always shown as it looks in game.",
"One setting for the site: an apothecary cabinet's materials (walnut, brass, kraft). The mod's own UI is always shown as it looks in game.",
"Produced material textures (walnut, brass, kraft), tiled or nine-sliced, never imitated with gradients.",
"Small-caps display face for names and figures; system sans for prose.",
"Exact numbers in tabular figures.",
Expand Down Expand Up @@ -713,7 +698,7 @@
}
],
"dos": [
"Do take walnut, brass and kraft from the produced textures in `docs/assets/textures/` (regenerate with `make_textures.py`). Tile walnut at 720px, kraft at 200px, and fit brass to the element's height.",
"Do take walnut, brass and kraft from the produced textures in `docs/assets/textures/` (regenerate with `make_textures.py`). Tile kraft at 200px, and fit brass to the element's height.",
"Do frame kraft cards with the brass holder nine-slice (`border-image: url(textures/holder.png) 16`) and `background-clip: padding-box`. Scale the border width to the element (7–11px vertical).",
"Do use the brass cup pull as the one \"this opens\" sign, on accordions.",
"Do set every count, capacity and percentage in tabular figures, and draw proportions at true share.",
Expand Down
2 changes: 2 additions & 0 deletions .impeccable/surfaces/docs-index-html.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,6 @@ FIRST VIEWPORT: Left, the name in brass-label lettering, the one-line pitch, the

FORM: Apothecary Drawer Cabinet, candidate 7 of 7 (seed 4fa92011). Raises: exact counts in fixed-width figures (nixie counter); the same split drawn at the same scale for 30, 200 and 1,200 capacity (botanical folio); rules annotated as measured callouts, "exactly 100%" (uniform-code annotations). Signature interaction: the split buttons redraw the hero panel with counts that follow the mod's rounding (split.js).

AMENDMENT (2026-09-24, Kyler): no picture of the mod is drawn in wood. The hero and the three sizes (30, 200, 1200) are copies of the top of the mod's in-game panel; the cabinet lives on only as the site's materials (walnut header and footer, brass plates, kraft cards, brass pulls on accordions).

FINISH: unreviewed and undocumented is unfinished; this build ends with the finish review, the verdict, DESIGN.md, and every shipping raster carrying its provenance
7 changes: 3 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,14 @@ text and the player docs follows these rules.
- Tokens live in `docs/assets/style.css` `:root`; night values in `@media (prefers-color-scheme: dark)`. Day / night:
ground `--bg` #dfe4da / #18221f, tint `--bg-deep` #d0d8cc / #111916, `--paper` #eef1ea / #1f2b27, `--ink` #1d2320 /
#ece6d8, `--muted` #4c5751 / #b8b09d, `--line` #aab5ab / #34423c, `--link` #1f5a50 / #8fd0c2, `--orange` #b35c10 /
#ffa60f. Fixed: walnut #4a2f1f, #5d3c28, #6e4a32, edge #2e1c12, carcass fill #3a2416; brass #c19a4b, hi #e0c27e,
#ffa60f. Fixed: walnut #4a2f1f, #5d3c28, #6e4a32, edge #2e1c12; brass #c19a4b, hi #e0c27e,
deep #8a6a2c; kraft #d8c29b. Two literals with no custom property: pale kraft `#d9ccb3` (footer text) and every
page's `<meta name="theme-color" content="#16231c">` (one value for both modes). The legacy classes
`panel--blue` / `panel--maroon` in install and troubleshooting just map to paper; leave them.
- Fonts: Alegreya SC 500 and 700, self-hosted in `docs/assets/fonts/` (`OFL-Alegreya.txt`); body is the system-ui
stack; mono is ui-monospace. Noto Sans 400/700 (`OFL.txt`) belongs to the panel replica only. No other webfonts,
nothing from a CDN at runtime.
- Textures: `walnut.webp` (tile 720px), `kraft.webp` (tile 200px), `brass.webp` (fit to height), `holder.png`
- Textures: `kraft.webp` (tile 200px), `brass.webp` (fit to height), `holder.png`
(nine-slice, `border-image: url(textures/holder.png) 16`), `pull.png` (the one "this opens" sign, on drawers and
accordions), made by `docs/assets/textures/make_textures.py` (numpy + Pillow, seed 1200; run it from that folder).
Change the script and re-run it rather than editing images. Every shipping raster carries provenance (a
Expand Down Expand Up @@ -161,8 +161,7 @@ When asked to "update the website for the latest release, consistent with the de
6. Optional but recommended: run the detector,
`"$(ls -d ~/.claude/plugins/cache/impeccable/impeccable/*/skills/impeccable | tail -1)/scripts/impeccable" detect --json docs`
(parse from the first `[`). Known false positives: cramped-padding on the four main pages and flat-type-hierarchy on
404 (ignored in config); `side-tab` on the 3px walnut rules (`.page-head`, `.rules li`) and the scale folio's leader
line; `layout-transition` on the replica's fill bar; Noto Sans,
404 (ignored in config); `side-tab` on the 3px walnut rules (`.page-head`, `.rules li`); `layout-transition` on the replica's fill bar; Noto Sans,
off-ramp sizes and colours in the replica; `flat-type-hierarchy` from footer headings;
`gpt-thin-border-wide-shadow` on mounted frames and plates; the "could not read /MixedStorage/assets/style.css" note.
7. If the look changed (a new component or layout), update DESIGN.md and `.impeccable/design.json`.
Expand Down
Loading