···22name: Polymodel
33description: Blueprint/technical-drawing design system for an AT Protocol model-sharing app.
44colors:
55- base: "#f5f1e8"
66- surface: "#fffdf7"
77- overlay: "#e8edf0"
88- ink: "#17252f"
99- emphasis: "#0c1f2c"
1010- subtle: "#445461"
1111- muted: "#6a747b"
1212- primary: "#1f6d8a"
1313- secondary: "#5a8797"
1414- tertiary: "#0f4159"
1515- action: "#c5652a"
1616- link: "#a24d1f"
1717- border: "#a9b8bf"
1818- highlight: "#d8e5e9"
1919- error: "#a13f32"
2020- warning: "#b36a16"
2121- success: "#2d7358"
55+ base: "oklab(0.980696 -0.001930 -0.004746)"
66+ surface: "oklab(1.000000 0.000000 0.000000)"
77+ overlay: "oklab(0.940351 -0.008108 -0.017910)"
88+ ink: "oklab(0.252380 -0.009714 -0.034170)"
99+ emphasis: "oklab(0.218461 -0.012406 -0.039864)"
1010+ subtle: "oklab(0.436442 -0.012368 -0.044729)"
1111+ muted: "oklab(0.550853 -0.008208 -0.033125)"
1212+ primary: "oklab(0.479428 -0.035191 -0.111636)"
1313+ secondary: "oklab(0.613677 -0.025079 -0.065437)"
1414+ tertiary: "oklab(0.367809 -0.026626 -0.097956)"
1515+ action: "oklab(0.516800 -0.033898 -0.129915)"
1616+ link: "oklab(0.485173 -0.035448 -0.128511)"
1717+ border: "oklab(0.776085 -0.009713 -0.026566)"
1818+ highlight: "oklab(0.902143 -0.011298 -0.030437)"
1919+ error: "oklab(0.499559 0.115162 0.066600)"
2020+ warning: "oklab(0.528919 0.016251 0.103026)"
2121+ success: "oklab(0.503030 -0.080259 0.021719)"
2222typography:
2323 heading:
2424 fontFamily: "Proza Libre, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
···76767777**Creative North Star: "The Drafting Table"**
78787979-Polymodel looks like a set of well-kept engineering blueprints rendered for the web. The page is drafting paper; content sits on crisp bordered panels with near-square corners; technical metadata is set in monospace the way a drawing carries its measurements; empty media reads as a faint drafting grid awaiting geometry. The teal primary is drawing-ink blue; a single warm orange is the one action accent, used like a redline. It is a **product** surface: design serves the task of browsing, judging, downloading, and publishing printable things. The tool should disappear into the work.
7979+Polymodel looks like a set of well-kept engineering blueprints rendered for the web. The page is cool drafting stock; content sits on crisp bordered panels with near-square corners; technical metadata is set in monospace the way a drawing carries its measurements; empty media reads as a faint drafting grid awaiting geometry. The primary is drawing-ink blue; the action accent is a stronger blue, used like the one marked-up instruction on the sheet. It is a **product** surface: design serves the task of browsing, judging, downloading, and publishing printable things. The tool should disappear into the work.
80808181-This system explicitly rejects the flat-SaaS dashboard look (rounded cards everywhere, purple/blue gradients, soft shadows, Inter-for-everything) and the reflexive dark-terminal "developer tool" aesthetic. Warmth comes from the paper tone, the humanist type, and the orange accent — not from decoration. Familiarity is a feature: a maker fluent in Printables should trust every control on sight.
8181+This system explicitly rejects the flat-SaaS dashboard look (rounded cards everywhere, purple/blue gradients, soft shadows, Inter-for-everything) and the reflexive dark-terminal "developer tool" aesthetic. Warmth is minimal and functional — mostly semantic warning/error states — while the product identity comes from cool stock, blue ink, humanist type, and crisp linework. Familiarity is a feature: a maker fluent in Printables should trust every control on sight.
82828383**Key Characteristics:**
8484-- Drafting-paper base, drawing-ink teal, single warm-orange action accent.
8484+- Cool drafting-stock base, drawing-ink blue, single stronger-blue action accent.
8585- Near-square corners (2px panels, 0px controls); crisp 1px borders over shadow.
8686- Monospace for all technical metadata (dimensions, formats, DIDs/handles, counts, status).
8787- Drafting-grid placeholders instead of gray boxes.
···89899090## 2. Colors
91919292-A restrained palette: a tinted drafting-paper neutral ramp, one drawing-ink teal that carries structure, and a single warm orange reserved for action. Every token has a dark-scheme value (see `assets/styling/theme.css`; tonal/dark values live in the `.impeccable/design.json` sidecar).
9292+A restrained palette: a cool drafting-stock neutral ramp, one drawing-ink blue that carries structure, and a single stronger blue reserved for action. Every token has a dark-scheme value (see `assets/styling/theme.css`; tonal/dark values live in the `.impeccable/design.json` sidecar).
93939494### Primary
9595-- **Drawing-Ink Teal** (#1f6d8a): The structural brand color — active tabs, selected state, focus rings, section emphasis, grid lines (at low alpha). Carries identity without being the action color.
9595+- **Drawing-Ink Blue** (`oklab(0.479428 -0.035191 -0.111636)`): The structural brand color — active tabs, selected state, focus rings, section emphasis, grid lines (at low alpha). Carries identity without being the action color.
96969797### Secondary
9898-- **Slate Teal** (#5a8797): Supporting teal for secondary controls and quieter structural accents.
9999-- **Deep Teal** (#0f4159): High-emphasis teal for hover ink and strong labels against light surfaces.
9898+- **Slate Blue** (`oklab(0.613677 -0.025079 -0.065437)`): Supporting blue for secondary controls and quieter structural accents.
9999+- **Deep Blueprint Blue** (`oklab(0.367809 -0.026626 -0.097956)`): High-emphasis blue for hover ink and strong labels against light surfaces.
100100101101### Tertiary
102102-- **Redline Orange** (#c5652a): The single warm action accent — primary buttons and the one element that should pull the eye to "do this." **Action only, never decoration.**
103103-- **Rust Link** (#a24d1f): Inline text links, distinct from the action button so links don't read as buttons.
102102+- **Action Blue** (`oklab(0.516800 -0.033898 -0.129915)`): The single action accent — primary buttons and the one element that should pull the eye to "do this." **Action only, never decoration.**
103103+- **Link Blue** (`oklab(0.485173 -0.035448 -0.128511)`): Inline text links, distinct from the action button so links don't read as buttons.
104104105105### Neutral
106106-- **Drafting Paper** (#f5f1e8): The body background. A warm paper tone tinted toward the brand — the blueprint substrate, not a generic off-white.
107107-- **Sheet** (#fffdf7): Raised panel/card/surface background.
108108-- **Blueprint Overlay** (#e8edf0): Cool inset background for media wells and grid placeholders.
109109-- **Ink** (#17252f): Body text.
110110-- **Emphasis** (#0c1f2c) / **Subtle** (#445461) / **Muted** (#6a747b): The text-emphasis ramp; pick by importance, never drop body to muted-gray on the paper base.
111111-- **Border** (#a9b8bf): The 1px line on every panel, control, and pill.
112112-- **Highlight** (#d8e5e9): Selection/skeleton shimmer tint.
106106+- **Drafting Stock** (`oklab(0.980696 -0.001930 -0.004746)`): The body background. A cool blue-white substrate — blueprint-adjacent without drifting into warm cream or flat SaaS white.
107107+- **Sheet** (`oklab(1.000000 0.000000 0.000000)`): Raised panel/card/surface background.
108108+- **Blueprint Overlay** (`oklab(0.940351 -0.008108 -0.017910)`): Cool inset background for media wells and grid placeholders.
109109+- **Ink** (`oklab(0.252380 -0.009714 -0.034170)`): Body text.
110110+- **Emphasis** (`oklab(0.218461 -0.012406 -0.039864)`) / **Subtle** (`oklab(0.436442 -0.012368 -0.044729)`) / **Muted** (`oklab(0.550853 -0.008208 -0.033125)`): The text-emphasis ramp; pick by importance, never drop body to low-contrast gray on the stock base.
111111+- **Border** (`oklab(0.776085 -0.009713 -0.026566)`): The 1px line on every panel, control, and pill.
112112+- **Highlight** (`oklab(0.902143 -0.011298 -0.030437)`): Selection/skeleton shimmer tint.
113113114114### Status
115115-- **Error** (#a13f32) / **Warning** (#b36a16) / **Success** (#2d7358): Semantic state only, paired with shape/label, never color-alone.
115115+- **Error** (`oklab(0.499559 0.115162 0.066600)`) / **Warning** (`oklab(0.528919 0.016251 0.103026)`) / **Success** (`oklab(0.503030 -0.080259 0.021719)`): Semantic state only, paired with shape/label, never color-alone.
116116117117### Named Rules
118118-**The One Redline Rule.** Redline Orange (#c5652a) is the action accent. It marks the single primary action in a view and nothing decorative. If two things on a screen are orange, one is wrong.
118118+**The One Action Rule.** Action Blue (`oklab(0.516800 -0.033898 -0.129915)`) is the action accent. It marks the single primary action in a view and nothing decorative. If two elements compete as primary action, one is wrong.
119119120120-**The Paper-Is-Identity Rule.** The body background is drafting paper (#f5f1e8), a deliberate tinted neutral — not the AI warm-cream default. Never rename it `--paper`/`--cream`/`--sand` and never swap it for a flat #fff/off-white; the paper tone carries the blueprint metaphor.
120120+**The Stock-Is-Identity Rule.** The body background is cool drafting stock (`oklab(0.980696 -0.001930 -0.004746)`), a deliberate blue-white neutral — not warm cream and not flat SaaS white. Never rename it `--paper`/`--cream`/`--sand`; the cool stock tone carries the blueprint metaphor.
121121122122-**The Ink-Not-Gray Rule.** Body text reaches for the ink end of the ramp. Light-gray "for elegance" on the tinted paper is the contrast trap; when a value is close to 4.5:1, move toward Ink/Emphasis, not Muted.
122122+**The Ink-Not-Gray Rule.** Body text reaches for the ink end of the ramp. Light-gray "for elegance" on the cool stock is the contrast trap; when a value is close to 4.5:1, move toward Ink/Emphasis, not Muted.
123123124124## 3. Typography
125125···127127**Body Font:** Proza Libre (with system-ui, -apple-system, Segoe UI, sans-serif)
128128**Label/Mono Font:** Ioskeley Mono (with IBM Plex Mono, Consolas, monospace)
129129130130-**Character:** One humanist sans (Proza Libre) carries headings, body, labels, and buttons — warm and legible, the workshop-manual voice. A distinctive monospace (Ioskeley Mono) carries everything technical, like dimensions stamped on a drawing. The contrast axis is sans-vs-mono, not two near-identical sans faces.
130130+**Character:** One humanist sans (Proza Libre) carries headings, body, labels, and buttons — legible and workshop-manual direct. A distinctive monospace (Ioskeley Mono) carries everything technical, like dimensions stamped on a drawing. The contrast axis is sans-vs-mono, not two near-identical sans faces.
131131132132### Hierarchy
133133- **Heading** (Proza Libre, 600, ~1rem–1.18rem, line-height 1.3): Card titles, section and page headings. Fixed rem scale, tight ratio.
···144144145145## 4. Elevation
146146147147-Flat by default. Depth comes from crisp 1px borders and tonal layering (paper → sheet → overlay), not shadows. The only shadow in the system is a 1px hairline under panels that reads as a sheet of paper lifting off the table, not a floating SaaS card.
147147+Flat by default. Depth comes from crisp 1px borders and tonal layering (stock → sheet → overlay), not shadows. The only shadow in the system is a 1px hairline under panels that reads as a sheet lifting off the table, not a floating SaaS card.
148148149149### Shadow Vocabulary
150150- **Paper hairline** (`box-shadow: 0 1px 0 color-mix(in srgb, var(--color-text) 8%, transparent)`): The single resting elevation on cards/panels. Borders do the structural work; this only seats the sheet.
···159159160160### Buttons
161161- **Shape:** Near-square (2px radius); base controls render at 0px corners. Never round to pill (except deliberate tags) or 12px+.
162162-- **Default:** Sheet background, 1px border, ink text. Hover shifts border to teal and text to deep teal.
163163-- **Primary:** Redline Orange fill, paper-colored text — the one action. Hover brightens slightly (`filter: brightness(1.04)`), no transform bounce.
164164-- **Secondary / Ghost:** Teal border + deep-teal text (secondary); transparent background (ghost).
162162+- **Default:** Sheet background, 1px border, ink text. Hover shifts border to blue and text to deep blueprint blue.
163163+- **Primary:** Action Blue fill, stock-coloured text — the one action. Hover brightens slightly (`filter: brightness(1.04)`), no transform bounce.
164164+- **Secondary / Ghost:** Blue border + deep-blue text (secondary); transparent background (ghost).
165165166166### Chips / Tabs / Status pills
167167- **Style:** 1px border, near-square, mono text, ~0.72rem. Transparent at rest.
168168-- **State:** Active tab / selected pill take a teal border, deep-teal text, and an 8% teal wash. Muted and error variants recolor the border + text + faint wash to match the semantic role.
168168+- **State:** Active tab / selected pill take a blue border, deep-blue text, and an 8% blue wash. Muted and error variants recolor the border + text + faint wash to match the semantic role.
169169- **Pill radius:** `--radius-pill` (999px) is reserved for genuinely round badges — the circular part-index marker and deliberate tag chips — never for cards, inputs, or buttons.
170170171171### Cards / Containers
172172- **Corner Style:** 2px (panel radius).
173173-- **Background:** Sheet (#fffdf7) over the paper base.
174174-- **Border:** 1px Border (#a9b8bf) — the defining line.
173173+- **Background:** Sheet (`oklab(1.000000 0.000000 0.000000)`) over the stock base.
174174+- **Border:** 1px Border (`oklab(0.776085 -0.009713 -0.026566)`) — the defining line.
175175- **Shadow Strategy:** Paper hairline only (see Elevation).
176176- **Internal Padding:** ~1rem; metadata rows in mono, subordinate to title/creator.
177177- **Media:** Drafting-grid background (20px grid, grid-line color) for previews and placeholders — never a flat gray box; missing media draws nested registration rectangles, not fake content.
178178179179### Inputs / Fields
180180-- **Style:** Paper-base fill, 1px border, 2px radius, body sans.
181181-- **Focus:** Border shifts to teal with a 2px translucent teal outline (`outline: 2px solid color-mix(... primary 25% ...)`). Focus is always visible.
180180+- **Style:** Stock-base fill, 1px border, 2px radius, body sans.
181181+- **Focus:** Border shifts to blue with a 2px translucent blue outline (`outline: 2px solid color-mix(... primary 25% ...)`). Focus is always visible.
182182- **Error / Disabled:** Error recolors border+text to Error and adds a faint wash; disabled drops contrast and removes the pointer affordance.
183183184184### Navigation
···198198- **Do** keep motion to 150–250ms, ease-out, for state/feedback/loading/viewer-readiness only, with a `prefers-reduced-motion` fallback.
199199200200### Don't:
201201-- **Don't** swap the drafting-paper base for a flat off-white, or rename it `--paper`/`--cream`/`--sand`.
201201+- **Don't** swap the cool drafting-stock base for warm cream or a flat off-white, or rename it `--paper`/`--cream`/`--sand`.
202202- **Don't** round cards/inputs to 12px+ or reach for full pills outside tags; the near-square corner is the identity.
203203-- **Don't** use more than one Redline-Orange action per view, or use the action color for decoration.
203203+- **Don't** use more than one primary action per view, or use the action color for decoration.
204204- **Don't** use gradient text, glassmorphism-by-default, hero-metric templates, identical icon-card grids, or an uppercase eyebrow above every section.
205205- **Don't** pair a 1px border with a wide soft drop shadow (ghost-card), use `border-left` >1px as a colored stripe, or animate `<img>` on hover.
206206-- **Don't** put a display font — or any non-mono face — in technical metadata, or drop body text to muted gray on the paper base.
206206+- **Don't** put a display font — or any non-mono face — in technical metadata, or drop body text to muted gray on the stock base.
207207- **Don't** land on generic flat-SaaS or generic dark-terminal looks; the answer to "what is this" is the blueprint identity.