first commit
This commit is contained in:
841
design-md/figma/preview.html
Normal file
841
design-md/figma/preview.html
Normal file
@@ -0,0 +1,841 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Design System Preview: Figma (Light)</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root {
|
||||
--color-black: #000000;
|
||||
--color-white: #ffffff;
|
||||
--glass-dark: rgba(0, 0, 0, 0.08);
|
||||
--glass-light: rgba(255, 255, 255, 0.16);
|
||||
--font-sans: system-ui, -apple-system, 'Segoe UI', 'SF Pro Display', Helvetica, Arial, sans-serif;
|
||||
--font-mono: 'Space Mono', 'SF Mono', Menlo, monospace;
|
||||
/* Light mode tokens */
|
||||
--bg-page: #ffffff;
|
||||
--bg-card: #ffffff;
|
||||
--bg-nav: rgba(255, 255, 255, 0.92);
|
||||
--text-primary: #000000;
|
||||
--text-secondary: #000000;
|
||||
--text-muted: rgba(0, 0, 0, 0.5);
|
||||
--border-color: rgba(0, 0, 0, 0.12);
|
||||
--border-subtle: rgba(0, 0, 0, 0.06);
|
||||
--section-label-color: #000000;
|
||||
--glass-surface: rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
background: var(--bg-page);
|
||||
color: var(--text-primary);
|
||||
font-family: var(--font-sans);
|
||||
font-size: 16px;
|
||||
font-weight: 340;
|
||||
line-height: 1.45;
|
||||
letter-spacing: -0.14px;
|
||||
font-feature-settings: "kern" 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
/* NAV */
|
||||
.nav {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 100;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 16px 40px;
|
||||
background: var(--bg-nav);
|
||||
backdrop-filter: blur(16px);
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
.nav-brand {
|
||||
font-family: var(--font-sans);
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.26px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.nav-brand svg { width: 24px; height: 24px; }
|
||||
.nav-links { display: flex; gap: 32px; align-items: center; }
|
||||
.nav-links a {
|
||||
color: var(--text-primary);
|
||||
text-decoration: none;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
letter-spacing: -0.14px;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
.nav-links a:hover { opacity: 0.6; }
|
||||
.nav-cta {
|
||||
background: var(--color-black);
|
||||
color: var(--color-white);
|
||||
padding: 8px 18px 10px;
|
||||
border: none;
|
||||
border-radius: 50px;
|
||||
font-size: 16px;
|
||||
font-family: var(--font-sans);
|
||||
font-weight: 480;
|
||||
letter-spacing: -0.14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.nav-cta:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
|
||||
|
||||
/* HERO */
|
||||
.hero {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
padding: 120px 40px 100px;
|
||||
overflow: hidden;
|
||||
background: linear-gradient(135deg, #0acf83 0%, #a259ff 30%, #f24e1e 50%, #ff7262 65%, #1abcfe 80%, #0acf83 100%);
|
||||
}
|
||||
.hero h1 {
|
||||
font-family: var(--font-sans);
|
||||
font-size: 86px;
|
||||
font-weight: 400;
|
||||
line-height: 1.0;
|
||||
letter-spacing: -1.72px;
|
||||
margin-bottom: 24px;
|
||||
color: var(--color-white);
|
||||
position: relative;
|
||||
}
|
||||
.hero p {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
font-size: 20px;
|
||||
font-weight: 330;
|
||||
line-height: 1.4;
|
||||
letter-spacing: -0.14px;
|
||||
margin-bottom: 40px;
|
||||
position: relative;
|
||||
}
|
||||
.hero-buttons { display: flex; gap: 16px; justify-content: center; position: relative; }
|
||||
.btn-hero-primary {
|
||||
background: var(--color-white);
|
||||
color: var(--color-black);
|
||||
padding: 8px 18px 10px;
|
||||
border: none;
|
||||
border-radius: 50px;
|
||||
font-size: 16px;
|
||||
font-family: var(--font-sans);
|
||||
font-weight: 480;
|
||||
letter-spacing: -0.14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn-hero-primary:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
|
||||
.btn-hero-glass {
|
||||
background: rgba(255, 255, 255, 0.16);
|
||||
color: var(--color-white);
|
||||
padding: 8px 18px 10px;
|
||||
border: none;
|
||||
border-radius: 50px;
|
||||
font-size: 16px;
|
||||
font-family: var(--font-sans);
|
||||
font-weight: 480;
|
||||
letter-spacing: -0.14px;
|
||||
cursor: pointer;
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
.btn-hero-glass:focus { outline: 2px dashed var(--color-white); outline-offset: 3px; }
|
||||
|
||||
/* PRODUCT TABS */
|
||||
.product-tabs {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
justify-content: center;
|
||||
margin-bottom: 40px;
|
||||
position: relative;
|
||||
}
|
||||
.product-tab {
|
||||
background: rgba(255, 255, 255, 0.16);
|
||||
color: var(--color-white);
|
||||
padding: 8px 18px;
|
||||
border: none;
|
||||
border-radius: 50px;
|
||||
font-size: 16px;
|
||||
font-family: var(--font-sans);
|
||||
font-weight: 480;
|
||||
letter-spacing: -0.14px;
|
||||
cursor: pointer;
|
||||
backdrop-filter: blur(8px);
|
||||
transition: background 0.2s;
|
||||
}
|
||||
.product-tab.active {
|
||||
background: var(--color-white);
|
||||
color: var(--color-black);
|
||||
}
|
||||
|
||||
/* SECTIONS */
|
||||
.section {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 80px 40px;
|
||||
}
|
||||
.section-title {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 18px;
|
||||
font-weight: 400;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.54px;
|
||||
color: var(--text-muted);
|
||||
margin-bottom: 12px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.section-heading {
|
||||
font-family: var(--font-sans);
|
||||
font-size: 64px;
|
||||
font-weight: 400;
|
||||
line-height: 1.1;
|
||||
letter-spacing: -0.96px;
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
.section-divider {
|
||||
border: none;
|
||||
border-top: 1px solid var(--border-subtle);
|
||||
margin: 0 40px;
|
||||
max-width: 1200px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
/* COLOR PALETTE */
|
||||
.color-group { margin-bottom: 40px; }
|
||||
.color-group-title {
|
||||
font-size: 26px;
|
||||
font-weight: 540;
|
||||
line-height: 1.35;
|
||||
letter-spacing: -0.26px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.color-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
.color-swatch {
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.color-swatch-block {
|
||||
height: 80px;
|
||||
position: relative;
|
||||
}
|
||||
.color-swatch-info {
|
||||
padding: 12px;
|
||||
background: var(--bg-card);
|
||||
}
|
||||
.color-swatch-name { font-size: 14px; font-weight: 700; letter-spacing: -0.14px; margin-bottom: 2px; }
|
||||
.color-swatch-hex { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); margin-bottom: 4px; letter-spacing: 0.6px; }
|
||||
.color-swatch-role { font-size: 12px; color: var(--text-muted); line-height: 1.4; font-weight: 340; }
|
||||
|
||||
/* GRADIENT PREVIEW */
|
||||
.gradient-preview {
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.gradient-block {
|
||||
height: 120px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.gradient-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 12px;
|
||||
color: var(--text-muted);
|
||||
margin-top: 8px;
|
||||
letter-spacing: 0.6px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
/* TYPOGRAPHY */
|
||||
.type-sample { margin-bottom: 32px; padding-bottom: 32px; border-bottom: 1px solid var(--border-subtle); }
|
||||
.type-sample:last-child { border-bottom: none; }
|
||||
.type-sample-text { margin-bottom: 8px; font-feature-settings: "kern" 1; }
|
||||
.type-sample-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 12px;
|
||||
color: var(--text-muted);
|
||||
letter-spacing: 0.6px;
|
||||
}
|
||||
|
||||
/* WEIGHT SPECTRUM */
|
||||
.weight-spectrum { display: flex; flex-direction: column; gap: 12px; margin-bottom: 40px; padding: 24px; background: var(--glass-surface); border-radius: 8px; }
|
||||
.weight-sample { display: flex; align-items: baseline; gap: 16px; }
|
||||
.weight-sample-text { font-family: var(--font-sans); font-size: 24px; letter-spacing: -0.26px; line-height: 1.35; flex: 1; }
|
||||
.weight-sample-label { font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); letter-spacing: 0.6px; text-transform: uppercase; min-width: 80px; text-align: right; }
|
||||
|
||||
/* BUTTONS */
|
||||
.button-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 24px;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.button-demo { text-align: center; }
|
||||
.button-demo-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
margin-top: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.6px;
|
||||
}
|
||||
.btn-black-pill {
|
||||
background: var(--color-black);
|
||||
color: var(--color-white);
|
||||
padding: 8px 18px 10px;
|
||||
border: none;
|
||||
border-radius: 50px;
|
||||
font-size: 16px;
|
||||
font-family: var(--font-sans);
|
||||
font-weight: 480;
|
||||
letter-spacing: -0.14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn-black-pill:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
|
||||
.btn-white-pill {
|
||||
background: var(--color-white);
|
||||
color: var(--color-black);
|
||||
padding: 8px 18px 10px;
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 50px;
|
||||
font-size: 16px;
|
||||
font-family: var(--font-sans);
|
||||
font-weight: 480;
|
||||
letter-spacing: -0.14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn-white-pill:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
|
||||
.btn-black-circle {
|
||||
background: var(--color-black);
|
||||
color: var(--color-white);
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.btn-black-circle:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
|
||||
.btn-glass-dark {
|
||||
background: var(--glass-dark);
|
||||
color: var(--color-black);
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.btn-glass-dark:focus { outline: 2px dashed var(--color-black); outline-offset: 3px; }
|
||||
.btn-glass-light-demo {
|
||||
background: rgba(255, 255, 255, 0.16);
|
||||
color: var(--color-white);
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.glass-light-wrapper {
|
||||
background: var(--color-black);
|
||||
border-radius: 50%;
|
||||
padding: 0;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* FOCUS DEMO */
|
||||
.focus-demo-row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 24px;
|
||||
align-items: center;
|
||||
margin-top: 40px;
|
||||
padding: 24px;
|
||||
background: var(--glass-surface);
|
||||
border-radius: 8px;
|
||||
}
|
||||
.focus-demo-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 12px;
|
||||
color: var(--text-muted);
|
||||
letter-spacing: 0.6px;
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.btn-focus-visible {
|
||||
outline: 2px dashed var(--color-black);
|
||||
outline-offset: 3px;
|
||||
}
|
||||
|
||||
/* CARDS */
|
||||
.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; }
|
||||
.card {
|
||||
background: var(--bg-card);
|
||||
border-radius: 8px;
|
||||
padding: 28px;
|
||||
}
|
||||
.card-standard { border: 1px solid var(--border-color); }
|
||||
.card-elevated {
|
||||
border: none;
|
||||
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
.card-glass {
|
||||
background: var(--glass-surface);
|
||||
border: none;
|
||||
}
|
||||
.card h3 {
|
||||
font-family: var(--font-sans);
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
line-height: 1.45;
|
||||
letter-spacing: normal;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.card p { color: var(--text-muted); font-size: 16px; line-height: 1.45; font-weight: 330; letter-spacing: -0.14px; }
|
||||
.card-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.6px;
|
||||
color: var(--text-muted);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
/* SPACING */
|
||||
.spacing-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
|
||||
.spacing-item { text-align: center; }
|
||||
.spacing-box {
|
||||
background: rgba(0, 0, 0, 0.06);
|
||||
border: 1px solid rgba(0, 0, 0, 0.12);
|
||||
border-radius: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.spacing-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
letter-spacing: 0.6px;
|
||||
}
|
||||
|
||||
/* RADIUS */
|
||||
.radius-row { display: flex; flex-wrap: wrap; gap: 24px; align-items: center; }
|
||||
.radius-item { text-align: center; }
|
||||
.radius-box {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
background: var(--glass-surface);
|
||||
border: 1px solid var(--border-color);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.radius-label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
letter-spacing: 0.6px;
|
||||
}
|
||||
.radius-context {
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
margin-top: 2px;
|
||||
font-weight: 340;
|
||||
}
|
||||
|
||||
/* ELEVATION */
|
||||
.elevation-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 24px; }
|
||||
.elevation-card {
|
||||
background: var(--bg-card);
|
||||
border-radius: 8px;
|
||||
padding: 24px;
|
||||
min-height: 140px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.elevation-flat { border: none; background: var(--bg-page); }
|
||||
.elevation-surface { background: var(--bg-card); border: 1px solid var(--border-color); }
|
||||
.elevation-elevated { border: none; box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08); }
|
||||
.elevation-name { font-size: 16px; font-weight: 700; margin-bottom: 8px; letter-spacing: normal; }
|
||||
.elevation-desc { font-size: 13px; color: var(--text-muted); line-height: 1.5; font-weight: 340; }
|
||||
.elevation-level {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
color: var(--text-muted);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.6px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
/* RESPONSIVE */
|
||||
@media (max-width: 768px) {
|
||||
.nav { padding: 12px 20px; }
|
||||
.nav-links a:not(.nav-cta-wrapper) { display: none; }
|
||||
.hero { padding: 80px 20px 60px; }
|
||||
.hero h1 { font-size: 48px; letter-spacing: -0.96px; }
|
||||
.section { padding: 60px 20px; }
|
||||
.section-heading { font-size: 36px; letter-spacing: -0.72px; }
|
||||
.color-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
|
||||
.card-grid { grid-template-columns: 1fr; }
|
||||
.hero-buttons { flex-direction: column; align-items: center; }
|
||||
.button-row { flex-direction: column; align-items: flex-start; }
|
||||
.product-tabs { flex-wrap: wrap; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- NAV -->
|
||||
<nav class="nav">
|
||||
<div class="nav-brand">
|
||||
<svg viewBox="0 0 38 57" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M19 28.5C19 23.2533 23.2533 19 28.5 19C33.7467 19 38 23.2533 38 28.5C38 33.7467 33.7467 38 28.5 38C23.2533 38 19 33.7467 19 28.5Z" fill="#1ABCFE"/>
|
||||
<path d="M0 47.5C0 42.2533 4.25329 38 9.5 38H19V47.5C19 52.7467 14.7467 57 9.5 57C4.25329 57 0 52.7467 0 47.5Z" fill="#0ACF83"/>
|
||||
<path d="M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z" fill="#FF7262"/>
|
||||
<path d="M0 9.5C0 14.7467 4.25329 19 9.5 19H19V0H9.5C4.25329 0 0 4.25329 0 9.5Z" fill="#F24E1E"/>
|
||||
<path d="M0 28.5C0 33.7467 4.25329 38 9.5 38H19V19H9.5C4.25329 19 0 23.2533 0 28.5Z" fill="#A259FF"/>
|
||||
</svg>
|
||||
Figma
|
||||
</div>
|
||||
<div class="nav-links">
|
||||
<a href="#colors">Colors</a>
|
||||
<a href="#typography">Typography</a>
|
||||
<a href="#buttons">Buttons</a>
|
||||
<a href="#cards">Cards</a>
|
||||
<a href="#spacing">Spacing</a>
|
||||
<a href="#elevation">Elevation</a>
|
||||
<button class="nav-cta">Get started</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<div class="product-tabs">
|
||||
<button class="product-tab active">Design</button>
|
||||
<button class="product-tab">Dev Mode</button>
|
||||
<button class="product-tab">Prototyping</button>
|
||||
<button class="product-tab">Slides</button>
|
||||
</div>
|
||||
<h1>Design System Preview:<br>Figma</h1>
|
||||
<p>Auto-generated design token catalog from DESIGN.md</p>
|
||||
<div class="hero-buttons">
|
||||
<button class="btn-hero-primary">Explore Tokens</button>
|
||||
<button class="btn-hero-glass">View Source</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- COLORS -->
|
||||
<section class="section" id="colors">
|
||||
<div class="section-title">01 / COLOR PALETTE</div>
|
||||
<h2 class="section-heading">Color Palette & Roles</h2>
|
||||
|
||||
<div class="color-group">
|
||||
<h3 class="color-group-title">Primary</h3>
|
||||
<div class="color-grid">
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #000000;"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Pure Black</div>
|
||||
<div class="color-swatch-hex">#000000</div>
|
||||
<div class="color-swatch-role">All text, solid buttons, all borders. The sole interface color.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: #ffffff; border: 1px solid rgba(0,0,0,0.12);"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Pure White</div>
|
||||
<div class="color-swatch-hex">#ffffff</div>
|
||||
<div class="color-swatch-role">All backgrounds, white buttons, text on dark surfaces.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="color-group">
|
||||
<h3 class="color-group-title">Surface & Glass</h3>
|
||||
<div class="color-grid">
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: rgba(0,0,0,0.08); border: 1px solid rgba(0,0,0,0.12);"></div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Glass Black</div>
|
||||
<div class="color-swatch-hex">rgba(0,0,0,0.08)</div>
|
||||
<div class="color-swatch-role">Secondary circular buttons, glass overlays on light surfaces.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="color-swatch">
|
||||
<div class="color-swatch-block" style="background: rgba(255,255,255,0.16); border: 1px solid rgba(0,0,0,0.12); position: relative;">
|
||||
<div style="position: absolute; inset: 0; background: #000; z-index: 0;"></div>
|
||||
<div style="position: absolute; inset: 0; background: rgba(255,255,255,0.16); z-index: 1;"></div>
|
||||
</div>
|
||||
<div class="color-swatch-info">
|
||||
<div class="color-swatch-name">Glass White</div>
|
||||
<div class="color-swatch-hex">rgba(255,255,255,0.16)</div>
|
||||
<div class="color-swatch-role">Frosted glass overlay for buttons on dark or colored surfaces.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="color-group">
|
||||
<h3 class="color-group-title">Gradient System</h3>
|
||||
<div class="gradient-preview">
|
||||
<div class="gradient-block" style="background: linear-gradient(135deg, #0acf83 0%, #a259ff 30%, #f24e1e 50%, #ff7262 65%, #1abcfe 80%, #0acf83 100%);"></div>
|
||||
</div>
|
||||
<div class="gradient-label">Hero Gradient -- Electric Green, Purple, Orange, Pink, Cyan</div>
|
||||
<p style="color: var(--text-muted); font-size: 14px; margin-top: 8px; font-weight: 340;">Color exists only in hero gradients and product showcases. The interface layer remains strictly monochrome.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- TYPOGRAPHY -->
|
||||
<section class="section" id="typography">
|
||||
<div class="section-title">02 / TYPOGRAPHY SCALE</div>
|
||||
<h2 class="section-heading">Typography Rules</h2>
|
||||
|
||||
<div class="weight-spectrum">
|
||||
<div style="font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); letter-spacing: 0.6px; text-transform: uppercase; margin-bottom: 8px;">Variable Weight Spectrum</div>
|
||||
<div class="weight-sample">
|
||||
<span class="weight-sample-text" style="font-weight: 320;">The quick brown fox jumps</span>
|
||||
<span class="weight-sample-label">Weight 320</span>
|
||||
</div>
|
||||
<div class="weight-sample">
|
||||
<span class="weight-sample-text" style="font-weight: 330;">The quick brown fox jumps</span>
|
||||
<span class="weight-sample-label">Weight 330</span>
|
||||
</div>
|
||||
<div class="weight-sample">
|
||||
<span class="weight-sample-text" style="font-weight: 340;">The quick brown fox jumps</span>
|
||||
<span class="weight-sample-label">Weight 340</span>
|
||||
</div>
|
||||
<div class="weight-sample">
|
||||
<span class="weight-sample-text" style="font-weight: 400;">The quick brown fox jumps</span>
|
||||
<span class="weight-sample-label">Weight 400</span>
|
||||
</div>
|
||||
<div class="weight-sample">
|
||||
<span class="weight-sample-text" style="font-weight: 450;">The quick brown fox jumps</span>
|
||||
<span class="weight-sample-label">Weight 450</span>
|
||||
</div>
|
||||
<div class="weight-sample">
|
||||
<span class="weight-sample-text" style="font-weight: 480;">The quick brown fox jumps</span>
|
||||
<span class="weight-sample-label">Weight 480</span>
|
||||
</div>
|
||||
<div class="weight-sample">
|
||||
<span class="weight-sample-text" style="font-weight: 540;">The quick brown fox jumps</span>
|
||||
<span class="weight-sample-label">Weight 540</span>
|
||||
</div>
|
||||
<div class="weight-sample">
|
||||
<span class="weight-sample-text" style="font-weight: 700;">The quick brown fox jumps</span>
|
||||
<span class="weight-sample-label">Weight 700</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 86px; font-weight: 400; line-height: 1.0; letter-spacing: -1.72px;">Display Hero</div>
|
||||
<div class="type-sample-label">Display / Hero -- 86px / wt 400 / lh 1.00 / ls -1.72px -- figmaSans</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 64px; font-weight: 400; line-height: 1.1; letter-spacing: -0.96px;">Section Heading</div>
|
||||
<div class="type-sample-label">Section Heading -- 64px / wt 400 / lh 1.10 / ls -0.96px -- figmaSans</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 26px; font-weight: 540; line-height: 1.35; letter-spacing: -0.26px;">Sub-heading Medium</div>
|
||||
<div class="type-sample-label">Sub-heading -- 26px / wt 540 / lh 1.35 / ls -0.26px -- figmaSans</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 26px; font-weight: 340; line-height: 1.35; letter-spacing: -0.26px;">Sub-heading Light</div>
|
||||
<div class="type-sample-label">Sub-heading Light -- 26px / wt 340 / lh 1.35 / ls -0.26px -- figmaSans</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 24px; font-weight: 700; line-height: 1.45; letter-spacing: normal;">Feature Title Bold</div>
|
||||
<div class="type-sample-label">Feature Title -- 24px / wt 700 / lh 1.45 / ls normal -- figmaSans</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 20px; font-weight: 330; line-height: 1.4; letter-spacing: -0.14px;">Body large text for descriptions and introductions. The light weight creates an airy, ethereal reading experience that matches the design-tool aesthetic.</div>
|
||||
<div class="type-sample-label">Body Large -- 20px / wt 330 / lh 1.40 / ls -0.14px -- figmaSans</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 18px; font-weight: 320; line-height: 1.45; letter-spacing: -0.26px;">Body light text at the lightest variable weight. Nearly imperceptible thinness for secondary content and delicate UI copy.</div>
|
||||
<div class="type-sample-label">Body Light -- 18px / wt 320 / lh 1.45 / ls -0.26px -- figmaSans</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-sans); font-size: 16px; font-weight: 400; line-height: 1.45; letter-spacing: -0.14px;">Standard body text for paragraphs, navigation links, and button labels. The default reading weight for all UI copy.</div>
|
||||
<div class="type-sample-label">Body / Button -- 16px / wt 400 / lh 1.45 / ls -0.14px -- figmaSans</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 18px; font-weight: 400; line-height: 1.3; letter-spacing: 0.54px; text-transform: uppercase;">MONO SECTION LABEL</div>
|
||||
<div class="type-sample-label">Mono Label -- 18px / wt 400 / lh 1.30 / ls 0.54px / uppercase -- figmaMono</div>
|
||||
</div>
|
||||
|
||||
<div class="type-sample">
|
||||
<div class="type-sample-text" style="font-family: var(--font-mono); font-size: 12px; font-weight: 400; line-height: 1.0; letter-spacing: 0.6px; text-transform: uppercase;">MONO SMALL TAG</div>
|
||||
<div class="type-sample-label">Mono Small -- 12px / wt 400 / lh 1.00 / ls 0.6px / uppercase -- figmaMono</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- BUTTONS -->
|
||||
<section class="section" id="buttons">
|
||||
<div class="section-title">03 / BUTTON VARIANTS</div>
|
||||
<h2 class="section-heading">Buttons</h2>
|
||||
|
||||
<div class="button-row">
|
||||
<div class="button-demo">
|
||||
<button class="btn-black-pill">Get started</button>
|
||||
<div class="button-demo-label">Black Pill CTA</div>
|
||||
</div>
|
||||
<div class="button-demo">
|
||||
<button class="btn-white-pill">Learn more</button>
|
||||
<div class="button-demo-label">White Pill</div>
|
||||
</div>
|
||||
<div class="button-demo">
|
||||
<button class="btn-black-circle" aria-label="Menu">☰</button>
|
||||
<div class="button-demo-label">Black Circle</div>
|
||||
</div>
|
||||
<div class="button-demo">
|
||||
<button class="btn-glass-dark" aria-label="Play">▶</button>
|
||||
<div class="button-demo-label">Glass Dark</div>
|
||||
</div>
|
||||
<div class="button-demo">
|
||||
<div class="glass-light-wrapper">
|
||||
<button class="btn-glass-light-demo" aria-label="Close">×</button>
|
||||
</div>
|
||||
<div class="button-demo-label">Glass Light</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="focus-demo-row">
|
||||
<div>
|
||||
<div class="focus-demo-label">Dashed Focus Indicator</div>
|
||||
<p style="font-size: 14px; color: var(--text-muted); font-weight: 340; margin-bottom: 16px;">All interactive elements use <code style="font-family: var(--font-mono); font-size: 12px; background: var(--glass-surface); padding: 2px 6px; border-radius: 4px;">dashed 2px</code> outline on focus, echoing the selection handles in the Figma editor.</p>
|
||||
</div>
|
||||
<div style="display: flex; gap: 16px; align-items: center;">
|
||||
<button class="btn-black-pill btn-focus-visible">Focused Pill</button>
|
||||
<button class="btn-black-circle btn-focus-visible" aria-label="Focused">✓</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- CARDS -->
|
||||
<section class="section" id="cards">
|
||||
<div class="section-title">04 / CARD EXAMPLES</div>
|
||||
<h2 class="section-heading">Cards & Containers</h2>
|
||||
|
||||
<div class="card-grid">
|
||||
<div class="card card-standard">
|
||||
<div class="card-label">STANDARD CARD</div>
|
||||
<h3>Minimal Border</h3>
|
||||
<p>Standard content card with subtle border and 8px radius. The default container for features and content sections on the white gallery surface.</p>
|
||||
</div>
|
||||
<div class="card card-elevated">
|
||||
<div class="card-label">ELEVATED CARD</div>
|
||||
<h3>Subtle Shadow</h3>
|
||||
<p>Floating card with subtle shadow elevation. Used for product showcases and hover states where the card lifts off the surface.</p>
|
||||
</div>
|
||||
<div class="card card-glass">
|
||||
<div class="card-label">GLASS SURFACE</div>
|
||||
<h3>Glass Overlay</h3>
|
||||
<p>Glass-effect card using rgba(0,0,0,0.08) background. Secondary containers and grouped content areas with a translucent feel.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- SPACING -->
|
||||
<section class="section" id="spacing">
|
||||
<div class="section-title">05 / SPACING SCALE</div>
|
||||
<h2 class="section-heading">Spacing System</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 32px; font-weight: 340; font-size: 18px; letter-spacing: -0.26px;">Base unit: 8px. Scale from 1px to 50px.</p>
|
||||
|
||||
<div class="spacing-row">
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 4px; height: 4px;"></div><div class="spacing-label">1px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 8px; height: 8px;"></div><div class="spacing-label">2px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 16px; height: 16px;"></div><div class="spacing-label">4px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 32px; height: 32px;"></div><div class="spacing-label">8px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 40px; height: 40px;"></div><div class="spacing-label">10px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 48px; height: 48px;"></div><div class="spacing-label">12px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 64px; height: 64px;"></div><div class="spacing-label">16px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 72px; height: 72px;"></div><div class="spacing-label">18px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 96px; height: 96px;"></div><div class="spacing-label">24px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 128px; height: 128px;"></div><div class="spacing-label">32px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 160px; height: 160px;"></div><div class="spacing-label">40px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 192px; height: 192px;"></div><div class="spacing-label">48px</div></div>
|
||||
<div class="spacing-item"><div class="spacing-box" style="width: 200px; height: 200px;"></div><div class="spacing-label">50px</div></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- BORDER RADIUS -->
|
||||
<section class="section">
|
||||
<div class="section-title">06 / BORDER RADIUS SCALE</div>
|
||||
<h2 class="section-heading">Border Radius</h2>
|
||||
|
||||
<div class="radius-row">
|
||||
<div class="radius-item"><div class="radius-box" style="border-radius: 2px;"></div><div class="radius-label">2px</div><div class="radius-context">Small links</div></div>
|
||||
<div class="radius-item"><div class="radius-box" style="border-radius: 6px;"></div><div class="radius-label">6px</div><div class="radius-context">Small containers</div></div>
|
||||
<div class="radius-item"><div class="radius-box" style="border-radius: 8px;"></div><div class="radius-label">8px</div><div class="radius-context">Cards, images</div></div>
|
||||
<div class="radius-item"><div class="radius-box" style="border-radius: 50px; width: 120px;"></div><div class="radius-label">50px</div><div class="radius-context">Pill buttons</div></div>
|
||||
<div class="radius-item"><div class="radius-box" style="border-radius: 50%;"></div><div class="radius-label">50%</div><div class="radius-context">Circle / Icon</div></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<hr class="section-divider">
|
||||
|
||||
<!-- ELEVATION -->
|
||||
<section class="section" id="elevation">
|
||||
<div class="section-title">07 / ELEVATION & DEPTH</div>
|
||||
<h2 class="section-heading">Depth & Elevation</h2>
|
||||
|
||||
<div class="elevation-grid">
|
||||
<div class="elevation-card elevation-flat">
|
||||
<div><div class="elevation-name">Flat</div><div class="elevation-desc">No shadow. Page background and most text. The default surface.</div></div>
|
||||
<div class="elevation-level">Level 0</div>
|
||||
</div>
|
||||
<div class="elevation-card elevation-surface">
|
||||
<div><div class="elevation-name">Surface</div><div class="elevation-desc">White card on gradient or dark section. Primary depth through background contrast.</div></div>
|
||||
<div class="elevation-level">Level 1</div>
|
||||
</div>
|
||||
<div class="elevation-card elevation-elevated">
|
||||
<div><div class="elevation-name">Elevated</div><div class="elevation-desc">Subtle shadow for floating cards and hover states. Sparingly applied.</div></div>
|
||||
<div class="elevation-level">Level 2</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div style="height: 80px;"></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user