AI answer from Haiku 5.5 · low effort · 8 Oct 2026
9 of 9
Show the code and the answer.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Brindlebill: Invoicing for freelancers</title>
<meta name="description" content="Brindlebill is invoicing for freelancers. Create invoices in a minute, send gentle reminders, and get paid by card or bank.">
<style>
*, *::before, *::after {
box-sizing: border-box;
}
:root {
--ink: #1d2433;
--muted: #5b6474;
--paper: #fbfaf7;
--card: #ffffff;
--line: #e3e0d8;
--accent: #2f6f5e;
--accent-dark: #245749;
--accent-soft: #e4f0ec;
}
html {
-webkit-text-size-adjust: 100%;
scroll-behavior: smooth;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.6;
color: var(--ink);
background: var(--paper);
}
img, svg {
max-width: 100%;
}
.container {
width: 100%;
max-width: 960px;
margin: 0 auto;
padding: 0 20px;
}
section {
padding: 56px 0;
}
h1, h2, h3 {
line-height: 1.2;
margin: 0 0 12px;
}
h1 {
font-size: 2.1rem;
}
h2 {
font-size: 1.6rem;
}
h3 {
font-size: 1.15rem;
}
p {
margin: 0 0 12px;
}
.muted {
color: var(--muted);
}
a {
color: var(--accent);
}
a:focus-visible,
button:focus-visible {
outline: 3px solid var(--accent);
outline-offset: 2px;
}
/* Header */
.site-header {
padding: 20px 0;
border-bottom: 1px solid var(--line);
background: var(--card);
}
.brand {
font-weight: 700;
font-size: 1.2rem;
color: var(--ink);
text-decoration: none;
}
/* Buttons */
.btn {
display: inline-block;
min-height: 48px;
padding: 12px 24px;
font: inherit;
font-weight: 600;
color: #ffffff;
background: var(--accent);
border: none;
border-radius: 8px;
text-align: center;
text-decoration: none;
cursor: pointer;
}
.btn:hover {
background: var(--accent-dark);
}
/* Hero */
.hero {
padding: 64px 0 48px;
}
.hero p.lead {
font-size: 1.15rem;
color: var(--muted);
max-width: 36em;
margin-bottom: 24px;
}
/* Features */
.features {
display: grid;
gap: 16px;
grid-template-columns: 1fr;
margin-top: 24px;
}
.card {
background: var(--card);
border: 1px solid var(--line);
border-radius: 12px;
padding: 24px;
}
.card p {
color: var(--muted);
margin-bottom: 0;
}
/* Pricing */
.billing-toggle {
display: inline-flex;
border: 1px solid var(--line);
border-radius: 999px;
padding: 4px;
background: var(--card);
margin: 16px 0 24px;
}
.billing-toggle button {
min-height: 44px;
padding: 8px 18px;
font: inherit;
font-weight: 600;
color: var(--muted);
background: transparent;
border: none;
border-radius: 999px;
cursor: pointer;
}
.billing-toggle button[aria-pressed="true"] {
background: var(--accent);
color: #ffffff;
}
.save-note {
font-size: 1rem;
color: var(--accent-dark);
font-weight: 600;
margin-left: 8px;
}
.plans {
display: grid;
gap: 16px;
grid-template-columns: 1fr;
}
.plan {
display: flex;
flex-direction: column;
}
.plan .price {
font-size: 2rem;
font-weight: 700;
margin: 8px 0 4px;
}
.plan .price-note {
color: var(--muted);
margin-bottom: 16px;
}
.plan ul {
list-style: none;
padding: 0;
margin: 0 0 24px;
flex-grow: 1;
}
.plan li {
padding: 6px 0 6px 26px;
position: relative;
}
.plan li::before {
content: "\2713";
position: absolute;
left: 0;
color: var(--accent);
font-weight: 700;
}
.plan .btn {
width: 100%;
}
.plan.featured {
border: 2px solid var(--accent);
}
/* FAQ */
.faq-item {
border-bottom: 1px solid var(--line);
}
.faq-question {
width: 100%;
min-height: 48px;
display: flex;
justify-content: space-between;
align-items: center;
gap: 16px;
padding: 16px 0;
font: inherit;
font-weight: 600;
color: var(--ink);
background: transparent;
border: none;
text-align: left;
cursor: pointer;
}
.faq-icon {
flex-shrink: 0;
font-size: 1.4rem;
line-height: 1;
color: var(--accent);
transition: transform 0.2s ease;
}
.faq-question[aria-expanded="true"] .faq-icon {
transform: rotate(45deg);
}
.faq-answer {
padding: 0 0 16px;
color: var(--muted);
}
.faq-answer[hidden] {
display: none;
}
/* CTA and footer */
.cta {
text-align: center;
background: var(--accent-soft);
border-radius: 16px;
padding: 48px 24px;
}
.cta p {
color: var(--muted);
margin-bottom: 24px;
}
.site-footer {
padding: 24px 0 40px;
color: var(--muted);
font-size: 16px;
border-top: 1px solid var(--line);
}
/* Larger screens */
@media (min-width: 640px) {
h1 {
font-size: 2.6rem;
}
h2 {
font-size: 1.9rem;
}
.features {
grid-template-columns: repeat(3, 1fr);
}
.plans {
grid-template-columns: repeat(3, 1fr);
}
}
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
.faq-icon {
transition: none;
}
}
</style>
</head>
<body>
<header class="site-header">
<div class="container">
<a class="brand" href="#top">Brindlebill</a>
</div>
</header>
<main id="top">
<section class="hero">
<div class="container">
<h1>Get paid faster, without the chasing</h1>
<p class="lead">Brindlebill is invoicing for freelancers. Send professional invoices, let reminders do the nudging, and get paid by card or bank.</p>
<a class="btn" href="#signup">Start free trial</a>
</div>
</section>
<section id="features">
<div class="container">
<h2>Everything you need to get paid</h2>
<div class="features">
<article class="card">
<h3>Invoices in a minute</h3>
<p>Pick a client, add your work, and send. Your invoice is ready before your coffee cools.</p>
</article>
<article class="card">
<h3>Gentle reminders</h3>
<p>Friendly follow-ups go out on your schedule, so you don't have to write awkward emails.</p>
</article>
<article class="card">
<h3>Card and bank payments</h3>
<p>Clients can pay by card or bank transfer from the link in your invoice.</p>
</article>
</div>
</div>
</section>
<section id="pricing">
<div class="container">
<h2>Simple pricing</h2>
<p class="muted">Start with a free trial. Choose a plan when you're ready.</p>
<div class="billing-toggle" role="group" aria-label="Billing period">
<button type="button" id="btn-monthly" aria-pressed="true" data-period="monthly">Monthly</button>
<button type="button" id="btn-yearly" aria-pressed="false" data-period="yearly">Yearly</button>
</div>
<span class="save-note" id="save-note" hidden>Two months free</span>
<div class="plans">
<article class="card plan">
<h3>Starter</h3>
<p class="price" data-monthly="$9" data-yearly="$90">$9</p>
<p class="price-note" data-monthly-note="per month" data-yearly-note="per year">per month</p>
<ul>
<li>5 clients</li>
<li>PDF invoices</li>
</ul>
<a class="btn" href="#signup">Start free trial</a>
</article>
<article class="card plan featured">
<h3>Pro</h3>
<p class="price" data-monthly="$19" data-yearly="$190">$19</p>
<p class="price-note" data-monthly-note="per month" data-yearly-note="per year">per month</p>
<ul>
<li>Unlimited clients</li>
<li>Automatic reminders</li>
<li>Your own logo</li>
</ul>
<a class="btn" href="#signup">Start free trial</a>
</article>
<article class="card plan">
<h3>Team</h3>
<p class="price" data-monthly="$49" data-yearly="$490">$49</p>
<p class="price-note" data-monthly-note="per month" data-yearly-note="per year">per month</p>
<ul>
<li>Everything in Pro</li>
<li>5 seats</li>
<li>A shared client list</li>
</ul>
<a class="btn" href="#signup">Start free trial</a>
</article>
</div>
</div>
</section>
<section id="faq">
<div class="container">
<h2>Questions</h2>
<div class="faq-item">
<h3>
<button type="button" class="faq-question" aria-expanded="false" aria-controls="faq-1" id="faq-btn-1">
Can I cancel any time?
<span class="faq-icon" aria-hidden="true">+</span>
</button>
</h3>
<div class="faq-answer" id="faq-1" role="region" aria-labelledby="faq-btn-1" hidden>
<p>Yes. Cancel from your account page and you won't be charged again. Nothing is locked in.</p>
</div>
</div>
<div class="faq-item">
<h3>
<button type="button" class="faq-question" aria-expanded="false" aria-controls="faq-2" id="faq-btn-2">
Do my clients need an account?
<span class="faq-icon" aria-hidden="true">+</span>
</button>
</h3>
<div class="faq-answer" id="faq-2" role="region" aria-labelledby="faq-btn-2" hidden>
<p>No. They open a link, see the invoice and pay. They never have to sign up.</p>
</div>
</div>
<div class="faq-item">
<h3>
<button type="button" class="faq-question" aria-expanded="false" aria-controls="faq-3" id="faq-btn-3">
Which currencies can I invoice in?
<span class="faq-icon" aria-hidden="true">+</span>
</button>
</h3>
<div class="faq-answer" id="faq-3" role="region" aria-labelledby="faq-btn-3" hidden>
<p>You can invoice in 30 currencies, and each invoice shows the amount in your client's currency.</p>
</div>
</div>
<div class="faq-item">
<h3>
<button type="button" class="faq-question" aria-expanded="false" aria-controls="faq-4" id="faq-btn-4">
What happens when the free trial ends?
<span class="faq-icon" aria-hidden="true">+</span>
</button>
</h3>
<div class="faq-answer" id="faq-4" role="region" aria-labelledby="faq-btn-4" hidden>
<p>You pick a plan. If you don't, your account switches to view-only and your invoices stay safe for 90 days.</p>
</div>
</div>
</div>
</section>
<section id="signup">
<div class="container">
<div class="cta">
<h2>Ready to get paid faster?</h2>
<p>Start your free trial today. No commitment.</p>
<a class="btn" href="#signup">Start free trial</a>
</div>
</div>
</section>
</main>
<footer class="site-footer">
<div class="container">
<p>© Brindlebill. All rights reserved.</p>
</div>
</footer>
<script>
// Monthly / Yearly switch
(function () {
var buttons = document.querySelectorAll('.billing-toggle button');
var prices = document.querySelectorAll('.plan .price');
var notes = document.querySelectorAll('.plan .price-note');
var saveNote = document.getElementById('save-note');
function setPeriod(period) {
buttons.forEach(function (btn) {
btn.setAttribute('aria-pressed', String(btn.dataset.period === period));
});
prices.forEach(function (el) {
el.textContent = period === 'yearly' ? el.dataset.yearly : el.dataset.monthly;
});
notes.forEach(function (el) {
el.textContent = period === 'yearly' ? el.dataset.yearlyNote : el.dataset.monthlyNote;
});
saveNote.hidden = period !== 'yearly';
}
buttons.forEach(function (btn) {
btn.addEventListener('click', function () {
setPeriod(btn.dataset.period);
});
});
})();
// FAQ open and close
(function () {
var questions = document.querySelectorAll('.faq-question');
questions.forEach(function (btn) {
btn.addEventListener('click', function () {
var expanded = btn.getAttribute('aria-expanded') === 'true';
var answer = document.getElementById(btn.getAttribute('aria-controls'));
btn.setAttribute('aria-expanded', String(!expanded));
answer.hidden = expanded;
});
});
})();
</script>
</body>
</html>- Floor2/2, 100% passed
- Middle4/4, 100% passed
- Top3/3, 100% passed
9 of 9 checks passedfloor 2/2, middle 4/4, top 3/3
- The page loads with no errors in the console
- Every section is there, with the exact plan names, prices and text
- No sideways scroll on a 375 px phone
- Nothing is loaded from outside the file
- One h1, no skipped heading levels, text 16 px or larger, enough contrast
- The page looks finished: clear hierarchy, pricing easy to compare, nothing broken
- Yearly shows $90, $190 and $490, and Monthly brings back $9, $19, $49
- Each FAQ question opens and closes from the keyboard
- Still no sideways scroll on a phone with Yearly on and every FAQ open
- Took 18 s.
- First words after 3.2 s.
- Wrote 5,676 tokens, 353 of them thinking.
- 0.3¢ at API prices.
All numbers.
| Time to finish | 18 s |
|---|---|
| Time to first words | 3.2 s |
| Input tokens | 1,417 |
| Cached tokens | 0 |
| Output tokens | 5,676 |
| Thinking tokens | 353 |
| Words in the answer | 1,220 |
| Price at API rates | 0.3¢ |





























