111 lines
5.0 KiB
HTML
111 lines
5.0 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Good design · Desirable × Feasible × Viable</title>
|
||
<link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Geist:wght@400;500;600&family=Geist+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
||
<style>
|
||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||
:root {
|
||
--color-paper: #f5f5f5;
|
||
--color-ink: #2d3142;
|
||
--color-muted: #4f5d75;
|
||
--color-accent: #eb6c36;
|
||
--font-sans: 'Geist', system-ui, sans-serif;
|
||
--font-serif: 'Instrument Serif', serif;
|
||
--font-mono: 'Geist Mono', ui-monospace, monospace;
|
||
}
|
||
|
||
body {
|
||
font-family: var(--font-sans);
|
||
background: var(--color-paper);
|
||
color: var(--color-ink);
|
||
min-height: 100vh;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
padding: 3rem 2rem;
|
||
}
|
||
|
||
.frame { max-width: 1200px; width: 100%; }
|
||
|
||
.eyebrow {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.66rem;
|
||
font-weight: 500;
|
||
letter-spacing: 0.18em;
|
||
text-transform: uppercase;
|
||
color: var(--color-muted);
|
||
margin-bottom: 0.5rem;
|
||
}
|
||
|
||
h1 {
|
||
font-family: var(--font-serif);
|
||
font-size: clamp(1.5rem, 2.4vw + 0.75rem, 2rem);
|
||
font-weight: 400;
|
||
letter-spacing: -0.02em;
|
||
line-height: 1.15;
|
||
color: var(--color-ink);
|
||
margin-bottom: 1.5rem;
|
||
}
|
||
|
||
svg { width: 100%; min-width: 900px; display: block; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="frame">
|
||
<p class="eyebrow">Venn · Diagram Design</p>
|
||
<h1>Good design · Desirable × Feasible × Viable</h1>
|
||
|
||
<svg viewBox="0 0 1000 480" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="venn-title venn-desc">
|
||
<title id="venn-title">Good design · Desirable × Feasible × Viable</title>
|
||
<desc id="venn-desc">Venn diagram showing desirable, feasible, and viable product qualities intersecting at shippable.</desc>
|
||
<defs>
|
||
<!-- Chained clips isolate the all-three intersection: clip to Desirable, then to Feasible, then fill via the third circle. -->
|
||
<clipPath id="clip-desirable">
|
||
<circle cx="500" cy="180" r="140"/>
|
||
</clipPath>
|
||
<clipPath id="clip-feasible">
|
||
<circle cx="428" cy="320" r="140"/>
|
||
</clipPath>
|
||
</defs>
|
||
|
||
<rect width="100%" height="100%" fill="#f5f5f5"/>
|
||
|
||
<!-- Three set circles (stroke + very-low-opacity tint; tints compound in overlaps) -->
|
||
<!-- Desirable — top, ink -->
|
||
<circle cx="500" cy="180" r="140" fill="rgba(45,49,66,0.04)" stroke="#2d3142" stroke-width="1"/>
|
||
<!-- Feasible — bottom-left, muted -->
|
||
<circle cx="428" cy="320" r="140" fill="rgba(79,93,117,0.05)" stroke="#4f5d75" stroke-width="1"/>
|
||
<!-- Viable — bottom-right, soft -->
|
||
<circle cx="572" cy="320" r="140" fill="rgba(122,131,153,0.05)" stroke="#7a8399" stroke-width="1"/>
|
||
|
||
<!-- Focal: solid-ink triple intersection (dark fill for white text to read against) -->
|
||
<g clip-path="url(#clip-desirable)">
|
||
<g clip-path="url(#clip-feasible)">
|
||
<circle cx="572" cy="320" r="140" fill="#2d3142"/>
|
||
</g>
|
||
</g>
|
||
|
||
<!-- Set labels — positioned INSIDE each circle's non-overlapping lobe, so the diagram reads like a classic Venn -->
|
||
<!-- Desirable — top lobe (centered inside top of Desirable circle) -->
|
||
<text x="500" y="96" fill="#2d3142" font-size="14" font-weight="600" font-family="'Geist', sans-serif" text-anchor="middle">Desirable</text>
|
||
<text x="500" y="112" fill="#4f5d75" font-size="9" font-family="'Geist Mono', monospace" text-anchor="middle" letter-spacing="0.14em">PEOPLE WANT IT</text>
|
||
|
||
<!-- Feasible — bottom-left lobe -->
|
||
<text x="340" y="386" fill="#2d3142" font-size="14" font-weight="600" font-family="'Geist', sans-serif" text-anchor="middle">Feasible</text>
|
||
<text x="340" y="402" fill="#4f5d75" font-size="9" font-family="'Geist Mono', monospace" text-anchor="middle" letter-spacing="0.14em">WE CAN BUILD IT</text>
|
||
|
||
<!-- Viable — bottom-right lobe -->
|
||
<text x="660" y="386" fill="#2d3142" font-size="14" font-weight="600" font-family="'Geist', sans-serif" text-anchor="middle">Viable</text>
|
||
<text x="660" y="402" fill="#4f5d75" font-size="9" font-family="'Geist Mono', monospace" text-anchor="middle" letter-spacing="0.14em">BUSINESS SUSTAINS</text>
|
||
|
||
<!-- Focal label: white text on the dark intersection -->
|
||
<text x="500" y="268" fill="#ffffff" font-size="14" font-weight="600" font-family="'Geist', sans-serif" text-anchor="middle">Shippable</text>
|
||
<text x="500" y="284" fill="rgba(245,245,245,0.75)" font-size="9" font-family="'Geist Mono', monospace" text-anchor="middle" letter-spacing="0.14em">THE SWEET SPOT</text>
|
||
</svg>
|
||
</div>
|
||
</body>
|
||
</html>
|