HTML
Copy
<div class="grid grid-cols-[repeat(auto-fit,minmax(min(100%,320px),1fr))] gap-12">
<div><span class="mb-[18px] block text-[.72rem] tracking-[.12em] text-[#57534e] uppercase">Product box with a spin switch</span>
<div class="relative grid justify-items-center gap-5">
<input class="peer absolute size-px opacity-0 motion-reduce:hidden" type="checkbox" role="switch" id="bxw-spin">
<label class="group inline-flex cursor-pointer items-center gap-2.5 rounded-full border border-[#a8a29e] bg-white py-2 pr-3.5 pl-2.5 text-[.88rem] font-bold text-[#1c1917] peer-focus-visible:outline-3 peer-focus-visible:outline-offset-3 peer-focus-visible:outline-[#1d4ed8] motion-reduce:hidden" for="bxw-spin"><i class="relative h-5 w-[34px] rounded-full bg-[#78716c] transition-colors duration-200 group-[.peer:checked~&]:bg-[#15803d] after:absolute after:top-[3px] after:left-[3px] after:size-3.5 after:rounded-full after:bg-white after:transition-transform after:duration-200 after:content-[''] group-[.peer:checked~&]:after:translate-x-3.5" aria-hidden="true"></i>Spin the box</label>
<div class="grid h-[300px] w-full place-items-center perspective-[1100px] motion-safe:peer-checked:*:animate-[bx-spin_10s_linear_infinite]">
<div class="relative h-(--h) w-(--w) transform-3d [--d:90px] [--h:210px] [--w:150px] [transform:rotateX(-14deg)_rotateY(-32deg)]" role="img" aria-label="Kettle and Leaf Smoked Lapsang tea, a green 100 gram box">
<div class="absolute flex flex-col backface-hidden h-(--h) w-(--w) justify-between bg-[#14532d] bg-[linear-gradient(160deg,#166534,#14532d_60%)] px-4 py-[18px] text-[#fefce8] [transform:translateZ(calc(var(--d)/2))]"><span class="text-[.62rem] font-extrabold tracking-[.22em] text-[#fde68a] uppercase">Kettle & Leaf</span>
<svg class="size-11 text-[#fde68a]" viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 38C8 20 20 8 40 8c0 20-12 32-30 30z"/><path d="M10 38L28 20"/></svg>
<div><p class="font-[Georgia,'Times_New_Roman',serif] text-[1.45rem] leading-[1.05]">Smoked Lapsang</p><p class="text-[.7rem] tracking-[.06em] text-[#dcfce7]">Black tea · 100 g loose leaf</p></div></div>
<div class="absolute flex flex-col backface-hidden h-(--h) w-(--w) gap-2 bg-[#fefce8] px-3.5 py-[18px] text-[.66rem] leading-[1.45] text-[#14532d] [transform:rotateY(180deg)_translateZ(calc(var(--d)/2))]"><strong class="text-[.72rem] tracking-[.14em] uppercase">Brewing</strong><p>One heaped teaspoon per cup. Water at 95 °C. Steep for four minutes, then taste.</p><p>Pine-smoked in the Wuyi mountains. Packed in Leith.</p></div>
<div class="absolute flex flex-col backface-hidden left-[calc((var(--w)_-_var(--d))/2)] h-(--h) w-(--d) items-center justify-center bg-[#166534] text-[.6rem] font-extrabold tracking-[.2em] text-[#fefce8] uppercase [writing-mode:vertical-rl] [transform:rotateY(90deg)_translateZ(calc(var(--w)/2))]">Brew 95 °C · 4 min</div>
<div class="absolute flex flex-col backface-hidden left-[calc((var(--w)_-_var(--d))/2)] h-(--h) w-(--d) items-center justify-center bg-[#115e2b] text-[.6rem] font-extrabold tracking-[.2em] text-[#fefce8] uppercase [writing-mode:vertical-rl] [transform:rotateY(-90deg)_translateZ(calc(var(--w)/2))]">Kettle & Leaf, Leith</div>
<div class="absolute flex flex-col backface-hidden top-[calc((var(--h)_-_var(--d))/2)] h-(--d) w-(--w) items-center justify-center bg-[#0f3f22] text-[.6rem] font-extrabold tracking-[.24em] text-[#fde68a] uppercase [transform:rotateX(90deg)_translateZ(calc(var(--h)/2))]">K & L</div>
<div class="absolute flex flex-col backface-hidden top-[calc((var(--h)_-_var(--d))/2)] h-(--d) w-(--w) items-center justify-center bg-[#0b301a] text-[.6rem] font-extrabold tracking-[.24em] text-[#fde68a] uppercase [transform:rotateX(-90deg)_translateZ(calc(var(--h)/2))]">Lot 26-114</div>
</div>
</div>
</div></div>
<div><span class="mb-[18px] block text-[.72rem] tracking-[.12em] text-[#57534e] uppercase">Cube navigation, one button per face</span>
<fieldset class="relative flex min-w-0 flex-wrap justify-center gap-2">
<legend class="sr-only">Show a step of the project</legend>
<input type="radio" name="cbn" id="cbnw-1" class="peer/c1 absolute size-px opacity-0" checked><input type="radio" name="cbn" id="cbnw-2" class="peer/c2 absolute size-px opacity-0"><input type="radio" name="cbn" id="cbnw-3" class="peer/c3 absolute size-px opacity-0"><input type="radio" name="cbn" id="cbnw-4" class="peer/c4 absolute size-px opacity-0"><input type="radio" name="cbn" id="cbnw-5" class="peer/c5 absolute size-px opacity-0"><input type="radio" name="cbn" id="cbnw-6" class="peer/c6 absolute size-px opacity-0">
<div class="mb-3.5 grid h-[300px] basis-full place-items-center perspective-[1000px] peer-checked/c2:[--fy:-90deg] peer-checked/c3:[--fy:-180deg] peer-checked/c4:[--fy:90deg] peer-checked/c5:[--fx:-90deg] peer-checked/c6:[--fx:90deg]">
<div class="relative size-(--s) transition-transform duration-800 ease-[cubic-bezier(.3,.8,.25,1)] transform-3d [--s:190px] [transform:translateZ(calc(var(--s)/-2))_rotateX(-12deg)_rotateY(16deg)_rotateX(var(--fx,0deg))_rotateY(var(--fy,0deg))] motion-reduce:transition-none">
<div class="absolute inset-0 flex flex-col justify-end gap-1.5 rounded-md p-5 shadow-[inset_0_0_0_1px_rgba(28,25,23,.12)] backface-hidden bg-[#fde68a] [transform:translateZ(calc(var(--s)/2))]"><span class="text-[2.4rem] leading-none font-extrabold tracking-[-.04em] text-[#1c1917]">01</span><h3 class="text-[1.05rem] font-extrabold">Plan</h3><p class="text-[.82rem] leading-[1.4] text-[#44403c]">Two workshops to agree the goals and the budget.</p></div>
<div class="absolute inset-0 flex flex-col justify-end gap-1.5 rounded-md p-5 shadow-[inset_0_0_0_1px_rgba(28,25,23,.12)] backface-hidden bg-[#bbf7d0] [transform:rotateY(90deg)_translateZ(calc(var(--s)/2))]"><span class="text-[2.4rem] leading-none font-extrabold tracking-[-.04em] text-[#1c1917]">02</span><h3 class="text-[1.05rem] font-extrabold">Design</h3><p class="text-[.82rem] leading-[1.4] text-[#44403c]">Clickable prototypes, tested with five real users.</p></div>
<div class="absolute inset-0 flex flex-col justify-end gap-1.5 rounded-md p-5 shadow-[inset_0_0_0_1px_rgba(28,25,23,.12)] backface-hidden bg-[#bae6fd] [transform:rotateY(180deg)_translateZ(calc(var(--s)/2))]"><span class="text-[2.4rem] leading-none font-extrabold tracking-[-.04em] text-[#1c1917]">03</span><h3 class="text-[1.05rem] font-extrabold">Build</h3><p class="text-[.82rem] leading-[1.4] text-[#44403c]">Two-week sprints with a demo every other Friday.</p></div>
<div class="absolute inset-0 flex flex-col justify-end gap-1.5 rounded-md p-5 shadow-[inset_0_0_0_1px_rgba(28,25,23,.12)] backface-hidden bg-[#fbcfe8] [transform:rotateY(-90deg)_translateZ(calc(var(--s)/2))]"><span class="text-[2.4rem] leading-none font-extrabold tracking-[-.04em] text-[#1c1917]">04</span><h3 class="text-[1.05rem] font-extrabold">Test</h3><p class="text-[.82rem] leading-[1.4] text-[#44403c]">Accessibility and load testing before anything ships.</p></div>
<div class="absolute inset-0 flex flex-col justify-end gap-1.5 rounded-md p-5 shadow-[inset_0_0_0_1px_rgba(28,25,23,.12)] backface-hidden bg-[#ddd6fe] [transform:rotateX(90deg)_translateZ(calc(var(--s)/2))]"><span class="text-[2.4rem] leading-none font-extrabold tracking-[-.04em] text-[#1c1917]">05</span><h3 class="text-[1.05rem] font-extrabold">Launch</h3><p class="text-[.82rem] leading-[1.4] text-[#44403c]">A staged roll-out, 5 per cent of traffic first.</p></div>
<div class="absolute inset-0 flex flex-col justify-end gap-1.5 rounded-md p-5 shadow-[inset_0_0_0_1px_rgba(28,25,23,.12)] backface-hidden bg-[#fed7aa] [transform:rotateX(-90deg)_translateZ(calc(var(--s)/2))]"><span class="text-[2.4rem] leading-none font-extrabold tracking-[-.04em] text-[#1c1917]">06</span><h3 class="text-[1.05rem] font-extrabold">Support</h3><p class="text-[.82rem] leading-[1.4] text-[#44403c]">Ninety days of fixes and a monthly report.</p></div>
</div>
</div>
<label for="cbnw-1" class="cursor-pointer rounded-full border border-[#a8a29e] bg-white px-3.5 py-2 text-[.86rem] font-bold text-[#44403c] transition-colors duration-200 hover:border-[#1c1917] motion-reduce:transition-none peer-checked/c1:border-[#1c1917] peer-checked/c1:bg-[#1c1917] peer-checked/c1:text-white peer-focus-visible/c1:outline-3 peer-focus-visible/c1:outline-offset-3 peer-focus-visible/c1:outline-[#1d4ed8]">Plan</label><label for="cbnw-2" class="cursor-pointer rounded-full border border-[#a8a29e] bg-white px-3.5 py-2 text-[.86rem] font-bold text-[#44403c] transition-colors duration-200 hover:border-[#1c1917] motion-reduce:transition-none peer-checked/c2:border-[#1c1917] peer-checked/c2:bg-[#1c1917] peer-checked/c2:text-white peer-focus-visible/c2:outline-3 peer-focus-visible/c2:outline-offset-3 peer-focus-visible/c2:outline-[#1d4ed8]">Design</label><label for="cbnw-3" class="cursor-pointer rounded-full border border-[#a8a29e] bg-white px-3.5 py-2 text-[.86rem] font-bold text-[#44403c] transition-colors duration-200 hover:border-[#1c1917] motion-reduce:transition-none peer-checked/c3:border-[#1c1917] peer-checked/c3:bg-[#1c1917] peer-checked/c3:text-white peer-focus-visible/c3:outline-3 peer-focus-visible/c3:outline-offset-3 peer-focus-visible/c3:outline-[#1d4ed8]">Build</label><label for="cbnw-4" class="cursor-pointer rounded-full border border-[#a8a29e] bg-white px-3.5 py-2 text-[.86rem] font-bold text-[#44403c] transition-colors duration-200 hover:border-[#1c1917] motion-reduce:transition-none peer-checked/c4:border-[#1c1917] peer-checked/c4:bg-[#1c1917] peer-checked/c4:text-white peer-focus-visible/c4:outline-3 peer-focus-visible/c4:outline-offset-3 peer-focus-visible/c4:outline-[#1d4ed8]">Test</label><label for="cbnw-5" class="cursor-pointer rounded-full border border-[#a8a29e] bg-white px-3.5 py-2 text-[.86rem] font-bold text-[#44403c] transition-colors duration-200 hover:border-[#1c1917] motion-reduce:transition-none peer-checked/c5:border-[#1c1917] peer-checked/c5:bg-[#1c1917] peer-checked/c5:text-white peer-focus-visible/c5:outline-3 peer-focus-visible/c5:outline-offset-3 peer-focus-visible/c5:outline-[#1d4ed8]">Launch</label><label for="cbnw-6" class="cursor-pointer rounded-full border border-[#a8a29e] bg-white px-3.5 py-2 text-[.86rem] font-bold text-[#44403c] transition-colors duration-200 hover:border-[#1c1917] motion-reduce:transition-none peer-checked/c6:border-[#1c1917] peer-checked/c6:bg-[#1c1917] peer-checked/c6:text-white peer-focus-visible/c6:outline-3 peer-focus-visible/c6:outline-offset-3 peer-focus-visible/c6:outline-[#1d4ed8]">Support</label>
</fieldset></div>
</div>
<div><span class="mb-[18px] block text-[.72rem] tracking-[.12em] text-[#57534e] uppercase">Box size picker</span>
<fieldset class="grid min-w-0 grid-cols-[repeat(auto-fit,minmax(min(100%,200px),1fr))] gap-[18px]">
<legend class="sr-only">Choose a shipping box</legend>
<label class="group relative block cursor-pointer"><input type="radio" name="bxs" value="small" class="peer absolute size-px opacity-0"><span class="grid h-full justify-items-center gap-1 rounded-[18px] border-2 border-[#d6d3d1] bg-white px-[18px] pt-[18px] pb-5 text-center transition-[border-color,box-shadow] duration-200 group-hover:border-[#a8a29e] peer-checked:border-[#c2410c] peer-checked:shadow-[0_18px_30px_-22px_rgba(194,65,12,.7)] peer-checked:[--bx-x:-30deg] peer-checked:[--bx-y:-58deg] peer-checked:[--bx-lift:-6px] peer-focus-visible:outline-3 peer-focus-visible:outline-offset-3 peer-focus-visible:outline-[#1d4ed8] motion-reduce:transition-none"><span class="grid h-[150px] w-full place-items-center perspective-[800px]" aria-hidden="true"><span class="block relative h-(--h) w-(--w) transition-transform duration-600 ease-[cubic-bezier(.3,.8,.25,1)] transform-3d [transform:rotateX(var(--bx-x,-22deg))_rotateY(var(--bx-y,-34deg))_translateY(var(--bx-lift,0px))] motion-reduce:transition-none [--d:52px] [--h:46px] [--w:66px]"><span class="absolute top-0 left-0 block h-(--h) w-(--w) bg-[linear-gradient(180deg,#d9a46c,#c98f55)] [transform:translateZ(calc(var(--d)/2))] after:absolute after:top-0 after:left-[calc(50%_-_9px)] after:h-[22%] after:w-[18px] after:bg-[#f3d9b1] after:content-['']"></span><span class="absolute top-0 left-[calc((var(--w)_-_var(--d))/2)] block h-(--h) w-(--d) bg-[linear-gradient(180deg,#b57b45,#a46c3a)] [transform:rotateY(90deg)_translateZ(calc(var(--w)/2))]"></span><span class="absolute top-[calc((var(--h)_-_var(--d))/2)] left-0 block h-(--d) w-(--w) bg-[#e8b981] bg-[linear-gradient(90deg,transparent_calc(50%_-_9px),#f3d9b1_calc(50%_-_9px)_calc(50%_+_9px),transparent_calc(50%_+_9px))] shadow-[inset_0_0_0_1px_rgba(120,72,30,.25)] [transform:rotateX(90deg)_translateZ(calc(var(--h)/2))]"></span></span></span>
<span class="mt-1.5 text-base font-extrabold">Small</span><span class="text-[.84rem] text-[#57534e]">20 × 15 × 10 cm, up to 2 kg</span><span class="mt-1.5 text-[.92rem] font-extrabold text-[#9a3412]">€3.90</span></span></label>
<label class="group relative block cursor-pointer"><input type="radio" name="bxs" value="medium" class="peer absolute size-px opacity-0" checked><span class="grid h-full justify-items-center gap-1 rounded-[18px] border-2 border-[#d6d3d1] bg-white px-[18px] pt-[18px] pb-5 text-center transition-[border-color,box-shadow] duration-200 group-hover:border-[#a8a29e] peer-checked:border-[#c2410c] peer-checked:shadow-[0_18px_30px_-22px_rgba(194,65,12,.7)] peer-checked:[--bx-x:-30deg] peer-checked:[--bx-y:-58deg] peer-checked:[--bx-lift:-6px] peer-focus-visible:outline-3 peer-focus-visible:outline-offset-3 peer-focus-visible:outline-[#1d4ed8] motion-reduce:transition-none"><span class="grid h-[150px] w-full place-items-center perspective-[800px]" aria-hidden="true"><span class="block relative h-(--h) w-(--w) transition-transform duration-600 ease-[cubic-bezier(.3,.8,.25,1)] transform-3d [transform:rotateX(var(--bx-x,-22deg))_rotateY(var(--bx-y,-34deg))_translateY(var(--bx-lift,0px))] motion-reduce:transition-none [--d:70px] [--h:64px] [--w:90px]"><span class="absolute top-0 left-0 block h-(--h) w-(--w) bg-[linear-gradient(180deg,#d9a46c,#c98f55)] [transform:translateZ(calc(var(--d)/2))] after:absolute after:top-0 after:left-[calc(50%_-_9px)] after:h-[22%] after:w-[18px] after:bg-[#f3d9b1] after:content-['']"></span><span class="absolute top-0 left-[calc((var(--w)_-_var(--d))/2)] block h-(--h) w-(--d) bg-[linear-gradient(180deg,#b57b45,#a46c3a)] [transform:rotateY(90deg)_translateZ(calc(var(--w)/2))]"></span><span class="absolute top-[calc((var(--h)_-_var(--d))/2)] left-0 block h-(--d) w-(--w) bg-[#e8b981] bg-[linear-gradient(90deg,transparent_calc(50%_-_9px),#f3d9b1_calc(50%_-_9px)_calc(50%_+_9px),transparent_calc(50%_+_9px))] shadow-[inset_0_0_0_1px_rgba(120,72,30,.25)] [transform:rotateX(90deg)_translateZ(calc(var(--h)/2))]"></span></span></span>
<span class="mt-1.5 text-base font-extrabold">Medium</span><span class="text-[.84rem] text-[#57534e]">30 × 22 × 16 cm, up to 5 kg</span><span class="mt-1.5 text-[.92rem] font-extrabold text-[#9a3412]">€5.40</span></span></label>
<label class="group relative block cursor-pointer"><input type="radio" name="bxs" value="large" class="peer absolute size-px opacity-0"><span class="grid h-full justify-items-center gap-1 rounded-[18px] border-2 border-[#d6d3d1] bg-white px-[18px] pt-[18px] pb-5 text-center transition-[border-color,box-shadow] duration-200 group-hover:border-[#a8a29e] peer-checked:border-[#c2410c] peer-checked:shadow-[0_18px_30px_-22px_rgba(194,65,12,.7)] peer-checked:[--bx-x:-30deg] peer-checked:[--bx-y:-58deg] peer-checked:[--bx-lift:-6px] peer-focus-visible:outline-3 peer-focus-visible:outline-offset-3 peer-focus-visible:outline-[#1d4ed8] motion-reduce:transition-none"><span class="grid h-[150px] w-full place-items-center perspective-[800px]" aria-hidden="true"><span class="block relative h-(--h) w-(--w) transition-transform duration-600 ease-[cubic-bezier(.3,.8,.25,1)] transform-3d [transform:rotateX(var(--bx-x,-22deg))_rotateY(var(--bx-y,-34deg))_translateY(var(--bx-lift,0px))] motion-reduce:transition-none [--d:86px] [--h:80px] [--w:112px]"><span class="absolute top-0 left-0 block h-(--h) w-(--w) bg-[linear-gradient(180deg,#d9a46c,#c98f55)] [transform:translateZ(calc(var(--d)/2))] after:absolute after:top-0 after:left-[calc(50%_-_9px)] after:h-[22%] after:w-[18px] after:bg-[#f3d9b1] after:content-['']"></span><span class="absolute top-0 left-[calc((var(--w)_-_var(--d))/2)] block h-(--h) w-(--d) bg-[linear-gradient(180deg,#b57b45,#a46c3a)] [transform:rotateY(90deg)_translateZ(calc(var(--w)/2))]"></span><span class="absolute top-[calc((var(--h)_-_var(--d))/2)] left-0 block h-(--d) w-(--w) bg-[#e8b981] bg-[linear-gradient(90deg,transparent_calc(50%_-_9px),#f3d9b1_calc(50%_-_9px)_calc(50%_+_9px),transparent_calc(50%_+_9px))] shadow-[inset_0_0_0_1px_rgba(120,72,30,.25)] [transform:rotateX(90deg)_translateZ(calc(var(--h)/2))]"></span></span></span>
<span class="mt-1.5 text-base font-extrabold">Large</span><span class="text-[.84rem] text-[#57534e]">40 × 30 × 24 cm, up to 10 kg</span><span class="mt-1.5 text-[.92rem] font-extrabold text-[#9a3412]">€7.90</span></span></label>
</fieldset></div>