/* ============================================================
   Quiz: Quale massaggio fa per te?
   Studio Karishma — Logica del quiz
   Vanilla JS, no dependencies.
   ============================================================ */

(function () {
    'use strict';

    const WA_NUMBER = '393517958395';
    const TOTAL_QUESTIONS = 5;

    // ── i18n strings (set from <html lang> by default) ──────────────
    // The page is rendered in IT/EN/PT independently; this JS works
    // with the DOM that's already in the right language. We only need
    // the dynamic bits: results intro, WhatsApp message.
    const T = {
        it: {
            resultsEyebrow: 'La tua raccomandazione personalizzata',
            resultsTitle: 'Ecco cosa ti suggeriamo',
            resultsIntro: (rec) =>
                `In base alle tue risposte, ecco il massaggio più adatto a te e 2 alternative da esplorare.`,
            whatsappLabel: 'Prenota su WhatsApp',
            restartLabel: '↻ Rifai il quiz',
            backLabel: '← Indietro',
            nextLabel: 'Avanti →',
            minLabel: 'min',
            goodMatch: 'Consigliato per te',
            goodMatchSecondary: 'Anche questo può fare per te',
            budgetShort: 'Budget',
            timeShort: 'Durata',
            reasonsLabel: 'Perché te lo consigliamo',
            allTieLabel: 'In base alle tue risposte',
            learnMoreLabel: 'Approfondisci →',
            whatsappMessage: (treatmentName) =>
                `Ciao Carlotta, ho fatto il quiz sul tuo sito e mi hai consigliato "${treatmentName}". Vorrei prenotare una sessione. Grazie!`,
            whatsappGeneric: 'Ciao Carlotta, ho fatto il quiz sul tuo sito e vorrei maggiori informazioni. Grazie!',
            noJSWarning: 'Il quiz richiede JavaScript. Per vedere tutti i trattamenti disponibili, <a href="#tutti-i-trattamenti">scorri più in basso</a>.',
        },
        en: {
            resultsEyebrow: 'Your personalised recommendation',
            resultsTitle: 'Here\'s what we suggest',
            resultsIntro: (rec) =>
                `Based on your answers, here is the massage best suited to you and 2 alternatives to explore.`,
            whatsappLabel: 'Book on WhatsApp',
            restartLabel: '↻ Retake the quiz',
            backLabel: '← Back',
            nextLabel: 'Next →',
            minLabel: 'min',
            goodMatch: 'Recommended for you',
            goodMatchSecondary: 'Also a great fit',
            budgetShort: 'Budget',
            timeShort: 'Duration',
            reasonsLabel: 'Why we recommend it',
            allTieLabel: 'Based on your answers',
            learnMoreLabel: 'Learn more →',
            whatsappMessage: (treatmentName) =>
                `Hi Carlotta, I did the quiz on your website and you recommended "${treatmentName}". I\'d like to book a session. Thanks!`,
            whatsappGeneric: 'Hi Carlotta, I did the quiz on your website and would like more info. Thanks!',
            noJSWarning: 'The quiz requires JavaScript. To browse all available treatments, <a href="#tutti-i-trattamenti">scroll down</a>.',
        },
        pt: {
            resultsEyebrow: 'A sua recomendação personalizada',
            resultsTitle: 'Aqui está o que sugerimos',
            resultsIntro: (rec) =>
                `Com base nas suas respostas, aqui está a massagem mais adequada para você e 2 alternativas para explorar.`,
            whatsappLabel: 'Reservar pelo WhatsApp',
            restartLabel: '↻ Refazer o quiz',
            backLabel: '← Voltar',
            nextLabel: 'Avançar →',
            minLabel: 'min',
            goodMatch: 'Recomendado para você',
            goodMatchSecondary: 'Também pode ser para você',
            budgetShort: 'Investimento',
            timeShort: 'Duração',
            reasonsLabel: 'Por que recomendamos',
            allTieLabel: 'Com base nas suas respostas',
            learnMoreLabel: 'Saiba mais →',
            whatsappMessage: (treatmentName) =>
                `Olá Carlotta, fiz o quiz no seu site e você recomendou "${treatmentName}". Gostaria de reservar uma sessão. Obrigada!`,
            whatsappGeneric: 'Olá Carlotta, fiz o quiz no seu site e gostaria de mais informações. Obrigada!',
            noJSWarning: 'O quiz requer JavaScript. Para ver todos os tratamentos disponíveis, <a href="#tutti-i-trattamenti">role para baixo</a>.',
        },
        de: {
            resultsEyebrow: 'Ihre persönliche Empfehlung',
            resultsTitle: 'Hier ist unser Vorschlag',
            resultsIntro: (rec) =>
                `Basierend auf Ihren Antworten ist dies die am besten geeignete Massage für Sie, plus 2 Alternativen zum Entdecken.`,
            whatsappLabel: 'Per WhatsApp buchen',
            restartLabel: '↻ Quiz wiederholen',
            backLabel: '← Zurück',
            nextLabel: 'Weiter →',
            minLabel: 'Min.',
            goodMatch: 'Für Sie empfohlen',
            goodMatchSecondary: 'Auch eine gute Wahl',
            budgetShort: 'Investition',
            timeShort: 'Dauer',
            reasonsLabel: 'Warum wir es empfehlen',
            allTieLabel: 'Basierend auf Ihren Antworten',
            learnMoreLabel: 'Mehr erfahren →',
            whatsappMessage: (treatmentName) =>
                `Hallo Carlotta, ich habe das Quiz auf Ihrer Website gemacht und Sie haben mir "${treatmentName}" empfohlen. Ich möchte gerne einen Termin buchen. Vielen Dank!`,
            whatsappGeneric: 'Hallo Carlotta, ich habe das Quiz auf Ihrer Website gemacht und möchte mehr Informationen. Vielen Dank!',
            noJSWarning: 'Das Quiz benötigt JavaScript. Um alle verfügbaren Behandlungen zu sehen, <a href="#tutti-i-trattamenti">scrollen Sie nach unten</a>.',
        },
        fr: {
            resultsEyebrow: 'Votre recommandation personnalisée',
            resultsTitle: 'Voici ce que nous suggérons',
            resultsIntro: (rec) =>
                `Sur la base de vos réponses, voici le massage le plus adapté pour vous et 2 alternatives à explorer.`,
            whatsappLabel: 'Réserver sur WhatsApp',
            restartLabel: '↻ Refaire le quiz',
            backLabel: '← Retour',
            nextLabel: 'Suivant →',
            minLabel: 'min',
            goodMatch: 'Recommandé pour vous',
            goodMatchSecondary: 'Également un bon choix',
            budgetShort: 'Investissement',
            timeShort: 'Durée',
            reasonsLabel: 'Pourquoi nous le recommandons',
            allTieLabel: 'Sur la base de vos réponses',
            learnMoreLabel: 'En savoir plus →',
            whatsappMessage: (treatmentName) =>
                `Bonjour Carlotta, j'ai fait le quiz sur votre site et vous m'avez recommandé "${treatmentName}". Je souhaite réserver une séance. Merci!`,
            whatsappGeneric: 'Bonjour Carlotta, j\'ai fait le quiz sur votre site et je souhaite plus d\'informations. Merci!',
            noJSWarning: 'Le quiz nécessite JavaScript. Pour voir tous les traitements disponibles, <a href="#tutti-i-trattamenti">faites défiler vers le bas</a>.',
        },
        es: {
            resultsEyebrow: 'Tu recomendación personalizada',
            resultsTitle: 'Esto es lo que sugerimos',
            resultsIntro: (rec) =>
                `Según tus respuestas, este es el masaje más adecuado para ti y 2 alternativas para explorar.`,
            whatsappLabel: 'Reservar por WhatsApp',
            restartLabel: '↻ Volver a hacer el quiz',
            backLabel: '← Atrás',
            nextLabel: 'Siguiente →',
            minLabel: 'min',
            goodMatch: 'Recomendado para ti',
            goodMatchSecondary: 'También una buena opción',
            budgetShort: 'Inversión',
            timeShort: 'Duración',
            reasonsLabel: 'Por qué lo recomendamos',
            allTieLabel: 'Según tus respuestas',
            learnMoreLabel: 'Saber más →',
            whatsappMessage: (treatmentName) =>
                `Hola Carlotta, hice el quiz en tu sitio web y me recomendaste "${treatmentName}". Me gustaría reservar una sesión. Gracias!`,
            whatsappGeneric: 'Hola Carlotta, hice el quiz en tu sitio web y me gustaría más información. Gracias!',
            noJSWarning: 'El quiz requiere JavaScript. Para ver todos los tratamientos disponibles, <a href="#tutti-i-trattamenti">desplázate hacia abajo</a>.',
        }
    };
    const lang = (document.documentElement.lang || 'it').toLowerCase().split('-')[0];
    const t = T[lang] || T.it;

    // ── Localize a treatment page URL to the current language ───────
    // Slugs are identical across IT/EN/PT, so we just prefix the language
    // (no prefix for IT since pages live at the root).
    function localizePage(page) {
        if (!page) return '/';
        if (lang === 'en') return '/en' + page;
        if (lang === 'pt') return '/pt' + page;
        if (lang === 'de') return '/de' + page;
        if (lang === 'fr') return '/fr' + page;
        if (lang === 'es') return '/es' + page;
        return page;
    }

    // ── Treatments catalog ─────────────────────────────────────────
    // IDs match across languages. Reasons are localized separately below.
    const TREATMENTS = [
        {
            id: 'rilassante',
            name: { it: 'Massaggio Rilassante', en: 'Relaxing Massage', pt: 'Massagem Relaxante', de: 'Entspannungsmassage', fr: 'Massage Relaxant', es: 'Masaje Relajante' },
            duration: '60-90',
            durationLabel: { it: "60' / 90'", en: "60' / 90'", pt: "60' / 90'", de: "60' / 90'", fr: "60' / 90'", es: "60' / 90'" },
            price: { it: '€70 / €100', en: '€70 / €100', pt: '€70 / €100' },
            page: '/massaggi-relax-bergamo.html',
            baseScore: 1, // always a baseline match
            tagline: {
                it: 'Per staccare davvero dalla routine',
                en: 'To truly switch off from routine',
                pt: 'Para sair da rotina de verdade',
                de: 'Um wirklich vom Alltag abzuschalten',
                fr: 'Pour vraiment déconnecter de la routine',
                es: 'Para desconectar de verdad de la rutina'
            },
            whyReasons: {
                it: [
                    'Scioglie stanchezza fisica e sovraccarico mentale',
                    'Movimenti lenti e avvolgenti, perfetto anche per chi è alla prima esperienza',
                    'Si adatta al tuo momento, anche se non sai cosa ti serve'
                ],
                en: [
                    'Releases physical tiredness and mental overload',
                    'Slow, enveloping movements — also perfect for first-timers',
                    'Adapts to your moment, even when you don\'t know what you need'
                ],
                pt: [
                    'Libera o cansaço físico e a sobrecarga mental',
                    'Movimentos lentos e envolventes — perfeito também para iniciantes',
                    'Adapta-se ao seu momento, mesmo quando você não sabe o que precisa'
                ],
                de: [
                    'Löst körperliche Müdigkeit und mentale Überlastung',
                    'Langsame, einhüllende Bewegungen – perfekt auch für Anfänger',
                    'Passt sich deinem Moment an, selbst wenn du nicht weißt, was du brauchst'
                ],
                fr: [
                    'Dissout la fatigue physique et la surcharge mentale',
                    'Mouvements lents et enveloppants – parfait aussi pour les débutants',
                    'S\'adapte à votre moment, même si vous ne savez pas ce dont vous avez besoin'
                ],
                es: [
                    'Disuelve el cansancio físico y la sobrecarga mental',
                    'Movimientos lentos y envolventes – perfecto también para principiantes',
                    'Se adapta a tu momento, incluso si no sabes lo que necesitas'
                ]
            }
        },
        {
            id: 'olistico',
            name: { it: 'Massaggio Olistico', en: 'Holistic Massage', pt: 'Massagem Holística', de: 'Ganzheitliche Massage', fr: 'Massage Holistique', es: 'Masaje Holístico' },
            duration: '60-90',
            durationLabel: { it: "60' / 90'", en: "60' / 90'", pt: "60' / 90'", de: "60' / 90'", fr: "60' / 90'", es: "60' / 90'" },
            price: { it: '€70 / €100', en: '€70 / €100', pt: '€70 / €100' },
            page: '/servizi.html',
            baseScore: 1,
            tagline: {
                it: 'Quando senti che corpo, mente ed emozioni sono collegati',
                en: 'When body, mind and emotions feel connected',
                pt: 'Quando corpo, mente e emoções estão conectados',
                de: 'Wenn Körper, Geist und Emotionen sich verbunden fühlen',
                fr: 'Quand le corps, l\'esprit et les émotions se sentent connectés',
                es: 'Cuando cuerpo, mente y emociones se sienten conectados'
            },
            whyReasons: {
                it: [
                    'Lavora su corpo, mente ed energia in un\'unica sessione',
                    'Scioglie blocchi profondi e memorie emotive',
                    'Approccio maieutico: ti accompagna, non ti "cura"'
                ],
                en: [
                    'Works on body, mind and energy in a single session',
                    'Releases deep blocks and emotional memories',
                    'Maieutic approach: accompanies you, doesn\'t "treat" you'
                ],
                pt: [
                    'Trabalha corpo, mente e energia em uma única sessão',
                    'Libera bloqueios profundos e memórias emocionais',
                    'Abordagem maiêutica: acompanha você, não te "trata"'
                ],
                de: [
                    'Wirkt auf Körper, Geist und Energie in einer einzigen Sitzung',
                    'Löst tiefe Blockaden und emotionale Erinnerungen',
                    'Mäeutischer Ansatz: begleitet dich, „behandelt" dich nicht'
                ],
                fr: [
                    'Travaille sur le corps, l\'esprit et l\'énergie en une seule séance',
                    'Libère les blocages profonds et les mémoires émotionnelles',
                    'Approche maïeutique : vous accompagne, ne vous « soigne » pas'
                ],
                es: [
                    'Trabaja sobre cuerpo, mente y energía en una sola sesión',
                    'Libera bloqueos profundos y memorias emocionales',
                    'Enfoque mayéutico: te acompaña, no te « cura »'
                ]
            }
        },
        {
            id: 'deep-tissue',
            name: { it: 'Massaggio Decontratturante (Deep Tissue)', en: 'Deep Tissue Massage', pt: 'Massagem Descontracturante (Deep Tissue)', de: 'Tiefengewebsmassage (Deep Tissue)', fr: 'Massage Deep Tissue', es: 'Masaje Deep Tissue' },
            duration: '60-90',
            durationLabel: { it: "60' / 90'", en: "60' / 90'", pt: "60' / 90'", de: "60' / 90'", fr: "60' / 90'", es: "60' / 90'" },
            price: { it: '€75 / €110', en: '€75 / €110', pt: '€75 / €110' },
            page: '/massaggio-decontratturante-bergamo.html',
            baseScore: 0,
            tagline: {
                it: 'Per sciogliere contratture croniche e tensioni profonde',
                en: 'For chronic contractures and deep tension',
                pt: 'Para contraturas crônicas e tensões profundas',
                de: 'Zur Lösung chronischer Verspannungen und tiefer Spannungen',
                fr: 'Pour dissoudre les contractures chroniques et les tensions profondes',
                es: 'Para disolver contracturas crónicas y tensiones profundas'
            },
            whyReasons: {
                it: [
                    'Lavora in profondità sui nodi muscolari cervicali, dorsali e lombari',
                    'Tecniche mirate per posture contratte e stress lavorativo',
                    'Ogni sessione inizia con una valutazione della pressione adatta a te'
                ],
                en: [
                    'Works deeply on cervical, dorsal and lumbar muscle knots',
                    'Targeted techniques for tense postures and work stress',
                    'Each session starts with a pressure assessment tailored to you'
                ],
                pt: [
                    'Trabalha profundamente os nódulos musculares cervicais, dorsais e lombares',
                    'Técnicas direcionadas para posturas tensas e estresse de trabalho',
                    'Cada sessão começa com uma avaliação de pressão adaptada a você'
                ],
                de: [
                    'Arbeitet tief an den Muskelknoten im Nacken, Rücken und Lendenbereich',
                    'Gezielte Techniken für verspannte Haltungen und Arbeitsstress',
                    'Jede Sitzung beginnt mit einer an dich angepassten Druckbewertung'
                ],
                fr: [
                    'Travaille en profondeur sur les nœuds musculaires cervicaux, dorsaux et lombaires',
                    'Techniques ciblées pour les postures contractées et le stress professionnel',
                    'Chaque séance commence par une évaluation de la pression adaptée à vous'
                ],
                es: [
                    'Trabaja en profundidad los nudos musculares cervicales, dorsales y lumbares',
                    'Técnicas específicas para posturas contraídas y estrés laboral',
                    'Cada sesión comienza con una evaluación de presión adaptada a ti'
                ]
            }
        },
        {
            id: 'hot-stones',
            name: { it: 'Hot Stones', en: 'Hot Stones', pt: 'Hot Stones', de: 'Hot Stones', fr: 'Hot Stones', es: 'Hot Stones' },
            duration: '60-90',
            durationLabel: { it: "60' / 90'", en: "60' / 90'", pt: "60' / 90'", de: "60' / 90'", fr: "60' / 90'", es: "60' / 90'" },
            price: { it: '€80 / €120', en: '€80 / €120', pt: '€80 / €120' },
            page: '/hot-stones-bergamo.html',
            baseScore: 0,
            tagline: {
                it: 'Pietre di basalto calde per sciogliere tensioni profonde',
                en: 'Warm basalt stones to release deep tension',
                pt: 'Pedras de basalto quentes para liberar tensões profundas',
                de: 'Warme Basaltsteine zur Lösung tiefer Verspannungen',
                fr: 'Pierres de basalte chaudes pour libérer les tensions profondes',
                es: 'Piedras de basalto calientes para liberar tensiones profundas'
            },
            whyReasons: {
                it: [
                    'Il calore delle pietre lavora dove le mani non arrivano',
                    'Ideale per tensioni croniche e contratture resistenti',
                    'Effetto avvolgente e profondo, anche per chi ama il caldo'
                ],
                en: [
                    'The heat of the stones works where hands can\'t reach',
                    'Ideal for chronic tension and stubborn contractures',
                    'Enveloping, deep effect — also great if you love warmth'
                ],
                pt: [
                    'O calor das pedras trabalha onde as mãos não chegam',
                    'Ideal para tensões crônicas e contraturas persistentes',
                    'Efeito envolvente e profundo — ótimo se você ama o calor'
                ],
                de: [
                    'Die Wärme der Steine wirkt dort, wo die Hände nicht hinkommen',
                    'Ideal für chronische Spannungen und hartnäckige Verspannungen',
                    'Umhüllende und tiefe Wirkung – auch für diejenigen, die Wärme lieben'
                ],
                fr: [
                    'La chaleur des pierres agit là où les mains ne peuvent pas atteindre',
                    'Idéal pour les tensions chroniques et les contractures tenaces',
                    'Effet enveloppant et profond – parfait aussi pour ceux qui aiment la chaleur'
                ],
                es: [
                    'El calor de las piedras actúa donde las manos no llegan',
                    'Ideal para tensiones crónicas y contracturas resistentes',
                    'Efecto envolvente y profundo – también para quienes aman el calor'
                ]
            }
        },
        {
            id: 'ayurvedico',
            name: { it: 'Massaggio Ayurvedico (Abhyanga)', en: 'Ayurvedic Massage (Abhyanga)', pt: 'Massagem Ayurvédica (Abhyanga)', de: 'Ayurvedische Massage (Abhyanga)', fr: 'Massage Ayurvédique (Abhyanga)', es: 'Masaje Ayurvédico (Abhyanga)' },
            duration: '60-90',
            durationLabel: { it: "60' / 90'", en: "60' / 90'", pt: "60' / 90'", de: "60' / 90'", fr: "60' / 90'", es: "60' / 90'" },
            price: { it: '€70 / €100', en: '€70 / €100', pt: '€70 / €100' },
            page: '/massaggio-ayurvedico-bergamo.html',
            baseScore: 0,
            tagline: {
                it: 'Oli medicati caldi per calmare il sistema nervoso',
                en: 'Warm medicated oils to calm the nervous system',
                pt: 'Óleos medicados quentes para acalmar o sistema nervoso',
                de: 'Warme medizinische Öle zur Beruhigung des Nervensystems',
                fr: 'Huiles médicamenteuses chaudes pour calmer le système nerveux',
                es: 'Aceites medicados calientes para calmar el sistema nervioso'
            },
            whyReasons: {
                it: [
                    'L\'Abhyanga lavora in profondità con oli caldi sulle terminazioni nervose',
                    'Riequilibra i dosha e riduce il cortisolo in poche sessioni',
                    'Tradizione millenaria indiana adattata al tuo momento'
                ],
                en: [
                    'Abhyanga works deeply with warm oils on nerve endings',
                    'Rebalances the doshas and lowers cortisol in just a few sessions',
                    'Ancient Indian tradition adapted to your moment'
                ],
                pt: [
                    'Abhyanga trabalha profundamente com óleos quentes nas terminações nervosas',
                    'Reequilibra os doshas e reduz o cortisol em poucas sessões',
                    'Tradição milenar indiana adaptada ao seu momento'
                ],
                de: [
                    'Abhyanga arbeitet tief mit warmen Ölen auf die Nervenenden',
                    'Gleicht die Doshas aus und senkt den Cortisolspiegel in wenigen Sitzungen',
                    'Jahrtausendealte indische Tradition, an deinen Moment angepasst'
                ],
                fr: [
                    'L\'Abhyanga travaille en profondeur avec des huiles chaudes sur les terminaisons nerveuses',
                    'Rééquilibre les doshas et réduit le cortisol en quelques séances',
                    'Tradition indienne millénaire adaptée à votre moment'
                ],
                es: [
                    'El Abhyanga trabaja profundamente con aceites calientes en las terminaciones nerviosas',
                    'Reequilibra los doshas y reduce el cortisol en pocas sesiones',
                    'Tradición milenaria india adaptada a tu momento'
                ]
            }
        },
        {
            id: 'kobido',
            name: { it: 'Kobido — Lifting Massaggio Viso', en: 'Kobido — Lifting Facial Massage', pt: 'Kobido — Massagem Facial Lift', de: 'Kobido — Lifting-Gesichtsmassage', fr: 'Kobido — Massage Visage Liftant', es: 'Kobido — Masaje Facial Lift' },
            duration: '60',
            durationLabel: { it: "60'", en: "60'", pt: "60'", de: "60'", fr: "60'", es: "60'" },
            price: { it: '€79', en: '€79', pt: '€79' },
            page: '/servizi.html',
            baseScore: 0,
            tagline: {
                it: 'Tecnica giapponese antica per il viso',
                en: 'Ancient Japanese technique for the face',
                pt: 'Técnica japonesa antiga para o rosto',
                de: 'Alte japanische Technik für das Gesicht',
                fr: 'Ancienne technique japonaise pour le visage',
                es: 'Antigua técnica japonesa para el rostro'
            },
            whyReasons: {
                it: [
                    'Tonifica i muscoli facciali e stimola la microcircolazione',
                    'Lifting naturale senza chirurgia, anche per la mandibola contratta',
                    'Risultato visibile già dalla prima seduta, più luminosità'
                ],
                en: [
                    'Tones facial muscles and stimulates microcirculation',
                    'Natural lift without surgery — also great for jaw tension',
                    'Visible results from the first session: more radiance'
                ],
                pt: [
                    'Tonifica os músculos faciais e estimula a microcirculação',
                    'Lifting natural sem cirurgia — ótimo também para a mandíbula tensa',
                    'Resultados visíveis desde a primeira sessão: mais luminosidade'
                ],
                de: [
                    'Tonisiert die Gesichtsmuskeln und regt die Mikrozirkulation an',
                    'Natürliches Lifting ohne Chirurgie – auch für verspannte Kieferpartie',
                    'Sichtbare Ergebnisse ab der ersten Sitzung: mehr Strahlkraft'
                ],
                fr: [
                    'Tonifie les muscles du visage et stimule la microcirculation',
                    'Lifting naturel sans chirurgie – idéal aussi pour la mâchoire contractée',
                    'Résultats visibles dès la première séance : plus d\'éclat'
                ],
                es: [
                    'Tonifica los músculos faciales y estimula la microcirculación',
                    'Lifting natural sin cirugía – también para la mandíbula contraída',
                    'Resultados visibles desde la primera sesión: más luminosidad'
                ]
            }
        },
        {
            id: 'reiki',
            name: { it: 'Reiki', en: 'Reiki', pt: 'Reiki', de: 'Reiki', fr: 'Reiki', es: 'Reiki' },
            duration: '60',
            durationLabel: { it: "60'", en: "60'", pt: "60'", de: "60'", fr: "60'", es: "60'" },
            price: { it: '€70', en: '€70', pt: '€70' },
            page: '/reiki-bergamo.html',
            baseScore: 0,
            tagline: {
                it: 'Trattamento energetico per armonizzare corpo e spirito',
                en: 'Energy treatment to harmonise body and spirit',
                pt: 'Tratamento energético para harmonizar corpo e espírito',
                de: 'Energiebehandlung zur Harmonisierung von Körper und Geist',
                fr: 'Traitement énergétique pour harmoniser le corps et l\'esprit',
                es: 'Tratamiento energético para armonizar cuerpo y espíritu'
            },
            whyReasons: {
                it: [
                    'Lavora sui chakra e riequilibra il campo energetico',
                    'Aiuta con ansia, insonnia, stress emotivo e blocchi energetici',
                    'Ideale se cerchi qualcosa che vada oltre il corpo fisico'
                ],
                en: [
                    'Works on the chakras and rebalances the energy field',
                    'Helps with anxiety, insomnia, emotional stress and energetic blocks',
                    'Ideal if you\'re looking for something beyond the physical body'
                ],
                pt: [
                    'Trabalha os chakras e reequilibra o campo energético',
                    'Ajuda com ansiedade, insônia, estresse emocional e bloqueios energéticos',
                    'Ideal se você procura algo além do corpo físico'
                ],
                de: [
                    'Arbeitet an den Chakren und gleicht das Energiefeld aus',
                    'Hilft bei Angst, Schlaflosigkeit, emotionalem Stress und Energieblockaden',
                    'Ideal, wenn du etwas suchst, das über den physischen Körper hinausgeht'
                ],
                fr: [
                    'Travaille sur les chakras et rééquilibre le champ énergétique',
                    'Aide en cas d\'anxiété, d\'insomnie, de stress émotionnel et de blocages énergétiques',
                    'Idéal si vous cherchez quelque chose au-delà du corps physique'
                ],
                es: [
                    'Trabaja sobre los chakras y reequilibra el campo energético',
                    'Ayuda con la ansiedad, el insomnio, el estrés emocional y los bloqueos energéticos',
                    'Ideal si buscas algo más allá del cuerpo físico'
                ]
            }
        },
        {
            id: 'sciamanico',
            name: { it: 'Massaggio Sciamanico', en: 'Shamanic Massage', pt: 'Massagem Xamânica', de: 'Schamanische Massage', fr: 'Massage Chamanique', es: 'Masaje Chamánico' },
            duration: '60-90',
            durationLabel: { it: "60' / 90'", en: "60' / 90'", pt: "60' / 90'", de: "60' / 90'", fr: "60' / 90'", es: "60' / 90'" },
            price: { it: '€80 / €120', en: '€80 / €120', pt: '€80 / €120' },
            page: '/servizi.html',
            baseScore: 0,
            tagline: {
                it: 'Per trasformazioni profonde e blocchi emotivi radicati',
                en: 'For deep transformation and rooted emotional blocks',
                pt: 'Para transformações profundas e bloqueios emocionais enraizados',
                de: 'Für tiefgreifende Transformationen und tief verwurzelte emotionale Blockaden',
                fr: 'Pour des transformations profondes et des blocages émotionnels enracinés',
                es: 'Para transformaciones profundas y bloqueos emocionales arraigados'
            },
            whyReasons: {
                it: [
                    'Percussioni, vento e rituali antichi per liberare memorie emotive',
                    'Ideale se senti che c\'è qualcosa di "radicato" da sciogliere',
                    'Un\'esperienza che va oltre il massaggio tradizionale'
                ],
                en: [
                    'Percussion, breath and ancient rituals to release emotional memories',
                    'Ideal if something feels "rooted" and ready to release',
                    'An experience that goes beyond traditional massage'
                ],
                pt: [
                    'Percussões, sopro e rituais antigos para liberar memórias emocionais',
                    'Ideal se algo parece "enraizado" e pronto para ser liberado',
                    'Uma experiência que vai além da massagem tradicional'
                ],
                de: [
                    'Perkussion, Atem und alte Rituale zur Befreiung emotionaler Erinnerungen',
                    'Ideal, wenn du das Gefühl hast, dass etwas „tief verwurzeltes" gelöst werden muss',
                    'Eine Erfahrung, die über die traditionelle Massage hinausgeht'
                ],
                fr: [
                    'Percussions, souffle et rituels anciens pour libérer les mémoires émotionnelles',
                    'Idéal si vous sentez que quelque chose d\'« enraciné » doit être libéré',
                    'Une expérience qui va au-delà du massage traditionnel'
                ],
                es: [
                    'Percusiones, soplo y rituales antiguos para liberar memorias emocionales',
                    'Ideal si sientes que hay algo « arraigado » que necesita ser liberado',
                    'Una experiencia que va más allá del masaje tradicional'
                ]
            }
        },
        {
            id: 'experience',
            name: { it: 'Karishma Experience', en: 'Karishma Experience', pt: 'Karishma Experience', de: 'Karishma Experience', fr: 'Karishma Experience', es: 'Karishma Experience' },
            duration: '90',
            durationLabel: { it: "90'", en: "90'", pt: "90'", de: "90'", fr: "90'", es: "90'" },
            price: { it: '€100', en: '€100', pt: '€100' },
            page: '/servizi.html',
            baseScore: 0,
            tagline: {
                it: 'Il percorso signature per una trasformazione profonda',
                en: 'Our signature journey for a deep transformation',
                pt: 'A jornada signature para uma transformação profunda',
                de: 'Die Signature-Reise für eine tiefgreifende Transformation',
                fr: 'Le parcours signature pour une transformation profonde',
                es: 'El recorrido signature para una transformación profunda'
            },
            whyReasons: {
                it: [
                    'Diagnosi energetica + massaggio personalizzato + pulizia energetica',
                    '90 minuti che raccontano già il tuo percorso',
                    'Consigliato se è la tua prima volta o se vuoi "tutto in uno"'
                ],
                en: [
                    'Energy diagnosis + personalised massage + energetic cleansing',
                    '90 minutes that already tell your journey',
                    'Recommended if it\'s your first time or you want "all in one"'
                ],
                pt: [
                    'Diagnóstico energético + massagem personalizada + limpeza energética',
                    '90 minutos que já contam a sua jornada',
                    'Recomendado se é a sua primeira vez ou se quer "tudo em um"'
                ],
                de: [
                    'Energiediagnose + personalisierte Massage + energetische Reinigung',
                    '90 Minuten, die bereits deine Reise erzählen',
                    'Empfohlen, wenn es dein erstes Mal ist oder du „alles in einem" möchtest'
                ],
                fr: [
                    'Diagnostic énergétique + massage personnalisé + nettoyage énergétique',
                    '90 minutes qui racontent déjà votre parcours',
                    'Recommandé si c\'est votre première fois ou si vous voulez « tout en un »'
                ],
                es: [
                    'Diagnóstico energético + masaje personalizado + limpieza energética',
                    '90 minutos que ya cuentan tu recorrido',
                    'Recomendado si es tu primera vez o quieres « todo en uno »'
                ]
            }
        },
        {
            id: 'break',
            name: { it: 'Karishma Break', en: 'Karishma Break', pt: 'Karishma Break', de: 'Karishma Break', fr: 'Karishma Break', es: 'Karishma Break' },
            duration: '25',
            durationLabel: { it: "25'", en: "25'", pt: "25'", de: "25'", fr: "25'", es: "25'" },
            price: { it: '€35', en: '€35', pt: '€35' },
            page: '/servizi.html',
            baseScore: 0,
            tagline: {
                it: 'Una pausa rigenerante da 25 minuti',
                en: 'A 25-minute regenerating break',
                pt: 'Uma pausa regeneradora de 25 minutos',
                de: 'Eine 25-minütige regenerierende Pause',
                fr: 'Une pause régénérante de 25 minutes',
                es: 'Una pausa regeneradora de 25 minutos'
            },
            whyReasons: {
                it: [
                    'Perfetto se hai poco tempo o vuoi provare un assaggio',
                    'Scegli tu: viso, gambe, schiena, lettura tarocchi o pulizia energetica',
                    'Anche 3 sessioni a €99 — l\'ideale per iniziare un percorso'
                ],
                en: [
                    'Perfect if you have little time or want a taste',
                    'Your choice: face, legs, back, tarot reading or energetic cleansing',
                    'Also 3 sessions for €99 — ideal to start a journey'
                ],
                pt: [
                    'Perfeito se você tem pouco tempo ou quer uma amostra',
                    'Você escolhe: rosto, pernas, costas, leitura de tarô ou limpeza energética',
                    'Também 3 sessões por €99 — ideal para começar uma jornada'
                ],
                de: [
                    'Perfekt, wenn du wenig Zeit hast oder einen Vorgeschmack möchtest',
                    'Du wählst: Gesicht, Beine, Rücken, Tarot-Lesung oder energetische Reinigung',
                    'Auch 3 Sitzungen für €99 – ideal, um eine Reise zu beginnen'
                ],
                fr: [
                    'Parfait si vous avez peu de temps ou voulez un avant-goût',
                    'Vous choisissez : visage, jambes, dos, lecture de tarot ou nettoyage énergétique',
                    'Également 3 séances pour 99 € – idéal pour commencer un parcours'
                ],
                es: [
                    'Perfecto si tienes poco tiempo o quieres una muestra',
                    'Tú eliges: rostro, piernas, espalda, lectura de tarot o limpieza energética',
                    'También 3 sesiones por 99 € – ideal para comenzar un recorrido'
                ]
            }
        },
        {
            id: 'seitai',
            name: { it: 'Massaggio SEITAI', en: 'SEITAI Massage', pt: 'Massagem SEITAI', de: 'SEITAI Massage', fr: 'Massage SEITAI', es: 'Masaje SEITAI' },
            duration: '90',
            durationLabel: { it: "90'", en: "90'", pt: "90'", de: "90'", fr: "90'", es: "90'" },
            price: { it: '€100', en: '€100', pt: '€100' },
            page: '/servizi.html',
            baseScore: 0,
            tagline: {
                it: 'Riallineamento strutturale con vibrazioni sottili',
                en: 'Structural realignment through subtle vibrations',
                pt: 'Realinhamento estrutural com vibrações sutis',
                de: 'Strukturelle Neuausrichtung durch feine Vibrationen',
                fr: 'Réalignement structurel par vibrations subtiles',
                es: 'Realineamiento estructural mediante vibraciones sutiles'
            },
            whyReasons: {
                it: [
                    'Tecnica giapponese che ristabilisce l\'armonia posturale',
                    'Vibrazioni profonde che agiscono senza forzare',
                    'Reset completo senza dolore — ideale se sei prosciugata'
                ],
                en: [
                    'Japanese technique that restores postural harmony',
                    'Deep vibrations that work without forcing',
                    'A complete reset without pain — ideal if you feel drained'
                ],
                pt: [
                    'Técnica japonesa que restabelece a harmonia postural',
                    'Vibrações profundas que agem sem forçar',
                    'Reset completo sem dor — ideal se você se sente esgotada'
                ],
                de: [
                    'Japanische Technik, die die Haltungsharmonie wiederherstellt',
                    'Tiefe Vibrationen, die wirken, ohne zu forcieren',
                    'Kompletter Reset ohne Schmerzen – ideal, wenn du erschöpft bist'
                ],
                fr: [
                    'Technique japonaise qui rétablit l\'harmonie posturale',
                    'Vibrations profondes qui agissent sans forcer',
                    'Réinitialisation complète sans douleur – idéal si vous êtes épuisée'
                ],
                es: [
                    'Técnica japonesa que restablece la armonía postural',
                    'Vibraciones profundas que actúan sin forzar',
                    'Reinicio completo sin dolor – ideal si estás agotada'
                ]
            }
        },
        {
            id: 'drenante',
            name: { it: 'Massaggio Drenante', en: 'Lymphatic Drainage Massage', pt: 'Massagem Drenante', de: 'Lymphdrainage-Massage', fr: 'Massage Drainant Lymphatique', es: 'Masaje Drenante Linfático' },
            duration: '60',
            durationLabel: { it: "60'", en: "60'", pt: "60'", de: "60'", fr: "60'", es: "60'" },
            price: { it: '€70', en: '€70', pt: '€70' },
            page: '/servizi.html',
            baseScore: 0,
            tagline: {
                it: 'Stimola il sistema linfatico, leggero ma efficace',
                en: 'Stimulates the lymphatic system — light but effective',
                pt: 'Estimula o sistema linfático — leve mas eficaz',
                de: 'Regt das Lymphsystem an – leicht, aber effektiv',
                fr: 'Stimule le système lymphatique – léger mais efficace',
                es: 'Estimula el sistema linfático – ligero pero eficaz'
            },
            whyReasons: {
                it: [
                    'Tecniche delicate che attivano la circolazione linfatica',
                    'Senso di leggerezza fin dalla prima seduta',
                    'Ideale se senti le gambe pesanti e il corpo gonfio'
                ],
                en: [
                    'Gentle techniques that activate lymphatic circulation',
                    'A sense of lightness from the very first session',
                    'Ideal if your legs feel heavy and your body feels bloated'
                ],
                pt: [
                    'Técnicas delicadas que ativam a circulação linfática',
                    'Sensação de leveza desde a primeira sessão',
                    'Ideal se você sente as pernas pesadas e o corpo inchado'
                ],
                de: [
                    'Sanfte Techniken, die die Lymphzirkulation anregen',
                    'Ein Gefühl der Leichtigkeit ab der ersten Sitzung',
                    'Ideal, wenn die Beine schwer und der Körper geschwollen sind'
                ],
                fr: [
                    'Techniques douces qui activent la circulation lymphatique',
                    'Une sensation de légèreté dès la première séance',
                    'Idéal si vous avez les jambes lourdes et le corps gonflé'
                ],
                es: [
                    'Técnicas suaves que activan la circulación linfática',
                    'Sensación de ligereza desde la primera sesión',
                    'Ideal si sientes las piernas pesadas y el cuerpo hinchado'
                ]
            }
        },
        {
            id: 'udwartana',
            name: { it: 'Massaggio Udwartana', en: 'Udwartana Massage', pt: 'Massagem Udwartana', de: 'Udwartana Massage', fr: 'Massage Udwartana', es: 'Masaje Udwartana' },
            duration: '90',
            durationLabel: { it: "90'", en: "90'", pt: "90'", de: "90'", fr: "90'", es: "90'" },
            price: { it: '€110', en: '€110', pt: '€110' },
            page: '/servizi.html',
            baseScore: 0,
            tagline: {
                it: 'Massaggio a secco con polveri di erbe, stimolante e drenante',
                en: 'Dry massage with herbal powders — stimulating and draining',
                pt: 'Massagem a seco com pós de ervas — estimulante e drenante',
                de: 'Trockenmassage mit Kräuterpulvern – stimulierend und entwässernd',
                fr: 'Massage à sec avec des poudres d\'herbes – stimulant et drainant',
                es: 'Masaje en seco con polvos de hierbas – estimulante y drenante'
            },
            whyReasons: {
                it: [
                    'Tecnica ayurvedica con polveri che attivano il metabolismo',
                    'Snellente e detossinante, ideale per ritenzione',
                    'Pressione decisa ma non dolorosa, con effetto avvolgente'
                ],
                en: [
                    'Ayurvedic technique with powders that boost metabolism',
                    'Sculpting and detoxifying — ideal for water retention',
                    'Firm but not painful pressure, with an enveloping effect'
                ],
                pt: [
                    'Técnica ayurvédica com pós que ativam o metabolismo',
                    'Modeladora e desintoxicante — ideal para retenção',
                    'Pressão firme mas não dolorosa, com efeito envolvente'
                ],
                de: [
                    'Ayurvedische Technik mit Pulvern, die den Stoffwechsel anregen',
                    'Straffend und entgiftend – ideal bei Wassereinlagerungen',
                    'Fester, aber nicht schmerzhafter Druck mit umhüllender Wirkung'
                ],
                fr: [
                    'Technique ayurvédique avec des poudres qui activent le métabolisme',
                    'Affinant et détoxifiant – idéal pour la rétention d\'eau',
                    'Pression ferme mais non douloureuse, avec un effet enveloppant'
                ],
                es: [
                    'Técnica ayurvédica con polvos que activan el metabolismo',
                    'Reafirmante y desintoxicante – ideal para la retención de líquidos',
                    'Presión firme pero no dolorosa, con efecto envolvente'
                ]
            }
        },
        {
            id: 'personalizzato',
            name: { it: 'Massaggio Personalizzato', en: 'Bespoke Massage', pt: 'Massagem Personalizada', de: 'Personalisierte Massage', fr: 'Massage Personnalisé', es: 'Masaje Personalizado' },
            duration: '60-90',
            durationLabel: { it: "60' / 90'", en: "60' / 90'", pt: "60' / 90'", de: "60' / 90'", fr: "60' / 90'", es: "60' / 90'" },
            price: { it: '€70 / €100', en: '€70 / €100', pt: '€70 / €100' },
            page: '/servizi.html',
            baseScore: 0,
            tagline: {
                it: 'Un protocollo cucito solo per te',
                en: 'A protocol tailored only for you',
                pt: 'Um protocolo feito sob medida para você',
                de: 'Ein Protokoll, das nur für dich maßgeschneidert ist',
                fr: 'Un protocole cousu rien que pour vous',
                es: 'Un protocolo hecho a medida solo para ti'
            },
            whyReasons: {
                it: [
                    'Carlotta ascolta cosa ti serve oggi e costruisce il massaggio',
                    'Combina le tecniche più adatte al tuo momento',
                    'Ideale per drenaggio profondo, sblocco o focus su zone specifiche'
                ],
                en: [
                    'Carlotta listens to what you need today and builds the session',
                    'Combines the techniques best suited to your moment',
                    'Ideal for deep drainage, unlocking or focusing on specific areas'
                ],
                pt: [
                    'Carlotta ouve o que você precisa hoje e constrói a massagem',
                    'Combina as técnicas mais adequadas ao seu momento',
                    'Ideal para drenagem profunda, desbloqueio ou foco em áreas específicas'
                ],
                de: [
                    'Carlotta hört zu, was du heute brauchst, und gestaltet die Massage',
                    'Kombiniert die für deinen Moment am besten geeigneten Techniken',
                    'Ideal für tiefe Entwässerung, Blockadelösung oder Fokus auf bestimmte Bereiche'
                ],
                fr: [
                    'Carlotta écoute ce dont vous avez besoin aujourd\'hui et construit le massage',
                    'Combine les techniques les plus adaptées à votre moment',
                    'Idéal pour un drainage profond, un déblocage ou un focus sur des zones spécifiques'
                ],
                es: [
                    'Carlotta escucha lo que necesitas hoy y construye el masaje',
                    'Combina las técnicas más adecuadas para tu momento',
                    'Ideal para drenaje profundo, desbloqueo o enfoque en áreas específicas'
                ]
            }
        }
    ];

    // Lookup by id
    const T_BY_ID = TREATMENTS.reduce((m, t) => { m[t.id] = t; return m; }, {});

    // ── Recommendation matrix (6 states x 3 pressures) ───────────────
    // Each state has 3 cells — one per pressure (light/medium/deep).
    // The first entry is the primary recommendation; the next two are alternatives.
    const RECOMMENDATIONS = {
        // A — Stanchezza fisica e mentale
        A: {
            light: { primary: 'seitai',          alternatives: ['rilassante', 'ayurvedico'] },
            medium:{ primary: 'ayurvedico',      alternatives: ['seitai', 'olistico'] },
            deep:  { primary: 'deep-tissue',     alternatives: ['personalizzato', 'seitai'] }
        },
        // B — Tensioni croniche (schiena, collo, mascella)
        B: {
            light: { primary: 'kobido',          alternatives: ['rilassante', 'hot-stones'] },
            medium:{ primary: 'olistico',        alternatives: ['kobido', 'seitai'] },
            deep:  { primary: 'deep-tissue',     alternatives: ['personalizzato', 'seitai'] }
        },
        // C — Pesantezza, ritenzione, corpo gonfio
        C: {
            light: { primary: 'drenante',        alternatives: ['udwartana', 'ayurvedico'] },
            medium:{ primary: 'udwartana',       alternatives: ['drenante', 'ayurvedico'] },
            deep:  { primary: 'personalizzato',  alternatives: ['drenante', 'seitai'] }
        },
        // D — Stanchezza nervosa, bisogno di pace
        D: {
            light: { primary: 'rilassante',      alternatives: ['hot-stones', 'ayurvedico'] },
            medium:{ primary: 'hot-stones',      alternatives: ['rilassante', 'olistico'] },
            deep:  { primary: 'olistico',        alternatives: ['rilassante', 'deep-tissue'] }
        },
        // E — Disconnessione, bisogno di ascolto profondo
        E: {
            light: { primary: 'ayurvedico',      alternatives: ['sciamanico', 'olistico'] },
            medium:{ primary: 'olistico',        alternatives: ['ayurvedico', 'sciamanico'] },
            deep:  { primary: 'sciamanico',      alternatives: ['personalizzato', 'olistico'] }
        },
        // F — Voglia di scoperta, esperienza non standard
        F: {
            light: { primary: 'experience',      alternatives: ['sciamanico', 'ayurvedico'] },
            medium:{ primary: 'ayurvedico',      alternatives: ['experience', 'olistico'] },
            deep:  { primary: 'personalizzato',  alternatives: ['sciamanico', 'experience'] }
        }
    };

    // ── Scoring rules ───────────────────────────────────────────────
    // Each rule: (question, answerValue) -> { treatmentId: scoreDelta, ... }
    const RULES = [
        // Q1 — priority (body / mind / both)
        { q: 'priority', a: 'body', deltas: { rilassante: 3, 'deep-tissue': 2, 'hot-stones': 2, ayurvedico: 2, kobido: 1, break: 1 } },
        { q: 'priority', a: 'mind', deltas: { reiki: 4, olistico: 3, sciamanico: 2, ayurvedico: 1 } },
        { q: 'priority', a: 'both', deltas: { olistico: 4, experience: 3, ayurvedico: 2, reiki: 2, sciamanico: 2 } },

        // Q2 — zone
        { q: 'zone', a: 'neck-back', deltas: { 'deep-tissue': 5, 'hot-stones': 3, ayurvedico: 2, rilassante: 1 } },
        { q: 'zone', a: 'legs', deltas: { ayurvedico: 3, rilassante: 2, olistico: 1, 'hot-stones': 1 } },
        { q: 'zone', a: 'face', deltas: { kobido: 5, reiki: 1 } },
        { q: 'zone', a: 'full-body', deltas: { rilassante: 3, olistico: 3, ayurvedico: 2, experience: 2 } },
        { q: 'zone', a: 'none', deltas: { reiki: 3, sciamanico: 2, kobido: 2, olistico: 1 } },

        // Q3 — pressure
        { q: 'pressure', a: 'light', deltas: { reiki: 3, ayurvedico: 2, kobido: 2, rilassante: 2 } },
        { q: 'pressure', a: 'medium', deltas: { rilassante: 2, olistico: 2, ayurvedico: 2, experience: 1 } },
        { q: 'pressure', a: 'deep', deltas: { 'deep-tissue': 4, 'hot-stones': 3, sciamanico: 1 } },

        // Q4 — time
        { q: 'time', a: '25', deltas: { break: 6 } },
        { q: 'time', a: '60', deltas: { rilassante: 2, kobido: 2, reiki: 2, 'deep-tissue': 1, olistico: 1, ayurvedico: 1 } },
        { q: 'time', a: '90', deltas: { experience: 3, 'hot-stones': 3, olistico: 2, 'deep-tissue': 2, sciamanico: 2 } },
        { q: 'time', a: 'flexible', deltas: { olistico: 1, experience: 1 } }, // slight boost, neutral overall

        // Q5 — goal (was Q6, now also drives experience/journey recommendations)
        { q: 'goal', a: 'relax', deltas: { rilassante: 5, ayurvedico: 2, 'hot-stones': 1 } },
        { q: 'goal', a: 'pain', deltas: { 'deep-tissue': 5, 'hot-stones': 3, ayurvedico: 2 } },
        { q: 'goal', a: 'explore', deltas: { reiki: 3, kobido: 3, ayurvedico: 2, sciamanico: 2 } },
        { q: 'goal', a: 'inner', deltas: { olistico: 3, experience: 4, sciamanico: 3, reiki: 2 } },
    ];

    // ── DOM state ───────────────────────────────────────────────────
    let step = 0; // 0 = intro, 1..6 = questions, 7 = results
    let answers = {};

    const el = (id) => document.getElementById(id);
    const $ = (sel, ctx) => (ctx || document).querySelector(sel);
    const $$ = (sel, ctx) => Array.from((ctx || document).querySelectorAll(sel));

    // Screens
    const screenIntro = el('quiz-intro');
    const screenQuestions = el('quiz-questions');
    const screenResults = el('quiz-results');
    const progressBar = el('quiz-progress-bar');
    const stepCurrent = el('quiz-step-current');
    const stepTotal = el('quiz-step-total');

    // Buttons
    const btnStart = el('quiz-start-btn');
    const btnNext = el('quiz-next');
    const btnBack = el('quiz-back');
    const btnRestart = el('quiz-restart');

    // Questions
    const questions = $$('.quiz-question');

    // Results
    const resultsTitle = el('quiz-results-title');
    const resultsIntro = el('quiz-results-intro');
    const resultsList = el('quiz-results-list');
    const whatsappBtn = el('quiz-whatsapp');

    // ── Init ────────────────────────────────────────────────────────
    function init() {
        if (!screenIntro) return; // quiz not on this page

        stepTotal.textContent = TOTAL_QUESTIONS;

        btnStart.addEventListener('click', startQuiz);
        btnNext.addEventListener('click', nextStep);
        btnBack.addEventListener('click', prevStep);
        btnRestart.addEventListener('click', restart);

        // Listen for answer changes to enable Next button
        screenQuestions.addEventListener('change', (e) => {
            if (e.target.matches('input[type="radio"]')) {
                btnNext.disabled = false;
            }
        });

        // Keyboard support: Enter = next
        screenQuestions.addEventListener('keydown', (e) => {
            if (e.key === 'Enter' && !btnNext.disabled) {
                e.preventDefault();
                nextStep();
            }
        });
    }

    // ── Navigation ──────────────────────────────────────────────────
    function startQuiz() {
        step = 1;
        screenIntro.classList.remove('is-active');
        screenQuestions.classList.add('is-active');
        showQuestion(1);
        updateProgress();
        // focus first question for accessibility
        const first = questions[0];
        if (first) {
            const firstRadio = first.querySelector('input[type="radio"]');
            if (firstRadio) firstRadio.focus();
        }
    }

    function showQuestion(n) {
        questions.forEach((q) => {
            if (parseInt(q.id.split('-')[1], 10) === n) {
                q.hidden = false;
            } else {
                q.hidden = true;
            }
        });
        btnBack.hidden = (n === 1);
        // Restore previous answer if any
        const qKey = questions.find((q) => parseInt(q.id.split('-')[1], 10) === n)?.dataset.question;
        const prevAnswer = qKey ? answers[qKey] : null;
        if (prevAnswer) {
            const radio = document.querySelector(`input[name="${qKey}"][value="${prevAnswer}"]`);
            if (radio) radio.checked = true;
            btnNext.disabled = false;
        } else {
            btnNext.disabled = true;
        }
    }

    function nextStep() {
        const q = questions[step - 1];
        if (!q) return;
        const key = q.dataset.question;
        const checked = q.querySelector('input[type="radio"]:checked');
        if (!checked) {
            btnNext.disabled = true;
            return;
        }
        answers[key] = checked.value;

        if (step < TOTAL_QUESTIONS) {
            step += 1;
            showQuestion(step);
            updateProgress();
            // scroll question into view if needed
            const cur = questions[step - 1];
            if (cur) cur.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
        } else {
            showResults();
        }
    }

    function prevStep() {
        if (step > 1) {
            step -= 1;
            showQuestion(step);
            updateProgress();
        }
    }

    function updateProgress() {
        const pct = (step / TOTAL_QUESTIONS) * 100;
        progressBar.style.width = pct + '%';
        stepCurrent.textContent = step;
    }

    // ── Scoring ──────────────────────────────────────────────────────
    // ── Recommendation logic ──────────────────────────────────────────
    // Q1-Q4 each vote one state (A/B/C/D/E/F). Majority wins; tie-break
    // by question order (Q1 most recent, Q4 least). Q5 picks the pressure
    // cell. The matrix RECOMMENDATIONS[state][pressure] returns the primary
    // treatment + 2 alternatives for that exact combination.
    function computeRecommendation() {
        const stateVotes = { A: 0, B: 0, C: 0, D: 0, E: 0, F: 0 };
        ['q1', 'q2', 'q3', 'q4'].forEach((key) => {
            const v = answers[key];
            if (v && stateVotes.hasOwnProperty(v.toUpperCase())) {
                stateVotes[v.toUpperCase()] += 1;
            }
        });
        // Pick the state with most votes. Tie-break: order A→F (alphabetical
        // matches the user's instruction order). If all 0 (no answers),
        // fall back to A as the default.
        let bestState = 'A';
        let bestScore = -1;
        ['A', 'B', 'C', 'D', 'E', 'F'].forEach((s) => {
            if (stateVotes[s] > bestScore) {
                bestScore = stateVotes[s];
                bestState = s;
            }
        });
        const pressure = answers.q5 || 'medium';
        const cell = RECOMMENDATIONS[bestState] && RECOMMENDATIONS[bestState][pressure]
            ? RECOMMENDATIONS[bestState][pressure]
            : RECOMMENDATIONS[bestState].medium;

        return {
            state: bestState,
            pressure: pressure,
            primaryId: cell.primary,
            alternativeIds: cell.alternatives
        };
    }

// ── Render results ───────────────────────────────────────────────
    function showResults() {
        // Hide question screen
        screenQuestions.classList.remove('is-active');
        screenQuestions.hidden = true;

        // Show results
        screenResults.hidden = false;
        screenResults.classList.add('is-active');

        // Progress to 100%
        progressBar.style.width = '100%';
        stepCurrent.textContent = TOTAL_QUESTIONS;

        const rec = computeRecommendation();
        const treatmentIds = [rec.primaryId, ...rec.alternativeIds];
        resultsIntro.textContent = t.resultsIntro(rec);

        resultsList.innerHTML = '';
        treatmentIds.forEach((tid, idx) => {
            const t2 = T_BY_ID[tid];
            if (!t2) return;
            const name = t2.name[lang] || t2.name.it;
            const tagline = t2.tagline[lang] || t2.tagline.it;
            const why = t2.whyReasons[lang] || t2.whyReasons.it;
            const price = t2.price[lang] || t2.price.it;
            const dur = t2.durationLabel[lang] || t2.durationLabel.it;

            const card = document.createElement('article');
            card.className = 'quiz-result-card' + (idx === 0 ? ' is-primary' : '');
            card.setAttribute('aria-label', `${idx === 0 ? t.goodMatch : t.goodMatchSecondary}: ${name}`);

            const badge = idx === 0
                ? `<span class="quiz-result-badge">${t.goodMatch}</span>`
                : `<span class="quiz-result-badge" style="background:var(--primary);">${t.goodMatchSecondary}</span>`;

            const reasons = why.map((r) => `<li>${r}</li>`).join('');
            const reasonsLabel = t.reasonsLabel;

            const href = `https://wa.me/${WA_NUMBER}?text=${encodeURIComponent(t.whatsappMessage(name))}`;

            card.innerHTML = `
                ${badge}
                <h3 class="quiz-result-name">${name}</h3>
                <p class="quiz-result-tagline">${tagline}</p>
                <div class="quiz-result-meta">
                    <span class="quiz-result-meta-item">⏱ ${t.timeShort}: <strong>${dur}</strong></span>
                    <span class="quiz-result-meta-item">💎 ${t.budgetShort}: <strong>${price}</strong></span>
                </div>
                <details>
                    <summary style="cursor:pointer; color:var(--primary); font-weight:600; font-size:0.92rem; margin-bottom:0.5rem;">${reasonsLabel}</summary>
                    <ul style="margin: 0.5rem 0 1rem 1rem; color: var(--text-light); font-size: 0.9rem; line-height: 1.6;">${reasons}</ul>
                </details>
                <a href="${href}" class="quiz-result-cta" target="_blank" rel="noopener noreferrer" aria-label="${t.whatsappLabel} ${name}">
                    <i class="fa-brands fa-whatsapp" aria-hidden="true"></i>
                    ${t.whatsappLabel}
                </a>
                <a href="https://studiokarishma.it${localizePage(t2.page)}" class="quiz-result-link">${t.learnMoreLabel}</a>
            `;
            resultsList.appendChild(card);
        });

        // Update generic WhatsApp button (uses primary treatment)
        const primaryT = T_BY_ID[rec.primaryId];
        if (primaryT) {
            const primaryName = primaryT.name[lang] || primaryT.name.it;
            whatsappBtn.href = `https://wa.me/${WA_NUMBER}?text=${encodeURIComponent(t.whatsappMessage(primaryName))}`;
        }

        // Scroll to results
        screenResults.scrollIntoView({ behavior: 'smooth', block: 'start' });
    }

    function restart() {
        answers = {};
        step = 0;
        // Reset radios
        $$('input[type="radio"]', screenQuestions).forEach((r) => { r.checked = false; });
        // Reset UI
        screenResults.classList.remove('is-active');
        screenResults.hidden = true;
        screenQuestions.classList.add('is-active');
        screenQuestions.hidden = false;
        // Show intro again
        screenIntro.classList.add('is-active');
        step = 0;
        progressBar.style.width = '0%';
        stepCurrent.textContent = '1';
        // Hide all questions (we'll show #1 again on start)
        questions.forEach((q) => { q.hidden = true; });
        btnNext.disabled = true;
        btnBack.hidden = true;
        // Scroll back
        screenIntro.scrollIntoView({ behavior: 'smooth', block: 'start' });
    }

    // ── Boot ─────────────────────────────────────────────────────────
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }
})();
