Pattern catalog · 8 of 8 loaded
v1.0Spring 2026Internal reference
Web Build Templates
Pattern Reference

Pricing library

8 pricing patterns
v1.0 · Spring 2026
Live

Eight ways to display pricing — from the rigorous comparison table to name your price. Skip the three-tier card cliché when it doesn't fit.

How to use this: Match the pattern to the buying motion. Self-serve SaaS = three-tier. Considered B2B = comparison table. Project-based services = process engagement. Single-SKU = single product. The structure should mirror the actual decision the buyer is making.

Most of these patterns include working interactions (sliders, toggles) for demonstration — strip them out or wire them up depending on the build.

01

Three-Tier Classic

Card-based

The standard SaaS three-tier card layout — but executed with care. Distinctive type, considered hierarchy, middle tier emphasized. The default done well.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}body{font-family:'Geist',sans-serif;background:#fafaf7;color:#101010;line-height:1.5}
.section{padding:64px 40px;display:flex;flex-direction:column;gap:48px}
.head{max-width:600px;margin:0 auto;text-align:center;display:flex;flex-direction:column;gap:14px}
.kicker{font-family:'Geist Mono',monospace;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#666}
.h1{font-size:clamp(36px,5vw,56px);font-weight:600;letter-spacing:-.025em;line-height:1.05}
.h1 em{font-style:italic;font-weight:400}
.sub{font-size:17px;color:#555;line-height:1.5}
.toggle{display:inline-flex;align-self:center;background:#ececea;border-radius:999px;padding:4px;gap:4px;font-size:13px;font-weight:500}
.toggle button{padding:8px 18px;background:transparent;border:none;font-family:inherit;font-size:13px;font-weight:500;border-radius:999px;cursor:pointer;color:#555}
.toggle button.active{background:#fff;color:#101010;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.toggle .save{display:inline-block;margin-left:6px;padding:1px 7px;background:#16a34a;color:#fff;border-radius:999px;font-size:10px;letter-spacing:.04em}
.cards{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px;max-width:1100px;margin:0 auto;width:100%}
.card{background:#fff;border:1px solid #e5e5e3;border-radius:18px;padding:32px 28px;display:flex;flex-direction:column;gap:18px;position:relative}
.card.feat{border:2px solid #101010;background:#101010;color:#fafaf7;transform:translateY(-8px)}
.card.feat .price{color:#fafaf7}
.card.feat .feat-tag{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:#fafaf7;color:#101010;padding:4px 14px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;border:1px solid #101010}
.tier-name{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#666}
.card.feat .tier-name{color:#a3a3a0}
.tier-tag{font-size:13px;color:#555}
.card.feat .tier-tag{color:#a3a3a0}
.price-row{display:flex;align-items:baseline;gap:6px;padding:8px 0}
.price{font-size:48px;font-weight:600;letter-spacing:-.03em;line-height:1;font-family:'Geist',sans-serif}
.price-suffix{font-size:14px;color:#666}
.card.feat .price-suffix{color:#a3a3a0}
.btn{padding:13px;background:#101010;color:#fafaf7;border:none;font-family:inherit;font-weight:500;font-size:14px;border-radius:10px;cursor:pointer}
.btn:hover{background:#333}
.card.feat .btn{background:#fafaf7;color:#101010}
.card.feat .btn:hover{background:#ddd}
.card .btn.outline{background:transparent;color:#101010;border:1px solid #101010}
.card .btn.outline:hover{background:#101010;color:#fafaf7}
.feat-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:10px;font-size:14px;border-top:1px solid #e5e5e3;padding-top:18px}
.card.feat .feat-list{border-top-color:#333}
.feat-list li{display:flex;gap:10px;align-items:start}
.feat-list li::before{content:"✓";color:#16a34a;font-weight:700;flex-shrink:0;margin-top:1px}
.card.feat .feat-list li::before{color:#5eead4}
.feat-list li.muted{color:#999}
.card.feat .feat-list li.muted{color:#666}
.feat-list li.muted::before{content:"—";color:#999}
@media (max-width:880px){.cards{grid-template-columns:1fr;gap:16px}.card.feat{transform:none}.section{padding:40px 20px}}
</style></head><body><section class="section">
<header class="head"><div class="kicker">Pricing — built for any team size</div><h1 class="h1">Pricing that <em>just makes sense</em>.</h1><p class="sub">Start free. Upgrade when you outgrow it. Cancel any time, in two clicks.</p>
<div class="toggle"><button>Monthly</button><button class="active">Annual <span class="save">−20%</span></button></div></header>
<div class="cards">
<div class="card"><div class="tier-name">Starter</div><div class="tier-tag">For solo builders &amp; tinkerers</div><div class="price-row"><span class="price">$0</span><span class="price-suffix">forever</span></div><button class="btn outline">Get started →</button><ul class="feat-list"><li>Up to 3 projects</li><li>10K events / month</li><li>Community support</li><li class="muted">Custom domains</li><li class="muted">Team seats</li></ul></div>
<div class="card feat"><div class="feat-tag">Most popular</div><div class="tier-name">Pro</div><div class="tier-tag">For real teams shipping real things</div><div class="price-row"><span class="price">$24</span><span class="price-suffix">/seat / month, billed annually</span></div><button class="btn">Start 14-day trial →</button><ul class="feat-list"><li>Unlimited projects</li><li>1M events / month</li><li>Priority email support</li><li>Custom domains</li><li>Up to 10 team seats</li><li>SAML SSO</li></ul></div>
<div class="card"><div class="tier-name">Enterprise</div><div class="tier-tag">For larger organizations</div><div class="price-row"><span class="price" style="font-size:32px">Let's talk</span></div><button class="btn outline">Book a call →</button><ul class="feat-list"><li>Everything in Pro</li><li>Unlimited events</li><li>Dedicated account manager</li><li>Custom contracts &amp; SLAs</li><li>SOC 2 / HIPAA report</li><li>On-prem available</li></ul></div>
</div>
</section></body></html>
02

Comparison Table

Tabular

A single comprehensive table comparing every plan across every feature. No marketing fluff, just facts. For B2B tools where buyers need to compare carefully.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,400;9..144,600&display=swap" rel="stylesheet">
<style>*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}body{font-family:'Inter',sans-serif;background:#fff;color:#0a0a0a;line-height:1.5;font-size:14px}
.section{padding:48px 32px;display:flex;flex-direction:column;gap:36px;max-width:1200px;margin:0 auto}
.head{display:flex;flex-direction:column;gap:12px;max-width:680px}
.h1{font-family:'Fraunces',serif;font-weight:600;font-size:clamp(36px,5vw,52px);letter-spacing:-.025em;line-height:1.05}
.h1 em{font-style:italic;color:#a4341e}
.sub{font-size:16px;color:#666;max-width:60ch}
.tbl{width:100%;border-collapse:collapse;border:1px solid #e5e5e5;border-radius:14px;overflow:hidden}
.tbl thead th{background:#fafafa;padding:24px 20px;text-align:left;border-bottom:1px solid #e5e5e5;vertical-align:top;width:25%}
.tbl thead th.feat{background:#0a0a0a;color:#fff;position:relative}
.tbl thead th.feat::before{content:"Most popular";position:absolute;top:6px;right:14px;background:#a4341e;color:#fff;padding:2px 8px;font-size:10px;letter-spacing:.05em;text-transform:uppercase;border-radius:999px;font-weight:600}
.tbl thead .tier-name{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:#666;font-weight:600;margin-bottom:6px}
.tbl thead.feat .tier-name,.tbl thead th.feat .tier-name{color:#aaa}
.tbl thead .price{font-family:'Fraunces',serif;font-size:32px;font-weight:600;letter-spacing:-.02em;line-height:1;margin-bottom:4px;display:block;color:inherit}
.tbl thead .price small{font-size:13px;color:#666;font-family:'Inter',sans-serif;font-weight:500;letter-spacing:0;display:inline}
.tbl thead th.feat .price small{color:#aaa}
.tbl thead .desc{font-size:13px;color:#666;margin-bottom:14px;line-height:1.4}
.tbl thead th.feat .desc{color:#aaa}
.tbl thead .btn{display:inline-block;padding:9px 18px;background:#0a0a0a;color:#fff;border:none;font-family:inherit;font-weight:600;font-size:13px;border-radius:8px;text-decoration:none}
.tbl thead th.feat .btn{background:#fff;color:#0a0a0a}
.tbl thead .btn.outline{background:transparent;color:#0a0a0a;border:1px solid #0a0a0a}
.tbl tbody tr.section-row td{background:#f9f7f2;font-family:'Fraunces',serif;font-size:15px;font-weight:600;letter-spacing:-.01em;color:#a4341e;padding:14px 20px;text-transform:uppercase;letter-spacing:.05em;font-size:11px}
.tbl tbody tr.row td{padding:14px 20px;border-top:1px solid #f0f0f0;font-size:13px;vertical-align:middle}
.tbl tbody tr.row td:first-child{font-weight:500;color:#0a0a0a}
.tbl tbody tr.row td:first-child small{display:block;font-weight:400;color:#999;font-size:12px;margin-top:2px}
.tbl tbody td.check::before{content:"✓";color:#16a34a;font-weight:700}
.tbl tbody td.check.x::before{content:"—";color:#bbb}
.tbl tbody td b{color:#0a0a0a;font-weight:600}
.tbl tbody tr.row:hover td{background:#fafafa}
.note{display:flex;justify-content:space-between;font-size:13px;color:#666;align-items:center;flex-wrap:wrap;gap:14px}
.note b{color:#0a0a0a}
@media (max-width:880px){.section{padding:24px 16px}.tbl thead th{padding:16px 12px}.tbl tbody tr.row td{padding:10px 12px;font-size:12px}.tbl thead .price{font-size:24px}}
</style></head><body><section class="section">
<header class="head"><h1 class="h1">Pick a plan. <em>Compare every feature.</em></h1><p class="sub">No marketing fluff — just every feature on every plan, side by side, so you can choose with eyes open.</p></header>
<table class="tbl">
<thead><tr>
<th><div class="tier-name">Plans</div><div class="desc">All plans include unlimited support, weekly product updates, and our 30-day refund policy.</div></th>
<th><div class="tier-name">Starter</div><span class="price">$0<small> / forever</small></span><div class="desc">Solo, hobbyist, exploring</div><a href="#" class="btn outline">Get started</a></th>
<th class="feat"><div class="tier-name">Pro</div><span class="price">$24<small> /seat/mo</small></span><div class="desc">Real teams shipping real things</div><a href="#" class="btn">Start trial</a></th>
<th><div class="tier-name">Enterprise</div><span class="price" style="font-size:24px">Custom</span><div class="desc">Custom contracts, advanced security</div><a href="#" class="btn outline">Book a call</a></th>
</tr></thead>
<tbody>
<tr class="section-row"><td colspan="4">— Core platform</td></tr>
<tr class="row"><td>Projects<small>How many you can have at once</small></td><td>Up to 3</td><td><b>Unlimited</b></td><td><b>Unlimited</b></td></tr>
<tr class="row"><td>Events / month</td><td>10,000</td><td>1,000,000</td><td><b>Unlimited</b></td></tr>
<tr class="row"><td>Data retention</td><td>30 days</td><td>2 years</td><td><b>Custom</b></td></tr>
<tr class="row"><td>API access</td><td class="check">✓</td><td class="check">✓</td><td class="check">✓</td></tr>
<tr class="section-row"><td colspan="4">— Team &amp; collaboration</td></tr>
<tr class="row"><td>Team seats</td><td>1</td><td>Up to 10</td><td><b>Unlimited</b></td></tr>
<tr class="row"><td>Roles &amp; permissions</td><td class="check x"></td><td class="check">✓</td><td class="check">✓</td></tr>
<tr class="row"><td>SSO (SAML / OIDC)</td><td class="check x"></td><td class="check">✓</td><td class="check">✓</td></tr>
<tr class="row"><td>Audit log</td><td class="check x"></td><td>30 days</td><td><b>Unlimited</b></td></tr>
<tr class="section-row"><td colspan="4">— Support &amp; SLAs</td></tr>
<tr class="row"><td>Support channel</td><td>Community</td><td>Priority email</td><td><b>Dedicated CSM</b></td></tr>
<tr class="row"><td>Response time SLA</td><td>—</td><td>24 hours</td><td><b>1 hour</b></td></tr>
<tr class="row"><td>Uptime SLA</td><td>—</td><td>99.9%</td><td><b>99.99%</b></td></tr>
<tr class="row"><td>SOC 2 Type II report</td><td class="check x"></td><td class="check x"></td><td class="check">✓</td></tr>
</tbody>
</table>
<div class="note"><div><b>Still deciding?</b> Run a free trial of Pro for 14 days — no card required.</div><div>Questions? <a href="#" style="color:#a4341e;text-decoration:underline">Talk to sales</a></div></div>
</section></body></html>
03

Usage Calculator

Calculator

Visitor inputs their usage; the page calculates their bill in real time. For consumption-based products: APIs, infrastructure, AI inference.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&family=Geist+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}body{font-family:'Geist',sans-serif;background:#0a0512;color:#fff;line-height:1.5;min-height:100vh;position:relative;overflow:hidden}
.bg{position:absolute;inset:0;background:radial-gradient(circle at 15% 25%,#7e3aff 0%,transparent 35%),radial-gradient(circle at 85% 35%,#ff3a8c 0%,transparent 40%);filter:blur(80px);opacity:.4}
.section{padding:56px 36px;position:relative;z-index:2;display:grid;grid-template-columns:1fr 1.2fr;gap:48px;max-width:1200px;margin:0 auto;align-items:center}
.head{display:flex;flex-direction:column;gap:18px}
.kicker{font-family:'Geist Mono',monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#5eead4;display:inline-flex;align-items:center;gap:8px;padding:5px 12px;border:1px solid rgba(94,234,212,.3);border-radius:999px;width:fit-content;background:rgba(94,234,212,.06)}
.kicker::before{content:"";width:6px;height:6px;background:#5eead4;border-radius:50%}
.h1{font-size:clamp(36px,5.4vw,60px);font-weight:600;letter-spacing:-.03em;line-height:1.05}
.h1 .gradient{background:linear-gradient(135deg,#fff 0%,#ffaa3a 50%,#ff3a8c 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.sub{font-size:16px;color:rgba(255,255,255,.7);max-width:48ch;line-height:1.55}
.proof{margin-top:8px;display:flex;gap:24px;flex-wrap:wrap;font-size:13px;color:rgba(255,255,255,.6)}
.proof div b{display:block;color:#fff;font-size:24px;font-weight:600;font-family:'Geist',sans-serif;letter-spacing:-.02em}
.calc{background:rgba(255,255,255,.04);backdrop-filter:blur(24px) saturate(160%);border:1px solid rgba(255,255,255,.1);border-radius:20px;padding:28px;display:flex;flex-direction:column;gap:24px}
.calc-head{display:flex;justify-content:space-between;align-items:center}
.calc-head h3{font-size:18px;font-weight:600}
.calc-head .badge{font-family:'Geist Mono',monospace;font-size:10px;color:#5eead4;background:rgba(94,234,212,.12);padding:4px 10px;border-radius:999px;letter-spacing:.05em;text-transform:uppercase}
.fld{display:flex;flex-direction:column;gap:8px}
.fld label{display:flex;justify-content:space-between;font-size:13px;color:rgba(255,255,255,.7)}
.fld label b{color:#fff;font-family:'Geist Mono',monospace;font-size:13px}
.slider{-webkit-appearance:none;width:100%;height:6px;background:rgba(255,255,255,.1);border-radius:3px;outline:none;background:linear-gradient(90deg,#7e3aff 0%,#ff3a8c 60%,rgba(255,255,255,.1) 60%);cursor:pointer}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;background:#fff;border-radius:50%;cursor:pointer;box-shadow:0 2px 12px rgba(255,255,255,.5),0 0 0 4px rgba(126,58,255,.3)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.select-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.select-grid button{padding:10px 8px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);color:#fff;border-radius:8px;font-family:'Geist',sans-serif;font-size:13px;cursor:pointer;font-weight:500;transition:all .15s}
.select-grid button.active{background:linear-gradient(135deg,#7e3aff,#ff3a8c);border-color:transparent;font-weight:600}
.select-grid button:hover:not(.active){background:rgba(255,255,255,.08)}
.result{padding:18px 22px;background:linear-gradient(135deg,rgba(126,58,255,.18),rgba(255,58,140,.12));border:1px solid rgba(255,255,255,.12);border-radius:14px;display:flex;justify-content:space-between;align-items:flex-end}
.result .lbl{font-size:13px;color:rgba(255,255,255,.7);margin-bottom:4px}
.result .val{font-size:42px;font-weight:600;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.result .val small{font-size:14px;color:rgba(255,255,255,.6);font-weight:400;letter-spacing:0}
.result .breakdown{font-family:'Geist Mono',monospace;font-size:11px;color:rgba(255,255,255,.55);text-align:right;line-height:1.5}
.cta{padding:14px;background:#fff;color:#0a0512;border:none;font-family:inherit;font-weight:600;font-size:14px;border-radius:12px;cursor:pointer}
.cta:hover{background:#e5e5e5}
.note{font-family:'Geist Mono',monospace;font-size:11px;color:rgba(255,255,255,.4);text-align:center;letter-spacing:.04em}
@media (max-width:880px){.section{grid-template-columns:1fr;padding:32px 20px;gap:32px}}
</style></head><body><div class="bg"></div><section class="section">
<div class="head"><div class="kicker">Calculator · live update</div><h1 class="h1">Estimate your bill <span class="gradient">before</span> you build.</h1><p class="sub">No surprise invoices. Pay per token, scale to zero, and pause anytime. We're often 1/4 of what you're paying now.</p>
<div class="proof"><div>From <b>$0.02</b><span>/M tokens</span></div><div><b>2,400+</b><span>active customers</span></div><div><b>36</b><span>regions</span></div></div></div>
<div class="calc">
<div class="calc-head"><h3>Build your estimate</h3><div class="badge">Live · monthly</div></div>
<div class="fld"><label><span>Model class</span></label><div class="select-grid"><button>Small</button><button class="active">Mid</button><button>Large</button></div></div>
<div class="fld"><label><span>Input tokens</span><b>120 M / mo</b></label><input type="range" class="slider" value="60"></div>
<div class="fld"><label><span>Output tokens</span><b>40 M / mo</b></label><input type="range" class="slider" value="30"></div>
<div class="row"><div class="fld"><label><span>Region</span></label><div class="select-grid"><button class="active">US</button><button>EU</button><button>Global</button></div></div><div class="fld"><label><span>Compliance</span></label><div class="select-grid"><button class="active">Standard</button><button>SOC 2</button><button>HIPAA</button></div></div></div>
<div class="result"><div><div class="lbl">Estimated monthly</div><div class="val">$3,860<small>/mo</small></div></div><div class="breakdown">Input · $2,400<br>Output · $1,200<br>Storage · $260</div></div>
<button class="cta">Open this configuration in console →</button>
<div class="note">No credit card required to start. Pricing locked for 90 days from sign-up.</div>
</div>
</section></body></html>
04

Brutalist Spec Sheet

Brutalist

Pricing as a parts catalog or technical spec sheet. Monospace, hard borders, no marketing copy, just numbers and facts. For dev tools, technical products.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
<style>*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}body{font-family:'JetBrains Mono',monospace;background:#fafaf7;color:#000;font-size:13px;line-height:1.4}
.section{padding:36px 32px;display:flex;flex-direction:column;gap:0;max-width:1100px;margin:0 auto}
.bar{display:grid;grid-template-columns:repeat(12,1fr);border:2px solid #000;border-bottom:1px solid #000}
.bar > *{padding:14px 16px;border-right:1px solid #000;font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.bar > *:last-child{border-right:none}
.b1{grid-column:span 3;font-weight:700}
.b2{grid-column:span 6;color:#666}
.b3{grid-column:span 3;text-align:right}
.head{padding:36px 28px;border:2px solid #000;border-top:none;border-bottom:1px solid #000;display:grid;grid-template-columns:1fr auto;gap:24px;align-items:end}
.head h1{font-size:48px;font-weight:700;letter-spacing:-.03em;line-height:1;text-transform:uppercase}
.head h1 .accent{background:#e6ff3c;padding:0 8px}
.head .meta{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#666;text-align:right;line-height:1.6}
.head .meta b{display:block;color:#000;font-size:13px}
.spec-grid{display:grid;grid-template-columns:1fr 1fr 1fr;border:2px solid #000;border-top:none}
.tier{padding:0;border-right:1px solid #000;display:flex;flex-direction:column}
.tier:last-child{border-right:none}
.tier.feat{background:#000;color:#fafaf7}
.tier-head{padding:18px 22px;border-bottom:1px solid #000;background:#fafaf7}
.tier.feat .tier-head{background:#000;border-bottom-color:#333}
.tier-name{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#666;font-weight:700}
.tier.feat .tier-name{color:#a3a3a0}
.tier.feat .tier-name::after{content:" / popular";background:#e6ff3c;color:#000;padding:1px 6px;margin-left:8px;letter-spacing:.05em}
.tier-price{margin-top:6px;font-size:36px;font-weight:700;letter-spacing:-.02em;line-height:1}
.tier-price small{font-size:11px;font-weight:400;color:#666;display:block;text-transform:uppercase;letter-spacing:.06em;margin-top:4px;letter-spacing:.06em}
.tier.feat .tier-price small{color:#a3a3a0}
.tier-spec{flex:1;padding:14px 22px;font-size:12px}
.spec-row{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed rgba(0,0,0,.2)}
.spec-row:last-child{border-bottom:none}
.tier.feat .spec-row{border-bottom-color:rgba(255,255,255,.15)}
.spec-row span:first-child{color:#666}
.tier.feat .spec-row span:first-child{color:#a3a3a0}
.spec-row b{font-weight:700}
.spec-row .yes::before{content:"[✓] ";color:#0a0;font-weight:700}
.tier.feat .spec-row .yes::before{color:#e6ff3c}
.spec-row .no::before{content:"[—] ";color:#999}
.tier.feat .spec-row .no::before{color:#666}
.spec-row .no{color:#999}
.tier.feat .spec-row .no{color:#666}
.section-label{padding:8px 22px;background:rgba(0,0,0,.04);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#a4341e;font-weight:700;border-top:1px dashed rgba(0,0,0,.2);border-bottom:1px dashed rgba(0,0,0,.2);margin:6px 0}
.tier.feat .section-label{background:rgba(230,255,60,.08);color:#e6ff3c;border-color:rgba(255,255,255,.15)}
.tier-foot{padding:18px 22px;border-top:1px solid #000;background:#fafaf7}
.tier.feat .tier-foot{background:#000;border-top-color:#333}
.btn{width:100%;padding:14px;background:transparent;color:#000;border:2px solid #000;font-family:inherit;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;cursor:pointer}
.btn:hover{background:#000;color:#e6ff3c}
.tier.feat .btn{background:#e6ff3c;color:#000;border-color:#e6ff3c}
.tier.feat .btn:hover{background:#fafaf7;border-color:#fafaf7}
.bot-bar{display:grid;grid-template-columns:repeat(12,1fr);border:2px solid #000;border-top:1px solid #000;background:#000;color:#fafaf7}
.bot-bar > *{padding:12px 16px;border-right:1px solid rgba(255,255,255,.2);font-size:10px;text-transform:uppercase;letter-spacing:.06em}
.bot-bar > *:last-child{border-right:none}
.bot-bar .live::before{content:"";display:inline-block;width:8px;height:8px;background:#e6ff3c;margin-right:6px;vertical-align:middle;animation:bl 1.2s steps(2) infinite}
@keyframes bl{50%{opacity:.3}}
.bot-bar .b1{grid-column:span 4}
.bot-bar .b2{grid-column:span 4;text-align:center}
.bot-bar .b3{grid-column:span 4;text-align:right}
@media (max-width:880px){.section{padding:20px 12px}.head{grid-template-columns:1fr}.head h1{font-size:32px}.spec-grid{grid-template-columns:1fr}.tier{border-right:none;border-bottom:1px solid #000}.tier:last-child{border-bottom:none}.bar,.bot-bar{grid-template-columns:1fr}.bar > *,.bot-bar > *{grid-column:span 1!important;border-right:none;border-bottom:1px solid #000}.bot-bar > *{border-bottom-color:rgba(255,255,255,.2)}}
</style></head><body><section class="section">
<div class="bar"><div class="b1">SYS://PRICING</div><div class="b2">3 tiers · MIT licensed · self-host included</div><div class="b3">v0.4.2 · 04.21.2026</div></div>
<header class="head"><h1>Pay <span class="accent">once</span>,<br>or pay <span class="accent">a little</span>.</h1><div class="meta">No subscription required.<b>Self-host: free, forever.</b>Cloud: pay-as-you-go.</div></header>
<div class="spec-grid">
<div class="tier"><div class="tier-head"><div class="tier-name">Self-host</div><div class="tier-price">$0<small>forever / MIT</small></div></div><div class="tier-spec">
<div class="section-label">// core</div>
<div class="spec-row"><span>Source code</span><span class="yes">included</span></div>
<div class="spec-row"><span>Updates</span><span class="yes">forever</span></div>
<div class="spec-row"><span>Users</span><b>unlimited</b></div>
<div class="section-label">// support</div>
<div class="spec-row"><span>Channel</span><b>discord</b></div>
<div class="spec-row"><span>SLA</span><span class="no">none</span></div>
<div class="spec-row"><span>SOC 2</span><span class="no">no</span></div>
</div><div class="tier-foot"><button class="btn">$ install</button></div></div>
<div class="tier feat"><div class="tier-head"><div class="tier-name">Cloud</div><div class="tier-price">$24<small>/seat / mo · billed yearly</small></div></div><div class="tier-spec">
<div class="section-label">// core</div>
<div class="spec-row"><span>Hosting</span><span class="yes">managed</span></div>
<div class="spec-row"><span>Backups</span><span class="yes">daily</span></div>
<div class="spec-row"><span>Users</span><b>up to 25</b></div>
<div class="section-label">// support</div>
<div class="spec-row"><span>Channel</span><b>email · 24h</b></div>
<div class="spec-row"><span>SLA</span><b>99.9%</b></div>
<div class="spec-row"><span>SOC 2</span><span class="no">no</span></div>
</div><div class="tier-foot"><button class="btn">trial 14 days →</button></div></div>
<div class="tier"><div class="tier-head"><div class="tier-name">Enterprise</div><div class="tier-price" style="font-size:24px">Talk<small>net 30 invoicing</small></div></div><div class="tier-spec">
<div class="section-label">// core</div>
<div class="spec-row"><span>Hosting</span><b>cloud or on-prem</b></div>
<div class="spec-row"><span>Backups</span><span class="yes">configurable</span></div>
<div class="spec-row"><span>Users</span><b>unlimited</b></div>
<div class="section-label">// support</div>
<div class="spec-row"><span>Channel</span><b>dedicated</b></div>
<div class="spec-row"><span>SLA</span><b>99.99%</b></div>
<div class="spec-row"><span>SOC 2</span><span class="yes">type II</span></div>
</div><div class="tier-foot"><button class="btn">request quote →</button></div></div>
</div>
<div class="bot-bar"><div class="b1"><span class="live"></span>OPERATIONAL · 99.98%</div><div class="b2">14,832 users · 1,402 self-hosted</div><div class="b3">EOF · LAST UPDATE 14H AGO</div></div>
</section></body></html>
05

Editorial Prose

Typographic

Pricing as a paragraph of considered prose, not cards or tables. Reads like a manifesto about money. For studios, consultancies, premium services.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,600;1,9..144,400&family=Inter:wght@400;500&display=swap" rel="stylesheet">
<style>*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}body{font-family:'Inter',sans-serif;background:#f4efe6;color:#1a1814;line-height:1.6}
.section{padding:64px 48px 48px;display:grid;grid-template-columns:1.1fr 1fr;gap:64px;max-width:1200px;margin:0 auto;align-items:start}
.lhs{display:flex;flex-direction:column;gap:24px}
.kicker{font-family:'Inter',sans-serif;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#a4341e;font-weight:600;display:flex;align-items:center;gap:12px}
.kicker::before{content:"";width:32px;height:1px;background:#a4341e}
.h1{font-family:'Fraunces',serif;font-weight:400;font-size:clamp(36px,5vw,56px);line-height:1.05;letter-spacing:-.02em}
.h1 em{font-style:italic;color:#a4341e}
.lead{font-family:'Fraunces',serif;font-size:21px;line-height:1.5;color:#3a352e;font-weight:400}
.lead::first-letter{font-size:3.4em;font-weight:600;float:left;line-height:.85;margin:0.05em 0.1em 0 -0.04em;color:#a4341e}
.lead em{font-style:italic;color:#a4341e}
.sig{margin-top:14px;display:flex;align-items:center;gap:18px;font-size:13px;color:#7a6f5f}
.sig .name{font-family:'Fraunces',serif;font-style:italic;font-size:22px;color:#1a1814}
.actions{display:flex;gap:18px;align-items:center;margin-top:14px}
.btn{padding:14px 28px;background:#1a1814;color:#f4efe6;border:none;font-family:inherit;font-weight:500;font-size:14px;letter-spacing:.04em;cursor:pointer}
.btn:hover{background:#a4341e}
.text-link{color:#1a1814;text-decoration:underline;text-decoration-color:#a4341e;text-decoration-thickness:2px;text-underline-offset:4px;font-size:14px}
.rhs{display:flex;flex-direction:column;gap:20px;background:#fff;border:1px solid #d8cdb6;border-radius:14px;padding:32px}
.tier{padding:18px 0;border-bottom:1px dashed #d8cdb6}
.tier:last-child{border-bottom:none}
.tier-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:6px}
.tier-name{font-family:'Fraunces',serif;font-size:24px;font-weight:600;letter-spacing:-.01em;color:#1a1814}
.tier-name em{font-style:italic;color:#a4341e}
.tier-price{font-family:'Fraunces',serif;font-size:22px;font-weight:600;color:#1a1814;text-align:right;flex-shrink:0}
.tier-price small{display:block;font-size:11px;color:#7a6f5f;font-weight:400;letter-spacing:.06em;text-transform:uppercase;margin-top:2px;font-family:'Inter',sans-serif}
.tier-desc{font-size:14px;line-height:1.55;color:#5a5346;margin-bottom:8px}
.tier-tags{display:flex;gap:6px;flex-wrap:wrap}
.tier-tag{display:inline-block;padding:3px 10px;background:#f4efe6;color:#7a6f5f;border:1px solid #d8cdb6;border-radius:999px;font-size:11px;letter-spacing:.05em;font-family:'Inter',sans-serif}
.note{margin-top:14px;font-style:italic;font-family:'Fraunces',serif;font-size:14px;color:#7a6f5f;text-align:center;padding-top:14px;border-top:1px solid #d8cdb6}
@media (max-width:920px){.section{grid-template-columns:1fr;padding:32px 20px;gap:32px}}
</style></head><body><section class="section">
<div class="lhs"><div class="kicker">A note on money</div><h1 class="h1">We charge what we charge, and <em>we'll explain why</em>.</h1>
<p class="lead">Three things we believe about pricing. First, that the price should reflect the actual time and care a project will take, not the size of the company asking for it. Second, that the price should be visible — printed on the front of the menu, so to speak — and not extracted via a discovery call. Third, that paying us should feel <em>fair</em> when the work is done, not just at the moment of signing. Below is what most engagements cost. If your situation doesn't fit, write to us anyway.</p>
<div class="sig"><span class="name">— J. &amp; R.</span><span>partners, Sterling &amp; Crow</span></div>
<div class="actions"><button class="btn">Start a project →</button><a href="#" class="text-link">Or book a 20-min consult</a></div></div>
<div class="rhs">
<div class="tier"><div class="tier-head"><div class="tier-name">Identity</div><div class="tier-price">$24,000<small>4–6 weeks</small></div></div><p class="tier-desc">Naming, marks, type system, color, voice guidelines. The thing your accountant will care about for years.</p><div class="tier-tags"><span class="tier-tag">Branding</span><span class="tier-tag">Strategy</span></div></div>
<div class="tier"><div class="tier-head"><div class="tier-name">Web <em>build</em></div><div class="tier-price">$48,000<small>8–12 weeks</small></div></div><p class="tier-desc">Marketing site, design system, custom build (no Squarespace). Includes 90 days of revisions after launch.</p><div class="tier-tags"><span class="tier-tag">Design</span><span class="tier-tag">Build</span><span class="tier-tag">CMS</span></div></div>
<div class="tier"><div class="tier-head"><div class="tier-name">Studio month</div><div class="tier-price">$18,000<small>per month, retainer</small></div></div><p class="tier-desc">A pair of senior designers on call, half-time, for ongoing work. 4-month minimum, paused anytime after.</p><div class="tier-tags"><span class="tier-tag">Retainer</span><span class="tier-tag">Senior team</span></div></div>
<div class="note">Fixed scope, fixed price, never an hourly rate.</div>
</div>
</section></body></html>
06

Pay-What-You-Want

Calculator

Visitor sets the price with a slider — pay what you can. Three suggested levels. For nonprofits, indie creators, support-style products, communities.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,300;0,6..72,500;1,6..72,400&family=Inter:wght@400;500&display=swap" rel="stylesheet">
<style>*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}body{font-family:'Inter',sans-serif;background:#fdf8f0;color:#2a2520;line-height:1.55}
.section{padding:56px 40px;display:grid;grid-template-columns:1.1fr 1fr;gap:56px;max-width:1100px;margin:0 auto;align-items:center;position:relative}
.section::before{content:"";position:absolute;top:80px;right:80px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,#f0d9b8 0%,transparent 70%);pointer-events:none}
.head{display:flex;flex-direction:column;gap:18px;position:relative;z-index:2}
.kicker{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#c9956a;font-weight:600;display:flex;align-items:center;gap:12px}
.kicker::before{content:"";width:32px;height:1px;background:#c9956a}
.h1{font-family:'Newsreader',serif;font-weight:300;font-size:clamp(36px,5.4vw,60px);line-height:1.08;letter-spacing:-.015em}
.h1 em{font-style:italic;color:#c9956a}
.sub{font-size:16px;line-height:1.6;color:#5a5347;max-width:46ch}
.sub b{color:#2a2520}
.proof{display:flex;gap:24px;margin-top:8px;font-size:13px;color:#86796a}
.proof div b{display:block;font-family:'Newsreader',serif;font-size:24px;font-weight:500;color:#2a2520;letter-spacing:-.01em}
.calc{background:#fff;border:1px solid #e8d9bd;border-radius:18px;padding:32px;box-shadow:0 16px 48px -24px rgba(89,75,53,.18);position:relative;z-index:2}
.calc-h{font-family:'Newsreader',serif;font-size:18px;font-weight:500;margin-bottom:6px}
.calc-sub{font-size:13px;color:#86796a;margin-bottom:24px}
.amount{display:flex;align-items:baseline;gap:6px;margin-bottom:18px;justify-content:center}
.amount .currency{font-family:'Newsreader',serif;font-size:28px;color:#c9956a}
.amount .val{font-family:'Newsreader',serif;font-size:72px;font-weight:500;letter-spacing:-.025em;line-height:1;color:#2a2520;font-variant-numeric:tabular-nums}
.amount .per{font-size:14px;color:#86796a;margin-left:6px}
.slider-wrap{position:relative;padding:14px 0 6px}
.slider{-webkit-appearance:none;width:100%;height:6px;background:#f0d9b8;border-radius:3px;outline:none;cursor:pointer}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;background:#c9956a;border-radius:50%;cursor:pointer;border:4px solid #fff;box-shadow:0 4px 12px rgba(201,149,106,.4)}
.slider-marks{display:flex;justify-content:space-between;margin-top:14px;font-size:11px;color:#86796a;letter-spacing:.04em}
.suggested{margin-top:20px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.suggested button{padding:14px 8px;background:#fdf8f0;border:1.5px solid #e8d9bd;color:#2a2520;font-family:inherit;font-weight:500;font-size:13px;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;transition:all .15s}
.suggested button.active,.suggested button:hover{background:#c9956a;border-color:#c9956a;color:#fff}
.suggested button b{font-family:'Newsreader',serif;font-size:18px;font-weight:500;letter-spacing:-.01em}
.suggested button small{font-size:10px;letter-spacing:.04em;text-transform:uppercase;opacity:.7}
.cta{margin-top:20px;width:100%;padding:14px;background:#2a2520;color:#fdf8f0;border:none;font-family:inherit;font-weight:500;font-size:15px;border-radius:999px;cursor:pointer}
.cta:hover{background:#c9956a}
.note{margin-top:14px;text-align:center;font-style:italic;font-family:'Newsreader',serif;font-size:13px;color:#86796a}
@media (max-width:880px){.section{grid-template-columns:1fr;padding:32px 20px;gap:32px}}
</style></head><body><section class="section">
<div class="head"><div class="kicker">Pay what you want</div><h1 class="h1">Membership for the <em>price you can pay</em>.</h1><p class="sub">We don't believe in tiered pricing for what we do. <b>Pick what feels fair</b> for where you are. Members at $24/mo get the same access as members at $4/mo. The higher tiers help us cover the lower ones.</p>
<div class="proof"><div><b>2,431</b><span>active members</span></div><div><b>$8.40</b><span>median monthly</span></div><div><b>11%</b><span>at the highest tier</span></div></div></div>
<div class="calc"><div class="calc-h">What feels right?</div><div class="calc-sub">You can change this any time.</div>
<div class="amount"><span class="currency">$</span><span class="val">12</span><span class="per">/month</span></div>
<div class="slider-wrap"><input type="range" class="slider" min="2" max="48" value="12"></div>
<div class="slider-marks"><span>$2 (min)</span><span>median · $8</span><span>$48 (most)</span></div>
<div class="suggested"><button><b>$4</b><small>tight month</small></button><button class="active"><b>$12</b><small>fair share</small></button><button><b>$24</b><small>cover others</small></button></div>
<button class="cta">Become a member →</button>
<div class="note">"Pay less if money is tight. Pay more if it isn't."</div>
</div>
</section></body></html>
07

Single Product

Card-based

One product, one price, one CTA, treated like a hero. No tiers, no comparison. For physical products, courses, books, single-SKU businesses.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,500;1,300&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
<style>*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}body{font-family:'Inter',sans-serif;background:#1a1612;color:#fff;line-height:1.5;min-height:100vh}
.section{padding:48px 36px;display:grid;grid-template-columns:1fr 1fr;gap:48px;max-width:1200px;margin:0 auto;align-items:center;min-height:600px}
.visual{aspect-ratio:1/1;background:linear-gradient(135deg,#3d2817 0%,#1a0f08 70%,#000 100%);border-radius:8px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}
.visual::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 30% 30%,rgba(196,141,79,.4),transparent 60%);pointer-events:none}
.visual::after{content:"";position:absolute;inset:0;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='400' height='400'><filter id='n'><feTurbulence baseFrequency='0.9'/></filter><rect width='400' height='400' filter='url(%23n)' opacity='0.4'/></svg>");mix-blend-mode:overlay;opacity:.4}
.visual .product{position:relative;z-index:2;width:60%;aspect-ratio:1/2;background:linear-gradient(180deg,#c48d4f 0%,#8b5e2c 50%,#5d3d1a 100%);border-radius:14px 14px 6px 6px;box-shadow:0 24px 48px -12px rgba(0,0,0,.6),inset 0 2px 0 rgba(255,255,255,.2);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff5e1;text-align:center;padding:24px;font-family:'Cormorant Garamond',serif}
.visual .product .label{font-style:italic;font-size:14px;opacity:.7;letter-spacing:.1em;text-transform:uppercase;font-family:'Inter',sans-serif;margin-bottom:6px}
.visual .product .name{font-size:28px;font-weight:300;line-height:1.05;letter-spacing:-.01em}
.visual .product hr{width:30px;height:1px;background:#fff5e1;border:none;margin:14px 0;opacity:.5}
.visual .product .vol{font-size:11px;letter-spacing:.15em;text-transform:uppercase;opacity:.7;font-family:'Inter',sans-serif}
.copy{display:flex;flex-direction:column;gap:18px}
.kicker{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#c48d4f;font-weight:500;display:flex;align-items:center;gap:12px}
.kicker::before{content:"";width:32px;height:1px;background:#c48d4f}
.product-name{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(40px,5.4vw,68px);line-height:1.0;letter-spacing:-.01em}
.product-name em{font-style:italic;color:#c48d4f}
.notes{font-size:14px;color:#a89c87;letter-spacing:.04em;display:flex;flex-wrap:wrap;gap:0 12px;align-items:center}
.notes span{display:flex;align-items:center;gap:6px}
.notes .dot{width:4px;height:4px;background:#c48d4f;border-radius:50%}
.desc{font-family:'Cormorant Garamond',serif;font-size:18px;line-height:1.55;color:#cbc1aa;font-style:italic;font-weight:300;max-width:48ch}
.price-block{margin-top:14px;padding:24px 0;border-top:1px solid rgba(196,141,79,.3);border-bottom:1px solid rgba(196,141,79,.3);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}
.price-main{font-family:'Cormorant Garamond',serif;font-size:64px;font-weight:300;letter-spacing:-.025em;line-height:1}
.price-main em{font-style:italic;color:#c48d4f}
.price-sub{font-size:13px;color:#a89c87;text-align:right;line-height:1.5}
.price-sub b{color:#fff;display:block;font-size:14px;font-weight:500;font-family:'Inter',sans-serif;margin-bottom:2px}
.actions{display:flex;gap:14px;align-items:center;margin-top:8px}
.btn{padding:18px 36px;background:#c48d4f;color:#1a1612;border:none;font-family:inherit;font-weight:600;font-size:14px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
.btn:hover{background:#fff}
.btn-text{font-size:14px;color:#fff;text-decoration:underline;text-decoration-color:#c48d4f;text-decoration-thickness:2px;text-underline-offset:4px}
.fineprint{font-size:11px;color:#7a7060;letter-spacing:.06em;display:flex;gap:18px;flex-wrap:wrap}
@media (max-width:880px){.section{grid-template-columns:1fr;padding:32px 20px}.visual{max-height:400px;aspect-ratio:auto}.price-main{font-size:48px}}
</style></head><body><section class="section">
<div class="visual"><div class="product"><div class="label">Eau de Parfum</div><div class="name">Maison Voltaire № 7</div><hr><div class="vol">50 ml</div></div></div>
<div class="copy"><div class="kicker">Spring 2026 · 240 bottles only</div><h1 class="product-name">№ 7 — <em>Le Foin Coupé</em></h1>
<div class="notes"><span><span class="dot"></span>Hay absolute</span><span><span class="dot"></span>Sweet vetiver</span><span><span class="dot"></span>Tonka bean</span><span><span class="dot"></span>Smoke</span></div>
<p class="desc">A summer field, a few hours after the cut. Hay, dried grass, a hint of warm earth. The smoke comes much later, on dry-down — like remembering something you'd forgotten.</p>
<div class="price-block"><div class="price-main"><em>$</em>240</div><div class="price-sub"><b>50ml · Crafted in Provence</b>Free shipping over $200<br>Returns within 30 days</div></div>
<div class="actions"><button class="btn">Add to bag</button><a href="#" class="btn-text">or read about № 7 →</a></div>
<div class="fineprint"><span>★ 4.9 / 187 reviews</span><span>· 198 of 240 remaining</span><span>· Hand-bottled in Grasse</span></div>
</div>
</section></body></html>
08

Process Engagement

Tabular

Pricing structured around a project process — discovery, build, support — with phase-based pricing. For agencies, consultancies, project-based services.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400;12..96,600;12..96,800&family=Geist+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}body{font-family:'Bricolage Grotesque',sans-serif;background:#ebe8e1;color:#1a1a1a;line-height:1.5}
.section{padding:48px 36px;display:flex;flex-direction:column;gap:36px;max-width:1200px;margin:0 auto}
.head{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:end;border-bottom:1px solid rgba(26,26,26,.2);padding-bottom:32px}
.kicker{font-family:'Geist Mono',monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#ff6b35;margin-bottom:12px}
.h1{font-size:clamp(36px,5vw,60px);font-weight:800;letter-spacing:-.025em;line-height:1.0}
.h1 em{font-style:italic;color:#ff6b35;font-weight:600}
.sub{font-size:15px;line-height:1.55;color:#5a5346;max-width:48ch}
.head .right{padding-bottom:6px}
.head .right b{display:block;font-family:'Geist Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:#5a5346;margin-bottom:8px;font-weight:500}
.head .right .total{font-size:48px;font-weight:800;letter-spacing:-.03em;line-height:1}
.head .right .total small{display:block;font-size:13px;font-weight:400;color:#5a5346;margin-top:4px;letter-spacing:0;text-transform:none}
.phases{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.phase{background:#fff;border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:14px;position:relative;overflow:hidden}
.phase::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:#ff6b35}
.phase.p2::before{background:#5d6b3f}
.phase.p3::before{background:#1a1a1a}
.phase-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.phase-num{font-family:'Geist Mono',monospace;font-size:11px;color:#999;letter-spacing:.1em;font-weight:500}
.phase-time{font-family:'Geist Mono',monospace;font-size:11px;color:#5a5346;background:#ebe8e1;padding:3px 8px;border-radius:999px;letter-spacing:.04em}
.phase-name{font-size:24px;font-weight:700;letter-spacing:-.02em;line-height:1}
.phase-name em{font-style:italic;color:#ff6b35;font-weight:500}
.phase.p2 .phase-name em{color:#5d6b3f}
.phase.p3 .phase-name em{color:#1a1a1a;font-style:italic}
.phase-desc{font-size:13px;color:#5a5346;line-height:1.55}
.phase-deliv{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#1a1a1a;font-family:'Geist Mono',monospace;border-top:1px dashed rgba(0,0,0,.15);padding-top:14px}
.phase-deliv span{display:flex;gap:8px;align-items:start}
.phase-deliv span::before{content:"→";color:#ff6b35;font-weight:700}
.phase.p2 .phase-deliv span::before{color:#5d6b3f}
.phase.p3 .phase-deliv span::before{color:#1a1a1a}
.phase-price{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid #ebe8e1;padding-top:14px;margin-top:auto}
.phase-price b{font-size:32px;font-weight:800;letter-spacing:-.02em;line-height:1}
.phase-price small{font-size:11px;color:#999;font-family:'Geist Mono',monospace;letter-spacing:.04em}
.foot-row{display:grid;grid-template-columns:auto 1fr auto;gap:24px;align-items:center;background:#fff;padding:20px 28px;border-radius:14px;border:1px solid rgba(26,26,26,.1)}
.foot-row .lbl{font-family:'Geist Mono',monospace;font-size:11px;color:#5a5346;letter-spacing:.08em;text-transform:uppercase}
.foot-row .lbl b{display:block;font-family:'Bricolage Grotesque',sans-serif;font-size:24px;font-weight:800;color:#1a1a1a;text-transform:none;letter-spacing:-.02em;margin-top:2px}
.foot-row .center{font-size:14px;color:#5a5346}
.foot-row .center b{color:#1a1a1a;font-weight:600}
.btn{padding:14px 28px;background:#1a1a1a;color:#fff;border:none;font-family:inherit;font-weight:600;font-size:14px;border-radius:999px;cursor:pointer}
.btn:hover{background:#ff6b35}
@media (max-width:880px){.section{padding:24px 16px}.head{grid-template-columns:1fr;gap:24px}.phases{grid-template-columns:1fr}.foot-row{grid-template-columns:1fr;gap:16px}.foot-row .center{text-align:left}}
</style></head><body><section class="section">
<header class="head"><div><div class="kicker">— How an engagement works</div><h1 class="h1">Three <em>distinct phases</em>, scoped and priced.</h1><p class="sub">We don't do hourly. Each phase is a fixed scope at a fixed price, and you can stop after any of them. Most clients take all three; some only need one.</p></div>
<div class="right"><b>Typical full engagement</b><div class="total">$92,000<small>over 12–16 weeks</small></div></div></header>
<div class="phases">
<div class="phase p1"><div class="phase-head"><div><div class="phase-num">PHASE 01</div><div class="phase-name">Discovery <em>&amp; strategy</em></div></div><div class="phase-time">2 weeks</div></div><p class="phase-desc">A working session, customer interviews, competitive review, and a strategic positioning document. The cheapest part to do, and the part that determines everything after.</p><div class="phase-deliv"><span>10 customer interviews</span><span>Brand/positioning doc (40pp)</span><span>2-day working session</span></div><div class="phase-price"><b>$12,000</b><small>fixed</small></div></div>
<div class="phase p2"><div class="phase-head"><div><div class="phase-num">PHASE 02</div><div class="phase-name">Identity <em>&amp; site</em></div></div><div class="phase-time">8–10 weeks</div></div><p class="phase-desc">Visual identity, type system, color, voice. Marketing site (8–12 pages), CMS configured, design system documented. Takes the strategy from Phase 01 and makes it concrete.</p><div class="phase-deliv"><span>Logo, type, color system</span><span>Site (8–12 pages)</span><span>Brand guidelines (60pp)</span></div><div class="phase-price"><b>$64,000</b><small>fixed</small></div></div>
<div class="phase p3"><div class="phase-head"><div><div class="phase-num">PHASE 03</div><div class="phase-name">Stewardship</div></div><div class="phase-time">3 months</div></div><p class="phase-desc">A senior team on call after launch, half-time, for the first quarter. Refinements, additional pages, course corrections — the work that always shows up after launch and never gets budgeted.</p><div class="phase-deliv"><span>Half-time senior pair</span><span>Weekly working session</span><span>Pause anytime</span></div><div class="phase-price"><b>$16,000</b><small>quarterly</small></div></div>
</div>
<div class="foot-row"><div class="lbl">Currently booking<b>Q3 2026</b></div><div class="center">Two openings remaining for Phase 01 starts in July. <b>Three for August.</b> No discounts, no upsells, no surprise change orders.</div><button class="btn">Start a project →</button></div>
</section></body></html>
Copied