// Castelverdi — Product detail, Lookbook, About, Craft, Contact const Product = ({ id, go, addToCart, openCart }) => { useReveal(); const p = PRODUCTS.find(x => x.id === id) || PRODUCTS[0]; const [angle, setAngle] = React.useState(0); const [qty, setQty] = React.useState(1); return (
{/* Gallery */}
{[0,1,2,3].map(i => (
setAngle(i)} style={{ aspectRatio: '1/1', cursor: 'pointer', outline: angle === i ? '1px solid var(--ink)' : 'none', outlineOffset: 4 }}>
))}
{/* Details */}
{p.cat} · {p.year} · {p.edition}

{p.name}

{p.nameEn}
{formatMAD(p.price)}

{p.desc}

{/* Specs */}
Material
{p.material}
Height
{p.height}
Reference
After a {p.year} original
Edition
{p.edition}
{/* Qty + CTA */}
{qty}
{/* Notes */}
✦ Ships from our Casablanca atelier
✦ 2–4 weeks lead time · finished to order
✦ Each piece individually numbered
{/* Related */}
You may also find
{PRODUCTS.filter(x => x.id !== p.id).slice(0, 4).map((rp, i) => (
{ go('product', rp.id); window.scrollTo(0,0); }}>
{rp.name}
{rp.cat}
{formatMAD(rp.price)}
))}
); }; const Lookbook = ({ go }) => { useReveal(); return (
Lookbook · Editorial archive

Rooms, quietly
inhabited.

Interior studies shot in villas, libraries and private gardens across the Mediterranean. Each edition, a small film.

{LOOKBOOK.map((l, i) => (
{l.season} · {l.year}

{l.title}

{l.subtitle}

Photographed in an eighteenth-century palazzo on the Via Giulia. Featuring the Medici urn, Corinthian capital, and a private selection of cherubs from the atelier archive.

))}
); }; const About = ({ go }) => { useReveal(); return (
L'Atelier · Since MMXXIV

A small house of
decorative objects.

Castelverdi began with a single cherub — a weathered figure found in the garden of a villa outside Verona, its stone features softened by two centuries of rain. It suggested a question: why should such objects be the province only of museums and rare antiquaries?

Our atelier studies classical forms — busts, urns, capitals, creatures — and produces them in small, considered editions. We work in stone resin, a composite that receives patina and finishing as faithfully as marble or limestone itself. Every piece is cast, sanded, and hand-patinated in our studio.

We do not claim to make antiques. We make objects with the character of antiquity — pieces that feel found, that grow more at home with each season, that take their place in a library or on a mantelpiece as though they had always been there.

Founded
MMXXIV

In Casablanca, with an eye toward Florence.

Studio
Quartier Gauthier

By appointment, rue de Bordeaux.

Output
~XL per year

Everything we produce, hand-finished.

); }; const Craft = ({ go }) => { useReveal(); const steps = [ { n: 'I', title: 'Studio e ricerca', en: 'Study & research', text: 'Each piece begins with a source — a fragment photographed in a museum, a plate from a 19th-century catalog, a detail in a fresco. We sketch, measure, and model.' }, { n: 'II', title: 'Il modello', en: 'The master', text: 'A single master is sculpted and refined over several weeks, every surface considered. This is the piece from which all editions descend.' }, { n: 'III', title: 'La fusione', en: 'The casting', text: 'From the master, we produce a limited edition in stone resin — a composite with the density and receptivity of stone, cast in our atelier.' }, { n: 'IV', title: 'Patina', en: 'Finishing', text: 'Each piece is sanded, patinated, and aged by hand. Verdigris, bronze, travertine, alabaster — finishes developed over months and applied over days.' }, { n: 'V', title: 'Numerazione', en: 'Numbering', text: 'Finally, each piece is signed and numbered on its base. It leaves the atelier with a short handwritten note on the piece it descends from.' }, ]; return (
Il Savoir-Faire

Five stages,
from fragment to piece.

Our production follows a slow rhythm. A single piece may take six to twelve weeks from sketch to numbered object.

{steps.map((s, i) => (
{s.n}

{s.title}

{s.en}

{s.text}

))}
); }; const Contact = ({ go }) => { useReveal(); const [sent, setSent] = React.useState(false); return (
Contatti · Bespoke inquiries

Tell us what you
have in mind.

{sent ? (
Grazie.

We'll write back within two working days.

) : (
{ e.preventDefault(); setSent(true); }}>
)}
); }; Object.assign(window, { Product, Lookbook, About, Craft, Contact });