④段整套同步(六节 + P/S/F/J + 模板)+ open-design 移到技能根

一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
  · 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
    跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
  · 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
  · 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
    横向流程图每步写清页面/功能/操作/完成判据。
  · 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
  · 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
  · 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。

二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
  「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
  同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
  当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。

三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
This commit is contained in:
admin committed 2026-10-15 21:17:28 +08:00
1 parent fa0a9026c8
commit 5afeb6b78a
4184 files changed
+326 -70

No files matched your search

+201
View File
@@ -0,0 +1,201 @@
# Design System Inspired by Cisco
> Category: Backend & Data
> Enterprise infrastructure brand. Dark trust surfaces, Cisco Blue signal, technical clarity.
## 1. Visual Theme & Atmosphere
Cisco's current public web presence is enterprise infrastructure rendered with cinematic restraint. The canvas is dark but not pure black: layered navy-charcoal surfaces create depth without resorting to glossy startup gradients. Bright Cisco Blue is used as a precise signal color rather than a wash across the page. The overall impression is "serious global platform" rather than "friendly SaaS app" — large high-confidence headlines, quiet chrome, and product imagery that emphasizes scale, networking, observability, and resilience.
Typography is disciplined and corporate. Cisco's internal and presentation ecosystem points to `CiscoSansTT` as the preferred brand face, while the web experience remains compatible with modern grotesk fallbacks. Headings should feel concise and engineered. Body copy should read clearly and directly, not editorially. Geometrically, the system prefers soft pills for calls to action, rounded-but-not-playful cards, and glass-dark navigation shells floating over large atmospheric sections.
What makes Cisco distinct is the combination of **deep infrastructure darkness** with a **single electric trust signal**. Use blue for the moment that matters: primary action, focus, active tab, chart highlight, or key data edge. Let the rest of the interface stay disciplined.
**Key Characteristics:**
- Dark navy-charcoal surfaces instead of flat black
- Cisco Blue (`#049fd9`) as the primary signal color
- Restrained neutral system built from grays and pale technical whites
- Enterprise-scale headlines with compact, factual body copy
- Pill CTAs and rounded control shells, but never toy-like UI
- Product and platform imagery should suggest networks, telemetry, and systems at scale
- Motion should feel controlled and infrastructural, not playful
## 2. Color Palette & Roles
### Primary
- **Cisco Blue** (`#049fd9`): High-signal accent, outline CTA, active state, key link.
- **Status Blue** (`#64bbe3`): Focus halo, secondary emphasis, lightweight chart signal.
- **Cisco Indigo** (`#005073`): Filled primary CTA, dense accent, deeper data emphasis.
- **Dark Blue** (`#2b5592`): Secondary brand accent for graphics, charts, and layered blue compositions.
### Neutral / Surface
- **Dark Gray 1** (`#39393b`): Mid-dark container surface, panel base, dense modules.
- **Dark Gray 2** (`#58585b`): Borders, separators, secondary shells.
- **Medium Gray 2** (`#9e9ea2`): Muted labels and low-emphasis metadata.
- **Pale Gray 1** (`#e8ebf1`): Light text support, cool technical background tint, separators on dark.
- **Core White** (`#ffffff`): Primary inverse text, bright UI foreground, light surface content.
### Support
- **Sage Green** (`#abc233`): Positive outcome or infrastructure-health accent.
- **Status Green** (`#6cc04a`): Success state.
- **Status Yellow** (`#ffcc00`): Warning or caution state.
- **Status Orange** (`#ff7300`): Alert or escalation state.
- **Status Red** (`#cf2030`): Error or critical state.
### Recommended Surface Roles
- **Primary canvas**: a blue-black or charcoal blend built around `#0f1720` to `#1b2530` using the Cisco palette as anchor.
- **Elevated card**: Dark Gray 1 (`#39393b`) or a slightly bluer variant.
- **Border / outline**: Dark Gray 2 (`#58585b`) with subtle transparency when needed.
- **Primary text on dark**: Core White (`#ffffff`) or Pale Gray 1 (`#e8ebf1`).
## 3. Typography Rules
### Font Family
- **Primary**: `CiscoSansTT`, fallbacks: `Inter, Arial, Helvetica Neue, Helvetica, sans-serif`
- **Mono / Technical**: `IBM Plex Mono`, `SF Mono`, or `ui-monospace` if a code-supporting mono face is needed for metrics and IDs
### Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|------|------|------|--------|-------------|----------------|-------|
| Hero Display | CiscoSansTT | 72px | 500 | 1.05 | -1.6px | Large launch/positioning headline |
| Section Display | CiscoSansTT | 56px | 500 | 1.08 | -1.1px | Major section statement |
| Heading | CiscoSansTT | 32px | 500 | 1.20 | -0.4px | Feature title, card header |
| Subheading | CiscoSansTT | 24px | 500 | 1.30 | -0.2px | Supporting header |
| Body | CiscoSansTT | 16px | 400 | 1.55 | normal | Default body copy |
| Body Small | CiscoSansTT | 14px | 400 | 1.50 | normal | Metadata, nav, helper text |
| Label / Eyebrow | CiscoSansTT | 12px | 700 | 1.30 | 0.24px | Tags, overlines, section labels |
| Button | CiscoSansTT | 16px | 500 | 1.20 | normal | CTA labels |
### Principles
- Keep display typography decisive and compressed, but not ultra-light or editorial.
- Body copy should be practical and highly legible, with no clever type effects.
- Use bold weight mainly for short labels, status tags, and compact emphasis.
- Favor one-family coherence over showy font mixing.
## 4. Component Stylings
### Buttons
**Primary Action Pill**
- Background: Cisco Indigo (`#005073`)
- Text: White (`#ffffff`)
- Radius: full pill
- Padding: generous horizontal padding, medium vertical height
- Hover: Dark Blue (`#2b5592`)
- Active: a darker indigo tone around `#00364d`
- Focus ring: 2px outer halo in Status Blue (`#64bbe3`) with a 1px white inner keyline on dark surfaces
- Use case: high-priority submit, deploy, or "learn more" action on dark Cisco surfaces
**Signal Outline Pill**
- Background: transparent
- Text: Cisco Blue (`#049fd9`) on dark surfaces, Cisco Indigo (`#005073`) on light surfaces
- Border: 1.5px Cisco Blue (`#049fd9`)
- Radius: full pill
- Hover: blue-tinted surface fill with the text color preserved
- Focus ring: same visible halo pairing as the primary button
- Use case: brand-forward secondary action that keeps Cisco Blue prominent without sacrificing contrast
**Secondary Dark Pill**
- Background: transparent or dark surface
- Text: White or Pale Gray 1
- Border: Dark Gray 2 (`#58585b`)
- Radius: full pill
- Purpose: low-noise secondary CTA
### Cards & Containers
- Background: layered dark surface based on `#39393b` or a cooler navy-charcoal adaptation
- Border: 1px subtle border using `#58585b`
- Radius: 16px to 20px
- Shadow: minimal; depth should come mostly from surface contrast and spacing
### Navigation
- Dark glass-like masthead or shell over a dark hero
- Text: White / Pale Gray 1
- Active state: Cisco Blue underline, chip, or glow
- Navigation should feel like product chrome, not marketing candy
### Data / Product Modules
- Charts and diagrams should use Cisco Blue as primary highlight and keep supporting colors minimal
- Use green/yellow/red only for actual operational meaning
- Dense technical blocks should still preserve breathing room and hierarchy
### Brand-Specific Recipes
**Network Telemetry Card**
- Anatomy: eyebrow label, large metric, delta chip, 12-24h sparkline, quiet footer metadata
- Density: compact but not cramped; 16px-24px padding with clear alignment to chart axes
- States: normal, selected, degraded, critical, loading skeleton
- Brand behavior: use Cisco Blue for the selected edge or sparkline, and semantic colors only for health state
**Topology / Product Diagram Module**
- Anatomy: title, system canvas, node chips, connection lines, side legend
- Visual rule: dark field first, blue path highlight second, all other nodes muted until active
- States: idle overview, hovered path, selected node, degraded route
**Dense Control Panel**
- Anatomy: left nav rail, filter bar, split metric region, log/event table, contextual right rail
- Control sizing: compact 36px inputs are acceptable on desktop, but action buttons remain 44px minimum height
- States: quiet default, blue active filter, clear warning/error escalation
## 5. Layout Principles
### Spacing & Grid
- Base rhythm: 8px
- Common scale: 8px, 12px, 16px, 24px, 32px, 48px, 64px, 96px
- Prefer wide desktop containers and large sectional spacing
- 12-column desktop layout with generous gutters works well for the brand
- Breakpoints: mobile up to 767px, tablet 768px-1199px, desktop 1200px and above
### Composition
- Alternate expansive hero/outcome sections with denser information bands
- Use asymmetry where it serves product imagery or system diagrams
- Large dark fields with one blue focal point are more on-brand than many small colorful fragments
- On tablet, reduce wide split layouts to 2-column modules and keep telemetry cards in pairs
- On mobile, collapse hero side-by-sides to a single column, stack data panels vertically, and convert dense control rows into progressive disclosure panels
- Navigation should collapse from a full masthead to a compact menu button plus one primary CTA on tablet/mobile
### Accessibility & Responsiveness
- Minimum touch target: 44px by 44px for any tappable control
- Keyboard focus must remain visible on every interactive element via the blue outer halo plus white inner keyline pairing
- Do not rely on hover-only disclosure; show essential state and actions on focus and touch
- Preserve readable line lengths on desktop and avoid more than 3 cards per row on tablet or 1 card per row on small phones
## 6. Motion & Interaction
- Motion should be controlled, smooth, and systems-like
- Use fade, rise, subtle slide, and restrained glow
- Interaction timing: roughly 160ms–260ms for control response, 320ms–500ms for larger section reveals
- Avoid bouncy springs, elastic easing, or playful overshoot
- Respect `prefers-reduced-motion`: remove parallax and staged reveals, keep only instant state swaps or short opacity transitions under 120ms
## 7. Voice & Brand
- Voice is confident, technical, and outcome-oriented
- Headlines should sound like platform positioning or systems value, not consumer lifestyle copy
- Use language that suggests trust, resilience, infrastructure, AI readiness, and operational scale
- The brand should feel global, mission-critical, and composed under pressure
## 8. Anti-patterns
- Do not turn Cisco into a generic gradient startup site
- Do not flood the page with many equally loud accent colors
- Do not use pastel palettes or lifestyle-illustration aesthetics
- Do not use overly rounded, bubbly controls
- Do not rely on pure black alone; use layered charcoals and deep blue-blacks instead
- Do not make body copy feel whimsical, editorial, or ironic
## 9. Agent Prompt Guide
### Quick Color Reference
- Primary signal: Cisco Blue (`#049fd9`)
- Hover / secondary signal: Status Blue (`#64bbe3`)
- Deep accent: Cisco Indigo (`#005073`)
- Mid-dark surface: Dark Gray 1 (`#39393b`)
- Border: Dark Gray 2 (`#58585b`)
- Inverse text: White (`#ffffff`) or Pale Gray 1 (`#e8ebf1`)
### Example Component Prompts
- "Create a Cisco-style dark enterprise landing page with layered navy-charcoal surfaces, a bright Cisco Blue primary CTA, and a 72px high-confidence hero headline."
- "Design a technical dashboard card on a dark surface with a subtle gray border, white text, and Cisco Blue chart highlights."
- "Build a dark glass navigation bar with restrained white labels and one Cisco Blue active indicator."
+32
View File
@@ -0,0 +1,32 @@
# Cisco Usage
Design System 2.0 package guide for OpenDesign agents and reviewers.
## Read Order
1. Read this file first to understand the package contract.
2. Read `DESIGN.md` for visual intent, constraints, and anti-patterns.
3. Paste `tokens.css` into the first artifact `<style>` block before writing component CSS.
4. Use `components.manifest.json` for the compact component inventory; open `components.html` when exact selectors or states matter.
5. Inspect `preview/` pages when a visual sanity check is useful.
## Design Highlights
- Dark navy-charcoal surfaces instead of flat black
- Cisco Blue (`#049fd9`) as the primary signal color
- Restrained neutral system built from grays and pale technical whites
- Enterprise-scale headlines with compact, factual body copy
## Do
- Preserve the schema token names exactly so cross-brand switching stays reliable.
- Use `--accent` for primary actions, links, focus states, and one clear focal element.
- Reuse component groups from `components.manifest.json` before inventing new controls.
- Treat `source/` files as audit evidence for the bundled fixture backfill.
## Avoid
- Avoid raw hex values outside the copied `:root` token block.
- Avoid redefining Tailwind or design-token values independently of `tokens.css`.
- Avoid claiming original upstream source evidence; this package is based on the curated bundled fixture.
- Avoid adding new component recipes that are not represented in `components.html` or `DESIGN.md`.
@@ -0,0 +1,342 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - reference components</title>
<meta
name="description"
content="Reference fixture for design-systems/cisco: navy-charcoal infrastructure surfaces with one electric Cisco Blue signal."
/>
<style>
:root {
--bg: #0f1720;
--surface: #1b2530;
--surface-warm: #243447;
--fg: #ffffff;
--fg-2: #e8ebf1;
--muted: #9e9ea2;
--meta: #64bbe3;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--accent: #049fd9;
--accent-on: #001923;
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--success: #6cc04a;
--warn: #ffcc00;
--danger: #cf2030;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--text-xs: 12px;
--text-sm: 14px;
--text-base: 16px;
--text-lg: 18px;
--text-xl: 24px;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--leading-body: 1.55;
--leading-tight: 1.05;
--tracking-display: -0.02em;
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--space-12: 48px;
--section-y-desktop: 104px;
--section-y-tablet: 76px;
--section-y-phone: 52px;
--radius-sm: 12px;
--radius-md: 20px;
--radius-lg: 28px;
--radius-pill: 9999px;
--elev-flat: none;
--elev-ring: 0 0 0 1px var(--border);
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--motion-fast: 160ms;
--motion-base: 240ms;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--container-max: 1240px;
--container-gutter-desktop: 40px;
--container-gutter-tablet: 28px;
--container-gutter-phone: 20px;
}
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
min-height: 100vh;
background: var(--bg);
color: var(--fg);
font-family: var(--font-body);
font-size: var(--text-base);
line-height: var(--leading-body);
-webkit-font-smoothing: antialiased;
}
.page {
min-height: 100vh;
background: radial-gradient(circle at 80% 15%, rgba(4, 159, 217, 0.28), transparent 34%), linear-gradient(135deg, #0f1720 0%, #1b2530 100%);
}
.container {
max-width: var(--container-max);
margin-inline: auto;
padding-inline: var(--container-gutter-desktop);
}
section { padding-block: var(--section-y-desktop); }
@media (max-width: 1023px) {
.container { padding-inline: var(--container-gutter-tablet); }
section { padding-block: var(--section-y-tablet); }
}
@media (max-width: 639px) {
.container { padding-inline: var(--container-gutter-phone); }
section { padding-block: var(--section-y-phone); }
}
h1, h2, h3, p { margin: 0; }
h1, h2, h3 {
font-family: var(--font-display);
line-height: var(--leading-tight);
letter-spacing: var(--tracking-display);
}
h1 { max-width: 820px; font-size: var(--text-4xl); font-weight: 700; }
h2 { font-size: var(--text-3xl); font-weight: 650; }
h3 { font-size: var(--text-xl); font-weight: 650; }
.eyebrow {
color: var(--meta);
font-family: var(--font-mono);
font-size: var(--text-xs);
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
}
.lead {
max-width: 620px;
color: var(--fg-2);
font-size: var(--text-lg);
}
.hero {
display: grid;
grid-template-columns: minmax(0, 1.1fr) minmax(320px, 0.9fr);
gap: var(--space-8);
align-items: center;
}
.stack > * + * { margin-block-start: var(--space-4); }
.actions {
display: flex;
flex-wrap: wrap;
gap: var(--space-3);
margin-block-start: var(--space-6);
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 44px;
padding: 0 var(--space-5);
border: 1px solid transparent;
border-radius: var(--radius-md);
font: 700 var(--text-sm) / 1 var(--font-body);
text-decoration: none;
cursor: pointer;
transition:
background-color var(--motion-fast) var(--ease-standard),
border-color var(--motion-fast) var(--ease-standard),
color var(--motion-fast) var(--ease-standard),
transform var(--motion-fast) var(--ease-standard),
box-shadow var(--motion-fast) var(--ease-standard);
}
.btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.btn-primary { background: var(--accent); color: var(--accent-on); }
.btn-primary:hover { background: var(--accent-hover); transform: translateY(-1px); }
.btn-secondary { background: var(--surface); color: var(--fg); border-color: var(--border); box-shadow: var(--elev-ring); }
.btn-secondary:hover { border-color: var(--accent); color: var(--accent); }
.panel {
background: color-mix(in oklab, var(--surface), transparent 4%);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: var(--elev-raised);
overflow: hidden;
}
.panel-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-4);
padding: var(--space-5);
border-bottom: 1px solid var(--border-soft);
}
.status {
display: inline-flex;
align-items: center;
gap: var(--space-2);
color: var(--meta);
font: 700 var(--text-xs) / 1 var(--font-mono);
text-transform: uppercase;
letter-spacing: 0.08em;
}
.status::before {
width: 8px;
height: 8px;
border-radius: var(--radius-pill);
background: var(--success);
content: "";
}
.metric-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
border-bottom: 1px solid var(--border-soft);
}
.metric {
padding: var(--space-5);
border-right: 1px solid var(--border-soft);
}
.metric:last-child { border-right: 0; }
.metric strong {
display: block;
font-family: var(--font-display);
font-size: var(--text-2xl);
line-height: var(--leading-tight);
}
.metric span { color: var(--muted); font-size: var(--text-sm); }
.card-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: var(--space-4);
padding: var(--space-5);
}
.mini-card {
min-height: 148px;
padding: var(--space-5);
border: 1px solid var(--border-soft);
border-radius: var(--radius-md);
background: var(--surface-warm);
}
.mini-card p { color: var(--muted); font-size: var(--text-sm); margin-block-start: var(--space-3); }
.swatches {
display: flex;
gap: var(--space-2);
margin-block-start: var(--space-4);
}
.swatch {
width: 32px;
height: 32px;
border-radius: var(--radius-sm);
border: 1px solid var(--border);
}
.swatch.accent { background: var(--accent); }
.swatch.surface { background: var(--surface); }
.swatch.warm { background: var(--surface-warm); }
.swatch.fg { background: var(--fg); }
.field {
display: grid;
gap: var(--space-2);
margin-block-start: var(--space-5);
}
label { color: var(--fg-2); font-size: var(--text-sm); font-weight: 700; }
input {
width: 100%;
min-height: 46px;
padding: 0 var(--space-4);
border: 1px solid var(--border);
border-radius: var(--radius-sm);
background: var(--surface);
color: var(--fg);
font: inherit;
}
input:focus { outline: none; box-shadow: var(--focus-ring); border-color: var(--accent); }
.lower {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: var(--space-4);
}
.tile {
padding: var(--space-5);
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--surface);
}
.tile p { color: var(--muted); font-size: var(--text-sm); margin-block-start: var(--space-3); }
@media (max-width: 860px) {
.hero, .lower { grid-template-columns: 1fr; }
.metric-grid, .card-row { grid-template-columns: 1fr; }
.metric { border-right: 0; border-bottom: 1px solid var(--border-soft); }
.metric:last-child { border-bottom: 0; }
}
</style>
</head>
<body>
<main class="page">
<section>
<div class="container hero">
<div class="stack">
<p class="eyebrow">Cisco design system</p>
<h1>Infrastructure operations</h1>
<p class="lead">Network telemetry, trust signals, and calm enterprise scale.</p>
<div class="actions" aria-label="Reference actions">
<a class="btn btn-primary" href="#">Primary rounded trust pill</a>
<a class="btn btn-secondary" href="#">Secondary action</a>
</div>
</div>
<article class="panel" aria-label="Cisco component preview">
<div class="panel-head">
<div>
<p class="eyebrow">Live module</p>
<h3>dark telemetry panel</h3>
</div>
<span class="status">online</span>
</div>
<div class="metric-grid">
<div class="metric"><strong>98%</strong><span>Signal quality</span></div>
<div class="metric"><strong>24</strong><span>Active flows</span></div>
<div class="metric"><strong>3.2s</strong><span>Response time</span></div>
</div>
<div class="card-row">
<div class="mini-card">
<h3>Palette</h3>
<p>navy-charcoal infrastructure surfaces with one electric Cisco Blue signal.</p>
<div class="swatches" aria-label="Token swatches">
<span class="swatch accent"></span>
<span class="swatch surface"></span>
<span class="swatch warm"></span>
<span class="swatch fg"></span>
</div>
</div>
<div class="mini-card">
<h3>Control</h3>
<p>Focus, hover, and status states share the same brand signal.</p>
<div class="field">
<label for="cisco-input">Reference input</label>
<input id="cisco-input" value="Cisco system token" />
</div>
</div>
</div>
</article>
</div>
</section>
<section>
<div class="container lower">
<article class="tile">
<p class="eyebrow">Typography</p>
<h2>Display rhythm</h2>
<p>Headlines use the brand display stack with the declared scale and leading.</p>
</article>
<article class="tile">
<p class="eyebrow">Surface</p>
<h2>Layer system</h2>
<p>Cards, warm panels, borders, and raised states resolve through shared tokens.</p>
</article>
<article class="tile">
<p class="eyebrow">Interaction</p>
<h2>Motion states</h2>
<p>Buttons, inputs, and panels use brand-specific focus rings and easing.</p>
</article>
</div>
</section>
</main>
</body>
</html>
@@ -0,0 +1,421 @@
{
"schemaVersion": 1,
"brandId": "cisco",
"source": {
"componentsHtml": "components.html",
"tokensCss": "tokens.css"
},
"fixture": {
"title": "Cisco - reference components",
"description": "Reference fixture for design-systems/cisco: navy-charcoal infrastructure surfaces with one electric Cisco Blue signal.",
"styleBlockCount": 1,
"selectorCount": 48,
"classCount": 26,
"elementCount": 19
},
"tokens": {
"declared": [
"--accent",
"--accent-active",
"--accent-hover",
"--accent-on",
"--bg",
"--border",
"--border-soft",
"--container-gutter-desktop",
"--container-gutter-phone",
"--container-gutter-tablet",
"--container-max",
"--danger",
"--ease-standard",
"--elev-flat",
"--elev-raised",
"--elev-ring",
"--fg",
"--fg-2",
"--focus-ring",
"--font-body",
"--font-display",
"--font-mono",
"--leading-body",
"--leading-tight",
"--meta",
"--motion-base",
"--motion-fast",
"--muted",
"--radius-lg",
"--radius-md",
"--radius-pill",
"--radius-sm",
"--section-y-desktop",
"--section-y-phone",
"--section-y-tablet",
"--space-1",
"--space-12",
"--space-2",
"--space-3",
"--space-4",
"--space-5",
"--space-6",
"--space-8",
"--success",
"--surface",
"--surface-warm",
"--text-2xl",
"--text-3xl",
"--text-4xl",
"--text-base",
"--text-lg",
"--text-sm",
"--text-xl",
"--text-xs",
"--tracking-display",
"--warn"
],
"referenced": [
"--accent",
"--accent-hover",
"--accent-on",
"--bg",
"--border",
"--border-soft",
"--container-gutter-desktop",
"--container-gutter-phone",
"--container-gutter-tablet",
"--container-max",
"--ease-standard",
"--elev-raised",
"--elev-ring",
"--fg",
"--fg-2",
"--focus-ring",
"--font-body",
"--font-display",
"--font-mono",
"--leading-body",
"--leading-tight",
"--meta",
"--motion-fast",
"--muted",
"--radius-lg",
"--radius-md",
"--radius-pill",
"--radius-sm",
"--section-y-desktop",
"--section-y-phone",
"--section-y-tablet",
"--space-2",
"--space-3",
"--space-4",
"--space-5",
"--space-6",
"--space-8",
"--success",
"--surface",
"--surface-warm",
"--text-2xl",
"--text-3xl",
"--text-4xl",
"--text-base",
"--text-lg",
"--text-sm",
"--text-xl",
"--text-xs",
"--tracking-display"
],
"unusedDeclared": [
"--accent-active",
"--danger",
"--elev-flat",
"--motion-base",
"--space-1",
"--space-12",
"--warn"
],
"undeclaredReferenced": []
},
"selectors": [
".actions",
".btn",
".btn-primary",
".btn-primary:hover",
".btn-secondary",
".btn-secondary:hover",
".btn:focus-visible",
".card-row",
".container",
".eyebrow",
".field",
".hero",
".lead",
".lower",
".metric",
".metric span",
".metric strong",
".metric-grid",
".metric:last-child",
".mini-card",
".mini-card p",
".page",
".panel",
".panel-head",
".stack > * + *",
".status",
".status::before",
".swatch",
".swatch.accent",
".swatch.fg",
".swatch.surface",
".swatch.warm",
".swatches",
".tile",
".tile p",
"*",
"*::after",
"*::before",
"body",
"h1",
"h2",
"h3",
"html",
"input",
"input:focus",
"label",
"p",
"section"
],
"classes": [
"accent",
"actions",
"btn",
"btn-primary",
"btn-secondary",
"card-row",
"container",
"eyebrow",
"fg",
"field",
"hero",
"lead",
"lower",
"metric",
"metric-grid",
"mini-card",
"page",
"panel",
"panel-head",
"stack",
"status",
"surface",
"swatch",
"swatches",
"tile",
"warm"
],
"elements": [
"a",
"article",
"body",
"div",
"h1",
"h2",
"h3",
"head",
"html",
"input",
"label",
"main",
"meta",
"p",
"section",
"span",
"strong",
"style",
"title"
],
"groups": [
{
"id": "buttons",
"label": "Buttons and calls to action",
"present": true,
"selectors": [
".btn",
".btn-primary",
".btn-primary:hover",
".btn-secondary",
".btn-secondary:hover",
".btn:focus-visible"
],
"classes": [
"btn",
"btn-primary",
"btn-secondary"
],
"elements": [],
"tokenReferences": [
"--accent",
"--accent-on",
"--border",
"--ease-standard",
"--elev-ring",
"--fg",
"--font-body",
"--motion-fast",
"--radius-md",
"--space-5",
"--surface",
"--text-sm"
]
},
{
"id": "inputs",
"label": "Form fields and controls",
"present": true,
"selectors": [
".field",
"input",
"input:focus",
"label"
],
"classes": [
"field"
],
"elements": [
"input",
"label"
],
"tokenReferences": [
"--border",
"--fg",
"--radius-sm",
"--space-2",
"--space-4",
"--space-5",
"--surface"
]
},
{
"id": "cards",
"label": "Cards and panels",
"present": true,
"selectors": [
".card-row",
".panel",
".panel-head",
".tile",
".tile p"
],
"classes": [
"card-row",
"panel",
"panel-head",
"tile"
],
"elements": [],
"tokenReferences": [
"--border",
"--elev-raised",
"--muted",
"--radius-lg",
"--space-3",
"--surface",
"--text-sm"
]
},
{
"id": "badges",
"label": "Badges, chips, and status labels",
"present": true,
"selectors": [],
"classes": [
"status"
],
"elements": [],
"tokenReferences": []
},
{
"id": "links",
"label": "Links and inline actions",
"present": true,
"selectors": [],
"classes": [],
"elements": [
"a"
],
"tokenReferences": []
},
{
"id": "keyboard",
"label": "Keyboard hints",
"present": false,
"selectors": [],
"classes": [],
"elements": [],
"tokenReferences": []
},
{
"id": "icons",
"label": "Icon slots",
"present": false,
"selectors": [],
"classes": [],
"elements": [],
"tokenReferences": []
},
{
"id": "typography",
"label": "Typography scale and text utilities",
"present": true,
"selectors": [
".eyebrow",
".lead",
"h1",
"h2",
"h3"
],
"classes": [
"eyebrow",
"lead"
],
"elements": [
"h1",
"h2",
"h3",
"p"
],
"tokenReferences": [
"--fg-2",
"--text-4xl",
"--text-lg",
"--text-xl"
]
},
{
"id": "layout",
"label": "Layout primitives",
"present": true,
"selectors": [
".container",
"section"
],
"classes": [
"container",
"metric-grid"
],
"elements": [
"main",
"section"
],
"tokenReferences": [
"--container-gutter-phone",
"--container-gutter-tablet",
"--section-y-desktop"
]
}
],
"literals": {
"colorExpressions": 4,
"pixelValues": 24,
"hardcodedFontFamilies": 4
}
}
@@ -0,0 +1,701 @@
{
"schemaVersion": 1,
"format": "od-design-tokens/v1",
"contract": "TOKEN_SCHEMA",
"generatedAt": "2026-06-06T00:00:00.000Z",
"source": {
"tokensCss": "tokens.css",
"tokenContractReport": "source/token-contract.report.json"
},
"summary": {
"totalTokens": 56,
"declaredTokens": 56,
"sourceBackedTokens": 56,
"sourceBackedA1": 26,
"fallbackTokens": 26,
"aliasTokens": 0,
"layerCounts": {
"A1-identity": 8,
"B-slot": 4,
"A2": 26,
"A1-structure": 18
},
"score": 100,
"grade": "excellent",
"recommendRebuild": false
},
"tokens": [
{
"name": "--bg",
"value": "#0f1720",
"type": "color",
"layer": "A1-identity",
"confidence": "high",
"reason": "Bundled tokens.css declares --bg; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:8"
],
"sourceName": "--bg"
},
{
"name": "--surface",
"value": "#1b2530",
"type": "color",
"layer": "A1-identity",
"confidence": "high",
"reason": "Bundled tokens.css declares --surface; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:9"
],
"sourceName": "--surface"
},
{
"name": "--surface-warm",
"value": "#243447",
"type": "color",
"layer": "B-slot",
"confidence": "high",
"reason": "Bundled tokens.css declares --surface-warm; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:10"
],
"sourceName": "--surface-warm"
},
{
"name": "--fg",
"value": "#ffffff",
"type": "color",
"layer": "A1-identity",
"confidence": "high",
"reason": "Bundled tokens.css declares --fg; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:11"
],
"sourceName": "--fg"
},
{
"name": "--fg-2",
"value": "#e8ebf1",
"type": "color",
"layer": "B-slot",
"confidence": "high",
"reason": "Bundled tokens.css declares --fg-2; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:12"
],
"sourceName": "--fg-2"
},
{
"name": "--muted",
"value": "#9e9ea2",
"type": "color",
"layer": "A1-identity",
"confidence": "high",
"reason": "Bundled tokens.css declares --muted; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:13"
],
"sourceName": "--muted"
},
{
"name": "--meta",
"value": "#64bbe3",
"type": "color",
"layer": "B-slot",
"confidence": "high",
"reason": "Bundled tokens.css declares --meta; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:14"
],
"sourceName": "--meta"
},
{
"name": "--border",
"value": "#58585b",
"type": "color",
"layer": "A1-identity",
"confidence": "high",
"reason": "Bundled tokens.css declares --border; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:15"
],
"sourceName": "--border"
},
{
"name": "--border-soft",
"value": "rgba(232, 235, 241, 0.14)",
"type": "color",
"layer": "B-slot",
"confidence": "high",
"reason": "Bundled tokens.css declares --border-soft; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:16"
],
"sourceName": "--border-soft"
},
{
"name": "--accent",
"value": "#049fd9",
"type": "color",
"layer": "A1-identity",
"confidence": "high",
"reason": "Bundled tokens.css declares --accent; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:17"
],
"sourceName": "--accent"
},
{
"name": "--accent-on",
"value": "#001923",
"type": "color",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --accent-on; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:18"
],
"sourceName": "--accent-on"
},
{
"name": "--accent-hover",
"value": "color-mix(in oklab, var(--accent), black 8%)",
"type": "color",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --accent-hover; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:19"
],
"sourceName": "--accent-hover"
},
{
"name": "--accent-active",
"value": "color-mix(in oklab, var(--accent), black 14%)",
"type": "color",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --accent-active; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:20"
],
"sourceName": "--accent-active"
},
{
"name": "--success",
"value": "#6cc04a",
"type": "color",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --success; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:21"
],
"sourceName": "--success"
},
{
"name": "--warn",
"value": "#ffcc00",
"type": "color",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --warn; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:22"
],
"sourceName": "--warn"
},
{
"name": "--danger",
"value": "#cf2030",
"type": "color",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --danger; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:23"
],
"sourceName": "--danger"
},
{
"name": "--font-display",
"value": "\"CiscoSansTT\", Inter, Arial, sans-serif",
"type": "fontFamily",
"layer": "A1-identity",
"confidence": "high",
"reason": "Bundled tokens.css declares --font-display; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:24"
],
"sourceName": "--font-display"
},
{
"name": "--font-body",
"value": "\"CiscoSansTT\", Inter, Arial, sans-serif",
"type": "fontFamily",
"layer": "A1-identity",
"confidence": "high",
"reason": "Bundled tokens.css declares --font-body; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:25"
],
"sourceName": "--font-body"
},
{
"name": "--font-mono",
"value": "\"IBM Plex Mono\", ui-monospace, Menlo, monospace",
"type": "fontFamily",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --font-mono; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:26"
],
"sourceName": "--font-mono"
},
{
"name": "--text-xs",
"value": "12px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-xs; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:27"
],
"sourceName": "--text-xs"
},
{
"name": "--text-sm",
"value": "14px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-sm; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:28"
],
"sourceName": "--text-sm"
},
{
"name": "--text-base",
"value": "16px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-base; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:29"
],
"sourceName": "--text-base"
},
{
"name": "--text-lg",
"value": "18px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-lg; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:30"
],
"sourceName": "--text-lg"
},
{
"name": "--text-xl",
"value": "24px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-xl; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:31"
],
"sourceName": "--text-xl"
},
{
"name": "--text-2xl",
"value": "32px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-2xl; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:32"
],
"sourceName": "--text-2xl"
},
{
"name": "--text-3xl",
"value": "56px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-3xl; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:33"
],
"sourceName": "--text-3xl"
},
{
"name": "--text-4xl",
"value": "72px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-4xl; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:34"
],
"sourceName": "--text-4xl"
},
{
"name": "--leading-body",
"value": "1.55",
"type": "number",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --leading-body; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:35"
],
"sourceName": "--leading-body"
},
{
"name": "--leading-tight",
"value": "1.05",
"type": "number",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --leading-tight; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:36"
],
"sourceName": "--leading-tight"
},
{
"name": "--tracking-display",
"value": "-0.02em",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --tracking-display; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:37"
],
"sourceName": "--tracking-display"
},
{
"name": "--space-1",
"value": "4px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-1; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:38"
],
"sourceName": "--space-1"
},
{
"name": "--space-2",
"value": "8px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-2; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:39"
],
"sourceName": "--space-2"
},
{
"name": "--space-3",
"value": "12px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-3; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:40"
],
"sourceName": "--space-3"
},
{
"name": "--space-4",
"value": "16px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-4; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:41"
],
"sourceName": "--space-4"
},
{
"name": "--space-5",
"value": "20px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-5; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:42"
],
"sourceName": "--space-5"
},
{
"name": "--space-6",
"value": "24px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-6; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:43"
],
"sourceName": "--space-6"
},
{
"name": "--space-8",
"value": "32px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-8; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:44"
],
"sourceName": "--space-8"
},
{
"name": "--space-12",
"value": "48px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-12; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:45"
],
"sourceName": "--space-12"
},
{
"name": "--section-y-desktop",
"value": "104px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --section-y-desktop; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:46"
],
"sourceName": "--section-y-desktop"
},
{
"name": "--section-y-tablet",
"value": "76px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --section-y-tablet; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:47"
],
"sourceName": "--section-y-tablet"
},
{
"name": "--section-y-phone",
"value": "52px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --section-y-phone; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:48"
],
"sourceName": "--section-y-phone"
},
{
"name": "--radius-sm",
"value": "12px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --radius-sm; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:49"
],
"sourceName": "--radius-sm"
},
{
"name": "--radius-md",
"value": "20px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --radius-md; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:50"
],
"sourceName": "--radius-md"
},
{
"name": "--radius-lg",
"value": "28px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --radius-lg; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:51"
],
"sourceName": "--radius-lg"
},
{
"name": "--radius-pill",
"value": "9999px",
"type": "dimension",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --radius-pill; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:52"
],
"sourceName": "--radius-pill"
},
{
"name": "--elev-flat",
"value": "none",
"type": "shadow",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --elev-flat; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:53"
],
"sourceName": "--elev-flat"
},
{
"name": "--elev-ring",
"value": "0 0 0 1px var(--border)",
"type": "shadow",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --elev-ring; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:54"
],
"sourceName": "--elev-ring"
},
{
"name": "--elev-raised",
"value": "0 24px 80px rgba(0, 0, 0, 0.32)",
"type": "shadow",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --elev-raised; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:55"
],
"sourceName": "--elev-raised"
},
{
"name": "--focus-ring",
"value": "0 0 0 4px rgba(100, 187, 227, 0.32)",
"type": "shadow",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --focus-ring; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:56"
],
"sourceName": "--focus-ring"
},
{
"name": "--motion-fast",
"value": "160ms",
"type": "duration",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --motion-fast; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:57"
],
"sourceName": "--motion-fast"
},
{
"name": "--motion-base",
"value": "240ms",
"type": "duration",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --motion-base; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:58"
],
"sourceName": "--motion-base"
},
{
"name": "--ease-standard",
"value": "cubic-bezier(0.2, 0, 0, 1)",
"type": "cubicBezier",
"layer": "A2",
"confidence": "high",
"reason": "Bundled tokens.css declares --ease-standard; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:59"
],
"sourceName": "--ease-standard"
},
{
"name": "--container-max",
"value": "1240px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --container-max; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:60"
],
"sourceName": "--container-max"
},
{
"name": "--container-gutter-desktop",
"value": "40px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --container-gutter-desktop; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:61"
],
"sourceName": "--container-gutter-desktop"
},
{
"name": "--container-gutter-tablet",
"value": "28px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --container-gutter-tablet; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:62"
],
"sourceName": "--container-gutter-tablet"
},
{
"name": "--container-gutter-phone",
"value": "20px",
"type": "dimension",
"layer": "A1-structure",
"confidence": "high",
"reason": "Bundled tokens.css declares --container-gutter-phone; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:63"
],
"sourceName": "--container-gutter-phone"
}
]
}
@@ -0,0 +1,54 @@
{
"schemaVersion": "od-design-system-project/v1",
"id": "cisco",
"name": "Cisco",
"category": "Backend & Data",
"description": "Bundled OpenDesign package for Cisco, derived from curated DESIGN.md, tokens.css, and components.html fixtures.",
"source": {
"type": "bundled",
"origin": "OpenDesign curated bundled fixture"
},
"files": {
"design": "DESIGN.md",
"tokens": "tokens.css",
"designTokens": "design-tokens.json",
"tailwind": "tailwind-v4.css",
"components": "components.html"
},
"usage": "USAGE.md",
"componentsManifest": "components.manifest.json",
"importMode": "normalized",
"craft": {
"applies": [],
"suggested": [
"color",
"accessibility-baseline"
],
"exemptions": []
},
"preview": {
"dir": "preview",
"pages": [
{
"path": "preview/colors.html",
"role": "colors",
"title": "Colors"
},
{
"path": "preview/typography.html",
"role": "typography",
"title": "Typography"
},
{
"path": "preview/spacing.html",
"role": "spacing",
"title": "Spacing"
}
]
},
"sourceFiles": {
"evidence": "source/evidence.md",
"tokens": "source/tokens.source.json",
"report": "source/token-contract.report.json"
}
}
@@ -0,0 +1,39 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco colors</title>
<link rel="stylesheet" href="../tokens.css" />
<style>
body { margin: 0; background: var(--bg); color: var(--fg); font-family: var(--font-body); }
main { max-width: var(--container-max); margin: 0 auto; padding: var(--space-12) var(--space-6); }
h1 { margin: 0 0 var(--space-6); font-family: var(--font-display); font-size: var(--text-2xl); line-height: var(--leading-tight); letter-spacing: var(--tracking-display); }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--space-4); }
.swatch { border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); overflow: hidden; box-shadow: var(--elev-ring); }
.color { height: 88px; background: var(--value); }
.meta { padding: var(--space-3); color: var(--muted); font-size: var(--text-sm); }
strong { display: block; margin-bottom: var(--space-1); color: var(--fg); }
</style>
</head>
<body>
<main>
<h1>Color roles</h1>
<section class="grid">
<article class="swatch" style="--value: var(--bg)"><div class="color"></div><div class="meta"><strong>Background</strong>--bg</div></article>
<article class="swatch" style="--value: var(--surface)"><div class="color"></div><div class="meta"><strong>Surface</strong>--surface</div></article>
<article class="swatch" style="--value: var(--fg)"><div class="color"></div><div class="meta"><strong>Foreground</strong>--fg</div></article>
<article class="swatch" style="--value: var(--muted)"><div class="color"></div><div class="meta"><strong>Muted</strong>--muted</div></article>
<article class="swatch" style="--value: var(--border)"><div class="color"></div><div class="meta"><strong>Border</strong>--border</div></article>
<article class="swatch" style="--value: var(--accent)"><div class="color"></div><div class="meta"><strong>Accent</strong>--accent</div></article>
<article class="swatch" style="--value: var(--success)"><div class="color"></div><div class="meta"><strong>Success</strong>--success</div></article>
<article class="swatch" style="--value: var(--warn)"><div class="color"></div><div class="meta"><strong>Warning</strong>--warn</div></article>
<article class="swatch" style="--value: var(--danger)"><div class="color"></div><div class="meta"><strong>Danger</strong>--danger</div></article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,41 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco spacing</title>
<link rel="stylesheet" href="../tokens.css" />
<style>
body { margin: 0; background: var(--bg); color: var(--fg); font-family: var(--font-body); }
main { max-width: var(--container-max); margin: 0 auto; padding: var(--space-12) var(--space-6); }
h1 { margin: 0 0 var(--space-6); font-family: var(--font-display); font-size: var(--text-2xl); line-height: var(--leading-tight); letter-spacing: var(--tracking-display); }
.stack { display: grid; gap: var(--space-3); margin-bottom: var(--space-8); }
.row { display: grid; grid-template-columns: 120px 1fr; align-items: center; gap: var(--space-4); color: var(--muted); font-size: var(--text-sm); }
.bar { height: var(--space-4); min-width: 2px; background: var(--accent); }
.radii { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--space-4); }
.radii article { min-height: 88px; display: grid; place-items: center; border: 1px solid var(--border); background: var(--surface); color: var(--fg-2); font-size: var(--text-sm); box-shadow: var(--elev-ring); }
</style>
</head>
<body>
<main>
<h1>Spacing and radius</h1>
<section class="stack">
<div class="row"><span>--space-2</span><div class="bar" style="width: var(--space-2)"></div></div>
<div class="row"><span>--space-4</span><div class="bar" style="width: var(--space-4)"></div></div>
<div class="row"><span>--space-6</span><div class="bar" style="width: var(--space-6)"></div></div>
<div class="row"><span>--space-8</span><div class="bar" style="width: var(--space-8)"></div></div>
<div class="row"><span>--space-12</span><div class="bar" style="width: var(--space-12)"></div></div>
</section>
<section class="radii">
<article style="border-radius: var(--radius-sm)">--radius-sm</article>
<article style="border-radius: var(--radius-md)">--radius-md</article>
<article style="border-radius: var(--radius-lg)">--radius-lg</article>
<article style="border-radius: var(--radius-pill)">--radius-pill</article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,34 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco typography</title>
<link rel="stylesheet" href="../tokens.css" />
<style>
body { margin: 0; background: var(--bg); color: var(--fg); font-family: var(--font-body); }
main { max-width: var(--container-max); margin: 0 auto; padding: var(--space-12) var(--space-6); }
h1 { margin: 0 0 var(--space-6); font-family: var(--font-display); font-size: var(--text-2xl); line-height: var(--leading-tight); letter-spacing: var(--tracking-display); }
.type-stack { display: grid; gap: var(--space-4); max-width: 760px; }
.eyebrow { margin: 0; color: var(--accent); font-size: var(--text-xs); letter-spacing: var(--tracking-display); text-transform: uppercase; }
h2 { margin: 0; font-family: var(--font-display); font-size: var(--text-4xl); line-height: var(--leading-tight); letter-spacing: var(--tracking-display); }
.lede { margin: 0; color: var(--fg-2); font-size: var(--text-lg); line-height: var(--leading-body); }
.body { margin: 0; color: var(--muted); font-size: var(--text-base); line-height: var(--leading-body); }
</style>
</head>
<body>
<main>
<h1>Typography</h1>
<section class="type-stack">
<p class="eyebrow">Backend & Data</p>
<h2>Display sample for Cisco</h2>
<p class="lede">Body rhythm, heading scale, and muted metadata all resolve through the committed token contract.</p>
<p class="body">The preview intentionally uses only schema tokens so reviewers can confirm the package remains portable across OpenDesign artifacts.</p>
</section>
</main>
</body>
</html>
@@ -0,0 +1,17 @@
# Cisco Source Evidence
## Source Scope
This Design System 2.0 backfill is derived from the curated OpenDesign bundled fixture.
It does not claim a fresh crawl of the original upstream brand repository or website.
## Included Fixture Files
- design-systems/cisco/DESIGN.md
- design-systems/cisco/tokens.css
- design-systems/cisco/components.html
## Token Contract
`source/token-contract.report.json` maps every TOKEN_SCHEMA binding back to the committed `tokens.css` declaration line.
`design-tokens.json` and `tailwind-v4.css` are derived outputs and should be regenerated from the report and token stylesheet rather than edited by hand.
@@ -0,0 +1,641 @@
{
"schemaVersion": 1,
"contract": "TOKEN_SCHEMA",
"generatedAt": "2026-06-06T00:00:00.000Z",
"sourceScope": "open-design-bundled-fixture",
"summary": {
"totalTokens": 56,
"declaredTokens": 56,
"sourceBackedTokens": 56,
"sourceBackedA1": 26,
"fallbackTokens": 26,
"aliasTokens": 0,
"layerCounts": {
"A1-identity": 8,
"B-slot": 4,
"A2": 26,
"A1-structure": 18
},
"score": 100,
"grade": "excellent",
"recommendRebuild": false
},
"tokens": [
{
"name": "--bg",
"layer": "A1-identity",
"value": "#0f1720",
"confidence": "high",
"reason": "Bundled tokens.css declares --bg; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:8"
],
"sourceName": "--bg"
},
{
"name": "--surface",
"layer": "A1-identity",
"value": "#1b2530",
"confidence": "high",
"reason": "Bundled tokens.css declares --surface; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:9"
],
"sourceName": "--surface"
},
{
"name": "--surface-warm",
"layer": "B-slot",
"value": "#243447",
"confidence": "high",
"reason": "Bundled tokens.css declares --surface-warm; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:10"
],
"sourceName": "--surface-warm"
},
{
"name": "--fg",
"layer": "A1-identity",
"value": "#ffffff",
"confidence": "high",
"reason": "Bundled tokens.css declares --fg; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:11"
],
"sourceName": "--fg"
},
{
"name": "--fg-2",
"layer": "B-slot",
"value": "#e8ebf1",
"confidence": "high",
"reason": "Bundled tokens.css declares --fg-2; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:12"
],
"sourceName": "--fg-2"
},
{
"name": "--muted",
"layer": "A1-identity",
"value": "#9e9ea2",
"confidence": "high",
"reason": "Bundled tokens.css declares --muted; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:13"
],
"sourceName": "--muted"
},
{
"name": "--meta",
"layer": "B-slot",
"value": "#64bbe3",
"confidence": "high",
"reason": "Bundled tokens.css declares --meta; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:14"
],
"sourceName": "--meta"
},
{
"name": "--border",
"layer": "A1-identity",
"value": "#58585b",
"confidence": "high",
"reason": "Bundled tokens.css declares --border; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:15"
],
"sourceName": "--border"
},
{
"name": "--border-soft",
"layer": "B-slot",
"value": "rgba(232, 235, 241, 0.14)",
"confidence": "high",
"reason": "Bundled tokens.css declares --border-soft; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:16"
],
"sourceName": "--border-soft"
},
{
"name": "--accent",
"layer": "A1-identity",
"value": "#049fd9",
"confidence": "high",
"reason": "Bundled tokens.css declares --accent; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:17"
],
"sourceName": "--accent"
},
{
"name": "--accent-on",
"layer": "A2",
"value": "#001923",
"confidence": "high",
"reason": "Bundled tokens.css declares --accent-on; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:18"
],
"sourceName": "--accent-on"
},
{
"name": "--accent-hover",
"layer": "A2",
"value": "color-mix(in oklab, var(--accent), black 8%)",
"confidence": "high",
"reason": "Bundled tokens.css declares --accent-hover; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:19"
],
"sourceName": "--accent-hover"
},
{
"name": "--accent-active",
"layer": "A2",
"value": "color-mix(in oklab, var(--accent), black 14%)",
"confidence": "high",
"reason": "Bundled tokens.css declares --accent-active; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:20"
],
"sourceName": "--accent-active"
},
{
"name": "--success",
"layer": "A2",
"value": "#6cc04a",
"confidence": "high",
"reason": "Bundled tokens.css declares --success; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:21"
],
"sourceName": "--success"
},
{
"name": "--warn",
"layer": "A2",
"value": "#ffcc00",
"confidence": "high",
"reason": "Bundled tokens.css declares --warn; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:22"
],
"sourceName": "--warn"
},
{
"name": "--danger",
"layer": "A2",
"value": "#cf2030",
"confidence": "high",
"reason": "Bundled tokens.css declares --danger; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:23"
],
"sourceName": "--danger"
},
{
"name": "--font-display",
"layer": "A1-identity",
"value": "\"CiscoSansTT\", Inter, Arial, sans-serif",
"confidence": "high",
"reason": "Bundled tokens.css declares --font-display; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:24"
],
"sourceName": "--font-display"
},
{
"name": "--font-body",
"layer": "A1-identity",
"value": "\"CiscoSansTT\", Inter, Arial, sans-serif",
"confidence": "high",
"reason": "Bundled tokens.css declares --font-body; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:25"
],
"sourceName": "--font-body"
},
{
"name": "--font-mono",
"layer": "A2",
"value": "\"IBM Plex Mono\", ui-monospace, Menlo, monospace",
"confidence": "high",
"reason": "Bundled tokens.css declares --font-mono; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:26"
],
"sourceName": "--font-mono"
},
{
"name": "--text-xs",
"layer": "A1-structure",
"value": "12px",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-xs; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:27"
],
"sourceName": "--text-xs"
},
{
"name": "--text-sm",
"layer": "A1-structure",
"value": "14px",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-sm; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:28"
],
"sourceName": "--text-sm"
},
{
"name": "--text-base",
"layer": "A1-structure",
"value": "16px",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-base; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:29"
],
"sourceName": "--text-base"
},
{
"name": "--text-lg",
"layer": "A1-structure",
"value": "18px",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-lg; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:30"
],
"sourceName": "--text-lg"
},
{
"name": "--text-xl",
"layer": "A1-structure",
"value": "24px",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-xl; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:31"
],
"sourceName": "--text-xl"
},
{
"name": "--text-2xl",
"layer": "A1-structure",
"value": "32px",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-2xl; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:32"
],
"sourceName": "--text-2xl"
},
{
"name": "--text-3xl",
"layer": "A1-structure",
"value": "56px",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-3xl; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:33"
],
"sourceName": "--text-3xl"
},
{
"name": "--text-4xl",
"layer": "A1-structure",
"value": "72px",
"confidence": "high",
"reason": "Bundled tokens.css declares --text-4xl; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:34"
],
"sourceName": "--text-4xl"
},
{
"name": "--leading-body",
"layer": "A1-structure",
"value": "1.55",
"confidence": "high",
"reason": "Bundled tokens.css declares --leading-body; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:35"
],
"sourceName": "--leading-body"
},
{
"name": "--leading-tight",
"layer": "A1-structure",
"value": "1.05",
"confidence": "high",
"reason": "Bundled tokens.css declares --leading-tight; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:36"
],
"sourceName": "--leading-tight"
},
{
"name": "--tracking-display",
"layer": "A1-structure",
"value": "-0.02em",
"confidence": "high",
"reason": "Bundled tokens.css declares --tracking-display; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:37"
],
"sourceName": "--tracking-display"
},
{
"name": "--space-1",
"layer": "A2",
"value": "4px",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-1; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:38"
],
"sourceName": "--space-1"
},
{
"name": "--space-2",
"layer": "A2",
"value": "8px",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-2; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:39"
],
"sourceName": "--space-2"
},
{
"name": "--space-3",
"layer": "A2",
"value": "12px",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-3; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:40"
],
"sourceName": "--space-3"
},
{
"name": "--space-4",
"layer": "A2",
"value": "16px",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-4; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:41"
],
"sourceName": "--space-4"
},
{
"name": "--space-5",
"layer": "A2",
"value": "20px",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-5; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:42"
],
"sourceName": "--space-5"
},
{
"name": "--space-6",
"layer": "A2",
"value": "24px",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-6; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:43"
],
"sourceName": "--space-6"
},
{
"name": "--space-8",
"layer": "A2",
"value": "32px",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-8; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:44"
],
"sourceName": "--space-8"
},
{
"name": "--space-12",
"layer": "A2",
"value": "48px",
"confidence": "high",
"reason": "Bundled tokens.css declares --space-12; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:45"
],
"sourceName": "--space-12"
},
{
"name": "--section-y-desktop",
"layer": "A1-structure",
"value": "104px",
"confidence": "high",
"reason": "Bundled tokens.css declares --section-y-desktop; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:46"
],
"sourceName": "--section-y-desktop"
},
{
"name": "--section-y-tablet",
"layer": "A1-structure",
"value": "76px",
"confidence": "high",
"reason": "Bundled tokens.css declares --section-y-tablet; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:47"
],
"sourceName": "--section-y-tablet"
},
{
"name": "--section-y-phone",
"layer": "A1-structure",
"value": "52px",
"confidence": "high",
"reason": "Bundled tokens.css declares --section-y-phone; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:48"
],
"sourceName": "--section-y-phone"
},
{
"name": "--radius-sm",
"layer": "A2",
"value": "12px",
"confidence": "high",
"reason": "Bundled tokens.css declares --radius-sm; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:49"
],
"sourceName": "--radius-sm"
},
{
"name": "--radius-md",
"layer": "A2",
"value": "20px",
"confidence": "high",
"reason": "Bundled tokens.css declares --radius-md; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:50"
],
"sourceName": "--radius-md"
},
{
"name": "--radius-lg",
"layer": "A2",
"value": "28px",
"confidence": "high",
"reason": "Bundled tokens.css declares --radius-lg; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:51"
],
"sourceName": "--radius-lg"
},
{
"name": "--radius-pill",
"layer": "A2",
"value": "9999px",
"confidence": "high",
"reason": "Bundled tokens.css declares --radius-pill; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:52"
],
"sourceName": "--radius-pill"
},
{
"name": "--elev-flat",
"layer": "A2",
"value": "none",
"confidence": "high",
"reason": "Bundled tokens.css declares --elev-flat; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:53"
],
"sourceName": "--elev-flat"
},
{
"name": "--elev-ring",
"layer": "A2",
"value": "0 0 0 1px var(--border)",
"confidence": "high",
"reason": "Bundled tokens.css declares --elev-ring; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:54"
],
"sourceName": "--elev-ring"
},
{
"name": "--elev-raised",
"layer": "A2",
"value": "0 24px 80px rgba(0, 0, 0, 0.32)",
"confidence": "high",
"reason": "Bundled tokens.css declares --elev-raised; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:55"
],
"sourceName": "--elev-raised"
},
{
"name": "--focus-ring",
"layer": "A2",
"value": "0 0 0 4px rgba(100, 187, 227, 0.32)",
"confidence": "high",
"reason": "Bundled tokens.css declares --focus-ring; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:56"
],
"sourceName": "--focus-ring"
},
{
"name": "--motion-fast",
"layer": "A2",
"value": "160ms",
"confidence": "high",
"reason": "Bundled tokens.css declares --motion-fast; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:57"
],
"sourceName": "--motion-fast"
},
{
"name": "--motion-base",
"layer": "A2",
"value": "240ms",
"confidence": "high",
"reason": "Bundled tokens.css declares --motion-base; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:58"
],
"sourceName": "--motion-base"
},
{
"name": "--ease-standard",
"layer": "A2",
"value": "cubic-bezier(0.2, 0, 0, 1)",
"confidence": "high",
"reason": "Bundled tokens.css declares --ease-standard; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:59"
],
"sourceName": "--ease-standard"
},
{
"name": "--container-max",
"layer": "A1-structure",
"value": "1240px",
"confidence": "high",
"reason": "Bundled tokens.css declares --container-max; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:60"
],
"sourceName": "--container-max"
},
{
"name": "--container-gutter-desktop",
"layer": "A1-structure",
"value": "40px",
"confidence": "high",
"reason": "Bundled tokens.css declares --container-gutter-desktop; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:61"
],
"sourceName": "--container-gutter-desktop"
},
{
"name": "--container-gutter-tablet",
"layer": "A1-structure",
"value": "28px",
"confidence": "high",
"reason": "Bundled tokens.css declares --container-gutter-tablet; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:62"
],
"sourceName": "--container-gutter-tablet"
},
{
"name": "--container-gutter-phone",
"layer": "A1-structure",
"value": "20px",
"confidence": "high",
"reason": "Bundled tokens.css declares --container-gutter-phone; no upstream recrawl was performed for this backfill.",
"sources": [
"tokens.css:63"
],
"sourceName": "--container-gutter-phone"
}
]
}
@@ -0,0 +1,349 @@
{
"schemaVersion": 1,
"sourceScope": "open-design-bundled-fixture",
"brandId": "cisco",
"files": [
"DESIGN.md",
"tokens.css",
"components.html"
],
"generatedAt": "2026-06-06T00:00:00.000Z",
"tokens": [
{
"name": "--bg",
"value": "#0f1720",
"layer": "A1-identity",
"source": "tokens.css:8"
},
{
"name": "--surface",
"value": "#1b2530",
"layer": "A1-identity",
"source": "tokens.css:9"
},
{
"name": "--surface-warm",
"value": "#243447",
"layer": "B-slot",
"source": "tokens.css:10"
},
{
"name": "--fg",
"value": "#ffffff",
"layer": "A1-identity",
"source": "tokens.css:11"
},
{
"name": "--fg-2",
"value": "#e8ebf1",
"layer": "B-slot",
"source": "tokens.css:12"
},
{
"name": "--muted",
"value": "#9e9ea2",
"layer": "A1-identity",
"source": "tokens.css:13"
},
{
"name": "--meta",
"value": "#64bbe3",
"layer": "B-slot",
"source": "tokens.css:14"
},
{
"name": "--border",
"value": "#58585b",
"layer": "A1-identity",
"source": "tokens.css:15"
},
{
"name": "--border-soft",
"value": "rgba(232, 235, 241, 0.14)",
"layer": "B-slot",
"source": "tokens.css:16"
},
{
"name": "--accent",
"value": "#049fd9",
"layer": "A1-identity",
"source": "tokens.css:17"
},
{
"name": "--accent-on",
"value": "#001923",
"layer": "A2",
"source": "tokens.css:18"
},
{
"name": "--accent-hover",
"value": "color-mix(in oklab, var(--accent), black 8%)",
"layer": "A2",
"source": "tokens.css:19"
},
{
"name": "--accent-active",
"value": "color-mix(in oklab, var(--accent), black 14%)",
"layer": "A2",
"source": "tokens.css:20"
},
{
"name": "--success",
"value": "#6cc04a",
"layer": "A2",
"source": "tokens.css:21"
},
{
"name": "--warn",
"value": "#ffcc00",
"layer": "A2",
"source": "tokens.css:22"
},
{
"name": "--danger",
"value": "#cf2030",
"layer": "A2",
"source": "tokens.css:23"
},
{
"name": "--font-display",
"value": "\"CiscoSansTT\", Inter, Arial, sans-serif",
"layer": "A1-identity",
"source": "tokens.css:24"
},
{
"name": "--font-body",
"value": "\"CiscoSansTT\", Inter, Arial, sans-serif",
"layer": "A1-identity",
"source": "tokens.css:25"
},
{
"name": "--font-mono",
"value": "\"IBM Plex Mono\", ui-monospace, Menlo, monospace",
"layer": "A2",
"source": "tokens.css:26"
},
{
"name": "--text-xs",
"value": "12px",
"layer": "A1-structure",
"source": "tokens.css:27"
},
{
"name": "--text-sm",
"value": "14px",
"layer": "A1-structure",
"source": "tokens.css:28"
},
{
"name": "--text-base",
"value": "16px",
"layer": "A1-structure",
"source": "tokens.css:29"
},
{
"name": "--text-lg",
"value": "18px",
"layer": "A1-structure",
"source": "tokens.css:30"
},
{
"name": "--text-xl",
"value": "24px",
"layer": "A1-structure",
"source": "tokens.css:31"
},
{
"name": "--text-2xl",
"value": "32px",
"layer": "A1-structure",
"source": "tokens.css:32"
},
{
"name": "--text-3xl",
"value": "56px",
"layer": "A1-structure",
"source": "tokens.css:33"
},
{
"name": "--text-4xl",
"value": "72px",
"layer": "A1-structure",
"source": "tokens.css:34"
},
{
"name": "--leading-body",
"value": "1.55",
"layer": "A1-structure",
"source": "tokens.css:35"
},
{
"name": "--leading-tight",
"value": "1.05",
"layer": "A1-structure",
"source": "tokens.css:36"
},
{
"name": "--tracking-display",
"value": "-0.02em",
"layer": "A1-structure",
"source": "tokens.css:37"
},
{
"name": "--space-1",
"value": "4px",
"layer": "A2",
"source": "tokens.css:38"
},
{
"name": "--space-2",
"value": "8px",
"layer": "A2",
"source": "tokens.css:39"
},
{
"name": "--space-3",
"value": "12px",
"layer": "A2",
"source": "tokens.css:40"
},
{
"name": "--space-4",
"value": "16px",
"layer": "A2",
"source": "tokens.css:41"
},
{
"name": "--space-5",
"value": "20px",
"layer": "A2",
"source": "tokens.css:42"
},
{
"name": "--space-6",
"value": "24px",
"layer": "A2",
"source": "tokens.css:43"
},
{
"name": "--space-8",
"value": "32px",
"layer": "A2",
"source": "tokens.css:44"
},
{
"name": "--space-12",
"value": "48px",
"layer": "A2",
"source": "tokens.css:45"
},
{
"name": "--section-y-desktop",
"value": "104px",
"layer": "A1-structure",
"source": "tokens.css:46"
},
{
"name": "--section-y-tablet",
"value": "76px",
"layer": "A1-structure",
"source": "tokens.css:47"
},
{
"name": "--section-y-phone",
"value": "52px",
"layer": "A1-structure",
"source": "tokens.css:48"
},
{
"name": "--radius-sm",
"value": "12px",
"layer": "A2",
"source": "tokens.css:49"
},
{
"name": "--radius-md",
"value": "20px",
"layer": "A2",
"source": "tokens.css:50"
},
{
"name": "--radius-lg",
"value": "28px",
"layer": "A2",
"source": "tokens.css:51"
},
{
"name": "--radius-pill",
"value": "9999px",
"layer": "A2",
"source": "tokens.css:52"
},
{
"name": "--elev-flat",
"value": "none",
"layer": "A2",
"source": "tokens.css:53"
},
{
"name": "--elev-ring",
"value": "0 0 0 1px var(--border)",
"layer": "A2",
"source": "tokens.css:54"
},
{
"name": "--elev-raised",
"value": "0 24px 80px rgba(0, 0, 0, 0.32)",
"layer": "A2",
"source": "tokens.css:55"
},
{
"name": "--focus-ring",
"value": "0 0 0 4px rgba(100, 187, 227, 0.32)",
"layer": "A2",
"source": "tokens.css:56"
},
{
"name": "--motion-fast",
"value": "160ms",
"layer": "A2",
"source": "tokens.css:57"
},
{
"name": "--motion-base",
"value": "240ms",
"layer": "A2",
"source": "tokens.css:58"
},
{
"name": "--ease-standard",
"value": "cubic-bezier(0.2, 0, 0, 1)",
"layer": "A2",
"source": "tokens.css:59"
},
{
"name": "--container-max",
"value": "1240px",
"layer": "A1-structure",
"source": "tokens.css:60"
},
{
"name": "--container-gutter-desktop",
"value": "40px",
"layer": "A1-structure",
"source": "tokens.css:61"
},
{
"name": "--container-gutter-tablet",
"value": "28px",
"layer": "A1-structure",
"source": "tokens.css:62"
},
{
"name": "--container-gutter-phone",
"value": "20px",
"layer": "A1-structure",
"source": "tokens.css:63"
}
]
}
@@ -0,0 +1,137 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - Pitch deck</title>
<style>
:root {
--accent: #049fd9;
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-on: #001923;
--bg: #0f1720;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--container-gutter-desktop: 40px;
--container-gutter-phone: 20px;
--container-gutter-tablet: 28px;
--container-max: 1240px;
--danger: #cf2030;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--elev-flat: none;
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--elev-ring: 0 0 0 1px var(--border);
--fg: #ffffff;
--fg-2: #e8ebf1;
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--leading-body: 1.55;
--leading-tight: 1.05;
--meta: #64bbe3;
--motion-base: 240ms;
--motion-fast: 160ms;
--muted: #9e9ea2;
--radius-lg: 28px;
--radius-md: 20px;
--radius-pill: 9999px;
--radius-sm: 12px;
--section-y-desktop: 104px;
--section-y-phone: 52px;
--section-y-tablet: 76px;
--space-1: 4px;
--space-12: 48px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--success: #6cc04a;
--surface: #1b2530;
--surface-warm: #243447;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--text-base: 16px;
--text-lg: 18px;
--text-sm: 14px;
--text-xl: 24px;
--text-xs: 12px;
--tracking-display: -0.02em;
--warn: #ffcc00;
}
:root {
--od-page-bg: #0f1720;
--od-surface: #1b2530;
--od-text: #ffffff;
--od-muted: #9e9ea2;
--od-border: #58585b;
--od-accent: #049fd9;
--od-radius: 20px;
--od-font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--od-font-display: "CiscoSansTT", Inter, Arial, sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: var(--od-page-bg);
color: var(--od-text);
font-family: var(--od-font-body);
-webkit-font-smoothing: antialiased;
}
a { color: inherit; }
.page { width: min(1100px, calc(100vw - 48px)); margin: 0 auto; padding: 72px 0; }
.eyebrow { color: var(--od-accent); font-size: 12px; font-weight: 750; letter-spacing: 0; text-transform: uppercase; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 32px; align-items: center; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--od-font-display); letter-spacing: 0; line-height: 1.05; }
h1 { margin-top: 12px; font-size: 64px; }
h2 { font-size: 40px; }
h3 { font-size: 22px; }
.lead { margin-top: 18px; color: var(--od-muted); font-size: 20px; line-height: 1.55; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border-radius: var(--od-radius); padding: 0 18px; font-weight: 750; text-decoration: none; border: 1px solid var(--od-border); }
.button.primary { background: var(--od-accent); border-color: var(--od-accent); color: #ffffff; }
.button.secondary { background: var(--od-surface); }
.panel, .card, .field, .slide, .email, .poster { border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-surface); }
.panel { padding: 24px; box-shadow: 0 24px 80px rgba(15, 17, 23, 0.08); }
.metric-grid, .card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.metric, .card { padding: 18px; }
.metric strong { display: block; font-size: 30px; line-height: 1; }
.metric span, .card p, .field span { color: var(--od-muted); font-size: 14px; line-height: 1.5; }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.chip { border: 1px solid var(--od-border); border-radius: 999px; padding: 8px 12px; color: var(--od-muted); }
input, textarea, select { width: 100%; min-height: 44px; border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-page-bg); color: var(--od-text); font: inherit; padding: 10px 12px; }
label { display: grid; gap: 8px; color: var(--od-muted); font-size: 13px; font-weight: 700; }
@media (max-width: 820px) { .hero, .metric-grid, .card-grid { grid-template-columns: 1fr; } .page { width: min(100vw - 28px, 1100px); padding: 40px 0; } h1 { font-size: 42px; } h2 { font-size: 30px; } }
</style>
</head>
<body>
<main class="page">
<section class="hero">
<div>
<p class="eyebrow">Deck module</p>
<h1>Cisco Executive deck</h1>
<p class="lead">Slide-scale title, metric, and section patterns for presentation work.</p>
<div class="actions">
<a class="button primary" href="#">Continue</a>
<a class="button secondary" href="#">View details</a>
</div>
</div>
<article class="panel">
<p class="eyebrow">Preview</p>
<h3>Pitch deck</h3>
<p class="lead" style="font-size:16px">Bundled OpenDesign package for Cisco, derived from curated DESIGN.md, tokens.css, and components.html fixtures.</p>
<div class="card-grid" style="grid-template-columns:1fr 1fr">
<div class="field"><label>Primary input<input value="Cisco" /></label></div>
<div class="field"><label>Status<select><option>Ready</option><option>Draft</option></select></label></div>
</div>
</article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,137 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - Email</title>
<style>
:root {
--accent: #049fd9;
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-on: #001923;
--bg: #0f1720;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--container-gutter-desktop: 40px;
--container-gutter-phone: 20px;
--container-gutter-tablet: 28px;
--container-max: 1240px;
--danger: #cf2030;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--elev-flat: none;
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--elev-ring: 0 0 0 1px var(--border);
--fg: #ffffff;
--fg-2: #e8ebf1;
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--leading-body: 1.55;
--leading-tight: 1.05;
--meta: #64bbe3;
--motion-base: 240ms;
--motion-fast: 160ms;
--muted: #9e9ea2;
--radius-lg: 28px;
--radius-md: 20px;
--radius-pill: 9999px;
--radius-sm: 12px;
--section-y-desktop: 104px;
--section-y-phone: 52px;
--section-y-tablet: 76px;
--space-1: 4px;
--space-12: 48px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--success: #6cc04a;
--surface: #1b2530;
--surface-warm: #243447;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--text-base: 16px;
--text-lg: 18px;
--text-sm: 14px;
--text-xl: 24px;
--text-xs: 12px;
--tracking-display: -0.02em;
--warn: #ffcc00;
}
:root {
--od-page-bg: #0f1720;
--od-surface: #1b2530;
--od-text: #ffffff;
--od-muted: #9e9ea2;
--od-border: #58585b;
--od-accent: #049fd9;
--od-radius: 20px;
--od-font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--od-font-display: "CiscoSansTT", Inter, Arial, sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: var(--od-page-bg);
color: var(--od-text);
font-family: var(--od-font-body);
-webkit-font-smoothing: antialiased;
}
a { color: inherit; }
.page { width: min(1100px, calc(100vw - 48px)); margin: 0 auto; padding: 72px 0; }
.eyebrow { color: var(--od-accent); font-size: 12px; font-weight: 750; letter-spacing: 0; text-transform: uppercase; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 32px; align-items: center; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--od-font-display); letter-spacing: 0; line-height: 1.05; }
h1 { margin-top: 12px; font-size: 64px; }
h2 { font-size: 40px; }
h3 { font-size: 22px; }
.lead { margin-top: 18px; color: var(--od-muted); font-size: 20px; line-height: 1.55; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border-radius: var(--od-radius); padding: 0 18px; font-weight: 750; text-decoration: none; border: 1px solid var(--od-border); }
.button.primary { background: var(--od-accent); border-color: var(--od-accent); color: #ffffff; }
.button.secondary { background: var(--od-surface); }
.panel, .card, .field, .slide, .email, .poster { border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-surface); }
.panel { padding: 24px; box-shadow: 0 24px 80px rgba(15, 17, 23, 0.08); }
.metric-grid, .card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.metric, .card { padding: 18px; }
.metric strong { display: block; font-size: 30px; line-height: 1; }
.metric span, .card p, .field span { color: var(--od-muted); font-size: 14px; line-height: 1.5; }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.chip { border: 1px solid var(--od-border); border-radius: 999px; padding: 8px 12px; color: var(--od-muted); }
input, textarea, select { width: 100%; min-height: 44px; border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-page-bg); color: var(--od-text); font: inherit; padding: 10px 12px; }
label { display: grid; gap: 8px; color: var(--od-muted); font-size: 13px; font-weight: 700; }
@media (max-width: 820px) { .hero, .metric-grid, .card-grid { grid-template-columns: 1fr; } .page { width: min(100vw - 28px, 1100px); padding: 40px 0; } h1 { font-size: 42px; } h2 { font-size: 30px; } }
</style>
</head>
<body>
<main class="page">
<section class="hero">
<div>
<p class="eyebrow">Email module</p>
<h1>Cisco Email module</h1>
<p class="lead">Transactional header, body copy, and primary call-to-action treatment.</p>
<div class="actions">
<a class="button primary" href="#">Continue</a>
<a class="button secondary" href="#">View details</a>
</div>
</div>
<article class="panel">
<p class="eyebrow">Preview</p>
<h3>Email</h3>
<p class="lead" style="font-size:16px">Bundled OpenDesign package for Cisco, derived from curated DESIGN.md, tokens.css, and components.html fixtures.</p>
<div class="card-grid" style="grid-template-columns:1fr 1fr">
<div class="field"><label>Primary input<input value="Cisco" /></label></div>
<div class="field"><label>Status<select><option>Ready</option><option>Draft</option></select></label></div>
</div>
</article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,137 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - Form page</title>
<style>
:root {
--accent: #049fd9;
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-on: #001923;
--bg: #0f1720;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--container-gutter-desktop: 40px;
--container-gutter-phone: 20px;
--container-gutter-tablet: 28px;
--container-max: 1240px;
--danger: #cf2030;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--elev-flat: none;
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--elev-ring: 0 0 0 1px var(--border);
--fg: #ffffff;
--fg-2: #e8ebf1;
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--leading-body: 1.55;
--leading-tight: 1.05;
--meta: #64bbe3;
--motion-base: 240ms;
--motion-fast: 160ms;
--muted: #9e9ea2;
--radius-lg: 28px;
--radius-md: 20px;
--radius-pill: 9999px;
--radius-sm: 12px;
--section-y-desktop: 104px;
--section-y-phone: 52px;
--section-y-tablet: 76px;
--space-1: 4px;
--space-12: 48px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--success: #6cc04a;
--surface: #1b2530;
--surface-warm: #243447;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--text-base: 16px;
--text-lg: 18px;
--text-sm: 14px;
--text-xl: 24px;
--text-xs: 12px;
--tracking-display: -0.02em;
--warn: #ffcc00;
}
:root {
--od-page-bg: #0f1720;
--od-surface: #1b2530;
--od-text: #ffffff;
--od-muted: #9e9ea2;
--od-border: #58585b;
--od-accent: #049fd9;
--od-radius: 20px;
--od-font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--od-font-display: "CiscoSansTT", Inter, Arial, sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: var(--od-page-bg);
color: var(--od-text);
font-family: var(--od-font-body);
-webkit-font-smoothing: antialiased;
}
a { color: inherit; }
.page { width: min(1100px, calc(100vw - 48px)); margin: 0 auto; padding: 72px 0; }
.eyebrow { color: var(--od-accent); font-size: 12px; font-weight: 750; letter-spacing: 0; text-transform: uppercase; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 32px; align-items: center; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--od-font-display); letter-spacing: 0; line-height: 1.05; }
h1 { margin-top: 12px; font-size: 64px; }
h2 { font-size: 40px; }
h3 { font-size: 22px; }
.lead { margin-top: 18px; color: var(--od-muted); font-size: 20px; line-height: 1.55; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border-radius: var(--od-radius); padding: 0 18px; font-weight: 750; text-decoration: none; border: 1px solid var(--od-border); }
.button.primary { background: var(--od-accent); border-color: var(--od-accent); color: #ffffff; }
.button.secondary { background: var(--od-surface); }
.panel, .card, .field, .slide, .email, .poster { border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-surface); }
.panel { padding: 24px; box-shadow: 0 24px 80px rgba(15, 17, 23, 0.08); }
.metric-grid, .card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.metric, .card { padding: 18px; }
.metric strong { display: block; font-size: 30px; line-height: 1; }
.metric span, .card p, .field span { color: var(--od-muted); font-size: 14px; line-height: 1.5; }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.chip { border: 1px solid var(--od-border); border-radius: 999px; padding: 8px 12px; color: var(--od-muted); }
input, textarea, select { width: 100%; min-height: 44px; border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-page-bg); color: var(--od-text); font: inherit; padding: 10px 12px; }
label { display: grid; gap: 8px; color: var(--od-muted); font-size: 13px; font-weight: 700; }
@media (max-width: 820px) { .hero, .metric-grid, .card-grid { grid-template-columns: 1fr; } .page { width: min(100vw - 28px, 1100px); padding: 40px 0; } h1 { font-size: 42px; } h2 { font-size: 30px; } }
</style>
</head>
<body>
<main class="page">
<section class="hero">
<div>
<p class="eyebrow">Form module</p>
<h1>Cisco Capture form</h1>
<p class="lead">Input, selection, helper text, and submission states in one focused page.</p>
<div class="actions">
<a class="button primary" href="#">Continue</a>
<a class="button secondary" href="#">View details</a>
</div>
</div>
<article class="panel">
<p class="eyebrow">Preview</p>
<h3>Form page</h3>
<p class="lead" style="font-size:16px">Bundled OpenDesign package for Cisco, derived from curated DESIGN.md, tokens.css, and components.html fixtures.</p>
<div class="card-grid" style="grid-template-columns:1fr 1fr">
<div class="field"><label>Primary input<input value="Cisco" /></label></div>
<div class="field"><label>Status<select><option>Ready</option><option>Draft</option></select></label></div>
</div>
</article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,137 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - Landing page</title>
<style>
:root {
--accent: #049fd9;
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-on: #001923;
--bg: #0f1720;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--container-gutter-desktop: 40px;
--container-gutter-phone: 20px;
--container-gutter-tablet: 28px;
--container-max: 1240px;
--danger: #cf2030;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--elev-flat: none;
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--elev-ring: 0 0 0 1px var(--border);
--fg: #ffffff;
--fg-2: #e8ebf1;
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--leading-body: 1.55;
--leading-tight: 1.05;
--meta: #64bbe3;
--motion-base: 240ms;
--motion-fast: 160ms;
--muted: #9e9ea2;
--radius-lg: 28px;
--radius-md: 20px;
--radius-pill: 9999px;
--radius-sm: 12px;
--section-y-desktop: 104px;
--section-y-phone: 52px;
--section-y-tablet: 76px;
--space-1: 4px;
--space-12: 48px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--success: #6cc04a;
--surface: #1b2530;
--surface-warm: #243447;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--text-base: 16px;
--text-lg: 18px;
--text-sm: 14px;
--text-xl: 24px;
--text-xs: 12px;
--tracking-display: -0.02em;
--warn: #ffcc00;
}
:root {
--od-page-bg: #0f1720;
--od-surface: #1b2530;
--od-text: #ffffff;
--od-muted: #9e9ea2;
--od-border: #58585b;
--od-accent: #049fd9;
--od-radius: 20px;
--od-font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--od-font-display: "CiscoSansTT", Inter, Arial, sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: var(--od-page-bg);
color: var(--od-text);
font-family: var(--od-font-body);
-webkit-font-smoothing: antialiased;
}
a { color: inherit; }
.page { width: min(1100px, calc(100vw - 48px)); margin: 0 auto; padding: 72px 0; }
.eyebrow { color: var(--od-accent); font-size: 12px; font-weight: 750; letter-spacing: 0; text-transform: uppercase; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 32px; align-items: center; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--od-font-display); letter-spacing: 0; line-height: 1.05; }
h1 { margin-top: 12px; font-size: 64px; }
h2 { font-size: 40px; }
h3 { font-size: 22px; }
.lead { margin-top: 18px; color: var(--od-muted); font-size: 20px; line-height: 1.55; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border-radius: var(--od-radius); padding: 0 18px; font-weight: 750; text-decoration: none; border: 1px solid var(--od-border); }
.button.primary { background: var(--od-accent); border-color: var(--od-accent); color: #ffffff; }
.button.secondary { background: var(--od-surface); }
.panel, .card, .field, .slide, .email, .poster { border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-surface); }
.panel { padding: 24px; box-shadow: 0 24px 80px rgba(15, 17, 23, 0.08); }
.metric-grid, .card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.metric, .card { padding: 18px; }
.metric strong { display: block; font-size: 30px; line-height: 1; }
.metric span, .card p, .field span { color: var(--od-muted); font-size: 14px; line-height: 1.5; }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.chip { border: 1px solid var(--od-border); border-radius: 999px; padding: 8px 12px; color: var(--od-muted); }
input, textarea, select { width: 100%; min-height: 44px; border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-page-bg); color: var(--od-text); font: inherit; padding: 10px 12px; }
label { display: grid; gap: 8px; color: var(--od-muted); font-size: 13px; font-weight: 700; }
@media (max-width: 820px) { .hero, .metric-grid, .card-grid { grid-template-columns: 1fr; } .page { width: min(100vw - 28px, 1100px); padding: 40px 0; } h1 { font-size: 42px; } h2 { font-size: 30px; } }
</style>
</head>
<body>
<main class="page">
<section class="hero">
<div>
<p class="eyebrow">Landing module</p>
<h1>Cisco Launch narrative</h1>
<p class="lead">Hero, proof points, and conversion actions composed from the design system tokens.</p>
<div class="actions">
<a class="button primary" href="#">Continue</a>
<a class="button secondary" href="#">View details</a>
</div>
</div>
<article class="panel">
<p class="eyebrow">Preview</p>
<h3>Landing page</h3>
<p class="lead" style="font-size:16px">Bundled OpenDesign package for Cisco, derived from curated DESIGN.md, tokens.css, and components.html fixtures.</p>
<div class="card-grid" style="grid-template-columns:1fr 1fr">
<div class="field"><label>Primary input<input value="Cisco" /></label></div>
<div class="field"><label>Status<select><option>Ready</option><option>Draft</option></select></label></div>
</div>
</article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,137 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - Newsletter</title>
<style>
:root {
--accent: #049fd9;
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-on: #001923;
--bg: #0f1720;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--container-gutter-desktop: 40px;
--container-gutter-phone: 20px;
--container-gutter-tablet: 28px;
--container-max: 1240px;
--danger: #cf2030;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--elev-flat: none;
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--elev-ring: 0 0 0 1px var(--border);
--fg: #ffffff;
--fg-2: #e8ebf1;
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--leading-body: 1.55;
--leading-tight: 1.05;
--meta: #64bbe3;
--motion-base: 240ms;
--motion-fast: 160ms;
--muted: #9e9ea2;
--radius-lg: 28px;
--radius-md: 20px;
--radius-pill: 9999px;
--radius-sm: 12px;
--section-y-desktop: 104px;
--section-y-phone: 52px;
--section-y-tablet: 76px;
--space-1: 4px;
--space-12: 48px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--success: #6cc04a;
--surface: #1b2530;
--surface-warm: #243447;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--text-base: 16px;
--text-lg: 18px;
--text-sm: 14px;
--text-xl: 24px;
--text-xs: 12px;
--tracking-display: -0.02em;
--warn: #ffcc00;
}
:root {
--od-page-bg: #0f1720;
--od-surface: #1b2530;
--od-text: #ffffff;
--od-muted: #9e9ea2;
--od-border: #58585b;
--od-accent: #049fd9;
--od-radius: 20px;
--od-font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--od-font-display: "CiscoSansTT", Inter, Arial, sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: var(--od-page-bg);
color: var(--od-text);
font-family: var(--od-font-body);
-webkit-font-smoothing: antialiased;
}
a { color: inherit; }
.page { width: min(1100px, calc(100vw - 48px)); margin: 0 auto; padding: 72px 0; }
.eyebrow { color: var(--od-accent); font-size: 12px; font-weight: 750; letter-spacing: 0; text-transform: uppercase; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 32px; align-items: center; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--od-font-display); letter-spacing: 0; line-height: 1.05; }
h1 { margin-top: 12px; font-size: 64px; }
h2 { font-size: 40px; }
h3 { font-size: 22px; }
.lead { margin-top: 18px; color: var(--od-muted); font-size: 20px; line-height: 1.55; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border-radius: var(--od-radius); padding: 0 18px; font-weight: 750; text-decoration: none; border: 1px solid var(--od-border); }
.button.primary { background: var(--od-accent); border-color: var(--od-accent); color: #ffffff; }
.button.secondary { background: var(--od-surface); }
.panel, .card, .field, .slide, .email, .poster { border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-surface); }
.panel { padding: 24px; box-shadow: 0 24px 80px rgba(15, 17, 23, 0.08); }
.metric-grid, .card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.metric, .card { padding: 18px; }
.metric strong { display: block; font-size: 30px; line-height: 1; }
.metric span, .card p, .field span { color: var(--od-muted); font-size: 14px; line-height: 1.5; }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.chip { border: 1px solid var(--od-border); border-radius: 999px; padding: 8px 12px; color: var(--od-muted); }
input, textarea, select { width: 100%; min-height: 44px; border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-page-bg); color: var(--od-text); font: inherit; padding: 10px 12px; }
label { display: grid; gap: 8px; color: var(--od-muted); font-size: 13px; font-weight: 700; }
@media (max-width: 820px) { .hero, .metric-grid, .card-grid { grid-template-columns: 1fr; } .page { width: min(100vw - 28px, 1100px); padding: 40px 0; } h1 { font-size: 42px; } h2 { font-size: 30px; } }
</style>
</head>
<body>
<main class="page">
<section class="hero">
<div>
<p class="eyebrow">Newsletter module</p>
<h1>Cisco Editorial issue</h1>
<p class="lead">Readable long-form layout with heading hierarchy and compact story modules.</p>
<div class="actions">
<a class="button primary" href="#">Continue</a>
<a class="button secondary" href="#">View details</a>
</div>
</div>
<article class="panel">
<p class="eyebrow">Preview</p>
<h3>Newsletter</h3>
<p class="lead" style="font-size:16px">Bundled OpenDesign package for Cisco, derived from curated DESIGN.md, tokens.css, and components.html fixtures.</p>
<div class="card-grid" style="grid-template-columns:1fr 1fr">
<div class="field"><label>Primary input<input value="Cisco" /></label></div>
<div class="field"><label>Status<select><option>Ready</option><option>Draft</option></select></label></div>
</div>
</article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,137 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - Poster</title>
<style>
:root {
--accent: #049fd9;
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-on: #001923;
--bg: #0f1720;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--container-gutter-desktop: 40px;
--container-gutter-phone: 20px;
--container-gutter-tablet: 28px;
--container-max: 1240px;
--danger: #cf2030;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--elev-flat: none;
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--elev-ring: 0 0 0 1px var(--border);
--fg: #ffffff;
--fg-2: #e8ebf1;
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--leading-body: 1.55;
--leading-tight: 1.05;
--meta: #64bbe3;
--motion-base: 240ms;
--motion-fast: 160ms;
--muted: #9e9ea2;
--radius-lg: 28px;
--radius-md: 20px;
--radius-pill: 9999px;
--radius-sm: 12px;
--section-y-desktop: 104px;
--section-y-phone: 52px;
--section-y-tablet: 76px;
--space-1: 4px;
--space-12: 48px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--success: #6cc04a;
--surface: #1b2530;
--surface-warm: #243447;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--text-base: 16px;
--text-lg: 18px;
--text-sm: 14px;
--text-xl: 24px;
--text-xs: 12px;
--tracking-display: -0.02em;
--warn: #ffcc00;
}
:root {
--od-page-bg: #0f1720;
--od-surface: #1b2530;
--od-text: #ffffff;
--od-muted: #9e9ea2;
--od-border: #58585b;
--od-accent: #049fd9;
--od-radius: 20px;
--od-font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--od-font-display: "CiscoSansTT", Inter, Arial, sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: var(--od-page-bg);
color: var(--od-text);
font-family: var(--od-font-body);
-webkit-font-smoothing: antialiased;
}
a { color: inherit; }
.page { width: min(1100px, calc(100vw - 48px)); margin: 0 auto; padding: 72px 0; }
.eyebrow { color: var(--od-accent); font-size: 12px; font-weight: 750; letter-spacing: 0; text-transform: uppercase; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 32px; align-items: center; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--od-font-display); letter-spacing: 0; line-height: 1.05; }
h1 { margin-top: 12px; font-size: 64px; }
h2 { font-size: 40px; }
h3 { font-size: 22px; }
.lead { margin-top: 18px; color: var(--od-muted); font-size: 20px; line-height: 1.55; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border-radius: var(--od-radius); padding: 0 18px; font-weight: 750; text-decoration: none; border: 1px solid var(--od-border); }
.button.primary { background: var(--od-accent); border-color: var(--od-accent); color: #ffffff; }
.button.secondary { background: var(--od-surface); }
.panel, .card, .field, .slide, .email, .poster { border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-surface); }
.panel { padding: 24px; box-shadow: 0 24px 80px rgba(15, 17, 23, 0.08); }
.metric-grid, .card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.metric, .card { padding: 18px; }
.metric strong { display: block; font-size: 30px; line-height: 1; }
.metric span, .card p, .field span { color: var(--od-muted); font-size: 14px; line-height: 1.5; }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.chip { border: 1px solid var(--od-border); border-radius: 999px; padding: 8px 12px; color: var(--od-muted); }
input, textarea, select { width: 100%; min-height: 44px; border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-page-bg); color: var(--od-text); font: inherit; padding: 10px 12px; }
label { display: grid; gap: 8px; color: var(--od-muted); font-size: 13px; font-weight: 700; }
@media (max-width: 820px) { .hero, .metric-grid, .card-grid { grid-template-columns: 1fr; } .page { width: min(100vw - 28px, 1100px); padding: 40px 0; } h1 { font-size: 42px; } h2 { font-size: 30px; } }
</style>
</head>
<body>
<main class="page">
<section class="hero">
<div>
<p class="eyebrow">Poster module</p>
<h1>Cisco Campaign poster</h1>
<p class="lead">High-impact display composition using the system color, type, and spacing rhythm.</p>
<div class="actions">
<a class="button primary" href="#">Continue</a>
<a class="button secondary" href="#">View details</a>
</div>
</div>
<article class="panel">
<p class="eyebrow">Preview</p>
<h3>Poster</h3>
<p class="lead" style="font-size:16px">Bundled OpenDesign package for Cisco, derived from curated DESIGN.md, tokens.css, and components.html fixtures.</p>
<div class="card-grid" style="grid-template-columns:1fr 1fr">
<div class="field"><label>Primary input<input value="Cisco" /></label></div>
<div class="field"><label>Status<select><option>Ready</option><option>Draft</option></select></label></div>
</div>
</article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,128 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - system assets</title>
<style>
:root {
--accent: #049fd9;
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-on: #001923;
--bg: #0f1720;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--container-gutter-desktop: 40px;
--container-gutter-phone: 20px;
--container-gutter-tablet: 28px;
--container-max: 1240px;
--danger: #cf2030;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--elev-flat: none;
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--elev-ring: 0 0 0 1px var(--border);
--fg: #ffffff;
--fg-2: #e8ebf1;
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--leading-body: 1.55;
--leading-tight: 1.05;
--meta: #64bbe3;
--motion-base: 240ms;
--motion-fast: 160ms;
--muted: #9e9ea2;
--radius-lg: 28px;
--radius-md: 20px;
--radius-pill: 9999px;
--radius-sm: 12px;
--section-y-desktop: 104px;
--section-y-phone: 52px;
--section-y-tablet: 76px;
--space-1: 4px;
--space-12: 48px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--success: #6cc04a;
--surface: #1b2530;
--surface-warm: #243447;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--text-base: 16px;
--text-lg: 18px;
--text-sm: 14px;
--text-xl: 24px;
--text-xs: 12px;
--tracking-display: -0.02em;
--warn: #ffcc00;
}
:root {
--od-page-bg: #0f1720;
--od-surface: #1b2530;
--od-text: #ffffff;
--od-muted: #9e9ea2;
--od-border: #58585b;
--od-accent: #049fd9;
--od-radius: 20px;
--od-font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--od-font-display: "CiscoSansTT", Inter, Arial, sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: var(--od-page-bg);
color: var(--od-text);
font-family: var(--od-font-body);
-webkit-font-smoothing: antialiased;
}
a { color: inherit; }
.page { width: min(1100px, calc(100vw - 48px)); margin: 0 auto; padding: 72px 0; }
.eyebrow { color: var(--od-accent); font-size: 12px; font-weight: 750; letter-spacing: 0; text-transform: uppercase; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 32px; align-items: center; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--od-font-display); letter-spacing: 0; line-height: 1.05; }
h1 { margin-top: 12px; font-size: 64px; }
h2 { font-size: 40px; }
h3 { font-size: 22px; }
.lead { margin-top: 18px; color: var(--od-muted); font-size: 20px; line-height: 1.55; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border-radius: var(--od-radius); padding: 0 18px; font-weight: 750; text-decoration: none; border: 1px solid var(--od-border); }
.button.primary { background: var(--od-accent); border-color: var(--od-accent); color: #ffffff; }
.button.secondary { background: var(--od-surface); }
.panel, .card, .field, .slide, .email, .poster { border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-surface); }
.panel { padding: 24px; box-shadow: 0 24px 80px rgba(15, 17, 23, 0.08); }
.metric-grid, .card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.metric, .card { padding: 18px; }
.metric strong { display: block; font-size: 30px; line-height: 1; }
.metric span, .card p, .field span { color: var(--od-muted); font-size: 14px; line-height: 1.5; }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.chip { border: 1px solid var(--od-border); border-radius: 999px; padding: 8px 12px; color: var(--od-muted); }
input, textarea, select { width: 100%; min-height: 44px; border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-page-bg); color: var(--od-text); font: inherit; padding: 10px 12px; }
label { display: grid; gap: 8px; color: var(--od-muted); font-size: 13px; font-weight: 700; }
@media (max-width: 820px) { .hero, .metric-grid, .card-grid { grid-template-columns: 1fr; } .page { width: min(100vw - 28px, 1100px); padding: 40px 0; } h1 { font-size: 42px; } h2 { font-size: 30px; } }
</style>
</head>
<body>
<main class="page">
<p class="eyebrow">Backend &amp; Data</p>
<h1>Cisco system assets</h1>
<p class="lead">Generated preview modules for bundled official presets.</p>
<section class="card-grid"><a class="card" href="kit.html"><h3>Component kit</h3><p>kit.html</p></a>
<a class="card" href="kit.dark.html"><h3>Dark component kit</h3><p>kit.dark.html</p></a>
<a class="card" href="artifacts/landing.html"><h3>Landing page</h3><p>artifacts/landing.html</p></a>
<a class="card" href="artifacts/deck.html"><h3>Pitch deck</h3><p>artifacts/deck.html</p></a>
<a class="card" href="artifacts/poster.html"><h3>Poster</h3><p>artifacts/poster.html</p></a>
<a class="card" href="artifacts/email.html"><h3>Email</h3><p>artifacts/email.html</p></a>
<a class="card" href="artifacts/newsletter.html"><h3>Newsletter</h3><p>artifacts/newsletter.html</p></a>
<a class="card" href="artifacts/form.html"><h3>Form page</h3><p>artifacts/form.html</p></a></section>
</main>
</body>
</html>
@@ -0,0 +1,149 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - dark component kit</title>
<style>
:root {
--accent: #049fd9;
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-on: #001923;
--bg: #0f1720;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--container-gutter-desktop: 40px;
--container-gutter-phone: 20px;
--container-gutter-tablet: 28px;
--container-max: 1240px;
--danger: #cf2030;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--elev-flat: none;
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--elev-ring: 0 0 0 1px var(--border);
--fg: #ffffff;
--fg-2: #e8ebf1;
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--leading-body: 1.55;
--leading-tight: 1.05;
--meta: #64bbe3;
--motion-base: 240ms;
--motion-fast: 160ms;
--muted: #9e9ea2;
--radius-lg: 28px;
--radius-md: 20px;
--radius-pill: 9999px;
--radius-sm: 12px;
--section-y-desktop: 104px;
--section-y-phone: 52px;
--section-y-tablet: 76px;
--space-1: 4px;
--space-12: 48px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--success: #6cc04a;
--surface: #1b2530;
--surface-warm: #243447;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--text-base: 16px;
--text-lg: 18px;
--text-sm: 14px;
--text-xl: 24px;
--text-xs: 12px;
--tracking-display: -0.02em;
--warn: #ffcc00;
}
:root {
--od-page-bg: #0f1115;
--od-surface: #171a21;
--od-text: #f8fafc;
--od-muted: #a7adba;
--od-border: #2a2f3a;
--od-accent: #049fd9;
--od-radius: 20px;
--od-font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--od-font-display: "CiscoSansTT", Inter, Arial, sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: var(--od-page-bg);
color: var(--od-text);
font-family: var(--od-font-body);
-webkit-font-smoothing: antialiased;
}
a { color: inherit; }
.page { width: min(1100px, calc(100vw - 48px)); margin: 0 auto; padding: 72px 0; }
.eyebrow { color: var(--od-accent); font-size: 12px; font-weight: 750; letter-spacing: 0; text-transform: uppercase; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 32px; align-items: center; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--od-font-display); letter-spacing: 0; line-height: 1.05; }
h1 { margin-top: 12px; font-size: 64px; }
h2 { font-size: 40px; }
h3 { font-size: 22px; }
.lead { margin-top: 18px; color: var(--od-muted); font-size: 20px; line-height: 1.55; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border-radius: var(--od-radius); padding: 0 18px; font-weight: 750; text-decoration: none; border: 1px solid var(--od-border); }
.button.primary { background: var(--od-accent); border-color: var(--od-accent); color: #0b0b0b; }
.button.secondary { background: var(--od-surface); }
.panel, .card, .field, .slide, .email, .poster { border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-surface); }
.panel { padding: 24px; box-shadow: 0 24px 80px rgba(15, 17, 23, 0.32); }
.metric-grid, .card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.metric, .card { padding: 18px; }
.metric strong { display: block; font-size: 30px; line-height: 1; }
.metric span, .card p, .field span { color: var(--od-muted); font-size: 14px; line-height: 1.5; }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.chip { border: 1px solid var(--od-border); border-radius: 999px; padding: 8px 12px; color: var(--od-muted); }
input, textarea, select { width: 100%; min-height: 44px; border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-page-bg); color: var(--od-text); font: inherit; padding: 10px 12px; }
label { display: grid; gap: 8px; color: var(--od-muted); font-size: 13px; font-weight: 700; }
@media (max-width: 820px) { .hero, .metric-grid, .card-grid { grid-template-columns: 1fr; } .page { width: min(100vw - 28px, 1100px); padding: 40px 0; } h1 { font-size: 42px; } h2 { font-size: 30px; } }
</style>
</head>
<body>
<main class="page">
<section class="hero">
<div>
<p class="eyebrow">Backend &amp; Data system</p>
<h1>Cisco component kit</h1>
<p class="lead">Bundled OpenDesign package for Cisco, derived from curated DESIGN.md, tokens.css, and components.html fixtures.</p>
<div class="actions">
<a class="button primary" href="#">Primary</a>
<a class="button secondary" href="#">Default</a>
<a class="button secondary" href="#">Dashed</a>
</div>
</div>
<article class="panel">
<p class="eyebrow">Reference module</p>
<h3>Token-driven surface</h3>
<div class="metric-grid">
<div class="metric"><strong>12</strong><span>Components</span></div>
<div class="metric"><strong>4</strong><span>States</span></div>
<div class="metric"><strong>1</strong><span>Token contract</span></div>
</div>
<div class="chip-row">
<span class="chip">Hover</span>
<span class="chip">Focus</span>
<span class="chip">Active</span>
<span class="chip">Disabled</span>
</div>
</article>
</section>
<section class="card-grid" aria-label="Component examples">
<article class="card"><h3>Buttons</h3><p>Primary, secondary, text, and destructive treatments resolve through shared color tokens.</p></article>
<article class="card"><h3>Inputs</h3><p>Labels, helper text, and focus state use the same spacing and radius scale.</p></article>
<article class="card"><h3>Cards</h3><p>Information modules keep elevation, border, and padding consistent across breakpoints.</p></article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,149 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cisco - component kit</title>
<style>
:root {
--accent: #049fd9;
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-on: #001923;
--bg: #0f1720;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--container-gutter-desktop: 40px;
--container-gutter-phone: 20px;
--container-gutter-tablet: 28px;
--container-max: 1240px;
--danger: #cf2030;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--elev-flat: none;
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--elev-ring: 0 0 0 1px var(--border);
--fg: #ffffff;
--fg-2: #e8ebf1;
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--leading-body: 1.55;
--leading-tight: 1.05;
--meta: #64bbe3;
--motion-base: 240ms;
--motion-fast: 160ms;
--muted: #9e9ea2;
--radius-lg: 28px;
--radius-md: 20px;
--radius-pill: 9999px;
--radius-sm: 12px;
--section-y-desktop: 104px;
--section-y-phone: 52px;
--section-y-tablet: 76px;
--space-1: 4px;
--space-12: 48px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--success: #6cc04a;
--surface: #1b2530;
--surface-warm: #243447;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--text-base: 16px;
--text-lg: 18px;
--text-sm: 14px;
--text-xl: 24px;
--text-xs: 12px;
--tracking-display: -0.02em;
--warn: #ffcc00;
}
:root {
--od-page-bg: #0f1720;
--od-surface: #1b2530;
--od-text: #ffffff;
--od-muted: #9e9ea2;
--od-border: #58585b;
--od-accent: #049fd9;
--od-radius: 20px;
--od-font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--od-font-display: "CiscoSansTT", Inter, Arial, sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: var(--od-page-bg);
color: var(--od-text);
font-family: var(--od-font-body);
-webkit-font-smoothing: antialiased;
}
a { color: inherit; }
.page { width: min(1100px, calc(100vw - 48px)); margin: 0 auto; padding: 72px 0; }
.eyebrow { color: var(--od-accent); font-size: 12px; font-weight: 750; letter-spacing: 0; text-transform: uppercase; }
.hero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 32px; align-items: center; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--od-font-display); letter-spacing: 0; line-height: 1.05; }
h1 { margin-top: 12px; font-size: 64px; }
h2 { font-size: 40px; }
h3 { font-size: 22px; }
.lead { margin-top: 18px; color: var(--od-muted); font-size: 20px; line-height: 1.55; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.button { display: inline-flex; min-height: 44px; align-items: center; justify-content: center; border-radius: var(--od-radius); padding: 0 18px; font-weight: 750; text-decoration: none; border: 1px solid var(--od-border); }
.button.primary { background: var(--od-accent); border-color: var(--od-accent); color: #ffffff; }
.button.secondary { background: var(--od-surface); }
.panel, .card, .field, .slide, .email, .poster { border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-surface); }
.panel { padding: 24px; box-shadow: 0 24px 80px rgba(15, 17, 23, 0.08); }
.metric-grid, .card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 22px; }
.metric, .card { padding: 18px; }
.metric strong { display: block; font-size: 30px; line-height: 1; }
.metric span, .card p, .field span { color: var(--od-muted); font-size: 14px; line-height: 1.5; }
.chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.chip { border: 1px solid var(--od-border); border-radius: 999px; padding: 8px 12px; color: var(--od-muted); }
input, textarea, select { width: 100%; min-height: 44px; border: 1px solid var(--od-border); border-radius: var(--od-radius); background: var(--od-page-bg); color: var(--od-text); font: inherit; padding: 10px 12px; }
label { display: grid; gap: 8px; color: var(--od-muted); font-size: 13px; font-weight: 700; }
@media (max-width: 820px) { .hero, .metric-grid, .card-grid { grid-template-columns: 1fr; } .page { width: min(100vw - 28px, 1100px); padding: 40px 0; } h1 { font-size: 42px; } h2 { font-size: 30px; } }
</style>
</head>
<body>
<main class="page">
<section class="hero">
<div>
<p class="eyebrow">Backend &amp; Data system</p>
<h1>Cisco component kit</h1>
<p class="lead">Bundled OpenDesign package for Cisco, derived from curated DESIGN.md, tokens.css, and components.html fixtures.</p>
<div class="actions">
<a class="button primary" href="#">Primary</a>
<a class="button secondary" href="#">Default</a>
<a class="button secondary" href="#">Dashed</a>
</div>
</div>
<article class="panel">
<p class="eyebrow">Reference module</p>
<h3>Token-driven surface</h3>
<div class="metric-grid">
<div class="metric"><strong>12</strong><span>Components</span></div>
<div class="metric"><strong>4</strong><span>States</span></div>
<div class="metric"><strong>1</strong><span>Token contract</span></div>
</div>
<div class="chip-row">
<span class="chip">Hover</span>
<span class="chip">Focus</span>
<span class="chip">Active</span>
<span class="chip">Disabled</span>
</div>
</article>
</section>
<section class="card-grid" aria-label="Component examples">
<article class="card"><h3>Buttons</h3><p>Primary, secondary, text, and destructive treatments resolve through shared color tokens.</p></article>
<article class="card"><h3>Inputs</h3><p>Labels, helper text, and focus state use the same spacing and radius scale.</p></article>
<article class="card"><h3>Cards</h3><p>Information modules keep elevation, border, and padding consistent across breakpoints.</p></article>
</section>
</main>
</body>
</html>
@@ -0,0 +1,8 @@
{
"colorPrimary": "#049fd9",
"colorPrimaryBg": "#243447",
"colorPrimaryHover": "color-mix(in oklab, var(--accent), black 8%)",
"colorPrimaryActive": "color-mix(in oklab, var(--accent), black 14%)",
"fontSize": 16,
"borderRadius": 20
}
@@ -0,0 +1,63 @@
/* Derived from tokens.css. Keep tokens.css as the source of truth. */
@import "tailwindcss";
@import "./tokens.css";
@theme {
--color-bg: var(--bg);
--color-surface: var(--surface);
--color-surface-warm: var(--surface-warm);
--color-fg: var(--fg);
--color-fg-2: var(--fg-2);
--color-muted: var(--muted);
--color-meta: var(--meta);
--color-border: var(--border);
--color-border-soft: var(--border-soft);
--color-accent: var(--accent);
--color-accent-on: var(--accent-on);
--color-accent-hover: var(--accent-hover);
--color-accent-active: var(--accent-active);
--color-success: var(--success);
--color-warn: var(--warn);
--color-danger: var(--danger);
--font-display: var(--font-display);
--font-body: var(--font-body);
--font-sans: var(--font-body);
--font-mono: var(--font-mono);
--text-xs: var(--text-xs);
--text-sm: var(--text-sm);
--text-base: var(--text-base);
--text-lg: var(--text-lg);
--text-xl: var(--text-xl);
--text-2xl: var(--text-2xl);
--text-3xl: var(--text-3xl);
--text-4xl: var(--text-4xl);
--leading-body: var(--leading-body);
--leading-tight: var(--leading-tight);
--tracking-display: var(--tracking-display);
--spacing-1: var(--space-1);
--spacing-2: var(--space-2);
--spacing-3: var(--space-3);
--spacing-4: var(--space-4);
--spacing-5: var(--space-5);
--spacing-6: var(--space-6);
--spacing-8: var(--space-8);
--spacing-12: var(--space-12);
--spacing-section-desktop: var(--section-y-desktop);
--spacing-section-tablet: var(--section-y-tablet);
--spacing-section-phone: var(--section-y-phone);
--radius-sm: var(--radius-sm);
--radius-md: var(--radius-md);
--radius-lg: var(--radius-lg);
--radius-pill: var(--radius-pill);
--shadow-flat: var(--elev-flat);
--shadow-ring: var(--elev-ring);
--shadow-raised: var(--elev-raised);
--shadow-focus-ring: var(--focus-ring);
--duration-fast: var(--motion-fast);
--duration-base: var(--motion-base);
--ease-standard: var(--ease-standard);
--container-max: var(--container-max);
--spacing-container-desktop: var(--container-gutter-desktop);
--spacing-container-tablet: var(--container-gutter-tablet);
--spacing-container-phone: var(--container-gutter-phone);
}
@@ -0,0 +1,64 @@
/* design-systems/cisco/tokens.css
*
* Structured token bindings for Cisco.
* navy-charcoal infrastructure surfaces with one electric Cisco Blue signal.
*/
:root {
--bg: #0f1720;
--surface: #1b2530;
--surface-warm: #243447;
--fg: #ffffff;
--fg-2: #e8ebf1;
--muted: #9e9ea2;
--meta: #64bbe3;
--border: #58585b;
--border-soft: rgba(232, 235, 241, 0.14);
--accent: #049fd9;
--accent-on: #001923;
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
--accent-active: color-mix(in oklab, var(--accent), black 14%);
--success: #6cc04a;
--warn: #ffcc00;
--danger: #cf2030;
--font-display: "CiscoSansTT", Inter, Arial, sans-serif;
--font-body: "CiscoSansTT", Inter, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
--text-xs: 12px;
--text-sm: 14px;
--text-base: 16px;
--text-lg: 18px;
--text-xl: 24px;
--text-2xl: 32px;
--text-3xl: 56px;
--text-4xl: 72px;
--leading-body: 1.55;
--leading-tight: 1.05;
--tracking-display: -0.02em;
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--space-12: 48px;
--section-y-desktop: 104px;
--section-y-tablet: 76px;
--section-y-phone: 52px;
--radius-sm: 12px;
--radius-md: 20px;
--radius-lg: 28px;
--radius-pill: 9999px;
--elev-flat: none;
--elev-ring: 0 0 0 1px var(--border);
--elev-raised: 0 24px 80px rgba(0, 0, 0, 0.32);
--focus-ring: 0 0 0 4px rgba(100, 187, 227, 0.32);
--motion-fast: 160ms;
--motion-base: 240ms;
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
--container-max: 1240px;
--container-gutter-desktop: 40px;
--container-gutter-tablet: 28px;
--container-gutter-phone: 20px;
}