lian-build/assets/branding/index.html

1063 lines
41 KiB
HTML
Raw Normal View History

2026-05-04 18:23:52 +01:00
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Lian Build — Branding Assets</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box }
html { scroll-behavior: smooth }
:root {
--lb-flame: #e86c2f;
--lb-amber: #f5a623;
--lb-gold: #bd9156;
--lb-forge: #f29a3d;
--lb-char: #c25a1a;
--lb-ash: #a8a8a0;
--lb-core: #fcd99e;
--lb-dark: #0d1117;
--bg-primary: #ffffff;
--bg-secondary: #f8f7f5;
--text-primary: #1a1a14;
--text-secondary: #6b6b5e;
--border-color: #e5e3de;
--card-bg: #ffffff;
--card-shadow: rgba(232, 108, 47, 0.15);
}
body.dark-mode {
--bg-primary: #0d1117;
--bg-secondary: #141920;
--text-primary: #e8e6e0;
--text-secondary: #a8a49a;
--border-color: #252d36;
--card-bg: #161c24;
--card-shadow: rgba(245, 166, 35, 0.12);
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
background: var(--bg-primary);
color: var(--text-primary);
transition: background 0.3s ease, color 0.3s ease;
padding: 20px;
}
.container { max-width: 1400px; margin: 0 auto }
header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 40px;
padding: 30px;
background: linear-gradient(135deg, #e86c2f 0%, #f5a623 60%, #fcd99e 100%);
color: white;
border-radius: 12px;
flex-wrap: wrap;
gap: 20px;
}
body.dark-mode header { background: linear-gradient(135deg, #1a0e06 0%, #2a1a08 60%, #0d1117 100%) }
header h1 { font-size: 1.6rem; font-weight: 700; letter-spacing: 0.5px }
header p { opacity: 0.9; font-size: 0.95rem; margin-top: 4px }
/* Navigation */
nav {
position: sticky;
top: 0;
background-color: rgba(255, 255, 255, 0.88);
border-bottom: 2px solid var(--border-color);
padding: 15px 0;
z-index: 100;
backdrop-filter: blur(10px);
}
body.dark-mode nav { background-color: rgba(13, 17, 23, 0.88) }
nav .nav-container {
max-width: 1400px;
margin: 0 auto;
padding: 0 20px;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 15px;
}
nav h2 {
font-size: 1.1rem;
font-weight: 700;
background: linear-gradient(135deg, var(--lb-gold), var(--lb-flame));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin: 0;
}
nav ul {
display: flex;
list-style: none;
gap: 20px;
align-items: center;
margin: 0;
padding: 0;
flex-wrap: wrap;
}
nav a {
color: var(--text-secondary);
text-decoration: none;
font-size: 0.9rem;
font-weight: 500;
transition: color 0.3s ease;
}
nav a:hover { color: var(--lb-flame) }
nav .theme-toggle {
padding: 8px 16px;
background: rgba(232, 108, 47, 0.10);
border: 2px solid var(--lb-flame);
color: var(--lb-flame);
border-radius: 6px;
cursor: pointer;
font-weight: 600;
transition: all 0.3s ease;
font-size: 0.85rem;
}
nav .theme-toggle:hover { background: var(--lb-flame); color: white }
section { scroll-margin-top: 80px; margin-bottom: 60px }
.section-title {
font-size: 1.6rem;
font-weight: 700;
color: var(--lb-flame);
margin: 40px 0 20px 0;
padding-bottom: 10px;
border-bottom: 3px solid var(--lb-ash);
}
.gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 25px;
margin-bottom: 40px;
}
/* Cards */
.card {
background: var(--card-bg);
border: 2px solid var(--border-color);
border-radius: 12px;
overflow: hidden;
transition: all 0.3s ease;
display: flex;
flex-direction: column;
}
.card:hover {
box-shadow: 0 12px 24px var(--card-shadow);
transform: translateY(-4px);
border-color: var(--lb-flame);
}
.card-preview {
background: var(--bg-secondary);
padding: 30px;
height: 280px;
display: flex;
align-items: center;
justify-content: center;
border-bottom: 1px solid var(--border-color);
flex-shrink: 0;
cursor: pointer;
transition: opacity 0.2s ease;
}
.card-preview:hover { opacity: 0.9 }
.card-preview img { width: 100%; max-height: 220px; object-fit: contain; }
.card-info {
padding: 20px;
flex-grow: 1;
display: flex;
flex-direction: column;
}
.card-title {
font-size: 1.1rem;
font-weight: 600;
color: var(--lb-flame);
margin-bottom: 8px;
}
.card-label {
display: inline-block;
background: rgba(232, 108, 47, 0.12);
color: var(--lb-flame);
padding: 3px 10px;
border-radius: 4px;
font-size: 0.75rem;
font-weight: 600;
margin-bottom: 10px;
width: fit-content;
}
.card-label.label-static { background: rgba(189,145,86,0.12); color: var(--lb-gold) }
.card-label.label-dark { background: rgba(168,168,160,0.12); color: var(--lb-ash) }
.card-label.label-mono { background: rgba(168,168,160,0.10); color: var(--lb-ash) }
.card-specs {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
margin: 15px 0;
padding: 15px 0;
border-top: 1px solid var(--border-color);
border-bottom: 1px solid var(--border-color);
flex-grow: 1;
font-size: 0.85rem;
}
.spec-item { display: flex; flex-direction: column }
.spec-label { color: var(--text-secondary); font-weight: 500; margin-bottom: 3px }
.spec-value { color: var(--lb-flame); font-weight: 600 }
body.dark-mode .spec-value { color: var(--lb-amber) }
.file-name-row { margin-top: 12px }
.file-name {
display: flex;
align-items: center;
gap: 8px;
padding: 6px 10px;
border-radius: 4px;
background: rgba(232, 108, 47, 0.06);
font-family: 'Monaco', 'Courier New', monospace;
font-size: 0.82rem;
color: var(--text-secondary);
justify-content: space-between;
}
body.dark-mode .file-name { background: rgba(189,145,86,0.06) }
.copy-btn {
background: none;
border: none;
cursor: pointer;
font-size: 1rem;
padding: 2px 6px;
transition: transform 0.2s ease;
flex-shrink: 0;
}
.copy-btn:hover { transform: scale(1.2) }
/* Color Palette */
.color-palette {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
gap: 15px;
margin-bottom: 40px;
}
.color-box {
border-radius: 8px;
overflow: hidden;
border: 2px solid var(--border-color);
transition: all 0.3s ease;
}
.color-box:hover { transform: scale(1.05); border-color: var(--lb-flame) }
.color-sample { height: 80px; width: 100% }
.color-name {
padding: 10px;
background: var(--card-bg);
text-align: center;
font-size: 0.85rem;
font-weight: 600;
color: var(--text-primary);
}
.color-value {
display: flex;
align-items: center;
justify-content: space-between;
padding: 5px 10px;
background: var(--bg-secondary);
font-family: 'Monaco', 'Courier New', monospace;
font-size: 0.75rem;
color: var(--text-secondary);
cursor: pointer;
}
.color-value:hover { color: var(--lb-flame) }
/* Typography */
.typography-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 25px;
margin-bottom: 40px;
}
.font-sample {
background: var(--card-bg);
border: 2px solid var(--border-color);
border-radius: 8px;
padding: 25px;
transition: all 0.3s ease;
}
.font-sample:hover { border-color: var(--lb-flame); box-shadow: 0 8px 16px var(--card-shadow) }
.font-label {
font-size: 0.78rem;
color: var(--text-secondary);
font-weight: 600;
margin-bottom: 10px;
text-transform: uppercase;
letter-spacing: 0.8px;
}
.font-display {
color: var(--text-primary);
margin-bottom: 15px;
line-height: 1.3;
padding-bottom: 15px;
border-bottom: 1px solid var(--border-color);
}
.font-specs {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 10px;
font-size: 0.85rem;
}
.font-spec-item { display: flex; flex-direction: column }
.font-spec-label { color: var(--text-secondary); font-size: 0.75rem; margin-bottom: 3px }
.font-spec-value { color: var(--lb-flame); font-weight: 600; font-family: 'Monaco','Courier New',monospace }
body.dark-mode .font-spec-value { color: var(--lb-amber) }
/* Info box */
.info-box {
background: var(--card-bg);
border: 1px solid var(--border-color);
border-left: 4px solid var(--lb-flame);
padding: 20px;
margin-bottom: 20px;
border-radius: 6px;
}
.info-box h3 { color: var(--lb-flame); margin-bottom: 10px; font-size: 1rem }
.info-box p { color: var(--text-secondary); line-height: 1.6; font-size: 0.9rem }
/* Scalability */
.scalability-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
gap: 30px;
margin-bottom: 40px;
}
.scalability-item { text-align: center }
.scalability-item-display {
display: flex;
align-items: center;
justify-content: center;
background: var(--bg-secondary);
border: 2px solid var(--border-color);
border-radius: 8px;
margin-bottom: 12px;
height: 220px;
transition: all 0.3s ease;
}
.scalability-item-display:hover { border-color: var(--lb-flame); box-shadow: 0 8px 16px var(--card-shadow) }
.scalability-size { font-weight: 700; color: var(--text-primary); font-size: 1rem; margin-bottom: 4px }
.scalability-use { font-size: 0.85rem; color: var(--text-secondary) }
footer {
margin-top: 60px;
padding: 30px;
border-top: 1px solid var(--border-color);
text-align: center;
color: var(--text-secondary);
font-size: 0.85rem;
}
@media (max-width: 768px) {
header { flex-direction: column; text-align: center }
.section-title { font-size: 1.3rem }
.gallery { grid-template-columns: 1fr }
nav ul { gap: 12px }
}
</style>
</head>
<body>
<nav>
<div class="nav-container">
<h2>Lian Build Branding</h2>
<ul>
<li><a href="#logos">Logos</a></li>
<li><a href="#icons">Icons</a></li>
<li><a href="#mono">Monochrome</a></li>
<li><a href="#scalability">Scalability</a></li>
<li><a href="#colors">Colors</a></li>
<li><a href="#typography">Typography</a></li>
<li><a href="#guidelines">Guidelines</a></li>
<button class="theme-toggle" onclick="toggleTheme()">🌙 Dark</button>
</ul>
</div>
</nav>
<div class="container">
<header>
<div>
<h1>Lian Build</h1>
<p>Fire without the ash.</p>
<p style="opacity:0.78; font-size:0.85rem; margin-top:3px;">Ephemeral crucibles that refine code into reproducible artifacts</p>
</div>
<div style="text-align:right; align-self:center;">
<p style="font-size:0.88rem; font-weight:600; color:#e86c2f; margin:0;">Branding Assets</p>
</div>
</header>
<!-- Logo Variants -->
<section id="logos">
<h2 class="section-title">Logo Variants</h2>
<div class="gallery">
<div class="card">
<div class="card-preview" onclick="window.open('lian-h.svg','_blank')">
<img src="lian-h.svg" alt="Lian Build Horizontal"/>
</div>
<div class="card-info">
<div class="card-title">Horizontal</div>
<div class="card-label">ANIMATED</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">ViewBox</span>
<span class="spec-value">163×90</span>
</div>
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Headers</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-h.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" onclick="window.open('lian-v.svg','_blank')">
<img src="lian-v.svg" alt="Lian Build Vertical"/>
</div>
<div class="card-info">
<div class="card-title">Vertical</div>
<div class="card-label">ANIMATED</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">ViewBox</span>
<span class="spec-value">110×160</span>
</div>
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Mobile</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-v.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" onclick="window.open('lian-h-static.svg','_blank')">
<img src="lian-h-static.svg" alt="Lian Build Horizontal Static"/>
</div>
<div class="card-info">
<div class="card-title">Horizontal Static</div>
<div class="card-label label-static">STATIC</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">ViewBox</span>
<span class="spec-value">163×90</span>
</div>
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Print</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-h-static.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" onclick="window.open('lian-v-static.svg','_blank')">
<img src="lian-v-static.svg" alt="Lian Build Vertical Static"/>
</div>
<div class="card-info">
<div class="card-title">Vertical Static</div>
<div class="card-label label-static">STATIC</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">ViewBox</span>
<span class="spec-value">110×160</span>
</div>
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Print</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-v-static.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" style="background:#0d1117;" onclick="window.open('lian-dark-h.svg','_blank')">
<img src="lian-dark-h.svg" alt="Lian Build Dark Horizontal"/>
</div>
<div class="card-info">
<div class="card-title">Dark Horizontal</div>
<div class="card-label label-dark">DARK</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">ViewBox</span>
<span class="spec-value">163×90</span>
</div>
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Dark BG</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-dark-h.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" style="background:#0d1117;" onclick="window.open('lian-dark-v.svg','_blank')">
<img src="lian-dark-v.svg" alt="Lian Build Dark Vertical"/>
</div>
<div class="card-info">
<div class="card-title">Dark Vertical</div>
<div class="card-label label-dark">DARK</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">ViewBox</span>
<span class="spec-value">110×160</span>
</div>
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Dark BG</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-dark-v.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Icon Variants -->
<section id="icons">
<h2 class="section-title">Icon Variants</h2>
<div class="gallery">
<div class="card">
<div class="card-preview" onclick="window.open('lian-icon.svg','_blank')">
<img src="lian-icon.svg" alt="Lian Build Icon"/>
</div>
<div class="card-info">
<div class="card-title">Icon</div>
<div class="card-label">ANIMATED</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">ViewBox</span>
<span class="spec-value">100×90</span>
</div>
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Apps</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-icon.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" onclick="window.open('lian-icon-static.svg','_blank')">
<img src="lian-icon-static.svg" alt="Lian Build Icon Static"/>
</div>
<div class="card-info">
<div class="card-title">Icon Static</div>
<div class="card-label label-static">STATIC</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">ViewBox</span>
<span class="spec-value">100×90</span>
</div>
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Print</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-icon-static.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" onclick="window.open('lian-text.svg','_blank')">
<img src="lian-text.svg" alt="Lian Build Wordmark"/>
</div>
<div class="card-info">
<div class="card-title">Text / Wordmark</div>
<div class="card-label">ANIMATED</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">ViewBox</span>
<span class="spec-value">240×90</span>
</div>
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Wordmark</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-text.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Monochrome -->
<section id="mono">
<h2 class="section-title">Monochrome Variants</h2>
<div class="gallery">
<div class="card">
<div class="card-preview" style="background:#f5f5f0;" onclick="window.open('lian-mono-black-h.svg','_blank')">
<img src="lian-mono-black-h.svg" alt="Lian Build Mono Black Horizontal"/>
</div>
<div class="card-info">
<div class="card-title">Mono Black Horizontal</div>
<div class="card-label label-mono">MONO</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Light BG</span>
</div>
<div class="spec-item">
<span class="spec-label">Format</span>
<span class="spec-value">SVG</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-mono-black-h.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" style="background:#f5f5f0;" onclick="window.open('lian-mono-black-v.svg','_blank')">
<img src="lian-mono-black-v.svg" alt="Lian Build Mono Black Vertical"/>
</div>
<div class="card-info">
<div class="card-title">Mono Black Vertical</div>
<div class="card-label label-mono">MONO</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Light BG</span>
</div>
<div class="spec-item">
<span class="spec-label">Format</span>
<span class="spec-value">SVG</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-mono-black-v.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" style="background:#0d1117;" onclick="window.open('lian-mono-white-h.svg','_blank')">
<img src="lian-mono-white-h.svg" alt="Lian Build Mono White Horizontal"/>
</div>
<div class="card-info">
<div class="card-title">Mono White Horizontal</div>
<div class="card-label label-mono">MONO</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Dark BG</span>
</div>
<div class="spec-item">
<span class="spec-label">Format</span>
<span class="spec-value">SVG</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-mono-white-h.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-preview" style="background:#0d1117;" onclick="window.open('lian-mono-white-v.svg','_blank')">
<img src="lian-mono-white-v.svg" alt="Lian Build Mono White Vertical"/>
</div>
<div class="card-info">
<div class="card-title">Mono White Vertical</div>
<div class="card-label label-mono">MONO</div>
<div class="card-specs">
<div class="spec-item">
<span class="spec-label">Use</span>
<span class="spec-value">Dark BG</span>
</div>
<div class="spec-item">
<span class="spec-label">Format</span>
<span class="spec-value">SVG</span>
</div>
</div>
<div class="file-name-row">
<div class="file-name">
<span>lian-mono-white-v.svg</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Scalability Test -->
<section id="scalability">
<h2 class="section-title">Scalability Test</h2>
<div class="info-box" style="margin-bottom:30px;">
<p>Icon clarity at different sizes — from favicon to app icon</p>
</div>
<div class="scalability-grid">
<div class="scalability-item">
<div class="scalability-item-display">
<img src="lian-icon-static.svg" width="16" height="16" alt="16×16"/>
</div>
<div class="scalability-size">16×16</div>
<div class="scalability-use">Favicon</div>
</div>
<div class="scalability-item">
<div class="scalability-item-display">
<img src="lian-icon-static.svg" width="32" height="32" alt="32×32"/>
</div>
<div class="scalability-size">32×32</div>
<div class="scalability-use">Browser tab</div>
</div>
<div class="scalability-item">
<div class="scalability-item-display">
<img src="lian-icon-static.svg" width="64" height="64" alt="64×64"/>
</div>
<div class="scalability-size">64×64</div>
<div class="scalability-use">App icon</div>
</div>
<div class="scalability-item">
<div class="scalability-item-display">
<img src="lian-icon-static.svg" width="128" height="128" alt="128×128"/>
</div>
<div class="scalability-size">128×128</div>
<div class="scalability-use">Apple touch</div>
</div>
<div class="scalability-item">
<div class="scalability-item-display">
<img src="lian-icon-static.svg" width="200" height="200" alt="200×200"/>
</div>
<div class="scalability-size">200×200</div>
<div class="scalability-use">PWA icon</div>
</div>
</div>
</section>
<!-- Color Palette -->
<section id="colors">
<h2 class="section-title">Color Palette</h2>
<div class="color-palette">
<div class="color-box">
<div class="color-sample" style="background:#e86c2f;"></div>
<div class="color-name">Flame</div>
<div class="color-value" onclick="copyColorValue(this)"><span>#e86c2f</span><span>📋</span></div>
</div>
<div class="color-box">
<div class="color-sample" style="background:#f5a623;"></div>
<div class="color-name">Amber</div>
<div class="color-value" onclick="copyColorValue(this)"><span>#f5a623</span><span>📋</span></div>
</div>
<div class="color-box">
<div class="color-sample" style="background:#fcd99e;"></div>
<div class="color-name">Core</div>
<div class="color-value" onclick="copyColorValue(this)"><span>#fcd99e</span><span>📋</span></div>
</div>
<div class="color-box">
<div class="color-sample" style="background:#bd9156;"></div>
<div class="color-name">Gold</div>
<div class="color-value" onclick="copyColorValue(this)"><span>#bd9156</span><span>📋</span></div>
</div>
<div class="color-box">
<div class="color-sample" style="background:#f29a3d;"></div>
<div class="color-name">Forge</div>
<div class="color-value" onclick="copyColorValue(this)"><span>#f29a3d</span><span>📋</span></div>
</div>
<div class="color-box">
<div class="color-sample" style="background:#c25a1a;"></div>
<div class="color-name">Char</div>
<div class="color-value" onclick="copyColorValue(this)"><span>#c25a1a</span><span>📋</span></div>
</div>
<div class="color-box">
<div class="color-sample" style="background:#a8a8a0; border-top:1px solid #ddd;"></div>
<div class="color-name">Ash</div>
<div class="color-value" onclick="copyColorValue(this)"><span>#a8a8a0</span><span>📋</span></div>
</div>
<div class="color-box">
<div class="color-sample" style="background:#0d1117;"></div>
<div class="color-name">Dark</div>
<div class="color-value" onclick="copyColorValue(this)"><span>#0d1117</span><span>📋</span></div>
</div>
</div>
</section>
<!-- Typography -->
<section id="typography">
<h2 class="section-title">Typography</h2>
<div class="typography-grid">
<div class="font-sample">
<div class="font-label">Wordmark</div>
<div class="font-display" style="font-size:2rem; font-weight:500; letter-spacing:.22em; color:#bd9156; font-family:'Jost','Avenir Next',Futura,system-ui,sans-serif;">lian</div>
<div class="font-specs">
<div class="font-spec-item">
<span class="font-spec-label">Family</span>
<span class="font-spec-value">Jost</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Weight</span>
<span class="font-spec-value">500</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Tracking</span>
<span class="font-spec-value">.22em</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Use</span>
<span class="font-spec-value">Logo, H1</span>
</div>
</div>
</div>
<div class="font-sample">
<div class="font-label">Subtitle</div>
<div class="font-display" style="font-size:1rem; font-weight:500; letter-spacing:.22em; color:#f29a3d; font-family:'Jost','Avenir Next',Futura,system-ui,sans-serif;">build</div>
<div class="font-specs">
<div class="font-spec-item">
<span class="font-spec-label">Family</span>
<span class="font-spec-value">Jost</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Weight</span>
<span class="font-spec-value">500</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Size</span>
<span class="font-spec-value">14px SVG</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Use</span>
<span class="font-spec-value">Subtitle</span>
</div>
</div>
</div>
<div class="font-sample">
<div class="font-label">UI / Body</div>
<div class="font-display" style="font-size:1rem; font-weight:400;">Fire without the ash.</div>
<div class="font-specs">
<div class="font-spec-item">
<span class="font-spec-label">Family</span>
<span class="font-spec-value">System stack</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Weight</span>
<span class="font-spec-value">400</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Size</span>
<span class="font-spec-value">16px</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Use</span>
<span class="font-spec-value">Body text</span>
</div>
</div>
</div>
<div class="font-sample">
<div class="font-label">Code / Files</div>
<div class="font-display" style="font-size:0.9rem; font-family:'Monaco','Courier New',monospace;">lian-h.svg</div>
<div class="font-specs">
<div class="font-spec-item">
<span class="font-spec-label">Family</span>
<span class="font-spec-value">Monaco</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Weight</span>
<span class="font-spec-value">400</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Size</span>
<span class="font-spec-value">14px</span>
</div>
<div class="font-spec-item">
<span class="font-spec-label">Use</span>
<span class="font-spec-value">Code, files</span>
</div>
</div>
</div>
</div>
<div class="info-box" style="margin-top:30px;">
<h3>Font Usage</h3>
<p style="margin-bottom:16px;">Jost (weight 500, tracking .22em) for the wordmark and subtitle. System font stack for all UI elements. The code symbols (<code style="font-size:.85em;">&lt;/&gt;</code>) inside the flame glyph are drawn as SVG paths — no font dependency.</p>
<div style="font-weight:600; color:var(--text-primary); margin-bottom:8px; font-size:0.9rem;">Google Fonts import:</div>
<div class="file-name" style="margin-bottom:12px;">
<span>@import url('https://fonts.googleapis.com/css2?family=Jost:wght@400;500&display=swap');</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
<div style="font-weight:600; color:var(--text-primary); margin-bottom:8px; font-size:0.9rem;">CSS font-family (wordmark fallback):</div>
<div class="file-name">
<span>font-family: "Jost", "Avenir Next", Futura, "Century Gothic", "Helvetica Neue", system-ui, sans-serif;</span>
<button class="copy-btn" onclick="copyToClipboard(this)">📋</button>
</div>
</div>
</section>
<!-- Guidelines -->
<section id="guidelines">
<h2 class="section-title">Usage Guidelines</h2>
<div class="info-box">
<h3>Logo Usage</h3>
<p>Use the <strong>horizontal logo</strong> for primary brand identification on websites, headers, and marketing materials. The vertical variant works well for mobile, splash screens, and posters. For print and PDFs, always use the <strong>static variants</strong> (no animations). Maintain a minimum of 15px clear space around all logos. Never distort, rotate, or modify the aspect ratio.</p>
</div>
<div class="info-box">
<h3>Color Palette</h3>
<p><strong>Flame (#e86c2f)</strong> and <strong>Amber (#f5a623)</strong> are the primary brand colors — they represent the forge: heat, transformation, and precision engineering. <strong>Gold (#bd9156)</strong> is used for the wordmark "lian", conveying maturity and craft. <strong>Forge (#f29a3d)</strong> is used for the subtitle "build". Use <strong>Dark (#0d1117)</strong> as the background for dark-mode contexts. Monochrome variants are for print and accessibility requirements.</p>
</div>
<div class="info-box">
<h3>Typography</h3>
<p>Use <strong>Jost</strong> (weight 500, letter-spacing .22em) for the wordmark "lian" and subtitle "build". The font conveys geometric clarity while remaining approachable. For all UI elements and body text, use the <strong>system font stack</strong>. For filenames, code snippets, and hex values, use <strong>Monaco / Courier New</strong> monospace. The <code style="font-size:.85em;">&lt;/&gt;</code> code symbol inside the flame is drawn as pure SVG paths — no external font required.</p>
</div>
<div class="info-box">
<h3>Icon / Glyph Usage</h3>
<p>Use <strong>lian-icon.svg</strong> for digital applications with animation support. Use <strong>lian-icon-static.svg</strong> for favicons, print, and contexts where animation is inappropriate. The glyph is a <strong>flame shape</strong> representing the forge metaphor — transformation through fire. The inner core pulses as a living ember. The <strong>crucible line</strong> (horizontal bar at the base) grounds the flame. The <strong>&lt;/&gt;</strong> code marks inside the flame link build systems to software craft.</p>
</div>
<div class="info-box">
<h3>Dark Mode</h3>
<p>Dark backgrounds of <strong>#0d1117</strong> or darker provide optimal contrast — the flame colors are inherently bright and stand out on dark surfaces without adjustment. Use <strong>lian-dark-h.svg</strong> and <strong>lian-dark-v.svg</strong> for dark UI applications; these variants use brighter Gold (<strong>#d4a870</strong>) and Forge (<strong>#fbb555</strong>) for the text to maintain contrast. Avoid placing the standard logo on dark backgrounds without using the dark-specific variants.</p>
</div>
</section>
<footer>
<p>Lian Build Branding System v1.0 · Fire without the ash. · All assets SVG format</p>
</footer>
</div>
<script>
function toggleTheme() {
const isDark = document.body.classList.toggle('dark-mode');
const btn = document.querySelector('nav .theme-toggle');
btn.textContent = isDark ? '☀️ Light' : '🌙 Dark';
localStorage.setItem('lian-theme', isDark ? 'dark' : 'light');
}
window.addEventListener('DOMContentLoaded', () => {
const saved = localStorage.getItem('lian-theme');
if (saved === 'dark' || (!saved && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
document.body.classList.add('dark-mode');
document.querySelector('nav .theme-toggle').textContent = '☀️ Light';
}
});
function copyToClipboard(button) {
const text = button.parentElement.querySelector('span').textContent.trim();
navigator.clipboard.writeText(text).then(() => {
const original = button.textContent;
button.textContent = '✅';
setTimeout(() => { button.textContent = original; }, 2000);
});
}
function copyColorValue(element) {
const hex = element.querySelector('span').textContent.trim();
navigator.clipboard.writeText(hex).then(() => {
const icon = element.querySelectorAll('span')[1];
icon.textContent = '✓';
setTimeout(() => { icon.textContent = '📋'; }, 2000);
});
}
</script>
</body>
</html>