// Translations + content
const CONTENT = {
  fr: {
    heroLeft: 'votre',
    heroRight: 'beauté',
    aboutKicker: 'À propos',
    aboutLabel: 'Notre univers',
    heroPitch: "Chaque soin BelezaaPinkk est la combinaison parfaite entre savoir-faire futuriste et douceur intemporelle.",
    learnMore: 'Découvrir',
    book: 'Réserver',
    brandsKicker: 'Nos marques',
    brandsTitle1: 'des produits',
    brandsTitle2: 'd’exception',
    brandsIntro: 'Nous travaillons avec une sélection de maisons reconnues, choisies pour leur qualité, leur efficacité et leurs ingrédients soignés.',
    featuredTabs: ["Choix bloggeurs", "SOINS PHARES", "Best-sellers"],
    featuredItems: [
      { name: 'Soin visage spécial', tag: 'Visage', price: 'sur devis' },
      { name: 'Manucure & Gelinho', tag: 'Ongles', price: 'dès 9€' },
      { name: 'Massage pierres chaudes', tag: 'Corps', price: 'sur devis' },
    ],
    servicesKicker: 'Prestations 01 — 12',
    servicesTitle1: 'tout ce dont',
    servicesTitle2: 'votre beauté rêve',
    allServices: 'Voir tout',
    services: [
      { name:'Soins du visage', desc:'Soins faciaux spéciaux et nettoyage de peau personnalisés.', price:'dès 28€', duration:'45-60 min' },
      { name:'Manucure', desc:'Soin complet des mains : limage, cuticules, esfoliation douce, masque nutritif et massage relaxant.', price:'dès 9€', duration:'30 min' },
      { name:'Pédicure', desc:'Pédicure normale ou avec traitement des callosités — coupe, limage, cuticules, esfoliation, masque et massage.', price:'dès 11€', duration:'30-45 min' },
      { name:'Ongles en gel', desc:'Renforcement des ongles naturels au gel sans rallongement, pour un fini lisse, élégant et durable.', price:'dès 15€', duration:'1h' },
      { name:'Gelinho', desc:'Pose de gelinho longue durée avec préparation complète et couleur au choix — résultat brillant et sophistiqué.', price:'dès 10€', duration:'45 min' },
      { name:'Vernis simple', desc:'Application soignée de vernis classique pour un fini brillant et élégant, idéal au quotidien ou pour une occasion spéciale.', price:'dès 5€', duration:'45 min' },
      { name:'Henné', desc:'Dessins délicats et féminins au henné naturel, personnalisés et idéaux pour toute occasion spéciale.', price:'dès 6€', duration:'1h' },
      { name:'Sourcils & cils', desc:'Restructuration, teinture, soin sourcils et cils.', price:'dès 8€', duration:'30 min' },
      { name:'Micropigmentation', desc:'Maquillage permanent sourcils, lèvres, eye-liner.', price:'dès 85€', duration:'1-2h' },
      { name:'Épilation', desc:'Cire normale ou caramel organique pour toutes les zones.', price:'dès 3€', duration:'15-45 min' },
      { name:'Massages', desc:'Relaxant, pré-natal, pierres chaudes, bougies.', price:'dès 10€', duration:'60 min' },
      { name:'SPA corps & soins', desc:'SPA corps complet, Jet Bronze, Hydra Gloss labial.', price:'dès 10€', duration:'45-75 min' },
      { name:'Blanchiment dentaire', desc:'Blanchiment dentaire américain, résultat éclatant.', price:'dès 40€', duration:'45 min' },
    ],
    aboutP1: "Notre équipe est passionnée par la beauté et le bien-être, et nous mettons cette passion dans chaque soin que nous prodiguons.",
    aboutP2: "Nous mêlons techniques modernes, marques exigeantes et écoute attentive pour révéler votre éclat naturel — du bout des ongles jusqu'au regard.",
    moreAbout: "L'équipe",
    teamKicker: 'L\'équipe',
    teamTitle1: 'des mains',
    teamTitle2: 'expertes',
    teamMembers: [
      { name:'Jéssica', role:'Fondatrice & esthéticienne' },
    ],
    teamBio: "Après plusieurs années à perfectionner son art, Jessica a ouvert BelezaaPinkk pour offrir un cocon où chaque cliente repart avec un soin sur-mesure et un sourire sincère. Elle maîtrise toutes les prestations du salon — des ongles aux soins du visage, en passant par les massages et la micropigmentation.",
    teamSpecialties: ['Soins du visage','Manucure','Massages','Micropigmentation','Sourcils & cils','SPA corps'],
    reviewsTitle1: 'ce qu\'elles',
    reviewsTitle2: 'en disent',
    reviewsCount: 'avis vérifiés',
    reviews: [
      { name:'Marta', date:'Mars 2026', service:'Soin visage', text:"Une vraie bulle. Ma peau est lumineuse pendant des semaines, je reviens chaque mois." },
      { name:'Joana', date:'Févr. 2026', service:'Manucure', text:"Précision, propreté, tenue parfaite. Je ne fais plus mes ongles ailleurs." },
      { name:'Léa', date:'Janv. 2026', service:'Pierres chaudes', text:"Massage divin, j'ai dormi comme un bébé après. Jessica est en or." },
    ],
    contactKicker: 'Contact & réservation',
    contactTitle1: 'on vous',
    contactTitle2: 'attend',
    contactPitch: "Réservation en ligne sur Fresha — ou un message sur Instagram, on adore ça.",
    bookFresha: 'Réserver sur Fresha',
    address: 'Adresse',
    hours: 'Horaires',
    hoursValue: 'Lun · fermé\nMar · 08h–19h\nMer · 09h–19h\nJeu · 09h–00h\nVen — Sam · 09h–19h\nDim · 13h–19h',
    phone: 'Téléphone',
    email: 'Email',
    footerRights: 'BelezaaPinkk · tous droits réservés',
  },
  en: {
    heroLeft: 'your',
    heroRight: 'glow',
    aboutKicker: 'About',
    aboutLabel: 'Our universe',
    heroPitch: "Every BelezaaPinkk treatment is the perfect blend of futuristic craft and timeless softness.",
    learnMore: 'Discover',
    book: 'Book',
    brandsKicker: 'Our brands',
    brandsTitle1: 'curated',
    brandsTitle2: 'excellence',
    brandsIntro: 'We work with a tight selection of trusted houses, picked for their quality, efficacy and clean ingredients.',
    featuredTabs: ["Bloggers' choice", "SIGNATURES", 'Bestsellers'],
    featuredItems: [
      { name: 'Special facial', tag: 'Face', price: 'on request' },
      { name: 'Manicure & Gelinho', tag: 'Nails', price: 'from €9' },
      { name: 'Hot stones massage', tag: 'Body', price: 'on request' },
    ],
    servicesKicker: 'Services 01 — 12',
    servicesTitle1: 'everything',
    servicesTitle2: 'your beauty dreams of',
    allServices: 'View all',
    services: [
      { name:'Facials', desc:'Special facial care and custom skin cleansing.', price:'from €28', duration:'45-60 min' },
      { name:'Manicure', desc:'Full hand care: filing, cuticles, gentle exfoliation, nourishing mask and relaxing massage.', price:'from €9', duration:'30 min' },
      { name:'Pedicure', desc:'Classic pedicure or with callus treatment — cut, filing, cuticles, exfoliation, mask and massage.', price:'from €11', duration:'30-45 min' },
      { name:'Gel nails', desc:'Strengthening of natural nails with gel, no extensions — smooth, elegant and long-lasting finish.', price:'from €15', duration:'1h' },
      { name:'Gelinho', desc:'Long-lasting gelinho with full prep and colour of your choice — glossy and sophisticated result.', price:'from €10', duration:'45 min' },
      { name:'Classic polish', desc:'Careful classic polish application for a glossy, elegant finish — perfect for every day or a special occasion.', price:'from €5', duration:'45 min' },
      { name:'Henna', desc:'Delicate, feminine henna designs, personalised and ideal for any special occasion.', price:'from €6', duration:'1h' },
      { name:'Brows & lashes', desc:'Restructuring, tinting, brow & lash care.', price:'from €8', duration:'30 min' },
      { name:'Micropigmentation', desc:'Permanent makeup: brows, lips, eyeliner.', price:'from €85', duration:'1-2h' },
      { name:'Waxing', desc:'Regular wax or organic caramel wax for all areas.', price:'from €3', duration:'15-45 min' },
      { name:'Massages', desc:'Relaxing, prenatal, hot stones, candles.', price:'from €10', duration:'60 min' },
      { name:'Body SPA', desc:'Full body SPA, Jet Bronze, lip Hydra Gloss.', price:'from €10', duration:'45-75 min' },
      { name:'Teeth whitening', desc:'American teeth whitening for a radiant smile.', price:'from €40', duration:'45 min' },
    ],
    aboutP1: "Our team is passionate about beauty and wellness, and we pour that passion into every treatment we deliver.",
    aboutP2: "We blend modern techniques, demanding brands and attentive care to reveal your natural glow — from your fingertips to your gaze.",
    moreAbout: 'Our team',
    teamKicker: 'The team',
    teamTitle1: 'expert',
    teamTitle2: 'hands',
    teamMembers: [
      { name:'Jéssica', role:'Founder & beautician' },
    ],
    teamBio: "After years honing her craft, Jessica opened BelezaaPinkk to offer a cocoon where every client leaves with a tailored treatment and a real smile. She masters every service in the salon — from nails to facials, massages and micropigmentation.",
    teamSpecialties: ['Facials','Manicure','Massages','Micropigmentation','Brows & lashes','Body SPA'],
    reviewsTitle1: 'what they',
    reviewsTitle2: 'say',
    reviewsCount: 'verified reviews',
    reviews: [
      { name:'Marta', date:'Mar 2026', service:'Facial', text:"A real bubble. My skin glows for weeks — I come back every month." },
      { name:'Joana', date:'Feb 2026', service:'Manicure', text:"Precision, cleanliness, perfect hold. I won't get my nails done anywhere else." },
      { name:'Léa', date:'Jan 2026', service:'Hot stones', text:"Heavenly massage, I slept like a baby after. Jessica is gold." },
    ],
    contactKicker: 'Contact & booking',
    contactTitle1: 'we\'re',
    contactTitle2: 'waiting',
    contactPitch: 'Book online on Fresha — or DM us on Instagram, we love that.',
    bookFresha: 'Book on Fresha',
    address: 'Address',
    hours: 'Hours',
    hoursValue: 'Mon · closed\nTue · 8am–7pm\nWed · 9am–7pm\nThu · 9am–12am\nFri — Sat · 9am–7pm\nSun · 1pm–7pm',
    phone: 'Phone',
    email: 'Email',
    footerRights: 'BelezaaPinkk · all rights reserved',
  },
  pt: {
    heroLeft: 'a tua',
    heroRight: 'beleza',
    aboutKicker: 'Sobre',
    aboutLabel: 'O nosso universo',
    heroPitch: "Cada tratamento BelezaaPinkk é a combinação perfeita entre técnica futurista e suavidade intemporal.",
    learnMore: 'Descobrir',
    book: 'Marcar',
    brandsKicker: 'As nossas marcas',
    brandsTitle1: 'produtos',
    brandsTitle2: 'de excelência',
    brandsIntro: 'Trabalhamos com uma seleção de casas reconhecidas, escolhidas pela sua qualidade, eficácia e ingredientes cuidados.',
    featuredTabs: ['Escolha bloggers', 'DESTAQUES', 'Mais vendidos'],
    featuredItems: [
      { name: 'Tratamento facial especial', tag: 'Rosto', price: 'sob consulta' },
      { name: 'Manicure & Gelinho', tag: 'Unhas', price: 'desde 9€' },
      { name: 'Massagem pedras quentes', tag: 'Corpo', price: 'sob consulta' },
    ],
    servicesKicker: 'Serviços 01 — 12',
    servicesTitle1: 'tudo o que',
    servicesTitle2: 'a tua beleza sonha',
    allServices: 'Ver todos',
    services: [
      { name:'Tratamentos faciais', desc:'Tratamentos faciais especiais e limpeza de pele personalizada.', price:'desde 28€', duration:'45-60 min' },
      { name:'Manicure', desc:'Cuidado profundo para mãos bonitas: corte, limagem, cutículas, esfoliação, máscara nutritiva e massagem relaxante.', price:'desde 9€', duration:'30 min' },
      { name:'Pedicure', desc:'Pedicure normal ou com tratamento de calosidades — corte, limagem, cutículas, esfoliação, máscara e massagem.', price:'desde 11€', duration:'30-45 min' },
      { name:'Unhas de gel', desc:'Fortalecimento das unhas naturais com gel, sem aumentos — acabamento liso, elegante e duradouro.', price:'desde 15€', duration:'1h' },
      { name:'Gelinho', desc:'Preparação completa da unha natural e aplicação do gelinho na cor à tua escolha — resultado elegante e brilhante.', price:'desde 10€', duration:'45 min' },
      { name:'Verniz simples', desc:'Aplicação cuidada de verniz clássico para um acabamento brilhante e cheio de charme, ideal para o dia a dia ou ocasião especial.', price:'desde 5€', duration:'45 min' },
      { name:'Henna', desc:'Desenhos delicados e femininos em henna natural, personalizados e ideais para ocasiões especiais.', price:'desde 6€', duration:'1h' },
      { name:'Sobrancelhas & pestanas', desc:'Reestruturação, coloração e cuidado de sobrancelhas e pestanas.', price:'desde 8€', duration:'30 min' },
      { name:'Micropigmentação', desc:'Maquilhagem permanente: sobrancelhas, lábios, eyeliner.', price:'desde 85€', duration:'1-2h' },
      { name:'Depilação', desc:'Cera normal ou cera caramelo orgânica para todas as zonas.', price:'desde 3€', duration:'15-45 min' },
      { name:'Massagens', desc:'Relaxamento, pré-mamã, pedras quentes, velas.', price:'desde 10€', duration:'60 min' },
      { name:'SPA corpo', desc:'SPA corpo completo, Jet Bronze, Hydra Gloss labial.', price:'desde 10€', duration:'45-75 min' },
      { name:'Branqueamento dentário', desc:'Branqueamento dentário americano para um sorriso radiante.', price:'desde 40€', duration:'45 min' },
    ],
    aboutP1: "A nossa equipa é apaixonada por beleza e bem-estar, e colocamos essa paixão em cada tratamento.",
    aboutP2: "Misturamos técnicas modernas, marcas exigentes e escuta atenta para revelar o teu brilho natural — das pontas dos dedos ao olhar.",
    moreAbout: 'A equipa',
    teamKicker: 'A equipa',
    teamTitle1: 'mãos',
    teamTitle2: 'experientes',
    teamMembers: [
      { name:'Jéssica', role:'Fundadora & esteticista' },
    ],
    teamBio: "Depois de anos a aperfeiçoar a sua arte, a Jessica abriu o BelezaaPinkk para oferecer um cantinho onde cada cliente sai com um tratamento à medida e um sorriso sincero. Ela domina todos os serviços do salão — das unhas aos tratamentos faciais, passando por massagens e micropigmentação.",
    teamSpecialties: ['Faciais','Manicure','Massagens','Micropigmentação','Sobrancelhas & pestanas','SPA corpo'],
    reviewsTitle1: 'o que elas',
    reviewsTitle2: 'dizem',
    reviewsCount: 'avaliações verificadas',
    reviews: [
      { name:'Marta', date:'Mar 2026', service:'Facial', text:"Uma verdadeira bolha. A minha pele brilha durante semanas — volto todos os meses." },
      { name:'Joana', date:'Fev 2026', service:'Manicure', text:"Precisão, limpeza, duração perfeita. Não faço as unhas em mais lado nenhum." },
      { name:'Léa', date:'Jan 2026', service:'Pedras quentes', text:"Massagem divina, dormi como um bebé. A Jessica é uma jóia." },
    ],
    contactKicker: 'Contacto & marcação',
    contactTitle1: 'estamos',
    contactTitle2: 'à tua espera',
    contactPitch: 'Marca online no Fresha — ou manda mensagem no Instagram, adoramos.',
    bookFresha: 'Marcar no Fresha',
    address: 'Morada',
    hours: 'Horário',
    hoursValue: 'Seg · fechado\nTer · 08h–19h\nQua · 09h–19h\nQui · 09h–00h\nSex — Sáb · 09h–19h\nDom · 13h–19h',
    phone: 'Telefone',
    email: 'Email',
    footerRights: 'BelezaaPinkk · todos os direitos reservados',
  },
};

const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "primaryHue": 340,
  "primarySaturation": 75,
  "darkBg": false,
  "lang": "fr"
}/*EDITMODE-END*/;

function App() {
  const [tweaks, setTweak] = useTweaks(TWEAK_DEFAULTS);
  const [lang, setLangState] = React.useState(tweaks.lang || 'fr');
  const [darkMode, setDarkMode] = React.useState(false);
  const [overlayPhase, setOverlayPhase] = React.useState('idle'); // idle | expanding | collapsing
  const [origin, setOrigin] = React.useState({ x: '50%', y: '60px' });
  const overlayRef = React.useRef(null);

  // sync lang with tweak
  React.useEffect(() => { setLangState(tweaks.lang || 'fr'); }, [tweaks.lang]);

  // Apply hue/saturation as CSS overrides
  React.useEffect(() => {
    const h = tweaks.primaryHue;
    const s = tweaks.primarySaturation;
    const root = document.documentElement;
    root.style.setProperty('--pink-50',  `hsl(${h} ${s*0.6}% 97%)`);
    root.style.setProperty('--pink-100', `hsl(${h} ${s*0.7}% 94%)`);
    root.style.setProperty('--pink-200', `hsl(${h} ${s*0.75}% 90%)`);
    root.style.setProperty('--pink-300', `hsl(${h} ${s*0.85}% 82%)`);
    root.style.setProperty('--pink-400', `hsl(${h} ${s}% 73%)`);
    root.style.setProperty('--pink-500', `hsl(${h} ${s}% 60%)`);
    root.style.setProperty('--pink-600', `hsl(${h} ${s}% 50%)`);
    document.body.style.background = tweaks.darkBg ? '#0e0e10' : '';
    document.body.style.color = tweaks.darkBg ? '#f7f7f7' : '';
  }, [tweaks.primaryHue, tweaks.primarySaturation, tweaks.darkBg]);

  const toggleLight = React.useCallback((e) => {
    if (overlayPhase !== 'idle') return;
    const rect = e.currentTarget.getBoundingClientRect();
    const ox = `${Math.round(rect.left + rect.width / 2)}px`;
    const oy = `${Math.round(rect.top + rect.height / 2)}px`;
    setOrigin({ x: ox, y: oy });

    // Phase 1 — expand overlay (cover screen)
    setOverlayPhase('expanding');

    setTimeout(() => {
      // Swap theme at peak
      setDarkMode(d => {
        const next = !d;
        if (next) document.documentElement.setAttribute('data-dark', '');
        else document.documentElement.removeAttribute('data-dark');
        return next;
      });
      // Phase 2 — collapse overlay
      setOverlayPhase('collapsing');
      setTimeout(() => setOverlayPhase('idle'), 520);
    }, 480);
  }, [overlayPhase]);

  const t = { ...CONTENT[lang], lang };
  const setLang = (l) => { setLangState(l); setTweak('lang', l); };

  return (
    <>
      {/* Light transition overlay */}
      {overlayPhase !== 'idle' && (
        <div
          ref={overlayRef}
          className={`light-overlay ${overlayPhase}`}
          style={{ '--ox': origin.x, '--oy': origin.y }}
        />
      )}
      {/* Floating lamp glow in dark mode */}
      {darkMode && <div className="lamp-glow" />}
      <Header lang={lang} setLang={setLang} darkMode={darkMode} toggleLight={toggleLight} />
      <main>
        <Hero t={t} />
        <Reveal y={40}><Featured t={t} /></Reveal>
        <Reveal y={40}><Services t={t} /></Reveal>
        <Reveal y={40}><About t={t} /></Reveal>
        <Reveal y={40}><Team t={t} /></Reveal>
        <Reveal y={40}><Reviews t={t} /></Reveal>
        <Reveal y={40}><Contact t={t} /></Reveal>
      </main>
      <Footer t={t} />

      <TweaksPanel title="Tweaks">
        <TweakSection label="Couleur principale" />
        <TweakSlider label="Teinte" value={tweaks.primaryHue} min={0} max={360} step={1}
          onChange={(v) => setTweak('primaryHue', v)} />
        <TweakSlider label="Saturation" value={tweaks.primarySaturation} min={20} max={100} step={1} unit="%"
          onChange={(v) => setTweak('primarySaturation', v)} />
        <TweakSection label="Apparence" />
        <TweakToggle label="Mode sombre" value={tweaks.darkBg}
          onChange={(v) => setTweak('darkBg', v)} />
        <TweakSection label="Langue" />
        <TweakRadio label="Langue" value={tweaks.lang} options={['fr','en','pt']}
          onChange={(v) => setTweak('lang', v)} />
      </TweaksPanel>
    </>
  );
}

ReactDOM.createRoot(document.getElementById('root')).render(<App />);
