// Bottega — editorial warm variant const { useState, useEffect, useRef } = React; const SERVICES = [ { id: 'interni', num: '01', title: 'Tinteggiatura', italic: 'interni', body: 'Pareti lisce, finiture lavabili, spatolati materici. Cantiere pulito, mobili coperti, tempi certi.', price: 'da €8/m²', tag: 'interni', details: { lede: 'Trasformare una casa con il colore giusto — senza polvere, senza sorprese.', points: ['Sopralluogo gratuito con campionature in loco','Protezione totale di mobili, pavimenti e battiscopa','Stuccatura, carteggiatura, primer e due mani di finitura','Smaltimento e pulizia a fine lavoro'], bullets: [ {k:'Tempi',v:'2–5 giorni per appartamento medio'}, {k:'Finiture',v:'Opaca, satinata, lavabile, effetto sabbia'}, {k:'Garanzia',v:'24 mesi sulla tenuta'} ] }}, { id: 'esterni', num: '02', title: 'Facciate', italic: '& esterni', body: 'Ripristini, pitture silossaniche, protezione dai raggi UV. Ponteggi sicuri a norma.', price: 'da €18/m²', tag: 'esterni', details: { lede: 'Facciate che resistono al sole, alla pioggia e al tempo — per davvero.', points: ['Valutazione ammaloramenti e infiltrazioni','Idrolavaggio professionale','Fissativo consolidante + pittura silossanica traspirante','Ponteggio certificato, DPI, coordinatore sicurezza'], bullets:[ {k:'Durata',v:'10–15 anni media'}, {k:'Pitture',v:'Silossaniche, silicati, quarzo'}, {k:'Sicurezza',v:'Pratica SCIA inclusa'} ] }}, { id: 'decorativo',num: '03', title: 'Finiture', italic: 'decorative', body: 'Veneziano, calce, effetti metallici, stencil su misura. Dove il pennello diventa firma.', price: 'preventivo', tag: 'arte', details: { lede: 'Quando una parete diventa un pezzo unico.', points: ['Campionature su tavola vera','Stucchi veneziani, calce rasata, effetto cemento','Vernici metalliche, bronzo, rame, oro','Stencil e disegni custom per camerette'], bullets:[ {k:'Tempi',v:'3–7 giorni a seconda del formato'}, {k:'Materiali',v:'Calce naturale, resine, pigmenti'}, {k:'Prove',v:'Campionatura sempre inclusa'} ] }}, { id: 'giardini', num: '04', title: 'Manutenzione', italic: 'giardini', body: 'Potature, tagli erba, siepi, impianti di irrigazione. Giardini in ordine tutto l\'anno.', price: 'da €35/h', tag: 'verde', details: { lede: 'Il verde curato come si deve, stagione per stagione.', points: ['Taglio erba e rasatura di precisione','Potatura siepi e alberi fino a 6 metri','Impianti di irrigazione automatici','Trattamenti stagionali e concimazioni'], bullets:[ {k:'Cadenza',v:'Mensile, quindicinale, on-demand'}, {k:'Zona',v:'Pistoia e Firenze, 40 km'}, {k:'Smaltimento',v:'Incluso in bolletta'} ] }}, { id: 'piccoli', num: '05', title: 'Piccoli', italic: 'interventi', body: 'Ritocchi, una parete sola, un ripostiglio. Nessun lavoro è troppo piccolo.', price: 'da €120', tag: 'veloce', details: { lede: 'Un pomeriggio, una parete, un problema risolto.', points: ['Ritocchi dopo traslochi','Tinteggiatura singola stanza','Riparazione crepe e infiltrazioni leggere','Rinfrescare una parete prima di vendere casa'], bullets:[ {k:'Tempi',v:'Spesso in giornata'}, {k:'Minimo',v:'Nessun minimo d\'ordine'}, {k:'Pagamento',v:'Anche a fine lavoro'} ] }}, ]; const PHOTOS = [ 'assets/lavori/img_5124.jpg', 'assets/lavori/img_5125.jpg', 'assets/lavori/img_5134.jpg', 'assets/lavori/img_4673.jpg', 'assets/lavori/img_4674.jpg', 'assets/lavori/img_4675.jpg', 'assets/lavori/img_4684.jpg', 'assets/lavori/img_4685.jpg', 'assets/lavori/img_4686.jpg', ]; const TESTIMONIALS = [ { q:'Marco è arrivato in orario, ha coperto tutto, e tre giorni dopo casa sembrava un\'altra. Zero polvere, zero stress.', name:'Giulia Ravazzi', loc:'Pistoia · Appartamento 85 m²', initial:'G', rating:5 }, { q:'Avevo chiesto quattro preventivi. Il suo non era il più basso, ma era l\'unico scritto bene. E si è visto.', name:'Renzo Marchesi', loc:'Firenze · Villa bifamiliare', initial:'R', rating:5 }, { q:'Per il giardino di mia madre passano ogni quindici giorni. È una cosa che non devo più pensare — ed è oro.', name:'Cristina Bertoldo', loc:'Pistoia · Manutenzione annuale', initial:'C', rating:5 }, { q:'Ho chiesto un effetto spatolato per il soggiorno. Mi ha fatto tre campionature vere, non foto. Scelta facile.', name:'Alessandro Pivetta', loc:'Scandicci (FI) · Ristrutturazione', initial:'A', rating:5 }, ]; // ─── page transition hook ─── function usePageTransition() { const [page, setPage] = useState('home'); // home | service const [serviceId, setServiceId] = useState(null); const [transitioning, setTransitioning] = useState(false); const navigate = (target, sid = null) => { if (transitioning) return; setTransitioning(true); const curtain = document.getElementById('curtain'); curtain.classList.add('in'); setTimeout(() => { setPage(target); setServiceId(sid); window.scrollTo(0, 0); curtain.classList.remove('in'); curtain.classList.add('out'); setTimeout(() => { curtain.classList.remove('out'); setTransitioning(false); }, 750); }, 750); }; return { page, serviceId, navigate, transitioning }; } // ─── reveal on scroll ─── function useReveal() { useEffect(() => { const io = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('in'); }); }, { threshold: 0.12 }); document.querySelectorAll('.reveal:not(.in)').forEach(el => io.observe(el)); return () => io.disconnect(); }); } // ─── TopBar ─── function TopBar({ page, navigate }) { return (
navigate('home')} style={{cursor:'pointer'}}>
Imbianchino Arte bottega · dal 2011
Disponibile — chiedi preventivo
); } // ─── Hero ─── function Hero({ navigate }) { return (
N° 011 — Primavera MMXXVI · Pistoia & Firenze — Provincia
Dal 2011 — 340+ cantieri

Il colore
che sa stare
al suo posto.

15+
Anni di cantieri, privati e aziende
340
Case, ville, negozi e giardini seguiti
4,9/5
Media recensioni verificate

Sono Marco. Faccio l'imbianchino e il manutentore di giardini tra Pistoia e Firenze. Lavoro pulito, tempi rispettati, una mano sola — la mia. Se cerchi qualcuno che non scappi dopo il sopralluogo, sei nel posto giusto.

document.getElementById('servizi')?.scrollIntoView({behavior:'smooth'})}> Vedi i servizi document.getElementById('contatti')?.scrollIntoView({behavior:'smooth'})}> Preventivo in 24h
); } // ─── Servizi ─── function Servizi({ navigate }) { return (
§ 02 Servizi

Cinque cose
che so fare bene.

{SERVICES.map(s => (
navigate('service', s.id)}> — {s.num} / 05

{s.title} {s.italic}

{s.body}

{s.price} Leggi
))}
); } // ─── Processo ─── function Processo() { const steps = [ { n: 'i', t: 'Chiami o scrivi', p: 'Risposta in giornata. Una chiamata di 10 minuti basta per capirci.' }, { n: 'ii', t: 'Passo a vedere', p: 'Sopralluogo gratuito, misure vere, consigli sul colore e sui tempi.' }, { n: 'iii', t: 'Preventivo scritto', p: 'Entro 24 ore. Chiaro, dettagliato, senza sorprese dopo.' }, { n: 'iv', t: 'Lavoro', p: 'Entro una settimana sono in cantiere. Cantiere pulito, tempi rispettati.' }, ]; return (
§ 03Come lavoriamo

Quattro passi, senza fronzoli.

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

{s.t}

{s.p}

))}
); } function Gallery() { return (
§ 03bLavori recenti

Ultimi cantieri.

{PHOTOS.map((p,i)=>{ const spans=[6,3,3,4,4,4,6,6]; return (
e.currentTarget.style.transform='scale(1.04)'} onMouseLeave={(e)=>e.currentTarget.style.transform='scale(1)'} /> FIG. {String(i+1).padStart(2,'0')}
); })}
); } // ─── Testimonianze ─── function Testimonianze() { const [active, setActive] = useState(0); const prev = () => setActive(a => (a - 1 + TESTIMONIALS.length) % TESTIMONIALS.length); const next = () => setActive(a => (a + 1) % TESTIMONIALS.length); return (
§ 04Voci dal cantiere

Quello che dicono
i clienti, davvero.

“”

Ogni fine cantiere chiedo due righe oneste. Le trovi qui, senza filtri e senza stock photo.

{String(active+1).padStart(2,'0')} / {String(TESTIMONIALS.length).padStart(2,'0')}
{TESTIMONIALS.map((t, i) => (
setActive(i)}>
{t.q}
{t.initial}
{t.name}
{t.loc}
{'★'.repeat(t.rating)}{'☆'.repeat(5-t.rating)} · VERIFICATO
))}
); } // ─── Footer / CTA finale ─── function Footer() { return ( ); } // ─── Pagina dettaglio servizio ─── function ServicePage({ serviceId, navigate }) { const s = SERVICES.find(x => x.id === serviceId) || SERVICES[0]; return (
navigate('home')} style={{cursor:'pointer'}}>Home / {navigate('home');setTimeout(()=>document.getElementById('servizi')?.scrollIntoView({behavior:'smooth'}),1600)}} style={{cursor:'pointer'}}>Servizi / {s.title} {s.italic}
Servizio N° {s.num} · {s.tag}

{s.title}
{s.italic}.

{s.details.lede}

Cosa è compreso

Tutto quello che serve perché il lavoro sia fatto bene la prima volta. Nessun "extra" a sorpresa, nessuna riga in piccolo.

    {s.details.points.map((p,i) => (
  • {String(i+1).padStart(2,'0')}{p}
  • ))}

Dettagli tecnici

    {s.details.bullets.map((b,i) => (
  • {b.k}. {b.v}
  • ))}

Un sopralluogo, zero impegno.

Compila due righe qui accanto, o chiamami direttamente. Rispondo in giornata, davvero.

☎ +39 338 453 1102

@ marco.baldi.24@gmail.com

{e.preventDefault();alert('Grazie! Ti ricontatto entro 24 ore.')}}>
); } // ─── App root ─── function App() { const { page, serviceId, navigate } = usePageTransition(); useReveal(); useEffect(()=>{ document.documentElement.classList.add('loaded'); }, []); return ( <>
{page === 'home' && ( <> )} {page === 'service' && }
); } ReactDOM.createRoot(document.getElementById('root')).render();