Apply the Architectural Minimalist design system to web projects. Features warm organic colors (sage, terracotta, stone), sharp geometry (rounded-none), DM Sans and Tenor Sans typography, and full light/dark mode support with Tailwind CSS. Use when the user asks to style a web project, mentions design systems, theming, visual styling, color palette, typography, dark mode, or when a project needs a cohesive visual identity applied from scratch.
Apply the Architectural Minimalist design system to the current project. Warm organic palette, sharp architectural geometry, precise yet inviting.
Reference implementation: https://pinch-pleat-simulator-731832823064.us-west1.run.app/
rounded-none on all buttons, inputs, cards, containers. Exception: icon-only buttons use rounded-full. Strip all rounded-sm, rounded-md, rounded-lg, rounded-xl, rounded-2xl, rounded-full (except icon buttons) from the entire project.border border-border). Shadows only on overlaying elements (sidebar, floating controls). Remove all , , , from cards, sections, and containers.shadow-smshadow-mdshadow-lgshadow-xl#F9F8F6) and surface (#FFFFFF) should cover 85%+ of the visible area. Primary (sage) and accent (terracotta) are for buttons, links, active states, slider thumbs, and micro-accents only — never as large background fills for headers, banners, hero sections, or cards.bg-background or bg-surface with a border-b border-border, not a colored fill.blue-500, indigo-600, etc.), gray (gray-*), and other cool-toned defaults with the design system tokens.rounded-none (except icon-only buttons which use rounded-full). If the project uses a component library with rounded defaults, override them globally.bg-primary or bg-accent on containers, sections, or page regions. These colors are strictly for interactive elements (buttons, links, active indicators, slider thumbs).:root / .dark variables must be defined so that all theme colors resolve correctly.<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=Tenor+Sans&display=swap" rel="stylesheet">
:root {
--c-bg: #F9F8F6; --c-surface: #FFFFFF;
--c-secondary: #EBE9E4; --c-secondary-hover: #DDD9D2;
--c-primary: #7C9082; --c-primary-hover: #627367;
--c-accent: #C67D63; --c-accent-hover: #A8654F;
--c-border: #D4D4D4;
--c-text-main: #2D2D2D; --c-text-muted: #666666; --c-text-light: #9CA3AF;
}
.dark {
--c-bg: #1A1918; --c-surface: #2A2928;
--c-secondary: #2A2928; --c-secondary-hover: #353432;
--c-primary: #8CA092; --c-primary-hover: #7C9082;
--c-accent: #C67D63; --c-accent-hover: #B56D53;
--c-border: #3E3C3A;
--c-text-main: #ECEBE9; --c-text-muted: #A6A5A2; --c-text-light: #8A8986;
}
Apply to body: margin: 0; font-family: 'DM Sans', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background-color: var(--c-bg); color: var(--c-text-main); transition: background-color 0.3s ease, color 0.3s ease;
export default {
darkMode: 'class',
theme: {
extend: {
colors: {
background: 'var(--c-bg)', surface: 'var(--c-surface)',
primary: 'var(--c-primary)', primaryHover: 'var(--c-primary-hover)',
accent: 'var(--c-accent)', accentHover: 'var(--c-accent-hover)',
secondary: 'var(--c-secondary)', secondaryHover: 'var(--c-secondary-hover)',
border: 'var(--c-border)',
text: { main: 'var(--c-text-main)', muted: 'var(--c-text-muted)', light: 'var(--c-text-light)' },
},
fontFamily: { sans: ['"DM Sans"', 'sans-serif'], header: ['"Tenor Sans"', 'sans-serif'] },
},
},
}
Library: Lucide (lucide-react for React, lucide for vanilla JS). All icons in this design system come from Lucide. Do not mix icon libraries.
Critical sizing rule — Lucide defaults to 24px, you must override:
| Context | Class | Size |
|---|---|---|
| Sidebar header icon buttons | w-5 h-5 | 20px |
Floating action buttons (w-12 h-12) | w-5 h-5 | 20px |
| Inline body icons | w-4 h-4 | 16px |
All icon buttons use a single consistent icon size (w-5 h-5). The button's padding and dimensions control the hit target, not the icon size.
Icon button styling: Sidebar header icon buttons use p-2.5 rounded-full text-text-muted hover:text-primary hover:bg-secondaryHover bg-transparent transition-all duration-200. The hover:text-primary (sage green) is mandatory — do NOT use hover:text-text-main or other hover colors. The w-5 h-5 icon size, p-2.5 padding, and items-start on the parent flex container are a tuned set for optical alignment — the icon centers align with the title's cap-height. Changing any one value breaks the alignment. See references/components.md → Sidebar Header for the full explanation.
You MUST explicitly set className="w-5 h-5" (or size={20}) on every Lucide icon component. Lucide React defaults to 24px — omitting the size class produces oversized icons that break sidebar header alignment. This is the most common styling mistake when applying this design system.
Specific icons:
| Function | Lucide Icon |
|---|---|
| Collapse sidebar | Minimize2 |
| Expand sidebar | Maximize2 |
| Reset / undo | RotateCcw |
| Auto-adjust / magic | Wand2 |
| Dark mode (day) | Sun |
| Dark mode (night) | Moon |
| Section accordion chevron | ChevronDown (rotates 180° when open) |
How to pick icons: Choose icons that are simple outlines (not filled) and represent the action, not the object. Prefer universally understood metaphors (chevron for expand, X for close). Browse lucide.dev/icons and pick the simplest option — if two icons are similar, choose the one with fewer strokes.
| Role | Tailwind Classes | Min Size |
|---|---|---|
| Page title | text-[26px] font-header font-medium text-text-main leading-tight mb-2 | 26px |
| Section heading | font-header text-[15px] uppercase tracking-[0.1em] text-text-main (active: text-primary) | 15px |
| Body text | font-sans text-sm to text-base text-text-main | 14px (text-sm) |
| Micro-label | text-[11px] font-bold uppercase tracking-[0.15em] text-text-muted mb-1.5 block | 11px |
| Helper text | text-[12px] text-text-muted mt-2 leading-relaxed | 12px |
| Tip text | text-sm text-text-light leading-snug | 14px |
| Inline action | text-[10px] font-bold uppercase tracking-widest text-accent | 10px |
| Computed value | font-mono font-medium text-text-main (uses body size context) | 14px |
Minimum font size rules: No text in the UI should be smaller than 10px. The 10px size is reserved exclusively for inline action buttons (e.g., "Set to Floor"). Labels, helper text, and all readable content must be 11px or larger. Micro-labels at 11px are the smallest readable content tier — they compensate with font-bold and uppercase tracking-[0.15em].
The design system provides these component types. See references/components.md for full HTML/CSS patterns, exact classes, and code examples.
Buttons: Primary (sage fill), Secondary (surface + border), Accent (terracotta fill), Ghost (transparent), Icon (only exception to rounded-none — uses rounded-full, must have title attribute), Floating Action (circular w-12 h-12 rounded-full shadow-lg, positioned in main content area, must have title attribute).
Form controls: Input (sharp corners, border-based, font-mono for number inputs), Toggle Group (segmented control — active item elevated with surface bg + shadow, no colored fills), Slider (terracotta thumb, var(--c-surface) thumb border for dark mode), Control Input (compound: labeled number input + synced range slider + optional suffix/tip/action).
Dropdown (Select Menu): Custom select replacement with sharp corners, border-based trigger styled like an input, ChevronDown indicator (w-4 h-4, rotates 180° when open), overlay options panel (shadow-lg), selected state uses text-primary bg-primary/5. Supports grouped options with micro-label section headings.
Containers: Card (bg-surface border border-border rounded-none), Computed Value display (bg-secondary/30 with mono value).
Unit suffix on number inputs: Show for measurement fields (in, %, px), omit for dimensionless counts.
Apps that overlay measurements or dimension lines on a canvas/SVG must use the terracotta accent color (#C67D63) for lines, end caps, and value labels — never default black. See references/components.md for the full SVG pattern and React helper.
The design system supports two primary layouts. See references/layout.md for full HTML patterns, class strings, and interaction details.
Sidebar app shell — The primary layout. Collapsible sidebar (w-[400px], bg-background, shadow-2xl) on the left with app title + icon buttons in the header, accordion sections in the body. Main content area on the right (flex-1, bg-secondary) with floating action buttons (top-right) and optional floating bottom bar. Sidebar collapse/expand animated with transition-all duration-300 ease-in-out. Canvas/content must re-zoom when sidebar opens/closes.
Key sidebar rules:
font-header titles, ChevronDown rotation, grid-row animationMinimize2 in sidebar header; expand: Maximize2 floating button in main contentHeader-based layout — Alternative for non-sidebar apps. bg-background border-b border-border — neutral background, never colored fill.
Other patterns: Card grid (border-based, no shadows), Floating bottom bar (backdrop-blur, border-t, shadow).
Adapting to any layout: The visual identity comes from the palette, typography, sharp geometry, and border-based structure — not from a specific layout. Keep warm neutral background dominant, use borders instead of shadows for structure, and restrict primary/accent to interactive elements.
selection:bg-accent/20 on outermost containerscrollbar-thin scrollbar-thumb-border scrollbar-track-transparenttransition-colors duration-300 on all color-changing elementsdark class on root container — all colors update via CSS custom properties. Provide a circular floating action button (w-12 h-12 rounded-full shadow-lg) with sun icon (light mode) / moon icon (dark mode) in the main content area's top-right corner.blue-, gray-, indigo-, #3B82F6, etc.) and replace with design system tokens.rounded-* classes (except rounded-full on icon buttons). Add rounded-none explicitly where needed.shadow-* from cards, panels, and non-overlay containers. Add border border-border instead. Keep shadows on overlay elements: sidebar (shadow-2xl), floating action buttons (shadow-lg), floating bottom bar, and expand button (shadow-lg). These are overlaying elements — shadows are correct on them.bg-blue-*, bg-primary, bg-accent, bg-green-*, etc.), replace with bg-background border-b border-border.When applying this design system to a project, you will encounter UI patterns not yet covered (e.g. toast notifications, data tables, modals, progress bars, badges). When this happens:
references/components.mdreferences/layout.mdSKILL.md)The design system grows through real-world usage. Every novel pattern is an opportunity to make the system more complete.
Foundations:
:root and .dark) are definedGeometry and Structure:
rounded-none; icon buttons use rounded-fullrounded-sm through rounded-2xl classes remain in the project (except icon buttons)border border-border, not shadow-*Color Distribution:
bg-primary or bg-accent as a background fillIcons:
lucide-react or lucide)w-5 h-5 icon size regardless of button dimensionshover:text-primary hover:bg-secondaryHover, NOT hover:text-text-mainMinimize2; expand uses Maximize2ChevronDown with rotate-180 when openSun (day) / Moon (night) from LucideLayout and Interaction:
flex justify-between items-start — title and icon buttons top-alignedtransition-all duration-300 ease-in-out; circular expand button (Maximize2) appears when collapsedoverflow-hidden — no transient horizontal scrollbar during sidebar transitiontransitionend)font-header) titles, border-b border-border dividers, and chevron rotationtext-primary on hover (both title and chevron, via group-hover:text-primary)grid transition-all duration-300 ease-in-out between grid-rows-[1fr] and grid-rows-[0fr]w-full) — inputs, toggles, sliders stretch to fill the sidebar content areaflex-1 flex flex-col h-full relative; canvas region uses flex-1 bg-secondary relative overflow-hidden to fill all available spacetitle attribute (native browser tooltip)w-12 h-12 rounded-full shadow-lg) with sun/moon iconabsolute top-4 right-4 z-10 in main contentSVG / Canvas Annotations:
#C67D63), not default blackTypography and Details:
text-[11px] font-bold uppercase tracking-[0.15em] text-text-mutedfont-monovar(--c-surface), not hardcoded whitetext-primary; selection uses selection:bg-accent/20