first commit
This commit is contained in:
267
design-md/ollama/DESIGN.md
Normal file
267
design-md/ollama/DESIGN.md
Normal file
@@ -0,0 +1,267 @@
|
||||
# Design System: Ollama
|
||||
|
||||
## 1. Visual Theme & Atmosphere
|
||||
|
||||
Ollama's interface is radical minimalism taken to its logical conclusion — a pure-white void where content floats without decoration, shadow, or color. The design philosophy mirrors the product itself: strip away everything unnecessary until only the essential tool remains. This is the digital equivalent of a Dieter Rams object — every pixel earns its place, and the absence of design IS the design.
|
||||
|
||||
The entire page exists in pure grayscale. There is zero chromatic color in the interface — no brand blue, no accent green, no semantic red. The only colors that exist are shades between pure black (`#000000`) and pure white (`#ffffff`), creating a monochrome environment that lets the user's mental model of "open models" remain uncolored by brand opinion. The Ollama llama mascot, rendered in simple black line art, is the only illustration — and even it's monochrome.
|
||||
|
||||
What makes Ollama distinctive is the combination of SF Pro Rounded (Apple's rounded system font) with an exclusively pill-shaped geometry (9999px radius on everything interactive). The rounded letterforms + rounded buttons + rounded containers create a cohesive "softness language" that makes a developer CLI tool feel approachable and friendly rather than intimidating. This is minimalism with warmth — not cold Swiss-style grid minimalism, but the kind where the edges are literally softened.
|
||||
|
||||
**Key Characteristics:**
|
||||
- Pure white canvas with zero chromatic color — completely grayscale
|
||||
- SF Pro Rounded headlines creating a distinctively Apple-like softness
|
||||
- Binary border-radius system: 12px (containers) or 9999px (everything interactive)
|
||||
- Zero shadows — depth comes exclusively from background color shifts and borders
|
||||
- Pill-shaped geometry on all interactive elements (buttons, tabs, inputs, tags)
|
||||
- The Ollama llama as the sole illustration — black line art, no color
|
||||
- Extreme content restraint — the homepage is short, focused, and uncluttered
|
||||
|
||||
## 2. Color Palette & Roles
|
||||
|
||||
### Primary
|
||||
- **Pure Black** (`#000000`): Primary headlines, primary links, and the darkest text. The only "color" that demands attention.
|
||||
- **Near Black** (`#262626`): Button text on light surfaces, secondary headline weight.
|
||||
- **Darkest Surface** (`#090909`): The darkest possible surface — barely distinguishable from pure black, used for footer or dark containers.
|
||||
|
||||
### Surface & Background
|
||||
- **Pure White** (`#ffffff`): The primary page background — not off-white, not cream, pure white. Button surfaces for secondary actions.
|
||||
- **Snow** (`#fafafa`): The subtlest possible surface distinction from white — used for section backgrounds and barely-elevated containers.
|
||||
- **Light Gray** (`#e5e5e5`): Button backgrounds, borders, and the primary containment color. The workhorse neutral.
|
||||
|
||||
### Neutrals & Text
|
||||
- **Stone** (`#737373`): Secondary body text, footer links, and de-emphasized content. The primary "muted" tone.
|
||||
- **Mid Gray** (`#525252`): Emphasized secondary text, slightly darker than Stone.
|
||||
- **Silver** (`#a3a3a3`): Tertiary text, placeholders, and deeply de-emphasized metadata.
|
||||
- **Button Text Dark** (`#404040`): Specific to white-surface button text.
|
||||
|
||||
### Semantic & Accent
|
||||
- **Ring Blue** (`#3b82f6` at 50%): The ONLY non-gray color in the entire system — Tailwind's default focus ring, used exclusively for keyboard accessibility. Never visible in normal interaction flow.
|
||||
- **Border Light** (`#d4d4d4`): A slightly darker gray for white-surface button borders.
|
||||
|
||||
### Gradient System
|
||||
- **None.** Ollama uses absolutely no gradients. Visual separation comes from flat color blocks and single-pixel borders. This is a deliberate, almost philosophical design choice.
|
||||
|
||||
## 3. Typography Rules
|
||||
|
||||
### Font Family
|
||||
- **Display**: `SF Pro Rounded`, with fallbacks: `system-ui, -apple-system, system-ui`
|
||||
- **Body / UI**: `ui-sans-serif`, with fallbacks: `system-ui, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji`
|
||||
- **Monospace**: `ui-monospace`, with fallbacks: `SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New`
|
||||
|
||||
*Note: SF Pro Rounded is Apple's system font — it renders with rounded terminals on macOS/iOS and falls back to the system sans-serif on other platforms.*
|
||||
|
||||
### Hierarchy
|
||||
|
||||
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|
||||
|------|------|------|--------|-------------|----------------|-------|
|
||||
| Display / Hero | SF Pro Rounded | 48px (3rem) | 500 | 1.00 (tight) | normal | Maximum impact, rounded letterforms |
|
||||
| Section Heading | SF Pro Rounded | 36px (2.25rem) | 500 | 1.11 (tight) | normal | Feature section titles |
|
||||
| Sub-heading | SF Pro Rounded / ui-sans-serif | 30px (1.88rem) | 400–500 | 1.20 (tight) | normal | Card headings, feature names |
|
||||
| Card Title | ui-sans-serif | 24px (1.5rem) | 400 | 1.33 | normal | Medium emphasis headings |
|
||||
| Body Large | ui-sans-serif | 18px (1.13rem) | 400–500 | 1.56 | normal | Hero descriptions, button text |
|
||||
| Body / Link | ui-sans-serif | 16px (1rem) | 400–500 | 1.50 | normal | Standard body text, navigation |
|
||||
| Caption | ui-sans-serif | 14px (0.88rem) | 400 | 1.43 | normal | Metadata, descriptions |
|
||||
| Small | ui-sans-serif | 12px (0.75rem) | 400 | 1.33 | normal | Smallest sans-serif text |
|
||||
| Code Body | ui-monospace | 16px (1rem) | 400 | 1.50 | normal | Inline code, commands |
|
||||
| Code Caption | ui-monospace | 14px (0.88rem) | 400 | 1.43 | normal | Code snippets, secondary |
|
||||
| Code Small | ui-monospace | 12px (0.75rem) | 400–700 | 1.63 | normal | Tags, labels |
|
||||
|
||||
### Principles
|
||||
- **Rounded display, standard body**: SF Pro Rounded carries display headlines with its distinctive rounded terminals, while the standard system sans handles all body text. The rounded font IS the brand expression.
|
||||
- **Weight restraint**: Only two weights matter — 400 (regular) for body and 500 (medium) for headings. No bold, no light, no black weight. This extreme restraint reinforces the minimal philosophy.
|
||||
- **Tight display, comfortable body**: Headlines compress to 1.0 line-height, while body text relaxes to 1.43–1.56. The contrast creates clear hierarchy without needing weight contrast.
|
||||
- **Monospace for developer identity**: Code blocks and terminal commands appear throughout as primary content, using the system monospace stack.
|
||||
|
||||
## 4. Component Stylings
|
||||
|
||||
### Buttons
|
||||
|
||||
**Gray Pill (Primary)**
|
||||
- Background: Light Gray (`#e5e5e5`)
|
||||
- Text: Near Black (`#262626`)
|
||||
- Padding: 10px 24px
|
||||
- Border: thin solid Light Gray (`1px solid #e5e5e5`)
|
||||
- Radius: pill-shaped (9999px)
|
||||
- The primary action button — understated, grayscale, always pill-shaped
|
||||
|
||||
**White Pill (Secondary)**
|
||||
- Background: Pure White (`#ffffff`)
|
||||
- Text: Button Text Dark (`#404040`)
|
||||
- Padding: 10px 24px
|
||||
- Border: thin solid Border Light (`1px solid #d4d4d4`)
|
||||
- Radius: pill-shaped (9999px)
|
||||
- Secondary action — visually lighter than Gray Pill
|
||||
|
||||
**Black Pill (CTA)**
|
||||
- Background: Pure Black (`#000000`)
|
||||
- Text: Pure White (`#ffffff`)
|
||||
- Radius: pill-shaped (9999px)
|
||||
- Inferred from "Create account" and "Explore" buttons
|
||||
- Maximum emphasis — black on white
|
||||
|
||||
### Cards & Containers
|
||||
- Background: Pure White or Snow (`#fafafa`)
|
||||
- Border: thin solid Light Gray (`1px solid #e5e5e5`) when needed
|
||||
- Radius: comfortably rounded (12px) — the ONLY non-pill radius in the system
|
||||
- Shadow: **none** — zero shadows on any element
|
||||
- Hover: likely subtle background shift or border darkening
|
||||
|
||||
### Inputs & Forms
|
||||
- Background: Pure White
|
||||
- Border: `1px solid #e5e5e5`
|
||||
- Radius: pill-shaped (9999px) — search inputs and form fields are pill-shaped
|
||||
- Focus: Ring Blue (`#3b82f6` at 50%) ring
|
||||
- Placeholder: Silver (`#a3a3a3`)
|
||||
|
||||
### Navigation
|
||||
- Clean horizontal nav with minimal elements
|
||||
- Logo: Ollama llama icon + wordmark in black
|
||||
- Links: "Models", "Docs", "Pricing" in black at 16px, weight 400
|
||||
- Search bar: pill-shaped with placeholder text
|
||||
- Right side: "Sign in" link + "Download" black pill CTA
|
||||
- No borders, no background — transparent nav on white page
|
||||
|
||||
### Image Treatment
|
||||
- The Ollama llama mascot is the only illustration — black line art on white
|
||||
- Code screenshots/terminal outputs shown in bordered containers (12px radius)
|
||||
- Integration logos displayed as simple icons in a grid
|
||||
- No photographs, no gradients, no decorative imagery
|
||||
|
||||
### Distinctive Components
|
||||
|
||||
**Tab Pills**
|
||||
- Pill-shaped tab selectors (e.g., "Coding" | "OpenClaw")
|
||||
- Active: Light Gray bg; Inactive: transparent
|
||||
- All pill-shaped (9999px)
|
||||
|
||||
**Model Tags**
|
||||
- Small pill-shaped tags (e.g., "ollama", "launch", "claude")
|
||||
- Light Gray background, dark text
|
||||
- The primary way to browse models
|
||||
|
||||
**Terminal Command Block**
|
||||
- Monospace code showing `ollama run` commands
|
||||
- Minimal styling — just a bordered 12px-radius container
|
||||
- Copy button integrated
|
||||
|
||||
**Integration Grid**
|
||||
- Grid of integration logos (Codex, Claude Code, OpenCode, LangChain, etc.)
|
||||
- Each in a bordered pill or card with icon + name
|
||||
- Tabbed by category (Coding, Documents & RAG, Automation, Chat)
|
||||
|
||||
## 5. Layout Principles
|
||||
|
||||
### Spacing System
|
||||
- Base unit: 8px
|
||||
- Scale: 4px, 6px, 8px, 9px, 10px, 12px, 14px, 16px, 20px, 24px, 32px, 40px, 48px, 88px, 112px
|
||||
- Button padding: 10px 24px (consistent across all buttons)
|
||||
- Card internal padding: approximately 24–32px
|
||||
- Section vertical spacing: very generous (88px–112px)
|
||||
|
||||
### Grid & Container
|
||||
- Max container width: approximately 1024–1280px, centered
|
||||
- Hero: centered single-column with llama illustration
|
||||
- Feature sections: 2-column layout (text left, code right)
|
||||
- Integration grid: responsive multi-column
|
||||
- Footer: clean single-row
|
||||
|
||||
### Whitespace Philosophy
|
||||
- **Emptiness as luxury**: The page is remarkably short and sparse — no feature section overstays its welcome. Each concept gets minimal but sufficient space.
|
||||
- **Content density is low by design**: Where other AI companies pack feature after feature, Ollama presents three ideas (run models, use with apps, integrations) and stops.
|
||||
- **The white space IS the brand**: Pure white space with zero decoration communicates "this tool gets out of your way."
|
||||
|
||||
### Border Radius Scale
|
||||
- Comfortably rounded (12px): The sole container radius — code blocks, cards, panels
|
||||
- Pill-shaped (9999px): Everything interactive — buttons, tabs, inputs, tags, badges
|
||||
|
||||
*This binary system is extreme and distinctive. There is no 4px, no 8px, no gradient of roundness. Elements are either containers (12px) or interactive (pill).*
|
||||
|
||||
## 6. Depth & Elevation
|
||||
|
||||
| Level | Treatment | Use |
|
||||
|-------|-----------|-----|
|
||||
| Flat (Level 0) | No shadow, no border | Page background, most content |
|
||||
| Bordered (Level 1) | `1px solid #e5e5e5` | Cards, code blocks, buttons |
|
||||
|
||||
**Shadow Philosophy**: Ollama uses **zero shadows**. This is not an oversight — it's a deliberate design decision. Every other major AI product site uses at least subtle shadows. Ollama's flat, shadowless approach creates a paper-like experience where elements are distinguished purely by background color and single-pixel borders. Depth is communicated through **content hierarchy and typography weight**, not visual layering.
|
||||
|
||||
## 7. Do's and Don'ts
|
||||
|
||||
### Do
|
||||
- Use pure white (`#ffffff`) as the page background — never off-white or cream
|
||||
- Use pill-shaped (9999px) radius on all interactive elements — buttons, tabs, inputs, tags
|
||||
- Use 12px radius on all non-interactive containers — code blocks, cards, panels
|
||||
- Keep the palette strictly grayscale — no chromatic colors except the blue focus ring
|
||||
- Use SF Pro Rounded at weight 500 for display headings — the rounded terminals are the brand expression
|
||||
- Maintain zero shadows — depth comes from borders and background shifts only
|
||||
- Keep content density low — each section should present one clear idea
|
||||
- Use monospace for terminal commands and code — it's primary content, not decoration
|
||||
- Keep all buttons at 10px 24px padding with pill shape — consistency is absolute
|
||||
|
||||
### Don't
|
||||
- Don't introduce any chromatic color — no brand blue, no accent green, no warm tones
|
||||
- Don't use border-radius between 12px and 9999px — the system is binary
|
||||
- Don't add shadows to any element — the flat aesthetic is intentional
|
||||
- Don't use font weights above 500 — no bold, no black weight
|
||||
- Don't add decorative illustrations beyond the llama mascot
|
||||
- Don't use gradients anywhere — flat blocks and borders only
|
||||
- Don't overcomplicate the layout — two columns maximum, no complex grids
|
||||
- Don't use borders heavier than 1px — containment is always the lightest possible touch
|
||||
- Don't add hover animations or transitions — interactions should feel instant and direct
|
||||
|
||||
## 8. Responsive Behavior
|
||||
|
||||
### Breakpoints
|
||||
| Name | Width | Key Changes |
|
||||
|------|-------|-------------|
|
||||
| Mobile | <640px | Single column, stacked everything, hamburger nav |
|
||||
| Small Tablet | 640–768px | Minor adjustments to spacing |
|
||||
| Tablet | 768–850px | 2-column layouts begin |
|
||||
| Desktop | 850–1024px | Standard layout, expanded features |
|
||||
| Large Desktop | 1024–1280px | Maximum content width |
|
||||
|
||||
### Touch Targets
|
||||
- All buttons are pill-shaped with generous padding (10px 24px)
|
||||
- Navigation links at comfortable 16px size
|
||||
- Minimum touch area easily exceeds 44x44px
|
||||
|
||||
### Collapsing Strategy
|
||||
- **Navigation**: Collapses to hamburger menu on mobile
|
||||
- **Feature sections**: 2-column → stacked single column
|
||||
- **Hero text**: 48px → 36px → 30px progressive scaling
|
||||
- **Integration grid**: Multi-column → 2-column → single column
|
||||
- **Code blocks**: Horizontal scroll maintained
|
||||
|
||||
### Image Behavior
|
||||
- Llama mascot scales proportionally
|
||||
- Code blocks maintain monospace formatting
|
||||
- Integration icons reflow to fewer columns
|
||||
- No art direction changes
|
||||
|
||||
## 9. Agent Prompt Guide
|
||||
|
||||
### Quick Color Reference
|
||||
- Primary Text: "Pure Black (#000000)"
|
||||
- Page Background: "Pure White (#ffffff)"
|
||||
- Secondary Text: "Stone (#737373)"
|
||||
- Button Background: "Light Gray (#e5e5e5)"
|
||||
- Borders: "Light Gray (#e5e5e5)"
|
||||
- Muted Text: "Silver (#a3a3a3)"
|
||||
- Dark Text: "Near Black (#262626)"
|
||||
- Subtle Surface: "Snow (#fafafa)"
|
||||
|
||||
### Example Component Prompts
|
||||
- "Create a hero section on pure white (#ffffff) with an illustration centered above a headline at 48px SF Pro Rounded weight 500, line-height 1.0. Use Pure Black (#000000) text. Below, add a black pill-shaped CTA button (9999px radius, 10px 24px padding) and a gray pill button."
|
||||
- "Design a code block with a 12px border-radius, 1px solid Light Gray (#e5e5e5) border on white background. Use ui-monospace at 16px for the terminal command. No shadow."
|
||||
- "Build a tab bar with pill-shaped tabs (9999px radius). Active tab: Light Gray (#e5e5e5) background, Near Black (#262626) text. Inactive: transparent background, Stone (#737373) text."
|
||||
- "Create an integration card grid. Each card is a bordered pill (9999px radius) or a 12px-radius card with 1px solid #e5e5e5 border. Icon + name inside. Grid of 4 columns on desktop."
|
||||
- "Design a navigation bar: transparent background, no border. Ollama logo on the left, 3 text links (Pure Black, 16px, weight 400), pill search input in the center, 'Sign in' text link and black pill 'Download' button on the right."
|
||||
|
||||
### Iteration Guide
|
||||
1. Focus on ONE component at a time
|
||||
2. Keep all values grayscale — "Stone (#737373)" not "use a light color"
|
||||
3. Always specify pill (9999px) or container (12px) radius — nothing in between
|
||||
4. Shadows are always zero — never add them
|
||||
5. Weight is always 400 or 500 — never bold
|
||||
6. If something feels too decorated, remove it — less is always more for Ollama
|
||||
25
design-md/ollama/README.md
Normal file
25
design-md/ollama/README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Ollama — Design System
|
||||
|
||||
> Design.md extracted from the public [ollama](https://ollama.dev/) 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) |
|
||||
|
||||
## Usage
|
||||
|
||||
Open `DESIGN.md` to use as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that matches the Ollama 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
|
||||

|
||||
678
design-md/ollama/preview-dark.html
Normal file
678
design-md/ollama/preview-dark.html
Normal file
@@ -0,0 +1,678 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Design System Preview: Ollama (Dark)</title>
|
||||
<style>
|
||||
:root {
|
||||
--color-black: #000000;
|
||||
--color-near-black: #262626;
|
||||
--color-darkest-surface: #090909;
|
||||
--color-white: #ffffff;
|
||||
--color-snow: #fafafa;
|
||||
--color-light-gray: #e5e5e5;
|
||||
--color-stone: #737373;
|
||||
--color-mid-gray: #525252;
|
||||
--color-silver: #a3a3a3;
|
||||
--color-button-text-dark: #404040;
|
||||
--color-border-light: #d4d4d4;
|
||||
--font-display: system-ui, -apple-system, 'SF Pro Rounded', 'Segoe UI', Roboto, sans-serif;
|
||||
--font-body: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
|
||||
/* Dark mode tokens */
|
||||
--bg-page: #090909;
|
||||
--bg-card: #262626;
|
||||
--bg-nav: rgba(9,9,9,0.95);
|
||||
--text-primary: #ffffff;
|
||||
--text-secondary: #a3a3a3;
|
||||
--text-muted: #737373;
|
||||
--border-color: #525252;
|
||||
--section-label-color: #a3a3a3;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
background: var(--bg-page);
|
||||
color: var(--text-primary);
|
||||
font-family: var(--font-body);
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
-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(--bg-nav);
|
||||
backdrop-filter: blur(12px);
|
||||
}
|
||||
.nav-brand {
|
||||
font-family: var(--font-display);
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
letter-spacing: -0.3px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.nav-brand .llama { font-size: 22px; }
|
||||
.nav-links { display: flex; gap: 32px; align-items: center; }
|
||||
.nav-links a {
|
||||
color: var(--text-primary);
|
||||
text-decoration: none;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
}
|
||||
.nav-cta {
|
||||
background: var(--color-white);
|
||||
color: var(--color-black);
|
||||
padding: 10px 24px;
|
||||
border: none;
|
||||
border-radius: 9999px;
|
||||
font-size: 16px;
|
||||
font-family: var(--font-body);
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* HERO */
|
||||
.hero {
|
||||
text-align: center;
|
||||
padding: 112px 40px 88px;
|
||||
}
|
||||
.hero h1 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 48px;
|
||||
font-weight: 500;
|
||||
line-height: 1.0;
|
||||
letter-spacing: normal;
|
||||
margin-bottom: 24px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.hero p {
|
||||
color: var(--text-secondary);
|
||||
font-size: 18px;
|
||||
line-height: 1.56;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.hero-buttons { display: flex; gap: 16px; justify-content: center; }
|
||||
|
||||
/* PILL BUTTONS */
|
||||
.btn-white-pill-dark {
|
||||
background: var(--color-white);
|
||||
color: var(--color-black);
|
||||
padding: 10px 24px;
|
||||
border: none;
|
||||
border-radius: 9999px;
|
||||
font-size: 18px;
|
||||
font-family: var(--font-body);
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn-gray-pill-dark {
|
||||
background: var(--color-mid-gray);
|
||||
color: var(--color-white);
|
||||
padding: 10px 24px;
|
||||
border: 1px solid var(--color-mid-gray);
|
||||
border-radius: 9999px;
|
||||
font-size: 18px;
|
||||
font-family: var(--font-body);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn-outline-pill-dark {
|
||||
background: transparent;
|
||||
color: var(--text-primary);
|
||||
padding: 10px 24px;
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 9999px;
|
||||
font-size: 18px;
|
||||
font-family: var(--font-body);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* SECTIONS */
|
||||
.section {
|
||||
max-width: 1024px;
|
||||
margin: 0 auto;
|
||||
padding: 88px 40px;
|
||||
}
|
||||
.section-title {
|
||||
font-family: var(--font-body);
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
color: var(--section-label-color);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.section-heading {
|
||||
font-family: var(--font-display);
|
||||
font-size: 36px;
|
||||
font-weight: 500;
|
||||
line-height: 1.11;
|
||||
margin-bottom: 48px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.section-divider {
|
||||
border: none;
|
||||
border-top: 1px solid var(--border-color);
|
||||
margin: 0 40px;
|
||||
max-width: 1024px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
/* COLOR PALETTE */
|
||||
.color-group { margin-bottom: 40px; }
|
||||
.color-group-title {
|
||||
font-family: var(--font-display);
|
||||
font-size: 20px;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
margin-bottom: 20px;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
.color-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
.color-swatch {
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 12px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.color-swatch-block {
|
||||
height: 80px;
|
||||
}
|
||||
.color-swatch-info {
|
||||
padding: 12px;
|
||||
background: var(--bg-card);
|
||||
}
|
||||
.color-swatch-name { font-size: 13px; font-weight: 500; margin-bottom: 2px; color: var(--text-primary); }
|
||||
.color-swatch-hex { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); margin-bottom: 4px; }
|
||||
.color-swatch-role { font-size: 12px; color: var(--text-muted); line-height: 1.4; }
|
||||
|
||||
/* TYPOGRAPHY */
|
||||
.type-sample { margin-bottom: 32px; padding-bottom: 32px; border-bottom: 1px solid var(--border-color); }
|
||||
.type-sample:last-child { border-bottom: none; }
|
||||
.type-sample-text { margin-bottom: 8px; }
|
||||
.type-sample-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 12px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* BUTTONS */
|
||||
.button-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 20px;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.button-demo { text-align: center; }
|
||||
.button-demo-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
margin-top: 10px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.55px;
|
||||
}
|
||||
|
||||
/* CARDS */
|
||||
.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; }
|
||||
.card {
|
||||
border-radius: 12px;
|
||||
padding: 28px;
|
||||
}
|
||||
.card-bordered {
|
||||
background: var(--bg-page);
|
||||
border: 1px solid var(--border-color);
|
||||
}
|
||||
.card-surface {
|
||||
background: var(--bg-card);
|
||||
border: none;
|
||||
}
|
||||
.card h3 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 24px;
|
||||
font-weight: 500;
|
||||
line-height: 1.33;
|
||||
margin-bottom: 12px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.card p { color: var(--text-secondary); font-size: 15px; line-height: 1.63; }
|
||||
.card-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.55px;
|
||||
color: var(--text-muted);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
/* CODE BLOCK */
|
||||
.code-block {
|
||||
background: var(--bg-card);
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 12px;
|
||||
padding: 20px 24px;
|
||||
margin-top: 24px;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
color: var(--text-primary);
|
||||
overflow-x: auto;
|
||||
}
|
||||
.code-block .prompt { color: var(--text-muted); }
|
||||
|
||||
/* SPACING */
|
||||
.spacing-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
|
||||
.spacing-item { text-align: center; }
|
||||
.spacing-box {
|
||||
background: var(--color-mid-gray);
|
||||
border-radius: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.spacing-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* RADIUS */
|
||||
.radius-row { display: flex; flex-wrap: wrap; gap: 32px; align-items: center; }
|
||||
.radius-item { text-align: center; }
|
||||
.radius-box {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
background: var(--bg-card);
|
||||
border: 1px solid var(--border-color);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.radius-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.radius-context {
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
/* ELEVATION */
|
||||
.elevation-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; }
|
||||
.elevation-card {
|
||||
border-radius: 12px;
|
||||
padding: 24px;
|
||||
min-height: 140px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.elevation-flat {
|
||||
background: var(--bg-page);
|
||||
border: none;
|
||||
}
|
||||
.elevation-bordered {
|
||||
background: var(--bg-page);
|
||||
border: 1px solid var(--border-color);
|
||||
}
|
||||
.elevation-name { font-family: var(--font-display); font-size: 16px; font-weight: 500; margin-bottom: 8px; color: var(--text-primary); }
|
||||
.elevation-desc { font-size: 13px; color: var(--text-secondary); line-height: 1.5; }
|
||||
.elevation-level {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.55px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
/* RESPONSIVE */
|
||||
@media (max-width: 768px) {
|
||||
.nav { padding: 12px 20px; }
|
||||
.nav-links a:not(.nav-cta-wrapper) { display: none; }
|
||||
.hero { padding: 80px 20px 60px; }
|
||||
.hero h1 { font-size: 36px; }
|
||||
.section { padding: 60px 20px; }
|
||||
.section-heading { font-size: 28px; }
|
||||
.color-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
|
||||
.card-grid { grid-template-columns: 1fr; }
|
||||
.hero-buttons { flex-direction: column; align-items: center; }
|
||||
.button-row { flex-direction: column; align-items: flex-start; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- NAV -->
|
||||
<nav class="nav">
|
||||
<div class="nav-brand"><span class="llama">🦙</span> ollama</div>
|
||||
<div class="nav-links">
|
||||
<a href="#colors">Colors</a>
|
||||
<a href="#typography">Typography</a>
|
||||
<a href="#buttons">Buttons</a>
|
||||
<a href="#cards">Cards</a>
|
||||
<a href="#spacing">Spacing</a>
|
||||
<a href="#elevation">Elevation</a>
|
||||
<button class="nav-cta">Download</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<h1>Design System Preview:<br>Ollama</h1>
|
||||
<p>Radical minimalism in pure grayscale. Zero color, zero shadows, zero excess.</p>
|
||||
<div class="hero-buttons">
|
||||
<button class="btn-white-pill-dark">Explore Tokens</button>
|
||||
<button class="btn-gray-pill-dark">View Source</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- COLORS -->
|
||||
<section class="section" id="colors">
|
||||
<div class="section-title">01 / Color Palette</div>
|
||||
<h2 class="section-heading">Grayscale Palette</h2>
|
||||
|
||||
<div class="color-group">
|
||||
<h3 class="color-group-title">Primary</h3>
|
||||
<div class="color-grid">
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #000000; border-bottom: 1px solid #525252;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Pure Black</div>
|
||||
<div class="color-swatch-hex">#000000</div>
|
||||
<div class="color-swatch-role">Primary headlines, links, max emphasis</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #262626; border-bottom: 1px solid #525252;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Near Black</div>
|
||||
<div class="color-swatch-hex">#262626</div>
|
||||
<div class="color-swatch-role">Card surfaces in dark mode</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #090909; border-bottom: 1px solid #525252;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Darkest Surface</div>
|
||||
<div class="color-swatch-hex">#090909</div>
|
||||
<div class="color-swatch-role">Page background in dark mode</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="color-group">
|
||||
<h3 class="color-group-title">Surface & Background</h3>
|
||||
<div class="color-grid">
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #ffffff;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Pure White</div>
|
||||
<div class="color-swatch-hex">#ffffff</div>
|
||||
<div class="color-swatch-role">Primary text in dark mode</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #fafafa;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Snow</div>
|
||||
<div class="color-swatch-hex">#fafafa</div>
|
||||
<div class="color-swatch-role">Light surface, used in light mode</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #e5e5e5;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Light Gray</div>
|
||||
<div class="color-swatch-hex">#e5e5e5</div>
|
||||
<div class="color-swatch-role">Button backgrounds in light mode</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="color-group">
|
||||
<h3 class="color-group-title">Neutrals & Text</h3>
|
||||
<div class="color-grid">
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #737373;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Stone</div>
|
||||
<div class="color-swatch-hex">#737373</div>
|
||||
<div class="color-swatch-role">Muted text, dark mode tertiary</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #525252;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Mid Gray</div>
|
||||
<div class="color-swatch-hex">#525252</div>
|
||||
<div class="color-swatch-role">Borders in dark mode</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #a3a3a3;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Silver</div>
|
||||
<div class="color-swatch-hex">#a3a3a3</div>
|
||||
<div class="color-swatch-role">Secondary text in dark mode</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #404040;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Button Text Dark</div>
|
||||
<div class="color-swatch-hex">#404040</div>
|
||||
<div class="color-swatch-role">White-surface button text</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #d4d4d4;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Border Light</div>
|
||||
<div class="color-swatch-hex">#d4d4d4</div>
|
||||
<div class="color-swatch-role">White-surface button borders</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- TYPOGRAPHY -->
|
||||
<section class="section" id="typography">
|
||||
<div class="section-title">02 / Typography Scale</div>
|
||||
<h2 class="section-heading">Typography Rules</h2>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-display); font-size: 48px; font-weight: 500; line-height: 1.0;">Display Hero</div>
|
||||
<div class="type-sample-label">Display / Hero — 48px / 500 / 1.00 — SF Pro Rounded (system-ui)</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-display); font-size: 36px; font-weight: 500; line-height: 1.11;">Section Heading</div>
|
||||
<div class="type-sample-label">Section Heading — 36px / 500 / 1.11 — SF Pro Rounded (system-ui)</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-display); font-size: 30px; font-weight: 500; line-height: 1.20;">Sub-heading</div>
|
||||
<div class="type-sample-label">Sub-heading — 30px / 500 / 1.20 — SF Pro Rounded (system-ui)</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-body); font-size: 24px; font-weight: 400; line-height: 1.33;">Card Title</div>
|
||||
<div class="type-sample-label">Card Title — 24px / 400 / 1.33 — ui-sans-serif</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-body); font-size: 18px; font-weight: 400; line-height: 1.56;">Body large text for hero descriptions and button labels. The system sans-serif handles all UI copy with clean precision.</div>
|
||||
<div class="type-sample-label">Body Large — 18px / 400 / 1.56 — ui-sans-serif</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-body); font-size: 16px; font-weight: 400; line-height: 1.50;">Standard body text for paragraphs, navigation links, and general content. Weight 400 only.</div>
|
||||
<div class="type-sample-label">Body / Link — 16px / 400 / 1.50 — ui-sans-serif</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-body); font-size: 14px; font-weight: 400; line-height: 1.43; color: var(--text-secondary);">Caption and metadata text for descriptions</div>
|
||||
<div class="type-sample-label">Caption — 14px / 400 / 1.43 — ui-sans-serif</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 16px; font-weight: 400; line-height: 1.50;">ollama run llama3.2</div>
|
||||
<div class="type-sample-label">Code Body — 16px / 400 / 1.50 — ui-monospace</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 14px; font-weight: 400; line-height: 1.43; color: var(--text-secondary);">ollama pull mistral</div>
|
||||
<div class="type-sample-label">Code Caption — 14px / 400 / 1.43 — ui-monospace</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 12px; font-weight: 400; line-height: 1.63; color: var(--text-muted);">v0.9.1 latest</div>
|
||||
<div class="type-sample-label">Code Small — 12px / 400 / 1.63 — ui-monospace</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- BUTTONS -->
|
||||
<section class="section" id="buttons">
|
||||
<div class="section-title">03 / Button Variants</div>
|
||||
<h2 class="section-heading">Buttons</h2>
|
||||
|
||||
<div class="button-row">
|
||||
<div class="button-demo">
|
||||
<button class="btn-gray-pill-dark">Models</button>
|
||||
<div class="button-demo-label">Gray Pill (Primary)</div>
|
||||
</div>
|
||||
<div class="button-demo">
|
||||
<button class="btn-outline-pill-dark">Sign in</button>
|
||||
<div class="button-demo-label">Outline Pill (Secondary)</div>
|
||||
</div>
|
||||
<div class="button-demo">
|
||||
<button class="btn-white-pill-dark">Download</button>
|
||||
<div class="button-demo-label">White Pill (CTA)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="code-block" style="margin-top: 40px;">
|
||||
<span class="prompt">$</span> ollama run llama3.2
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- CARDS -->
|
||||
<section class="section" id="cards">
|
||||
<div class="section-title">04 / Card Examples</div>
|
||||
<h2 class="section-heading">Cards & Containers</h2>
|
||||
|
||||
<div class="card-grid">
|
||||
<div class="card card-bordered">
|
||||
<div class="card-label">Standard Card</div>
|
||||
<h3>Bordered Container</h3>
|
||||
<p>Standard content card with 1px solid Mid Gray border and 12px radius. The only container style in Ollama. Zero shadows.</p>
|
||||
</div>
|
||||
<div class="card card-surface">
|
||||
<div class="card-label">Dark Surface</div>
|
||||
<h3>Elevated Background</h3>
|
||||
<p>Card distinguished by Near Black (#262626) background on Darkest Surface (#090909). Subtle separation through luminance shift only.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- SPACING -->
|
||||
<section class="section" id="spacing">
|
||||
<div class="section-title">05 / Spacing Scale</div>
|
||||
<h2 class="section-heading">Spacing System</h2>
|
||||
<p style="color: var(--text-secondary); margin-bottom: 32px;">Base unit: 8px. Scale from 4px to 112px.</p>
|
||||
|
||||
<div class="spacing-row">
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 16px; height: 16px;"></div><div class="spacing-label">4px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 24px; height: 24px;"></div><div class="spacing-label">8px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 40px; height: 40px;"></div><div class="spacing-label">12px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 64px; height: 64px;"></div><div class="spacing-label">16px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 80px; height: 80px;"></div><div class="spacing-label">20px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 96px; height: 96px;"></div><div class="spacing-label">24px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 128px; height: 128px;"></div><div class="spacing-label">32px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 160px; height: 160px;"></div><div class="spacing-label">40px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 192px; height: 192px;"></div><div class="spacing-label">48px</div></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- BORDER RADIUS -->
|
||||
<section class="section">
|
||||
<div class="section-title">06 / Border Radius</div>
|
||||
<h2 class="section-heading">Binary Radius System</h2>
|
||||
<p style="color: var(--text-secondary); margin-bottom: 32px;">Only two values exist. No 4px, no 8px, no gradient of roundness. Containers or interactive -- nothing in between.</p>
|
||||
|
||||
<div class="radius-row">
|
||||
<div class="radius-item">
|
||||
<div class="radius-box" style="border-radius: 12px;"></div>
|
||||
<div class="radius-label">12px</div>
|
||||
<div class="radius-context">Containers</div>
|
||||
</div>
|
||||
<div class="radius-item">
|
||||
<div class="radius-box" style="border-radius: 9999px;"></div>
|
||||
<div class="radius-label">9999px</div>
|
||||
<div class="radius-context">Interactive / Pills</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- ELEVATION -->
|
||||
<section class="section" id="elevation">
|
||||
<div class="section-title">07 / Elevation & Depth</div>
|
||||
<h2 class="section-heading">Depth & Elevation</h2>
|
||||
<p style="color: var(--text-secondary); margin-bottom: 32px;">Zero shadows. Depth comes from background color shifts and single-pixel borders only.</p>
|
||||
|
||||
<div class="elevation-grid">
|
||||
<div class="elevation-card elevation-flat">
|
||||
<div>
|
||||
<div class="elevation-name">Flat</div>
|
||||
<div class="elevation-desc">No shadow, no border. Page background and inline content. The default state for most elements.</div>
|
||||
</div>
|
||||
<div class="elevation-level">Level 0</div>
|
||||
</div>
|
||||
<div class="elevation-card elevation-bordered">
|
||||
<div>
|
||||
<div class="elevation-name">Bordered</div>
|
||||
<div class="elevation-desc">1px solid Mid Gray (#525252). Cards, code blocks, buttons. The only elevation that exists.</div>
|
||||
</div>
|
||||
<div class="elevation-level">Level 1</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div style="height: 80px;"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
678
design-md/ollama/preview.html
Normal file
678
design-md/ollama/preview.html
Normal file
@@ -0,0 +1,678 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Design System Preview: Ollama (Light)</title>
|
||||
<style>
|
||||
:root {
|
||||
--color-black: #000000;
|
||||
--color-near-black: #262626;
|
||||
--color-darkest-surface: #090909;
|
||||
--color-white: #ffffff;
|
||||
--color-snow: #fafafa;
|
||||
--color-light-gray: #e5e5e5;
|
||||
--color-stone: #737373;
|
||||
--color-mid-gray: #525252;
|
||||
--color-silver: #a3a3a3;
|
||||
--color-button-text-dark: #404040;
|
||||
--color-border-light: #d4d4d4;
|
||||
--font-display: system-ui, -apple-system, 'SF Pro Rounded', 'Segoe UI', Roboto, sans-serif;
|
||||
--font-body: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
||||
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
|
||||
/* Light mode tokens */
|
||||
--bg-page: #ffffff;
|
||||
--bg-card: #fafafa;
|
||||
--bg-nav: rgba(255,255,255,0.95);
|
||||
--text-primary: #000000;
|
||||
--text-secondary: #737373;
|
||||
--text-muted: #a3a3a3;
|
||||
--border-color: #e5e5e5;
|
||||
--section-label-color: #737373;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
background: var(--bg-page);
|
||||
color: var(--text-primary);
|
||||
font-family: var(--font-body);
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
-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(--bg-nav);
|
||||
backdrop-filter: blur(12px);
|
||||
}
|
||||
.nav-brand {
|
||||
font-family: var(--font-display);
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
letter-spacing: -0.3px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.nav-brand .llama { font-size: 22px; }
|
||||
.nav-links { display: flex; gap: 32px; align-items: center; }
|
||||
.nav-links a {
|
||||
color: var(--text-primary);
|
||||
text-decoration: none;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
}
|
||||
.nav-cta {
|
||||
background: var(--color-black);
|
||||
color: var(--color-white);
|
||||
padding: 10px 24px;
|
||||
border: none;
|
||||
border-radius: 9999px;
|
||||
font-size: 16px;
|
||||
font-family: var(--font-body);
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* HERO */
|
||||
.hero {
|
||||
text-align: center;
|
||||
padding: 112px 40px 88px;
|
||||
}
|
||||
.hero h1 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 48px;
|
||||
font-weight: 500;
|
||||
line-height: 1.0;
|
||||
letter-spacing: normal;
|
||||
margin-bottom: 24px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.hero p {
|
||||
color: var(--text-secondary);
|
||||
font-size: 18px;
|
||||
line-height: 1.56;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.hero-buttons { display: flex; gap: 16px; justify-content: center; }
|
||||
|
||||
/* PILL BUTTONS */
|
||||
.btn-black-pill {
|
||||
background: var(--color-black);
|
||||
color: var(--color-white);
|
||||
padding: 10px 24px;
|
||||
border: none;
|
||||
border-radius: 9999px;
|
||||
font-size: 18px;
|
||||
font-family: var(--font-body);
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn-gray-pill {
|
||||
background: var(--color-light-gray);
|
||||
color: var(--color-near-black);
|
||||
padding: 10px 24px;
|
||||
border: 1px solid var(--color-light-gray);
|
||||
border-radius: 9999px;
|
||||
font-size: 18px;
|
||||
font-family: var(--font-body);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn-white-pill {
|
||||
background: var(--color-white);
|
||||
color: var(--color-button-text-dark);
|
||||
padding: 10px 24px;
|
||||
border: 1px solid var(--color-border-light);
|
||||
border-radius: 9999px;
|
||||
font-size: 18px;
|
||||
font-family: var(--font-body);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* SECTIONS */
|
||||
.section {
|
||||
max-width: 1024px;
|
||||
margin: 0 auto;
|
||||
padding: 88px 40px;
|
||||
}
|
||||
.section-title {
|
||||
font-family: var(--font-body);
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
color: var(--section-label-color);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.section-heading {
|
||||
font-family: var(--font-display);
|
||||
font-size: 36px;
|
||||
font-weight: 500;
|
||||
line-height: 1.11;
|
||||
margin-bottom: 48px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.section-divider {
|
||||
border: none;
|
||||
border-top: 1px solid var(--border-color);
|
||||
margin: 0 40px;
|
||||
max-width: 1024px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
/* COLOR PALETTE */
|
||||
.color-group { margin-bottom: 40px; }
|
||||
.color-group-title {
|
||||
font-family: var(--font-display);
|
||||
font-size: 20px;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
margin-bottom: 20px;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
.color-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
.color-swatch {
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 12px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.color-swatch-block {
|
||||
height: 80px;
|
||||
}
|
||||
.color-swatch-info {
|
||||
padding: 12px;
|
||||
background: var(--bg-card);
|
||||
}
|
||||
.color-swatch-name { font-size: 13px; font-weight: 500; margin-bottom: 2px; }
|
||||
.color-swatch-hex { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); margin-bottom: 4px; }
|
||||
.color-swatch-role { font-size: 12px; color: var(--text-muted); line-height: 1.4; }
|
||||
|
||||
/* TYPOGRAPHY */
|
||||
.type-sample { margin-bottom: 32px; padding-bottom: 32px; border-bottom: 1px solid var(--border-color); }
|
||||
.type-sample:last-child { border-bottom: none; }
|
||||
.type-sample-text { margin-bottom: 8px; }
|
||||
.type-sample-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 12px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* BUTTONS */
|
||||
.button-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 20px;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.button-demo { text-align: center; }
|
||||
.button-demo-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
margin-top: 10px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.55px;
|
||||
}
|
||||
|
||||
/* CARDS */
|
||||
.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; }
|
||||
.card {
|
||||
border-radius: 12px;
|
||||
padding: 28px;
|
||||
}
|
||||
.card-bordered {
|
||||
background: var(--bg-page);
|
||||
border: 1px solid var(--border-color);
|
||||
}
|
||||
.card-snow {
|
||||
background: var(--bg-card);
|
||||
border: none;
|
||||
}
|
||||
.card h3 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 24px;
|
||||
font-weight: 500;
|
||||
line-height: 1.33;
|
||||
margin-bottom: 12px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.card p { color: var(--text-secondary); font-size: 15px; line-height: 1.63; }
|
||||
.card-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.55px;
|
||||
color: var(--text-muted);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
/* CODE BLOCK */
|
||||
.code-block {
|
||||
background: var(--bg-page);
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 12px;
|
||||
padding: 20px 24px;
|
||||
margin-top: 24px;
|
||||
font-family: var(--font-mono);
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
color: var(--text-primary);
|
||||
overflow-x: auto;
|
||||
}
|
||||
.code-block .prompt { color: var(--text-muted); }
|
||||
|
||||
/* SPACING */
|
||||
.spacing-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
|
||||
.spacing-item { text-align: center; }
|
||||
.spacing-box {
|
||||
background: var(--color-light-gray);
|
||||
border-radius: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.spacing-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* RADIUS */
|
||||
.radius-row { display: flex; flex-wrap: wrap; gap: 32px; align-items: center; }
|
||||
.radius-item { text-align: center; }
|
||||
.radius-box {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
background: var(--bg-card);
|
||||
border: 1px solid var(--border-color);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.radius-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.radius-context {
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
/* ELEVATION */
|
||||
.elevation-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; }
|
||||
.elevation-card {
|
||||
border-radius: 12px;
|
||||
padding: 24px;
|
||||
min-height: 140px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.elevation-flat {
|
||||
background: var(--bg-page);
|
||||
border: none;
|
||||
}
|
||||
.elevation-bordered {
|
||||
background: var(--bg-page);
|
||||
border: 1px solid var(--border-color);
|
||||
}
|
||||
.elevation-name { font-family: var(--font-display); font-size: 16px; font-weight: 500; margin-bottom: 8px; }
|
||||
.elevation-desc { font-size: 13px; color: var(--text-secondary); line-height: 1.5; }
|
||||
.elevation-level {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.55px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
/* RESPONSIVE */
|
||||
@media (max-width: 768px) {
|
||||
.nav { padding: 12px 20px; }
|
||||
.nav-links a:not(.nav-cta-wrapper) { display: none; }
|
||||
.hero { padding: 80px 20px 60px; }
|
||||
.hero h1 { font-size: 36px; }
|
||||
.section { padding: 60px 20px; }
|
||||
.section-heading { font-size: 28px; }
|
||||
.color-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
|
||||
.card-grid { grid-template-columns: 1fr; }
|
||||
.hero-buttons { flex-direction: column; align-items: center; }
|
||||
.button-row { flex-direction: column; align-items: flex-start; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- NAV -->
|
||||
<nav class="nav">
|
||||
<div class="nav-brand"><span class="llama">🦙</span> ollama</div>
|
||||
<div class="nav-links">
|
||||
<a href="#colors">Colors</a>
|
||||
<a href="#typography">Typography</a>
|
||||
<a href="#buttons">Buttons</a>
|
||||
<a href="#cards">Cards</a>
|
||||
<a href="#spacing">Spacing</a>
|
||||
<a href="#elevation">Elevation</a>
|
||||
<button class="nav-cta">Download</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<h1>Design System Preview:<br>Ollama</h1>
|
||||
<p>Radical minimalism in pure grayscale. Zero color, zero shadows, zero excess.</p>
|
||||
<div class="hero-buttons">
|
||||
<button class="btn-black-pill">Explore Tokens</button>
|
||||
<button class="btn-gray-pill">View Source</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- COLORS -->
|
||||
<section class="section" id="colors">
|
||||
<div class="section-title">01 / Color Palette</div>
|
||||
<h2 class="section-heading">Grayscale Palette</h2>
|
||||
|
||||
<div class="color-group">
|
||||
<h3 class="color-group-title">Primary</h3>
|
||||
<div class="color-grid">
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #000000;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Pure Black</div>
|
||||
<div class="color-swatch-hex">#000000</div>
|
||||
<div class="color-swatch-role">Primary headlines, links, max emphasis</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #262626;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Near Black</div>
|
||||
<div class="color-swatch-hex">#262626</div>
|
||||
<div class="color-swatch-role">Button text on light surfaces</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #090909;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Darkest Surface</div>
|
||||
<div class="color-swatch-hex">#090909</div>
|
||||
<div class="color-swatch-role">Dark containers, footer background</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="color-group">
|
||||
<h3 class="color-group-title">Surface & Background</h3>
|
||||
<div class="color-grid">
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #ffffff; border-bottom: 1px solid #e5e5e5;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Pure White</div>
|
||||
<div class="color-swatch-hex">#ffffff</div>
|
||||
<div class="color-swatch-role">Page background, button surfaces</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #fafafa; border-bottom: 1px solid #e5e5e5;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Snow</div>
|
||||
<div class="color-swatch-hex">#fafafa</div>
|
||||
<div class="color-swatch-role">Subtle surface distinction, section bg</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #e5e5e5;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Light Gray</div>
|
||||
<div class="color-swatch-hex">#e5e5e5</div>
|
||||
<div class="color-swatch-role">Button backgrounds, borders, containment</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="color-group">
|
||||
<h3 class="color-group-title">Neutrals & Text</h3>
|
||||
<div class="color-grid">
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #737373;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Stone</div>
|
||||
<div class="color-swatch-hex">#737373</div>
|
||||
<div class="color-swatch-role">Secondary text, footer links, muted tone</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #525252;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Mid Gray</div>
|
||||
<div class="color-swatch-hex">#525252</div>
|
||||
<div class="color-swatch-role">Emphasized secondary text</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #a3a3a3;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Silver</div>
|
||||
<div class="color-swatch-hex">#a3a3a3</div>
|
||||
<div class="color-swatch-role">Tertiary text, placeholders, metadata</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #404040;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Button Text Dark</div>
|
||||
<div class="color-swatch-hex">#404040</div>
|
||||
<div class="color-swatch-role">White-surface button text</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #d4d4d4;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Border Light</div>
|
||||
<div class="color-swatch-hex">#d4d4d4</div>
|
||||
<div class="color-swatch-role">White-surface button borders</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- TYPOGRAPHY -->
|
||||
<section class="section" id="typography">
|
||||
<div class="section-title">02 / Typography Scale</div>
|
||||
<h2 class="section-heading">Typography Rules</h2>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-display); font-size: 48px; font-weight: 500; line-height: 1.0;">Display Hero</div>
|
||||
<div class="type-sample-label">Display / Hero — 48px / 500 / 1.00 — SF Pro Rounded (system-ui)</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-display); font-size: 36px; font-weight: 500; line-height: 1.11;">Section Heading</div>
|
||||
<div class="type-sample-label">Section Heading — 36px / 500 / 1.11 — SF Pro Rounded (system-ui)</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-display); font-size: 30px; font-weight: 500; line-height: 1.20;">Sub-heading</div>
|
||||
<div class="type-sample-label">Sub-heading — 30px / 500 / 1.20 — SF Pro Rounded (system-ui)</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-body); font-size: 24px; font-weight: 400; line-height: 1.33;">Card Title</div>
|
||||
<div class="type-sample-label">Card Title — 24px / 400 / 1.33 — ui-sans-serif</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-body); font-size: 18px; font-weight: 400; line-height: 1.56;">Body large text for hero descriptions and button labels. The system sans-serif handles all UI copy with clean precision.</div>
|
||||
<div class="type-sample-label">Body Large — 18px / 400 / 1.56 — ui-sans-serif</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-body); font-size: 16px; font-weight: 400; line-height: 1.50;">Standard body text for paragraphs, navigation links, and general content. Weight 400 only.</div>
|
||||
<div class="type-sample-label">Body / Link — 16px / 400 / 1.50 — ui-sans-serif</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-body); font-size: 14px; font-weight: 400; line-height: 1.43; color: var(--text-secondary);">Caption and metadata text for descriptions</div>
|
||||
<div class="type-sample-label">Caption — 14px / 400 / 1.43 — ui-sans-serif</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 16px; font-weight: 400; line-height: 1.50;">ollama run llama3.2</div>
|
||||
<div class="type-sample-label">Code Body — 16px / 400 / 1.50 — ui-monospace</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 14px; font-weight: 400; line-height: 1.43; color: var(--text-secondary);">ollama pull mistral</div>
|
||||
<div class="type-sample-label">Code Caption — 14px / 400 / 1.43 — ui-monospace</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 12px; font-weight: 400; line-height: 1.63; color: var(--text-muted);">v0.9.1 latest</div>
|
||||
<div class="type-sample-label">Code Small — 12px / 400 / 1.63 — ui-monospace</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- BUTTONS -->
|
||||
<section class="section" id="buttons">
|
||||
<div class="section-title">03 / Button Variants</div>
|
||||
<h2 class="section-heading">Buttons</h2>
|
||||
|
||||
<div class="button-row">
|
||||
<div class="button-demo">
|
||||
<button class="btn-gray-pill">Models</button>
|
||||
<div class="button-demo-label">Gray Pill (Primary)</div>
|
||||
</div>
|
||||
<div class="button-demo">
|
||||
<button class="btn-white-pill">Sign in</button>
|
||||
<div class="button-demo-label">White Pill (Secondary)</div>
|
||||
</div>
|
||||
<div class="button-demo">
|
||||
<button class="btn-black-pill">Download</button>
|
||||
<div class="button-demo-label">Black Pill (CTA)</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="code-block" style="margin-top: 40px;">
|
||||
<span class="prompt">$</span> ollama run llama3.2
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- CARDS -->
|
||||
<section class="section" id="cards">
|
||||
<div class="section-title">04 / Card Examples</div>
|
||||
<h2 class="section-heading">Cards & Containers</h2>
|
||||
|
||||
<div class="card-grid">
|
||||
<div class="card card-bordered">
|
||||
<div class="card-label">Standard Card</div>
|
||||
<h3>Bordered Container</h3>
|
||||
<p>Standard content card with 1px solid Light Gray border and 12px radius. The only container style in Ollama. Zero shadows.</p>
|
||||
</div>
|
||||
<div class="card card-snow">
|
||||
<div class="card-label">Snow Surface</div>
|
||||
<h3>Subtle Background</h3>
|
||||
<p>Card distinguished by Snow (#fafafa) background instead of borders. The lightest possible surface distinction from pure white.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- SPACING -->
|
||||
<section class="section" id="spacing">
|
||||
<div class="section-title">05 / Spacing Scale</div>
|
||||
<h2 class="section-heading">Spacing System</h2>
|
||||
<p style="color: var(--text-secondary); margin-bottom: 32px;">Base unit: 8px. Scale from 4px to 112px.</p>
|
||||
|
||||
<div class="spacing-row">
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 16px; height: 16px;"></div><div class="spacing-label">4px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 24px; height: 24px;"></div><div class="spacing-label">8px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 40px; height: 40px;"></div><div class="spacing-label">12px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 64px; height: 64px;"></div><div class="spacing-label">16px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 80px; height: 80px;"></div><div class="spacing-label">20px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 96px; height: 96px;"></div><div class="spacing-label">24px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 128px; height: 128px;"></div><div class="spacing-label">32px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 160px; height: 160px;"></div><div class="spacing-label">40px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 192px; height: 192px;"></div><div class="spacing-label">48px</div></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- BORDER RADIUS -->
|
||||
<section class="section">
|
||||
<div class="section-title">06 / Border Radius</div>
|
||||
<h2 class="section-heading">Binary Radius System</h2>
|
||||
<p style="color: var(--text-secondary); margin-bottom: 32px;">Only two values exist. No 4px, no 8px, no gradient of roundness. Containers or interactive -- nothing in between.</p>
|
||||
|
||||
<div class="radius-row">
|
||||
<div class="radius-item">
|
||||
<div class="radius-box" style="border-radius: 12px;"></div>
|
||||
<div class="radius-label">12px</div>
|
||||
<div class="radius-context">Containers</div>
|
||||
</div>
|
||||
<div class="radius-item">
|
||||
<div class="radius-box" style="border-radius: 9999px;"></div>
|
||||
<div class="radius-label">9999px</div>
|
||||
<div class="radius-context">Interactive / Pills</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- ELEVATION -->
|
||||
<section class="section" id="elevation">
|
||||
<div class="section-title">07 / Elevation & Depth</div>
|
||||
<h2 class="section-heading">Depth & Elevation</h2>
|
||||
<p style="color: var(--text-secondary); margin-bottom: 32px;">Zero shadows. Depth comes from background color shifts and single-pixel borders only.</p>
|
||||
|
||||
<div class="elevation-grid">
|
||||
<div class="elevation-card elevation-flat">
|
||||
<div>
|
||||
<div class="elevation-name">Flat</div>
|
||||
<div class="elevation-desc">No shadow, no border. Page background and inline content. The default state for most elements.</div>
|
||||
</div>
|
||||
<div class="elevation-level">Level 0</div>
|
||||
</div>
|
||||
<div class="elevation-card elevation-bordered">
|
||||
<div>
|
||||
<div class="elevation-name">Bordered</div>
|
||||
<div class="elevation-desc">1px solid Light Gray (#e5e5e5). Cards, code blocks, buttons. The only elevation that exists.</div>
|
||||
</div>
|
||||
<div class="elevation-level">Level 1</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div style="height: 80px;"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user