levkin.ca/index.html
ilia b03a9972cf Tighten Stack: five layers (L0–L4), less scroll and spacing.
Merge contact and ops into L4 surface; static footer; narrower cards and smaller offsets.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-20 22:42:25 -04:00

229 lines
7.2 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>levkin.ca — design options</title>
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
<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=DM+Sans:wght@400;500;600&family=DM+Mono:wght@400;500&display=swap" rel="stylesheet" />
<style>
:root {
--bg: #08080a;
--fg: #eceae6;
--muted: #6e6c68;
--accent: #c4a574;
--border: #1c1b19;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: 'DM Sans', system-ui, sans-serif;
background: var(--bg);
color: var(--fg);
min-height: 100vh;
line-height: 1.5;
}
.wrap { max-width: 1100px; margin: 0 auto; padding: 4rem 1.5rem 6rem; }
header { margin-bottom: 3rem; }
.eyebrow {
font-family: 'DM Mono', monospace;
font-size: 0.72rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 0.75rem;
}
h1 {
font-size: clamp(2rem, 5vw, 2.75rem);
font-weight: 600;
letter-spacing: -0.03em;
margin-bottom: 0.75rem;
}
.lead { color: var(--muted); font-size: 1.05rem; max-width: 48ch; }
.grid {
display: grid;
gap: 1.25rem;
}
@media (min-width: 640px) {
.grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
.grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1200px) {
.grid { grid-template-columns: repeat(5, 1fr); }
}
a.card {
display: block;
text-decoration: none;
color: inherit;
border: 1px solid var(--border);
border-radius: 14px;
overflow: hidden;
transition: border-color 0.2s, transform 0.2s;
}
a.card:hover {
border-color: var(--accent);
transform: translateY(-3px);
}
.preview {
height: 130px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
overflow: hidden;
font-size: 0.7rem;
}
.preview--spec {
background: #f4f1ec;
color: #1a1a18;
font-family: 'DM Mono', monospace;
letter-spacing: 0.06em;
}
.preview--slab {
background: #f5f5f0;
color: #0a0a0a;
font-weight: 800;
font-size: 2rem;
letter-spacing: -0.06em;
font-family: system-ui, sans-serif;
}
.preview--relay {
background: #1a1814;
color: #d4a574;
font-family: 'DM Mono', monospace;
letter-spacing: 0.2em;
}
.preview--relay::after {
content: '· · · ─ ─ ·';
position: absolute;
bottom: 1rem;
font-size: 0.55rem;
opacity: 0.5;
}
.preview--vault {
background: linear-gradient(160deg, #0c1410 0%, #1a2820 100%);
color: #c9b896;
font-family: 'DM Sans', sans-serif;
font-size: 0.65rem;
letter-spacing: 0.25em;
text-transform: uppercase;
}
.preview--stack {
background: #0e0e10;
flex-direction: column;
gap: 4px;
padding: 1.5rem;
}
.preview--stack .card-layer {
width: 70%;
height: 14px;
border-radius: 3px;
border: 1px solid rgba(255,255,255,0.1);
background: linear-gradient(90deg, #2a2a32, #3a3a46);
box-shadow: 0 2px 8px rgba(0,0,0,0.4);
}
.preview--stack .card-layer:nth-child(1) { width: 55%; opacity: 0.5; }
.preview--stack .card-layer:nth-child(2) { width: 62%; opacity: 0.65; }
.preview--stack .card-layer:nth-child(3) { width: 68%; opacity: 0.8; }
.preview--stack .card-layer:nth-child(4) { width: 75%; }
.preview--stack .card-layer:nth-child(5) { width: 82%; background: #4a4a58; }
.card-body { padding: 1.15rem 1.25rem 1.35rem; }
.card-body h2 { font-size: 1.05rem; font-weight: 600; margin-bottom: 0.3rem; }
.card-body p { font-size: 0.82rem; color: var(--muted); line-height: 1.4; }
.tag {
display: inline-block;
margin-top: 0.65rem;
font-family: 'DM Mono', monospace;
font-size: 0.62rem;
color: var(--accent);
letter-spacing: 0.06em;
}
.kept {
display: inline-block;
font-family: 'DM Mono', monospace;
font-size: 0.6rem;
color: var(--muted);
margin-left: 0.35rem;
}
footer {
margin-top: 3.5rem;
padding-top: 2rem;
border-top: 1px solid var(--border);
font-size: 0.8rem;
color: var(--muted);
}
footer a { color: var(--accent); text-decoration: none; }
footer code { font-family: 'DM Mono', monospace; font-size: 0.75rem; }
</style>
</head>
<body>
<div class="wrap">
<header>
<p class="eyebrow">levkin.ca · round 3</p>
<h1>Five directions.</h1>
<p class="lead">Enriched from auto, caseware, iliadobkin, and jobs — plus Stack: scroll the layers. Company-first throughout.</p>
</header>
<div class="grid">
<a class="card" href="/spec/">
<div class="preview preview--spec">GET /company → 200</div>
<div class="card-body">
<h2>Spec <span class="kept">kept</span></h2>
<p>Levkin as an RFC. Endpoints, schemas, required properties. Precise and documentation-native.</p>
<span class="tag">paper · RFC · precise</span>
</div>
</a>
<a class="card" href="/slab/">
<div class="preview preview--slab">LEV</div>
<div class="card-body">
<h2>Slab</h2>
<p>Brutalist poster. Massive type, hard edges, zero decoration. Confidence without explaining itself.</p>
<span class="tag">brutalist · bold · minimal</span>
</div>
</a>
<a class="card" href="/relay/">
<div class="preview preview--relay">RELAY</div>
<div class="card-body">
<h2>Relay</h2>
<p>Telegraph and signal chain. Messages arrive, get decoded. Communication as craft.</p>
<span class="tag">vintage · interactive · warm</span>
</div>
</a>
<a class="card" href="/vault/">
<div class="preview preview--vault">Secured</div>
<div class="card-body">
<h2>Vault</h2>
<p>Institutional trust. Deep green, brass accents. For enterprise clients who need gravitas.</p>
<span class="tag">trust · enterprise · calm</span>
</div>
</a>
<a class="card" href="/stack/">
<div class="preview preview--stack">
<span class="card-layer"></span>
<span class="card-layer"></span>
<span class="card-layer"></span>
<span class="card-layer"></span>
<span class="card-layer"></span>
</div>
<div class="card-body">
<h2>Stack</h2>
<p>Sticky card stack L0L4. Scroll peels layers back — tight, architectural, no bloat.</p>
<span class="tag">layers · scroll · architectural</span>
</div>
</a>
</div>
<footer>
<p><a href="https://git.levkin.ca">git.levkin.ca</a> · <code>cd ~/Documents/code/levkin.ca && npm run dev</code></p>
</footer>
</div>
</body>
</html>