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

Forms library

5 form patterns
v1.0 · Spring 2026
Live

Five form patterns — from the multi-step wizard to the inline-prose form. Match the form factor to the cognitive load of the questions.

How to use this: Form structure is form psychology. Long applications = wizard or cards. Lead capture = one-question-at-a-time or inline prose. Quotes / pricing = calculator. The biggest mistake is using a 12-field stacked form for everything — it kills completion rates.

Inline prose forms are dramatically underused — they convert better than standard layouts for premium services because they signal voice and care.

01

Multi-Step Wizard

Sequential

Long form broken into steps with a progress bar. Reduces overwhelm. For onboarding, applications, anything with 8+ fields.

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>*{box-sizing:border-box;margin:0;padding:0}body{font-family:'Geist',sans-serif;background:#fafafa;color:#0a0a0a;line-height:1.5}
.s{padding:36px 32px;max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:24px}
.hd{display:flex;flex-direction:column;gap:14px}
.k{font-family:'Geist Mono',monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#666}
.h{font-size:32px;font-weight:600;letter-spacing:-.02em;line-height:1.1}
.h em{font-style:italic}
.steps{display:flex;align-items:center;gap:8px;padding:14px 0}
.st{flex:1;display:flex;flex-direction:column;gap:6px;font-family:'Geist Mono',monospace;font-size:11px;color:#999;letter-spacing:.04em;text-transform:uppercase}
.st b{font-weight:600;font-size:13px;color:#0a0a0a;font-family:'Geist',sans-serif;letter-spacing:0;text-transform:none}
.st .pill{height:4px;background:#e5e5e5;border-radius:999px;overflow:hidden;position:relative}
.st .pill::after{content:"";position:absolute;top:0;left:0;bottom:0;width:0%;background:#0a0a0a;transition:width .3s}
.st.done .pill::after{width:100%;background:#16a34a}
.st.cur .pill::after{width:60%}
.st.cur b{color:#0a0a0a}
.st.cur{color:#a4341e}
.frm{background:#fff;border:1px solid #e5e5e5;border-radius:14px;padding:32px;display:flex;flex-direction:column;gap:18px}
.frm h2{font-size:21px;font-weight:600;letter-spacing:-.015em}
.frm h2 em{font-style:italic;color:#a4341e}
.frm .sub{font-size:14px;color:#666;margin-bottom:6px}
.fld{display:flex;flex-direction:column;gap:6px}
.fld label{font-size:13px;font-weight:600;color:#0a0a0a;display:flex;justify-content:space-between;align-items:baseline}
.fld label .opt{font-weight:400;color:#999;font-size:12px}
.fld input,.fld textarea,.fld select{padding:11px 14px;border:1px solid #e5e5e5;border-radius:8px;font-family:inherit;font-size:14px;background:#fff;color:#0a0a0a;width:100%}
.fld input:focus,.fld textarea:focus{outline:none;border-color:#0a0a0a;box-shadow:0 0 0 3px rgba(10,10,10,.06)}
.fld textarea{min-height:84px;resize:vertical}
.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tile-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tile{padding:14px 16px;border:1.5px solid #e5e5e5;border-radius:10px;font-family:inherit;background:#fff;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:4px;color:#0a0a0a}
.tile:hover{border-color:#0a0a0a}
.tile.sel{border-color:#0a0a0a;background:#fafafa;box-shadow:inset 0 0 0 1px #0a0a0a}
.tile b{font-size:14px;font-weight:600;display:flex;justify-content:space-between;align-items:center}
.tile.sel b::after{content:"✓";color:#16a34a}
.tile span{font-size:12px;color:#666}
.foot{display:flex;justify-content:space-between;align-items:center;padding-top:12px;border-top:1px solid #f0f0f0;margin-top:8px}
.btn{padding:11px 22px;font-family:inherit;font-weight:500;font-size:14px;border-radius:999px;cursor:pointer;border:none}
.btn.prim{background:#0a0a0a;color:#fff;font-weight:600}
.btn.prim:hover{background:#a4341e}
.btn.ghost{background:transparent;color:#666;border:1px solid transparent}
.btn.ghost:hover{color:#0a0a0a}
.help{font-size:11px;color:#999;font-family:'Geist Mono',monospace;letter-spacing:.04em}
.help b{color:#0a0a0a}
@media(max-width:680px){.steps{flex-direction:column;align-items:stretch}.tile-grid,.row{grid-template-columns:1fr}}</style></head><body><section class="s">
<header class="hd"><div class="k">Get a quote · ~2 min</div><h1 class="h">Tell us a few things, <em>and we'll price your project</em>.</h1></header>
<div class="steps">
<div class="st done"><b>1. Project type</b><div class="pill"></div></div>
<div class="st cur"><b>2. Scope &amp; timing</b><div class="pill"></div></div>
<div class="st"><b>3. Your details</b><div class="pill"></div></div>
<div class="st"><b>4. Review &amp; send</b><div class="pill"></div></div>
</div>
<div class="frm">
<div><h2>Step 2 — <em>scope &amp; timing</em></h2><p class="sub">A few quick details so we can give you an accurate range.</p></div>
<div class="fld"><label>Project size <span class="opt">pick one</span></label><div class="tile-grid">
<button class="tile"><b>Small</b><span>1 page · single goal</span></button>
<button class="tile sel"><b>Medium</b><span>4–8 pages · marketing site</span></button>
<button class="tile"><b>Large</b><span>10+ pages · CMS · multi-language</span></button>
<button class="tile"><b>Not sure</b><span>let's talk it through</span></button>
</div></div>
<div class="row">
<div class="fld"><label>Timeline</label><select><option>4–6 weeks</option><option selected>8–12 weeks</option><option>3+ months</option><option>Flexible</option></select></div>
<div class="fld"><label>Budget range <span class="opt">USD</span></label><select><option>$10–25k</option><option>$25–50k</option><option selected>$50–100k</option><option>$100k+</option><option>Not sure yet</option></select></div>
</div>
<div class="fld"><label>Anything we should know? <span class="opt">optional</span></label><textarea placeholder="A sentence or two — context, constraints, what you've already tried."></textarea></div>
<div class="foot"><button class="btn ghost">← Back</button><div class="help"><b>2 of 4</b> · 60 sec to next step</div><button class="btn prim">Continue →</button></div>
</div>
</section></body></html>
02

One Question at a Time

Conversational

Single question per screen, large type, one input. High-completion form for low-friction surveys, leads, intakes. Typeform-style.

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>*{box-sizing:border-box;margin:0;padding:0}body{font-family:'Inter',sans-serif;background:#fdf8f0;color:#2a2520;line-height:1.5;min-height:100vh}
.s{padding:48px 36px;display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:560px;max-width:780px;margin:0 auto;text-align:center;gap:24px;position:relative}
.bar{position:absolute;top:24px;left:36px;right:36px;display:flex;align-items:center;gap:14px}
.bar .pg{flex:1;height:3px;background:rgba(201,149,106,.2);border-radius:999px;overflow:hidden;position:relative}
.bar .pg::after{content:"";position:absolute;top:0;left:0;bottom:0;width:42%;background:#c9956a;transition:width .3s}
.bar .step{font-family:'Inter',sans-serif;font-size:11px;letter-spacing:.1em;color:#86796a;text-transform:uppercase;font-weight:500}
.k{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#c9956a;font-weight:600;display:flex;align-items:center;gap:14px}
.k::before{content:"3";display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#c9956a;color:#fff;font-family:'Newsreader',serif;font-style:italic;font-size:14px;letter-spacing:0}
.q{font-family:'Newsreader',serif;font-weight:300;font-size:48px;line-height:1.1;letter-spacing:-.015em;max-width:18ch}
.q em{font-style:italic;color:#c9956a}
.helper{font-family:'Newsreader',serif;font-style:italic;font-size:16px;color:#86796a;max-width:42ch}
.in-row{display:flex;width:100%;max-width:520px;border-bottom:2px solid #c9956a;padding:8px 0}
.in-row input{flex:1;background:transparent;border:none;outline:none;font-family:'Newsreader',serif;font-size:32px;color:#2a2520;font-weight:300;text-align:center}
.in-row input::placeholder{color:#a89c8a;font-style:italic}
.opts{display:flex;flex-direction:column;gap:8px;width:100%;max-width:480px}
.opt{padding:14px 22px;background:#fff;border:1.5px solid #e8d9bd;border-radius:14px;font-family:inherit;font-size:16px;color:#2a2520;cursor:pointer;display:flex;justify-content:space-between;align-items:center;text-align:left;font-weight:500}
.opt:hover{border-color:#c9956a}
.opt.sel{border-color:#c9956a;background:#faf0e0}
.opt .num{font-family:'Newsreader',serif;font-style:italic;color:#c9956a;width:24px;height:24px;border:1px solid #c9956a;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px}
.opt.sel .num{background:#c9956a;color:#fff}
.btn{padding:14px 36px;background:#2a2520;color:#fdf8f0;border:none;font-family:inherit;font-weight:500;font-size:14px;border-radius:999px;cursor:pointer;letter-spacing:.04em;display:inline-flex;align-items:center;gap:8px;margin-top:14px}
.btn:hover{background:#c9956a}
.btn .kbd{padding:2px 6px;background:rgba(255,255,255,.15);border-radius:4px;font-family:'Inter',sans-serif;font-size:10px;color:rgba(255,255,255,.7);letter-spacing:.06em;border:1px solid rgba(255,255,255,.2)}
.f{position:absolute;bottom:24px;left:36px;right:36px;display:flex;justify-content:space-between;font-family:'Inter',sans-serif;font-size:11px;color:#86796a;letter-spacing:.06em}
.f a{color:#86796a;cursor:pointer}
@media(max-width:680px){.q{font-size:32px}.bar{flex-direction:column;gap:8px}.f{flex-direction:column;gap:4px;text-align:center}}</style></head><body><section class="s">
<div class="bar"><div class="step">3 / 7</div><div class="pg"></div><div class="step">~ 90 sec left</div></div>
<div class="k">Tell us about your space</div>
<h2 class="q">What <em>kind of room</em> is this for?</h2>
<p class="helper">Pick the closest match — you can always tell us more later.</p>
<div class="opts">
<button class="opt"><span>A. Living room</span><span class="num">1</span></button>
<button class="opt sel"><span>B. Dining room</span><span class="num">2</span></button>
<button class="opt"><span>C. Office or studio</span><span class="num">3</span></button>
<button class="opt"><span>D. Something else — I'll explain</span><span class="num">4</span></button>
</div>
<button class="btn">Next <span class="kbd">↵</span></button>
<div class="f"><div>← Press <b>↑</b> to go back</div><a>Save &amp; finish later</a></div>
</section></body></html>
03

Inline Prose

Conversational

"My name is __ and I need __" — form fields embedded in a sentence. Disarming, distinctive. For services with a strong voice.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;1,400&family=Inter:wght@400;500&display=swap" rel="stylesheet">
<style>*{box-sizing:border-box;margin:0;padding:0}body{font-family:'EB Garamond',serif;background:#fcfaf5;color:#1a1612;line-height:1.7;font-size:18px}
.s{padding:64px 48px;max-width:880px;margin:0 auto;display:flex;flex-direction:column;gap:36px}
.dl{font-family:'Inter',sans-serif;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#7a6f5f;display:flex;align-items:center;gap:10px}
.dl::after{content:"";flex:1;height:1px;background:#d4cabb;max-width:200px}
.k{font-family:'Inter',sans-serif;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#9c4a2c;font-weight:600;margin-bottom:8px}
.h{font-style:italic;font-size:42px;font-weight:400;letter-spacing:-.005em;line-height:1.1}
.h em{color:#9c4a2c}
.prose{font-size:32px;line-height:1.7;letter-spacing:-.005em;color:#1a1612;font-weight:400;font-family:'EB Garamond',serif}
.prose .blank{display:inline-block;border-bottom:2px solid #9c4a2c;padding:0 6px;min-width:140px;color:#1a1612;font-style:italic;background:transparent;border-top:none;border-left:none;border-right:none;outline:none;font-family:'EB Garamond',serif;font-size:32px;font-weight:400;letter-spacing:-.005em;line-height:1.7}
.prose .blank::placeholder{color:#9c4a2c;opacity:.6}
.prose .blank:focus{border-bottom-color:#1a1612}
.prose select.blank{appearance:none;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,#9c4a2c 50%),linear-gradient(135deg,#9c4a2c 50%,transparent 50%);background-position:calc(100% - 12px) center,calc(100% - 6px) center;background-size:6px 6px;background-repeat:no-repeat;padding-right:24px}
.prose .blank.lg{min-width:240px}
.prose textarea.blank{min-height:auto;width:100%;display:block;margin-top:8px;resize:vertical;line-height:1.6;font-style:italic}
.foot{padding-top:24px;border-top:1px solid #d4cabb;display:flex;justify-content:space-between;align-items:center}
.foot .help{font-family:'Inter',sans-serif;font-size:13px;color:#7a6f5f;font-style:italic}
.foot .help b{color:#1a1612;font-weight:500;font-style:normal}
.btn{padding:14px 32px;background:#1a1612;color:#fcfaf5;border:none;font-family:'Inter',sans-serif;font-weight:500;font-size:14px;border-radius:999px;cursor:pointer;letter-spacing:.04em}
.btn:hover{background:#9c4a2c}
@media(max-width:780px){.s{padding:32px 24px}.h{font-size:28px}.prose{font-size:22px;line-height:1.6}.prose .blank{font-size:22px;min-width:100px}.prose .blank.lg{min-width:auto;width:100%}.foot{flex-direction:column;gap:14px;align-items:stretch}}</style></head><body><section class="s">
<div class="dl">A simple intake</div><div><div class="k">Hello, &amp; welcome</div><h1 class="h">Tell me a bit about <em>you</em>.</h1></div>
<p class="prose">My name is <input class="blank" placeholder="your name" value="">, and you can reach me at <input class="blank lg" type="email" placeholder="email@yours.com" value="">. I'd describe what I'm looking for as <select class="blank"><option>a single piece of furniture</option><option selected>a small commission</option><option>a full room</option><option>something else</option></select> — I'm thinking it would be ready around <select class="blank"><option>this fall</option><option selected>winter</option><option>next spring</option><option>no rush</option></select>, and a fair budget for me would be in the <select class="blank"><option>$2–5k</option><option selected>$5–10k</option><option>$10–20k</option><option>$20k+</option></select> range. The most useful thing I could tell you about the space is:<textarea class="blank" placeholder="A few sentences — light, the room, what you have already, anything else."></textarea></p>
<div class="foot"><div class="help">"I read every note myself, usually within a few days."<br>— <b>Dean Hollow</b>, founder</div><button class="btn">Send the note →</button></div>
</section></body></html>
04

Card Sections

Sequential

Form split into card sections — all visible, all editable. Better than a wizard when fields are interdependent. For longer applications.

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&display=swap" rel="stylesheet">
<style>*{box-sizing:border-box;margin:0;padding:0}body{font-family:'Bricolage Grotesque',sans-serif;background:#ebe8e1;color:#1a1a1a;line-height:1.5}
.s{padding:36px;max-width:1000px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
.hd{display:grid;grid-template-columns:1.4fr 1fr;gap:36px;align-items:end;padding-bottom:18px;border-bottom:1px solid rgba(26,26,26,.2)}
.k{font-family:'Geist Mono',monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#ff6b35;margin-bottom:12px}
.h{font-size:36px;font-weight:800;letter-spacing:-.02em;line-height:1.0}
.h em{font-style:italic;color:#ff6b35;font-weight:600}
.sb{font-size:14px;color:#5a5346;line-height:1.55;padding-bottom:6px}
.cards{display:flex;flex-direction:column;gap:14px}
.cd{background:#fff;border-radius:14px;padding:24px;display:grid;grid-template-columns:200px 1fr;gap:36px;align-items:start}
.cd-l h3{font-size:18px;font-weight:700;letter-spacing:-.01em;line-height:1.2;margin-bottom:6px}
.cd-l h3 em{font-style:italic;color:#ff6b35;font-weight:600}
.cd-l p{font-size:13px;color:#5a5346;line-height:1.5}
.cd-l .cnt{margin-top:10px;font-family:'Geist Mono',monospace;font-size:11px;color:#ff6b35;letter-spacing:.06em;text-transform:uppercase;background:#fff5f0;padding:3px 9px;border-radius:999px;border:1px solid rgba(255,107,53,.3);width:fit-content}
.cd-l .cnt.done{color:#16a34a;background:#f0fdf4;border-color:rgba(22,163,74,.3)}
.cd-l .cnt.done::before{content:"✓ ";font-weight:700}
.cd-r{display:flex;flex-direction:column;gap:14px}
.fld{display:flex;flex-direction:column;gap:6px}
.fld label{font-size:13px;font-weight:600;color:#1a1a1a;display:flex;justify-content:space-between;align-items:baseline}
.fld label .opt{font-weight:400;color:#999;font-size:11px;font-family:'Geist Mono',monospace}
.fld input,.fld textarea,.fld select{padding:11px 14px;border:1.5px solid #e8e1d4;border-radius:8px;font-family:inherit;font-size:14px;background:#fafaf7;color:#1a1a1a;width:100%}
.fld input:focus,.fld textarea:focus{outline:none;border-color:#1a1a1a;background:#fff}
.fld textarea{min-height:64px;resize:vertical}
.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tiles{display:flex;flex-wrap:wrap;gap:6px}
.tile{padding:8px 14px;border:1.5px solid #e8e1d4;border-radius:999px;font-family:inherit;background:#fafaf7;cursor:pointer;font-size:13px;font-weight:500;color:#1a1a1a;display:inline-flex;align-items:center;gap:6px}
.tile:hover{border-color:#1a1a1a}
.tile.sel{background:#1a1a1a;color:#fff;border-color:#1a1a1a}
.tile.sel::before{content:"✓"}
.foot{padding:18px 24px;background:#1a1a1a;color:#fff;border-radius:14px;display:grid;grid-template-columns:auto 1fr auto;gap:24px;align-items:center}
.foot .lbl{font-family:'Geist Mono',monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#aaa}
.foot .lbl b{display:block;font-family:'Bricolage Grotesque',sans-serif;font-size:18px;font-weight:700;color:#fff;letter-spacing:-.01em;text-transform:none;margin-top:2px}
.foot p{font-size:13px;color:#bbb;line-height:1.5}
.foot p b{color:#fff;font-weight:600}
.btn{padding:13px 24px;background:#ff6b35;color:#fff;border:none;font-family:inherit;font-weight:600;font-size:14px;border-radius:999px;cursor:pointer}
.btn:hover{background:#fff;color:#1a1a1a}
@media(max-width:780px){.s{padding:18px 14px}.hd{grid-template-columns:1fr;gap:14px}.h{font-size:24px}.cd{grid-template-columns:1fr;gap:14px}.row{grid-template-columns:1fr}.foot{grid-template-columns:1fr}}</style></head><body><section class="s">
<header class="hd"><div><div class="k">— Application · Senior designer · Remote (US/EU)</div><h1 class="h">A real <em>application</em>, not a Greenhouse form.</h1></div><p class="sb">Three sections. Should take 15 minutes. We read every one ourselves.</p></header>
<div class="cards">
<div class="cd"><div class="cd-l"><h3>1. <em>About you</em></h3><p>The basics — who you are, where you are, how to reach you.</p><div class="cnt done">3 of 3 fields</div></div>
<div class="cd-r"><div class="row"><div class="fld"><label>Your name</label><input value="Reese Adachi"></div><div class="fld"><label>Email</label><input type="email" value="reese@adachi.studio"></div></div>
<div class="fld"><label>Where you'd be based <span class="opt">city, country</span></label><input value="Lisbon, Portugal"></div></div></div>

<div class="cd"><div class="cd-l"><h3>2. Your <em>work</em></h3><p>One link is plenty. We'll dig in if we want to see more.</p><div class="cnt">1 of 2 fields</div></div>
<div class="cd-r"><div class="fld"><label>Portfolio link <span class="opt">URL · required</span></label><input value="adachi.studio/work"></div>
<div class="fld"><label>Three roles you've held that mattered most <span class="opt">free-form</span></label><textarea placeholder="A few sentences — what you did, who for, what you're proud of."></textarea></div></div></div>

<div class="cd"><div class="cd-l"><h3>3. Why <em>here</em></h3><p>What about this opening, specifically. <b>Skip if you can't articulate it.</b></p><div class="cnt">0 of 2 fields</div></div>
<div class="cd-r"><div class="fld"><label>What about Field &amp; Form? <span class="opt">required · 2 sentences</span></label><textarea placeholder="What you'd want to do here that you can't do where you are now."></textarea></div>
<div class="fld"><label>Pick the surfaces you most want to design <span class="opt">choose any</span></label><div class="tiles">
<button class="tile sel">Identity systems</button><button class="tile sel">Type design</button><button class="tile">Editorial</button><button class="tile">Web / interactive</button><button class="tile sel">Packaging</button><button class="tile">Signage</button><button class="tile">Books</button>
</div></div></div></div>
</div>
<div class="foot"><div class="lbl">Auto-saved<b>Just now</b></div><p>You can close this and come back anytime — your draft is saved to <b>reese@adachi.studio</b>. We'll review within a week.</p><button class="btn">Submit application →</button></div>
</section></body></html>
05

Calculator Form

Functional

Form that calculates a result live as you fill it in. Inputs on one side, real-time output on the other. For loans, quotes, ROI calculators.

Source HTML
<!doctype html><html><head><meta charset="utf-8"><link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,400;9..144,600&display=swap" rel="stylesheet">
<style>*{box-sizing:border-box;margin:0;padding:0}body{font-family:'Plus Jakarta Sans',sans-serif;background:linear-gradient(180deg,#f0f4ff 0%,#dbe4ff 100%);color:#0f1845;line-height:1.5;min-height:100vh}
.s{padding:36px;max-width:1100px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:24px}
.in{background:#fff;border-radius:18px;padding:32px;display:flex;flex-direction:column;gap:18px;box-shadow:0 16px 48px -24px rgba(15,24,69,.18)}
.in h2{font-family:'Fraunces',serif;font-weight:600;font-size:24px;letter-spacing:-.015em}
.in h2 em{font-style:italic;color:#3d4ad9}
.in p{font-size:13px;color:#3a4670;margin-bottom:6px}
.fld{display:flex;flex-direction:column;gap:8px}
.fld label{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:600;color:#0f1845}
.fld label b{font-weight:600;color:#3d4ad9;font-family:'Plus Jakarta Sans',sans-serif;font-variant-numeric:tabular-nums}
.fld input[type=range]{-webkit-appearance:none;width:100%;height:6px;background:linear-gradient(90deg,#3d4ad9 0%,#3d4ad9 60%,#e0e7ff 60%);border-radius:3px;outline:none;cursor:pointer}
.fld input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;background:#fff;border-radius:50%;cursor:pointer;box-shadow:0 2px 8px rgba(15,24,69,.2),0 0 0 2px #3d4ad9}
.fld .marks{display:flex;justify-content:space-between;font-size:11px;color:#7a8aa8;margin-top:2px}
.fld input[type=text],.fld select{padding:11px 14px;border:1.5px solid #e0e7ff;border-radius:10px;font-family:inherit;font-size:14px;background:#fafbff;color:#0f1845;width:100%}
.fld input[type=text]:focus,.fld select:focus{outline:none;border-color:#3d4ad9;background:#fff}
.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tile-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.tile{padding:10px 8px;border:1.5px solid #e0e7ff;border-radius:8px;font-family:inherit;background:#fafbff;cursor:pointer;font-size:12px;font-weight:500;color:#0f1845;text-align:center}
.tile:hover{border-color:#3d4ad9}
.tile.sel{background:#3d4ad9;color:#fff;border-color:#3d4ad9}
.out{background:linear-gradient(135deg,#0f1845,#1a2670);color:#fff;border-radius:18px;padding:32px;display:flex;flex-direction:column;gap:18px;position:relative;overflow:hidden}
.out::before{content:"";position:absolute;top:-100px;right:-100px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,rgba(125,148,255,.4),transparent 70%);pointer-events:none}
.out h2{font-family:'Fraunces',serif;font-weight:600;font-size:18px;color:rgba(255,255,255,.7);letter-spacing:.04em;text-transform:uppercase;font-style:italic;font-size:14px}
.big{font-family:'Fraunces',serif;font-size:64px;font-weight:600;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums;position:relative;z-index:2}
.big small{display:inline;font-size:21px;color:rgba(255,255,255,.7);font-weight:400;letter-spacing:0;font-family:'Plus Jakarta Sans',sans-serif;margin-left:4px}
.big em{font-style:italic;color:#7d94ff}
.subline{font-size:14px;color:rgba(255,255,255,.7);line-height:1.5}
.subline b{color:#fff;font-weight:600}
.brk{display:flex;flex-direction:column;gap:8px;padding:18px 0;border-top:1px solid rgba(255,255,255,.15);border-bottom:1px solid rgba(255,255,255,.15)}
.brk-row{display:flex;justify-content:space-between;font-size:13px}
.brk-row span{color:rgba(255,255,255,.7)}
.brk-row b{font-weight:600;font-variant-numeric:tabular-nums}
.cta{margin-top:auto;display:flex;flex-direction:column;gap:8px}
.btn{padding:14px;background:#fff;color:#0f1845;border:none;font-family:inherit;font-weight:600;font-size:15px;border-radius:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px}
.btn:hover{background:#7d94ff;color:#0f1845}
.note{font-size:12px;color:rgba(255,255,255,.5);text-align:center;font-style:italic;font-family:'Fraunces',serif}
@media(max-width:880px){.s{grid-template-columns:1fr;padding:18px;gap:14px}.big{font-size:48px}.row{grid-template-columns:1fr}}</style></head><body><section class="s">
<div class="in"><h2>What's your <em>monthly</em> going to be?</h2><p>Estimate in 4 quick fields. No contact info required, no soft credit pull.</p>
<div class="fld"><label>Loan amount<b>$420,000</b></label><input type="range" min="50000" max="800000" value="420000"><div class="marks"><span>$50k</span><span>$400k</span><span>$800k</span></div></div>
<div class="row"><div class="fld"><label>Loan type</label><div class="tile-grid"><button class="tile">15-yr fixed</button><button class="tile sel">30-yr fixed</button><button class="tile">5/1 ARM</button></div></div>
<div class="fld"><label>Down %</label><div class="tile-grid"><button class="tile">5%</button><button class="tile sel">20%</button><button class="tile">30%</button></div></div></div>
<div class="row"><div class="fld"><label>Property tax / yr</label><input type="text" value="$5,200"></div><div class="fld"><label>HOA / mo</label><input type="text" value="$0"></div></div>
<div class="fld"><label>ZIP code</label><input type="text" value="33701" placeholder="for accurate insurance"></div></div>

<div class="out"><h2>Estimated monthly payment</h2><div class="big">$<em>2,684</em><small>/ mo</small></div>
<p class="subline">Includes principal, interest, taxes, insurance &amp; HOA. <b>Locked rate of 6.45%</b> based on 740+ FICO.</p>
<div class="brk">
<div class="brk-row"><span>Principal &amp; interest</span><b>$2,118</b></div>
<div class="brk-row"><span>Property tax</span><b>$433</b></div>
<div class="brk-row"><span>Homeowners insurance</span><b>$133</b></div>
<div class="brk-row"><span>HOA / Other</span><b>—</b></div>
</div>
<div class="cta"><button class="btn">Get the locked rate quote →</button><div class="note">"Numbers locked for 90 days · No credit pull"</div></div>
</div>
</section></body></html>
Copied