31 CSS Hero Sections22 / 31
Price Card Hero
Heritage-banking pricing-led hero — copy left, single-tier brass-on-forest pricing card right. The 37signals-style "we have one price" treatment with a vintage finance feel.
Published
The code
<section class="hs-22" aria-label="Hero">
<div class="hs-22__copy">
<span class="hs-22__eye">— Est. 1924 · still independent</span>
<h2>One ledger. <em>One price.</em> One ridiculously responsive team.</h2>
<p>
The bookkeeping software trusted by family-owned businesses since before "SaaS" was a word.
</p>
</div>
<article class="hs-22__card">
<header>
<span>The Members' Plan</span>
<span class="hs-22__badge">No tiers</span>
</header>
<div class="hs-22__price"><em>$</em><strong>49</strong><span>/ month, all in</span></div>
<ul>
<li>Unlimited invoices</li>
<li>Multi-entity ledger</li>
<li>Audit-ready exports</li>
<li>A real human for support</li>
</ul>
<a class="hs-22__cta" href="#join">Become a member</a>
</article>
</section><section class="hs-22" aria-label="Hero">
<div class="hs-22__copy">
<span class="hs-22__eye">— Est. 1924 · still independent</span>
<h2>One ledger. <em>One price.</em> One ridiculously responsive team.</h2>
<p>
The bookkeeping software trusted by family-owned businesses since before "SaaS" was a word.
</p>
</div>
<article class="hs-22__card">
<header>
<span>The Members' Plan</span>
<span class="hs-22__badge">No tiers</span>
</header>
<div class="hs-22__price"><em>$</em><strong>49</strong><span>/ month, all in</span></div>
<ul>
<li>Unlimited invoices</li>
<li>Multi-entity ledger</li>
<li>Audit-ready exports</li>
<li>A real human for support</li>
</ul>
<a class="hs-22__cta" href="#join">Become a member</a>
</article>
</section>.hs-22 {
display: grid;
grid-template-columns: 1.05fr 1fr;
width: 100%;
min-height: 100vh;
padding: clamp(28px, 5vw, 64px) clamp(20px, 5vw, 56px);
gap: clamp(28px, 4vw, 64px);
align-items: center;
background: #f5ecd8;
font-family: 'Inter', system-ui, sans-serif;
color: #1a3322;
box-sizing: border-box;
}
.hs-22__eye {
display: block;
font-family: 'Cormorant Garamond', Georgia, serif;
font-style: italic;
font-size: 16px;
color: #8a7a3a;
margin-bottom: 14px;
}
.hs-22 h2 {
margin: 0 0 16px;
font-family: 'Playfair Display', Georgia, serif;
font-size: clamp(28px, 4.5vw, 46px);
font-weight: 700;
letter-spacing: -0.015em;
line-height: 1.1;
color: #1a3322;
}
.hs-22 h2 em {
color: #8a7a3a;
font-style: italic;
}
.hs-22 p {
margin: 0;
font-size: 15.5px;
line-height: 1.6;
color: #4a5a48;
max-width: 460px;
}
.hs-22__card {
background: #1a3322;
color: #f5ecd8;
padding: clamp(24px, 3vw, 36px);
border-radius: 0;
border: 2px solid #8a7a3a;
box-shadow: inset 0 0 0 4px #1a3322, inset 0 0 0 5px rgba(138,122,58,0.4);
}
.hs-22__card header {
display: flex;
justify-content: space-between;
align-items: center;
font-family: 'Playfair Display', Georgia, serif;
font-size: 13px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
padding-bottom: 16px;
border-bottom: 1px solid #8a7a3a;
margin-bottom: 18px;
}
.hs-22__badge {
font-family: 'JetBrains Mono', monospace;
font-size: 10px;
letter-spacing: 0.12em;
padding: 2px 8px;
border: 1px solid #8a7a3a;
color: #c0a960;
}
.hs-22__price {
display: flex;
align-items: baseline;
gap: 6px;
margin-bottom: 22px;
}
.hs-22__price em {
font-size: 24px;
font-style: normal;
color: #8a7a3a;
font-weight: 700;
}
.hs-22__price strong {
font-family: 'Playfair Display', Georgia, serif;
font-size: clamp(56px, 6vw, 80px);
font-weight: 800;
line-height: 1;
color: #f5ecd8;
}
.hs-22__price span {
font-size: 13px;
color: #c0a960;
}
.hs-22__card ul {
list-style: none;
padding: 0;
margin: 0 0 24px;
font-size: 14px;
line-height: 1.95;
color: #c8d2c4;
}
.hs-22__card ul li::before {
content: '✓ ';
color: #c0a960;
font-weight: 800;
}
.hs-22__cta {
display: block;
text-align: center;
padding: 14px 24px;
background: #c0a960;
color: #1a3322;
text-decoration: none;
font-weight: 800;
font-size: 14.5px;
letter-spacing: 0.04em;
border: 0;
transition: background 0.15s;
}
.hs-22__cta:hover {
background: #f5ecd8;
}
@media (max-width: 720px) {
.hs-22 {
grid-template-columns: 1fr;
}
}
@media (prefers-reduced-motion: reduce) {
.hs-22__cta {
transition: none;
}
}.hs-22 {
display: grid;
grid-template-columns: 1.05fr 1fr;
width: 100%;
min-height: 100vh;
padding: clamp(28px, 5vw, 64px) clamp(20px, 5vw, 56px);
gap: clamp(28px, 4vw, 64px);
align-items: center;
background: #f5ecd8;
font-family: 'Inter', system-ui, sans-serif;
color: #1a3322;
box-sizing: border-box;
}
.hs-22__eye {
display: block;
font-family: 'Cormorant Garamond', Georgia, serif;
font-style: italic;
font-size: 16px;
color: #8a7a3a;
margin-bottom: 14px;
}
.hs-22 h2 {
margin: 0 0 16px;
font-family: 'Playfair Display', Georgia, serif;
font-size: clamp(28px, 4.5vw, 46px);
font-weight: 700;
letter-spacing: -0.015em;
line-height: 1.1;
color: #1a3322;
}
.hs-22 h2 em {
color: #8a7a3a;
font-style: italic;
}
.hs-22 p {
margin: 0;
font-size: 15.5px;
line-height: 1.6;
color: #4a5a48;
max-width: 460px;
}
.hs-22__card {
background: #1a3322;
color: #f5ecd8;
padding: clamp(24px, 3vw, 36px);
border-radius: 0;
border: 2px solid #8a7a3a;
box-shadow: inset 0 0 0 4px #1a3322, inset 0 0 0 5px rgba(138,122,58,0.4);
}
.hs-22__card header {
display: flex;
justify-content: space-between;
align-items: center;
font-family: 'Playfair Display', Georgia, serif;
font-size: 13px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
padding-bottom: 16px;
border-bottom: 1px solid #8a7a3a;
margin-bottom: 18px;
}
.hs-22__badge {
font-family: 'JetBrains Mono', monospace;
font-size: 10px;
letter-spacing: 0.12em;
padding: 2px 8px;
border: 1px solid #8a7a3a;
color: #c0a960;
}
.hs-22__price {
display: flex;
align-items: baseline;
gap: 6px;
margin-bottom: 22px;
}
.hs-22__price em {
font-size: 24px;
font-style: normal;
color: #8a7a3a;
font-weight: 700;
}
.hs-22__price strong {
font-family: 'Playfair Display', Georgia, serif;
font-size: clamp(56px, 6vw, 80px);
font-weight: 800;
line-height: 1;
color: #f5ecd8;
}
.hs-22__price span {
font-size: 13px;
color: #c0a960;
}
.hs-22__card ul {
list-style: none;
padding: 0;
margin: 0 0 24px;
font-size: 14px;
line-height: 1.95;
color: #c8d2c4;
}
.hs-22__card ul li::before {
content: '✓ ';
color: #c0a960;
font-weight: 800;
}
.hs-22__cta {
display: block;
text-align: center;
padding: 14px 24px;
background: #c0a960;
color: #1a3322;
text-decoration: none;
font-weight: 800;
font-size: 14.5px;
letter-spacing: 0.04em;
border: 0;
transition: background 0.15s;
}
.hs-22__cta:hover {
background: #f5ecd8;
}
@media (max-width: 720px) {
.hs-22 {
grid-template-columns: 1fr;
}
}
@media (prefers-reduced-motion: reduce) {
.hs-22__cta {
transition: none;
}
}Here's a working CSS Hero Section from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Price Card Hero
Source: https://codefronts.com/layouts/css-hero-sections/price-card-hero/
Heritage-banking pricing-led hero — copy left, single-tier brass-on-forest pricing card right. The 37signals-style "we have one price" treatment with a vintage finance feel.
## HTML
```html
<section class="hs-22" aria-label="Hero">
<div class="hs-22__copy">
<span class="hs-22__eye">— Est. 1924 · still independent</span>
<h2>One ledger. <em>One price.</em> One ridiculously responsive team.</h2>
<p>
The bookkeeping software trusted by family-owned businesses since before "SaaS" was a word.
</p>
</div>
<article class="hs-22__card">
<header>
<span>The Members' Plan</span>
<span class="hs-22__badge">No tiers</span>
</header>
<div class="hs-22__price"><em>$</em><strong>49</strong><span>/ month, all in</span></div>
<ul>
<li>Unlimited invoices</li>
<li>Multi-entity ledger</li>
<li>Audit-ready exports</li>
<li>A real human for support</li>
</ul>
<a class="hs-22__cta" href="#join">Become a member</a>
</article>
</section>
```
## CSS
```css
.hs-22 {
display: grid;
grid-template-columns: 1.05fr 1fr;
width: 100%;
min-height: 100vh;
padding: clamp(28px, 5vw, 64px) clamp(20px, 5vw, 56px);
gap: clamp(28px, 4vw, 64px);
align-items: center;
background: #f5ecd8;
font-family: 'Inter', system-ui, sans-serif;
color: #1a3322;
box-sizing: border-box;
}
.hs-22__eye {
display: block;
font-family: 'Cormorant Garamond', Georgia, serif;
font-style: italic;
font-size: 16px;
color: #8a7a3a;
margin-bottom: 14px;
}
.hs-22 h2 {
margin: 0 0 16px;
font-family: 'Playfair Display', Georgia, serif;
font-size: clamp(28px, 4.5vw, 46px);
font-weight: 700;
letter-spacing: -0.015em;
line-height: 1.1;
color: #1a3322;
}
.hs-22 h2 em {
color: #8a7a3a;
font-style: italic;
}
.hs-22 p {
margin: 0;
font-size: 15.5px;
line-height: 1.6;
color: #4a5a48;
max-width: 460px;
}
.hs-22__card {
background: #1a3322;
color: #f5ecd8;
padding: clamp(24px, 3vw, 36px);
border-radius: 0;
border: 2px solid #8a7a3a;
box-shadow: inset 0 0 0 4px #1a3322, inset 0 0 0 5px rgba(138,122,58,0.4);
}
.hs-22__card header {
display: flex;
justify-content: space-between;
align-items: center;
font-family: 'Playfair Display', Georgia, serif;
font-size: 13px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
padding-bottom: 16px;
border-bottom: 1px solid #8a7a3a;
margin-bottom: 18px;
}
.hs-22__badge {
font-family: 'JetBrains Mono', monospace;
font-size: 10px;
letter-spacing: 0.12em;
padding: 2px 8px;
border: 1px solid #8a7a3a;
color: #c0a960;
}
.hs-22__price {
display: flex;
align-items: baseline;
gap: 6px;
margin-bottom: 22px;
}
.hs-22__price em {
font-size: 24px;
font-style: normal;
color: #8a7a3a;
font-weight: 700;
}
.hs-22__price strong {
font-family: 'Playfair Display', Georgia, serif;
font-size: clamp(56px, 6vw, 80px);
font-weight: 800;
line-height: 1;
color: #f5ecd8;
}
.hs-22__price span {
font-size: 13px;
color: #c0a960;
}
.hs-22__card ul {
list-style: none;
padding: 0;
margin: 0 0 24px;
font-size: 14px;
line-height: 1.95;
color: #c8d2c4;
}
.hs-22__card ul li::before {
content: '✓ ';
color: #c0a960;
font-weight: 800;
}
.hs-22__cta {
display: block;
text-align: center;
padding: 14px 24px;
background: #c0a960;
color: #1a3322;
text-decoration: none;
font-weight: 800;
font-size: 14.5px;
letter-spacing: 0.04em;
border: 0;
transition: background 0.15s;
}
.hs-22__cta:hover {
background: #f5ecd8;
}
@media (max-width: 720px) {
.hs-22 {
grid-template-columns: 1fr;
}
}
@media (prefers-reduced-motion: reduce) {
.hs-22__cta {
transition: none;
}
}
```Here's a working CSS Hero Section from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Price Card Hero
Source: https://codefronts.com/layouts/css-hero-sections/price-card-hero/
Heritage-banking pricing-led hero — copy left, single-tier brass-on-forest pricing card right. The 37signals-style "we have one price" treatment with a vintage finance feel.
## HTML
```html
<section class="hs-22" aria-label="Hero">
<div class="hs-22__copy">
<span class="hs-22__eye">— Est. 1924 · still independent</span>
<h2>One ledger. <em>One price.</em> One ridiculously responsive team.</h2>
<p>
The bookkeeping software trusted by family-owned businesses since before "SaaS" was a word.
</p>
</div>
<article class="hs-22__card">
<header>
<span>The Members' Plan</span>
<span class="hs-22__badge">No tiers</span>
</header>
<div class="hs-22__price"><em>$</em><strong>49</strong><span>/ month, all in</span></div>
<ul>
<li>Unlimited invoices</li>
<li>Multi-entity ledger</li>
<li>Audit-ready exports</li>
<li>A real human for support</li>
</ul>
<a class="hs-22__cta" href="#join">Become a member</a>
</article>
</section>
```
## CSS
```css
.hs-22 {
display: grid;
grid-template-columns: 1.05fr 1fr;
width: 100%;
min-height: 100vh;
padding: clamp(28px, 5vw, 64px) clamp(20px, 5vw, 56px);
gap: clamp(28px, 4vw, 64px);
align-items: center;
background: #f5ecd8;
font-family: 'Inter', system-ui, sans-serif;
color: #1a3322;
box-sizing: border-box;
}
.hs-22__eye {
display: block;
font-family: 'Cormorant Garamond', Georgia, serif;
font-style: italic;
font-size: 16px;
color: #8a7a3a;
margin-bottom: 14px;
}
.hs-22 h2 {
margin: 0 0 16px;
font-family: 'Playfair Display', Georgia, serif;
font-size: clamp(28px, 4.5vw, 46px);
font-weight: 700;
letter-spacing: -0.015em;
line-height: 1.1;
color: #1a3322;
}
.hs-22 h2 em {
color: #8a7a3a;
font-style: italic;
}
.hs-22 p {
margin: 0;
font-size: 15.5px;
line-height: 1.6;
color: #4a5a48;
max-width: 460px;
}
.hs-22__card {
background: #1a3322;
color: #f5ecd8;
padding: clamp(24px, 3vw, 36px);
border-radius: 0;
border: 2px solid #8a7a3a;
box-shadow: inset 0 0 0 4px #1a3322, inset 0 0 0 5px rgba(138,122,58,0.4);
}
.hs-22__card header {
display: flex;
justify-content: space-between;
align-items: center;
font-family: 'Playfair Display', Georgia, serif;
font-size: 13px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
padding-bottom: 16px;
border-bottom: 1px solid #8a7a3a;
margin-bottom: 18px;
}
.hs-22__badge {
font-family: 'JetBrains Mono', monospace;
font-size: 10px;
letter-spacing: 0.12em;
padding: 2px 8px;
border: 1px solid #8a7a3a;
color: #c0a960;
}
.hs-22__price {
display: flex;
align-items: baseline;
gap: 6px;
margin-bottom: 22px;
}
.hs-22__price em {
font-size: 24px;
font-style: normal;
color: #8a7a3a;
font-weight: 700;
}
.hs-22__price strong {
font-family: 'Playfair Display', Georgia, serif;
font-size: clamp(56px, 6vw, 80px);
font-weight: 800;
line-height: 1;
color: #f5ecd8;
}
.hs-22__price span {
font-size: 13px;
color: #c0a960;
}
.hs-22__card ul {
list-style: none;
padding: 0;
margin: 0 0 24px;
font-size: 14px;
line-height: 1.95;
color: #c8d2c4;
}
.hs-22__card ul li::before {
content: '✓ ';
color: #c0a960;
font-weight: 800;
}
.hs-22__cta {
display: block;
text-align: center;
padding: 14px 24px;
background: #c0a960;
color: #1a3322;
text-decoration: none;
font-weight: 800;
font-size: 14.5px;
letter-spacing: 0.04em;
border: 0;
transition: background 0.15s;
}
.hs-22__cta:hover {
background: #f5ecd8;
}
@media (max-width: 720px) {
.hs-22 {
grid-template-columns: 1fr;
}
}
@media (prefers-reduced-motion: reduce) {
.hs-22__cta {
transition: none;
}
}
```How this works
The price card hero is a two-column CSS grid — grid-template-columns: 1.05fr 1fr — with heritage-serif copy on the left and a bordered .hs-22__card pricing plan on the right, stacking to a single column below 720px. The whole SaaS hero section sits on a warm cream #f5ecd8 (linen) base with forest green #1a3322 as the primary ink and brass #8a7a3a/#c0a960 as the accent — a heritage-banking palette that reads "we've been solvent since 1924." The .hs-22__card uses border-radius: 0 and a 2px solid #8a7a3a outer border stacked with a double inset shadow (inset 0 0 0 4px #1a3322, inset 0 0 0 5px rgba(138,122,58,0.4)) to fake an engraved-certificate frame in pure CSS — no images, no SVG.
Typography does the trust work: Playfair Display drives the h2 (clamp(28px, 4.5vw, 46px)) and the card headers in letter-spacing: 0.16em all-caps — the visual register of an old share certificate. Cormorant Garamond italics carry the eyebrow — Est. 1924 · still independent; JetBrains Mono 10px labels the No tiers badge in the same monospace idiom banks use on cheque stubs. The .hs-22__price uses display: flex; align-items: baseline so the $, the clamp(56px, 6vw, 80px) number, and the / month, all in suffix align on the type baseline instead of the box baseline — the small detail that separates a real pricing hero from a template.
Why it converts: Baymard research shows a visible-price hero converts 30-45% higher than a "See pricing" click-through because it removes the friction of a second navigation. The 37signals-style single-plan framing ("One ledger. One price.") pre-empts choice paralysis — Iyengar/Lepper's jam-shelf research — and the checklist items (Unlimited invoices, Multi-entity ledger, Audit-ready exports, A real human for support) function as objection-handlers stacked in reading order. This is the highest-RPM landing-page hero pattern for SaaS pricing pages.
Make it yours
- Recolor to your brand by swapping four values: the linen background
#f5ecd8, the forest ink#1a3322, the brass accent#8a7a3a, and the lighter brass highlight#c0a960. Keep the brass tones 15-25% apart in luminance — that separation is what reads as "engraved," not "muddy." - Swap the serif: Playfair Display is heritage-banking. For editorial luxury →
'Fraunces'. For law-firm/trust →'Libre Caslon Text'. For contemporary SaaS with a heritage nod →'DM Serif Display'. Cormorant Garamond stays on the eyebrow either way; the italic-serif eyebrow above a display-serif h2 is the whole trick. - Change the CTA shape:
border-radius: 0is the flat-brass ticket. For a slightly softer brand, useborder-radius: 4px— anything higher breaks the certificate metaphor. If you want the CTA to read as a stamp, addbox-shadow: 0 3px 0 #6a5a20so the brass button gets flat depth. - For dark mode: invert to
background: #0d1f14(deeper forest) with body text in#f5ecd8, and flip the.hs-22__cardtobackground: #f5ecd8with forest ink — the cream card on a dark forest section reads as a printed page under lamp light, which is a stronger heritage cue than a solid-dark card. - For Tailwind:
bg-[#f5ecd8] grid grid-cols-[1.05fr_1fr] min-h-[480px]on the section,font-serif text-[#1a3322] text-5xl tracking-tight leading-[1.1]on the h2,bg-[#1a3322] text-[#f5ecd8] border-2 border-[#8a7a3a]on the card,bg-[#c0a960] text-[#1a3322] uppercase tracking-widest font-extraboldon the CTA. In Next.js, load Playfair Display vianext/font/googlewithdisplay: 'swap'.
Gotchas — read before shipping
- The
.hs-22__cardusesborder-radius: 0plus a stacked border + double inset shadow — visually rich but paint-heavy. On low-end Android the card can push LCP over 2.5s if it's the largest contentful element. If your card is the LCP candidate, drop one of the inset shadows or setcontent-visibility: autoon the card to defer paint until it's in view. - The
.hs-22__price strongusesclamp(56px, 6vw, 80px)— huge Playfair Display glyphs. If Playfair loads late, the fallback (Georgia, serif) is narrower and the price reflows by ~40px on desktop, causing a visible CLS spike well over 0.1. Preload Playfair or usesize-adjustin the@font-faceto lock fallback metrics. - The brass CTA (
#c0a960on forest#1a3322) has a contrast ratio of ~7.1:1, which passes WCAG AA and AAA for the CTA text — but the hover state flips to#f5ecd8on the same forest, which is fine. What isn't fine: the.hs-22__price span(#c0a960on forest) at13pxhits ~7.1:1 — passes AA, but the tiny type + brass tone reads as watermark. Users skip it. Bump to#e0c880at 14px if the copy matters. - Cormorant Garamond ships true italics — good — but if you're routing through a font-subsetting pipeline (like Fontsource + tree-shake), verify the italic variant is included. A missing italic silently falls back to synthesised oblique on the eyebrow and the heritage effect collapses. Same warning for Playfair Display's italic on the h2
<em>. - The
letter-spacing: 0.16emuppercase card header is on the edge of WCAG 1.4.12 (Text Spacing) — some screen readers announce letter-spaced words character by character ("T-H-E M-E-M-B-E-R-S"). Usetext-transform: uppercasein CSS but keep the source HTML in normal case, and addaria-label="The Members' Plan"on the wrapping element so assistive tech gets the clean string. - In React/Vue, the
<em>inside the h2 (One price.) is meaningful — don't let a Markdown renderer rewrite it to<strong>or strip the italics for "cleaner semantics." The italic is the design; without it, the h2 reads as three flat sentences and the heritage rhythm collapses.