// price-table.jsx — the 2026 grille tarifaire: one block per family, one row per prestation. function PriceRow({ item, last }) { const [hover, setHover] = React.useState(false); return (
setHover(true)} onMouseLeave={() => setHover(false)} style={{ display: 'grid', gridTemplateColumns: '1fr 140px', gap: 24, alignItems: 'baseline', padding: '20px 24px', borderBottom: last ? 'none' : `1px solid ${T.rule}`, background: hover ? T.washi100 : 'transparent', transition: 'background 150ms cubic-bezier(.2,.7,.3,1)', }}>
{item.name}
{item.desc}
Dâs
{item.price}
); } function PriceTable({ families = FAMILIES }) { return (
{families.map((f) => (
{f.kicker}
{f.ja}

{f.desc}

{f.name}

{f.items.map((it, i) => )}
))}
Prix indicatifs HT · Devis gratuit sous 24 h Tarifs au 01/09/2026
); } function IncludedGrid({ onDark }) { const fg = onDark ? '#E2D4B7' : T.mist; const rule = onDark ? T.ruleD : T.rule; return (
{INCLUDED.map((t, i) => (
{String(i + 1).padStart(2, '0')} {t}
))}
); } Object.assign(window, { PriceTable, PriceRow, IncludedGrid });