mirror of
https://github.com/VoltAgent/awesome-design-md.git
synced 2026-05-14 13:06:57 +08:00
add car brands
This commit is contained in:
parent
76bde6c5ab
commit
50363482c7
314
design-md/ferrari/DESIGN.md
Normal file
314
design-md/ferrari/DESIGN.md
Normal file
@ -0,0 +1,314 @@
|
|||||||
|
# Design System: Ferrari
|
||||||
|
|
||||||
|
## 1. Visual Theme & Atmosphere
|
||||||
|
|
||||||
|
Ferrari's website is a digital editorial — a curated magazine where the Prancing Horse brand is presented with the gravitas of an art institution and the precision of Italian coachwork. The page opens onto an expanse of absolute black, broken only by the iconic Prancing Horse emblem floating alone in its own atmosphere. Below, the content unfolds in dramatic alternations between inky-dark cinematic sections and crisp white editorial panels. This chiaroscuro rhythm — darkness yielding to light, machinery yielding to human story — feels more like paging through a Ferrari yearbook than scrolling a commercial website. Every section is a curated vignette: a concept car dissolving from shadow, two F1 drivers posed with sculptural stillness, a lineup of production models arranged in a jewel-toned parade.
|
||||||
|
|
||||||
|
The color language is monastically restrained for a brand built on speed and emotion. Ferrari Red (`#DA291C`) appears with almost surgical sparseness — reserved for the Subscribe CTA and accent moments that need to command immediate attention. The vast majority of the interface lives in black, white, and a carefully calibrated gray scale (from `#303030` dark surfaces through `#8F8F8F` mid-tones to `#D2D2D2` light borders). Two yellows — Racing Yellow (`#FFF200`) and the deeper Modena Yellow (`#F6E500`) — exist in the token system as heritage accents for special contexts, honoring Ferrari's racing provenance. The restraint means that when red does appear, it carries the weight of the entire brand.
|
||||||
|
|
||||||
|
Typography relies on FerrariSans — a proprietary sans-serif family with medium-weight headings (500–700) and compact proportions. Display text runs at 24–26px for section titles, while the UI chrome lives at 12–16px in weights ranging from regular to bold. A secondary "Body-Font" custom typeface handles captions and utility text, rendered in uppercase with wide letter-spacing (1px) to create a label-like editorial quality. This two-font system — FerrariSans for narrative authority, Body-Font for structural annotation — gives the site a print-magazine hierarchy. No text decoration is gratuitous. Letter-spacing is tight for headlines and deliberately expanded for labels, creating a visual rhythm that alternates between urgency and composure.
|
||||||
|
|
||||||
|
**Key Characteristics:**
|
||||||
|
- Chiaroscuro layout alternating between deep black sections and clean white editorial panels
|
||||||
|
- Ferrari Red (`#DA291C`) used with extreme sparseness — accent, not atmosphere
|
||||||
|
- Prancing Horse emblem as isolated hero element on a void-black field
|
||||||
|
- FerrariSans proprietary typeface with compact proportions and medium weights
|
||||||
|
- Photo-journalism imagery: concept renders, driver portraits, lineup parades — each section is a story
|
||||||
|
- Uppercase Body-Font labels with wide letter-spacing (1px) for editorial annotation
|
||||||
|
- Nearly zero border-radius (2px default) reflecting precision engineering aesthetics
|
||||||
|
- Dual-framework architecture (PrimeReact + Element Plus) powering 32+ interactive components
|
||||||
|
- Carousel-driven hero with editorial slides and arrow/dot navigation
|
||||||
|
|
||||||
|
## 2. Color Palette & Roles
|
||||||
|
|
||||||
|
### Primary
|
||||||
|
- **Ferrari Red** (`#DA291C`): The iconic Rosso Corsa — primary accent and CTA color. Used for the Subscribe button, key action triggers, and brand moments where maximum visual authority is needed. The single most important color in the system (--f-color-accent-100)
|
||||||
|
- **Pure White** (`#FFFFFF`): Primary surface for editorial content panels, navigation text on dark backgrounds, and button fills. The canvas that provides breathing room between dark cinematic sections (--f-color-ui-0)
|
||||||
|
|
||||||
|
### Secondary & Accent
|
||||||
|
- **Dark Red** (`#B01E0A`): Deeper variant of Ferrari Red for hover/pressed states and high-contrast contexts — adds dimensionality to the brand color without introducing a new hue (--f-color-accent-90)
|
||||||
|
- **Deep Red** (`#9D2211`): The most saturated dark red — used for active states and extra emphasis where even Dark Red needs more weight (--f-color-accent-80)
|
||||||
|
- **Racing Yellow** (`#FFF200`): Heritage accent from Ferrari's racing livery — reserved for special highlights and motorsport-related contexts (--f-color-yellow-hypersail)
|
||||||
|
- **Modena Yellow** (`#F6E500`): Slightly warmer and more golden than Racing Yellow — used for secondary heritage accents and category markers (--f-color-yellow)
|
||||||
|
|
||||||
|
### Surface & Background
|
||||||
|
- **Absolute Black** (`#000000`): Hero sections, cinematic backgrounds, and the dominant dark surface — the void that makes imagery and the Prancing Horse emblem float
|
||||||
|
- **Dark Surface** (`#303030`): Secondary dark surface for footer regions, newsletter sections, and layered dark panels — slightly lifted from pure black for depth differentiation (--f-color-ui-90)
|
||||||
|
- **Light Gray Surface** (`#D2D2D2`): Subtle alternate surface for dividers and border treatments on white panels (--f-color-ui-20)
|
||||||
|
- **Overlay Dark** (`hsla(0, 0%, 7%, 0.8)`): Semi-transparent near-black for modal overlays and image caption backgrounds (--f-color-overlay-darker)
|
||||||
|
|
||||||
|
### Neutrals & Text
|
||||||
|
- **Near Black** (`#181818`): Primary body text color on light surfaces — slightly softened from absolute black for better readability (link default color)
|
||||||
|
- **Dark Gray** (`#666666`): Secondary text and subdued UI labels — used where text needs to recede from the primary hierarchy (--f-color-black-60)
|
||||||
|
- **Mid Gray** (`#8F8F8F`): Tertiary text for metadata, timestamps, and supportive content (--f-color-black-50)
|
||||||
|
- **Silver Gray** (`#969696`): Placeholder text and disabled state indicators (--f-color-black-55)
|
||||||
|
|
||||||
|
### Semantic & Accent
|
||||||
|
- **Warning Red** (`#F13A2C`): Accessible warning state — brighter and more orange-shifted than Ferrari Red to differentiate semantic alerts from brand expression (--f-color-accessible-warning)
|
||||||
|
- **Success Green** (`#03904A`): Confirmation and positive status indicators (--f-color-accessible-success)
|
||||||
|
- **Info Blue** (`#4C98B9`): Informational callouts, tooltips, and neutral status messaging (--f-color-accessible-info)
|
||||||
|
- **Link Hover Blue** (`#3860BE`): Interactive hover state for text links — a dignified navy-blue that signals interactivity without competing with Ferrari Red
|
||||||
|
|
||||||
|
### Gradient System
|
||||||
|
- No explicit gradients in the token system
|
||||||
|
- Depth is achieved through photography and the binary contrast between black and white surfaces
|
||||||
|
- The overlay darker color (`hsla(0, 0%, 7%, 0.8)`) creates depth through transparency layering over imagery
|
||||||
|
- Occasional photographic gradients (light falloff in studio shots) provide atmospheric depth within image content
|
||||||
|
|
||||||
|
## 3. Typography Rules
|
||||||
|
|
||||||
|
### Font Family
|
||||||
|
- **FerrariSans**: Primary typeface for headings, navigation, buttons, and editorial content. A proprietary sans-serif with medium weight as the default (500), compact x-height, and precise letter-spacing control. Fallbacks: Arial, Helvetica, sans-serif
|
||||||
|
- **Body-Font**: Secondary typeface for captions, labels, and utility text. Frequently rendered in uppercase with expanded letter-spacing (1px) for an editorial label aesthetic. Used for category tags and small annotation text
|
||||||
|
- **Arial / Helvetica**: System fallback fonts used in cookie consent modals, form elements, and third-party component frameworks
|
||||||
|
|
||||||
|
### Hierarchy
|
||||||
|
|
||||||
|
| Role | Size | Weight | Line Height | Letter Spacing | Notes |
|
||||||
|
|------|------|--------|-------------|----------------|-------|
|
||||||
|
| Section Title | 26px (1.63rem) | 500 | 1.20 | normal | FerrariSans, primary editorial headings on white backgrounds |
|
||||||
|
| Card Heading | 24px (1.50rem) | 400 | normal | normal | FerrariSans, content card titles |
|
||||||
|
| Subheading | 18px (1.13rem) | 700 | 1.20 (tight) | normal | FerrariSans, bold subsection labels |
|
||||||
|
| UI Heading | 16px (1.00rem) | 500 | 1.40 | 0.08px | FerrariSans, component headings and nav items |
|
||||||
|
| Body Bold | 16px (1.00rem) | 700 | 1.30 (tight) | normal | FerrariSans, emphasized inline text |
|
||||||
|
| Button Label | 16px (1.00rem) | 400 | normal | 1.28px | FerrariSans, primary button text with wide tracking |
|
||||||
|
| Small Button | 14.4px (0.90rem) | 700 | 1.00 (tight) | normal | FerrariSans, compact action buttons |
|
||||||
|
| Nav Link | 13px (0.81rem) | 600 | 1.20 (tight) | 0.13px | FerrariSans, navigation and footer links |
|
||||||
|
| Caption | 13px (0.81rem) | 400 | 1.50 | 0.195px | FerrariSans/Body-Font, metadata and descriptions |
|
||||||
|
| Micro Button | 12px (0.75rem) | 700 | 1.00 (tight) | 0.96px | FerrariSans, small CTA with wide tracking |
|
||||||
|
| Label Upper | 12px (0.75rem) | 400 | 1.27 (tight) | 1px | Body-Font, uppercase labels and category tags |
|
||||||
|
| Micro Label | 11px (0.69rem) | 400 | 1.27 (tight) | 1px | Body-Font, uppercase smallest annotation text |
|
||||||
|
| Cookie Text | 45px (2.81rem) | 400 | 1.50 | 0.195px | Arial, consent dialog oversized button text |
|
||||||
|
|
||||||
|
### Principles
|
||||||
|
- **Proprietary identity**: FerrariSans is exclusive to Ferrari — it cannot be substituted without losing brand recognition. The font's compact proportions and medium weight default (500) convey engineering precision
|
||||||
|
- **Two-register system**: FerrariSans handles narrative voice (headings, content, buttons) while Body-Font handles structural annotation (labels, tags, micro-captions) — this mirrors print magazine conventions of editorial text vs. technical labels
|
||||||
|
- **Uppercase as emphasis tool**: Body-Font captions use `text-transform: uppercase` with expanded letter-spacing (1px) to create a visually distinct label layer that reads as "informational overlay" rather than primary content
|
||||||
|
- **Compact line-heights**: Headlines use tight line-heights (1.00–1.30) creating dense, impactful text blocks, while body text opens to 1.50 for comfortable reading — the contrast between compressed headers and relaxed body text creates visual tension
|
||||||
|
- **Weight range 400–700**: Four weights active in the system (400, 500, 600, 700) — significantly more range than Tesla but still controlled. 500 is the default "voice," 700 is for emphasis, 400 for body, 600 for navigation
|
||||||
|
|
||||||
|
## 4. Component Stylings
|
||||||
|
|
||||||
|
### Buttons
|
||||||
|
Ferrari's buttons are minimal white rectangles with near-zero radius — the CTA philosophy is "architecture, not decoration."
|
||||||
|
|
||||||
|
**Primary CTA (White)** — The default action button:
|
||||||
|
- Default: bg `#FFFFFF`, text `#000000`, fontSize 16px (FerrariSans), letterSpacing 1.28px, padding 12px 10px, borderRadius 2px, border 1px solid `#000000`
|
||||||
|
- Hover: bg `#1EAEDB` (Teal), text `#FFFFFF`, opacity 0.9
|
||||||
|
- Focus: bg `#1EAEDB`, text `#FFFFFF`, border 1px solid `#FFFFFF`, outline 2px solid `#000000`, opacity 0.9
|
||||||
|
- Used for: "Configure" actions, secondary calls to action on light backgrounds
|
||||||
|
|
||||||
|
**Subscribe CTA (Red)** — The high-emphasis action button:
|
||||||
|
- Default: bg `#DA291C` (Ferrari Red), text `#FFFFFF`, borderRadius 2px, padding 12px 10px
|
||||||
|
- Used for: Newsletter subscribe, primary conversion actions on dark backgrounds
|
||||||
|
- The only button that uses Ferrari Red — reserved for maximum visual priority
|
||||||
|
|
||||||
|
**Ghost Button (White Border)** — For dark backgrounds:
|
||||||
|
- Default: bg transparent, text `#FFFFFF`, border 1px solid `#FFFFFF`, borderRadius 2px, padding 12px 10px
|
||||||
|
- Hover: bg `#1EAEDB` (Teal), text `#FFFFFF`, opacity 0.9
|
||||||
|
- Focus: same as Primary CTA focus state
|
||||||
|
- Used for: Actions overlaid on dark imagery and cinematic sections
|
||||||
|
|
||||||
|
**Text Link** — Inline navigation:
|
||||||
|
- Default: text `#181818` (on light surfaces) or `#FFFFFF` (on dark), no border, no background
|
||||||
|
- Hover: color shifts to `#3860BE` (Link Hover Blue), decoration removes underline
|
||||||
|
- White variant on dark surfaces uses underline decoration by default
|
||||||
|
- FerrariSans or Body-Font depending on context (Body-Font for uppercase label links)
|
||||||
|
|
||||||
|
### Cards & Containers
|
||||||
|
|
||||||
|
**Editorial Card** (Content sections):
|
||||||
|
- Background: white
|
||||||
|
- Border: none
|
||||||
|
- Shadow: none
|
||||||
|
- Layout: image above, heading + caption below
|
||||||
|
- Image treatment: full-width within card, no rounded corners on image
|
||||||
|
- Text: FerrariSans heading (16–24px) + Body-Font caption (12–13px uppercase)
|
||||||
|
|
||||||
|
**Dark Cinematic Card** (Hero/feature sections):
|
||||||
|
- Background: `#000000` (Absolute Black)
|
||||||
|
- Full-bleed imagery with text overlay
|
||||||
|
- No border, no shadow — the darkness IS the container
|
||||||
|
- Text: white, positioned with careful negative space
|
||||||
|
|
||||||
|
**Vehicle Lineup** (Model carousel):
|
||||||
|
- Horizontal scrollable row of vehicle thumbnails
|
||||||
|
- Each vehicle on a neutral/white background
|
||||||
|
- Navigation: arrow buttons + dot indicators
|
||||||
|
- Background shifts to showcase the selected model's color context
|
||||||
|
|
||||||
|
### Inputs & Forms
|
||||||
|
|
||||||
|
**Newsletter Input** (Footer section):
|
||||||
|
- Background: transparent on dark surface
|
||||||
|
- Text: white
|
||||||
|
- Border: 1px solid `#CCCCCC`
|
||||||
|
- Placeholder: `#969696` (Silver Gray)
|
||||||
|
- Focus: border color transitions (standard browser focus ring)
|
||||||
|
- Label: Body-Font uppercase, 12px, 1px letter-spacing
|
||||||
|
|
||||||
|
**Cookie Consent** (Modal):
|
||||||
|
- Background: white
|
||||||
|
- Border radius: 8px (dialog)
|
||||||
|
- Shadow: `rgb(153, 153, 153) 1px 1px 1px 0px`
|
||||||
|
- Buttons: oversized (45px Arial), white bg with black border
|
||||||
|
- Uses standard PrimeReact/Element Plus modal framework
|
||||||
|
|
||||||
|
### Navigation
|
||||||
|
- **Desktop**: Prancing Horse logo centered at top of page, primary navigation below — not a traditional horizontal nav bar but a full-width header block on black background
|
||||||
|
- **Logo**: Centered Prancing Horse emblem (44×42px) on absolute black — the single most prominent UI element
|
||||||
|
- **Links**: FerrariSans, 13px, weight 600, white text on dark backgrounds
|
||||||
|
- **Mobile**: Hamburger collapse to vertical navigation drawer
|
||||||
|
- **Footer**: Multi-column layout on `#303030` (Dark Surface) with category links in Body-Font uppercase
|
||||||
|
- **No sticky nav behavior** observed — the page scrolls naturally with the header moving off-screen
|
||||||
|
|
||||||
|
### Image Treatment
|
||||||
|
- **Hero**: Full-width editorial photography on black backgrounds — concept cars in atmospheric studio lighting, editorial portraits with cinematic composition
|
||||||
|
- **Aspect ratios**: Mixed — landscape (16:9) for hero sections, near-square for portrait/driver imagery, wide panoramic for vehicle lineups
|
||||||
|
- **Full-bleed vs padded**: Hero images are full-bleed edge-to-edge; editorial content images are padded within white containers
|
||||||
|
- **Lazy loading**: Below-fold sections use progressive loading (PrimeReact framework handles this)
|
||||||
|
- **Image quality**: High-resolution photography with studio lighting — no user-generated or lifestyle imagery. Every image is art-directed
|
||||||
|
|
||||||
|
### Carousel Component
|
||||||
|
- Editorial carousel with multiple slides
|
||||||
|
- Dot indicators for slide position
|
||||||
|
- Arrow navigation (left/right) at slide edges
|
||||||
|
- Auto-advancing with manual override
|
||||||
|
- Content: mixed editorial — event recaps, model launches, racing highlights
|
||||||
|
|
||||||
|
## 5. Layout Principles
|
||||||
|
|
||||||
|
### Spacing System
|
||||||
|
- **Base unit**: 8px (detected system base)
|
||||||
|
- **Scale**: 1px, 2px, 4px, 5px, 6px, 9px, 10px, 11.2px, 12px, 13px, 15px, 16px, 19px, 20px, 25px
|
||||||
|
- **Button padding**: 12px vertical, 10px horizontal — compact and precise
|
||||||
|
- **Section padding**: Generous vertical spacing (40–80px estimated) between major content blocks
|
||||||
|
- **Card gaps**: 16–20px between grid items
|
||||||
|
- **Footer padding**: 25px horizontal sections within the dark footer block
|
||||||
|
|
||||||
|
### Grid & Container
|
||||||
|
- **Max width**: 1920px (largest breakpoint) with content constraining at narrower widths
|
||||||
|
- **Hero**: Full-bleed on black, content centered
|
||||||
|
- **Editorial sections**: 2-column layouts with image + text, alternating sides
|
||||||
|
- **Vehicle lineup**: Horizontal scroll/carousel, 5–6 models visible at desktop width
|
||||||
|
- **Footer**: 4-column grid for link categories
|
||||||
|
|
||||||
|
### Whitespace Philosophy
|
||||||
|
Ferrari treats white space as a gallery wall. Each section — whether a concept car render on black void or a pair of F1 drivers on neutral gray — is given its own "room" of breathing space. The alternating black/white sections create a pacing rhythm: dark = immersive moment, white = editorial content, dark = immersive moment. This cadence makes scrolling feel like turning pages in a luxury publication. White space between editorial cards is moderate (not Tesla-extreme) because Ferrari is telling stories, not exhibiting single objects.
|
||||||
|
|
||||||
|
### Border Radius Scale
|
||||||
|
| Value | Context |
|
||||||
|
|-------|---------|
|
||||||
|
| 1px | Subtle softening on small inline elements (spans) |
|
||||||
|
| 2px | Default for buttons, inputs, and interactive elements — barely perceptible, razor-precision |
|
||||||
|
| 8px | Modal dialogs and overlay containers — the "softest" structural radius |
|
||||||
|
| 50% | Circular elements: carousel dots, avatar thumbnails, slider handles |
|
||||||
|
|
||||||
|
## 6. Depth & Elevation
|
||||||
|
|
||||||
|
| Level | Treatment | Use |
|
||||||
|
|-------|-----------|-----|
|
||||||
|
| Level 0 (Flat) | No shadow, no border | Default state for all content sections and cards |
|
||||||
|
| Level 1 (Subtle) | `rgb(153, 153, 153) 1px 1px 1px 0px` | Rare — cookie consent dialogs and dropdown menus |
|
||||||
|
| Level 2 (Overlay) | `hsla(0, 0%, 7%, 0.8)` backdrop | Modal overlays and image caption backgrounds |
|
||||||
|
| Level 3 (Border) | `1px solid #CCCCCC` | Input fields, form containers — depth through delineation not shadow |
|
||||||
|
|
||||||
|
### Shadow Philosophy
|
||||||
|
Ferrari's approach to elevation is nearly as flat as Tesla's, but with a different rationale. Where Tesla avoids shadows for minimalism, Ferrari avoids them because the editorial photography provides all the visual depth needed. The single shadow token (`rgb(153, 153, 153) 1px 1px 1px 0px`) is extremely subtle — a 1-pixel whisper used only in utilitarian contexts like consent dialogs. The site communicates hierarchy through three strategies:
|
||||||
|
1. **Surface color contrast**: Black sections vs. white sections create unmistakable layering
|
||||||
|
2. **Overlay transparency**: The `--f-color-overlay-darker` at 80% opacity creates depth without shadow
|
||||||
|
3. **Photographic depth**: Studio-lit car imagery with reflections, ground shadows, and atmospheric haze provides all the visual dimensionality
|
||||||
|
|
||||||
|
### Decorative Depth
|
||||||
|
- No UI gradients, no glows, no blur effects on interface elements
|
||||||
|
- The Prancing Horse logo on black creates a "floating in void" effect through pure contrast — no glow or shadow needed
|
||||||
|
- Dark-to-light section transitions are hard cuts, not gradient blends — reinforcing the editorial page-turn metaphor
|
||||||
|
|
||||||
|
## 7. Do's and Don'ts
|
||||||
|
|
||||||
|
### Do
|
||||||
|
- Use Ferrari Red (`#DA291C`) sparingly — only for primary CTAs and brand-critical moments. Its power comes from restraint
|
||||||
|
- Alternate between black cinematic sections and white editorial sections to create the signature chiaroscuro rhythm
|
||||||
|
- Use FerrariSans at weight 500 as the default heading voice — it's the typographic equivalent of the engine note
|
||||||
|
- Apply Body-Font in uppercase with 1px letter-spacing for all labels, category tags, and structural annotations
|
||||||
|
- Keep border-radius at 2px for all interactive elements — razor precision, not rounded friendliness
|
||||||
|
- Let photography carry the emotional weight — every image should be art-directed studio quality
|
||||||
|
- Use the Prancing Horse emblem as a standalone hero element on black — never crowd it with adjacent content
|
||||||
|
- Maintain the 12px/10px button padding ratio — compact, purposeful, no excess
|
||||||
|
- Use `#181818` (Near Black) for body text instead of pure `#000000` — the subtle warmth improves readability
|
||||||
|
- Reserve the yellow accents (`#FFF200`, `#F6E500`) strictly for motorsport and racing heritage contexts
|
||||||
|
|
||||||
|
### Don't
|
||||||
|
- Scatter Ferrari Red across the interface as decoration — it's a CTA signal, not a theme color
|
||||||
|
- Use rounded-pill buttons or large border-radii — the 2px precision is non-negotiable
|
||||||
|
- Add box-shadows to cards or content containers — depth comes from surface color contrast and photography
|
||||||
|
- Mix FerrariSans and Body-Font within the same text block — they serve separate hierarchical functions
|
||||||
|
- Use colorful backgrounds (blue, green, etc.) for sections — the palette is exclusively black/white/gray with red and yellow accents
|
||||||
|
- Apply text transforms to FerrariSans headings — uppercase is reserved for Body-Font labels only
|
||||||
|
- Display low-quality or user-generated imagery — every photograph must meet editorial standards
|
||||||
|
- Use the Link Hover Blue (`#3860BE`) for anything other than interactive hover states — it's not a brand color
|
||||||
|
- Create busy layouts with multiple competing focal points — each section should have one clear story
|
||||||
|
- Override the semantic color system (warning, success, info) with brand colors — `#F13A2C` warning is deliberately different from `#DA291C` brand red
|
||||||
|
|
||||||
|
## 8. Responsive Behavior
|
||||||
|
|
||||||
|
### Breakpoints
|
||||||
|
| Name | Width | Key Changes |
|
||||||
|
|------|-------|-------------|
|
||||||
|
| Mobile Small | ≤375px | Single-column, minimal padding (12px), stacked navigation, hero text scales to ~18px, full-width CTAs |
|
||||||
|
| Mobile | 376–600px | Single-column, slightly larger padding (16px), hamburger nav, body text at 13px |
|
||||||
|
| Tablet Small | 601–768px | 2-column editorial grid begins, hero images maintain full-width, footer switches to 2-column |
|
||||||
|
| Tablet | 769–960px | Full 2-column layout, carousel shows 3 vehicles, padding increases to 20px |
|
||||||
|
| Desktop | 961–1280px | Full navigation, 2-column editorial with larger imagery, vehicle lineup shows 5 models |
|
||||||
|
| Large Desktop | 1281–1920px | Maximum content width, generous whitespace, hero photography at full cinematic scale |
|
||||||
|
|
||||||
|
### Touch Targets
|
||||||
|
- Primary CTA buttons: minimum 44px height with 12px vertical padding (meets WCAG AAA 44×44px target)
|
||||||
|
- Navigation links: 13px text with 1.50 line-height and adequate spacing between items
|
||||||
|
- Carousel arrows: 44px+ touch targets at viewport edges
|
||||||
|
- Footer links: grouped with sufficient vertical spacing (16–20px) for touch accuracy
|
||||||
|
|
||||||
|
### Collapsing Strategy
|
||||||
|
- **Navigation**: Full horizontal nav collapses to centered Prancing Horse logo + hamburger menu on mobile
|
||||||
|
- **Editorial sections**: 2-column image+text layouts collapse to single-column with image stacking above text
|
||||||
|
- **Vehicle lineup**: Horizontal carousel maintains scroll behavior but reduces visible models from 5 to 2–3
|
||||||
|
- **Footer**: 4-column link grid collapses to 2-column on tablet, single-column accordion on mobile
|
||||||
|
- **Hero carousel**: Full-width at all breakpoints, dot indicators and arrows scale proportionally
|
||||||
|
- **Spacing reduction**: Section padding reduces from 40–80px (desktop) to 20–40px (mobile), maintaining proportional breathing room
|
||||||
|
|
||||||
|
### Image Behavior
|
||||||
|
- Hero images: full-bleed at all breakpoints, using `object-fit: cover` to maintain cinematic composition
|
||||||
|
- Editorial images: responsive within their containers, maintaining aspect ratio
|
||||||
|
- Vehicle lineup: thumbnail size scales but maintains consistent car-to-frame proportions
|
||||||
|
- Art direction: mobile crops may tighten on vehicle subjects, reducing environmental context
|
||||||
|
- Lazy loading: PrimeReact handles progressive image loading for below-fold content
|
||||||
|
|
||||||
|
## 9. Agent Prompt Guide
|
||||||
|
|
||||||
|
### Quick Color Reference
|
||||||
|
- Primary CTA: "Ferrari Red (#DA291C)"
|
||||||
|
- Background Light: "Pure White (#FFFFFF)"
|
||||||
|
- Background Dark: "Absolute Black (#000000)"
|
||||||
|
- Secondary Dark Surface: "Dark Surface (#303030)"
|
||||||
|
- Heading text (light bg): "Near Black (#181818)"
|
||||||
|
- Body text: "Dark Gray (#666666)"
|
||||||
|
- Tertiary text: "Mid Gray (#8F8F8F)"
|
||||||
|
- Border: "Border Gray (#CCCCCC)"
|
||||||
|
- Button Hover: "Teal (#1EAEDB)"
|
||||||
|
- Link Hover: "Link Blue (#3860BE)"
|
||||||
|
|
||||||
|
### Example Component Prompts
|
||||||
|
- "Create a hero section on Absolute Black (#000000) background with a centered logo emblem at the top, generous vertical spacing (80px+), and a single editorial headline in FerrariSans at 26px weight 500 in white, with a small Body-Font uppercase caption (12px, 1px letter-spacing) in Silver Gray (#969696) below"
|
||||||
|
- "Design a Subscribe section on Dark Surface (#303030) with a left-aligned headline in white FerrariSans (24px/500), a subtitle in Mid Gray (#8F8F8F, 13px), an email input with transparent background and 1px #CCCCCC border, and a Ferrari Red (#DA291C) Subscribe button with white text, 2px border-radius, and 12px 10px padding"
|
||||||
|
- "Build an editorial card on white background with a full-width image (16:9 ratio) above, a FerrariSans heading (16px/700, Near Black #181818) below, and a Body-Font uppercase label (11px, 1px letter-spacing, Mid Gray #8F8F8F) as the category tag — no border, no shadow, no border-radius"
|
||||||
|
- "Create a vehicle lineup carousel showing 5 car thumbnails in a horizontal scroll on white background, with left/right arrow navigation, dot indicators below, and a FerrariSans model name (16px/500) beneath each vehicle"
|
||||||
|
- "Design a dark cinematic section with full-bleed studio photography of a concept car on Absolute Black, a white FerrariSans headline (26px/500) positioned in the lower-left with generous padding (40px), and a Ghost Button (transparent bg, 1px white border, white text, 2px radius) as the CTA"
|
||||||
|
|
||||||
|
### Iteration Guide
|
||||||
|
When refining existing screens generated with this design system:
|
||||||
|
1. Focus on ONE component at a time — Ferrari's editorial rhythm means each section is a self-contained vignette
|
||||||
|
2. Reference specific color names and hex codes from this document — the palette is small but each color has a precise role
|
||||||
|
3. Use natural language descriptions, not CSS values — "razor-sharp 2px corners" conveys intent better than "border-radius: 2px"
|
||||||
|
4. Describe the desired "feel" alongside specific measurements — "editorial magazine page-turn between sections" communicates the layout philosophy better than "margin-bottom: 80px"
|
||||||
|
5. Always maintain the chiaroscuro contrast — if a section feels flat, check whether it needs to be on black or white to maintain the alternating rhythm
|
||||||
|
6. Reserve Ferrari Red for ONE element per screen — if red appears in more than one place, it loses its authority
|
||||||
23
design-md/ferrari/README.md
Normal file
23
design-md/ferrari/README.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Ferrari Inspired Design System
|
||||||
|
|
||||||
|
[DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/ferrari/DESIGN.md) extracted from the public [ferrari](https://ferrari.com/) website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
| File | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `DESIGN.md` | Complete design system documentation (9 sections) |
|
||||||
|
| `preview.html` | Interactive design token catalog (light) |
|
||||||
|
| `preview-dark.html` | Interactive design token catalog (dark) |
|
||||||
|
|
||||||
|
Use [DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/ferrari/DESIGN.md) to use as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that looks like the Ferrari design language.
|
||||||
|
|
||||||
|
## Preview
|
||||||
|
|
||||||
|
A sample landing page built with DESIGN.md. It shows the actual colors, typography, buttons, cards, spacing, and elevation, all in one page.
|
||||||
|
|
||||||
|
### Dark Mode
|
||||||
|

|
||||||
|
|
||||||
|
### Light Mode
|
||||||
|

|
||||||
1165
design-md/ferrari/preview-dark.html
Normal file
1165
design-md/ferrari/preview-dark.html
Normal file
File diff suppressed because it is too large
Load Diff
1125
design-md/ferrari/preview.html
Normal file
1125
design-md/ferrari/preview.html
Normal file
File diff suppressed because it is too large
Load Diff
288
design-md/lamborghini/DESIGN.md
Normal file
288
design-md/lamborghini/DESIGN.md
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
# Design System: Lamborghini
|
||||||
|
|
||||||
|
## 1. Visual Theme & Atmosphere
|
||||||
|
|
||||||
|
Lamborghini's website is a cathedral of darkness — a digital stage where jet-black surfaces stretch infinitely and every element emerges from the void like a machine under a spotlight. The page is almost entirely black. Not dark gray, not near-black — true, uncompromising black (`#000000`) that saturates the viewport and refuses to yield. Into this abyss, white type and Lamborghini Gold (`#FFC000`) are deployed with surgical precision, creating a visual language that feels like walking through a nighttime motorsport event where every surface absorbs light except the things that matter.
|
||||||
|
|
||||||
|
The hero is a full-viewport video — dark, cinematic, immersive — showing event footage or vehicle reveals with the Lamborghini bull logo floating ethereally above. The navigation is minimal: a centered bull logo, a "MENU" hamburger on the left, and search/bookmark icons on the right, all rendered in white against the black canvas. There are no borders, no visible nav containers, no background color on the header — just white marks floating in darkness. The overall mood is nocturnal luxury: exclusive, theatrical, and deliberately intimidating. Each section transition is a scroll through darkness into the next revelation.
|
||||||
|
|
||||||
|
Typography is the voice of this darkness. LamboType — a custom Neo-Grotesk typeface created by Character Type and design agency Strichpunkt — is used for everything from 120px uppercase display headlines to 10px micro labels. Its distinctive 12° angled terminals are inspired by the aerodynamic lines of Lamborghini's super sports cars, and its proportions range from Normal to Ultracompressed width. Headlines SHOUT in uppercase at enormous scales with tight line-heights (0.92 at 120px), creating dense blocks of text that feel stamped from steel. The typeface carries hexagonal geometric DNA — constructed from hexagons, three-armed stars, and circles — that echoes throughout the interface in the hexagonal pause button and UI icons. Built on Bootstrap grid with 68 Element Plus/UI components, the technical infrastructure is substantial beneath the theatrical surface.
|
||||||
|
|
||||||
|
**Key Characteristics:**
|
||||||
|
- True black (`#000000`) dominant surfaces with white and gold as the only relief colors
|
||||||
|
- LamboType custom Neo-Grotesk font with 12° angled terminals inspired by aerodynamic car lines
|
||||||
|
- Lamborghini Gold (`#FFC000`) as the sole accent color — used exclusively for primary CTA buttons
|
||||||
|
- All-uppercase display typography at extreme scales (120px, 80px, 54px) with tight line-heights
|
||||||
|
- Full-viewport video heroes with cinematic event/vehicle content
|
||||||
|
- Zero border-radius on buttons — sharp, angular, uncompromising rectangles
|
||||||
|
- Hexagonal motifs in UI elements (pause button, icon system) echoing brand geometry
|
||||||
|
- Bootstrap grid system + Element Plus/UI 68 components underneath
|
||||||
|
- Transparent ghost buttons with white borders at 50% opacity as the secondary CTA pattern
|
||||||
|
|
||||||
|
## 2. Color Palette & Roles
|
||||||
|
|
||||||
|
### Primary
|
||||||
|
- **Lamborghini Gold** (`#FFC000`): The signature accent color — a warm, saturated amber-gold (rgb 255, 192, 0) used exclusively for primary action buttons ("Discover More", "Tickets", "Start Configuration"). The only chromatic color in the entire interface, it ignites against the black canvas like a headlight cutting through night
|
||||||
|
- **Pure White** (`#FFFFFF`): Primary text color on dark surfaces, logo rendering, nav elements, and light-mode button fills — the voice that speaks from the darkness
|
||||||
|
|
||||||
|
### Secondary & Accent
|
||||||
|
- **Dark Gold** (`#917300`): Hover/pressed state for gold buttons — a deep amber (rgb 145, 115, 0) that darkens the gold to signal interaction
|
||||||
|
- **Gold Text** (`#FFCE3E`): Slightly lighter gold variant (rgb 255, 206, 62) used for inline text accents and highlighted labels
|
||||||
|
- **Cyan Pulse** (`#29ABE2`): Electric blue-cyan (rgb 41, 171, 226) appearing as an informational accent and interactive element highlight
|
||||||
|
- **Link Blue** (`#3860BE`): Medium blue (rgb 56, 96, 190) used universally for link hover states across all text colors
|
||||||
|
|
||||||
|
### Surface & Background
|
||||||
|
- **Absolute Black** (`#000000`): The dominant surface color — used for page background, hero sections, header, footer, and most containers
|
||||||
|
- **Charcoal** (`#202020`): Elevated dark surface (rgb 32, 32, 32) — the primary "dark gray" for cards, panels, and text containers sitting above the black canvas
|
||||||
|
- **Dark Iron** (`#181818`): Subtle surface variant (rgb 24, 24, 24) — barely distinguishable from black, used for footer and deep sections
|
||||||
|
- **Overlay Black** (`rgba(0,0,0,0.7)`): Semi-transparent overlay for modals and video dimming
|
||||||
|
- **Near White** (`#F8F8F8`): Rare light surface (rgb 248, 248, 248) for content blocks in white-mode sections
|
||||||
|
- **Mist** (`#E6E6E6`): Light gray surface for secondary light-mode containers
|
||||||
|
|
||||||
|
### Neutrals & Text
|
||||||
|
- **Pure White** (`#FFFFFF`): Primary text on dark backgrounds — headlines, body, nav labels
|
||||||
|
- **Smoke** (`#F5F5F5`): Secondary text on dark surfaces — slightly softer than pure white
|
||||||
|
- **Graphite** (`#494949`): Dark gray text on light surfaces (rgb 73, 73, 73)
|
||||||
|
- **Ash** (`#7D7D7D`): Mid-range gray for muted text, timestamps, and metadata (rgb 125, 125, 125)
|
||||||
|
- **Steel** (`#969696`): Lighter gray for disabled text and subtle labels (rgb 150, 150, 150)
|
||||||
|
- **Slate** (`#666666`): Alternative mid-gray for secondary content
|
||||||
|
- **Iron** (`#555555`): Dark mid-gray for body text variants
|
||||||
|
- **Shadow** (`#313131`): Very dark gray for text on dark surfaces where white is too strong
|
||||||
|
|
||||||
|
### Semantic & Accent
|
||||||
|
- **Cyan Pulse** (`#29ABE2`): Used for informational highlights and interactive feedback
|
||||||
|
- **Link Blue** (`#3860BE`): Universal hover state for all hyperlinks
|
||||||
|
- **Teal Action** (`#1EAEDB`): Button hover background for transparent/ghost variants (rgb 30, 174, 219)
|
||||||
|
|
||||||
|
### Gradient System
|
||||||
|
- No explicit gradients in the color palette — the dark-to-light progression is achieved through surface layering: `#000000` → `#181818` → `#202020` → `#494949` → `#7D7D7D`
|
||||||
|
- Video heroes use natural atmospheric gradients from the content itself
|
||||||
|
- Top-of-page gradient: subtle dark-to-darker fade at the edges of full-bleed imagery
|
||||||
|
|
||||||
|
## 3. Typography Rules
|
||||||
|
|
||||||
|
### Font Family
|
||||||
|
- **Display & UI**: `LamboType`, Roboto, Helvetica Neue, Arial — custom Neo-Grotesk typeface by Character Type for Lamborghini's 2024 brand refresh. Available in widths from Normal to Ultracompressed and weights from Light (300) to Black. Features 12° angled terminals inspired by aerodynamic car geometry, hexagonal construction logic, and support for 200+ languages including Latin, Cyrillic, and Greek
|
||||||
|
- **Fallback/UI**: `Open Sans` — used for some button/form contexts as system fallback
|
||||||
|
- **No italic variants** observed on the marketing site — the brand voice is always upright
|
||||||
|
|
||||||
|
### Hierarchy
|
||||||
|
|
||||||
|
| Role | Size | Weight | Line Height | Letter Spacing | Notes |
|
||||||
|
|------|------|--------|-------------|----------------|-------|
|
||||||
|
| Hero Display | 120px (7.50rem) | 400 | 0.92 | normal | LamboType, uppercase, maximum impact |
|
||||||
|
| Display 2 | 80px (5.00rem) | 400 | 1.13 | normal | LamboType, uppercase, major section titles |
|
||||||
|
| Section Title | 54px (3.38rem) | 400 | 1.19 | normal | LamboType, uppercase |
|
||||||
|
| Sub-section | 40px (2.50rem) | 400 | 1.15 | normal | LamboType, uppercase |
|
||||||
|
| Feature Heading | 27px (1.69rem) | 400 | 1.37 | normal | LamboType, uppercase |
|
||||||
|
| Card Title | 24px (1.50rem) | 400 | — | normal | LamboType |
|
||||||
|
| Body Large | 18px (1.13rem) | 400 | 1.56 | normal | LamboType, mixed case and uppercase variants |
|
||||||
|
| Body / UI | 16px (1.00rem) | 400/700 | 1.50 | normal/0.16px | LamboType, primary body text |
|
||||||
|
| Button Large | 16px (1.00rem) | 400 | 1.50 | normal | Gold CTA buttons |
|
||||||
|
| Button Standard | 14.4px (0.90rem) | 300/700 | 1.00 | 0.14–0.2px | LamboType, uppercase, ghost buttons |
|
||||||
|
| Button Small | 13px (0.81rem) | 300/500 | 1.20 | 0.13–0.2px | LamboType, compact button variant |
|
||||||
|
| Caption | 14px (0.88rem) | 600/700 | 1.14–1.50 | -0.42px | LamboType, uppercase, negative tracking |
|
||||||
|
| Label | 12px (0.75rem) | 400/500 | 1.83 | 0.96px | LamboType, uppercase badges and micro labels |
|
||||||
|
| Micro | 10px (0.63rem) | 400 | 1.00–2.00 | 0.225px | LamboType, uppercase, smallest text |
|
||||||
|
|
||||||
|
### Principles
|
||||||
|
- **ALL-CAPS is the default voice**: Display and feature headings are universally uppercase. This creates a shouting, commanding tone that matches the brand's aggression
|
||||||
|
- **Extreme scale range**: From 120px heroes to 10px micro labels — a 12:1 ratio that creates dramatic visual hierarchy
|
||||||
|
- **Tight line-heights at scale**: Display sizes use 0.92-1.19 line-height, creating dense, compressed blocks of type that feel stamped rather than typeset
|
||||||
|
- **Weight 400 dominates**: Unlike many design systems that use bold for emphasis, Lamborghini's regular weight carries the headlines — the typeface itself is so distinctive it doesn't need weight variation
|
||||||
|
- **Negative tracking on captions**: -0.42px letter-spacing on 14px captions creates a compressed, technical aesthetic
|
||||||
|
- **Positive tracking on micro text**: +0.225px at 10px ensures legibility at the smallest sizes
|
||||||
|
- **Single typeface discipline**: LamboType handles everything — the 12° angled terminals and hexagonal geometry provide visual coherence across all sizes
|
||||||
|
|
||||||
|
## 4. Component Stylings
|
||||||
|
|
||||||
|
### Buttons
|
||||||
|
All buttons use **zero border-radius** — sharp, angular rectangles that echo the aggressive lines of Lamborghini vehicles.
|
||||||
|
|
||||||
|
**Gold Accent CTA** — The primary action:
|
||||||
|
- Default: bg `#FFC000` (Lamborghini Gold), text `#000000`, padding 24px, fontSize 16px, fontWeight 400, borderRadius 0px, no border
|
||||||
|
- Hover: bg `#917300` (Dark Gold), darkens significantly
|
||||||
|
- Class: `btn-accent btn-large`
|
||||||
|
- Used for: "Discover More", "Tickets", "Start Configuration"
|
||||||
|
|
||||||
|
**Transparent Ghost** — The secondary action on dark backgrounds:
|
||||||
|
- Default: bg transparent, text `#FFFFFF`, border 1px solid `#FFFFFF`, padding 16px, opacity 0.5
|
||||||
|
- Hover: bg `#1EAEDB` (Teal Action), text white, opacity 0.7
|
||||||
|
- Focus: bg `#1EAEDB`, border 1px solid `#000000`, outline 2px solid `#000000`
|
||||||
|
- Used for: secondary CTAs on hero sections and dark panels
|
||||||
|
|
||||||
|
**White Filled** — Light-mode primary:
|
||||||
|
- Default: bg `#FFFFFF`, text `#202020`, no border
|
||||||
|
- Used for: CTAs on dark sections where gold isn't appropriate
|
||||||
|
|
||||||
|
**Black Filled** — Dark filled variant:
|
||||||
|
- Default: bg `#000000`, text `#202020`
|
||||||
|
- Used for: Inverted CTA on light sections
|
||||||
|
|
||||||
|
**Gray Neutral** — Subtle action:
|
||||||
|
- Default: bg `#969696`, text `#202020`
|
||||||
|
- Used for: secondary/tertiary actions, badge-like buttons
|
||||||
|
|
||||||
|
### Cards & Containers
|
||||||
|
- Background: `#202020` (Charcoal) on black canvas, or `#000000` on lighter sections
|
||||||
|
- Border: `0px 1px solid #202020` bottom borders for section dividers
|
||||||
|
- Border-radius: 0px (completely sharp corners)
|
||||||
|
- Shadow: minimal, uses overlay opacity for depth
|
||||||
|
- Content: full-bleed photography + overlaid text in white
|
||||||
|
|
||||||
|
### Inputs & Forms
|
||||||
|
- Minimal form presence on the marketing site
|
||||||
|
- Switch elements: border-radius 20px (the only rounded element), border 1px solid `#DDDDDD`
|
||||||
|
- Cookie banner input style: white text on black with `#7D7D7D` borders
|
||||||
|
|
||||||
|
### Navigation
|
||||||
|
- **Desktop**: Centered bull logo, "MENU" hamburger with icon on left, search icon + bookmarks icon on right
|
||||||
|
- **Background**: Transparent (inherits black page background)
|
||||||
|
- **Sticky**: Fixed to top, floats above content
|
||||||
|
- **No visible borders or shadows** — elements float in the darkness
|
||||||
|
- **"MENU" label**: White text at 14px weight 400, uppercase, accompanies hamburger icon
|
||||||
|
- **Hexagonal motifs**: Pause button on hero sections uses hexagonal outline shape
|
||||||
|
|
||||||
|
### Image Treatment
|
||||||
|
- **Hero**: Full-viewport video sections (100vh) with cinematic event/vehicle footage
|
||||||
|
- **Event photography**: Full-bleed aerial shots of Lamborghini Arena events
|
||||||
|
- **Vehicle imagery**: High-contrast studio shots on dark backgrounds, full-width
|
||||||
|
- **Aspect ratios**: Predominantly 16:9 and wider for cinematic feel
|
||||||
|
- **Dark gradient overlays**: Subtle darkening at top/bottom edges of video to ensure text legibility
|
||||||
|
|
||||||
|
### Distinctive Components
|
||||||
|
- **Hexagonal Pause Button**: Video control uses a hexagonal outline (matching the brand's geometric DNA from the typeface), positioned bottom-right of hero sections
|
||||||
|
- **Progress Bar**: Thin white line at bottom of hero sections indicating video/slide progress
|
||||||
|
- **Badge/Tag**: bg `#969696`, text white, padding 8px, fontSize 10px, borderRadius 2px — tiny metallic pills
|
||||||
|
|
||||||
|
## 5. Layout Principles
|
||||||
|
|
||||||
|
### Spacing System
|
||||||
|
- **Base unit**: 8px
|
||||||
|
- **Full scale**: 2px, 4px, 5px, 8px, 10px, 12px, 15px, 16px, 20px, 24px, 32px, 40px, 48px, 56px
|
||||||
|
- **Button padding**: 16px (ghost), 24px (gold accent)
|
||||||
|
- **Section padding**: 48–56px vertical, 40px horizontal
|
||||||
|
- **Small spacing**: 2–5px for fine adjustments (badge padding, border spacing)
|
||||||
|
|
||||||
|
### Grid & Container
|
||||||
|
- **Framework**: Bootstrap grid system (container + row + col)
|
||||||
|
- **Max width**: 1440px (largest breakpoint)
|
||||||
|
- **Columns**: Standard 12-column Bootstrap grid
|
||||||
|
- **Full-bleed**: Hero sections break out of grid to fill viewport edge-to-edge
|
||||||
|
- **Content areas**: Centered within 1200px max-width containers
|
||||||
|
|
||||||
|
### Whitespace Philosophy
|
||||||
|
Lamborghini uses darkness as whitespace. The generous black expanses between content blocks serve the same function as white space in a light design — creating breathing room that elevates each element to the status of exhibit. A model name floating in the middle of a black viewport has the same visual weight as a gallery piece on a white wall. The absence of color IS the design.
|
||||||
|
|
||||||
|
### Border Radius Scale
|
||||||
|
| Value | Context |
|
||||||
|
|-------|---------|
|
||||||
|
| 0px | Default for everything — buttons, cards, containers, images |
|
||||||
|
| 1px | Subtle span elements |
|
||||||
|
| 2px | Badges, close buttons, cookie elements — barely perceptible |
|
||||||
|
| 20px | Toggle switches only — the sole rounded element |
|
||||||
|
|
||||||
|
## 6. Depth & Elevation
|
||||||
|
|
||||||
|
| Level | Treatment | Use |
|
||||||
|
|-------|-----------|-----|
|
||||||
|
| Level 0 (Abyss) | `#000000` flat | Page background, deepest layer |
|
||||||
|
| Level 1 (Surface) | `#181818` or `#202020` | Cards, content panels, elevated sections |
|
||||||
|
| Level 2 (Overlay) | `rgba(0,0,0,0.7)` | Modal backdrops, video dimming |
|
||||||
|
| Level 3 (Fog) | `rgba(0,0,0,0.5)` | Lighter overlays, hover states |
|
||||||
|
| Level 4 (Mist) | `rgba(0,0,0,0.25)` | Subtle depth hints |
|
||||||
|
|
||||||
|
### Shadow Philosophy
|
||||||
|
Lamborghini achieves depth through surface color layering rather than shadows. On a black canvas, traditional drop shadows are invisible — instead, the system creates elevation by shifting from absolute black to progressively lighter dark grays: `#000000` → `#181818` → `#202020` → `#494949`. This "darkness gradient" approach means that elevated elements are literally lighter than their surroundings, inverting the traditional shadow model.
|
||||||
|
|
||||||
|
### Decorative Depth
|
||||||
|
- Full-bleed video provides atmospheric depth through cinematic lighting
|
||||||
|
- The hexagonal pause button floats with a thin white outline stroke
|
||||||
|
- Progress bars at hero section bottoms create a subtle horizon line
|
||||||
|
- No gradients, glows, or blur effects on UI elements — the photography provides all visual richness
|
||||||
|
|
||||||
|
## 7. Do's and Don'ts
|
||||||
|
|
||||||
|
### Do
|
||||||
|
- Use absolute black (`#000000`) as the primary background — never dark gray as a substitute
|
||||||
|
- Apply Lamborghini Gold (`#FFC000`) exclusively for primary CTA buttons — never for decorative purposes
|
||||||
|
- Set all display headings in uppercase with LamboType — the brand voice is always SHOUTING
|
||||||
|
- Use zero border-radius on buttons and cards — sharp angles are non-negotiable
|
||||||
|
- Maintain tight line-heights (0.92–1.19) on display type to create dense, architectural text blocks
|
||||||
|
- Use the transparent ghost button (white border, 50% opacity) as the secondary CTA on dark backgrounds
|
||||||
|
- Let full-viewport video/photography carry emotional weight — UI is infrastructure, not decoration
|
||||||
|
- Reserve hexagonal geometry for UI icons and the video control button
|
||||||
|
- Use weight 400 (regular) for headlines — the typeface is distinctive enough without bold emphasis
|
||||||
|
- Keep the gray palette achromatic — all neutrals are pure gray without color tinting
|
||||||
|
|
||||||
|
### Don't
|
||||||
|
- Introduce additional accent colors beyond gold — the monochrome-plus-gold system is sacred
|
||||||
|
- Apply border-radius to buttons or cards — curved edges contradict the angular vehicle aesthetic
|
||||||
|
- Use LamboType in italic or decorative styles — the brand is always upright and direct
|
||||||
|
- Add gradients to buttons or surfaces — depth comes from surface layering, not blending
|
||||||
|
- Use light backgrounds as the primary canvas — darkness is the default state, light is the exception
|
||||||
|
- Mix lowercase into display headings — the uppercase convention communicates authority and power
|
||||||
|
- Add hover animations with scale or translate — interactions should be color-only (background/opacity shifts)
|
||||||
|
- Use Open Sans for display text — LamboType must handle all visible typography
|
||||||
|
- Create busy layouts with many small elements — Lamborghini's design is about singular, bold statements
|
||||||
|
- Apply shadows to elements — on a black canvas, shadows are meaningless; use surface color shifts instead
|
||||||
|
|
||||||
|
## 8. Responsive Behavior
|
||||||
|
|
||||||
|
### Breakpoints
|
||||||
|
| Name | Width | Key Changes |
|
||||||
|
|------|-------|-------------|
|
||||||
|
| Mobile Small | <425px | Single column, reduced type scale, stacked buttons |
|
||||||
|
| Mobile | 425-576px | Single column, hamburger nav, hero text ~40px |
|
||||||
|
| Tablet Small | 576-768px | 2-column grid begins, padding adjusts |
|
||||||
|
| Tablet | 768-1024px | 2-column layout, expanded hero, vehicle cards side-by-side |
|
||||||
|
| Desktop | 1024-1280px | Full navigation, 3+ column grids, display text at 80px |
|
||||||
|
| Desktop Large | 1280-1440px | Full layout, hero at 120px display, max-width containers |
|
||||||
|
| Wide | >1440px | Content centered, margins expand, hero fills viewport |
|
||||||
|
|
||||||
|
### Touch Targets
|
||||||
|
- Gold CTA buttons: 48px+ minimum height with 24px padding (exceeds WCAG 44×44px)
|
||||||
|
- Ghost buttons: 48px+ with 16px padding
|
||||||
|
- Hamburger menu: large touch target (~48px square)
|
||||||
|
- Hexagonal pause button: approximately 48px diameter
|
||||||
|
|
||||||
|
### Collapsing Strategy
|
||||||
|
- **Navigation**: Always hamburger-based ("MENU" + icon) — no horizontal nav expansion on any breakpoint
|
||||||
|
- **Hero video**: Maintains full-viewport height across all breakpoints, adjusting object-fit
|
||||||
|
- **Display type**: Scales from 120px (desktop) → 80px (tablet) → 54px/40px (mobile)
|
||||||
|
- **Button layout**: Side-by-side on desktop, stacks vertically on mobile
|
||||||
|
- **Grid columns**: 3-column → 2-column → 1-column progression
|
||||||
|
- **Section spacing**: Reduces from 56px → 40px → 24px vertical padding
|
||||||
|
|
||||||
|
### Image Behavior
|
||||||
|
- Hero videos use `object-fit: cover` to maintain cinematic framing at all sizes
|
||||||
|
- Vehicle images scale within their containers with maintained aspect ratios
|
||||||
|
- Event photography crops to viewport width on narrow screens
|
||||||
|
- Background images darken at edges to maintain text contrast on all viewports
|
||||||
|
|
||||||
|
## 9. Agent Prompt Guide
|
||||||
|
|
||||||
|
### Quick Color Reference
|
||||||
|
- Primary CTA: "Lamborghini Gold (#FFC000)"
|
||||||
|
- Background: "Absolute Black (#000000)"
|
||||||
|
- Surface: "Charcoal (#202020)"
|
||||||
|
- Heading text: "Pure White (#FFFFFF)"
|
||||||
|
- Body text: "Ash (#7D7D7D)"
|
||||||
|
- Link hover: "Link Blue (#3860BE)"
|
||||||
|
- Accent: "Cyan Pulse (#29ABE2)"
|
||||||
|
- Border: "Pure White (#FFFFFF) at 50% opacity"
|
||||||
|
|
||||||
|
### Example Component Prompts
|
||||||
|
- "Create a hero section with a full-viewport black background, the model name 'TEMERARIO' in LamboType at 120px uppercase weight 400 white text with 0.92 line-height, centered vertically, with a Lamborghini Gold (#FFC000) 'Discover More' button below — sharp corners, 0px radius, 24px padding, black text"
|
||||||
|
- "Design a transparent ghost button with 1px solid white border at 50% opacity, white text at 14.4px uppercase with 0.2px letter-spacing, padding 16px, on a black background — hover state changes to Teal Action (#1EAEDB) background with 70% opacity"
|
||||||
|
- "Build a navigation bar with zero visible background on absolute black, a centered bull logo, 'MENU' text label with hamburger icon on the left, and search + bookmark icons on the right — all in white, sticky position"
|
||||||
|
- "Create a news card grid on charcoal (#202020) background with white headlines at 27px uppercase, body text in #7D7D7D at 16px, and a white underlined 'Read More' link that turns #3860BE on hover"
|
||||||
|
- "Design a section divider using a 1px solid bottom border in #202020 on a black canvas — the elevation difference is purely through surface color shift, not shadow"
|
||||||
|
|
||||||
|
### Iteration Guide
|
||||||
|
When refining existing screens generated with this design system:
|
||||||
|
1. Focus on ONE component at a time — Lamborghini's system is extreme and every element must feel aggressive
|
||||||
|
2. Reference specific color names and hex codes from this document — the palette has only about 5 active colors
|
||||||
|
3. Use natural language descriptions, not CSS values — "sharp-cut golden rectangle" not "border-radius: 0px; background: #FFC000"
|
||||||
|
4. Describe the desired "feel" alongside specific measurements — "floating in total darkness" communicates the black canvas better than "background: #000000"
|
||||||
|
5. Remember that UPPERCASE IS THE DEFAULT — if text isn't uppercase at display sizes, it probably should be
|
||||||
23
design-md/lamborghini/README.md
Normal file
23
design-md/lamborghini/README.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Lamborghini Inspired Design System
|
||||||
|
|
||||||
|
[DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/lamborghini/DESIGN.md) extracted from the public [lamborghini](https://lamborghini.com/) website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
| File | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `DESIGN.md` | Complete design system documentation (9 sections) |
|
||||||
|
| `preview.html` | Interactive design token catalog (light) |
|
||||||
|
| `preview-dark.html` | Interactive design token catalog (dark) |
|
||||||
|
|
||||||
|
Use [DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/lamborghini/DESIGN.md) to use as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that looks like the Lamborghini design language.
|
||||||
|
|
||||||
|
## Preview
|
||||||
|
|
||||||
|
A sample landing page built with DESIGN.md. It shows the actual colors, typography, buttons, cards, spacing, and elevation, all in one page.
|
||||||
|
|
||||||
|
### Dark Mode
|
||||||
|

|
||||||
|
|
||||||
|
### Light Mode
|
||||||
|

|
||||||
303
design-md/lamborghini/preview-dark.html
Normal file
303
design-md/lamborghini/preview-dark.html
Normal file
@ -0,0 +1,303 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Design System Inspired by Lamborghini — Dark Mode</title>
|
||||||
|
<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=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--lambo-gold: #FFC000;
|
||||||
|
--dark-gold: #917300;
|
||||||
|
--gold-text: #FFCE3E;
|
||||||
|
--pure-white: #FFFFFF;
|
||||||
|
--absolute-black: #000000;
|
||||||
|
--charcoal: #202020;
|
||||||
|
--dark-iron: #181818;
|
||||||
|
--graphite: #494949;
|
||||||
|
--ash: #7D7D7D;
|
||||||
|
--steel: #969696;
|
||||||
|
--mist: #E6E6E6;
|
||||||
|
--near-white: #F8F8F8;
|
||||||
|
--cyan-pulse: #29ABE2;
|
||||||
|
--link-blue: #3860BE;
|
||||||
|
--teal-action: #1EAEDB;
|
||||||
|
--surface-deep: #0A0A0A;
|
||||||
|
--surface-mid: #141414;
|
||||||
|
--text-primary: #F0F0F0;
|
||||||
|
--text-muted: #888888;
|
||||||
|
--border-dark: #1A1A1A;
|
||||||
|
--font-primary: 'Roboto', Helvetica Neue, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: var(--font-primary);
|
||||||
|
background: var(--surface-deep);
|
||||||
|
color: var(--text-primary);
|
||||||
|
font-size: 16px; font-weight: 400; line-height: 1.50;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark-badge {
|
||||||
|
position: fixed; top: 16px; right: 16px; z-index: 200;
|
||||||
|
background: var(--lambo-gold); color: var(--absolute-black);
|
||||||
|
padding: 6px 14px; border-radius: 0; font-size: 11px; font-weight: 500;
|
||||||
|
letter-spacing: 1px; text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
position: sticky; top: 0; z-index: 100;
|
||||||
|
display: flex; align-items: center; justify-content: space-between;
|
||||||
|
padding: 16px 40px; background: var(--surface-deep);
|
||||||
|
border-bottom: 1px solid var(--border-dark);
|
||||||
|
}
|
||||||
|
.nav-brand { font-size: 13px; font-weight: 500; color: var(--text-primary); text-decoration: none; letter-spacing: 2px; text-transform: uppercase; }
|
||||||
|
.nav-links { display: flex; align-items: center; gap: 24px; list-style: none; }
|
||||||
|
.nav-links a { font-size: 14px; font-weight: 400; color: var(--text-primary); text-decoration: none; text-transform: uppercase; letter-spacing: 0.2px; transition: color 0.3s; }
|
||||||
|
.nav-links a:hover { color: var(--link-blue); }
|
||||||
|
.nav-cta { background: var(--lambo-gold); color: var(--absolute-black); padding: 12px 24px; border-radius: 0; font-size: 14px; font-weight: 500; text-decoration: none; text-transform: uppercase; letter-spacing: 0.2px; transition: background 0.3s; }
|
||||||
|
.nav-cta:hover { background: var(--dark-gold); }
|
||||||
|
|
||||||
|
.hero {
|
||||||
|
min-height: 100vh; display: flex; flex-direction: column;
|
||||||
|
align-items: center; justify-content: center; padding: 80px 40px;
|
||||||
|
background: var(--absolute-black); text-align: center; position: relative;
|
||||||
|
}
|
||||||
|
.hero::before {
|
||||||
|
content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0;
|
||||||
|
background: radial-gradient(ellipse at center, rgba(255,192,0,0.04) 0%, transparent 60%);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.hero h1 { font-size: 80px; font-weight: 400; line-height: 0.92; color: var(--text-primary); text-transform: uppercase; margin-bottom: 16px; position: relative; }
|
||||||
|
.hero .subtitle { font-size: 16px; font-weight: 300; color: var(--text-muted); margin-bottom: 40px; text-transform: uppercase; letter-spacing: 0.2px; }
|
||||||
|
.hero-buttons { display: flex; gap: 16px; position: relative; }
|
||||||
|
.btn-gold { background: var(--lambo-gold); color: var(--absolute-black); border: none; border-radius: 0; padding: 16px 32px; font-family: var(--font-primary); font-size: 16px; font-weight: 400; cursor: pointer; text-decoration: none; text-transform: uppercase; transition: background 0.3s; }
|
||||||
|
.btn-gold:hover { background: var(--dark-gold); }
|
||||||
|
.btn-ghost { background: transparent; color: var(--text-primary); border: 1px solid var(--text-primary); border-radius: 0; padding: 16px 32px; font-family: var(--font-primary); font-size: 14.4px; font-weight: 300; opacity: 0.5; cursor: pointer; text-decoration: none; text-transform: uppercase; letter-spacing: 0.2px; transition: background 0.3s, opacity 0.3s; }
|
||||||
|
.btn-ghost:hover { background: var(--teal-action); opacity: 0.7; }
|
||||||
|
|
||||||
|
.section { padding: 80px 40px; max-width: 1200px; margin: 0 auto; }
|
||||||
|
.section-title { font-size: 40px; font-weight: 400; color: var(--text-primary); margin-bottom: 8px; text-transform: uppercase; line-height: 1.15; }
|
||||||
|
.section-desc { font-size: 16px; color: var(--text-muted); margin-bottom: 40px; line-height: 1.50; }
|
||||||
|
.section-divider { border: none; border-top: 1px solid var(--border-dark); max-width: 1200px; margin: 0 auto; }
|
||||||
|
|
||||||
|
.color-group-label { font-size: 12px; font-weight: 500; color: var(--text-muted); margin-bottom: 16px; margin-top: 24px; text-transform: uppercase; letter-spacing: 0.96px; }
|
||||||
|
.color-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 16px; margin-bottom: 32px; }
|
||||||
|
.color-swatch { overflow: hidden; }
|
||||||
|
.color-swatch .swatch-block { height: 80px; }
|
||||||
|
.color-swatch .swatch-info { padding: 12px; background: var(--surface-mid); border: 1px solid var(--border-dark); border-top: none; }
|
||||||
|
.color-swatch .swatch-name { font-size: 13px; font-weight: 500; color: var(--text-primary); margin-bottom: 2px; }
|
||||||
|
.color-swatch .swatch-hex { font-size: 12px; color: var(--text-muted); margin-bottom: 4px; font-family: monospace; }
|
||||||
|
.color-swatch .swatch-role { font-size: 11px; color: var(--ash); line-height: 1.3; }
|
||||||
|
|
||||||
|
.type-sample { margin-bottom: 32px; padding-bottom: 24px; border-bottom: 1px solid var(--border-dark); }
|
||||||
|
.type-sample:last-child { border-bottom: none; }
|
||||||
|
.type-label { font-size: 12px; color: var(--text-muted); margin-top: 8px; font-family: monospace; text-transform: none; }
|
||||||
|
|
||||||
|
.button-row { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; margin-bottom: 16px; }
|
||||||
|
.btn-white { background: var(--pure-white); color: var(--charcoal); border: none; border-radius: 0; padding: 16px 32px; font-family: var(--font-primary); font-size: 14.4px; font-weight: 400; cursor: pointer; text-transform: uppercase; }
|
||||||
|
.btn-black { background: var(--absolute-black); color: var(--text-primary); border: 1px solid var(--text-primary); border-radius: 0; padding: 16px 32px; font-family: var(--font-primary); font-size: 14.4px; font-weight: 400; cursor: pointer; text-transform: uppercase; }
|
||||||
|
.btn-gray { background: var(--steel); color: var(--charcoal); border: none; border-radius: 0; padding: 12px 24px; font-family: var(--font-primary); font-size: 13px; font-weight: 500; cursor: pointer; text-transform: uppercase; }
|
||||||
|
|
||||||
|
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; margin-bottom: 32px; }
|
||||||
|
.card { background: var(--surface-mid); overflow: hidden; border: 1px solid var(--border-dark); }
|
||||||
|
.card-image { height: 200px; background: var(--absolute-black); display: flex; align-items: center; justify-content: center; }
|
||||||
|
.card-image-placeholder { font-size: 48px; font-weight: 400; color: var(--charcoal); text-transform: uppercase; }
|
||||||
|
.card-body { padding: 24px; }
|
||||||
|
.card-title { font-size: 27px; font-weight: 400; color: var(--text-primary); margin-bottom: 8px; text-transform: uppercase; line-height: 1.37; }
|
||||||
|
.card-desc { font-size: 16px; color: var(--text-muted); line-height: 1.50; margin-bottom: 16px; }
|
||||||
|
.card-link { font-size: 14px; color: var(--text-primary); text-decoration: underline; text-transform: uppercase; letter-spacing: 0.2px; transition: color 0.3s; }
|
||||||
|
.card-link:hover { color: var(--link-blue); }
|
||||||
|
|
||||||
|
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-bottom: 32px; }
|
||||||
|
.form-group { display: flex; flex-direction: column; gap: 6px; }
|
||||||
|
.form-label { font-size: 12px; font-weight: 500; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.96px; }
|
||||||
|
.form-input { font-family: var(--font-primary); font-size: 16px; color: var(--text-primary); background: var(--absolute-black); border: 1px solid var(--charcoal); border-radius: 0; padding: 12px 16px; min-height: 48px; outline: none; transition: border-color 0.3s; }
|
||||||
|
.form-input::placeholder { color: var(--ash); }
|
||||||
|
.form-input:focus { border-color: var(--lambo-gold); }
|
||||||
|
.form-input.error { border-color: #E74C3C; }
|
||||||
|
.form-textarea { font-family: var(--font-primary); font-size: 16px; color: var(--text-primary); background: var(--absolute-black); border: 1px solid var(--charcoal); border-radius: 0; padding: 12px 16px; min-height: 100px; outline: none; resize: vertical; transition: border-color 0.3s; }
|
||||||
|
.form-textarea::placeholder { color: var(--ash); }
|
||||||
|
.form-textarea:focus { border-color: var(--lambo-gold); }
|
||||||
|
|
||||||
|
.spacing-row { display: flex; align-items: center; gap: 16px; margin-bottom: 12px; }
|
||||||
|
.spacing-box { height: 32px; background: var(--lambo-gold); opacity: 0.5; }
|
||||||
|
.spacing-label { font-size: 12px; color: var(--text-muted); font-family: monospace; min-width: 80px; }
|
||||||
|
|
||||||
|
.radius-row { display: flex; gap: 24px; flex-wrap: wrap; margin-bottom: 32px; }
|
||||||
|
.radius-item { text-align: center; }
|
||||||
|
.radius-box { width: 80px; height: 80px; background: var(--surface-mid); border: 2px solid var(--charcoal); margin-bottom: 8px; }
|
||||||
|
.radius-value { font-size: 12px; font-weight: 500; color: var(--text-primary); font-family: monospace; }
|
||||||
|
.radius-context { font-size: 11px; color: var(--text-muted); }
|
||||||
|
|
||||||
|
.elevation-row { display: flex; gap: 24px; flex-wrap: wrap; margin-bottom: 32px; }
|
||||||
|
.elevation-card { width: 200px; padding: 24px; text-align: center; }
|
||||||
|
.elevation-name { font-size: 13px; font-weight: 500; color: var(--text-primary); margin-bottom: 4px; }
|
||||||
|
.elevation-desc { font-size: 11px; color: var(--text-muted); }
|
||||||
|
|
||||||
|
footer { padding: 40px; text-align: center; border-top: 1px solid var(--border-dark); }
|
||||||
|
footer p { font-size: 12px; color: var(--ash); text-transform: uppercase; letter-spacing: 0.96px; }
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.hero h1 { font-size: 40px; }
|
||||||
|
.hero-buttons { flex-direction: column; align-items: center; }
|
||||||
|
.color-grid { grid-template-columns: repeat(2, 1fr); }
|
||||||
|
.form-grid { grid-template-columns: 1fr; }
|
||||||
|
.card-grid { grid-template-columns: 1fr; }
|
||||||
|
nav { padding: 12px 20px; }
|
||||||
|
.section { padding: 60px 20px; }
|
||||||
|
.nav-links { display: none; }
|
||||||
|
.section-title { font-size: 27px; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="dark-badge">Dark Mode</div>
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<span class="nav-brand">awesome-design-md</span>
|
||||||
|
<ul class="nav-links">
|
||||||
|
<li><a href="#">Models</a></li>
|
||||||
|
<li><a href="#">Motorsport</a></li>
|
||||||
|
<li><a href="#">Ownership</a></li>
|
||||||
|
<li><a href="#">Discover</a></li>
|
||||||
|
<li><a href="#" class="nav-cta">Configure</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section class="hero">
|
||||||
|
<h1>Design System Inspired by Lamborghini</h1>
|
||||||
|
<p class="subtitle">A visual catalog generated from DESIGN.md — darkness, gold, and uncompromising angles.</p>
|
||||||
|
<div class="hero-buttons">
|
||||||
|
<a href="#" class="btn-gold">Discover More</a>
|
||||||
|
<a href="#" class="btn-ghost">View Models</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Color Palette</h2>
|
||||||
|
<p class="section-desc">Monochrome darkness punctuated by Lamborghini Gold.</p>
|
||||||
|
<div class="color-group-label">Primary</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#FFC000;"></div><div class="swatch-info"><div class="swatch-name">Lamborghini Gold</div><div class="swatch-hex">#FFC000</div><div class="swatch-role">Primary CTA accent</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#FFFFFF;"></div><div class="swatch-info"><div class="swatch-name">Pure White</div><div class="swatch-hex">#FFFFFF</div><div class="swatch-role">Text, logo, nav</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#917300;"></div><div class="swatch-info"><div class="swatch-name">Dark Gold</div><div class="swatch-hex">#917300</div><div class="swatch-role">Gold hover state</div></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-group-label">Surface & Background</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#000000;border:1px solid #1A1A1A;"></div><div class="swatch-info"><div class="swatch-name">Absolute Black</div><div class="swatch-hex">#000000</div><div class="swatch-role">Page background</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#181818;"></div><div class="swatch-info"><div class="swatch-name">Dark Iron</div><div class="swatch-hex">#181818</div><div class="swatch-role">Deep sections</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#202020;"></div><div class="swatch-info"><div class="swatch-name">Charcoal</div><div class="swatch-hex">#202020</div><div class="swatch-role">Cards, panels</div></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-group-label">Neutrals</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#494949;"></div><div class="swatch-info"><div class="swatch-name">Graphite</div><div class="swatch-hex">#494949</div><div class="swatch-role">Text on light</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#7D7D7D;"></div><div class="swatch-info"><div class="swatch-name">Ash</div><div class="swatch-hex">#7D7D7D</div><div class="swatch-role">Muted text</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#969696;"></div><div class="swatch-info"><div class="swatch-name">Steel</div><div class="swatch-hex">#969696</div><div class="swatch-role">Disabled, badges</div></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-group-label">Accent</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#29ABE2;"></div><div class="swatch-info"><div class="swatch-name">Cyan Pulse</div><div class="swatch-hex">#29ABE2</div><div class="swatch-role">Informational</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#3860BE;"></div><div class="swatch-info"><div class="swatch-name">Link Blue</div><div class="swatch-hex">#3860BE</div><div class="swatch-role">Link hover</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#1EAEDB;"></div><div class="swatch-info"><div class="swatch-name">Teal Action</div><div class="swatch-hex">#1EAEDB</div><div class="swatch-role">Ghost btn hover</div></div></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Typography Scale</h2>
|
||||||
|
<p class="section-desc">LamboType — shown with Roboto fallback. All display text uppercase.</p>
|
||||||
|
<div class="type-sample"><div style="font-size:80px;font-weight:400;line-height:0.92;text-transform:uppercase;color:var(--text-primary);">TEMERARIO</div><div class="type-label">Hero Display — 120px→80px / 400 / 0.92 LH / uppercase</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:54px;font-weight:400;line-height:1.19;text-transform:uppercase;color:var(--text-primary);">YOU CAN'T HIDE</div><div class="type-label">Section Title — 54px / 400 / 1.19 LH / uppercase</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:27px;font-weight:400;line-height:1.37;text-transform:uppercase;color:var(--text-primary);">NEWS LAMBORGHINI WORLD</div><div class="type-label">Feature Heading — 27px / 400 / 1.37 LH / uppercase</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:18px;font-weight:400;line-height:1.56;color:var(--text-primary);">The arena of emotions. Power meets precision, every detail tells a story.</div><div class="type-label">Body Large — 18px / 400 / 1.56 LH</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:12px;font-weight:500;line-height:1.83;text-transform:uppercase;letter-spacing:0.96px;color:var(--text-muted);">LABEL BADGE MICRO</div><div class="type-label">Label — 12px / 500 / uppercase / +0.96px</div></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Button Variants</h2>
|
||||||
|
<p class="section-desc">Zero radius. Sharp angles. Gold primary, ghost secondary.</p>
|
||||||
|
<div class="button-row"><a href="#" class="btn-gold">Discover More</a><span style="font-size:12px;color:var(--text-muted);font-family:monospace;">Gold Accent — #FFC000, 0px radius</span></div>
|
||||||
|
<div class="button-row"><a href="#" class="btn-ghost">View Models</a><span style="font-size:12px;color:var(--text-muted);font-family:monospace;">Ghost — transparent, white border, 50% opacity</span></div>
|
||||||
|
<div class="button-row"><a href="#" class="btn-white">Configure</a><span style="font-size:12px;color:var(--text-muted);font-family:monospace;">White Filled</span></div>
|
||||||
|
<div class="button-row"><a href="#" class="btn-black">Explore</a><span style="font-size:12px;color:var(--text-muted);font-family:monospace;">Black with border</span></div>
|
||||||
|
<div class="button-row"><a href="#" class="btn-gray">Details</a><span style="font-size:12px;color:var(--text-muted);font-family:monospace;">Gray neutral</span></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Card Examples</h2>
|
||||||
|
<p class="section-desc">Sharp-edged cards on deep dark surfaces.</p>
|
||||||
|
<div class="card-grid">
|
||||||
|
<div class="card"><div class="card-image"><span class="card-image-placeholder">T</span></div><div class="card-body"><div class="card-title">Temerario</div><div class="card-desc">The new V8 hybrid super sports car.</div><a href="#" class="card-link">Discover</a></div></div>
|
||||||
|
<div class="card"><div class="card-image"><span class="card-image-placeholder">R</span></div><div class="card-body"><div class="card-title">Revuelto</div><div class="card-desc">First V12 hybrid plug-in HPEV.</div><a href="#" class="card-link">Discover</a></div></div>
|
||||||
|
<div class="card"><div class="card-image"><span class="card-image-placeholder">U</span></div><div class="card-body"><div class="card-title">Urus SE</div><div class="card-desc">The world's first Super SUV.</div><a href="#" class="card-link">Discover</a></div></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Form Elements</h2>
|
||||||
|
<p class="section-desc">Sharp inputs on black. Gold focus border.</p>
|
||||||
|
<div class="form-grid">
|
||||||
|
<div class="form-group"><label class="form-label">Default</label><input class="form-input" type="text" placeholder="Enter name"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Focus</label><input class="form-input" type="text" placeholder="Focused" style="border-color:var(--lambo-gold);"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Error</label><input class="form-input error" type="text" value="Invalid"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Textarea</label><textarea class="form-textarea" placeholder="Message..."></textarea></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Spacing Scale</h2>
|
||||||
|
<p class="section-desc">8px base. From fine 4px to section 56px.</p>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">4px</div><div class="spacing-box" style="width:16px;"></div><span style="font-size:11px;color:var(--text-muted);">Fine</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">8px</div><div class="spacing-box" style="width:32px;"></div><span style="font-size:11px;color:var(--text-muted);">Base</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">16px</div><div class="spacing-box" style="width:64px;"></div><span style="font-size:11px;color:var(--text-muted);">Button pad</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">24px</div><div class="spacing-box" style="width:96px;"></div><span style="font-size:11px;color:var(--text-muted);">Gold CTA pad</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">40px</div><div class="spacing-box" style="width:160px;"></div><span style="font-size:11px;color:var(--text-muted);">Section H-pad</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">56px</div><div class="spacing-box" style="width:224px;"></div><span style="font-size:11px;color:var(--text-muted);">Section V-pad</span></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Border Radius</h2>
|
||||||
|
<p class="section-desc">Zero is default. Sharp angles are the Lamborghini DNA.</p>
|
||||||
|
<div class="radius-row">
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:0px;"></div><div class="radius-value">0px</div><div class="radius-context">Default</div></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:2px;"></div><div class="radius-value">2px</div><div class="radius-context">Badges</div></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:20px;"></div><div class="radius-value">20px</div><div class="radius-context">Switches</div></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section" style="background:var(--absolute-black);max-width:100%;padding:80px 40px;">
|
||||||
|
<div style="max-width:1200px;margin:0 auto;">
|
||||||
|
<h2 class="section-title">Elevation & Depth</h2>
|
||||||
|
<p class="section-desc">No shadows. Surface color layering only.</p>
|
||||||
|
<div class="elevation-row">
|
||||||
|
<div class="elevation-card" style="background:var(--absolute-black);border:1px solid var(--border-dark);"><div class="elevation-name">Level 0 — Abyss</div><div class="elevation-desc">#000000</div></div>
|
||||||
|
<div class="elevation-card" style="background:var(--dark-iron);border:1px solid var(--charcoal);"><div class="elevation-name">Level 1 — Surface</div><div class="elevation-desc">#181818</div></div>
|
||||||
|
<div class="elevation-card" style="background:var(--charcoal);border:1px solid var(--graphite);"><div class="elevation-name">Level 2 — Panel</div><div class="elevation-desc">#202020</div></div>
|
||||||
|
<div class="elevation-card" style="background:rgba(0,0,0,0.7);border:1px solid var(--border-dark);"><div class="elevation-name">Level 3 — Overlay</div><div class="elevation-desc">rgba(0,0,0,0.7)</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer><p>Design System Inspired by Lamborghini — Generated from DESIGN.md by awesome-design-md</p></footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
381
design-md/lamborghini/preview.html
Normal file
381
design-md/lamborghini/preview.html
Normal file
@ -0,0 +1,381 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Design System Inspired by Lamborghini</title>
|
||||||
|
<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=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--lambo-gold: #FFC000;
|
||||||
|
--dark-gold: #917300;
|
||||||
|
--gold-text: #FFCE3E;
|
||||||
|
--pure-white: #FFFFFF;
|
||||||
|
--absolute-black: #000000;
|
||||||
|
--charcoal: #202020;
|
||||||
|
--dark-iron: #181818;
|
||||||
|
--graphite: #494949;
|
||||||
|
--ash: #7D7D7D;
|
||||||
|
--steel: #969696;
|
||||||
|
--slate: #666666;
|
||||||
|
--mist: #E6E6E6;
|
||||||
|
--near-white: #F8F8F8;
|
||||||
|
--cyan-pulse: #29ABE2;
|
||||||
|
--link-blue: #3860BE;
|
||||||
|
--teal-action: #1EAEDB;
|
||||||
|
--font-primary: 'Roboto', Helvetica Neue, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: var(--font-primary);
|
||||||
|
background: var(--absolute-black);
|
||||||
|
color: var(--pure-white);
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.50;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NAV */
|
||||||
|
nav {
|
||||||
|
position: sticky; top: 0; z-index: 100;
|
||||||
|
display: flex; align-items: center; justify-content: space-between;
|
||||||
|
padding: 16px 40px;
|
||||||
|
background: var(--absolute-black);
|
||||||
|
border-bottom: 1px solid var(--charcoal);
|
||||||
|
}
|
||||||
|
.nav-brand {
|
||||||
|
font-size: 13px; font-weight: 500; color: var(--pure-white);
|
||||||
|
text-decoration: none; letter-spacing: 2px; text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.nav-links { display: flex; align-items: center; gap: 24px; list-style: none; }
|
||||||
|
.nav-links a {
|
||||||
|
font-size: 14px; font-weight: 400; color: var(--pure-white);
|
||||||
|
text-decoration: none; text-transform: uppercase; letter-spacing: 0.2px;
|
||||||
|
transition: color 0.3s;
|
||||||
|
}
|
||||||
|
.nav-links a:hover { color: var(--link-blue); }
|
||||||
|
.nav-cta {
|
||||||
|
background: var(--lambo-gold); color: var(--absolute-black);
|
||||||
|
padding: 12px 24px; border-radius: 0; font-size: 14px; font-weight: 500;
|
||||||
|
text-decoration: none; text-transform: uppercase; letter-spacing: 0.2px;
|
||||||
|
transition: background 0.3s;
|
||||||
|
}
|
||||||
|
.nav-cta:hover { background: var(--dark-gold); }
|
||||||
|
|
||||||
|
/* HERO */
|
||||||
|
.hero {
|
||||||
|
min-height: 100vh; display: flex; flex-direction: column;
|
||||||
|
align-items: center; justify-content: center; padding: 80px 40px;
|
||||||
|
background: var(--absolute-black); text-align: center;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.hero::before {
|
||||||
|
content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0;
|
||||||
|
background: radial-gradient(ellipse at center, rgba(255,192,0,0.03) 0%, transparent 70%);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.hero h1 {
|
||||||
|
font-size: 80px; font-weight: 400; line-height: 0.92;
|
||||||
|
letter-spacing: normal; color: var(--pure-white); text-transform: uppercase;
|
||||||
|
margin-bottom: 16px; position: relative;
|
||||||
|
}
|
||||||
|
.hero .subtitle {
|
||||||
|
font-size: 16px; font-weight: 300; color: var(--ash);
|
||||||
|
margin-bottom: 40px; text-transform: uppercase; letter-spacing: 0.2px;
|
||||||
|
}
|
||||||
|
.hero-buttons { display: flex; gap: 16px; position: relative; }
|
||||||
|
.btn-gold {
|
||||||
|
background: var(--lambo-gold); color: var(--absolute-black);
|
||||||
|
border: none; border-radius: 0; padding: 16px 32px;
|
||||||
|
font-family: var(--font-primary); font-size: 16px; font-weight: 400;
|
||||||
|
cursor: pointer; text-decoration: none; text-transform: uppercase;
|
||||||
|
transition: background 0.3s;
|
||||||
|
}
|
||||||
|
.btn-gold:hover { background: var(--dark-gold); }
|
||||||
|
.btn-ghost {
|
||||||
|
background: transparent; color: var(--pure-white);
|
||||||
|
border: 1px solid var(--pure-white); border-radius: 0;
|
||||||
|
padding: 16px 32px; font-family: var(--font-primary);
|
||||||
|
font-size: 14.4px; font-weight: 300; opacity: 0.5;
|
||||||
|
cursor: pointer; text-decoration: none; text-transform: uppercase;
|
||||||
|
letter-spacing: 0.2px; transition: background 0.3s, opacity 0.3s;
|
||||||
|
}
|
||||||
|
.btn-ghost:hover { background: var(--teal-action); opacity: 0.7; }
|
||||||
|
|
||||||
|
/* SECTIONS */
|
||||||
|
.section {
|
||||||
|
padding: 80px 40px; max-width: 1200px; margin: 0 auto;
|
||||||
|
}
|
||||||
|
.section-title {
|
||||||
|
font-size: 40px; font-weight: 400; color: var(--pure-white);
|
||||||
|
margin-bottom: 8px; text-transform: uppercase; line-height: 1.15;
|
||||||
|
}
|
||||||
|
.section-desc {
|
||||||
|
font-size: 16px; color: var(--ash); margin-bottom: 40px; line-height: 1.50;
|
||||||
|
}
|
||||||
|
.section-divider {
|
||||||
|
border: none; border-top: 1px solid var(--charcoal);
|
||||||
|
max-width: 1200px; margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* COLORS */
|
||||||
|
.color-group-label {
|
||||||
|
font-size: 12px; font-weight: 500; color: var(--steel);
|
||||||
|
margin-bottom: 16px; margin-top: 24px; text-transform: uppercase;
|
||||||
|
letter-spacing: 0.96px;
|
||||||
|
}
|
||||||
|
.color-grid {
|
||||||
|
display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
||||||
|
gap: 16px; margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.color-swatch { overflow: hidden; }
|
||||||
|
.color-swatch .swatch-block { height: 80px; }
|
||||||
|
.color-swatch .swatch-info {
|
||||||
|
padding: 12px; background: var(--charcoal);
|
||||||
|
border: 1px solid var(--graphite); border-top: none;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-name { font-size: 13px; font-weight: 500; color: var(--pure-white); margin-bottom: 2px; }
|
||||||
|
.color-swatch .swatch-hex { font-size: 12px; color: var(--ash); margin-bottom: 4px; font-family: monospace; }
|
||||||
|
.color-swatch .swatch-role { font-size: 11px; color: var(--steel); line-height: 1.3; }
|
||||||
|
|
||||||
|
/* TYPOGRAPHY */
|
||||||
|
.type-sample { margin-bottom: 32px; padding-bottom: 24px; border-bottom: 1px solid var(--charcoal); }
|
||||||
|
.type-sample:last-child { border-bottom: none; }
|
||||||
|
.type-label { font-size: 12px; color: var(--ash); margin-top: 8px; font-family: monospace; text-transform: none; }
|
||||||
|
|
||||||
|
/* BUTTONS */
|
||||||
|
.button-row { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; margin-bottom: 16px; }
|
||||||
|
.btn-white { background: var(--pure-white); color: var(--charcoal); border: none; border-radius: 0; padding: 16px 32px; font-family: var(--font-primary); font-size: 14.4px; font-weight: 400; cursor: pointer; text-transform: uppercase; }
|
||||||
|
.btn-black { background: var(--absolute-black); color: var(--pure-white); border: 1px solid var(--pure-white); border-radius: 0; padding: 16px 32px; font-family: var(--font-primary); font-size: 14.4px; font-weight: 400; cursor: pointer; text-transform: uppercase; }
|
||||||
|
.btn-gray { background: var(--steel); color: var(--charcoal); border: none; border-radius: 0; padding: 12px 24px; font-family: var(--font-primary); font-size: 13px; font-weight: 500; cursor: pointer; text-transform: uppercase; letter-spacing: 0.13px; }
|
||||||
|
|
||||||
|
/* CARDS */
|
||||||
|
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; margin-bottom: 32px; }
|
||||||
|
.card { background: var(--charcoal); overflow: hidden; }
|
||||||
|
.card-image { height: 200px; background: var(--dark-iron); display: flex; align-items: center; justify-content: center; }
|
||||||
|
.card-image-placeholder { font-size: 48px; font-weight: 400; color: var(--graphite); text-transform: uppercase; }
|
||||||
|
.card-body { padding: 24px; }
|
||||||
|
.card-title { font-size: 27px; font-weight: 400; color: var(--pure-white); margin-bottom: 8px; text-transform: uppercase; line-height: 1.37; }
|
||||||
|
.card-desc { font-size: 16px; color: var(--ash); line-height: 1.50; margin-bottom: 16px; }
|
||||||
|
.card-link { font-size: 14px; color: var(--pure-white); text-decoration: underline; text-transform: uppercase; letter-spacing: 0.2px; transition: color 0.3s; }
|
||||||
|
.card-link:hover { color: var(--link-blue); }
|
||||||
|
|
||||||
|
/* FORMS */
|
||||||
|
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-bottom: 32px; }
|
||||||
|
.form-group { display: flex; flex-direction: column; gap: 6px; }
|
||||||
|
.form-label { font-size: 12px; font-weight: 500; color: var(--steel); text-transform: uppercase; letter-spacing: 0.96px; }
|
||||||
|
.form-input {
|
||||||
|
font-family: var(--font-primary); font-size: 16px; color: var(--pure-white);
|
||||||
|
background: var(--dark-iron); border: 1px solid var(--graphite);
|
||||||
|
border-radius: 0; padding: 12px 16px; min-height: 48px; outline: none;
|
||||||
|
transition: border-color 0.3s;
|
||||||
|
}
|
||||||
|
.form-input::placeholder { color: var(--ash); }
|
||||||
|
.form-input:focus { border-color: var(--lambo-gold); }
|
||||||
|
.form-input.error { border-color: #E74C3C; }
|
||||||
|
.form-textarea {
|
||||||
|
font-family: var(--font-primary); font-size: 16px; color: var(--pure-white);
|
||||||
|
background: var(--dark-iron); border: 1px solid var(--graphite);
|
||||||
|
border-radius: 0; padding: 12px 16px; min-height: 100px; outline: none;
|
||||||
|
resize: vertical; transition: border-color 0.3s;
|
||||||
|
}
|
||||||
|
.form-textarea::placeholder { color: var(--ash); }
|
||||||
|
.form-textarea:focus { border-color: var(--lambo-gold); }
|
||||||
|
|
||||||
|
/* SPACING */
|
||||||
|
.spacing-row { display: flex; align-items: center; gap: 16px; margin-bottom: 12px; }
|
||||||
|
.spacing-box { height: 32px; background: var(--lambo-gold); opacity: 0.6; }
|
||||||
|
.spacing-label { font-size: 12px; color: var(--ash); font-family: monospace; min-width: 80px; }
|
||||||
|
|
||||||
|
/* RADIUS */
|
||||||
|
.radius-row { display: flex; gap: 24px; flex-wrap: wrap; margin-bottom: 32px; }
|
||||||
|
.radius-item { text-align: center; }
|
||||||
|
.radius-box { width: 80px; height: 80px; background: var(--charcoal); border: 2px solid var(--graphite); margin-bottom: 8px; }
|
||||||
|
.radius-value { font-size: 12px; font-weight: 500; color: var(--pure-white); font-family: monospace; }
|
||||||
|
.radius-context { font-size: 11px; color: var(--ash); }
|
||||||
|
|
||||||
|
/* ELEVATION */
|
||||||
|
.elevation-row { display: flex; gap: 24px; flex-wrap: wrap; margin-bottom: 32px; }
|
||||||
|
.elevation-card { width: 200px; padding: 24px; text-align: center; }
|
||||||
|
.elevation-name { font-size: 13px; font-weight: 500; color: var(--pure-white); margin-bottom: 4px; }
|
||||||
|
.elevation-desc { font-size: 11px; color: var(--ash); }
|
||||||
|
|
||||||
|
footer { padding: 40px; text-align: center; border-top: 1px solid var(--charcoal); }
|
||||||
|
footer p { font-size: 12px; color: var(--ash); text-transform: uppercase; letter-spacing: 0.96px; }
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.hero h1 { font-size: 40px; }
|
||||||
|
.hero-buttons { flex-direction: column; align-items: center; }
|
||||||
|
.color-grid { grid-template-columns: repeat(2, 1fr); }
|
||||||
|
.form-grid { grid-template-columns: 1fr; }
|
||||||
|
.card-grid { grid-template-columns: 1fr; }
|
||||||
|
nav { padding: 12px 20px; }
|
||||||
|
.section { padding: 60px 20px; }
|
||||||
|
.nav-links { display: none; }
|
||||||
|
.section-title { font-size: 27px; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<span class="nav-brand">awesome-design-md</span>
|
||||||
|
<ul class="nav-links">
|
||||||
|
<li><a href="#">Models</a></li>
|
||||||
|
<li><a href="#">Motorsport</a></li>
|
||||||
|
<li><a href="#">Ownership</a></li>
|
||||||
|
<li><a href="#">Discover</a></li>
|
||||||
|
<li><a href="#" class="nav-cta">Configure</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section class="hero">
|
||||||
|
<h1>Design System Inspired by Lamborghini</h1>
|
||||||
|
<p class="subtitle">A visual catalog generated from DESIGN.md — darkness, gold, and uncompromising angles.</p>
|
||||||
|
<div class="hero-buttons">
|
||||||
|
<a href="#" class="btn-gold">Discover More</a>
|
||||||
|
<a href="#" class="btn-ghost">View Models</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Color Palette</h2>
|
||||||
|
<p class="section-desc">Monochrome darkness punctuated by Lamborghini Gold. The only chromatic color in the system.</p>
|
||||||
|
|
||||||
|
<div class="color-group-label">Primary</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#FFC000;"></div><div class="swatch-info"><div class="swatch-name">Lamborghini Gold</div><div class="swatch-hex">#FFC000</div><div class="swatch-role">Primary CTA accent</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#FFFFFF;"></div><div class="swatch-info"><div class="swatch-name">Pure White</div><div class="swatch-hex">#FFFFFF</div><div class="swatch-role">Text, logo, nav elements</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#917300;"></div><div class="swatch-info"><div class="swatch-name">Dark Gold</div><div class="swatch-hex">#917300</div><div class="swatch-role">Gold hover/pressed state</div></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Surface & Background</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#000000; border:1px solid #202020;"></div><div class="swatch-info"><div class="swatch-name">Absolute Black</div><div class="swatch-hex">#000000</div><div class="swatch-role">Page background, deepest layer</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#181818;"></div><div class="swatch-info"><div class="swatch-name">Dark Iron</div><div class="swatch-hex">#181818</div><div class="swatch-role">Footer, deep sections</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#202020;"></div><div class="swatch-info"><div class="swatch-name">Charcoal</div><div class="swatch-hex">#202020</div><div class="swatch-role">Cards, elevated panels</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#F8F8F8;"></div><div class="swatch-info"><div class="swatch-name">Near White</div><div class="swatch-hex">#F8F8F8</div><div class="swatch-role">Rare light-mode surface</div></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Neutrals & Text</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#494949;"></div><div class="swatch-info"><div class="swatch-name">Graphite</div><div class="swatch-hex">#494949</div><div class="swatch-role">Text on light surfaces</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#7D7D7D;"></div><div class="swatch-info"><div class="swatch-name">Ash</div><div class="swatch-hex">#7D7D7D</div><div class="swatch-role">Muted text, metadata</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#969696;"></div><div class="swatch-info"><div class="swatch-name">Steel</div><div class="swatch-hex">#969696</div><div class="swatch-role">Disabled text, badges</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#E6E6E6;"></div><div class="swatch-info"><div class="swatch-name">Mist</div><div class="swatch-hex">#E6E6E6</div><div class="swatch-role">Light gray containers</div></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Semantic & Accent</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#29ABE2;"></div><div class="swatch-info"><div class="swatch-name">Cyan Pulse</div><div class="swatch-hex">#29ABE2</div><div class="swatch-role">Informational accent</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#3860BE;"></div><div class="swatch-info"><div class="swatch-name">Link Blue</div><div class="swatch-hex">#3860BE</div><div class="swatch-role">Link hover state</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#1EAEDB;"></div><div class="swatch-info"><div class="swatch-name">Teal Action</div><div class="swatch-hex">#1EAEDB</div><div class="swatch-role">Ghost button hover</div></div></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Typography Scale</h2>
|
||||||
|
<p class="section-desc">LamboType for everything — shown with Roboto as the closest available fallback. All display text is uppercase.</p>
|
||||||
|
|
||||||
|
<div class="type-sample"><div style="font-size:80px;font-weight:400;line-height:0.92;text-transform:uppercase;color:var(--pure-white);">TEMERARIO</div><div class="type-label">Hero Display — 120px→80px / 400 / 0.92 LH / uppercase / LamboType</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:54px;font-weight:400;line-height:1.19;text-transform:uppercase;color:var(--pure-white);">YOU CAN'T HIDE</div><div class="type-label">Section Title — 54px / 400 / 1.19 LH / uppercase</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:40px;font-weight:400;line-height:1.15;text-transform:uppercase;color:var(--pure-white);">DEALER LOCATOR</div><div class="type-label">Sub-section — 40px / 400 / 1.15 LH / uppercase</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:27px;font-weight:400;line-height:1.37;text-transform:uppercase;color:var(--pure-white);">NEWS LAMBORGHINI WORLD</div><div class="type-label">Feature Heading — 27px / 400 / 1.37 LH / uppercase</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:18px;font-weight:400;line-height:1.56;color:var(--pure-white);">The arena of emotions. Where power meets precision, and every detail tells a story of relentless innovation.</div><div class="type-label">Body Large — 18px / 400 / 1.56 LH / mixed case</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:16px;font-weight:400;line-height:1.50;color:var(--ash);">Standard paragraph text for descriptions, captions, and secondary content throughout the interface.</div><div class="type-label">Body — 16px / 400 / 1.50 LH</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:12px;font-weight:500;line-height:1.83;text-transform:uppercase;letter-spacing:0.96px;color:var(--steel);">LABEL BADGE MICRO</div><div class="type-label">Label — 12px / 500 / 1.83 LH / uppercase / +0.96px tracking</div></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Button Variants</h2>
|
||||||
|
<p class="section-desc">Zero border-radius. Sharp, angular rectangles. Gold for primary, ghost for secondary.</p>
|
||||||
|
|
||||||
|
<div class="button-row"><a href="#" class="btn-gold">Discover More</a><span style="font-size:12px;color:var(--ash);font-family:monospace;">Gold Accent — bg #FFC000, 0px radius, 24px padding</span></div>
|
||||||
|
<div class="button-row"><a href="#" class="btn-ghost">View Models</a><span style="font-size:12px;color:var(--ash);font-family:monospace;">Ghost — transparent, white border, 50% opacity</span></div>
|
||||||
|
<div class="button-row"><a href="#" class="btn-white">Configure</a><span style="font-size:12px;color:var(--ash);font-family:monospace;">White Filled — bg #FFFFFF, text #202020</span></div>
|
||||||
|
<div class="button-row"><a href="#" class="btn-black">Explore</a><span style="font-size:12px;color:var(--ash);font-family:monospace;">Black — bg #000000, white border</span></div>
|
||||||
|
<div class="button-row"><a href="#" class="btn-gray">Details</a><span style="font-size:12px;color:var(--ash);font-family:monospace;">Gray — bg #969696, 13px, compact</span></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Card Examples</h2>
|
||||||
|
<p class="section-desc">Sharp-edged cards on charcoal surfaces. No radius, no shadow — just surface color shifts.</p>
|
||||||
|
|
||||||
|
<div class="card-grid">
|
||||||
|
<div class="card"><div class="card-image"><span class="card-image-placeholder">T</span></div><div class="card-body"><div class="card-title">Temerario</div><div class="card-desc">The new V8 hybrid super sports car. Uncompromising power meets visionary design.</div><a href="#" class="card-link">Discover</a></div></div>
|
||||||
|
<div class="card"><div class="card-image"><span class="card-image-placeholder">R</span></div><div class="card-body"><div class="card-title">Revuelto</div><div class="card-desc">The first V12 hybrid plug-in HPEV. A new era of Lamborghini performance.</div><a href="#" class="card-link">Discover</a></div></div>
|
||||||
|
<div class="card"><div class="card-image"><span class="card-image-placeholder">U</span></div><div class="card-body"><div class="card-title">Urus SE</div><div class="card-desc">The world's first Super SUV. Beyond the concept of luxury.</div><a href="#" class="card-link">Discover</a></div></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Form Elements</h2>
|
||||||
|
<p class="section-desc">Sharp-edged inputs on dark backgrounds. Focus triggers gold border.</p>
|
||||||
|
|
||||||
|
<div class="form-grid">
|
||||||
|
<div class="form-group"><label class="form-label">Default Input</label><input class="form-input" type="text" placeholder="Enter your name"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Focus Input</label><input class="form-input" type="text" placeholder="Focused" style="border-color:var(--lambo-gold);"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Error Input</label><input class="form-input error" type="text" value="Invalid entry"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Textarea</label><textarea class="form-textarea" placeholder="Your message..."></textarea></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Spacing Scale</h2>
|
||||||
|
<p class="section-desc">8px base unit with a comprehensive scale from 2px to 56px.</p>
|
||||||
|
|
||||||
|
<div class="spacing-row"><div class="spacing-label">4px</div><div class="spacing-box" style="width:16px;"></div><span style="font-size:11px;color:var(--ash);">Fine adjustments</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">8px</div><div class="spacing-box" style="width:32px;"></div><span style="font-size:11px;color:var(--ash);">Base unit</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">16px</div><div class="spacing-box" style="width:64px;"></div><span style="font-size:11px;color:var(--ash);">Ghost button padding, card gap</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">24px</div><div class="spacing-box" style="width:96px;"></div><span style="font-size:11px;color:var(--ash);">Gold CTA padding, card body</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">40px</div><div class="spacing-box" style="width:160px;"></div><span style="font-size:11px;color:var(--ash);">Section horizontal padding</span></div>
|
||||||
|
<div class="spacing-row"><div class="spacing-label">56px</div><div class="spacing-box" style="width:224px;"></div><span style="font-size:11px;color:var(--ash);">Section vertical padding</span></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Border Radius Scale</h2>
|
||||||
|
<p class="section-desc">Almost entirely zero. Sharp angles are fundamental to the Lamborghini DNA.</p>
|
||||||
|
|
||||||
|
<div class="radius-row">
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:0px;"></div><div class="radius-value">0px</div><div class="radius-context">Everything (default)</div></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:2px;"></div><div class="radius-value">2px</div><div class="radius-context">Badges, close buttons</div></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:20px;"></div><div class="radius-value">20px</div><div class="radius-context">Toggle switches only</div></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<section class="section" style="background:var(--dark-iron);max-width:100%;padding:80px 40px;">
|
||||||
|
<div style="max-width:1200px;margin:0 auto;">
|
||||||
|
<h2 class="section-title">Elevation & Depth</h2>
|
||||||
|
<p class="section-desc">No shadows — depth through surface color layering. Lighter = closer.</p>
|
||||||
|
<div class="elevation-row">
|
||||||
|
<div class="elevation-card" style="background:var(--absolute-black);border:1px solid var(--charcoal);"><div class="elevation-name">Level 0 — Abyss</div><div class="elevation-desc">#000000 flat black</div></div>
|
||||||
|
<div class="elevation-card" style="background:var(--dark-iron);border:1px solid var(--graphite);"><div class="elevation-name">Level 1 — Surface</div><div class="elevation-desc">#181818 elevated</div></div>
|
||||||
|
<div class="elevation-card" style="background:var(--charcoal);border:1px solid var(--graphite);"><div class="elevation-name">Level 2 — Panel</div><div class="elevation-desc">#202020 cards/panels</div></div>
|
||||||
|
<div class="elevation-card" style="background:rgba(0,0,0,0.7);border:1px solid var(--charcoal);"><div class="elevation-name">Level 3 — Overlay</div><div class="elevation-desc">rgba(0,0,0,0.7)</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer><p>Design System Inspired by Lamborghini — Generated from DESIGN.md by awesome-design-md</p></footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
311
design-md/renault/DESIGN.md
Normal file
311
design-md/renault/DESIGN.md
Normal file
@ -0,0 +1,311 @@
|
|||||||
|
# Design System: Renault
|
||||||
|
|
||||||
|
## 1. Visual Theme & Atmosphere
|
||||||
|
|
||||||
|
Renault's website is a vibrant digital showroom that balances French automotive elegance with bold, forward-leaning energy — a departure from the monochromatic austerity of German or Italian luxury brands. The page opens with a full-screen hero that washes the viewport in a sweeping aurora gradient — ribbons of magenta, violet, and teal bleeding across the frame behind a dramatically lit vehicle. This chromatic expressiveness is the site's signature: while the interface structure is disciplined (NouvelR typography, black-and-white CTA framework, zero-radius buttons), the content is alive with color — gradient washes on hero slides, saturated vehicle photography, and splashes of Renault Yellow (`#EFDF00`) on accent CTAs. The effect is a showroom that feels energized rather than hushed.
|
||||||
|
|
||||||
|
The layout follows a card-based editorial rhythm. Below the hero carousel, content is organized into a grid of PromoCards — each a full-bleed photographic panel with a dark gradient overlay at top (fading from `rgba(0,0,0,0.6)` to transparent) to ensure white heading text remains legible over vivid imagery. These cards alternate between light and dark modes: white editorial panels with black text sit beside black `is-alternative-mode` sections with white text, creating a chessboard-like visual cadence. The grid is generous — large card formats dominate, giving each vehicle or campaign its own visual territory. The lower sections shift to a fully dark canvas (Absolute Black backgrounds) for the E-Tech electric and technology showcases, establishing a deliberate mood shift: electrification lives in darkness, tradition in light.
|
||||||
|
|
||||||
|
Typography is unified under NouvelR — a proprietary geometric sans-serif designed by Black[Foundry] exclusively for Renault's rebrand. The typeface features a distinctive "radical r" with a terminal cut at 28 degrees to echo the Renault diamond logo's angles. Available in 6 weights from Light to Extrabold, the site primarily uses Bold (700) for headings and Regular (400) for body. Display headlines run large — 56px/0.95 line-height for hero titles, creating dense, impactful text blocks that sit tight against each other. The font supports Latin, Greek, Cyrillic, Hebrew, Arabic, and Korean, reflecting Renault's global market reach. All text rendering feels precise and engineered, with the geometric proportions lending a sense of modernity that aligns with Renault's electric-first brand positioning.
|
||||||
|
|
||||||
|
**Key Characteristics:**
|
||||||
|
- Full-screen hero carousel with vivid aurora gradient backgrounds (magenta/violet/teal) behind vehicle imagery
|
||||||
|
- NouvelR proprietary typeface with 28-degree "radical r" cut matching the diamond logo geometry
|
||||||
|
- Renault Yellow (`#EFDF00`) as the super-primary accent — used sparingly for highest-priority CTAs
|
||||||
|
- Zero border-radius on all buttons — sharp rectangular forms expressing precision engineering
|
||||||
|
- Card-based editorial grid with full-bleed photography and dark gradient overlays
|
||||||
|
- Binary black/white CTA system: primary (black bg/white text) and ghost (transparent/white border)
|
||||||
|
- PromoCard dark-mode alternation creating a chessboard rhythm between light and dark sections
|
||||||
|
- PrimeReact (21 components) + Element Plus (19 components) powering interactive elements
|
||||||
|
- Link hover state in Renault Blue (`#1883FD`) — the sole chromatic interaction color
|
||||||
|
|
||||||
|
## 2. Color Palette & Roles
|
||||||
|
|
||||||
|
### Primary
|
||||||
|
- **Renault Yellow** (`#EFDF00`): The brand's signature Pantone — a vivid, saturated yellow used for super-primary CTAs and the highest-priority action buttons. Appears as `--CtaLink-background-color` on `.is-cta-super-primary` class. Carries the energy of the diamond logo
|
||||||
|
- **Absolute Black** (`#000000`): Primary button background, heading text on light surfaces, and the dominant dark section surface. The structural anchor of the entire interface
|
||||||
|
- **Pure White** (`#FFFFFF`): Primary surface for editorial content, inverted button backgrounds, hero text color, and the dominant light-mode canvas (--rt-color-white)
|
||||||
|
|
||||||
|
### Secondary & Accent
|
||||||
|
- **Soft Yellow** (`#F8EB4C`): Lighter, warmer variant of Renault Yellow — used for hover/pressed states on yellow CTAs and secondary accent contexts
|
||||||
|
- **Renault Blue** (`#1883FD`): Link hover color across all link variants — a bright, confident blue that signals interactivity without competing with the yellow brand accent
|
||||||
|
- **Warm Gray** (`#D9D9D6`): Subtle warm neutral used for disabled states, inactive UI elements, and soft borders — carries a slight warmth that distinguishes it from cold grays
|
||||||
|
|
||||||
|
### Surface & Background
|
||||||
|
- **Pure White** (`#FFFFFF`): Page background, light editorial sections, navigation bar, and footer
|
||||||
|
- **Absolute Black** (`#000000`): Hero backgrounds, PromoCard dark-mode sections (`is-alternative-mode`), and E-Tech showcase areas
|
||||||
|
- **Charcoal** (`#222222`): Secondary dark surface for text-heavy dark sections and footer sub-regions (--rt-color-dark)
|
||||||
|
- **Pale Silver** (`#F2F2F2`): Subtle alternate light surface for section differentiation and card borders
|
||||||
|
|
||||||
|
### Neutrals & Text
|
||||||
|
- **Absolute Black** (`#000000`): Primary heading and body text on light surfaces — Renault uses true black rather than near-black
|
||||||
|
- **Pure White** (`#FFFFFF`): Primary text on dark surfaces — hero headlines, dark-section headings, and inverted button labels
|
||||||
|
- **Warm Gray** (`#D9D9D6`): Tertiary text, metadata, and subdued labels
|
||||||
|
- **Border Gray** (`#D1D1D1`): Input field borders and subtle separators
|
||||||
|
|
||||||
|
### Semantic & Accent
|
||||||
|
- **Success Green** (`#8DC572`): Positive status indicators and confirmation messages (--rt-color-success)
|
||||||
|
- **Error Rose** (`#BE6464`): Form validation errors and warning states (--rt-color-error)
|
||||||
|
- **Warning Amber** (`#F0AD4E`): Cautionary alerts and attention-requiring states (--rt-color-warning)
|
||||||
|
- **Info Blue** (`#337AB7`): Informational callouts and neutral status messaging (--rt-color-info)
|
||||||
|
|
||||||
|
### Gradient System
|
||||||
|
- **Hero Aurora**: Sweeping multi-color gradients (magenta → violet → teal) applied to hero slide backgrounds — the site's most distinctive visual element. These are photographic/composited rather than CSS gradients
|
||||||
|
- **PromoCard Overlay**: `linear-gradient(rgba(0,0,0,0.6) 0%, rgba(0,0,0,0) 40%)` — applied to card tops to ensure heading text legibility over photography
|
||||||
|
- No flat CSS gradients on surfaces — depth comes from photographic treatment and the black/white alternation
|
||||||
|
|
||||||
|
## 3. Typography Rules
|
||||||
|
|
||||||
|
### Font Family
|
||||||
|
- **NouvelR**: The sole typeface. A proprietary geometric sans-serif designed by Black[Foundry] for Renault's 2021+ rebrand. Features a distinctive "radical r" with a 28-degree terminal cut matching the diamond logo angle. Available in 6 weights (Light to Extrabold), supports 6 writing systems. Fallback: `sans-serif`. Declared as `"NouvelR, sans-serif"` in CSS
|
||||||
|
- **No secondary typeface**: Unlike Ferrari (FerrariSans + Body-Font) or Lamborghini (LamboType + Open Sans), Renault uses a single font family for all text — headings, body, buttons, captions, and navigation
|
||||||
|
|
||||||
|
### Hierarchy
|
||||||
|
|
||||||
|
| Role | Size | Weight | Line Height | Letter Spacing | Notes |
|
||||||
|
|------|------|--------|-------------|----------------|-------|
|
||||||
|
| Hero Title | 56px (3.50rem) | 700 | 0.95 (53.2px) | normal | NouvelR, white on dark hero, all-caps model names |
|
||||||
|
| Section Heading | 40px (2.50rem) | 700 | 0.95 (38px) | normal | NouvelR, PromoCard headings on dark/light sections |
|
||||||
|
| Card Heading | 32px (2.00rem) | 700 | 0.95 | normal | NouvelR, medium-scale card headings |
|
||||||
|
| Subheading | 24px (1.50rem) | 700 | 0.95 | normal | NouvelR, section sub-titles |
|
||||||
|
| Module Title | 21.92px (1.37rem) | 600 | 1.20 | normal | NouvelR, component headings |
|
||||||
|
| Content Title | 20px (1.25rem) | 700 | 0.95 | normal | NouvelR, smaller section titles |
|
||||||
|
| UI Heading | 19.2px (1.20rem) | 600 | 1.30 | normal | NouvelR, card UI headings |
|
||||||
|
| Emphasis | 18px (1.13rem) | 700 | 1.00 | normal | NouvelR, emphasized inline text and links |
|
||||||
|
| Body Heading | 16px (1.00rem) | 700 | 1.40 | normal | NouvelR, paragraph-level headings |
|
||||||
|
| Body Text | 14px (0.88rem) | 400 | 1.40 | normal | NouvelR, paragraph and descriptive content |
|
||||||
|
| Body Bold | 14px (0.88rem) | 700 | 1.57 | normal | NouvelR, emphasized body text |
|
||||||
|
| Button Label | 14.4px (0.90rem) | 700 | 1.00 | 0.144px | NouvelR, primary button text |
|
||||||
|
| Nav Link | 13px (0.81rem) | 700 | 1.50 | normal | NouvelR, navigation and footer links |
|
||||||
|
| Caption | 12.8px (0.80rem) | 400 | 1.10 | normal | NouvelR, small descriptive text |
|
||||||
|
| Small Label | 12px (0.75rem) | 700 | 1.00 | normal | NouvelR, labels and tags |
|
||||||
|
| Micro Text | 10px (0.63rem) | 700 | 1.45 | normal | NouvelR, smallest UI text, legal fine print |
|
||||||
|
| Micro Caption | 8.5px (0.53rem) | 400 | normal | normal | NouvelR, absolute smallest text (legal) |
|
||||||
|
|
||||||
|
### Principles
|
||||||
|
- **Single-family discipline**: NouvelR handles everything from 56px hero headlines to 8.5px legal captions — the font's geometric precision allows it to scale across this extreme range without losing character
|
||||||
|
- **Bold-default headings**: Weight 700 dominates the heading hierarchy. Unlike brands that use medium (500) for headings, Renault's Bold weight creates a more assertive, energetic reading experience
|
||||||
|
- **Ultra-tight display line-heights**: 0.95 line-height on hero and section headings — the lines nearly collide, creating a compressed, punchy typographic texture that feels urgent and modern
|
||||||
|
- **28-degree radical r**: The typeface's signature detail — the lowercase "r" terminal is cut at precisely 28 degrees to mirror the angles of the Renault diamond logo, embedding brand identity into every word
|
||||||
|
- **Capitalize transform on captions**: Some caption text uses `text-transform: capitalize` for editorial labeling, while micro text uses `lowercase` — a deliberate inversion for hierarchy signaling
|
||||||
|
|
||||||
|
## 4. Component Stylings
|
||||||
|
|
||||||
|
### Buttons
|
||||||
|
Renault's buttons are sharp-edged rectangles with zero border-radius — the industrial precision of a pressed metal body panel.
|
||||||
|
|
||||||
|
**Super Primary (Yellow)** — The highest-emphasis CTA:
|
||||||
|
- Default: bg `#EFDF00` (Renault Yellow), text `#000000`, borderRadius 0px, padding 10px 15px, border 1px solid `#EFDF00`
|
||||||
|
- Inverted: bg `#EFDF00`, text `#000000` — same yellow on dark backgrounds
|
||||||
|
- fontSize 16px (NouvelR), fontWeight 700, minHeight 46px, minWidth 46px
|
||||||
|
- Used for: Primary conversion actions (configure, buy now)
|
||||||
|
|
||||||
|
**Primary (Black)** — The default action button:
|
||||||
|
- Default: bg `#000000`, text `#FFFFFF`, borderRadius 0px, padding 10px 15px, border 1px solid `#000000`
|
||||||
|
- Inverted: bg `#FFFFFF`, text `#000000`, border 1px solid `#FFFFFF` — white fill on dark backgrounds
|
||||||
|
- fontSize 16px (NouvelR), fontWeight 700
|
||||||
|
- Used for: "keşfedin" (explore), secondary conversion actions
|
||||||
|
|
||||||
|
**Ghost** — Transparent outline button:
|
||||||
|
- Default (on dark): bg transparent, text `#FFFFFF`, border 1px solid `#FFFFFF`, borderRadius 0px, padding 10px 15px
|
||||||
|
- Default (on light): bg transparent, text `#000000`, border 1px solid `#000000`
|
||||||
|
- fontSize 16px (NouvelR), fontWeight 700
|
||||||
|
- Used for: "ilk sen öğren" (be the first to know), "satın alın" (buy), secondary actions
|
||||||
|
|
||||||
|
**Text Link** — Inline navigation:
|
||||||
|
- Default (light): text `#000000`, no border, no background
|
||||||
|
- Default (dark): text `#FFFFFF`
|
||||||
|
- Hover: color shifts to `#1883FD` (Renault Blue), text-decoration none
|
||||||
|
- All link variants hover to the same blue — consistent interactive feedback
|
||||||
|
|
||||||
|
### Cards & Containers
|
||||||
|
|
||||||
|
**PromoCard (Light)** — Editorial content card:
|
||||||
|
- Background: white or transparent
|
||||||
|
- Full-bleed photography with dark gradient overlay at top: `linear-gradient(rgba(0,0,0,0.6) 0%, rgba(0,0,0,0) 40%)`
|
||||||
|
- Heading: NouvelR 40px/700, white text positioned over gradient
|
||||||
|
- Border-radius: 0px — sharp rectangular containers
|
||||||
|
- No shadow, no visible border
|
||||||
|
|
||||||
|
**PromoCard (Dark / `is-alternative-mode`)** — Cinematic card:
|
||||||
|
- Background: `#000000` (Absolute Black)
|
||||||
|
- Same gradient overlay treatment
|
||||||
|
- Heading: white NouvelR text
|
||||||
|
- CTA buttons: inverted primary (white bg) or ghost (white border)
|
||||||
|
|
||||||
|
**VehicleRangeCard** — Vehicle showcase:
|
||||||
|
- Background: transparent
|
||||||
|
- Vehicle image above, model name and price/spec below
|
||||||
|
- No shadow, no border, clean flat treatment
|
||||||
|
- Spacing between cards via grid gap
|
||||||
|
|
||||||
|
### Inputs & Forms
|
||||||
|
|
||||||
|
**Search/Text Input:**
|
||||||
|
- Background: `#FFFFFF`
|
||||||
|
- Text: `#000000`
|
||||||
|
- Border: 1px solid `#D1D1D1` (Border Gray)
|
||||||
|
- Border-radius: 50px (pill-shaped — unusual deviation from the zero-radius button system)
|
||||||
|
- Padding: 6px 35px 6px 15px (extra right padding for search icon)
|
||||||
|
- Font: NouvelR, 12.8px
|
||||||
|
- Focus: standard browser focus ring
|
||||||
|
|
||||||
|
### Navigation
|
||||||
|
- **Desktop**: Renault diamond logo centered/left, horizontal nav links, sticky positioning
|
||||||
|
- **Background**: white, no shadow at rest
|
||||||
|
- **Links**: NouvelR, 13px, weight 700, black text
|
||||||
|
- **Hover**: color shifts to `#1883FD` (Renault Blue)
|
||||||
|
- **Mobile**: Hamburger collapse to full-screen navigation drawer
|
||||||
|
- **CTA in nav**: Primary black button for main conversion action
|
||||||
|
|
||||||
|
### Image Treatment
|
||||||
|
- **Hero**: Full-viewport carousel with dramatic aurora-gradient backgrounds and art-directed vehicle photography — edge-to-edge, no padding
|
||||||
|
- **PromoCards**: Full-bleed photography within card bounds, dark gradient overlay at top for text legibility
|
||||||
|
- **Vehicle images**: Transparent-background renders on neutral/gradient backgrounds
|
||||||
|
- **Aspect ratios**: Mixed — hero at roughly 16:9 viewport, promo cards at various ratios from square to wide panoramic
|
||||||
|
- **Lazy loading**: Below-fold sections use lazy loading (framework-handled)
|
||||||
|
|
||||||
|
### Carousel Component
|
||||||
|
- Full-screen hero carousel with auto-advancing slides
|
||||||
|
- Each slide: background gradient/photo + vehicle image + headline + CTA buttons
|
||||||
|
- Dot indicators for slide position
|
||||||
|
- Navigation arrows at edges
|
||||||
|
|
||||||
|
## 5. Layout Principles
|
||||||
|
|
||||||
|
### Spacing System
|
||||||
|
- **Base unit**: 8px (detected system base)
|
||||||
|
- **Scale**: 1px, 4px, 5px, 6px, 6.25px, 8px, 10px, 12px, 13px, 15px, 16px, 20px, 24px, 32px, 40px
|
||||||
|
- **Button padding**: 10px 15px — consistent across all button variants
|
||||||
|
- **Section padding**: Generous vertical spacing (40–80px) between major content blocks
|
||||||
|
- **Card gaps**: 16–24px between grid items
|
||||||
|
- **Minimum interactive size**: 46px (minWidth and minHeight on all buttons)
|
||||||
|
|
||||||
|
### Grid & Container
|
||||||
|
- **Max width**: 1440px (largest defined breakpoint)
|
||||||
|
- **Hero**: Full-bleed, edge-to-edge, viewport-height
|
||||||
|
- **PromoCard grid**: 2-up and 3-up layouts with mixed card sizes
|
||||||
|
- **Vehicle range**: Horizontal scrollable card row or grid
|
||||||
|
- **Footer**: Multi-column layout on white background
|
||||||
|
|
||||||
|
### Whitespace Philosophy
|
||||||
|
Renault uses whitespace moderately — more generously than Ferrari but less extremely than Tesla. The card-based layout means content is organized into defined containers rather than floating in void. The visual breathing room comes primarily from the large card formats and the full-bleed hero carousel, which gives each vehicle its own cinematic moment. Between sections, spacing is consistent (32–40px) creating a rhythmic scroll experience. The alternation between light and dark sections also creates perceived whitespace — the mode switch itself acts as a visual separator.
|
||||||
|
|
||||||
|
### Border Radius Scale
|
||||||
|
| Value | Context |
|
||||||
|
|-------|---------|
|
||||||
|
| 0px | All buttons, PromoCards, most containers — the zero-radius default |
|
||||||
|
| 2px | Small UI elements (region controls) |
|
||||||
|
| 3px | Content panels (div, tabpanel) |
|
||||||
|
| 4px | Labels and tag elements |
|
||||||
|
| 46px | Pill-shaped elements (search input, filter chips) |
|
||||||
|
| 50px | Full pill for search/input fields |
|
||||||
|
|
||||||
|
## 6. Depth & Elevation
|
||||||
|
|
||||||
|
| Level | Treatment | Use |
|
||||||
|
|-------|-----------|-----|
|
||||||
|
| Level 0 (Flat) | No shadow | Default for PromoCards, buttons, most containers |
|
||||||
|
| Level 1 (Soft) | `rgba(0,0,0,0.2) 0px 4px 8px` | Card hover states, subtle lift effect |
|
||||||
|
| Level 2 (Medium) | `rgba(0,0,0,0.2) 0px 0px 18px` | Floating UI elements, dropdown menus |
|
||||||
|
| Level 3 (Layered) | `rgba(0,0,0,0) 0px 2px 4px, rgba(50,50,93,0.1) 0px 7px 14px` | Compound shadow for elevated cards and modals |
|
||||||
|
| Level 4 (Deep) | `rgba(0,0,0,0.15) 0px 40px 80px` | Large floating panels, configurator overlays |
|
||||||
|
| Level 5 (Directional) | `rgba(0,0,0,0.2) 5px 5px 8px` | Offset directional shadow for specific components |
|
||||||
|
| Level 6 (Ambient) | `rgb(199,197,199) 0px 0px 12px 2px` | Ambient glow effect for highlighted elements |
|
||||||
|
|
||||||
|
### Shadow Philosophy
|
||||||
|
Renault uses a richer shadow system than Ferrari or Tesla — seven distinct shadow tokens reflecting a more layered, dimensional interface. The shadows progress from subtle 4px hover lifts to dramatic 80px deep panels. The compound shadow (Level 3) with its dual-layer approach (a tight dark shadow plus a wider purple-tinted one from `rgba(50,50,93,0.1)`) is particularly refined — it creates a photorealistic floating effect. The ambient glow (Level 6) in warm gray adds a unique touch that connects to Renault's warmer color personality.
|
||||||
|
|
||||||
|
### Decorative Depth
|
||||||
|
- **Hero aurora gradients**: The primary decorative depth element — vivid color gradients create atmospheric depth behind vehicle imagery
|
||||||
|
- **PromoCard overlays**: `linear-gradient(rgba(0,0,0,0.6) → transparent)` creates depth within cards through transparency
|
||||||
|
- **No blur effects** on UI elements — depth is communicated through shadow and color contrast
|
||||||
|
|
||||||
|
## 7. Do's and Don'ts
|
||||||
|
|
||||||
|
### Do
|
||||||
|
- Use Renault Yellow (`#EFDF00`) exclusively for super-primary CTAs — it carries the full weight of the diamond logo's identity
|
||||||
|
- Maintain zero border-radius on all buttons — sharp edges are non-negotiable in the Renault system
|
||||||
|
- Use NouvelR Bold (700) as the default heading weight — the assertive weight is central to the brand's energetic personality
|
||||||
|
- Apply the dark gradient overlay (`rgba(0,0,0,0.6) → transparent`) on PromoCards to ensure text legibility over photography
|
||||||
|
- Keep hero line-heights ultra-tight (0.95) for display text — the compressed texture feels urgent and modern
|
||||||
|
- Alternate between black and white sections to create the signature chessboard rhythm
|
||||||
|
- Use `#1883FD` (Renault Blue) consistently for all link hover states — one interactive color signal
|
||||||
|
- Set minimum interactive size at 46×46px for all buttons — accessibility built into the component spec
|
||||||
|
- Reserve pill-shaped radius (46–50px) exclusively for search inputs and filter elements — never for buttons
|
||||||
|
- Use the PromoCard gradient overlay on every card that has text over photography
|
||||||
|
|
||||||
|
### Don't
|
||||||
|
- Apply Renault Yellow as a background color for sections or surfaces — it's a CTA signal, not an atmosphere color
|
||||||
|
- Add border-radius to buttons — the zero-radius rectangle is a core brand marker
|
||||||
|
- Use any typeface besides NouvelR — the single-family discipline is a brand pillar
|
||||||
|
- Mix multiple chromatic accent colors in a single section — the palette is monochrome-plus-yellow
|
||||||
|
- Soften heading weights to 400 or 500 — NouvelR Bold is the brand voice, lighter weights read as off-brand
|
||||||
|
- Add decorative borders to PromoCards or content containers — separation comes from background color alternation
|
||||||
|
- Use the semantic colors (Success Green, Error Rose) for decorative purposes — they're reserved for form states
|
||||||
|
- Apply the 56px hero size to anything below the fold — hero typography scale is reserved for the carousel
|
||||||
|
- Create rounded-pill buttons — pill shapes are reserved for inputs, never for action elements
|
||||||
|
- Use flat CSS gradients on UI surfaces — the only gradients should be the photographic hero auroras and the text-legibility overlays
|
||||||
|
|
||||||
|
## 8. Responsive Behavior
|
||||||
|
|
||||||
|
### Breakpoints
|
||||||
|
| Name | Width | Key Changes |
|
||||||
|
|------|-------|-------------|
|
||||||
|
| Mobile Small | ≤425px | Single-column, full-width cards, hero text scales to ~32px, stacked CTAs, hamburger nav |
|
||||||
|
| Mobile | 426–640px | Single-column, slightly larger cards, hero text at 32–40px |
|
||||||
|
| Tablet Small | 641–768px | 2-column PromoCard grid begins, hero maintains full-width |
|
||||||
|
| Tablet | 769–896px | Full 2-column layout, vehicle range shows 2–3 cards |
|
||||||
|
| Desktop Small | 897–1024px | Navigation fully expanded, hero at 56px, 2-up card grid |
|
||||||
|
| Desktop | 1025–1280px | Full layout, 3-up card grid, generous whitespace |
|
||||||
|
| Large Desktop | 1281–1440px | Maximum content width, centered container, hero at full cinematic scale |
|
||||||
|
|
||||||
|
### Touch Targets
|
||||||
|
- All buttons: minimum 46×46px (`minWidth: 46px, minHeight: 46px`) — exceeds WCAG AAA 44×44px requirement
|
||||||
|
- Search input pill: adequate touch target with 50px border-radius creating a large tappable area
|
||||||
|
- Navigation links: NouvelR 13px with adequate spacing between items
|
||||||
|
- Carousel navigation: large arrow targets at viewport edges
|
||||||
|
|
||||||
|
### Collapsing Strategy
|
||||||
|
- **Navigation**: Full horizontal nav collapses to Renault diamond logo + hamburger menu on mobile
|
||||||
|
- **Hero carousel**: Full-width at all breakpoints, headline scales from 56px (desktop) to ~32px (mobile)
|
||||||
|
- **PromoCard grid**: 3-up → 2-up → single-column as viewport narrows
|
||||||
|
- **Vehicle range**: Horizontal scroll maintained at all sizes, visible cards reduce
|
||||||
|
- **CTA pairs**: Side-by-side buttons stack vertically on mobile
|
||||||
|
- **Footer**: Multi-column collapses to single-column accordion on mobile
|
||||||
|
|
||||||
|
### Image Behavior
|
||||||
|
- Hero images: full-bleed at all breakpoints with `object-fit: cover`
|
||||||
|
- PromoCard images: responsive within card containers, gradient overlay scales proportionally
|
||||||
|
- Vehicle images: transparent-background renders scale proportionally within grid cells
|
||||||
|
- Art direction: mobile may crop to tighter vehicle views, reducing environmental context
|
||||||
|
|
||||||
|
## 9. Agent Prompt Guide
|
||||||
|
|
||||||
|
### Quick Color Reference
|
||||||
|
- Primary CTA (Super): "Renault Yellow (#EFDF00)"
|
||||||
|
- Primary CTA (Default): "Absolute Black (#000000)"
|
||||||
|
- Background Light: "Pure White (#FFFFFF)"
|
||||||
|
- Background Dark: "Absolute Black (#000000)"
|
||||||
|
- Secondary Dark: "Charcoal (#222222)"
|
||||||
|
- Heading text (light bg): "Absolute Black (#000000)"
|
||||||
|
- Body text: "Absolute Black (#000000)"
|
||||||
|
- Link Hover: "Renault Blue (#1883FD)"
|
||||||
|
- Border: "Pale Silver (#F2F2F2)"
|
||||||
|
- Semantic Error: "Error Rose (#BE6464)"
|
||||||
|
|
||||||
|
### Example Component Prompts
|
||||||
|
- "Create a hero section with a full-viewport aurora gradient background (magenta to violet to teal), a centered vehicle image, a NouvelR Bold headline at 56px with 0.95 line-height in white, and two buttons: a Primary (white bg, black text, 0px radius) 'Explore' and a Ghost (transparent bg, white border, white text, 0px radius) 'Learn More'"
|
||||||
|
- "Design a PromoCard with a full-bleed photography background, a dark gradient overlay (rgba(0,0,0,0.6) top to transparent at 40%), a NouvelR Bold 40px white heading, a 14px body text line in white, and a Primary inverted button (white bg, black text, 0px radius, 10px 15px padding)"
|
||||||
|
- "Build a vehicle range grid with 3 columns on white background, each card showing a transparent-background car render above a NouvelR Bold 24px model name in black, a 14px price caption, and a ghost button (black border, black text, 0px radius) labeled 'Configure'"
|
||||||
|
- "Create a dark E-Tech section on Absolute Black (#000000) with a NouvelR Bold 40px white heading 'E-Tech electric powertrain', a 14px subtitle in white, and a Renault Yellow (#EFDF00) super-primary button with black text, 0px radius, and 10px 15px padding"
|
||||||
|
- "Design a search input as a pill-shaped field (50px border-radius) with white background, 1px solid #D1D1D1 border, NouvelR 12.8px text, 6px 35px 6px 15px padding, and a search icon positioned inside the right padding area"
|
||||||
|
|
||||||
|
### Iteration Guide
|
||||||
|
When refining existing screens generated with this design system:
|
||||||
|
1. Focus on ONE component at a time — Renault's system has clear component boundaries (PromoCard, VehicleRangeCard, CTA variants)
|
||||||
|
2. Reference specific color names and hex codes — the palette is small but each color has a precise function
|
||||||
|
3. Use natural language descriptions, not CSS values — "sharp zero-radius rectangle" conveys intent better than "border-radius: 0"
|
||||||
|
4. Describe the desired "feel" alongside specific measurements — "assertive automotive energy" communicates the NouvelR Bold heading personality better than "font-weight: 700"
|
||||||
|
5. Always check whether a section should be light or dark — the chessboard alternation is a core pattern
|
||||||
|
6. Reserve Renault Yellow for ONE button per screen — if yellow appears in more than one CTA, the hierarchy collapses
|
||||||
23
design-md/renault/README.md
Normal file
23
design-md/renault/README.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Renault Inspired Design System
|
||||||
|
|
||||||
|
[DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/renault/DESIGN.md) extracted from the public [renault](https://renault.com/) website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
| File | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `DESIGN.md` | Complete design system documentation (9 sections) |
|
||||||
|
| `preview.html` | Interactive design token catalog (light) |
|
||||||
|
| `preview-dark.html` | Interactive design token catalog (dark) |
|
||||||
|
|
||||||
|
Use [DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/renault/DESIGN.md) to use as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that looks like the Renault design language.
|
||||||
|
|
||||||
|
## Preview
|
||||||
|
|
||||||
|
A sample landing page built with DESIGN.md. It shows the actual colors, typography, buttons, cards, spacing, and elevation, all in one page.
|
||||||
|
|
||||||
|
### Dark Mode
|
||||||
|

|
||||||
|
|
||||||
|
### Light Mode
|
||||||
|

|
||||||
409
design-md/renault/preview-dark.html
Normal file
409
design-md/renault/preview-dark.html
Normal file
@ -0,0 +1,409 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Design System Inspired by Renault — Dark Mode</title>
|
||||||
|
<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=Nunito+Sans:wght@400;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--renault-yellow: #EFDF00;
|
||||||
|
--soft-yellow: #F8EB4C;
|
||||||
|
--renault-blue: #1883FD;
|
||||||
|
--absolute-black: #000000;
|
||||||
|
--pure-white: #FFFFFF;
|
||||||
|
--charcoal: #222222;
|
||||||
|
--pale-silver: #F2F2F2;
|
||||||
|
--warm-gray: #D9D9D6;
|
||||||
|
--border-gray: #D1D1D1;
|
||||||
|
--success-green: #8DC572;
|
||||||
|
--error-rose: #BE6464;
|
||||||
|
--warning-amber: #F0AD4E;
|
||||||
|
--info-blue: #337AB7;
|
||||||
|
--font-main: 'Nunito Sans', sans-serif;
|
||||||
|
/* Dark mode */
|
||||||
|
--page-bg: #111111;
|
||||||
|
--card-bg: var(--charcoal);
|
||||||
|
--card-border: #333333;
|
||||||
|
--text-primary: var(--pure-white);
|
||||||
|
--text-secondary: var(--warm-gray);
|
||||||
|
--text-muted: #888888;
|
||||||
|
--divider: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: var(--font-main);
|
||||||
|
background: var(--page-bg);
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.40;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DARK MODE BADGE */
|
||||||
|
.dark-badge {
|
||||||
|
position: fixed; top: 16px; right: 16px; z-index: 200;
|
||||||
|
background: var(--renault-yellow); color: var(--absolute-black);
|
||||||
|
font-size: 11px; font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase;
|
||||||
|
padding: 6px 14px; border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NAV */
|
||||||
|
nav {
|
||||||
|
position: sticky; top: 0; z-index: 100; display: flex; align-items: center;
|
||||||
|
justify-content: space-between; padding: 12px 40px; background: var(--absolute-black);
|
||||||
|
min-height: 56px; border-bottom: 1px solid var(--card-border);
|
||||||
|
}
|
||||||
|
.nav-brand { font-size: 13px; font-weight: 700; color: var(--pure-white); text-decoration: none; }
|
||||||
|
.nav-links { display: flex; align-items: center; gap: 4px; list-style: none; }
|
||||||
|
.nav-links a { font-size: 13px; font-weight: 700; color: var(--text-secondary); text-decoration: none; padding: 8px 14px; transition: color 0.3s; }
|
||||||
|
.nav-links a:hover { color: var(--pure-white); }
|
||||||
|
.nav-cta {
|
||||||
|
background: var(--renault-yellow); color: var(--absolute-black) !important;
|
||||||
|
padding: 10px 15px; border-radius: 0; font-size: 14.4px; font-weight: 700;
|
||||||
|
text-decoration: none; display: inline-flex; align-items: center; min-height: 46px;
|
||||||
|
border: 1px solid var(--renault-yellow); cursor: pointer; transition: background-color 0.3s;
|
||||||
|
}
|
||||||
|
.nav-cta:hover { background: var(--soft-yellow); }
|
||||||
|
|
||||||
|
/* HERO */
|
||||||
|
.hero {
|
||||||
|
position: relative; min-height: 90vh; display: flex; flex-direction: column;
|
||||||
|
align-items: center; justify-content: center; padding: 100px 40px 80px;
|
||||||
|
background: linear-gradient(135deg, #8B1A6E 0%, #5B2D8E 25%, #2E4A9E 50%, #1A7A8E 75%, #1A9E7A 100%);
|
||||||
|
text-align: center; overflow: hidden;
|
||||||
|
}
|
||||||
|
.hero::before {
|
||||||
|
content: ''; position: absolute; top: -20%; right: -10%; width: 60%; height: 140%;
|
||||||
|
background: radial-gradient(ellipse, rgba(239,223,0,0.12) 0%, transparent 70%); pointer-events: none;
|
||||||
|
}
|
||||||
|
.hero h1 { font-size: 56px; font-weight: 700; line-height: 0.95; color: var(--pure-white); margin-bottom: 20px; position: relative; text-transform: uppercase; }
|
||||||
|
.hero .subtitle { font-size: 16px; font-weight: 400; color: rgba(255,255,255,0.85); margin-bottom: 40px; line-height: 1.40; position: relative; max-width: 600px; }
|
||||||
|
.hero-buttons { display: flex; gap: 16px; position: relative; }
|
||||||
|
.btn-super-primary {
|
||||||
|
background: var(--renault-yellow); color: var(--absolute-black); border: 1px solid var(--renault-yellow);
|
||||||
|
border-radius: 0; padding: 10px 28px; font-size: 16px; font-weight: 700; min-height: 46px;
|
||||||
|
cursor: pointer; transition: background-color 0.3s; text-decoration: none; display: inline-flex; align-items: center; justify-content: center;
|
||||||
|
}
|
||||||
|
.btn-super-primary:hover { background: var(--soft-yellow); }
|
||||||
|
.btn-ghost-white {
|
||||||
|
background: transparent; color: var(--pure-white); border: 1px solid var(--pure-white);
|
||||||
|
border-radius: 0; padding: 10px 28px; font-size: 16px; font-weight: 700; min-height: 46px;
|
||||||
|
cursor: pointer; transition: background-color 0.3s; text-decoration: none; display: inline-flex; align-items: center; justify-content: center;
|
||||||
|
}
|
||||||
|
.btn-ghost-white:hover { background: rgba(255,255,255,0.15); }
|
||||||
|
|
||||||
|
/* SECTIONS */
|
||||||
|
.section { padding: 80px 40px; max-width: 1200px; margin: 0 auto; }
|
||||||
|
.section-title { font-size: 32px; font-weight: 700; color: var(--text-primary); margin-bottom: 8px; line-height: 0.95; }
|
||||||
|
.section-desc { font-size: 14px; color: var(--text-muted); margin-bottom: 40px; line-height: 1.40; }
|
||||||
|
.section-divider { border: none; border-top: 1px solid var(--divider); margin: 0 40px; max-width: 1200px; margin-left: auto; margin-right: auto; }
|
||||||
|
|
||||||
|
/* COLORS */
|
||||||
|
.color-group-label { font-size: 14px; font-weight: 700; color: var(--text-primary); margin-bottom: 16px; margin-top: 32px; }
|
||||||
|
.color-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(155px, 1fr)); gap: 16px; margin-bottom: 32px; }
|
||||||
|
.color-swatch { overflow: hidden; }
|
||||||
|
.color-swatch .swatch-block { height: 80px; }
|
||||||
|
.color-swatch .swatch-info { padding: 12px; background: var(--card-bg); border: 1px solid var(--card-border); border-top: none; }
|
||||||
|
.color-swatch .swatch-name { font-size: 13px; font-weight: 700; color: var(--text-primary); margin-bottom: 2px; }
|
||||||
|
.color-swatch .swatch-hex { font-size: 12px; color: var(--text-secondary); margin-bottom: 4px; font-family: monospace; }
|
||||||
|
.color-swatch .swatch-role { font-size: 11px; color: var(--text-muted); line-height: 1.3; }
|
||||||
|
|
||||||
|
/* TYPOGRAPHY */
|
||||||
|
.type-sample { margin-bottom: 32px; padding-bottom: 24px; border-bottom: 1px solid var(--divider); }
|
||||||
|
.type-sample:last-child { border-bottom: none; }
|
||||||
|
.type-label { font-size: 12px; font-weight: 400; color: var(--text-muted); margin-top: 8px; }
|
||||||
|
|
||||||
|
/* BUTTONS */
|
||||||
|
.button-row { display: flex; flex-wrap: wrap; gap: 20px; align-items: flex-end; margin-bottom: 24px; }
|
||||||
|
.button-item { display: flex; flex-direction: column; gap: 8px; }
|
||||||
|
.button-item .btn-label { font-size: 11px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; }
|
||||||
|
.btn-yellow {
|
||||||
|
background: var(--renault-yellow); color: var(--absolute-black); border: 1px solid var(--renault-yellow);
|
||||||
|
border-radius: 0; padding: 10px 15px; font-size: 14.4px; font-weight: 700; min-height: 46px;
|
||||||
|
min-width: 120px; text-align: center; cursor: pointer; transition: background-color 0.3s; letter-spacing: 0.144px;
|
||||||
|
}
|
||||||
|
.btn-yellow:hover { background: var(--soft-yellow); }
|
||||||
|
.btn-primary-white {
|
||||||
|
background: var(--pure-white); color: var(--absolute-black); border: 1px solid var(--pure-white);
|
||||||
|
border-radius: 0; padding: 10px 15px; font-size: 14.4px; font-weight: 700; min-height: 46px;
|
||||||
|
min-width: 120px; text-align: center; cursor: pointer; transition: background-color 0.3s; letter-spacing: 0.144px;
|
||||||
|
}
|
||||||
|
.btn-ghost-dark-2 {
|
||||||
|
background: transparent; color: var(--pure-white); border: 1px solid var(--pure-white);
|
||||||
|
border-radius: 0; padding: 10px 15px; font-size: 14.4px; font-weight: 700; min-height: 46px;
|
||||||
|
min-width: 120px; text-align: center; cursor: pointer; transition: background-color 0.3s; letter-spacing: 0.144px;
|
||||||
|
}
|
||||||
|
.btn-ghost-dark-2:hover { background: rgba(255,255,255,0.1); }
|
||||||
|
.btn-text-link-dark { background: none; border: none; color: var(--text-secondary); font-size: 14px; font-weight: 700; cursor: pointer; text-decoration: none; transition: color 0.3s; padding: 0; }
|
||||||
|
.btn-text-link-dark:hover { color: var(--renault-blue); }
|
||||||
|
.dark-btn-row { background: var(--absolute-black); padding: 24px; display: flex; flex-wrap: wrap; gap: 20px; align-items: flex-end; border: 1px solid var(--card-border); }
|
||||||
|
|
||||||
|
/* CARDS */
|
||||||
|
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 0; }
|
||||||
|
.card {
|
||||||
|
position: relative; overflow: hidden; min-height: 300px; display: flex; flex-direction: column;
|
||||||
|
justify-content: flex-end; padding: 24px; background-size: cover; background-position: center;
|
||||||
|
}
|
||||||
|
.card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 50%; background: linear-gradient(rgba(0,0,0,0.6) 0%, rgba(0,0,0,0) 100%); pointer-events: none; }
|
||||||
|
.card-heading { font-size: 40px; font-weight: 700; color: var(--pure-white); line-height: 0.95; margin-bottom: 8px; position: relative; }
|
||||||
|
.card-text { font-size: 14px; color: rgba(255,255,255,0.85); line-height: 1.40; position: relative; margin-bottom: 16px; }
|
||||||
|
.card-btn {
|
||||||
|
position: relative; display: inline-flex; align-items: center; background: var(--pure-white);
|
||||||
|
color: var(--absolute-black); border: 1px solid var(--pure-white); border-radius: 0;
|
||||||
|
padding: 10px 15px; font-size: 14.4px; font-weight: 700; min-height: 46px; cursor: pointer; text-decoration: none; width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FORMS */
|
||||||
|
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; max-width: 700px; }
|
||||||
|
.form-group { display: flex; flex-direction: column; gap: 6px; }
|
||||||
|
.form-group.full { grid-column: 1 / -1; }
|
||||||
|
.form-label { font-size: 12px; font-weight: 700; color: var(--text-muted); text-transform: uppercase; }
|
||||||
|
.form-input {
|
||||||
|
font-family: var(--font-main); font-size: 12.8px; color: var(--text-primary);
|
||||||
|
background: transparent; border: 1px solid var(--card-border); border-radius: 50px;
|
||||||
|
padding: 10px 15px; outline: none; transition: border-color 0.3s; line-height: 1.10;
|
||||||
|
}
|
||||||
|
.form-input::placeholder { color: var(--text-muted); }
|
||||||
|
.form-input:focus { border-color: var(--renault-yellow); }
|
||||||
|
.form-input-error { border-color: var(--error-rose); }
|
||||||
|
.form-error-text { font-size: 11px; color: var(--error-rose); }
|
||||||
|
textarea.form-input { resize: vertical; min-height: 100px; border-radius: 8px; }
|
||||||
|
|
||||||
|
/* SPACING */
|
||||||
|
.spacing-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
|
||||||
|
.spacing-item { display: flex; flex-direction: column; align-items: center; gap: 6px; }
|
||||||
|
.spacing-box { background: var(--renault-yellow); height: 40px; }
|
||||||
|
.spacing-label { font-family: monospace; font-size: 10px; color: var(--text-muted); white-space: nowrap; }
|
||||||
|
|
||||||
|
/* RADIUS */
|
||||||
|
.radius-row { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-end; }
|
||||||
|
.radius-item { display: flex; flex-direction: column; align-items: center; gap: 8px; }
|
||||||
|
.radius-box { width: 80px; height: 80px; background: var(--card-bg); border: 1px solid var(--card-border); }
|
||||||
|
.radius-label { font-family: monospace; font-size: 11px; color: var(--text-secondary); text-align: center; }
|
||||||
|
.radius-context { font-size: 11px; color: var(--text-muted); text-align: center; }
|
||||||
|
|
||||||
|
/* ELEVATION */
|
||||||
|
.elevation-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 24px; padding: 40px; background: var(--absolute-black); border: 1px solid var(--card-border); }
|
||||||
|
.elevation-card { background: var(--card-bg); padding: 24px; min-height: 120px; display: flex; flex-direction: column; justify-content: flex-end; border: 1px solid var(--card-border); }
|
||||||
|
.elevation-label { font-size: 14px; font-weight: 700; color: var(--text-primary); margin-bottom: 4px; }
|
||||||
|
.elevation-desc { font-size: 12px; color: var(--text-muted); line-height: 1.40; }
|
||||||
|
|
||||||
|
/* RESPONSIVE */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
nav { padding: 12px 20px; }
|
||||||
|
.nav-links { display: none; }
|
||||||
|
.hero { padding: 60px 20px; min-height: 70vh; }
|
||||||
|
.hero h1 { font-size: 32px; }
|
||||||
|
.hero-buttons { flex-direction: column; gap: 12px; }
|
||||||
|
.section { padding: 48px 20px; }
|
||||||
|
.section-title { font-size: 24px; }
|
||||||
|
.color-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
|
||||||
|
.card-grid { grid-template-columns: 1fr; }
|
||||||
|
.form-grid { grid-template-columns: 1fr; }
|
||||||
|
.form-group.full { grid-column: auto; }
|
||||||
|
.button-row, .dark-btn-row { flex-direction: column; align-items: flex-start; }
|
||||||
|
.elevation-grid { grid-template-columns: 1fr; padding: 20px; }
|
||||||
|
.dark-badge { top: 8px; right: 8px; font-size: 10px; padding: 4px 10px; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="dark-badge">Dark Mode</div>
|
||||||
|
|
||||||
|
<!-- NAV -->
|
||||||
|
<nav>
|
||||||
|
<a href="#" class="nav-brand">awesome-design-md</a>
|
||||||
|
<ul class="nav-links">
|
||||||
|
<li><a href="#colors">Colors</a></li>
|
||||||
|
<li><a href="#typography">Typography</a></li>
|
||||||
|
<li><a href="#buttons">Buttons</a></li>
|
||||||
|
<li><a href="#cards">Cards</a></li>
|
||||||
|
<li><a href="#forms">Forms</a></li>
|
||||||
|
<li><a href="#spacing">Spacing</a></li>
|
||||||
|
<li><a class="nav-cta" href="#elevation">Explore</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="hero">
|
||||||
|
<h1>Design System<br>Inspired by Renault</h1>
|
||||||
|
<p class="subtitle">A visual reference generated from DESIGN.md — every color, type rule, and component token documented from Renault's design system.</p>
|
||||||
|
<div class="hero-buttons">
|
||||||
|
<a href="#colors" class="btn-super-primary">Configure</a>
|
||||||
|
<a href="#typography" class="btn-ghost-white">Explore</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- 1. COLOR PALETTE -->
|
||||||
|
<div id="colors" class="section">
|
||||||
|
<h2 class="section-title">Color Palette</h2>
|
||||||
|
<p class="section-desc">Every color extracted from Renault's design system with semantic names, hex values, and functional roles.</p>
|
||||||
|
|
||||||
|
<div class="color-group-label">Primary</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#EFDF00;"></div><div class="swatch-info"><div class="swatch-name">Renault Yellow</div><div class="swatch-hex">#EFDF00</div><div class="swatch-role">Super-primary CTA, brand accent</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#000000;"></div><div class="swatch-info"><div class="swatch-name">Absolute Black</div><div class="swatch-hex">#000000</div><div class="swatch-role">Primary button bg, headings, dark sections</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#FFFFFF;"></div><div class="swatch-info"><div class="swatch-name">Pure White</div><div class="swatch-hex">#FFFFFF</div><div class="swatch-role">Primary surface, light canvas (--rt-color-white)</div></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Secondary & Accent</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#F8EB4C;"></div><div class="swatch-info"><div class="swatch-name">Soft Yellow</div><div class="swatch-hex">#F8EB4C</div><div class="swatch-role">Yellow hover/pressed state</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#1883FD;"></div><div class="swatch-info"><div class="swatch-name">Renault Blue</div><div class="swatch-hex">#1883FD</div><div class="swatch-role">Link hover color across all variants</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#D9D9D6;"></div><div class="swatch-info"><div class="swatch-name">Warm Gray</div><div class="swatch-hex">#D9D9D6</div><div class="swatch-role">Disabled states, subtle borders</div></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Surface & Background</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#222222;"></div><div class="swatch-info"><div class="swatch-name">Charcoal</div><div class="swatch-hex">#222222</div><div class="swatch-role">Secondary dark surface (--rt-color-dark)</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#F2F2F2;"></div><div class="swatch-info"><div class="swatch-name">Pale Silver</div><div class="swatch-hex">#F2F2F2</div><div class="swatch-role">Alternate light surface, card borders</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#D1D1D1;"></div><div class="swatch-info"><div class="swatch-name">Border Gray</div><div class="swatch-hex">#D1D1D1</div><div class="swatch-role">Input borders, subtle separators</div></div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Semantic</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#8DC572;"></div><div class="swatch-info"><div class="swatch-name">Success Green</div><div class="swatch-hex">#8DC572</div><div class="swatch-role">Positive status (--rt-color-success)</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#BE6464;"></div><div class="swatch-info"><div class="swatch-name">Error Rose</div><div class="swatch-hex">#BE6464</div><div class="swatch-role">Validation errors (--rt-color-error)</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#F0AD4E;"></div><div class="swatch-info"><div class="swatch-name">Warning Amber</div><div class="swatch-hex">#F0AD4E</div><div class="swatch-role">Cautionary alerts (--rt-color-warning)</div></div></div>
|
||||||
|
<div class="color-swatch"><div class="swatch-block" style="background:#337AB7;"></div><div class="swatch-info"><div class="swatch-name">Info Blue</div><div class="swatch-hex">#337AB7</div><div class="swatch-role">Informational callouts (--rt-color-info)</div></div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 2. TYPOGRAPHY -->
|
||||||
|
<div id="typography" class="section">
|
||||||
|
<h2 class="section-title">Typography Scale</h2>
|
||||||
|
<p class="section-desc">NouvelR proprietary typeface — geometric sans-serif with a 28-degree "radical r" cut. Rendered with Nunito Sans as Google Font substitute.</p>
|
||||||
|
|
||||||
|
<div class="type-sample"><div style="font-size:56px;font-weight:700;line-height:0.95;text-transform:uppercase;color:var(--text-primary);">Hero Title</div><div class="type-label">Hero Title — 56px / 700 / 0.95 LH / uppercase — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:40px;font-weight:700;line-height:0.95;color:var(--text-primary);">Section Heading — Electric Models</div><div class="type-label">Section Heading — 40px / 700 / 0.95 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:32px;font-weight:700;line-height:0.95;color:var(--text-primary);">Card Heading — New Scenic</div><div class="type-label">Card Heading — 32px / 700 / 0.95 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:24px;font-weight:700;line-height:0.95;color:var(--text-primary);">Subheading — Campaign Offers</div><div class="type-label">Subheading — 24px / 700 / 0.95 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:21.92px;font-weight:600;line-height:1.20;color:var(--text-primary);">Module Title — Vehicle Range</div><div class="type-label">Module Title — 21.92px / 600 / 1.20 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:18px;font-weight:700;line-height:1.00;color:var(--text-primary);">Emphasis — E-Tech Hybrid</div><div class="type-label">Emphasis — 18px / 700 / 1.00 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:16px;font-weight:700;line-height:1.40;color:var(--text-primary);">Body Heading — Performance Details</div><div class="type-label">Body Heading — 16px / 700 / 1.40 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:14px;font-weight:400;line-height:1.40;color:var(--text-secondary);">Body Text — The all-new Scenic E-Tech electric delivers a driving experience that combines range, comfort, and advanced technology.</div><div class="type-label">Body Text — 14px / 400 / 1.40 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:14.4px;font-weight:700;line-height:1.00;letter-spacing:0.144px;color:var(--text-primary);">Button Label — Configure</div><div class="type-label">Button Label — 14.4px / 700 / 1.00 LH / 0.144px — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:13px;font-weight:700;line-height:1.50;color:var(--text-primary);">Nav Link — Models & Range</div><div class="type-label">Nav Link — 13px / 700 / 1.50 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:10px;font-weight:700;line-height:1.45;color:var(--text-muted);">Micro Text — Legal Disclaimer</div><div class="type-label">Micro Text — 10px / 700 / 1.45 LH — NouvelR</div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 3. BUTTONS -->
|
||||||
|
<div id="buttons" class="section">
|
||||||
|
<h2 class="section-title">Button Variants</h2>
|
||||||
|
<p class="section-desc">All buttons use zero border-radius. Four variants for dark contexts.</p>
|
||||||
|
|
||||||
|
<div class="button-row" style="margin-bottom:32px;">
|
||||||
|
<div class="button-item"><span class="btn-label">Super Primary (Yellow)</span><button class="btn-yellow">Configure</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label">Primary Inverted (White)</span><button class="btn-primary-white">Explore</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label">Ghost (White)</span><button class="btn-ghost-dark-2">Learn More</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label">Text Link</span><a href="#" class="btn-text-link-dark">View Details</a></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">On Deeper Dark Background</div>
|
||||||
|
<div class="dark-btn-row">
|
||||||
|
<div class="button-item"><span class="btn-label" style="color:var(--text-muted);">Super Primary (Yellow)</span><button class="btn-yellow">Configure</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label" style="color:var(--text-muted);">Primary Inverted (White)</span><button class="btn-primary-white">Explore</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label" style="color:var(--text-muted);">Ghost (White)</span><button class="btn-ghost-dark-2">Learn More</button></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 4. CARDS -->
|
||||||
|
<div id="cards" class="section">
|
||||||
|
<h2 class="section-title">Card Examples</h2>
|
||||||
|
<p class="section-desc">PromoCards with dark gradient overlays for text legibility over photography.</p>
|
||||||
|
<div class="card-grid">
|
||||||
|
<div class="card" style="background:linear-gradient(135deg, #5B2D8E 0%, #1A7A8E 100%);"><div class="card-heading">Scenic E-Tech<br>Electric</div><div class="card-text">The next generation of electric mobility.</div><div class="card-btn">Explore</div></div>
|
||||||
|
<div class="card" style="background:linear-gradient(135deg, #111 0%, #333 100%);"><div class="card-heading">E-Tech<br>Hybrid</div><div class="card-text">Intelligent hybrid powertrain for everyday efficiency.</div><div class="card-btn" style="background:var(--renault-yellow);color:#000;border-color:var(--renault-yellow);">Configure</div></div>
|
||||||
|
<div class="card" style="background:linear-gradient(135deg, #8B1A6E 0%, #5B2D8E 100%);"><div class="card-heading">Renault<br>Clio</div><div class="card-text">The iconic city car, now with hybrid technology.</div><div class="card-btn" style="background:transparent;color:#fff;border-color:#fff;">Learn More</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 5. FORMS -->
|
||||||
|
<div id="forms" class="section">
|
||||||
|
<h2 class="section-title">Form Elements</h2>
|
||||||
|
<p class="section-desc">Pill-shaped inputs (50px radius) with transparent background for dark mode.</p>
|
||||||
|
<div class="form-grid">
|
||||||
|
<div class="form-group"><label class="form-label">First Name</label><input type="text" class="form-input" placeholder="Enter first name"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Last Name</label><input type="text" class="form-input" placeholder="Enter last name"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Email (Focus State)</label><input type="email" class="form-input" placeholder="email@example.com" style="border-color:var(--renault-yellow);"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Phone (Error State)</label><input type="tel" class="form-input form-input-error" value="+90 555" style="color:var(--text-primary);"><span class="form-error-text">Please enter a valid phone number</span></div>
|
||||||
|
<div class="form-group full"><label class="form-label">Message</label><textarea class="form-input" placeholder="Write your message..."></textarea></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 6. SPACING -->
|
||||||
|
<div id="spacing" class="section">
|
||||||
|
<h2 class="section-title">Spacing Scale</h2>
|
||||||
|
<p class="section-desc">Base unit: 8px. The full spacing scale from Renault's design tokens.</p>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:1px;"></div><span class="spacing-label">1px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:4px;"></div><span class="spacing-label">4px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:6px;"></div><span class="spacing-label">6px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:8px;"></div><span class="spacing-label">8px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:10px;"></div><span class="spacing-label">10px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:12px;"></div><span class="spacing-label">12px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:16px;"></div><span class="spacing-label">16px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:20px;"></div><span class="spacing-label">20px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:24px;"></div><span class="spacing-label">24px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:32px;"></div><span class="spacing-label">32px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:40px;"></div><span class="spacing-label">40px</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 7. BORDER RADIUS -->
|
||||||
|
<div id="radius" class="section">
|
||||||
|
<h2 class="section-title">Border Radius Scale</h2>
|
||||||
|
<p class="section-desc">Zero-radius dominates buttons and cards. Pill shapes reserved for inputs only.</p>
|
||||||
|
<div class="radius-row">
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:0;"></div><span class="radius-label">0px</span><span class="radius-context">Buttons, Cards</span></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:2px;"></div><span class="radius-label">2px</span><span class="radius-context">Small UI</span></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:4px;"></div><span class="radius-label">4px</span><span class="radius-context">Labels, Tags</span></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:46px;"></div><span class="radius-label">46px</span><span class="radius-context">Filter Chips</span></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:50px;"></div><span class="radius-label">50px</span><span class="radius-context">Search Input</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 8. ELEVATION -->
|
||||||
|
<div id="elevation" class="section">
|
||||||
|
<h2 class="section-title">Elevation & Depth</h2>
|
||||||
|
<p class="section-desc">Seven shadow tokens from subtle hover lifts to dramatic deep panels.</p>
|
||||||
|
<div class="elevation-grid">
|
||||||
|
<div class="elevation-card" style="box-shadow:none;"><div class="elevation-label">Level 0 — Flat</div><div class="elevation-desc">No shadow. Default for PromoCards and buttons.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0.4) 0px 4px 8px;"><div class="elevation-label">Level 1 — Soft</div><div class="elevation-desc">Card hover states, subtle lift.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0.4) 0px 0px 18px;"><div class="elevation-label">Level 2 — Medium</div><div class="elevation-desc">Floating elements, dropdowns.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0.2) 0px 2px 4px, rgba(50,50,93,0.15) 0px 7px 14px;"><div class="elevation-label">Level 3 — Layered</div><div class="elevation-desc">Compound shadow for modals.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0.3) 0px 40px 80px;"><div class="elevation-label">Level 4 — Deep</div><div class="elevation-desc">Large floating panels.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0.4) 5px 5px 8px;"><div class="elevation-label">Level 5 — Directional</div><div class="elevation-desc">Offset directional shadow.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgb(80,80,80) 0px 0px 12px 2px;"><div class="elevation-label">Level 6 — Ambient</div><div class="elevation-desc">Warm ambient glow.</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- FOOTER -->
|
||||||
|
<footer style="background:var(--absolute-black);padding:40px;text-align:center;margin-top:40px;border-top:1px solid var(--card-border);">
|
||||||
|
<p style="font-size:12px;color:var(--text-muted);">Generated from DESIGN.md — Renault Design System Tokens</p>
|
||||||
|
<p style="font-size:13px;font-weight:700;color:var(--text-secondary);margin-top:8px;">awesome-design-md</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
609
design-md/renault/preview.html
Normal file
609
design-md/renault/preview.html
Normal file
@ -0,0 +1,609 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Design System Inspired by Renault</title>
|
||||||
|
<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=Nunito+Sans:wght@400;600;700;800&display=swap" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--renault-yellow: #EFDF00;
|
||||||
|
--soft-yellow: #F8EB4C;
|
||||||
|
--renault-blue: #1883FD;
|
||||||
|
--absolute-black: #000000;
|
||||||
|
--pure-white: #FFFFFF;
|
||||||
|
--charcoal: #222222;
|
||||||
|
--pale-silver: #F2F2F2;
|
||||||
|
--warm-gray: #D9D9D6;
|
||||||
|
--border-gray: #D1D1D1;
|
||||||
|
--success-green: #8DC572;
|
||||||
|
--error-rose: #BE6464;
|
||||||
|
--warning-amber: #F0AD4E;
|
||||||
|
--info-blue: #337AB7;
|
||||||
|
--font-main: 'Nunito Sans', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: var(--font-main);
|
||||||
|
background: var(--pure-white);
|
||||||
|
color: var(--absolute-black);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.40;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NAV */
|
||||||
|
nav {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 100;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 12px 40px;
|
||||||
|
background: var(--pure-white);
|
||||||
|
min-height: 56px;
|
||||||
|
border-bottom: 1px solid var(--pale-silver);
|
||||||
|
}
|
||||||
|
.nav-brand {
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--absolute-black);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.nav-links {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 4px;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
.nav-links a {
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--absolute-black);
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 8px 14px;
|
||||||
|
transition: color 0.3s;
|
||||||
|
}
|
||||||
|
.nav-links a:hover { color: var(--renault-blue); }
|
||||||
|
.nav-cta {
|
||||||
|
background: var(--absolute-black);
|
||||||
|
color: var(--pure-white) !important;
|
||||||
|
padding: 10px 15px;
|
||||||
|
border-radius: 0;
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 14.4px;
|
||||||
|
font-weight: 700;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: background-color 0.3s;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 46px;
|
||||||
|
border: 1px solid var(--absolute-black);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.nav-cta:hover { background: var(--charcoal); }
|
||||||
|
|
||||||
|
/* HERO */
|
||||||
|
.hero {
|
||||||
|
position: relative;
|
||||||
|
min-height: 90vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 100px 40px 80px;
|
||||||
|
background: linear-gradient(135deg, #8B1A6E 0%, #5B2D8E 25%, #2E4A9E 50%, #1A7A8E 75%, #1A9E7A 100%);
|
||||||
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.hero::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: -20%;
|
||||||
|
right: -10%;
|
||||||
|
width: 60%;
|
||||||
|
height: 140%;
|
||||||
|
background: radial-gradient(ellipse, rgba(239,223,0,0.12) 0%, transparent 70%);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.hero h1 {
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 56px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 0.95;
|
||||||
|
letter-spacing: normal;
|
||||||
|
color: var(--pure-white);
|
||||||
|
margin-bottom: 20px;
|
||||||
|
position: relative;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.hero .subtitle {
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: rgba(255,255,255,0.85);
|
||||||
|
margin-bottom: 40px;
|
||||||
|
line-height: 1.40;
|
||||||
|
position: relative;
|
||||||
|
max-width: 600px;
|
||||||
|
}
|
||||||
|
.hero-buttons {
|
||||||
|
display: flex;
|
||||||
|
gap: 16px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.btn-super-primary {
|
||||||
|
background: var(--renault-yellow);
|
||||||
|
color: var(--absolute-black);
|
||||||
|
border: 1px solid var(--renault-yellow);
|
||||||
|
border-radius: 0;
|
||||||
|
padding: 10px 28px;
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
min-height: 46px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.3s;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.btn-super-primary:hover { background: var(--soft-yellow); }
|
||||||
|
.btn-ghost-white {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--pure-white);
|
||||||
|
border: 1px solid var(--pure-white);
|
||||||
|
border-radius: 0;
|
||||||
|
padding: 10px 28px;
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
min-height: 46px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.3s, color 0.3s;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.btn-ghost-white:hover { background: rgba(255,255,255,0.15); }
|
||||||
|
|
||||||
|
/* SECTIONS */
|
||||||
|
.section {
|
||||||
|
padding: 80px 40px;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.section-title {
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 32px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--absolute-black);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
line-height: 0.95;
|
||||||
|
}
|
||||||
|
.section-desc {
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--charcoal);
|
||||||
|
margin-bottom: 40px;
|
||||||
|
line-height: 1.40;
|
||||||
|
}
|
||||||
|
.section-divider {
|
||||||
|
border: none;
|
||||||
|
border-top: 1px solid var(--pale-silver);
|
||||||
|
margin: 0 40px;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* COLOR PALETTE */
|
||||||
|
.color-group-label {
|
||||||
|
font-family: var(--font-main);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--absolute-black);
|
||||||
|
margin-bottom: 16px;
|
||||||
|
margin-top: 32px;
|
||||||
|
}
|
||||||
|
.color-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(155px, 1fr));
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.color-swatch { border-radius: 0; overflow: hidden; }
|
||||||
|
.color-swatch .swatch-block { height: 80px; }
|
||||||
|
.color-swatch .swatch-info {
|
||||||
|
padding: 12px;
|
||||||
|
background: var(--pure-white);
|
||||||
|
border: 1px solid var(--pale-silver);
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-name { font-size: 13px; font-weight: 700; color: var(--absolute-black); margin-bottom: 2px; }
|
||||||
|
.color-swatch .swatch-hex { font-size: 12px; color: var(--charcoal); margin-bottom: 4px; font-family: monospace; }
|
||||||
|
.color-swatch .swatch-role { font-size: 11px; color: var(--warm-gray); line-height: 1.3; }
|
||||||
|
|
||||||
|
/* TYPOGRAPHY */
|
||||||
|
.type-sample { margin-bottom: 32px; padding-bottom: 24px; border-bottom: 1px solid var(--pale-silver); }
|
||||||
|
.type-sample:last-child { border-bottom: none; }
|
||||||
|
.type-label { font-size: 12px; font-weight: 400; color: var(--warm-gray); margin-top: 8px; }
|
||||||
|
|
||||||
|
/* BUTTONS */
|
||||||
|
.button-row { display: flex; flex-wrap: wrap; gap: 20px; align-items: flex-end; margin-bottom: 24px; }
|
||||||
|
.button-item { display: flex; flex-direction: column; gap: 8px; }
|
||||||
|
.button-item .btn-label { font-size: 11px; font-weight: 700; color: var(--warm-gray); text-transform: uppercase; }
|
||||||
|
.btn-primary-black {
|
||||||
|
background: var(--absolute-black); color: var(--pure-white); border: 1px solid var(--absolute-black);
|
||||||
|
border-radius: 0; padding: 10px 15px; font-family: var(--font-main); font-size: 14.4px;
|
||||||
|
font-weight: 700; min-height: 46px; min-width: 120px; text-align: center; cursor: pointer;
|
||||||
|
transition: background-color 0.3s; letter-spacing: 0.144px;
|
||||||
|
}
|
||||||
|
.btn-primary-black:hover { background: var(--charcoal); }
|
||||||
|
.btn-yellow {
|
||||||
|
background: var(--renault-yellow); color: var(--absolute-black); border: 1px solid var(--renault-yellow);
|
||||||
|
border-radius: 0; padding: 10px 15px; font-family: var(--font-main); font-size: 14.4px;
|
||||||
|
font-weight: 700; min-height: 46px; min-width: 120px; text-align: center; cursor: pointer;
|
||||||
|
transition: background-color 0.3s; letter-spacing: 0.144px;
|
||||||
|
}
|
||||||
|
.btn-yellow:hover { background: var(--soft-yellow); }
|
||||||
|
.btn-ghost-black {
|
||||||
|
background: transparent; color: var(--absolute-black); border: 1px solid var(--absolute-black);
|
||||||
|
border-radius: 0; padding: 10px 15px; font-family: var(--font-main); font-size: 14.4px;
|
||||||
|
font-weight: 700; min-height: 46px; min-width: 120px; text-align: center; cursor: pointer;
|
||||||
|
transition: background-color 0.3s, color 0.3s; letter-spacing: 0.144px;
|
||||||
|
}
|
||||||
|
.btn-ghost-black:hover { background: var(--absolute-black); color: var(--pure-white); }
|
||||||
|
.btn-ghost-white-2 {
|
||||||
|
background: transparent; color: var(--pure-white); border: 1px solid var(--pure-white);
|
||||||
|
border-radius: 0; padding: 10px 15px; font-family: var(--font-main); font-size: 14.4px;
|
||||||
|
font-weight: 700; min-height: 46px; min-width: 120px; text-align: center; cursor: pointer;
|
||||||
|
transition: background-color 0.3s; letter-spacing: 0.144px;
|
||||||
|
}
|
||||||
|
.btn-ghost-white-2:hover { background: rgba(255,255,255,0.15); }
|
||||||
|
.btn-text-link {
|
||||||
|
background: none; border: none; color: var(--absolute-black); font-family: var(--font-main);
|
||||||
|
font-size: 14px; font-weight: 700; cursor: pointer; text-decoration: none; transition: color 0.3s; padding: 0;
|
||||||
|
}
|
||||||
|
.btn-text-link:hover { color: var(--renault-blue); }
|
||||||
|
.dark-btn-row {
|
||||||
|
background: var(--absolute-black); padding: 24px; display: flex; flex-wrap: wrap; gap: 20px; align-items: flex-end;
|
||||||
|
}
|
||||||
|
.dark-btn-row .btn-label { color: var(--warm-gray); }
|
||||||
|
|
||||||
|
/* CARDS */
|
||||||
|
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 0; }
|
||||||
|
.card {
|
||||||
|
position: relative; overflow: hidden; min-height: 300px; display: flex; flex-direction: column;
|
||||||
|
justify-content: flex-end; padding: 24px; background-size: cover; background-position: center;
|
||||||
|
}
|
||||||
|
.card::before {
|
||||||
|
content: ''; position: absolute; top: 0; left: 0; right: 0; height: 50%;
|
||||||
|
background: linear-gradient(rgba(0,0,0,0.6) 0%, rgba(0,0,0,0) 100%); pointer-events: none;
|
||||||
|
}
|
||||||
|
.card-heading { font-family: var(--font-main); font-size: 40px; font-weight: 700; color: var(--pure-white); line-height: 0.95; margin-bottom: 8px; position: relative; }
|
||||||
|
.card-text { font-family: var(--font-main); font-size: 14px; color: rgba(255,255,255,0.85); line-height: 1.40; position: relative; margin-bottom: 16px; }
|
||||||
|
.card-btn {
|
||||||
|
position: relative; display: inline-flex; align-items: center; background: var(--pure-white);
|
||||||
|
color: var(--absolute-black); border: 1px solid var(--pure-white); border-radius: 0;
|
||||||
|
padding: 10px 15px; font-family: var(--font-main); font-size: 14.4px; font-weight: 700;
|
||||||
|
min-height: 46px; cursor: pointer; text-decoration: none; width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FORMS */
|
||||||
|
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; max-width: 700px; }
|
||||||
|
.form-group { display: flex; flex-direction: column; gap: 6px; }
|
||||||
|
.form-group.full { grid-column: 1 / -1; }
|
||||||
|
.form-label { font-size: 12px; font-weight: 700; color: var(--absolute-black); text-transform: uppercase; }
|
||||||
|
.form-input {
|
||||||
|
font-family: var(--font-main); font-size: 12.8px; color: var(--absolute-black);
|
||||||
|
background: var(--pure-white); border: 1px solid var(--border-gray); border-radius: 50px;
|
||||||
|
padding: 10px 15px; outline: none; transition: border-color 0.3s; line-height: 1.10;
|
||||||
|
}
|
||||||
|
.form-input::placeholder { color: var(--warm-gray); }
|
||||||
|
.form-input:focus { border-color: var(--absolute-black); }
|
||||||
|
.form-input-error { border-color: var(--error-rose); }
|
||||||
|
.form-error-text { font-size: 11px; color: var(--error-rose); }
|
||||||
|
textarea.form-input { resize: vertical; min-height: 100px; border-radius: 8px; }
|
||||||
|
|
||||||
|
/* SPACING */
|
||||||
|
.spacing-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
|
||||||
|
.spacing-item { display: flex; flex-direction: column; align-items: center; gap: 6px; }
|
||||||
|
.spacing-box { background: var(--renault-yellow); height: 40px; }
|
||||||
|
.spacing-label { font-family: monospace; font-size: 10px; color: var(--warm-gray); white-space: nowrap; }
|
||||||
|
|
||||||
|
/* RADIUS */
|
||||||
|
.radius-row { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-end; }
|
||||||
|
.radius-item { display: flex; flex-direction: column; align-items: center; gap: 8px; }
|
||||||
|
.radius-box { width: 80px; height: 80px; background: var(--pale-silver); border: 1px solid var(--border-gray); }
|
||||||
|
.radius-label { font-family: monospace; font-size: 11px; color: var(--charcoal); text-align: center; }
|
||||||
|
.radius-context { font-size: 11px; color: var(--warm-gray); text-align: center; }
|
||||||
|
|
||||||
|
/* ELEVATION */
|
||||||
|
.elevation-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 24px; padding: 40px; background: var(--pale-silver); }
|
||||||
|
.elevation-card {
|
||||||
|
background: var(--pure-white); padding: 24px; min-height: 120px;
|
||||||
|
display: flex; flex-direction: column; justify-content: flex-end;
|
||||||
|
}
|
||||||
|
.elevation-label { font-size: 14px; font-weight: 700; color: var(--absolute-black); margin-bottom: 4px; }
|
||||||
|
.elevation-desc { font-size: 12px; color: var(--charcoal); line-height: 1.40; }
|
||||||
|
|
||||||
|
/* RESPONSIVE */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
nav { padding: 12px 20px; }
|
||||||
|
.nav-links { display: none; }
|
||||||
|
.hero { padding: 60px 20px; min-height: 70vh; }
|
||||||
|
.hero h1 { font-size: 32px; }
|
||||||
|
.hero-buttons { flex-direction: column; gap: 12px; }
|
||||||
|
.section { padding: 48px 20px; }
|
||||||
|
.section-title { font-size: 24px; }
|
||||||
|
.color-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
|
||||||
|
.card-grid { grid-template-columns: 1fr; }
|
||||||
|
.form-grid { grid-template-columns: 1fr; }
|
||||||
|
.form-group.full { grid-column: auto; }
|
||||||
|
.button-row, .dark-btn-row { flex-direction: column; align-items: flex-start; }
|
||||||
|
.elevation-grid { grid-template-columns: 1fr; padding: 20px; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- NAV -->
|
||||||
|
<nav>
|
||||||
|
<a href="#" class="nav-brand">awesome-design-md</a>
|
||||||
|
<ul class="nav-links">
|
||||||
|
<li><a href="#colors">Colors</a></li>
|
||||||
|
<li><a href="#typography">Typography</a></li>
|
||||||
|
<li><a href="#buttons">Buttons</a></li>
|
||||||
|
<li><a href="#cards">Cards</a></li>
|
||||||
|
<li><a href="#forms">Forms</a></li>
|
||||||
|
<li><a href="#spacing">Spacing</a></li>
|
||||||
|
<li><a class="nav-cta" href="#elevation">Explore</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="hero">
|
||||||
|
<h1>Design System<br>Inspired by Renault</h1>
|
||||||
|
<p class="subtitle">A visual reference generated from DESIGN.md — every color, type rule, and component token documented from Renault's design system.</p>
|
||||||
|
<div class="hero-buttons">
|
||||||
|
<a href="#colors" class="btn-super-primary">Configure</a>
|
||||||
|
<a href="#typography" class="btn-ghost-white">Explore</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- 1. COLOR PALETTE -->
|
||||||
|
<div id="colors" class="section">
|
||||||
|
<h2 class="section-title">Color Palette</h2>
|
||||||
|
<p class="section-desc">Every color extracted from Renault's design system with semantic names, hex values, and functional roles.</p>
|
||||||
|
|
||||||
|
<div class="color-group-label">Primary</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#EFDF00;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Renault Yellow</div><div class="swatch-hex">#EFDF00</div><div class="swatch-role">Super-primary CTA, brand accent</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#000000;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Absolute Black</div><div class="swatch-hex">#000000</div><div class="swatch-role">Primary button bg, headings, dark sections</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#FFFFFF; border:1px solid #D9D9D6;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Pure White</div><div class="swatch-hex">#FFFFFF</div><div class="swatch-role">Primary surface, light canvas (--rt-color-white)</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Secondary & Accent</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#F8EB4C;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Soft Yellow</div><div class="swatch-hex">#F8EB4C</div><div class="swatch-role">Yellow hover/pressed state</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#1883FD;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Renault Blue</div><div class="swatch-hex">#1883FD</div><div class="swatch-role">Link hover color across all variants</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#D9D9D6;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Warm Gray</div><div class="swatch-hex">#D9D9D6</div><div class="swatch-role">Disabled states, subtle borders</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Surface & Background</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#222222;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Charcoal</div><div class="swatch-hex">#222222</div><div class="swatch-role">Secondary dark surface (--rt-color-dark)</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#F2F2F2;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Pale Silver</div><div class="swatch-hex">#F2F2F2</div><div class="swatch-role">Alternate light surface, card borders</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#D1D1D1;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Border Gray</div><div class="swatch-hex">#D1D1D1</div><div class="swatch-role">Input borders, subtle separators</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Semantic</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#8DC572;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Success Green</div><div class="swatch-hex">#8DC572</div><div class="swatch-role">Positive status (--rt-color-success)</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#BE6464;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Error Rose</div><div class="swatch-hex">#BE6464</div><div class="swatch-role">Validation errors (--rt-color-error)</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#F0AD4E;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Warning Amber</div><div class="swatch-hex">#F0AD4E</div><div class="swatch-role">Cautionary alerts (--rt-color-warning)</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background:#337AB7;"></div>
|
||||||
|
<div class="swatch-info"><div class="swatch-name">Info Blue</div><div class="swatch-hex">#337AB7</div><div class="swatch-role">Informational callouts (--rt-color-info)</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 2. TYPOGRAPHY -->
|
||||||
|
<div id="typography" class="section">
|
||||||
|
<h2 class="section-title">Typography Scale</h2>
|
||||||
|
<p class="section-desc">NouvelR proprietary typeface — geometric sans-serif with a 28-degree "radical r" cut. Rendered with Nunito Sans as Google Font substitute.</p>
|
||||||
|
|
||||||
|
<div class="type-sample"><div style="font-size:56px;font-weight:700;line-height:0.95;text-transform:uppercase;">Hero Title</div><div class="type-label">Hero Title — 56px / 700 / 0.95 LH / uppercase — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:40px;font-weight:700;line-height:0.95;">Section Heading — Electric Models</div><div class="type-label">Section Heading — 40px / 700 / 0.95 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:32px;font-weight:700;line-height:0.95;">Card Heading — New Scenic</div><div class="type-label">Card Heading — 32px / 700 / 0.95 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:24px;font-weight:700;line-height:0.95;">Subheading — Campaign Offers</div><div class="type-label">Subheading — 24px / 700 / 0.95 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:21.92px;font-weight:600;line-height:1.20;">Module Title — Vehicle Range</div><div class="type-label">Module Title — 21.92px / 600 / 1.20 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:19.2px;font-weight:600;line-height:1.30;">UI Heading — Configuration Options</div><div class="type-label">UI Heading — 19.2px / 600 / 1.30 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:18px;font-weight:700;line-height:1.00;">Emphasis — E-Tech Hybrid</div><div class="type-label">Emphasis — 18px / 700 / 1.00 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:16px;font-weight:700;line-height:1.40;">Body Heading — Performance Details</div><div class="type-label">Body Heading — 16px / 700 / 1.40 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:14px;font-weight:400;line-height:1.40;color:var(--charcoal);">Body Text — The all-new Scenic E-Tech electric delivers a driving experience that combines range, comfort, and advanced technology for everyday journeys.</div><div class="type-label">Body Text — 14px / 400 / 1.40 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:14.4px;font-weight:700;line-height:1.00;letter-spacing:0.144px;">Button Label — Configure</div><div class="type-label">Button Label — 14.4px / 700 / 1.00 LH / 0.144px — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:13px;font-weight:700;line-height:1.50;">Nav Link — Models & Range</div><div class="type-label">Nav Link — 13px / 700 / 1.50 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:12.8px;font-weight:400;line-height:1.10;color:var(--charcoal);">Caption — Photographed at the Renault Design Center</div><div class="type-label">Caption — 12.8px / 400 / 1.10 LH — NouvelR</div></div>
|
||||||
|
<div class="type-sample"><div style="font-size:10px;font-weight:700;line-height:1.45;color:var(--warm-gray);">Micro Text — Legal Disclaimer</div><div class="type-label">Micro Text — 10px / 700 / 1.45 LH — NouvelR</div></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 3. BUTTONS -->
|
||||||
|
<div id="buttons" class="section">
|
||||||
|
<h2 class="section-title">Button Variants</h2>
|
||||||
|
<p class="section-desc">All buttons use zero border-radius — sharp rectangular forms. Four variants cover light and dark contexts.</p>
|
||||||
|
|
||||||
|
<div class="button-row" style="margin-bottom:32px;">
|
||||||
|
<div class="button-item"><span class="btn-label">Super Primary (Yellow)</span><button class="btn-yellow">Configure</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label">Primary (Black)</span><button class="btn-primary-black">Explore</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label">Ghost (Black)</span><button class="btn-ghost-black">Learn More</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label">Text Link</span><a href="#" class="btn-text-link">View Details</a></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">On Dark Background</div>
|
||||||
|
<div class="dark-btn-row">
|
||||||
|
<div class="button-item"><span class="btn-label">Super Primary (Yellow)</span><button class="btn-yellow">Configure</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label">Primary Inverted (White)</span><button style="background:#fff;color:#000;border:1px solid #fff;border-radius:0;padding:10px 15px;font-family:var(--font-main);font-size:14.4px;font-weight:700;min-height:46px;min-width:120px;cursor:pointer;">Explore</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label">Ghost (White)</span><button class="btn-ghost-white-2">Learn More</button></div>
|
||||||
|
<div class="button-item"><span class="btn-label">Text Link</span><a href="#" style="color:#fff;font-size:14px;font-weight:700;font-family:var(--font-main);text-decoration:none;transition:color 0.3s;">View All</a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 4. CARDS -->
|
||||||
|
<div id="cards" class="section">
|
||||||
|
<h2 class="section-title">Card Examples</h2>
|
||||||
|
<p class="section-desc">PromoCards with dark gradient overlays for text legibility over photography. Alternating light and dark modes.</p>
|
||||||
|
|
||||||
|
<div class="card-grid">
|
||||||
|
<div class="card" style="background:linear-gradient(135deg, #5B2D8E 0%, #1A7A8E 100%);">
|
||||||
|
<div class="card-heading">Scenic E-Tech<br>Electric</div>
|
||||||
|
<div class="card-text">The next generation of electric mobility, reimagined.</div>
|
||||||
|
<div class="card-btn">Explore</div>
|
||||||
|
</div>
|
||||||
|
<div class="card" style="background:linear-gradient(135deg, #000 0%, #222 100%);">
|
||||||
|
<div class="card-heading">E-Tech<br>Hybrid</div>
|
||||||
|
<div class="card-text">Intelligent hybrid powertrain for everyday efficiency.</div>
|
||||||
|
<div class="card-btn" style="background:var(--renault-yellow);color:#000;border-color:var(--renault-yellow);">Configure</div>
|
||||||
|
</div>
|
||||||
|
<div class="card" style="background:linear-gradient(135deg, #8B1A6E 0%, #5B2D8E 100%);">
|
||||||
|
<div class="card-heading">Renault<br>Clio</div>
|
||||||
|
<div class="card-text">The iconic city car, now with hybrid technology.</div>
|
||||||
|
<div class="card-btn" style="background:transparent;color:#fff;border-color:#fff;">Learn More</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 5. FORMS -->
|
||||||
|
<div id="forms" class="section">
|
||||||
|
<h2 class="section-title">Form Elements</h2>
|
||||||
|
<p class="section-desc">Pill-shaped inputs (50px radius) contrasting with zero-radius buttons. NouvelR 12.8px text.</p>
|
||||||
|
|
||||||
|
<div class="form-grid">
|
||||||
|
<div class="form-group"><label class="form-label">First Name</label><input type="text" class="form-input" placeholder="Enter first name"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Last Name</label><input type="text" class="form-input" placeholder="Enter last name"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Email (Focus State)</label><input type="email" class="form-input" placeholder="email@example.com" style="border-color:#000;"></div>
|
||||||
|
<div class="form-group"><label class="form-label">Phone (Error State)</label><input type="tel" class="form-input form-input-error" value="+90 555"><span class="form-error-text">Please enter a valid phone number</span></div>
|
||||||
|
<div class="form-group full"><label class="form-label">Message</label><textarea class="form-input" placeholder="Write your message..."></textarea></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 6. SPACING -->
|
||||||
|
<div id="spacing" class="section">
|
||||||
|
<h2 class="section-title">Spacing Scale</h2>
|
||||||
|
<p class="section-desc">Base unit: 8px. The full spacing scale from Renault's design tokens.</p>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:1px;"></div><span class="spacing-label">1px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:4px;"></div><span class="spacing-label">4px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:5px;"></div><span class="spacing-label">5px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:6px;"></div><span class="spacing-label">6px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:8px;"></div><span class="spacing-label">8px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:10px;"></div><span class="spacing-label">10px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:12px;"></div><span class="spacing-label">12px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:15px;"></div><span class="spacing-label">15px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:16px;"></div><span class="spacing-label">16px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:20px;"></div><span class="spacing-label">20px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:24px;"></div><span class="spacing-label">24px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:32px;"></div><span class="spacing-label">32px</span></div>
|
||||||
|
<div class="spacing-item"><div class="spacing-box" style="width:40px;"></div><span class="spacing-label">40px</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 7. BORDER RADIUS -->
|
||||||
|
<div id="radius" class="section">
|
||||||
|
<h2 class="section-title">Border Radius Scale</h2>
|
||||||
|
<p class="section-desc">Zero-radius dominates buttons and cards. Pill shapes reserved for inputs only.</p>
|
||||||
|
<div class="radius-row">
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:0;"></div><span class="radius-label">0px</span><span class="radius-context">Buttons, Cards</span></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:2px;"></div><span class="radius-label">2px</span><span class="radius-context">Small UI</span></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:3px;"></div><span class="radius-label">3px</span><span class="radius-context">Panels, Tabs</span></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:4px;"></div><span class="radius-label">4px</span><span class="radius-context">Labels, Tags</span></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:46px;"></div><span class="radius-label">46px</span><span class="radius-context">Filter Chips</span></div>
|
||||||
|
<div class="radius-item"><div class="radius-box" style="border-radius:50px;"></div><span class="radius-label">50px</span><span class="radius-context">Search Input</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 8. ELEVATION -->
|
||||||
|
<div id="elevation" class="section">
|
||||||
|
<h2 class="section-title">Elevation & Depth</h2>
|
||||||
|
<p class="section-desc">Seven shadow tokens progressing from subtle hover lifts to dramatic deep panels.</p>
|
||||||
|
<div class="elevation-grid">
|
||||||
|
<div class="elevation-card" style="box-shadow:none;border:1px solid var(--pale-silver);"><div class="elevation-label">Level 0 — Flat</div><div class="elevation-desc">No shadow. Default for PromoCards and buttons.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0.2) 0px 4px 8px;"><div class="elevation-label">Level 1 — Soft</div><div class="elevation-desc">Card hover states, subtle lift effect.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0.2) 0px 0px 18px;"><div class="elevation-label">Level 2 — Medium</div><div class="elevation-desc">Floating elements, dropdown menus.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0) 0px 2px 4px, rgba(50,50,93,0.1) 0px 7px 14px;"><div class="elevation-label">Level 3 — Layered</div><div class="elevation-desc">Compound shadow for elevated cards and modals.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0.15) 0px 40px 80px;"><div class="elevation-label">Level 4 — Deep</div><div class="elevation-desc">Large floating panels, configurator overlays.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgba(0,0,0,0.2) 5px 5px 8px;"><div class="elevation-label">Level 5 — Directional</div><div class="elevation-desc">Offset directional shadow for specific components.</div></div>
|
||||||
|
<div class="elevation-card" style="box-shadow:rgb(199,197,199) 0px 0px 12px 2px;"><div class="elevation-label">Level 6 — Ambient</div><div class="elevation-desc">Warm ambient glow for highlighted elements.</div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- FOOTER -->
|
||||||
|
<footer style="background:var(--absolute-black);padding:40px;text-align:center;margin-top:40px;">
|
||||||
|
<p style="font-size:12px;color:var(--warm-gray);">Generated from DESIGN.md — Renault Design System Tokens</p>
|
||||||
|
<p style="font-size:13px;font-weight:700;color:var(--pure-white);margin-top:8px;">awesome-design-md</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
286
design-md/tesla/DESIGN.md
Normal file
286
design-md/tesla/DESIGN.md
Normal file
@ -0,0 +1,286 @@
|
|||||||
|
# Design System: Tesla
|
||||||
|
|
||||||
|
## 1. Visual Theme & Atmosphere
|
||||||
|
|
||||||
|
Tesla's website is an exercise in radical subtraction — a digital showroom where the product is everything and the interface is almost nothing. The page opens with a full-viewport hero that fills the entire screen with cinematic car photography: three vehicles arranged on polished concrete against a hazy cityscape sky, with a single model name floating above in translucent white type. There are no decorative borders, no gradients, no patterns, no shadows. The UI exists only to provide just enough navigational structure to get out of the way. Every pixel that isn't product imagery is white space, and that restraint is the design system's most powerful statement.
|
||||||
|
|
||||||
|
The color philosophy is almost ascetic: a single blue (`#3E6AE1`) for primary calls to action, three shades of dark gray for text hierarchy, and white for everything else. The entire emotional weight is carried by photography — sprawling landscape shots, studio-lit vehicle profiles, and atmospheric environmental compositions that stretch edge-to-edge across each viewport-height section. The UI chrome dissolves into the imagery. The navigation bar floats above the hero with no visible background, border, or shadow — the TESLA wordmark and five navigation labels simply exist in the space, trusting the content beneath them to provide sufficient contrast.
|
||||||
|
|
||||||
|
Typography recently transitioned from Gotham to Universal Sans — a custom family split into "Display" for headlines and "Text" for body/UI elements — unifying the website, mobile app, and in-car software into a single typographic voice. The Display variant renders hero titles at 40px weight 500, while the Text variant handles everything from navigation (14px/500) to body copy (14px/400). The font carries a geometric precision with slightly humanist terminals that feels engineered rather than designed — exactly matching Tesla's brand identity of technology that doesn't need to announce itself. There are no text shadows, no text gradients, no decorative type treatments. Every letterform earns its place through clarity alone.
|
||||||
|
|
||||||
|
**Key Characteristics:**
|
||||||
|
- Full-viewport hero sections (100vh) dominated by cinematic car photography with minimal overlay UI
|
||||||
|
- Near-zero UI decoration: no shadows, no gradients, no borders, no patterns anywhere on the page
|
||||||
|
- Single accent color — Electric Blue (`#3E6AE1`) — used exclusively for primary CTA buttons
|
||||||
|
- Universal Sans font family (Display + Text) unifying web, app, and in-car interfaces
|
||||||
|
- Photography-first presentation where product imagery carries all emotional weight
|
||||||
|
- Frosted-glass navigation concept with transparent/white nav that floats over hero content
|
||||||
|
- 0.33s cubic-bezier transitions as the universal timing for all interactive state changes
|
||||||
|
- Carousel-driven hero with dot indicators and edge arrow navigation for multiple vehicle showcases
|
||||||
|
- "Ask a Question" persistent chatbot bar anchored to the viewport bottom
|
||||||
|
|
||||||
|
## 2. Color Palette & Roles
|
||||||
|
|
||||||
|
### Primary
|
||||||
|
- **Electric Blue** (`#3E6AE1`): Primary CTA button background — a confident, mid-saturation blue (rgb 62, 106, 225) that stands alone as the only chromatic color in the entire interface. Used exclusively for "Order Now" and other primary action buttons
|
||||||
|
- **Pure White** (`#FFFFFF`): Dominant background color for all surfaces, panels, navigation, and secondary button fills — the canvas that lets photography breathe
|
||||||
|
|
||||||
|
### Secondary & Accent
|
||||||
|
- **Promo Blue** (`#3E6AE1`): Blue also serves for promotional text ("0% APR Available") displayed over hero imagery in the same hue as the CTA — creating a visual link between incentive messaging and action
|
||||||
|
- No secondary accent colors exist. Tesla deliberately avoids color variety to maintain extreme visual discipline
|
||||||
|
|
||||||
|
### Surface & Background
|
||||||
|
- **White Canvas** (`#FFFFFF`): Page background, navigation panel, dropdown menus, and all surface containers
|
||||||
|
- **Light Ash** (`#F4F4F4`): Subtle alternate surface for section differentiation — barely perceptible shift from pure white (rgb 244, 244, 244)
|
||||||
|
- **Carbon Dark** (`#171A20`): Dark surface color for hero text overlays and potential dark-mode contexts (rgb 23, 26, 32) — a warm near-black with a blue undertone
|
||||||
|
- **Frosted Glass** (`rgba(255, 255, 255, 0.75)`): Semi-transparent white for navigation backdrop-filter effects on scroll
|
||||||
|
|
||||||
|
### Neutrals & Text
|
||||||
|
- **Carbon Dark** (`#171A20`): Primary heading and navigation text — the darkest text value (rgb 23, 26, 32), used for model names, nav labels, and hero titles on light backgrounds
|
||||||
|
- **Graphite** (`#393C41`): Body text and secondary content (rgb 57, 60, 65) — the default paragraph color, slightly warmer than pure gray
|
||||||
|
- **Pewter** (`#5C5E62`): Tertiary text for sub-links, secondary navigation links like "Learn" and "Order" (rgb 92, 94, 98)
|
||||||
|
- **Silver Fog** (`#8E8E8E`): Placeholder text in input fields and disabled states (rgb 142, 142, 142)
|
||||||
|
- **Cloud Gray** (`#EEEEEE`): Light borders and divider lines (rgb 238, 238, 238)
|
||||||
|
- **Pale Silver** (`#D0D1D2`): Subtle UI borders and delineation (rgb 208, 209, 210)
|
||||||
|
|
||||||
|
### Semantic & Accent
|
||||||
|
- Tesla's marketing site avoids semantic color coding (no green/red/yellow status indicators). Error, success, and warning states follow standard browser defaults in form contexts
|
||||||
|
- The blue CTA (`#3E6AE1`) serves as the sole interactive color signal
|
||||||
|
|
||||||
|
### Gradient System
|
||||||
|
- No gradients are used anywhere in the interface
|
||||||
|
- Depth is achieved entirely through photography, whitespace, and the binary contrast between full-bleed imagery and clean white surfaces
|
||||||
|
- The navigation achieves layering through opacity (frosted glass effect) rather than gradient or shadow
|
||||||
|
|
||||||
|
## 3. Typography Rules
|
||||||
|
|
||||||
|
### Font Family
|
||||||
|
- **Display**: `Universal Sans Display`, -apple-system, Arial, sans-serif — used for hero titles and large model names. A geometric sans-serif with precisely engineered proportions, recently replacing Gotham to unify Tesla's digital ecosystem (website, mobile app, vehicle interface)
|
||||||
|
- **Text/UI**: `Universal Sans Text`, -apple-system, Arial, sans-serif — used for navigation, body copy, buttons, and all UI text. Optimized for legibility at smaller sizes with slightly wider proportions than the Display variant
|
||||||
|
- **No OpenType features** detected — typography is completely unembellished
|
||||||
|
- **No italic variants** observed on the marketing site
|
||||||
|
|
||||||
|
### Hierarchy
|
||||||
|
|
||||||
|
| Role | Size | Weight | Line Height | Letter Spacing | Notes |
|
||||||
|
|------|------|--------|-------------|----------------|-------|
|
||||||
|
| Hero Title | 40px (2.50rem) | 500 | 48px (1.20) | normal | Universal Sans Display, white on dark hero imagery |
|
||||||
|
| Product Name | 17px (1.06rem) | 500 | 20px (1.18) | normal | Universal Sans Text, model names in nav panel and cards |
|
||||||
|
| Nav Item | 14px (0.88rem) | 500 | 16.8px (1.20) | normal | Universal Sans Text, primary navigation labels |
|
||||||
|
| Body Text | 14px (0.88rem) | 400 | 20px (1.43) | normal | Universal Sans Text, paragraph and descriptive content |
|
||||||
|
| Button Label | 14px (0.88rem) | 500 | 16.8px (1.20) | normal | Universal Sans Text, CTA button text |
|
||||||
|
| Sub-link | 14px (0.88rem) | 400 | 20px (1.43) | normal | Tertiary links (Learn, Order, Experience) |
|
||||||
|
| Promo Text | 22px (1.38rem) | 400 | 20px (0.91) | normal | White promotional text on hero ("0% APR Available") |
|
||||||
|
| Category Label | 16px (est.) | 500 | — | normal | White text labels on category cards ("Sport Sedan") |
|
||||||
|
|
||||||
|
### Principles
|
||||||
|
- **"Normal" letter-spacing everywhere**: Unlike most modern tech brands that use negative tracking for headlines, Tesla uses default letter-spacing at every level. This reflects a philosophy that the typeface should speak for itself without manipulation
|
||||||
|
- **Weight restraint**: Only two weights appear — 500 (medium) for headings/UI and 400 (regular) for body. No bold (700), no light (300). The system avoids typographic drama
|
||||||
|
- **Unified font sizing**: Most UI text clusters at 14px with only hero titles (40px) and promo text (22px) breaking away. This extreme uniformity creates a sense of engineered consistency
|
||||||
|
- **Display vs Text split**: The two-variant system (Display for hero, Text for UI) creates subtle optical correction without visible stylistic difference — they appear as the same typeface at different sizes
|
||||||
|
- **No text transforms**: No uppercase text appears in the main navigation or CTAs — the lowercase approach reinforces Tesla's understated confidence
|
||||||
|
|
||||||
|
## 4. Component Stylings
|
||||||
|
|
||||||
|
### Buttons
|
||||||
|
All buttons use barely-rounded rectangles (4px border-radius) — creating a sharp, technical aesthetic that mirrors the precision of the vehicles.
|
||||||
|
|
||||||
|
**Primary CTA** — The main action button:
|
||||||
|
- Default: bg `#3E6AE1` (Electric Blue), text `#FFFFFF`, fontSize 14px, fontWeight 500, padding 4px with inner content centering, borderRadius 4px, minHeight 40px, width 200px
|
||||||
|
- Border: 3px solid transparent (reserves space for focus/active border animation)
|
||||||
|
- Box Shadow: `rgba(0,0,0,0) 0px 0px 0px 2px inset` (invisible at rest, animates to visible on focus)
|
||||||
|
- Transition: `border-color 0.33s, background-color 0.33s, color 0.33s, box-shadow 0.25s`
|
||||||
|
- Hover: subtle darkening of blue background
|
||||||
|
- Used for: "Order Now" calls to action
|
||||||
|
|
||||||
|
**Secondary CTA** — The alternative action button:
|
||||||
|
- Default: bg `#FFFFFF`, text `#393C41` (Graphite), same dimensions and border pattern as primary
|
||||||
|
- Transition: identical timing to primary (0.33s)
|
||||||
|
- Used for: "View Inventory" alongside primary CTA
|
||||||
|
|
||||||
|
**Nav Button** — Top navigation items:
|
||||||
|
- Default: bg transparent, text `#171A20` (Carbon Dark), fontSize 14px, fontWeight 500, borderRadius 4px, padding 4px 16px, minHeight 32px
|
||||||
|
- Transition: `color 0.33s, background-color 0.33s`
|
||||||
|
- Active/expanded: subtle background highlight
|
||||||
|
- Used for: "Vehicles", "Energy", "Charging", "Discover", "Shop"
|
||||||
|
|
||||||
|
**Text Link** — In-content actions:
|
||||||
|
- Default: text `#5C5E62` (Pewter), fontSize 14px, fontWeight 400, no background, no border
|
||||||
|
- Hover: underline decoration with box-shadow transition
|
||||||
|
- Transition: `box-shadow 0.33s cubic-bezier(0.5, 0, 0, 0.75), color 0.33s`
|
||||||
|
- Used for: "Learn", "Order", "Experience", "New", "Pre-Owned" links in dropdown panel
|
||||||
|
|
||||||
|
### Cards & Containers
|
||||||
|
|
||||||
|
**Vehicle Card** (Navigation panel):
|
||||||
|
- Background: transparent (inherits panel white)
|
||||||
|
- Border: none
|
||||||
|
- Shadow: none
|
||||||
|
- Content: vehicle image (transparent PNG) + model name centered below + two text links
|
||||||
|
- Layout: 3-column grid within the dropdown panel
|
||||||
|
- No hover animation on the card itself — interaction is via the text links beneath
|
||||||
|
|
||||||
|
**Category Card** (Homepage lower section):
|
||||||
|
- Background: full-bleed landscape photography
|
||||||
|
- Border radius: approximately 12px (subtly rounded)
|
||||||
|
- Overflow: hidden (clips image to rounded corners)
|
||||||
|
- Text: white label in top-left corner ("Sport Sedan", "Midsize SUV")
|
||||||
|
- Size: large format, approximately 2:1 aspect ratio
|
||||||
|
- No shadow, no border, no overlay gradient — text relies on image darkness for contrast
|
||||||
|
|
||||||
|
### Inputs & Forms
|
||||||
|
- Background: transparent
|
||||||
|
- Text color: `#171A20` (Carbon Dark)
|
||||||
|
- Placeholder color: `#8E8E8E` (Silver Fog)
|
||||||
|
- Border: minimal, inherits from browser defaults
|
||||||
|
- Font: Universal Sans Text, 14px
|
||||||
|
- The "Ask a Question" chatbot input bar sits at the viewport bottom with a clean white background and subtle border
|
||||||
|
|
||||||
|
### Navigation
|
||||||
|
- **Desktop**: Centered horizontal nav with TESLA wordmark (spaced uppercase letters) on the left, five category buttons center-aligned, and three icon buttons (help, globe/language, account) on the right
|
||||||
|
- **Background**: White (transitions from transparent over dark hero to opaque white on scroll via class toggle `tds-site-header--white-background`)
|
||||||
|
- **Dropdown panel**: Full-width white panel with 3-column vehicle grid + right sidebar text links, no shadow, no border — appears seamlessly below the nav
|
||||||
|
- **Sticky behavior**: `sticky-without-slide` class — stays at top without slide-in animation
|
||||||
|
- **Mobile**: Hamburger collapse pattern
|
||||||
|
- **No visible separator** between nav and content — the nav blends with the hero
|
||||||
|
|
||||||
|
### Image Treatment
|
||||||
|
- **Hero**: Full-viewport (100vh) sections with cinematic photography — edge-to-edge, no padding, no margin
|
||||||
|
- **Vehicle images**: Transparent PNG renders on white background in dropdown panel, studio-quality 3/4 angle shots
|
||||||
|
- **Category cards**: Landscape photography with approximately 2:1 ratio, rounded corners (12px)
|
||||||
|
- **Carousel**: Auto-advancing with dot indicators (3 dots) and left/right arrow navigation on edges
|
||||||
|
- **Lazy loading**: Below-fold sections use lazy loading, rendering as blank white until scrolled into view
|
||||||
|
|
||||||
|
### Persistent Chat Bar
|
||||||
|
- Anchored to viewport bottom, visible across all sections
|
||||||
|
- White background with subtle border
|
||||||
|
- Contains: chat icon + "Ask a Question" label + placeholder text ("What's Dog Mode?") + send icon + "Schedule a Drive Today" secondary CTA
|
||||||
|
- Schedule CTA has a teal/blue icon accent
|
||||||
|
|
||||||
|
## 5. Layout Principles
|
||||||
|
|
||||||
|
### Spacing System
|
||||||
|
- **Base unit**: 8px
|
||||||
|
- **Common values**: 8px (0.5rem), 16px (1rem), 21.44px (1.34rem)
|
||||||
|
- **Button padding**: 4px (minimal outer) with content centering via flexbox, 4px 16px for nav items
|
||||||
|
- **Section padding**: Full-viewport sections with content centered vertically
|
||||||
|
- **Card gap**: approximately 16px between category cards
|
||||||
|
|
||||||
|
### Grid & Container
|
||||||
|
- **Max width**: approximately 1383px (full viewport width used for most content)
|
||||||
|
- **Hero**: Full-bleed, edge-to-edge, 100vh sections
|
||||||
|
- **Navigation panel**: 3-column grid for vehicle cards with right-aligned text sidebar (~70/30 split)
|
||||||
|
- **Category cards**: 2-up horizontal layout (large left card + smaller right card)
|
||||||
|
|
||||||
|
### Whitespace Philosophy
|
||||||
|
Tesla uses whitespace as a luxury signal. The generous vertical spacing between sections (each section is a full viewport height) means you can only see one "message" at a time — one car, one model name, one CTA pair. This creates a gallery-like browsing experience where each scroll is a deliberate transition, not a continuous feed. White space is not empty — it's the frame that elevates each vehicle to the status of art piece.
|
||||||
|
|
||||||
|
### Border Radius Scale
|
||||||
|
| Value | Context |
|
||||||
|
|-------|---------|
|
||||||
|
| 0px | Most elements — sharp edges are the default |
|
||||||
|
| 4px | Buttons (primary, secondary, nav items) — barely perceptible rounding |
|
||||||
|
| ~12px | Category cards — noticeable but restrained rounding on larger surfaces |
|
||||||
|
| 50% | Carousel dot indicators — perfect circles |
|
||||||
|
|
||||||
|
## 6. Depth & Elevation
|
||||||
|
|
||||||
|
| Level | Treatment | Use |
|
||||||
|
|-------|-----------|-----|
|
||||||
|
| Level 0 (Flat) | No shadow, no border | Default state for all elements — cards, panels, buttons at rest |
|
||||||
|
| Level 1 (Frost) | `rgba(255,255,255,0.75)` backdrop | Navigation bar on scroll — frosted glass transparency |
|
||||||
|
| Level 2 (Overlay) | `rgba(128,128,128,0.65)` | Modal overlays and region/cookie popups |
|
||||||
|
| Level 3 (Subtle) | `rgba(0,0,0,0.05)` | Minimal shadow hints on rare hover states |
|
||||||
|
|
||||||
|
### Shadow Philosophy
|
||||||
|
Tesla's approach to elevation is essentially "none." The site avoids box-shadows entirely in its primary interface. Depth is communicated through three alternative strategies:
|
||||||
|
1. **Z-index layering**: The sticky navigation sits above hero content through positioning, not shadow
|
||||||
|
2. **Opacity-based transparency**: The frosted glass nav and overlay modals use background-color opacity rather than shadow to indicate layering
|
||||||
|
3. **Photography-as-depth**: The full-bleed images create their own visual depth through perspective, lighting, and composition — making UI shadows redundant
|
||||||
|
|
||||||
|
### Decorative Depth
|
||||||
|
- No gradients, glows, or atmospheric effects on UI elements
|
||||||
|
- The hero imagery itself provides all visual richness — sunset skies, reflected light on car surfaces, ground shadows from studio lighting
|
||||||
|
- The carousel arrow buttons use a semi-transparent white background to float above the hero imagery without disrupting it
|
||||||
|
|
||||||
|
## 7. Do's and Don'ts
|
||||||
|
|
||||||
|
### Do
|
||||||
|
- Let photography dominate every screen — the product IS the design
|
||||||
|
- Use Electric Blue (`#3E6AE1`) exclusively for primary CTAs — never for decorative purposes
|
||||||
|
- Maintain viewport-height sections for major content blocks — one message per screen
|
||||||
|
- Keep typography at weight 400-500 only — no bold, no light, no extremes
|
||||||
|
- Use 4px border-radius for all interactive elements — precision over playfulness
|
||||||
|
- Trust whitespace as a luxury signal — never fill available space just because it's empty
|
||||||
|
- Keep all transitions at 0.33s — consistency in motion is as important as consistency in color
|
||||||
|
- Use transparent PNG vehicle imagery on white backgrounds for product showcases
|
||||||
|
- Center CTAs horizontally below model names — the vertical rhythm is model → subtitle → buttons
|
||||||
|
- Maintain the Display/Text font split — Display for hero-scale text only, Text for everything else
|
||||||
|
|
||||||
|
### Don't
|
||||||
|
- Add shadows to any element — elevation through shadow contradicts the flat, gallery aesthetic
|
||||||
|
- Use more than one chromatic color besides the blue CTA — the palette is intentionally monochrome-plus-one
|
||||||
|
- Apply gradients, patterns, or decorative backgrounds to surfaces — white and photography are the only backgrounds
|
||||||
|
- Use text larger than 40px on the web — the typography is deliberately restrained even at hero scale
|
||||||
|
- Add borders to cards or containers — separation is achieved through spacing, not lines
|
||||||
|
- Use uppercase text transforms — Tesla's confidence is expressed through lowercase calm
|
||||||
|
- Introduce rounded-pill buttons or large border-radii — the 4px radius is deliberate and precise
|
||||||
|
- Override the Universal Sans family with other typefaces — cross-platform consistency is a core brand value
|
||||||
|
- Add hover animations with scale/translate transforms — Tesla's interactions are color-only (background and border transitions)
|
||||||
|
- Clutter the viewport with multiple CTAs — every screen should have at most two action buttons
|
||||||
|
|
||||||
|
## 8. Responsive Behavior
|
||||||
|
|
||||||
|
### Breakpoints
|
||||||
|
| Name | Width | Key Changes |
|
||||||
|
|------|-------|-------------|
|
||||||
|
| Mobile | <768px | Single-column layout, hamburger nav replaces horizontal labels, hero text scales to ~28px, CTA buttons stack vertically, category cards become full-width |
|
||||||
|
| Tablet | 768-1024px | 2-column nav panel, hero maintains full-viewport height, CTAs remain side-by-side, reduced horizontal padding |
|
||||||
|
| Desktop | 1024-1440px | Full horizontal nav, 3-column vehicle grid in dropdown, hero at 40px, side-by-side CTAs at 200px/160px width |
|
||||||
|
| Large Desktop | >1440px | Content remains centered, hero photography scales to fill wider viewports, max-width container for nav panel content |
|
||||||
|
|
||||||
|
### Touch Targets
|
||||||
|
- Primary CTA buttons: 200px × 40px minimum (well above 44×44px WCAG requirement)
|
||||||
|
- Nav buttons: minimum 32px height with 4px 16px padding — adequate touch targets
|
||||||
|
- Carousel arrows: ~44px square white semi-transparent buttons at viewport edges
|
||||||
|
- Text links ("Learn", "Order"): 14px text with adequate line-height spacing for touch
|
||||||
|
|
||||||
|
### Collapsing Strategy
|
||||||
|
- **Navigation**: Horizontal category buttons (Vehicles, Energy, Charging, Discover, Shop) collapse to a hamburger/drawer menu on mobile
|
||||||
|
- **Hero CTA pair**: Side-by-side buttons on desktop stack vertically on mobile
|
||||||
|
- **Category cards**: 2-up horizontal layout collapses to single-column full-width on mobile
|
||||||
|
- **Vehicle grid**: 3-column grid in desktop nav panel becomes 2-column on tablet, single-column on mobile
|
||||||
|
- **Spacing**: Section vertical padding remains generous (viewport-height sections) but horizontal padding reduces
|
||||||
|
|
||||||
|
### Image Behavior
|
||||||
|
- Hero images are fully responsive and fill the entire viewport at every breakpoint
|
||||||
|
- Vehicle carousel images use `object-fit: cover` to maintain cinematic composition across widths
|
||||||
|
- Transparent PNG vehicle images in the nav panel scale proportionally within their grid cells
|
||||||
|
- Category card images maintain their landscape ratio and clip via `overflow: hidden` with border-radius
|
||||||
|
|
||||||
|
## 9. Agent Prompt Guide
|
||||||
|
|
||||||
|
### Quick Color Reference
|
||||||
|
- Primary CTA: "Electric Blue (#3E6AE1)"
|
||||||
|
- Background: "Pure White (#FFFFFF)"
|
||||||
|
- Heading text: "Carbon Dark (#171A20)"
|
||||||
|
- Body text: "Graphite (#393C41)"
|
||||||
|
- Tertiary text: "Pewter (#5C5E62)"
|
||||||
|
- Placeholder: "Silver Fog (#8E8E8E)"
|
||||||
|
- Alternate surface: "Light Ash (#F4F4F4)"
|
||||||
|
- Dark surface: "Carbon Dark (#171A20)"
|
||||||
|
|
||||||
|
### Example Component Prompts
|
||||||
|
- "Create a hero section with a full-viewport background image, centered 'Model Y' title in Universal Sans Display at 40px weight 500 in white, a subtitle line below, and two buttons side by side: a primary Electric Blue (#3E6AE1) 'Order Now' button and a secondary white 'View Inventory' button, both with 4px border-radius and 40px height"
|
||||||
|
- "Design a navigation bar with a spaced-letter wordmark on the left, five text buttons (14px, weight 500, Carbon Dark #171A20) centered, and three icon buttons on the right, all on a white background with no shadow or border"
|
||||||
|
- "Build a vehicle card grid with 3 columns, each card showing a transparent-background car image above a model name (17px, weight 500, Carbon Dark) and two text links (14px, weight 400, Pewter #5C5E62) labeled 'Learn' and 'Order', on a pure white surface with no borders or shadows"
|
||||||
|
- "Create a category card with full-bleed landscape photography, 12px border-radius, overflow hidden, and a white text label ('Sport Sedan') positioned in the top-left corner with no overlay gradient"
|
||||||
|
- "Design a persistent bottom bar with a chat input ('Ask a Question' placeholder), a send icon, and a secondary CTA ('Schedule a Drive Today') with a teal icon, anchored to the viewport bottom on a white background"
|
||||||
|
|
||||||
|
### Iteration Guide
|
||||||
|
When refining existing screens generated with this design system:
|
||||||
|
1. Focus on ONE component at a time — Tesla's system is so minimal that each element must be pixel-perfect
|
||||||
|
2. Reference specific color names and hex codes from this document — there are only 6-7 colors in the entire system
|
||||||
|
3. Use natural language descriptions, not CSS values — "barely rounded corners" not "border-radius: 4px"
|
||||||
|
4. Describe the desired "feel" alongside specific measurements — "gallery-like silence between sections" communicates the whitespace philosophy better than "margin-bottom: 100vh"
|
||||||
|
5. Always verify that photography is doing the emotional heavy-lifting — if the UI itself feels "designed," it's too much
|
||||||
23
design-md/tesla/README.md
Normal file
23
design-md/tesla/README.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Tesla Inspired Design System
|
||||||
|
|
||||||
|
[DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/tesla/DESIGN.md) extracted from the public [tesla](https://tesla.com/) website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
| File | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `DESIGN.md` | Complete design system documentation (9 sections) |
|
||||||
|
| `preview.html` | Interactive design token catalog (light) |
|
||||||
|
| `preview-dark.html` | Interactive design token catalog (dark) |
|
||||||
|
|
||||||
|
Use [DESIGN.md](https://github.com/VoltAgent/awesome-design-md/blob/main/design-md/tesla/DESIGN.md) to use as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that looks like the Tesla design language.
|
||||||
|
|
||||||
|
## Preview
|
||||||
|
|
||||||
|
A sample landing page built with DESIGN.md. It shows the actual colors, typography, buttons, cards, spacing, and elevation, all in one page.
|
||||||
|
|
||||||
|
### Dark Mode
|
||||||
|

|
||||||
|
|
||||||
|
### Light Mode
|
||||||
|

|
||||||
949
design-md/tesla/preview-dark.html
Normal file
949
design-md/tesla/preview-dark.html
Normal file
@ -0,0 +1,949 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Design System Inspired by Tesla — Dark Mode</title>
|
||||||
|
<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=Inter:wght@400;500&display=swap" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--electric-blue: #3E6AE1;
|
||||||
|
--pure-white: #FFFFFF;
|
||||||
|
--carbon-dark: #171A20;
|
||||||
|
--graphite: #393C41;
|
||||||
|
--pewter: #5C5E62;
|
||||||
|
--silver-fog: #8E8E8E;
|
||||||
|
--cloud-gray: #2A2D33;
|
||||||
|
--pale-silver: #3A3D43;
|
||||||
|
--light-ash: #1E2127;
|
||||||
|
--surface-dark: #0D0F13;
|
||||||
|
--text-primary: #E8E8E8;
|
||||||
|
--text-secondary: #B0B2B5;
|
||||||
|
--text-muted: #8E8E8E;
|
||||||
|
--border-dark: #2A2D33;
|
||||||
|
--font-display: 'Inter', -apple-system, Arial, sans-serif;
|
||||||
|
--font-text: 'Inter', -apple-system, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
background: var(--carbon-dark);
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.43;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DARK MODE BADGE */
|
||||||
|
.dark-badge {
|
||||||
|
position: fixed;
|
||||||
|
top: 16px;
|
||||||
|
right: 16px;
|
||||||
|
z-index: 200;
|
||||||
|
background: var(--electric-blue);
|
||||||
|
color: var(--pure-white);
|
||||||
|
padding: 6px 14px;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NAV */
|
||||||
|
nav {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 100;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 12px 40px;
|
||||||
|
background: var(--carbon-dark);
|
||||||
|
min-height: 56px;
|
||||||
|
border-bottom: 1px solid var(--border-dark);
|
||||||
|
}
|
||||||
|
.nav-brand {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-primary);
|
||||||
|
text-decoration: none;
|
||||||
|
letter-spacing: 3px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.nav-links {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
.nav-links a {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-primary);
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 4px 16px;
|
||||||
|
border-radius: 4px;
|
||||||
|
min-height: 32px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
transition: color 0.33s, background-color 0.33s;
|
||||||
|
}
|
||||||
|
.nav-links a:hover { background: var(--light-ash); }
|
||||||
|
.nav-cta {
|
||||||
|
background: var(--electric-blue);
|
||||||
|
color: var(--pure-white) !important;
|
||||||
|
padding: 8px 24px;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: background-color 0.33s;
|
||||||
|
min-height: 40px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.nav-cta:hover { background: #4A78F0; }
|
||||||
|
|
||||||
|
/* HERO */
|
||||||
|
.hero {
|
||||||
|
position: relative;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
padding: 80px 40px 60px;
|
||||||
|
background: linear-gradient(180deg, #0a0c10 0%, #12151c 30%, #1a1d25 70%, #171A20 100%);
|
||||||
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.hero::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 200px;
|
||||||
|
background: linear-gradient(transparent, rgba(0,0,0,0.2));
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.hero h1 {
|
||||||
|
font-family: var(--font-display);
|
||||||
|
font-size: 40px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 48px;
|
||||||
|
letter-spacing: normal;
|
||||||
|
color: var(--text-primary);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.hero .subtitle {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--text-muted);
|
||||||
|
margin-bottom: 32px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.hero .promo {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--electric-blue);
|
||||||
|
margin-bottom: 24px;
|
||||||
|
text-decoration: underline;
|
||||||
|
text-underline-offset: 3px;
|
||||||
|
}
|
||||||
|
.hero-buttons {
|
||||||
|
display: flex;
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
.btn-primary {
|
||||||
|
background: var(--electric-blue);
|
||||||
|
color: var(--pure-white);
|
||||||
|
border: 3px solid transparent;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px 24px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
min-height: 40px;
|
||||||
|
min-width: 200px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: border-color 0.33s, background-color 0.33s, color 0.33s, box-shadow 0.25s;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn-primary:hover { background: #4A78F0; }
|
||||||
|
.btn-secondary {
|
||||||
|
background: var(--light-ash);
|
||||||
|
color: var(--text-primary);
|
||||||
|
border: 3px solid transparent;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px 24px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
min-height: 40px;
|
||||||
|
min-width: 160px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: border-color 0.33s, background-color 0.33s, color 0.33s, box-shadow 0.25s;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn-secondary:hover { background: var(--pale-silver); }
|
||||||
|
|
||||||
|
/* SECTIONS */
|
||||||
|
.section {
|
||||||
|
padding: 80px 40px;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.section-title {
|
||||||
|
font-family: var(--font-display);
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-primary);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
.section-desc {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
margin-bottom: 40px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.section-divider {
|
||||||
|
border: none;
|
||||||
|
border-top: 1px solid var(--border-dark);
|
||||||
|
margin: 0 40px;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1. COLOR PALETTE */
|
||||||
|
.color-group-label {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-primary);
|
||||||
|
margin-bottom: 16px;
|
||||||
|
margin-top: 24px;
|
||||||
|
}
|
||||||
|
.color-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.color-swatch {
|
||||||
|
border-radius: 4px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-block {
|
||||||
|
height: 80px;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-info {
|
||||||
|
padding: 12px;
|
||||||
|
background: var(--light-ash);
|
||||||
|
border: 1px solid var(--border-dark);
|
||||||
|
border-top: none;
|
||||||
|
border-radius: 0 0 4px 4px;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-name {
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-primary);
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-hex {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
margin-bottom: 4px;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-role {
|
||||||
|
font-size: 11px;
|
||||||
|
color: var(--pewter);
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2. TYPOGRAPHY */
|
||||||
|
.type-sample {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
padding-bottom: 24px;
|
||||||
|
border-bottom: 1px solid var(--border-dark);
|
||||||
|
}
|
||||||
|
.type-sample:last-child { border-bottom: none; }
|
||||||
|
.type-label {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--text-muted);
|
||||||
|
margin-top: 8px;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 3. BUTTONS */
|
||||||
|
.button-row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 16px;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.btn-nav {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--text-primary);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px 16px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
min-height: 32px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.33s, background-color 0.33s;
|
||||||
|
}
|
||||||
|
.btn-nav:hover { background: var(--light-ash); }
|
||||||
|
.btn-text-link {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 4px 0;
|
||||||
|
transition: box-shadow 0.33s, color 0.33s;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn-text-link:hover {
|
||||||
|
box-shadow: 0 1px 0 var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 4. CARDS */
|
||||||
|
.card-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
background: var(--light-ash);
|
||||||
|
border-radius: 4px;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 1px solid var(--border-dark);
|
||||||
|
}
|
||||||
|
.card-image {
|
||||||
|
height: 200px;
|
||||||
|
background: var(--surface-dark);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.card-image-placeholder {
|
||||||
|
font-size: 40px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--pale-silver);
|
||||||
|
font-family: var(--font-display);
|
||||||
|
}
|
||||||
|
.card-body {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.card-title {
|
||||||
|
font-size: 17px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-primary);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
}
|
||||||
|
.card-links {
|
||||||
|
display: flex;
|
||||||
|
gap: 16px;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.card-links a {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--text-muted);
|
||||||
|
text-decoration: none;
|
||||||
|
transition: box-shadow 0.33s, color 0.33s;
|
||||||
|
}
|
||||||
|
.card-links a:hover { box-shadow: 0 1px 0 var(--text-muted); }
|
||||||
|
|
||||||
|
.card-category {
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
height: 180px;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 24px;
|
||||||
|
}
|
||||||
|
.card-category .cat-label {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--pure-white);
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 5. FORMS */
|
||||||
|
.form-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 24px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.form-group { display: flex; flex-direction: column; gap: 6px; }
|
||||||
|
.form-label {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
.form-input {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--text-primary);
|
||||||
|
background: var(--surface-dark);
|
||||||
|
border: 1px solid var(--pale-silver);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 10px 12px;
|
||||||
|
min-height: 40px;
|
||||||
|
outline: none;
|
||||||
|
transition: border-color 0.33s;
|
||||||
|
}
|
||||||
|
.form-input::placeholder { color: var(--pewter); }
|
||||||
|
.form-input:focus { border-color: var(--electric-blue); }
|
||||||
|
.form-input.error { border-color: #E74C3C; }
|
||||||
|
.form-textarea {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--text-primary);
|
||||||
|
background: var(--surface-dark);
|
||||||
|
border: 1px solid var(--pale-silver);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 10px 12px;
|
||||||
|
min-height: 100px;
|
||||||
|
outline: none;
|
||||||
|
resize: vertical;
|
||||||
|
transition: border-color 0.33s;
|
||||||
|
}
|
||||||
|
.form-textarea::placeholder { color: var(--pewter); }
|
||||||
|
.form-textarea:focus { border-color: var(--electric-blue); }
|
||||||
|
|
||||||
|
/* 6. SPACING */
|
||||||
|
.spacing-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
.spacing-box {
|
||||||
|
height: 32px;
|
||||||
|
background: var(--electric-blue);
|
||||||
|
border-radius: 4px;
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
.spacing-label {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
font-family: monospace;
|
||||||
|
min-width: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 7. RADIUS */
|
||||||
|
.radius-row {
|
||||||
|
display: flex;
|
||||||
|
gap: 24px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.radius-item {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.radius-box {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: var(--light-ash);
|
||||||
|
border: 2px solid var(--pale-silver);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.radius-value {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-primary);
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
.radius-context {
|
||||||
|
font-size: 11px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 8. ELEVATION */
|
||||||
|
.elevation-row {
|
||||||
|
display: flex;
|
||||||
|
gap: 32px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.elevation-card {
|
||||||
|
width: 200px;
|
||||||
|
padding: 24px;
|
||||||
|
border-radius: 4px;
|
||||||
|
text-align: center;
|
||||||
|
background: var(--light-ash);
|
||||||
|
}
|
||||||
|
.elevation-name {
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--text-primary);
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
.elevation-desc {
|
||||||
|
font-size: 11px;
|
||||||
|
color: var(--text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FOOTER */
|
||||||
|
footer {
|
||||||
|
padding: 40px;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid var(--border-dark);
|
||||||
|
}
|
||||||
|
footer p {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--pewter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.hero h1 { font-size: 28px; line-height: 36px; }
|
||||||
|
.hero-buttons { flex-direction: column; align-items: center; }
|
||||||
|
.btn-primary, .btn-secondary { min-width: 240px; }
|
||||||
|
.color-grid { grid-template-columns: repeat(2, 1fr); }
|
||||||
|
.form-grid { grid-template-columns: 1fr; }
|
||||||
|
.card-grid { grid-template-columns: 1fr; }
|
||||||
|
nav { padding: 12px 20px; }
|
||||||
|
.section { padding: 60px 20px; }
|
||||||
|
.nav-links { display: none; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- DARK MODE BADGE -->
|
||||||
|
<div class="dark-badge">Dark Mode</div>
|
||||||
|
|
||||||
|
<!-- NAV -->
|
||||||
|
<nav>
|
||||||
|
<span class="nav-brand">awesome-design-md</span>
|
||||||
|
<ul class="nav-links">
|
||||||
|
<li><a href="#">Vehicles</a></li>
|
||||||
|
<li><a href="#">Energy</a></li>
|
||||||
|
<li><a href="#">Charging</a></li>
|
||||||
|
<li><a href="#">Discover</a></li>
|
||||||
|
<li><a href="#" class="nav-cta">Shop</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="hero">
|
||||||
|
<h1>Design System Inspired by Tesla</h1>
|
||||||
|
<p class="promo">Photography-first. Interface-invisible.</p>
|
||||||
|
<p class="subtitle">A visual catalog generated from DESIGN.md — every token, every value, every design decision.</p>
|
||||||
|
<div class="hero-buttons">
|
||||||
|
<a href="#" class="btn-primary">Order Now</a>
|
||||||
|
<a href="#" class="btn-secondary">View Inventory</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 1. COLOR PALETTE -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Color Palette</h2>
|
||||||
|
<p class="section-desc">Tesla's palette is almost ascetic — one blue, three grays, and white. Every surface is monochrome to let photography dominate.</p>
|
||||||
|
|
||||||
|
<div class="color-group-label">Primary</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #3E6AE1;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Electric Blue</div>
|
||||||
|
<div class="swatch-hex">#3E6AE1</div>
|
||||||
|
<div class="swatch-role">Primary CTA buttons — the only chromatic color</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #FFFFFF;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Pure White</div>
|
||||||
|
<div class="swatch-hex">#FFFFFF</div>
|
||||||
|
<div class="swatch-role">Background, surfaces, secondary buttons</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Surface & Background</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #F4F4F4;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Light Ash</div>
|
||||||
|
<div class="swatch-hex">#F4F4F4</div>
|
||||||
|
<div class="swatch-role">Alternate surface, hover states</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #171A20;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Carbon Dark</div>
|
||||||
|
<div class="swatch-hex">#171A20</div>
|
||||||
|
<div class="swatch-role">Dark surface, hero overlays</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: rgba(255,255,255,0.75); border: 1px solid #3A3D43;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Frosted Glass</div>
|
||||||
|
<div class="swatch-hex">rgba(255,255,255,0.75)</div>
|
||||||
|
<div class="swatch-role">Nav backdrop-filter on scroll</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Neutrals & Text</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #171A20;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Carbon Dark</div>
|
||||||
|
<div class="swatch-hex">#171A20</div>
|
||||||
|
<div class="swatch-role">Headings, navigation text</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #393C41;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Graphite</div>
|
||||||
|
<div class="swatch-hex">#393C41</div>
|
||||||
|
<div class="swatch-role">Body text, secondary content</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #5C5E62;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Pewter</div>
|
||||||
|
<div class="swatch-hex">#5C5E62</div>
|
||||||
|
<div class="swatch-role">Tertiary text, sub-links</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #8E8E8E;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Silver Fog</div>
|
||||||
|
<div class="swatch-hex">#8E8E8E</div>
|
||||||
|
<div class="swatch-role">Placeholders, disabled states</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #EEEEEE;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Cloud Gray</div>
|
||||||
|
<div class="swatch-hex">#EEEEEE</div>
|
||||||
|
<div class="swatch-role">Borders, divider lines</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #D0D1D2;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Pale Silver</div>
|
||||||
|
<div class="swatch-hex">#D0D1D2</div>
|
||||||
|
<div class="swatch-role">UI borders, delineation</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 2. TYPOGRAPHY -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Typography Scale</h2>
|
||||||
|
<p class="section-desc">Universal Sans Display for heroes, Universal Sans Text for everything else. Only weights 400 and 500. Shown with Inter as the closest available Google Font substitute.</p>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-display); font-size: 40px; font-weight: 500; line-height: 48px; color: var(--text-primary);">Model Y</div>
|
||||||
|
<div class="type-label">Hero Title — 40px / 500 / 48px line-height / Universal Sans Display</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 22px; font-weight: 400; line-height: 20px; color: var(--pure-white); background: var(--surface-dark); padding: 12px 16px; border-radius: 4px; display: inline-block;">0% APR Available</div>
|
||||||
|
<div class="type-label">Promo Text — 22px / 400 / Universal Sans Text / white on dark</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 17px; font-weight: 500; line-height: 20px; color: var(--text-primary);">Model 3</div>
|
||||||
|
<div class="type-label">Product Name — 17px / 500 / 20px line-height / Universal Sans Text</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 14px; font-weight: 500; line-height: 16.8px; color: var(--text-primary);">Vehicles Energy Charging Discover Shop</div>
|
||||||
|
<div class="type-label">Nav Item — 14px / 500 / 16.8px line-height / Universal Sans Text</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 14px; font-weight: 400; line-height: 20px; color: var(--text-secondary);">Tesla's website is an exercise in radical subtraction — a digital showroom where the product is everything and the interface is almost nothing.</div>
|
||||||
|
<div class="type-label">Body Text — 14px / 400 / 20px line-height / Universal Sans Text</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 14px; font-weight: 400; line-height: 20px; color: var(--text-muted);">Learn Order Experience</div>
|
||||||
|
<div class="type-label">Sub-link — 14px / 400 / 20px line-height / Pewter (#5C5E62)</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 3. BUTTONS -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Button Variants</h2>
|
||||||
|
<p class="section-desc">Barely-rounded rectangles (4px radius). One blue for primary, dark surface for secondary, transparent for nav.</p>
|
||||||
|
|
||||||
|
<div class="button-row">
|
||||||
|
<a href="#" class="btn-primary">Order Now</a>
|
||||||
|
<span style="font-size:12px; color:var(--text-muted); font-family:monospace;">Primary — bg #3E6AE1, 4px radius, 40px height, 200px width</span>
|
||||||
|
</div>
|
||||||
|
<div class="button-row">
|
||||||
|
<a href="#" class="btn-secondary">View Inventory</a>
|
||||||
|
<span style="font-size:12px; color:var(--text-muted); font-family:monospace;">Secondary — bg dark surface, 4px radius, 40px height, 160px width</span>
|
||||||
|
</div>
|
||||||
|
<div class="button-row">
|
||||||
|
<button class="btn-nav">Vehicles</button>
|
||||||
|
<button class="btn-nav">Energy</button>
|
||||||
|
<button class="btn-nav">Charging</button>
|
||||||
|
<span style="font-size:12px; color:var(--text-muted); font-family:monospace;">Nav — transparent bg, 4px radius, 32px height</span>
|
||||||
|
</div>
|
||||||
|
<div class="button-row">
|
||||||
|
<a href="#" class="btn-text-link">Learn</a>
|
||||||
|
<a href="#" class="btn-text-link">Order</a>
|
||||||
|
<a href="#" class="btn-text-link">Experience</a>
|
||||||
|
<span style="font-size:12px; color:var(--text-muted); font-family:monospace;">Text Link — no bg, muted color, underline on hover</span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 4. CARDS -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Card Examples</h2>
|
||||||
|
<p class="section-desc">Vehicle cards with subtle dark borders. Category cards with full-bleed photography and 12px radius.</p>
|
||||||
|
|
||||||
|
<div class="color-group-label">Vehicle Cards (Navigation Panel)</div>
|
||||||
|
<div class="card-grid">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-image">
|
||||||
|
<span class="card-image-placeholder">S</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card-title">Model S</div>
|
||||||
|
<div class="card-links">
|
||||||
|
<a href="#">Learn</a>
|
||||||
|
<a href="#">Order</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-image">
|
||||||
|
<span class="card-image-placeholder">3</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card-title">Model 3</div>
|
||||||
|
<div class="card-links">
|
||||||
|
<a href="#">Learn</a>
|
||||||
|
<a href="#">Order</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-image">
|
||||||
|
<span class="card-image-placeholder">Y</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card-title">Model Y</div>
|
||||||
|
<div class="card-links">
|
||||||
|
<a href="#">Learn</a>
|
||||||
|
<a href="#">Order</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Category Cards (Homepage)</div>
|
||||||
|
<div style="display:grid; grid-template-columns: 2fr 1fr; gap: 16px; margin-bottom: 32px;">
|
||||||
|
<div class="card-category" style="background: linear-gradient(135deg, #1a2a3a, #2a3a2a);">
|
||||||
|
<span class="cat-label">Sport Sedan</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-category" style="background: linear-gradient(135deg, #1e2e3e, #1a3a2a);">
|
||||||
|
<span class="cat-label">Midsize SUV</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 5. FORMS -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Form Elements</h2>
|
||||||
|
<p class="section-desc">Minimal input styling with 4px radius and dark borders. Focus state triggers Electric Blue border.</p>
|
||||||
|
|
||||||
|
<div class="form-grid">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="form-label">Default Input</label>
|
||||||
|
<input class="form-input" type="text" placeholder="Enter your email">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="form-label">Focus Input</label>
|
||||||
|
<input class="form-input" type="text" placeholder="Focused state" style="border-color: var(--electric-blue);">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="form-label">Error Input</label>
|
||||||
|
<input class="form-input error" type="text" placeholder="Error state" value="Invalid entry">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="form-label">Textarea</label>
|
||||||
|
<textarea class="form-textarea" placeholder="Ask a question..."></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 6. SPACING -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Spacing Scale</h2>
|
||||||
|
<p class="section-desc">8px base unit. Extremely restrained spacing tokens — precision over variety.</p>
|
||||||
|
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">4px</div>
|
||||||
|
<div class="spacing-box" style="width: 16px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--text-muted);">Button inner padding</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">8px</div>
|
||||||
|
<div class="spacing-box" style="width: 32px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--text-muted);">Base unit, nav item gap</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">16px</div>
|
||||||
|
<div class="spacing-box" style="width: 64px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--text-muted);">Nav item horizontal padding, card gap</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">24px</div>
|
||||||
|
<div class="spacing-box" style="width: 96px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--text-muted);">Button horizontal padding, category card inner padding</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">40px</div>
|
||||||
|
<div class="spacing-box" style="width: 160px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--text-muted);">Section horizontal padding, nav horizontal padding</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">80px</div>
|
||||||
|
<div class="spacing-box" style="width: 320px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--text-muted);">Section vertical padding</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">100vh</div>
|
||||||
|
<div class="spacing-box" style="width: 480px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--text-muted);">Hero section height — one message per screen</span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 7. BORDER RADIUS -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Border Radius Scale</h2>
|
||||||
|
<p class="section-desc">Sharp and precise. Only 4px for buttons and 12px for category cards.</p>
|
||||||
|
|
||||||
|
<div class="radius-row">
|
||||||
|
<div class="radius-item">
|
||||||
|
<div class="radius-box" style="border-radius: 0px;"></div>
|
||||||
|
<div class="radius-value">0px</div>
|
||||||
|
<div class="radius-context">Default (most elements)</div>
|
||||||
|
</div>
|
||||||
|
<div class="radius-item">
|
||||||
|
<div class="radius-box" style="border-radius: 4px;"></div>
|
||||||
|
<div class="radius-value">4px</div>
|
||||||
|
<div class="radius-context">Buttons, inputs</div>
|
||||||
|
</div>
|
||||||
|
<div class="radius-item">
|
||||||
|
<div class="radius-box" style="border-radius: 12px;"></div>
|
||||||
|
<div class="radius-value">12px</div>
|
||||||
|
<div class="radius-context">Category cards</div>
|
||||||
|
</div>
|
||||||
|
<div class="radius-item">
|
||||||
|
<div class="radius-box" style="border-radius: 50%;"></div>
|
||||||
|
<div class="radius-value">50%</div>
|
||||||
|
<div class="radius-context">Carousel dots</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 8. ELEVATION -->
|
||||||
|
<section class="section" style="background: var(--surface-dark); margin: 0 auto; max-width: 100%; padding: 80px 40px;">
|
||||||
|
<div style="max-width: 1200px; margin: 0 auto;">
|
||||||
|
<h2 class="section-title">Elevation & Depth</h2>
|
||||||
|
<p class="section-desc">Tesla avoids shadows entirely. Depth comes from opacity-based layering and photography-as-depth.</p>
|
||||||
|
|
||||||
|
<div class="elevation-row">
|
||||||
|
<div class="elevation-card" style="border: 1px solid var(--border-dark);">
|
||||||
|
<div class="elevation-name">Level 0 — Flat</div>
|
||||||
|
<div class="elevation-desc">No shadow, no border. Default for all elements.</div>
|
||||||
|
</div>
|
||||||
|
<div class="elevation-card" style="background: rgba(255,255,255,0.08); border: 1px solid var(--border-dark); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);">
|
||||||
|
<div class="elevation-name">Level 1 — Frost</div>
|
||||||
|
<div class="elevation-desc">Frosted glass. Navigation on scroll.</div>
|
||||||
|
</div>
|
||||||
|
<div class="elevation-card" style="background: rgba(128,128,128,0.45);">
|
||||||
|
<div class="elevation-name">Level 2 — Overlay</div>
|
||||||
|
<div class="elevation-desc">Modal overlays, popups.</div>
|
||||||
|
</div>
|
||||||
|
<div class="elevation-card" style="box-shadow: 0 2px 8px rgba(0,0,0,0.3); border: 1px solid var(--border-dark);">
|
||||||
|
<div class="elevation-name">Level 3 — Subtle</div>
|
||||||
|
<div class="elevation-desc">Minimal shadow hints on rare hover states.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FOOTER -->
|
||||||
|
<footer>
|
||||||
|
<p>Design System Inspired by Tesla — Generated from DESIGN.md by awesome-design-md</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
927
design-md/tesla/preview.html
Normal file
927
design-md/tesla/preview.html
Normal file
@ -0,0 +1,927 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Design System Inspired by Tesla</title>
|
||||||
|
<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=Inter:wght@400;500&display=swap" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--electric-blue: #3E6AE1;
|
||||||
|
--pure-white: #FFFFFF;
|
||||||
|
--carbon-dark: #171A20;
|
||||||
|
--graphite: #393C41;
|
||||||
|
--pewter: #5C5E62;
|
||||||
|
--silver-fog: #8E8E8E;
|
||||||
|
--cloud-gray: #EEEEEE;
|
||||||
|
--pale-silver: #D0D1D2;
|
||||||
|
--light-ash: #F4F4F4;
|
||||||
|
--frosted-glass: rgba(255,255,255,0.75);
|
||||||
|
--overlay: rgba(128,128,128,0.65);
|
||||||
|
--subtle-shadow: rgba(0,0,0,0.05);
|
||||||
|
--font-display: 'Inter', -apple-system, Arial, sans-serif;
|
||||||
|
--font-text: 'Inter', -apple-system, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
background: var(--pure-white);
|
||||||
|
color: var(--graphite);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.43;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NAV */
|
||||||
|
nav {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 100;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 12px 40px;
|
||||||
|
background: var(--pure-white);
|
||||||
|
min-height: 56px;
|
||||||
|
}
|
||||||
|
.nav-brand {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
text-decoration: none;
|
||||||
|
letter-spacing: 3px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.nav-links {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
.nav-links a {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 4px 16px;
|
||||||
|
border-radius: 4px;
|
||||||
|
min-height: 32px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
transition: color 0.33s, background-color 0.33s;
|
||||||
|
}
|
||||||
|
.nav-links a:hover { background: var(--light-ash); }
|
||||||
|
.nav-cta {
|
||||||
|
background: var(--electric-blue);
|
||||||
|
color: var(--pure-white) !important;
|
||||||
|
padding: 8px 24px;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: background-color 0.33s;
|
||||||
|
min-height: 40px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.nav-cta:hover { background: #3560CC; }
|
||||||
|
|
||||||
|
/* HERO */
|
||||||
|
.hero {
|
||||||
|
position: relative;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-start;
|
||||||
|
padding: 80px 40px 60px;
|
||||||
|
background: linear-gradient(180deg, #c8d6e5 0%, #dfe6ed 30%, #f0f0f0 70%, #e8e8e8 100%);
|
||||||
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.hero::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 200px;
|
||||||
|
background: linear-gradient(transparent, rgba(200,200,200,0.3));
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.hero h1 {
|
||||||
|
font-family: var(--font-display);
|
||||||
|
font-size: 40px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 48px;
|
||||||
|
letter-spacing: normal;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.hero .subtitle {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--graphite);
|
||||||
|
margin-bottom: 32px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.hero .promo {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--electric-blue);
|
||||||
|
margin-bottom: 24px;
|
||||||
|
text-decoration: underline;
|
||||||
|
text-underline-offset: 3px;
|
||||||
|
}
|
||||||
|
.hero-buttons {
|
||||||
|
display: flex;
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
.btn-primary {
|
||||||
|
background: var(--electric-blue);
|
||||||
|
color: var(--pure-white);
|
||||||
|
border: 3px solid transparent;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px 24px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
min-height: 40px;
|
||||||
|
min-width: 200px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: border-color 0.33s, background-color 0.33s, color 0.33s, box-shadow 0.25s;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn-primary:hover { background: #3560CC; }
|
||||||
|
.btn-secondary {
|
||||||
|
background: var(--pure-white);
|
||||||
|
color: var(--graphite);
|
||||||
|
border: 3px solid transparent;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px 24px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
min-height: 40px;
|
||||||
|
min-width: 160px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: border-color 0.33s, background-color 0.33s, color 0.33s, box-shadow 0.25s;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn-secondary:hover { background: var(--light-ash); }
|
||||||
|
|
||||||
|
/* SECTIONS */
|
||||||
|
.section {
|
||||||
|
padding: 80px 40px;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.section-title {
|
||||||
|
font-family: var(--font-display);
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
.section-desc {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--pewter);
|
||||||
|
margin-bottom: 40px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
.section-divider {
|
||||||
|
border: none;
|
||||||
|
border-top: 1px solid var(--cloud-gray);
|
||||||
|
margin: 0 40px;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 1. COLOR PALETTE */
|
||||||
|
.color-group-label {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
margin-bottom: 16px;
|
||||||
|
margin-top: 24px;
|
||||||
|
}
|
||||||
|
.color-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.color-swatch {
|
||||||
|
border-radius: 4px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-block {
|
||||||
|
height: 80px;
|
||||||
|
border-radius: 4px 4px 0 0;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-info {
|
||||||
|
padding: 12px;
|
||||||
|
background: var(--pure-white);
|
||||||
|
border: 1px solid var(--cloud-gray);
|
||||||
|
border-top: none;
|
||||||
|
border-radius: 0 0 4px 4px;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-name {
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-hex {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--pewter);
|
||||||
|
margin-bottom: 4px;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
.color-swatch .swatch-role {
|
||||||
|
font-size: 11px;
|
||||||
|
color: var(--silver-fog);
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2. TYPOGRAPHY */
|
||||||
|
.type-sample {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
padding-bottom: 24px;
|
||||||
|
border-bottom: 1px solid var(--cloud-gray);
|
||||||
|
}
|
||||||
|
.type-sample:last-child { border-bottom: none; }
|
||||||
|
.type-label {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--silver-fog);
|
||||||
|
margin-top: 8px;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 3. BUTTONS */
|
||||||
|
.button-row {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 16px;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.btn-nav {
|
||||||
|
background: transparent;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px 16px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
min-height: 32px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color 0.33s, background-color 0.33s;
|
||||||
|
}
|
||||||
|
.btn-nav:hover { background: var(--light-ash); }
|
||||||
|
.btn-text-link {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
color: var(--pewter);
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 4px 0;
|
||||||
|
transition: box-shadow 0.33s, color 0.33s;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.btn-text-link:hover {
|
||||||
|
box-shadow: 0 1px 0 var(--pewter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 4. CARDS */
|
||||||
|
.card-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
background: var(--pure-white);
|
||||||
|
border-radius: 4px;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: background-color 0.33s;
|
||||||
|
}
|
||||||
|
.card-image {
|
||||||
|
height: 200px;
|
||||||
|
background: var(--light-ash);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.card-image-placeholder {
|
||||||
|
font-size: 40px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--pale-silver);
|
||||||
|
font-family: var(--font-display);
|
||||||
|
}
|
||||||
|
.card-body {
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.card-title {
|
||||||
|
font-size: 17px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-family: var(--font-text);
|
||||||
|
}
|
||||||
|
.card-links {
|
||||||
|
display: flex;
|
||||||
|
gap: 16px;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.card-links a {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--pewter);
|
||||||
|
text-decoration: none;
|
||||||
|
transition: box-shadow 0.33s, color 0.33s;
|
||||||
|
}
|
||||||
|
.card-links a:hover { box-shadow: 0 1px 0 var(--pewter); }
|
||||||
|
|
||||||
|
.card-category {
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
height: 180px;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 24px;
|
||||||
|
}
|
||||||
|
.card-category .cat-label {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--pure-white);
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 5. FORMS */
|
||||||
|
.form-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 24px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.form-group { display: flex; flex-direction: column; gap: 6px; }
|
||||||
|
.form-label {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
}
|
||||||
|
.form-input {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
background: var(--pure-white);
|
||||||
|
border: 1px solid var(--pale-silver);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 10px 12px;
|
||||||
|
min-height: 40px;
|
||||||
|
outline: none;
|
||||||
|
transition: border-color 0.33s;
|
||||||
|
}
|
||||||
|
.form-input::placeholder { color: var(--silver-fog); }
|
||||||
|
.form-input:focus { border-color: var(--electric-blue); }
|
||||||
|
.form-input.error { border-color: #E74C3C; }
|
||||||
|
.form-textarea {
|
||||||
|
font-family: var(--font-text);
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
background: var(--pure-white);
|
||||||
|
border: 1px solid var(--pale-silver);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 10px 12px;
|
||||||
|
min-height: 100px;
|
||||||
|
outline: none;
|
||||||
|
resize: vertical;
|
||||||
|
transition: border-color 0.33s;
|
||||||
|
}
|
||||||
|
.form-textarea::placeholder { color: var(--silver-fog); }
|
||||||
|
.form-textarea:focus { border-color: var(--electric-blue); }
|
||||||
|
|
||||||
|
/* 6. SPACING */
|
||||||
|
.spacing-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
.spacing-box {
|
||||||
|
height: 32px;
|
||||||
|
background: var(--electric-blue);
|
||||||
|
border-radius: 4px;
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
.spacing-label {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--pewter);
|
||||||
|
font-family: monospace;
|
||||||
|
min-width: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 7. RADIUS */
|
||||||
|
.radius-row {
|
||||||
|
display: flex;
|
||||||
|
gap: 24px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.radius-item {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.radius-box {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: var(--light-ash);
|
||||||
|
border: 2px solid var(--pale-silver);
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
.radius-value {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
.radius-context {
|
||||||
|
font-size: 11px;
|
||||||
|
color: var(--silver-fog);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 8. ELEVATION */
|
||||||
|
.elevation-row {
|
||||||
|
display: flex;
|
||||||
|
gap: 32px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
.elevation-card {
|
||||||
|
width: 200px;
|
||||||
|
padding: 24px;
|
||||||
|
border-radius: 4px;
|
||||||
|
text-align: center;
|
||||||
|
background: var(--pure-white);
|
||||||
|
}
|
||||||
|
.elevation-name {
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--carbon-dark);
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
.elevation-desc {
|
||||||
|
font-size: 11px;
|
||||||
|
color: var(--pewter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FOOTER */
|
||||||
|
footer {
|
||||||
|
padding: 40px;
|
||||||
|
text-align: center;
|
||||||
|
border-top: 1px solid var(--cloud-gray);
|
||||||
|
}
|
||||||
|
footer p {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--silver-fog);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.hero h1 { font-size: 28px; line-height: 36px; }
|
||||||
|
.hero-buttons { flex-direction: column; align-items: center; }
|
||||||
|
.btn-primary, .btn-secondary { min-width: 240px; }
|
||||||
|
.color-grid { grid-template-columns: repeat(2, 1fr); }
|
||||||
|
.form-grid { grid-template-columns: 1fr; }
|
||||||
|
.card-grid { grid-template-columns: 1fr; }
|
||||||
|
nav { padding: 12px 20px; }
|
||||||
|
.section { padding: 60px 20px; }
|
||||||
|
.nav-links { display: none; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- NAV -->
|
||||||
|
<nav>
|
||||||
|
<span class="nav-brand">awesome-design-md</span>
|
||||||
|
<ul class="nav-links">
|
||||||
|
<li><a href="#">Vehicles</a></li>
|
||||||
|
<li><a href="#">Energy</a></li>
|
||||||
|
<li><a href="#">Charging</a></li>
|
||||||
|
<li><a href="#">Discover</a></li>
|
||||||
|
<li><a href="#" class="nav-cta">Shop</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<section class="hero">
|
||||||
|
<h1>Design System Inspired by Tesla</h1>
|
||||||
|
<p class="promo">Photography-first. Interface-invisible.</p>
|
||||||
|
<p class="subtitle">A visual catalog generated from DESIGN.md — every token, every value, every design decision.</p>
|
||||||
|
<div class="hero-buttons">
|
||||||
|
<a href="#" class="btn-primary">Order Now</a>
|
||||||
|
<a href="#" class="btn-secondary">View Inventory</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 1. COLOR PALETTE -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Color Palette</h2>
|
||||||
|
<p class="section-desc">Tesla's palette is almost ascetic — one blue, three grays, and white. Every surface is monochrome to let photography dominate.</p>
|
||||||
|
|
||||||
|
<div class="color-group-label">Primary</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #3E6AE1;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Electric Blue</div>
|
||||||
|
<div class="swatch-hex">#3E6AE1</div>
|
||||||
|
<div class="swatch-role">Primary CTA buttons — the only chromatic color</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #FFFFFF; border: 1px solid #EEEEEE;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Pure White</div>
|
||||||
|
<div class="swatch-hex">#FFFFFF</div>
|
||||||
|
<div class="swatch-role">Background, surfaces, secondary buttons</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Surface & Background</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #F4F4F4;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Light Ash</div>
|
||||||
|
<div class="swatch-hex">#F4F4F4</div>
|
||||||
|
<div class="swatch-role">Alternate surface, hover states</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #171A20;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Carbon Dark</div>
|
||||||
|
<div class="swatch-hex">#171A20</div>
|
||||||
|
<div class="swatch-role">Dark surface, hero overlays</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: rgba(255,255,255,0.75); border: 1px solid #D0D1D2;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Frosted Glass</div>
|
||||||
|
<div class="swatch-hex">rgba(255,255,255,0.75)</div>
|
||||||
|
<div class="swatch-role">Nav backdrop-filter on scroll</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Neutrals & Text</div>
|
||||||
|
<div class="color-grid">
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #171A20;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Carbon Dark</div>
|
||||||
|
<div class="swatch-hex">#171A20</div>
|
||||||
|
<div class="swatch-role">Headings, navigation text</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #393C41;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Graphite</div>
|
||||||
|
<div class="swatch-hex">#393C41</div>
|
||||||
|
<div class="swatch-role">Body text, secondary content</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #5C5E62;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Pewter</div>
|
||||||
|
<div class="swatch-hex">#5C5E62</div>
|
||||||
|
<div class="swatch-role">Tertiary text, sub-links</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #8E8E8E;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Silver Fog</div>
|
||||||
|
<div class="swatch-hex">#8E8E8E</div>
|
||||||
|
<div class="swatch-role">Placeholders, disabled states</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #EEEEEE;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Cloud Gray</div>
|
||||||
|
<div class="swatch-hex">#EEEEEE</div>
|
||||||
|
<div class="swatch-role">Borders, divider lines</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="color-swatch">
|
||||||
|
<div class="swatch-block" style="background: #D0D1D2;"></div>
|
||||||
|
<div class="swatch-info">
|
||||||
|
<div class="swatch-name">Pale Silver</div>
|
||||||
|
<div class="swatch-hex">#D0D1D2</div>
|
||||||
|
<div class="swatch-role">UI borders, delineation</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 2. TYPOGRAPHY -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Typography Scale</h2>
|
||||||
|
<p class="section-desc">Universal Sans Display for heroes, Universal Sans Text for everything else. Only weights 400 and 500. Shown with Inter as the closest available Google Font substitute.</p>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-display); font-size: 40px; font-weight: 500; line-height: 48px; color: var(--carbon-dark);">Model Y</div>
|
||||||
|
<div class="type-label">Hero Title — 40px / 500 / 48px line-height / Universal Sans Display</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 22px; font-weight: 400; line-height: 20px; color: var(--pure-white); background: var(--carbon-dark); padding: 12px 16px; border-radius: 4px; display: inline-block;">0% APR Available</div>
|
||||||
|
<div class="type-label">Promo Text — 22px / 400 / Universal Sans Text / white on dark</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 17px; font-weight: 500; line-height: 20px; color: var(--carbon-dark);">Model 3</div>
|
||||||
|
<div class="type-label">Product Name — 17px / 500 / 20px line-height / Universal Sans Text</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 14px; font-weight: 500; line-height: 16.8px; color: var(--carbon-dark);">Vehicles Energy Charging Discover Shop</div>
|
||||||
|
<div class="type-label">Nav Item — 14px / 500 / 16.8px line-height / Universal Sans Text</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 14px; font-weight: 400; line-height: 20px; color: var(--graphite);">Tesla's website is an exercise in radical subtraction — a digital showroom where the product is everything and the interface is almost nothing.</div>
|
||||||
|
<div class="type-label">Body Text — 14px / 400 / 20px line-height / Universal Sans Text</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="type-sample">
|
||||||
|
<div style="font-family: var(--font-text); font-size: 14px; font-weight: 400; line-height: 20px; color: var(--pewter);">Learn Order Experience</div>
|
||||||
|
<div class="type-label">Sub-link — 14px / 400 / 20px line-height / Pewter (#5C5E62)</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 3. BUTTONS -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Button Variants</h2>
|
||||||
|
<p class="section-desc">Barely-rounded rectangles (4px radius). One blue for primary, white for secondary, transparent for nav. No pill shapes, no outlines.</p>
|
||||||
|
|
||||||
|
<div class="button-row">
|
||||||
|
<a href="#" class="btn-primary">Order Now</a>
|
||||||
|
<span style="font-size:12px; color:var(--silver-fog); font-family:monospace;">Primary — bg #3E6AE1, 4px radius, 40px height, 200px width</span>
|
||||||
|
</div>
|
||||||
|
<div class="button-row">
|
||||||
|
<a href="#" class="btn-secondary">View Inventory</a>
|
||||||
|
<span style="font-size:12px; color:var(--silver-fog); font-family:monospace;">Secondary — bg #FFFFFF, 4px radius, 40px height, 160px width</span>
|
||||||
|
</div>
|
||||||
|
<div class="button-row">
|
||||||
|
<button class="btn-nav">Vehicles</button>
|
||||||
|
<button class="btn-nav">Energy</button>
|
||||||
|
<button class="btn-nav">Charging</button>
|
||||||
|
<span style="font-size:12px; color:var(--silver-fog); font-family:monospace;">Nav — transparent bg, 4px radius, 32px height</span>
|
||||||
|
</div>
|
||||||
|
<div class="button-row">
|
||||||
|
<a href="#" class="btn-text-link">Learn</a>
|
||||||
|
<a href="#" class="btn-text-link">Order</a>
|
||||||
|
<a href="#" class="btn-text-link">Experience</a>
|
||||||
|
<span style="font-size:12px; color:var(--silver-fog); font-family:monospace;">Text Link — no bg, Pewter #5C5E62, underline on hover</span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 4. CARDS -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Card Examples</h2>
|
||||||
|
<p class="section-desc">Vehicle cards with no borders or shadows. Category cards with full-bleed photography and 12px radius.</p>
|
||||||
|
|
||||||
|
<div class="color-group-label">Vehicle Cards (Navigation Panel)</div>
|
||||||
|
<div class="card-grid">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-image">
|
||||||
|
<span class="card-image-placeholder">S</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card-title">Model S</div>
|
||||||
|
<div class="card-links">
|
||||||
|
<a href="#">Learn</a>
|
||||||
|
<a href="#">Order</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-image">
|
||||||
|
<span class="card-image-placeholder">3</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card-title">Model 3</div>
|
||||||
|
<div class="card-links">
|
||||||
|
<a href="#">Learn</a>
|
||||||
|
<a href="#">Order</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-image">
|
||||||
|
<span class="card-image-placeholder">Y</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card-title">Model Y</div>
|
||||||
|
<div class="card-links">
|
||||||
|
<a href="#">Learn</a>
|
||||||
|
<a href="#">Order</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="color-group-label">Category Cards (Homepage)</div>
|
||||||
|
<div style="display:grid; grid-template-columns: 2fr 1fr; gap: 16px; margin-bottom: 32px;">
|
||||||
|
<div class="card-category" style="background: linear-gradient(135deg, #2c3e50, #4a6741);">
|
||||||
|
<span class="cat-label">Sport Sedan</span>
|
||||||
|
</div>
|
||||||
|
<div class="card-category" style="background: linear-gradient(135deg, #34495e, #2c6e49);">
|
||||||
|
<span class="cat-label">Midsize SUV</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 5. FORMS -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Form Elements</h2>
|
||||||
|
<p class="section-desc">Minimal input styling with 4px radius and Pale Silver borders. Focus state triggers Electric Blue border.</p>
|
||||||
|
|
||||||
|
<div class="form-grid">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="form-label">Default Input</label>
|
||||||
|
<input class="form-input" type="text" placeholder="Enter your email">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="form-label">Focus Input</label>
|
||||||
|
<input class="form-input" type="text" placeholder="Focused state" style="border-color: var(--electric-blue);">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="form-label">Error Input</label>
|
||||||
|
<input class="form-input error" type="text" placeholder="Error state" value="Invalid entry">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="form-label">Textarea</label>
|
||||||
|
<textarea class="form-textarea" placeholder="Ask a question..."></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 6. SPACING -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Spacing Scale</h2>
|
||||||
|
<p class="section-desc">8px base unit. Extremely restrained spacing tokens — precision over variety.</p>
|
||||||
|
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">4px</div>
|
||||||
|
<div class="spacing-box" style="width: 16px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--silver-fog);">Button inner padding</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">8px</div>
|
||||||
|
<div class="spacing-box" style="width: 32px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--silver-fog);">Base unit, nav item gap</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">16px</div>
|
||||||
|
<div class="spacing-box" style="width: 64px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--silver-fog);">Nav item horizontal padding, card gap</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">24px</div>
|
||||||
|
<div class="spacing-box" style="width: 96px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--silver-fog);">Button horizontal padding, category card inner padding</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">40px</div>
|
||||||
|
<div class="spacing-box" style="width: 160px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--silver-fog);">Section horizontal padding, nav horizontal padding</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">80px</div>
|
||||||
|
<div class="spacing-box" style="width: 320px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--silver-fog);">Section vertical padding</span>
|
||||||
|
</div>
|
||||||
|
<div class="spacing-row">
|
||||||
|
<div class="spacing-label">100vh</div>
|
||||||
|
<div class="spacing-box" style="width: 480px;"></div>
|
||||||
|
<span style="font-size:11px; color:var(--silver-fog);">Hero section height — one message per screen</span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 7. BORDER RADIUS -->
|
||||||
|
<section class="section">
|
||||||
|
<h2 class="section-title">Border Radius Scale</h2>
|
||||||
|
<p class="section-desc">Sharp and precise. Only 4px for buttons and 12px for category cards.</p>
|
||||||
|
|
||||||
|
<div class="radius-row">
|
||||||
|
<div class="radius-item">
|
||||||
|
<div class="radius-box" style="border-radius: 0px;"></div>
|
||||||
|
<div class="radius-value">0px</div>
|
||||||
|
<div class="radius-context">Default (most elements)</div>
|
||||||
|
</div>
|
||||||
|
<div class="radius-item">
|
||||||
|
<div class="radius-box" style="border-radius: 4px;"></div>
|
||||||
|
<div class="radius-value">4px</div>
|
||||||
|
<div class="radius-context">Buttons, inputs</div>
|
||||||
|
</div>
|
||||||
|
<div class="radius-item">
|
||||||
|
<div class="radius-box" style="border-radius: 12px;"></div>
|
||||||
|
<div class="radius-value">12px</div>
|
||||||
|
<div class="radius-context">Category cards</div>
|
||||||
|
</div>
|
||||||
|
<div class="radius-item">
|
||||||
|
<div class="radius-box" style="border-radius: 50%;"></div>
|
||||||
|
<div class="radius-value">50%</div>
|
||||||
|
<div class="radius-context">Carousel dots</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<hr class="section-divider">
|
||||||
|
|
||||||
|
<!-- 8. ELEVATION -->
|
||||||
|
<section class="section" style="background: var(--light-ash); margin: 0 auto; max-width: 100%; padding: 80px 40px;">
|
||||||
|
<div style="max-width: 1200px; margin: 0 auto;">
|
||||||
|
<h2 class="section-title">Elevation & Depth</h2>
|
||||||
|
<p class="section-desc">Tesla avoids shadows entirely. Depth comes from opacity-based layering and photography-as-depth.</p>
|
||||||
|
|
||||||
|
<div class="elevation-row">
|
||||||
|
<div class="elevation-card" style="border: 1px solid var(--cloud-gray);">
|
||||||
|
<div class="elevation-name">Level 0 — Flat</div>
|
||||||
|
<div class="elevation-desc">No shadow, no border. Default for all elements.</div>
|
||||||
|
</div>
|
||||||
|
<div class="elevation-card" style="background: rgba(255,255,255,0.75); border: 1px solid var(--pale-silver); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);">
|
||||||
|
<div class="elevation-name">Level 1 — Frost</div>
|
||||||
|
<div class="elevation-desc">Frosted glass. Navigation on scroll.</div>
|
||||||
|
</div>
|
||||||
|
<div class="elevation-card" style="background: rgba(128,128,128,0.65); color: white;">
|
||||||
|
<div class="elevation-name" style="color: white;">Level 2 — Overlay</div>
|
||||||
|
<div class="elevation-desc" style="color: rgba(255,255,255,0.8);">Modal overlays, popups.</div>
|
||||||
|
</div>
|
||||||
|
<div class="elevation-card" style="box-shadow: 0 2px 8px rgba(0,0,0,0.05); border: 1px solid var(--cloud-gray);">
|
||||||
|
<div class="elevation-name">Level 3 — Subtle</div>
|
||||||
|
<div class="elevation-desc">Minimal shadow hints on rare hover states.</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FOOTER -->
|
||||||
|
<footer>
|
||||||
|
<p style="color: var(--silver-fog); font-size: 12px;">Design System Inspired by Tesla — Generated from DESIGN.md by awesome-design-md</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
x
Reference in New Issue
Block a user