HTML
Copy
<div class="grid grid-cols-1 gap-x-6 gap-y-[46px] min-[576px]:grid-cols-2 min-[992px]:grid-cols-4">
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#6b6157] uppercase">Corners to frame</span>
<a href="#" class="group relative block aspect-[3/4] overflow-hidden rounded-md bg-[#2b2622] text-white no-underline focus-visible:outline-3 focus-visible:outline-offset-4 focus-visible:outline-[#1c1917] after:absolute after:inset-0 after:bg-[linear-gradient(to_top,rgba(20,16,12,.9),rgba(20,16,12,.35)_45%,rgba(20,16,12,.05)_70%)] after:transition-colors after:duration-400 hover:after:bg-[rgba(20,16,12,.25)] focus-visible:after:bg-[rgba(20,16,12,.25)]">
<img class="absolute inset-0 size-full object-cover" src="https://images.unsplash.com/photo-1616594039964-ae9021a400a0?auto=format&fit=crop&w=600&h=800&q=70" alt="A bedroom with charcoal walls, a pale upholstered bed and a brass ceiling light" width="600" height="800">
<span class="absolute inset-x-0 bottom-0 z-2 grid gap-1 px-[30px] pb-[30px] leading-[1.3]"><span class="text-[.7rem] font-bold tracking-[.14em] text-[#fde68a] uppercase">Residential</span><span class="font-serif text-[1.2rem] leading-[1.2] font-semibold">Slate Bedroom, Oslo</span></span>
<span class="pointer-events-none absolute z-3 inset-3.5 before:absolute before:top-0 before:left-0 before:size-7 before:border-t-2 before:border-l-2 before:border-white after:absolute after:right-0 after:bottom-0 after:size-7 after:border-r-2 after:border-b-2 after:border-white before:transition-[width,height] after:transition-[width,height] before:duration-500 after:duration-500 before:ease-[cubic-bezier(.4,0,.2,1)] after:ease-[cubic-bezier(.4,0,.2,1)] group-hover:before:size-full group-focus-visible:before:size-full group-hover:after:size-full group-focus-visible:after:size-full motion-reduce:before:transition-none motion-reduce:after:transition-none" aria-hidden="true"></span>
</a></div>
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#6b6157] uppercase">Clockwise draw</span>
<a href="#" class="group relative block aspect-[3/4] overflow-hidden rounded-md bg-[#2b2622] text-white no-underline focus-visible:outline-3 focus-visible:outline-offset-4 focus-visible:outline-[#1c1917] after:absolute after:inset-0 after:bg-[linear-gradient(to_top,rgba(20,16,12,.9),rgba(20,16,12,.35)_45%,rgba(20,16,12,.05)_70%)] after:transition-colors after:duration-400 hover:after:bg-[rgba(20,16,12,.25)] focus-visible:after:bg-[rgba(20,16,12,.25)]">
<img class="absolute inset-0 size-full object-cover" src="https://images.unsplash.com/photo-1618773928121-c32242e63f39?auto=format&fit=crop&w=600&h=800&q=70" alt="A hotel bedroom with a wide white bed, bedside lamps and timber panelling" width="600" height="800">
<span class="absolute inset-x-0 bottom-0 z-2 grid gap-1 px-[30px] pb-[30px] leading-[1.3]"><span class="text-[.7rem] font-bold tracking-[.14em] text-[#fde68a] uppercase">Hospitality</span><span class="font-serif text-[1.2rem] leading-[1.2] font-semibold">Harbour Hotel Suites</span></span>
<span class="pointer-events-none absolute z-3 inset-3.5 before:absolute before:top-0 before:left-0 before:size-0 before:border-2 before:border-transparent after:absolute after:right-0 after:bottom-0 after:size-0 after:border-2 after:border-transparent group-hover:before:size-full group-focus-visible:before:size-full group-hover:before:border-t-white group-focus-visible:before:border-t-white group-hover:before:border-r-white group-focus-visible:before:border-r-white group-hover:before:[transition:width_.22s_linear,height_.22s_linear_.22s] group-focus-visible:before:[transition:width_.22s_linear,height_.22s_linear_.22s] group-hover:after:size-full group-focus-visible:after:size-full group-hover:after:border-b-white group-focus-visible:after:border-b-white group-hover:after:border-l-white group-focus-visible:after:border-l-white group-hover:after:[transition:border-color_0s_.44s,width_.22s_linear_.44s,height_.22s_linear_.66s] group-focus-visible:after:[transition:border-color_0s_.44s,width_.22s_linear_.44s,height_.22s_linear_.66s] motion-reduce:before:transition-none! motion-reduce:after:transition-none!" aria-hidden="true"></span>
</a></div>
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#6b6157] uppercase">Inset frame</span>
<a href="#" class="group relative block aspect-[3/4] overflow-hidden rounded-md bg-[#2b2622] text-white no-underline focus-visible:outline-3 focus-visible:outline-offset-4 focus-visible:outline-[#1c1917] after:absolute after:inset-0 after:bg-[linear-gradient(to_top,rgba(20,16,12,.9),rgba(20,16,12,.35)_45%,rgba(20,16,12,.05)_70%)] after:transition-colors after:duration-400 hover:after:bg-[rgba(20,16,12,.25)] focus-visible:after:bg-[rgba(20,16,12,.25)]">
<img class="absolute inset-0 size-full object-cover" src="https://images.unsplash.com/photo-1586023492125-27b2c045efd7?auto=format&fit=crop&w=600&h=800&q=70" alt="A mustard armchair beside a floor lamp and a framed print in a white living room" width="600" height="800">
<span class="absolute inset-x-0 bottom-0 z-2 grid gap-1 px-[30px] pb-[30px] leading-[1.3]"><span class="text-[.7rem] font-bold tracking-[.14em] text-[#fde68a] uppercase">Styling</span><span class="font-serif text-[1.2rem] leading-[1.2] font-semibold">Mustard Reading Corner</span></span>
<span class="pointer-events-none absolute z-3 inset-0 border border-white/0 transition-[inset,border-color,box-shadow] duration-450 ease-[cubic-bezier(.4,0,.2,1)] group-hover:inset-3.5 group-focus-visible:inset-3.5 group-hover:border-white group-focus-visible:border-white group-hover:shadow-[0_0_0_5px_rgba(255,255,255,.18)] group-focus-visible:shadow-[0_0_0_5px_rgba(255,255,255,.18)] motion-reduce:transition-none" aria-hidden="true"></span>
</a></div>
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#6b6157] uppercase">SVG stroke trace</span>
<a href="#" class="group relative block aspect-[3/4] overflow-hidden rounded-md bg-[#2b2622] text-white no-underline focus-visible:outline-3 focus-visible:outline-offset-4 focus-visible:outline-[#1c1917] after:absolute after:inset-0 after:bg-[linear-gradient(to_top,rgba(20,16,12,.9),rgba(20,16,12,.35)_45%,rgba(20,16,12,.05)_70%)] after:transition-colors after:duration-400 hover:after:bg-[rgba(20,16,12,.25)] focus-visible:after:bg-[rgba(20,16,12,.25)]">
<img class="absolute inset-0 size-full object-cover" src="https://images.unsplash.com/photo-1555041469-a586c61ea9bc?auto=format&fit=crop&w=600&h=800&q=70" alt="A green velvet sofa against a plain white wall on oak floorboards" width="600" height="800">
<span class="absolute inset-x-0 bottom-0 z-2 grid gap-1 px-[30px] pb-[30px] leading-[1.3]"><span class="text-[.7rem] font-bold tracking-[.14em] text-[#fde68a] uppercase">Furniture</span><span class="font-serif text-[1.2rem] leading-[1.2] font-semibold">Velvet Studio Lounge</span></span>
<span class="pointer-events-none absolute z-3 inset-3.5" aria-hidden="true"><svg class="absolute inset-0 size-full overflow-visible" focusable="false"><rect class="fill-none stroke-white stroke-2 [stroke-dasharray:100] [stroke-dashoffset:100] transition-[stroke-dashoffset] duration-1100 ease-[cubic-bezier(.4,0,.2,1)] group-hover:[stroke-dashoffset:0] group-focus-visible:[stroke-dashoffset:0] motion-reduce:transition-none" x="0" y="0" width="100%" height="100%" pathLength="100"/></svg></span>
</a></div>
</div>