HTML
Copy
<div><span class="mb-3 block text-[.72rem] tracking-[.12em] text-cw-muted uppercase">Accordion steps, completion from :has()</span>
<form class="group/acc rounded-[18px] bg-white px-8 py-[30px] text-cw-ink shadow-[0_1px_2px_rgba(35,22,26,.06),0_12px_32px_-14px_rgba(136,19,55,.22)] max-[600px]:px-[18px] max-[600px]:py-6 [counter-reset:cw-done] [interpolate-size:allow-keywords] has-[.s1_fieldset:valid]:[--cw-d1:1] has-[.s2_fieldset:valid]:[--cw-d2:1] has-[.s3_fieldset:valid]:[--cw-d3:1]" action="#cw-sent" aria-labelledby="cab-title">
<h2 class="text-[1.3rem] font-bold tracking-[-.015em]" id="cab-title">Book Cabin 7 at Pinecrest Lake</h2>
<p class="mt-1 text-[.92rem] text-cw-muted">Lakeside, sleeps 4 · $148 a night · free cancellation until 7 days before</p>
<div class="mt-6 grid gap-2.5">
<details class="s1 group/step rounded-[14px] border-[1.5px] border-[#e7dcdf] bg-white transition-[border-color,box-shadow] duration-250 open:border-cw-accent open:shadow-[0_0_0_4px_var(--color-cw-soft)] has-[fieldset:valid]:[counter-increment:cw-done] motion-reduce:transition-none [&::details-content]:[block-size:0] [&::details-content]:overflow-hidden [&::details-content]:[transition:block-size_.3s_ease,content-visibility_.3s_allow-discrete] open:[&::details-content]:[block-size:auto] motion-reduce:[&::details-content]:transition-none" name="cabin" open>
<summary class="flex cursor-pointer list-none items-center gap-3.5 rounded-xl px-4 py-3.5 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-cw-accent [&::-webkit-details-marker]:hidden"><span class="grid size-[34px] flex-none place-items-center rounded-full border-2 border-cw-line text-[.9rem] font-bold text-cw-muted transition-colors duration-250 group-open/step:border-cw-accent group-open/step:text-cw-dark group-has-[fieldset:valid]/step:border-cw-ok! group-has-[fieldset:valid]/step:bg-cw-ok group-has-[fieldset:valid]/step:text-white! motion-reduce:transition-none" aria-hidden="true"><b class="group-has-[fieldset:valid]/step:hidden">1</b><svg class="hidden size-[18px] fill-none stroke-current stroke-[2.5] group-has-[fieldset:valid]/step:block" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24" aria-hidden="true"><path d="m5 12.5 4.5 4.5L19 7.5"/></svg></span>
<span class="grid flex-1 font-bold">Dates <small class="text-[.8rem] font-medium text-cw-muted"><span class="group-has-[fieldset:valid]/step:hidden">Step 1 of 3</span><span class="hidden text-cw-ok group-has-[fieldset:valid]/step:inline">Step 1 of 3, complete</span></small></span>
<svg class="size-[18px] flex-none fill-none stroke-cw-muted stroke-[2.5] transition-[rotate] duration-250 group-open/step:rotate-180 motion-reduce:transition-none" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></summary>
<div class="grid scroll-mt-24 gap-4 px-4 pt-1 pb-[18px]" id="cab-dates"><fieldset class="grid min-w-0 gap-4"><legend class="sr-only">Dates</legend>
<div class="grid grid-cols-[repeat(auto-fit,minmax(160px,1fr))] gap-3.5">
<div class="grid min-w-0 gap-1.5"><label class="text-[.88rem] font-semibold" for="cab-in">Check-in</label><input class="min-h-11 w-full rounded-[10px] border-[1.5px] border-cw-line bg-white px-3 py-2.5 text-[.95rem] focus-visible:border-cw-accent focus-visible:shadow-[0_0_0_4px_var(--color-cw-soft)] focus-visible:outline-none user-invalid:border-[#b91c1c] user-invalid:bg-[#fff7f7]" id="cab-in" name="checkin" type="date" required value="2026-10-16"></div>
<div class="grid min-w-0 gap-1.5"><label class="text-[.88rem] font-semibold" for="cab-nights">Nights</label><input class="min-h-11 w-full rounded-[10px] border-[1.5px] border-cw-line bg-white px-3 py-2.5 text-[.95rem] focus-visible:border-cw-accent focus-visible:shadow-[0_0_0_4px_var(--color-cw-soft)] focus-visible:outline-none user-invalid:border-[#b91c1c] user-invalid:bg-[#fff7f7]" id="cab-nights" name="nights" type="number" min="2" max="14" required value="3"></div>
</div></fieldset>
<div class="flex flex-wrap gap-2.5"><a class="ms-auto inline-flex min-h-11 cursor-pointer items-center justify-center rounded-[10px] border-[1.5px] px-5 text-[.95rem] font-semibold no-underline transition-colors focus-visible:shadow-[0_0_0_3px_#fff,0_0_0_5px_var(--color-cw-accent)] focus-visible:outline-none motion-reduce:transition-none border-cw-accent bg-cw-accent text-white hover:bg-cw-dark" href="#cab-guests">Continue to guests</a></div>
</div>
</details>
<details class="s2 group/step rounded-[14px] border-[1.5px] border-[#e7dcdf] bg-white transition-[border-color,box-shadow] duration-250 open:border-cw-accent open:shadow-[0_0_0_4px_var(--color-cw-soft)] has-[fieldset:valid]:[counter-increment:cw-done] motion-reduce:transition-none [&::details-content]:[block-size:0] [&::details-content]:overflow-hidden [&::details-content]:[transition:block-size_.3s_ease,content-visibility_.3s_allow-discrete] open:[&::details-content]:[block-size:auto] motion-reduce:[&::details-content]:transition-none" name="cabin">
<summary class="flex cursor-pointer list-none items-center gap-3.5 rounded-xl px-4 py-3.5 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-cw-accent [&::-webkit-details-marker]:hidden"><span class="grid size-[34px] flex-none place-items-center rounded-full border-2 border-cw-line text-[.9rem] font-bold text-cw-muted transition-colors duration-250 group-open/step:border-cw-accent group-open/step:text-cw-dark group-has-[fieldset:valid]/step:border-cw-ok! group-has-[fieldset:valid]/step:bg-cw-ok group-has-[fieldset:valid]/step:text-white! motion-reduce:transition-none" aria-hidden="true"><b class="group-has-[fieldset:valid]/step:hidden">2</b><svg class="hidden size-[18px] fill-none stroke-current stroke-[2.5] group-has-[fieldset:valid]/step:block" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24" aria-hidden="true"><path d="m5 12.5 4.5 4.5L19 7.5"/></svg></span>
<span class="grid flex-1 font-bold">Guests <small class="text-[.8rem] font-medium text-cw-muted"><span class="group-has-[fieldset:valid]/step:hidden">Step 2 of 3</span><span class="hidden text-cw-ok group-has-[fieldset:valid]/step:inline">Step 2 of 3, complete</span></small></span>
<svg class="size-[18px] flex-none fill-none stroke-cw-muted stroke-[2.5] transition-[rotate] duration-250 group-open/step:rotate-180 motion-reduce:transition-none" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></summary>
<div class="grid scroll-mt-24 gap-4 px-4 pt-1 pb-[18px]" id="cab-guests"><fieldset class="grid min-w-0 gap-4"><legend class="sr-only">Guests</legend>
<div class="grid grid-cols-[repeat(auto-fit,minmax(160px,1fr))] gap-3.5">
<div class="grid min-w-0 gap-1.5"><label class="text-[.88rem] font-semibold" for="cab-adults">Adults</label><input class="min-h-11 w-full rounded-[10px] border-[1.5px] border-cw-line bg-white px-3 py-2.5 text-[.95rem] focus-visible:border-cw-accent focus-visible:shadow-[0_0_0_4px_var(--color-cw-soft)] focus-visible:outline-none user-invalid:border-[#b91c1c] user-invalid:bg-[#fff7f7]" id="cab-adults" name="adults" type="number" min="1" max="4" required value="2"></div>
<div class="grid min-w-0 gap-1.5"><label class="text-[.88rem] font-semibold" for="cab-kids">Children</label><input class="min-h-11 w-full rounded-[10px] border-[1.5px] border-cw-line bg-white px-3 py-2.5 text-[.95rem] focus-visible:border-cw-accent focus-visible:shadow-[0_0_0_4px_var(--color-cw-soft)] focus-visible:outline-none user-invalid:border-[#b91c1c] user-invalid:bg-[#fff7f7]" id="cab-kids" name="children" type="number" min="0" max="3" value="1"></div>
</div>
<label class="flex items-center gap-2.5 text-[.92rem]"><input class="size-[18px] accent-cw-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-cw-accent" type="checkbox" name="dog">Bringing a dog ($25 cleaning fee)</label></fieldset>
<div class="flex flex-wrap gap-2.5"><a class="inline-flex min-h-11 cursor-pointer items-center justify-center rounded-[10px] border-[1.5px] px-5 text-[.95rem] font-semibold no-underline transition-colors focus-visible:shadow-[0_0_0_3px_#fff,0_0_0_5px_var(--color-cw-accent)] focus-visible:outline-none motion-reduce:transition-none border-cw-line bg-white text-cw-dark hover:bg-[#fff5f6]" href="#cab-dates">Back</a><a class="ms-auto inline-flex min-h-11 cursor-pointer items-center justify-center rounded-[10px] border-[1.5px] px-5 text-[.95rem] font-semibold no-underline transition-colors focus-visible:shadow-[0_0_0_3px_#fff,0_0_0_5px_var(--color-cw-accent)] focus-visible:outline-none motion-reduce:transition-none border-cw-accent bg-cw-accent text-white hover:bg-cw-dark" href="#cab-contact">Continue to contact</a></div>
</div>
</details>
<details class="s3 group/step rounded-[14px] border-[1.5px] border-[#e7dcdf] bg-white transition-[border-color,box-shadow] duration-250 open:border-cw-accent open:shadow-[0_0_0_4px_var(--color-cw-soft)] has-[fieldset:valid]:[counter-increment:cw-done] motion-reduce:transition-none [&::details-content]:[block-size:0] [&::details-content]:overflow-hidden [&::details-content]:[transition:block-size_.3s_ease,content-visibility_.3s_allow-discrete] open:[&::details-content]:[block-size:auto] motion-reduce:[&::details-content]:transition-none" name="cabin">
<summary class="flex cursor-pointer list-none items-center gap-3.5 rounded-xl px-4 py-3.5 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-cw-accent [&::-webkit-details-marker]:hidden"><span class="grid size-[34px] flex-none place-items-center rounded-full border-2 border-cw-line text-[.9rem] font-bold text-cw-muted transition-colors duration-250 group-open/step:border-cw-accent group-open/step:text-cw-dark group-has-[fieldset:valid]/step:border-cw-ok! group-has-[fieldset:valid]/step:bg-cw-ok group-has-[fieldset:valid]/step:text-white! motion-reduce:transition-none" aria-hidden="true"><b class="group-has-[fieldset:valid]/step:hidden">3</b><svg class="hidden size-[18px] fill-none stroke-current stroke-[2.5] group-has-[fieldset:valid]/step:block" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24" aria-hidden="true"><path d="m5 12.5 4.5 4.5L19 7.5"/></svg></span>
<span class="grid flex-1 font-bold">Contact <small class="text-[.8rem] font-medium text-cw-muted"><span class="group-has-[fieldset:valid]/step:hidden">Step 3 of 3</span><span class="hidden text-cw-ok group-has-[fieldset:valid]/step:inline">Step 3 of 3, complete</span></small></span>
<svg class="size-[18px] flex-none fill-none stroke-cw-muted stroke-[2.5] transition-[rotate] duration-250 group-open/step:rotate-180 motion-reduce:transition-none" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg></summary>
<div class="grid scroll-mt-24 gap-4 px-4 pt-1 pb-[18px]" id="cab-contact"><fieldset class="grid min-w-0 gap-4"><legend class="sr-only">Contact</legend>
<div class="grid min-w-0 gap-1.5"><label class="text-[.88rem] font-semibold" for="cab-name">Full name</label><input class="min-h-11 w-full rounded-[10px] border-[1.5px] border-cw-line bg-white px-3 py-2.5 text-[.95rem] focus-visible:border-cw-accent focus-visible:shadow-[0_0_0_4px_var(--color-cw-soft)] focus-visible:outline-none user-invalid:border-[#b91c1c] user-invalid:bg-[#fff7f7]" id="cab-name" name="name" required autocomplete="name"></div>
<div class="grid grid-cols-[repeat(auto-fit,minmax(160px,1fr))] gap-3.5">
<div class="grid min-w-0 gap-1.5"><label class="text-[.88rem] font-semibold" for="cab-email">Email</label><input class="min-h-11 w-full rounded-[10px] border-[1.5px] border-cw-line bg-white px-3 py-2.5 text-[.95rem] focus-visible:border-cw-accent focus-visible:shadow-[0_0_0_4px_var(--color-cw-soft)] focus-visible:outline-none user-invalid:border-[#b91c1c] user-invalid:bg-[#fff7f7]" id="cab-email" name="email" type="email" required autocomplete="email"></div>
<div class="grid min-w-0 gap-1.5"><label class="text-[.88rem] font-semibold" for="cab-phone">Phone</label><input class="min-h-11 w-full rounded-[10px] border-[1.5px] border-cw-line bg-white px-3 py-2.5 text-[.95rem] focus-visible:border-cw-accent focus-visible:shadow-[0_0_0_4px_var(--color-cw-soft)] focus-visible:outline-none user-invalid:border-[#b91c1c] user-invalid:bg-[#fff7f7]" id="cab-phone" name="phone" type="tel" autocomplete="tel"></div>
</div></fieldset>
<div class="flex flex-wrap gap-2.5"><a class="inline-flex min-h-11 cursor-pointer items-center justify-center rounded-[10px] border-[1.5px] px-5 text-[.95rem] font-semibold no-underline transition-colors focus-visible:shadow-[0_0_0_3px_#fff,0_0_0_5px_var(--color-cw-accent)] focus-visible:outline-none motion-reduce:transition-none border-cw-line bg-white text-cw-dark hover:bg-[#fff5f6]" href="#cab-guests">Back</a></div>
</div>
</details>
</div>
<div class="mt-[22px] grid gap-3">
<div class="h-2 overflow-hidden rounded-full bg-[#efe6e8] shadow-[inset_0_0_0_1px_#8e7a80]" aria-hidden="true"><i class="block h-full w-[calc((var(--cw-d1,0)+var(--cw-d2,0)+var(--cw-d3,0))/3*100%)] rounded-full bg-cw-accent transition-[width] duration-350 motion-reduce:transition-none"></i></div>
<p class="flex flex-wrap justify-between gap-x-4 gap-y-2 text-[.88rem] text-cw-muted"><span><b class="text-cw-ink before:content-[counter(cw-done)]"></b> of 3 steps complete</span><span class="hidden flex-wrap items-center gap-1.5 group-has-[fieldset:invalid]/acc:flex">Still to do: <span class="hidden rounded-full bg-[#fff0f2] px-[9px] py-px text-[.8rem] font-semibold text-cw-dark group-has-[.s1_fieldset:invalid]/acc:inline">Dates</span><span class="hidden rounded-full bg-[#fff0f2] px-[9px] py-px text-[.8rem] font-semibold text-cw-dark group-has-[.s2_fieldset:invalid]/acc:inline">Guests</span><span class="hidden rounded-full bg-[#fff0f2] px-[9px] py-px text-[.8rem] font-semibold text-cw-dark group-has-[.s3_fieldset:invalid]/acc:inline">Contact</span></span></p>
<button class="justify-self-end inline-flex min-h-11 cursor-pointer items-center justify-center rounded-[10px] border-[1.5px] px-5 text-[.95rem] font-semibold no-underline transition-colors focus-visible:shadow-[0_0_0_3px_#fff,0_0_0_5px_var(--color-cw-accent)] focus-visible:outline-none motion-reduce:transition-none border-cw-accent bg-cw-accent text-white hover:bg-cw-dark group-has-[fieldset:invalid]/acc:hidden" type="submit">Request booking</button>
<p class="hidden rounded-[10px] border border-[#a7f3d0] bg-[#ecfdf5] px-3.5 py-3 text-[.92rem] font-semibold text-[#065f46] target:block" id="cw-sent" tabindex="-1">Request sent. Pinecrest Lake Cabins will confirm by email within a day.</p>
</div>
</form></div>
<div><span class="mb-3 block text-[.72rem] tracking-[.12em] text-cw-muted uppercase">Choices that reveal the next step</span>
<form class="group/pick rounded-[18px] bg-white px-8 py-[30px] text-cw-ink shadow-[0_1px_2px_rgba(35,22,26,.06),0_12px_32px_-14px_rgba(136,19,55,.22)] max-[600px]:px-[18px] max-[600px]:py-6 [counter-reset:cw-price]" aria-labelledby="cof-title">
<h2 class="text-[1.3rem] font-bold tracking-[-.015em]" id="cof-title">Build your coffee subscription</h2>
<p class="mt-1 text-[.92rem] text-cw-muted">Northbound Roasters · roasted to order, ships every Monday</p>
<ol class="mt-[22px] grid grid-cols-4 gap-1.5" aria-label="Progress">
<li class="c1 grid gap-1.5 text-[.8rem] font-semibold text-cw-muted before:h-1.5 before:rounded-full before:bg-[#efe6e8] before:shadow-[inset_0_0_0_1px_#8e7a80] before:transition-colors before:duration-300 text-cw-dark before:bg-cw-accent before:shadow-none group-has-[[name=beans]:checked]/pick:text-cw-ok! group-has-[[name=beans]:checked]/pick:before:bg-cw-ok! motion-reduce:before:transition-none max-[600px]:text-[.72rem]">Beans<span class="hidden group-has-[[name=beans]:checked]/pick:inline sr-only">, done</span></li>
<li class="c2 grid gap-1.5 text-[.8rem] font-semibold text-cw-muted before:h-1.5 before:rounded-full before:bg-[#efe6e8] before:shadow-[inset_0_0_0_1px_#8e7a80] before:transition-colors before:duration-300 group-has-[[name=beans]:checked]/pick:text-cw-dark group-has-[[name=beans]:checked]/pick:before:bg-cw-accent group-has-[[name=beans]:checked]/pick:before:shadow-none group-has-[[name=grind]:checked]/pick:text-cw-ok! group-has-[[name=grind]:checked]/pick:before:bg-cw-ok! motion-reduce:before:transition-none max-[600px]:text-[.72rem]">Grind<span class="hidden group-has-[[name=grind]:checked]/pick:inline sr-only">, done</span></li>
<li class="c3 grid gap-1.5 text-[.8rem] font-semibold text-cw-muted before:h-1.5 before:rounded-full before:bg-[#efe6e8] before:shadow-[inset_0_0_0_1px_#8e7a80] before:transition-colors before:duration-300 group-has-[[name=grind]:checked]/pick:text-cw-dark group-has-[[name=grind]:checked]/pick:before:bg-cw-accent group-has-[[name=grind]:checked]/pick:before:shadow-none group-has-[[name=size]:checked]/pick:text-cw-ok! group-has-[[name=size]:checked]/pick:before:bg-cw-ok! motion-reduce:before:transition-none max-[600px]:text-[.72rem]">Bag size<span class="hidden group-has-[[name=size]:checked]/pick:inline sr-only">, done</span></li>
<li class="c4 grid gap-1.5 text-[.8rem] font-semibold text-cw-muted before:h-1.5 before:rounded-full before:bg-[#efe6e8] before:shadow-[inset_0_0_0_1px_#8e7a80] before:transition-colors before:duration-300 group-has-[[name=size]:checked]/pick:text-cw-dark group-has-[[name=size]:checked]/pick:before:bg-cw-accent group-has-[[name=size]:checked]/pick:before:shadow-none group-has-[[name=every]:checked]/pick:text-cw-ok! group-has-[[name=every]:checked]/pick:before:bg-cw-ok! motion-reduce:before:transition-none max-[600px]:text-[.72rem]">Delivery<span class="hidden group-has-[[name=every]:checked]/pick:inline sr-only">, done</span></li>
</ol>
<fieldset class="mt-[26px] min-w-0 transition-[opacity,translate,display] transition-discrete duration-350 starting:translate-y-2.5 starting:opacity-0 motion-reduce:transition-none"><legend class="mb-3 text-[1.05rem] font-bold"><span class="block text-[.72rem] tracking-[.1em] text-cw-dark uppercase">Step 1 of 4</span>Choose your beans</legend>
<div class="grid grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-2.5 max-[600px]:grid-cols-1">
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="beans" id="cb-1" value="Ethiopia Guji" required checked style="--price:19"><b class="text-[.95rem]">Ethiopia Guji</b><span class="text-[.8rem] text-cw-muted">Peach, jasmine, black tea</span><em class="text-[.8rem] font-bold text-cw-dark not-italic">$19</em></label>
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="beans" id="cb-2" value="Northbound House" style="--price:16"><b class="text-[.95rem]">Northbound House</b><span class="text-[.8rem] text-cw-muted">Cocoa, hazelnut, brown sugar</span><em class="text-[.8rem] font-bold text-cw-dark not-italic">$16</em></label>
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="beans" id="cb-3" value="Colombia Huila Decaf" style="--price:17"><b class="text-[.95rem]">Huila Decaf</b><span class="text-[.8rem] text-cw-muted">Red apple, caramel, no caffeine</span><em class="text-[.8rem] font-bold text-cw-dark not-italic">$17</em></label>
</div></fieldset>
<fieldset class="hidden group-has-[[name=beans]:checked]/pick:block mt-[26px] min-w-0 transition-[opacity,translate,display] transition-discrete duration-350 starting:translate-y-2.5 starting:opacity-0 motion-reduce:transition-none"><legend class="mb-3 text-[1.05rem] font-bold"><span class="block text-[.72rem] tracking-[.1em] text-cw-dark uppercase">Step 2 of 4</span>How do you brew?</legend>
<div class="grid grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-2.5 max-[600px]:grid-cols-1">
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="grind" id="cg-1" value="Whole bean" required><b class="text-[.95rem]">Whole bean</b><span class="text-[.8rem] text-cw-muted">You grind at home</span></label>
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="grind" id="cg-2" value="Espresso"><b class="text-[.95rem]">Espresso</b><span class="text-[.8rem] text-cw-muted">Fine grind</span></label>
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="grind" id="cg-3" value="Filter" checked><b class="text-[.95rem]">Filter</b><span class="text-[.8rem] text-cw-muted">Medium, for pour-over</span></label>
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="grind" id="cg-4" value="French press"><b class="text-[.95rem]">French press</b><span class="text-[.8rem] text-cw-muted">Coarse grind</span></label>
</div></fieldset>
<fieldset class="hidden group-has-[[name=grind]:checked]/pick:block mt-[26px] min-w-0 transition-[opacity,translate,display] transition-discrete duration-350 starting:translate-y-2.5 starting:opacity-0 motion-reduce:transition-none"><legend class="mb-3 text-[1.05rem] font-bold"><span class="block text-[.72rem] tracking-[.1em] text-cw-dark uppercase">Step 3 of 4</span>Bag size</legend>
<div class="grid grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-2.5 max-[600px]:grid-cols-1">
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="size" id="cs-1" value="250 g" required><b class="text-[.95rem]">250 g</b><span class="text-[.8rem] text-cw-muted">About 16 cups</span><em class="text-[.8rem] font-bold text-cw-dark not-italic">Included</em></label>
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="size" id="cs-2" value="500 g" style="--price:9"><b class="text-[.95rem]">500 g</b><span class="text-[.8rem] text-cw-muted">About 33 cups</span><em class="text-[.8rem] font-bold text-cw-dark not-italic">+$9</em></label>
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="size" id="cs-3" value="1 kg" style="--price:24"><b class="text-[.95rem]">1 kg</b><span class="text-[.8rem] text-cw-muted">About 66 cups</span><em class="text-[.8rem] font-bold text-cw-dark not-italic">+$24</em></label>
</div></fieldset>
<fieldset class="hidden group-has-[[name=size]:checked]/pick:block mt-[26px] min-w-0 transition-[opacity,translate,display] transition-discrete duration-350 starting:translate-y-2.5 starting:opacity-0 motion-reduce:transition-none"><legend class="mb-3 text-[1.05rem] font-bold"><span class="block text-[.72rem] tracking-[.1em] text-cw-dark uppercase">Step 4 of 4</span>How often?</legend>
<div class="grid grid-cols-[repeat(auto-fit,minmax(150px,1fr))] gap-2.5 max-[600px]:grid-cols-1">
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="every" id="ce-1" value="Every week" required><b class="text-[.95rem]">Every week</b><span class="text-[.8rem] text-cw-muted">Ships Mondays</span></label>
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="every" id="ce-2" value="Every 2 weeks"><b class="text-[.95rem]">Every 2 weeks</b><span class="text-[.8rem] text-cw-muted">Most popular</span></label>
<label class="relative grid cursor-pointer gap-0.5 rounded-xl border-[1.5px] border-cw-line px-3.5 py-[13px] transition-[border-color,background-color] duration-200 has-checked:border-cw-accent has-checked:bg-[#fff5f6] has-checked:shadow-[inset_0_0_0_1px_var(--color-cw-accent)] has-focus-visible:outline-2 has-focus-visible:outline-offset-3 has-focus-visible:outline-cw-accent motion-reduce:transition-none"><input class="absolute inset-0 m-0 size-full cursor-pointer opacity-0 checked:[counter-increment:cw-price_var(--price,0)]" type="radio" name="every" id="ce-3" value="Every month"><b class="text-[.95rem]">Every month</b><span class="text-[.8rem] text-cw-muted">First Monday</span></label>
</div></fieldset>
<div class="mt-[26px] hidden gap-3 rounded-[14px] border-[1.5px] border-[#f4c2cb] bg-[#fff5f6] p-[18px] transition-[opacity,translate,display] transition-discrete duration-350 group-has-[[name=every]:checked]/pick:grid starting:translate-y-2.5 starting:opacity-0 motion-reduce:transition-none">
<h3 class="text-[1.05rem] font-bold">Your box</h3>
<p class="text-[.95rem]"><span class="hidden group-has-[#cb-1:checked]/pick:inline">Ethiopia Guji</span><span class="hidden group-has-[#cb-2:checked]/pick:inline">Northbound House</span><span class="hidden group-has-[#cb-3:checked]/pick:inline">Huila Decaf</span>,
<span class="hidden group-has-[#cg-1:checked]/pick:inline">whole bean</span><span class="hidden group-has-[#cg-2:checked]/pick:inline">ground for espresso</span><span class="hidden group-has-[#cg-3:checked]/pick:inline">ground for filter</span><span class="hidden group-has-[#cg-4:checked]/pick:inline">ground for French press</span>,
<span class="hidden group-has-[#cs-1:checked]/pick:inline">250 g</span><span class="hidden group-has-[#cs-2:checked]/pick:inline">500 g</span><span class="hidden group-has-[#cs-3:checked]/pick:inline">1 kg</span>
<span class="hidden group-has-[#ce-1:checked]/pick:inline">every week</span><span class="hidden group-has-[#ce-2:checked]/pick:inline">every 2 weeks</span><span class="hidden group-has-[#ce-3:checked]/pick:inline">every month</span>.</p>
<div class="flex flex-wrap items-center justify-between gap-3"><p class="text-[.9rem] text-cw-muted"><strong class="text-[1.6rem] tracking-[-.02em] text-cw-ink before:content-['$'_counter(cw-price)]"></strong> per delivery · free shipping · skip or cancel any time</p><button class="inline-flex min-h-11 cursor-pointer items-center justify-center rounded-[10px] border-[1.5px] px-5 text-[.95rem] font-semibold no-underline transition-colors focus-visible:shadow-[0_0_0_3px_#fff,0_0_0_5px_var(--color-cw-accent)] focus-visible:outline-none motion-reduce:transition-none border-cw-accent bg-cw-accent text-white hover:bg-cw-dark" type="submit">Start subscription</button></div>
</div>
</form></div>