# ZLEF — Direction Artistique (Design Authority) > The single source of truth for the visual language of every zlef.fr property. > Dark, atmospheric, minimal. Two deep desaturated accents — OLIVE LEAF (#3E4618) > and VINTAGE GRAPE (#4C3B4D) — over near-black. Lightly rounded corners, flat > crisp components (no gradients, no glow). Large, legible type. No light theme, > no web fonts, no blue. When in doubt, import the canonical stylesheet and use > its tokens rather than inventing values. Live guide: https://da.zlef.fr Tokens CSS: https://da.zlef.fr/tokens.css (import this — it IS the system) Machine JSON: https://da.zlef.fr/design.json This file: https://da.zlef.fr/llms.txt ## How to apply (for an LLM building a zlef.fr page or component) 1. Add ``. 2. Set the page background to `var(--zl-bg)` and text to `var(--zl-text)`; use the `.zl-body` helper on `` or `.zl-scope` on a wrapper. 3. Build UI from the component classes below; pull every colour, size, radius and spacing value from a `--zl-*` variable. Never hard-code a hex that isn't a token. 4. Components reference palette-agnostic roles (`--zl-accent*` = primary olive, `--zl-accent2*` = secondary grape). Raw ramps are `--zl-olive*` / `--zl-grape*`. 5. For landing/marketing surfaces, add the shared atmospheric field: `` (it also wires up analytics). Keep content panels opaque enough to stay readable above it. ## Core principles - DARK ONLY. Background is near-black `#06060a`. There is no light theme. - TWO ACCENTS ONLY. Olive leaf `#3E4618` (primary) and vintage grape `#4C3B4D` (secondary). Both deep and desaturated. Everything else is a neutral grey. - LIGHT ROUNDING. Corners are subtle: 3px badges/chips, 5px buttons/inputs, 8px cards. Never pill-shaped UI, never heavily rounded. - FLAT, CRISP COMPONENTS. Solid fills, 1px borders, NO gradients, NO coloured glow. Hover shifts the fill one shade — it never blooms, jumps or scales. - LEGIBLE BY DEFAULT. Body text is 17px and never below 16px. Line-height 1.6. Controls are ≥44px tall. "Never too small, never too big." - SUBTLE MOTION. Ease `cubic-bezier(.22,.61,.36,1)`, 110–360ms, no bounce. Honour `prefers-reduced-motion`. ## Palette Surfaces: bg #06060a · surface-1 #0e0e13 · surface-2 #15151c · surface-3 #1d1d25 Text: #e9eae2 (primary) · #b6b7ad (soft) · #7d7e76 (muted) · #54554f (faint) Olive leaf (primary): deep #2c3212 · base #3e4618 · mid #59642a · soft #9dae50 · bright #bdce74 Vintage grape (2ndary):deep #382b39 · base #4c3b4d · mid #6b5470 · soft #b095b3 · bright #cdb6cf → base fills solid surfaces; soft is the readable text/link tint on dark. Semantic: success #6f9a3a · warning #c79a3e (amber) · danger #c2566a (dusty rose-red) · info #b095b3 (=grape) Lines: rgba(255,255,255,.07) hairline · .13 strong · olive focus ring. Grape rgba(76,59,77,.10) appears ATMOSPHERICALLY ONLY (haze) — never as a UI fill. ## Banned (do NOT do these) - Light / white backgrounds or any light theme. - Blue accents or blue links in UI chrome — use olive instead. (Data-series colours from zl-charts `--zlc-cat-*` are exempt — charts may use their full validated categorical palette.) - Pure `#000000` surfaces — use `#06060a` and the surface ramp. - Full pills and systematically heavy rounding — keep rounding light (3–8px); circles stay circles. - The "AI-generated" aesthetic: gradients on buttons, coloured glows, scale/zoom on hover. Flat, crisp, one-shade hover shift. - Body text below 16px; low-contrast grey-on-grey for primary copy; thin hairline. - Web-font dependencies — use the system sans stack + a monospace for code/data. - Glossy gradients, skeuomorphism, bouncy motion. - Unstyled framework defaults (Bootstrap/Material) that ignore these tokens. ## Typography Sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif Mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace Scale: xs 13 · sm 14.5 · base 17 · lg 19 · xl 22 · 2xl 28 · 3xl clamp(30,4vw,38) · 4xl clamp(40,6vw,56) Weights: 400 normal · 550 medium · 700 bold. Headings: tight tracking -0.02em. Eyebrows/labels: UPPERCASE, 0.14em tracking, olive-soft. ## Spacing / radius / elevation Spacing (4px base): 4 8 12 16 24 32 48 64 → `--zl-space-1..8` Radius (LIGHT): sm 3 (badges) · md 5 (buttons/inputs) · lg 8 (cards) · xl 12 · pill 999 (circular only) Shadow: sm/md/lg plain dark drops. No coloured glow — flatness is intentional. ## Components (classes in tokens.css) - Buttons: `.zl-btn` + `--primary` (solid olive) | `--secondary` (solid grape) | `--ghost` (outline) | `--destructive` (SOLID rose-red for a destructive MAIN action — fill `--zl-danger`, ink `--zl-on-danger`, hover `--zl-danger-mid`, active `--zl-danger-deep`) | `--danger` (outline rose-red = the QUIET destructive variant: table rows, toolbars) | `--loading` (pair with a `.zl-spinner--btn` + `disabled`); sizes `--sm` / (default) / `--lg`. Flat, 5px radius, 1px border, ≥44px tall. Hover shifts fill one shade. Works identically as `