# ZABA & ZINGO — Design System > How ZZ surfaces are built: shape, space, elevation, motion, components, do/don't. > Cinematic-dark, editorial, warm, **rounded**, **flat**. Never angular, never noisy. --- ## Shape language - **Rounded** everywhere. Radius scale (from the keychain lineage): | Token | Value | Use | |-------|-------|-----| | `--zz-r-xs` | 6px | inputs, chips, small controls | | `--zz-r-sm` | 8px | buttons, tags | | `--zz-r-md` | 10px | inline cards, media thumbs | | `--zz-r-lg` | 14px | cards, panels (**card default**) | | `--zz-r-xl` | 18px | hero panels, modals | | `--zz-r-pill` | 999px | pills, toggles, avatars-as-pill | - **Forbidden: cut-corner / `clip-path` polygons.** That is the **sign.it** language — never ZZ. - Avatars stay 50% round. - **Exception (documented):** the PreOwned storefront runs a flat editorial **5px** radius, and its dense multi-grid is **0px / edge-to-edge**. That is a per-product override, not the house default. ## Elevation **Flat system — `box-shadow: none` everywhere.** Separation comes from a **1px `--zz-line`** hairline and surface-tone steps (`--zz-bg` → `--zz-panel` → `--zz-panel-2`), never a drop shadow. Focus/hover glows are allowed only as an accent ring, not a shadow. ## Spacing scale (4px base) `4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96` → `--zz-s-1 … --zz-s-9`. ## Layout - Container max **1200px**, gutter **24px**. - Editorial rhythm: generous whitespace, large serif heroes, single accent per view. - Grid densities 1 / 2 / 3 / 4 columns (hub lineage) — the 3-col grid is the reference density. - **Slide/section symmetry**, 2-line headlines (hard-break, no orphan word). ## Motion | Token | Value | |-------|-------| | `--zz-t-fast` | 160ms | | `--zz-t-base` | 220ms | | `--zz-t-slow` | 420ms | | `--zz-ease` | `cubic-bezier(.22,.61,.36,1)` | Ken-Burns drift on hero mosaics; 220ms intent-delay on hover-reveal previews; respect `prefers-reduced-motion`. ## Iconography - **Premium SVG only.** No emoji, no icon-font glyphs standing in for UI. - Stroke ~1.5px, rounded joins, currentColor so icons inherit ink/accent. --- ## Components (canonical anatomy) ### Button ```html ``` - Primary: Terra bg, creme ink, `--zz-r-sm`, PP Semibold 600, `padding:12px 20px`, no shadow. - Ghost: transparent, 1px `--zz-line`, ink text; hover → border `--zz-accent`. - Min touch target 44×44px. ### Card (hub/collection anatomy, fixed order) `preview → title (+ live badge) → description → host/meta → dates → CTA` - Surface `--zz-panel`, 1px `--zz-line`, radius `--zz-r-lg`, `padding:18px`. - Equal card height per grid (`grid-auto-rows:1fr`); title single line (ellipsis); description reserves its line even when empty. `.actions` separated by a `border-top`. - Live badge = Terra dot + `LIVE` caption label (SVG dot, never emoji). ### Input / control - `--zz-r-xs`, 1px `--zz-line`, `--zz-panel-2` fill; focus → `--zz-accent` ring (2px), no glow-shadow. - **Never a native `select`/`alert`/`confirm`** — CI dropdown + CI modal only. ### Modal - Backdrop `rgba(0,0,0,.55)`, panel `--zz-panel`, radius `--zz-r-xl`, 1px `--zz-line`, no shadow. - Close on Esc / backdrop / ×. Trap focus. ### Header (every ZZ frontend) - Wordmark (lockup 01) left; right: **language DE/EN** + **theme dark/creme** toggles. - i18n + persistent (localStorage), EN default for a new visitor. --- ## Do / Don't **Do** — dark-first with a creme twin · one Terra accent per view · serif heroes, sans body · rounded + flat · SVG icons · 2-line headlines · track interactions (accordions/chips, not static text). **Don't** — cut-corner polygons · drop shadows · emojis · native controls · logo serif in body text · two-colour wordmark · a second accent competing with Terra · system/HUD/version read-outs · delete content without an explicit order. --- ## Tracking (BBE-STD-TRACK) Every page + outbound link carries UTM + click-id by default; apps track location/IP/device. Interactive elements (accordions, chips, toggles) are trackable, not static info blocks.