{
  "version": 3,
  "sources": ["/cdn/shop/t/41/assets/productzoeker.js?view=zoeker"],
  "sourcesContent": ["/*!\n * Productzoeker \u2013 Islamboekhandel.nl\n * Stap-voor-stap productkeuzehulp. Vraagt eerst het producttype en stelt\n * daarna vragen die bij dat type horen (parfum, boeken & Koran, kleding, verzorging, cadeau, ...).\n * Producten komen live uit de winkel via collections/<handle>?view=zoeker.\n */\n(function () {\n  'use strict';\n\n  /* ------------------------------------------------------------------ */\n  /*  1. Vragen per producttype                                          */\n  /* ------------------------------------------------------------------ */\n\n  // Herbruikbare geurrichtingen (parfum + huisgeur)\n  var SCENTS = [\n    { id: 'zoet', icon: '\uD83C\uDF6F', label: 'Zoet & warm', sub: 'Vanille, karamel, chocolade', fam: ['gourmand'], kw: ['vanille', 'vanilla', 'karamel', 'caramel', 'chocola', 'choco', 'honing', 'zoet', 'praline'] },\n    { id: 'bloemig', icon: '\uD83C\uDF39', label: 'Bloemig', sub: 'Roos, jasmijn, witte bloemen', fam: ['bloemig'], kw: ['roos', 'rose', 'jasmijn', 'jasmine', 'bloem', 'flower', 'ward', 'oranjebloesem'] },\n    { id: 'oud', icon: '\uD83E\uDEB5', label: 'Oud, amber & oosters', sub: 'Rijk, warm en Arabisch', fam: ['oosters', 'balsamico'], kw: ['oud', 'oudh', 'amber', 'saffraan', 'saffron', 'dehn', 'oriental', 'agarwood'] },\n    { id: 'houtig', icon: '\uD83C\uDF32', label: 'Houtig', sub: 'Sandelhout, ceder, leer', fam: ['houtig'], kw: ['sandelhout', 'sandal', 'ceder', 'cedar', 'hout', 'wood', 'vetiver', 'leather'] },\n    { id: 'fris', icon: '\uD83C\uDF4B', label: 'Fris & citrus', sub: 'Licht, schoon en fris', fam: ['fris', 'citrus', 'aquatisch', 'aromatisch'], kw: ['citroen', 'lemon', 'bergamot', 'fris', 'fresh', 'aqua', 'zee', 'munt', 'mint', 'citrus'] },\n    { id: 'musk', icon: '\uD83E\uDD0D', label: 'Zachte musk', sub: 'Schoon, poederig, huidgeur', fam: ['muskusachtig'], kw: ['musk', 'musc', 'muskus', 'tahara', 'poeder', 'powder', 'white musk'] },\n    { id: 'fruitig', icon: '\uD83C\uDF53', label: 'Fruitig', sub: 'Aardbei, peer, framboos', fam: ['fruitig'], kw: ['aardbei', 'strawberry', 'peer', 'pear', 'framboos', 'appel', 'apple', 'fruit', 'perzik', 'kers', 'cherry'] },\n    { id: 'kruidig', icon: '\uD83C\uDF36\uFE0F', label: 'Kruidig', sub: 'Kaneel, peper, kardemom', fam: ['kruidig', 'pittig'], kw: ['kaneel', 'cinnamon', 'peper', 'pepper', 'kardemom', 'kruid', 'spice'] },\n    { id: 'verras', icon: '\u2728', label: 'Verras me', sub: 'Laat de bestsellers zien', none: true }\n  ];\n\n  function budgetStep(ranges, extra) {\n    var opts = ranges.map(function (r) {\n      var label = r[0] === 0 ? 'Tot \u20AC' + r[1] : (r[1] >= 9999 ? 'Vanaf \u20AC' + r[0] : '\u20AC' + r[0] + ' \u2013 \u20AC' + r[1]);\n      return { id: r[0] + '-' + r[1], label: label, budget: [r[0], r[1]], icon: r[2] || '\uD83D\uDCB6' };\n    });\n    opts.push({ id: 'geen', label: 'Maakt niet uit', icon: '\uD83E\uDD37', none: true });\n    return Object.assign({ id: 'budget', q: 'Wat is je budget?', hint: 'Per product, ongeveer.', options: opts }, extra || {});\n  }\n\n  var PERFUME_TYPES = ['Eau de Parfum', 'Eau de Toilette', 'Parfum', 'Aquaparfum', 'Extrait de Parfum'];\n\n  var FLOWS = [\n    {\n      id: 'parfum', icon: '\uD83C\uDF38', label: 'Parfum', sub: 'Spray, parfumolie & samples',\n      sources: ['parfum'],\n      more: function (a) { return a.vorm === 'olie' ? 'parfumolie' : a.vorm === 'spray' ? 'parfumspray' : a.vorm === 'proberen' ? 'samplesets' : 'parfum'; },\n      steps: [\n        { id: 'voor', q: 'Voor wie is de geur?', options: [\n          { id: 'haar', icon: '\uD83D\uDC69', label: 'Voor haar', gender: 'f' },\n          { id: 'hem', icon: '\uD83D\uDC68', label: 'Voor hem', gender: 'm' },\n          { id: 'unisex', icon: '\uD83E\uDDD1\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1', label: 'Unisex', sub: 'Voor iedereen', gender: 'u' },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        { id: 'vorm', q: 'Welke vorm heeft je voorkeur?', options: [\n          { id: 'spray', icon: '\uD83D\uDCA8', label: 'Parfumspray', sub: 'Eau de parfum, flinke fles', types: PERFUME_TYPES },\n          { id: 'olie', icon: '\uD83D\uDCA7', label: 'Parfumolie', sub: 'Alcoholvrij, handig rollerflesje', types: ['Parfumolie', 'Pure Geurolie'] },\n          { id: 'proberen', icon: '\uD83E\uDDEA', label: 'Eerst proberen', sub: 'Samplesets & mystery boxen', types: ['Sampleset', 'Bundelparfum', 'Mystery Box', 'Parfumset'] },\n          { id: 'body', icon: '\uD83E\uDDF4', label: 'Body mist & deo', sub: 'Lichte geur voor overdag', types: ['Body Mist', 'Deodorant', 'Body Lotion'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Geen voorkeur', none: true }\n        ] },\n        { id: 'geur', q: 'Welke geuren vind je lekker?', hint: 'Kies er maximaal twee.', multi: 2, must: true, options: SCENTS },\n        { id: 'moment', q: 'Wanneer wil je hem vooral dragen?', options: [\n          { id: 'dag', icon: '\u2600\uFE0F', label: 'Elke dag', sub: 'Werk, school, boodschappen', occ: ['elke dag', 'casual'] },\n          { id: 'speciaal', icon: '\uD83C\uDF19', label: 'Speciale momenten', sub: 'Eid, bruiloft, avond', occ: ['speciale gelegenheid', 'formal'], kw: ['intense', 'elixir', 'extrait', 'oud', 'royal', 'prive'] },\n          { id: 'cadeau', icon: '\uD83C\uDF81', label: 'Als cadeau', sub: 'Mooi verpakt geven', tags: ['cadeau', 'topcadeau', 'eid cadeau'], kw: ['set', 'cadeau', 'gift'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        budgetStep([[0, 10, '\uD83E\uDE99'], [10, 25], [25, 45], [45, 9999, '\uD83D\uDC8E']])\n      ]\n    },\n    {\n      id: 'boeken', icon: '\uD83D\uDCDA', label: 'Boeken & Koran', sub: 'Boeken, kinderboeken en Koranuitgaven',\n      sources: function (a) { return a.voor === 'koran' ? ['koran-quran'] : a.voor === 'kind' ? ['islamitische-kinderboeken'] : ['islamitische-boeken']; },\n      more: function (a) {\n        if (a.voor === 'koran') return a.doel === 'leren' ? 'koran-tajweed' : a.doel === 'arabisch' ? 'koran-arabisch' : a.doel === 'uitleg' ? 'tafsir' : 'koran-quran';\n        if (a.voor === 'kind') return 'islamitische-kinderboeken';\n        if (a.taal === 'en') return 'engelse-boeken';\n        if (a.taal === 'ar') return 'arabische-boeken';\n        return a.niveau === 'nieuw' ? 'beginners-basis-islam' : 'islamitische-boeken';\n      },\n      steps: [\n        { id: 'voor', q: 'Wat zoek je?', options: [\n          { id: 'zelf', icon: '\uD83E\uDDD4', label: 'Boek voor volwassenen', sub: 'Voor mezelf of een ander', age: 'volw', excludeTypes: ['Kinderboek', 'Koran', 'Koranhouder', 'Boekenlegger'] },\n          { id: 'tiener', icon: '\uD83E\uDDD1\u200D\uD83C\uDF93', label: 'Boek voor tieners', sub: '12 \u2013 18 jaar', age: 'tiener', excludeTypes: ['Koran', 'Koranhouder', 'Boekenlegger'] },\n          { id: 'kind', icon: '\uD83E\uDDD2', label: 'Kinderboek', sub: '0 \u2013 12 jaar', excludeTypes: ['Koran', 'Koranhouder', 'Boekenlegger'] },\n          { id: 'koran', icon: '\uD83D\uDCD6', label: 'Een Koran', sub: 'Arabisch, vertaald of tajweed', types: ['Koran', 'Arabische Boek', 'Boek', 'Kinderboek', 'Engelse Boek'] }\n        ] },\n        { id: 'leeftijd', q: 'Hoe oud is het kind?', when: { voor: ['kind'] }, options: [\n          { id: 'baby', icon: '\uD83D\uDC76', label: '0 \u2013 3 jaar', sub: 'Baby & peuter', age: 'baby', cols: ['baby-peuterboeken'] },\n          { id: 'kleuter', icon: '\uD83E\uDDF8', label: '3 \u2013 6 jaar', sub: 'Kleuter', age: 'kleuter' },\n          { id: 'kind6', icon: '\uD83C\uDF92', label: '6 \u2013 9 jaar', sub: 'Groep 3 \u2013 5', age: 'kind6' },\n          { id: 'kind9', icon: '\uD83D\uDCD6', label: '9 \u2013 12 jaar', sub: 'Groep 6 \u2013 8', age: 'kind9' }\n        ] },\n        { id: 'soort', q: 'Wat voor boek zoek je?', hint: 'Kies er maximaal twee.', multi: 2, must: true, when: { voor: ['kind'] }, options: [\n          { id: 'verhalen', icon: '\uD83C\uDF19', label: 'Voorleesverhalen', sub: 'Mooie islamitische verhalen', cols: ['kinderverhalen'], kw: ['verhaal', 'verhalen', 'story', 'stories'] },\n          { id: 'profeten', icon: '\uD83D\uDD4B', label: 'Koran & profeten', sub: 'Verhalen uit de Koran', cols: ['verhalen-koran'], kw: ['profeet', 'profeten', 'prophet', 'koran', 'quran'] },\n          { id: 'leren', icon: '\uD83D\uDCA1', label: 'Leren & weetjes', sub: 'Educatief, Arabisch, dua', cols: ['educatieve-kinderboeken', 'arabisch-leren'], kw: ['leren', 'mijn eerste', 'weetjes', 'alfabet', 'dua', 'woorden'] },\n          { id: 'doen', icon: '\u270F\uFE0F', label: 'Doe-, kleur- & werkboek', sub: 'Lekker zelf bezig', cols: ['werk-speelboek', 'kleur-knutselboeken'], kw: ['kleur', 'activiteit', 'werkboek', 'doeboek', 'sticker', 'puzzel'] },\n          { id: 'ramadan', icon: '\uD83C\uDFEE', label: 'Ramadan & Eid', sub: 'Voor de mooiste maand', cols: ['ramadan-boeken', 'ramadan-werkboek-kalender'], kw: ['ramadan', 'eid', 'suikerfeest'] }\n        ] },\n        { id: 'niveau', q: 'Hoeveel weet je al over de islam?', when: { voor: ['zelf', 'tiener'] }, options: [\n          { id: 'nieuw', icon: '\uD83C\uDF31', label: 'Ik begin net', sub: 'Of ik zoek iets voor een nieuwe moslim', cols: ['beginners-basis-islam', 'introductie-tot-islam-beginners', 'top-10-boek-beginners'], kw: ['beginners', 'introductie', 'basis'] },\n          { id: 'basis', icon: '\uD83D\uDCD8', label: 'Ik heb basiskennis', sub: 'Ik wil verder leren', cols: ['basis-islam', 'top-25-boeken'] },\n          { id: 'verdieping', icon: '\uD83C\uDF93', label: 'Ik wil me verdiepen', sub: 'Uitgebreide, verdiepende werken', cols: ['aqiedah-tawheed', 'fiqh-islamitische-recht', 'tafsir', 'biografie-sirah-geschiedenis'], nkw: ['beginners', 'voor kinderen'] }\n        ] },\n        { id: 'onderwerp', q: 'Over welk onderwerp?', hint: 'Kies er maximaal twee.', multi: 2, must: true, when: { voor: ['zelf', 'tiener'] }, options: [\n          { id: 'basis', icon: '\uD83D\uDD4C', label: 'Basis van de islam', sub: 'Pilaren, geloof, praktijk', cols: ['beginners-basis-islam', 'basis-islam', 'introductie-tot-islam-beginners'] },\n          { id: 'profeet', icon: '\uD83C\uDF34', label: 'Profeet & geschiedenis', sub: 'Sirah, metgezellen, biografie', cols: ['mohammed-vzmh', 'biografie-sirah-geschiedenis', 'biografie-geschiedenis'], kw: ['profeet', 'sirah', 'metgezellen', 'sahaba'] },\n          { id: 'gebed', icon: '\uD83E\uDD32', label: 'Gebed, dua & Ramadan', sub: 'Salat, smeekbeden, vasten, hadj', cols: ['gebed-salat', 'smeekgebed-dua', 'ramadan-boeken', 'hadj-umrah'], kw: ['gebed', 'salat', 'dua', \"doe'a\", 'hisnul', 'ramadan', 'hadj', 'umrah'] },\n          { id: 'geloof', icon: '\u2728', label: 'Geloofsleer', sub: 'Aqiedah, tawhied, hiernamaals', cols: ['aqiedah-tawheed', 'dood-hiernamaals', 'djinn-duivels-engelen'] },\n          { id: 'gezin', icon: '\uD83C\uDFE1', label: 'Huwelijk & opvoeding', sub: 'Gezin, kinderen, de moslimvrouw', cols: ['gezin-huwelijk-opvoeding', 'huwelijk', 'geboorte-opvoeding-islam', 'moslimvrouw'] },\n          { id: 'groei', icon: '\uD83C\uDF3F', label: 'Karakter & persoonlijke groei', sub: 'Akhlaaq, berouw, het hart', cols: ['persoonlijke-groei-zelfhulpboeken', 'akhlaaq-gebruiken-gewoontes-islam', 'zonden-berouw', 'ziekte-genezing'] },\n          { id: 'koran', icon: '\uD83D\uDCD6', label: 'Koranuitleg', sub: 'Tafsir en Koranverhalen', cols: ['tafsir', 'verhalen-koran'] },\n          { id: 'arabisch', icon: '\u0639', label: 'Arabisch leren', sub: 'Lesboeken en woordenboeken', cols: ['arabisch-leren'], kw: ['arabisch', 'arabic', 'madinah'] }\n        ] },\n        { id: 'taal', q: 'In welke taal?', when: { voor: ['zelf', 'tiener', 'kind'] }, options: [\n          { id: 'nl', icon: '\uD83C\uDDF3\uD83C\uDDF1', label: 'Nederlands', lang: ['Nederlands', 'Nederlands - Arabisch'] },\n          { id: 'en', icon: '\uD83C\uDDEC\uD83C\uDDE7', label: 'Engels', lang: ['Engels', 'Engels - Arabisch'], cols: ['engelse-boeken'] },\n          { id: 'ar', icon: '\uD83C\uDF19', label: 'Arabisch', lang: ['Arabisch', 'Nederlands - Arabisch', 'Engels - Arabisch'], cols: ['arabische-boeken'] },\n          { id: 'tweetalig', icon: '\uD83D\uDD01', label: 'Tweetalig', sub: 'Met Arabische tekst erbij', lang: ['Nederlands - Arabisch', 'Engels - Arabisch'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        { id: 'doel', q: 'Waarvoor zoek je een Koran?', must: true, when: { voor: ['koran'] }, options: [\n          { id: 'arabisch', icon: '\uD83D\uDD4C', label: 'Lezen in het Arabisch', sub: 'Mushaf zonder vertaling', cols: ['koran-arabisch'], lang: ['Arabisch'], nkw: ['vertaling', 'translation', 'transliteratie', 'fonetisch'] },\n          { id: 'begrijpen', icon: '\uD83D\uDCAC', label: 'Begrijpen', sub: 'Arabisch met vertaling', kw: ['vertaling', 'translation', 'nederlands', 'english', 'clear quran', 'betekenis'] },\n          { id: 'leren', icon: '\uD83C\uDF93', label: 'Leren lezen', sub: 'Tajweed of fonetisch (transliteratie)', cols: ['koran-tajweed', 'koran-nederlandstransliteratie'], kw: ['tajweed', 'fonetisch', 'transliteratie', 'transliteration'] },\n          { id: 'uitleg', icon: '\uD83D\uDD0E', label: 'Uitleg (tafsir)', sub: 'Wat betekenen de verzen?', cols: ['tafsir'], kw: ['tafsir', 'uitleg', 'ibn kathir'] },\n          { id: 'kind', icon: '\uD83E\uDDD2', label: 'Voor een kind', sub: 'Djoez Amma & kinderkoran', cols: ['djoez-amma'], kw: ['djoez', 'juz', 'amma', 'kind', 'kids'] }\n        ] },\n        { id: 'ktaal', q: 'Welke vertaling wil je erbij?', when: { voor: ['koran'], doel: ['begrijpen', 'leren', 'uitleg', 'kind'] }, options: [\n          { id: 'nl', icon: '\uD83C\uDDF3\uD83C\uDDF1', label: 'Nederlands', lang: ['Nederlands', 'Nederlands - Arabisch'], kw: ['nederlands'] },\n          { id: 'en', icon: '\uD83C\uDDEC\uD83C\uDDE7', label: 'Engels', lang: ['Engels', 'Engels - Arabisch'], kw: ['english', 'engels'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        { id: 'formaat', q: 'Welk formaat?', must: true, when: { voor: ['koran'] }, options: [\n          { id: 'pocket', icon: '\uD83D\uDC5C', label: 'Klein / pocket', sub: 'Handig voor onderweg', kw: ['pocket', 'mini', 'klein', 'small', '9x12', '10x14', '8x12', 'reis'] },\n          { id: 'normaal', icon: '\uD83D\uDCD7', label: 'Normaal', sub: 'Voor dagelijks gebruik thuis', kw: ['medium', '14x20', '17x24', '15x21', 'a5'], nkw: ['pocket', 'mini', 'klein', 'groot', 'large', 'xl'], hitIfNot: true },\n          { id: 'groot', icon: '\uD83D\uDCD5', label: 'Groot', sub: 'Groot, goed leesbaar schrift', kw: ['groot', 'large', 'big', '20x28', '24x34', '25x35', 'xl'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Geen voorkeur', none: true }\n        ] },\n        { id: 'stijl', q: 'Hoe mag hij eruitzien?', when: { voor: ['koran'] }, options: [\n          { id: 'praktisch', icon: '\uD83D\uDCD8', label: 'Eenvoudig & praktisch', sub: 'Om veel in te lezen' },\n          { id: 'luxe', icon: '\uD83C\uDF81', label: 'Luxe / als cadeau', sub: 'Leren of fluwelen kaft, mooi verpakt', kw: ['leer', 'leren', 'fluweel', 'velvet', 'goud', 'gold', 'cadeau', 'box', 'luxe', 'regenboog', 'rainbow'], kaft: ['Thermoleer', 'Fluweel'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        budgetStep([[0, 10, '\uD83E\uDE99'], [10, 20], [20, 35], [35, 9999, '\uD83D\uDC8E']], { when: { voor: ['zelf', 'tiener', 'kind'] } }),\n        budgetStep([[0, 15, '\uD83E\uDE99'], [15, 30], [30, 50], [50, 9999, '\uD83D\uDC8E']], { id: 'kbudget', when: { voor: ['koran'] } })\n      ]\n    },\n    {\n      id: 'kleding', icon: '\uD83E\uDDD5', label: 'Kleding', sub: 'Abaya, hijab, heren & kinderen',\n      sources: function (a) {\n        if (a.voor !== 'hadj') return ['kleding', 'ihram'];\n        return a.hadjwat === 'hvrouw' ? ['kleding', 'gebedskleding'] : ['ihram', 'hadj-umrah'];\n      },\n      more: function (a) {\n        if (a.voor === 'hadj') return a.hadjwat === 'hvrouw' ? 'kleding' : 'ihram';\n        return a.wat === 'gebed' ? 'gebedskleding' : 'kleding';\n      },\n      steps: [\n        { id: 'voor', q: 'Voor wie is de kleding?', must: true, options: [\n          { id: 'vrouw', icon: '\uD83D\uDC69', label: 'Een vrouw', gender: 'f', excludeTypes: ['Kinderkleding', 'Kinderhoofddoek', 'Herenkleding', 'Kapje', 'ihraam'] },\n          { id: 'man', icon: '\uD83D\uDC68', label: 'Een man', sub: 'Qamis, thobe, ihram', gender: 'm', types: ['Herenkleding', 'ihraam', 'Kapje', 'Gebedskleding'] },\n          { id: 'kind', icon: '\uD83E\uDDD2', label: 'Een kind', sub: 'Meisjes en jongens', age: 'kind', types: ['Kinderkleding', 'Kinderhoofddoek', 'Hoofddoek', 'Kleding', 'Abaya', 'Abaya Set', 'Abaya & Khimarset'], kw: ['kind', 'kinder', 'kinderen', 'kids', 'binti', 'baby', 'meisje', 'jongen', 'junior'] },\n          { id: 'hadj', icon: '\uD83D\uDD4B', label: 'Hadj & Umrah', sub: 'Ihram, ihramriem en kleding voor onderweg' }\n        ] },\n        { id: 'hadjwat', q: 'Wat zoek je voor Hadj of Umrah?', must: true, when: { voor: ['hadj'] }, options: [\n          { id: 'hman', icon: '\uD83D\uDC68', label: 'Ihram voor mannen', sub: 'Ihram-set van katoen of bamboe', types: ['ihraam', 'Hadj Artikelen'], kw: ['ihram', 'ihraam'], xkw: ['kinderen', 'kind', 'riem', 'opbergriem', 'nektasje', 'ballonnen', 'ballon'] },\n          { id: 'hkind', icon: '\uD83E\uDDD2', label: 'Ihram voor kinderen', sub: 'Ihram-set voor jongens', types: ['ihraam', 'Hadj Artikelen'], kw: ['kinderen', 'kids'], rkw: ['kinderen', 'kids'] },\n          { id: 'hvrouw', icon: '\uD83E\uDDD5', label: 'Voor een vrouw', sub: 'Abaya, gebedskleding en hijab voor onderweg', gender: 'f', types: ['Abaya', 'Abaya Set', 'Abaya & Khimarset', 'Gebedskleding', 'Khimaar', 'Hoofddoek'], xkw: ['kinderen', 'kinder', 'meisjes', 'meisje', 'kids', 'baby', 'peuter'] },\n          { id: 'hriem', icon: '\uD83E\uDDF3', label: 'Ihramriem & accessoires', sub: 'Opbergriem, ihram-riem en nektasje', types: ['Hadj Artikelen'], kw: ['riem', 'opbergriem', 'nektasje', 'gesp'], rkw: ['riem', 'opbergriem', 'nektasje', 'gesp', 'gordel'] }\n        ] },\n        { id: 'wat', q: 'Wat zoek je?', must: true, when: { voor: ['vrouw'] }, options: [\n          { id: 'abaya', icon: '\uD83E\uDDD5', label: 'Abaya & kaftan', sub: 'Abaya, abaya-set of khimarset', types: ['Abaya', 'Abaya Set', 'Abaya & Khimarset'] },\n          { id: 'jurk', icon: '\uD83D\uDC55', label: 'Jurken & setjes', sub: 'Jurk, ensemble, twinset, broekpak', types: ['Kleding', 'Twinset'], kw: ['jurk', 'ensemble', 'twinset', 'broekpak', 'rok', 'dress', 'blouse', 'set'], nkw: ['gebedskleding', 'baby'] },\n          { id: 'jas', icon: '\u2601\uFE0F', label: 'Jassen & winterkleding', sub: 'Jas, parka, poncho, vest', types: ['Kleding', 'Twinset'], kw: ['jas', 'jasje', 'parka', 'poncho', 'blazer', 'vest', 'spencer', 'winter', 'gewatteerd'] },\n          { id: 'hijab', icon: '\uD83E\uDDD5', label: 'Hijab & khimaar', sub: 'Hoofddoek, instant hijab, khimaar', types: ['Hoofddoek', 'Khimaar'] },\n          { id: 'gebed', icon: '\uD83E\uDD32', label: 'Gebedskleding', sub: 'Gebedsjurk en gebedsset', types: ['Gebedskleding', 'Kleding'], kw: ['gebedskleding', 'gebedsjurk', 'isdal', 'gebed'], cols: ['gebedskleding'] },\n          { id: 'zwem', icon: '\u2600\uFE0F', label: 'Burkini', sub: 'Zwemkleding voor strand en zwembad', types: ['Burkini'] }\n        ] },\n        { id: 'stijl', q: 'Welke stijl past bij je?', when: { voor: ['vrouw', 'kind'] }, options: [\n          { id: 'dagelijks', icon: '\u2600\uFE0F', label: 'Dagelijks & praktisch', sub: 'Comfortabel, makkelijk te combineren', kw: ['basic', 'katoen', 'jersey', 'dagelijks', 'casual', 'comfort', 'praktisch', 'soft'] },\n          { id: 'feest', icon: '\u2728', label: 'Feestelijk & elegant', sub: 'Voor Eid, een bruiloft of een mooie avond', kw: ['satijn', 'feest', 'elegant', 'kant', 'luxe', 'glans', 'pailletten', 'fluweel', 'velvet', 'chiffon', 'jawhara'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        budgetStep([[0, 25, '\uD83E\uDE99'], [25, 45], [45, 65], [65, 9999, '\uD83D\uDC8E']])\n      ]\n    },\n    {\n      id: 'verzorging', icon: '\uD83E\uDDF4', label: 'Verzorging', sub: 'Huid, haar, hamam & natuurlijke oli\u00EBn',\n      sources: function (a) {\n        return { lichaam: ['verzorgingsproducten', 'hamam'], haar: ['haarolie', 'verzorgingsproducten'], deo: ['deodorant'], hamam: ['hamam', 'verzorgingsproducten'], olie: ['etherische-olie', 'massage-olie', 'basis-olie'], henna: ['henna'], siwak: ['siwak', 'verzorgingsproducten'] }[a.wat] || ['verzorgingsproducten'];\n      },\n      more: function (a) { return { lichaam: 'verzorgingsproducten', haar: 'haarolie', deo: 'deodorant', hamam: 'hamam', olie: 'etherische-olie', henna: 'henna', siwak: 'siwak' }[a.wat] || 'verzorgingsproducten'; },\n      steps: [\n        { id: 'wat', q: 'Waar zoek je verzorging voor?', must: true, options: [\n          { id: 'lichaam', icon: '\uD83E\uDDF4', label: 'Lichaam & huid', sub: 'Bodylotion, zeep, bad & douche', types: ['Body Lotion', 'Verzorging', 'Bad&Douche'], kw: ['bodylotion', 'lotion', 'zeep', 'soap', 'douche', 'bad', 'cr\u00E8me', 'creme', 'boter', 'butter'], nkw: ['shampoo', 'conditioner', 'haarmasker', 'tandpasta', 'siwak'] },\n          { id: 'haar', icon: '\uD83D\uDCA7', label: 'Haar & baard', sub: 'Haarolie, shampoo, conditioner', types: ['Haarolie', 'Verzorging'], kw: ['haar', 'shampoo', 'conditioner', 'haarmasker', 'baard', 'hair'], cols: ['haarolie'] },\n          { id: 'deo', icon: '\uD83D\uDCA8', label: 'Deodorant', sub: 'Spray en roller', types: ['Deodorant'] },\n          { id: 'hamam', icon: '\u2728', label: 'Hamam & scrub', sub: 'Scrub, kessa, zwarte zeep', types: ['Hamam', 'Verzorging', 'Bad&Douche'], kw: ['hamam', 'scrub', 'kessa', 'peeling', 'zwarte zeep', 'badzout'], cols: ['hamam'] },\n          { id: 'olie', icon: '\uD83C\uDF3F', label: 'Natuurlijke oli\u00EBn', sub: 'Etherische, massage- en basisolie', types: ['Etherische Olie', 'Massage Olie', 'Basisolie'] },\n          { id: 'henna', icon: '\uD83D\uDD8D\uFE0F', label: 'Henna', sub: 'Henna, kegels en poeder', types: ['Henna'] },\n          { id: 'siwak', icon: '\uD83C\uDF31', label: 'Siwak & mondverzorging', sub: 'Siwak en tandpasta', types: ['Siwak', 'Verzorging'], kw: ['siwak', 'siwaak', 'miswak', 'tandpasta', 'tand'], cols: ['siwak'] }\n        ] },\n        { id: 'wens', q: 'Waar let je op?', hint: 'Kies er maximaal twee.', multi: 2, options: [\n          { id: 'natuur', icon: '\uD83C\uDF3F', label: 'Natuurlijk & plantaardig', sub: 'Zoals argan, amandel, kokos of zwarte zaad', kw: ['natuurlijk', 'natural', 'organic', 'bio', 'plantaardig', 'vegan', 'argan', 'zwarte zaad', 'black seed', 'kokos', 'amandel', 'olijf', 'aloe', 'shea'] },\n          { id: 'alcoholvrij', icon: '\uD83D\uDCA7', label: 'Alcoholvrij', sub: 'Als dat in de naam of omschrijving staat', kw: ['alcoholvrij', 'alcohol free', 'alcohol-free'] },\n          { id: 'geur', icon: '\uD83C\uDF38', label: 'Lekkere geur', sub: 'Musk, oud, roos, vanille', kw: ['musk', 'oud', 'vanille', 'roos', 'rose', 'jasmijn', 'amber', 'bloem', 'geur'] },\n          { id: 'cadeau', icon: '\uD83C\uDF81', label: 'Mooi om te geven', kw: ['cadeau', 'set', 'box', 'gift', 'geschenk'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        budgetStep([[0, 7, '\uD83E\uDE99'], [7, 15], [15, 30], [30, 9999, '\uD83D\uDC8E']])\n      ]\n    },\n    {\n      id: 'cadeau', icon: '\uD83C\uDF81', label: 'Een cadeau', sub: 'Voor Eid, geboorte, huwelijk\u2026',\n      sources: function (a) {\n        var extra = { geur: 'parfum', boek: 'top-25-boeken', gebed: 'gebed-dhikr-producten', deco: 'decoratie' }[a.soort];\n        var s = ['cadeau', 'cadeaupakket'];\n        if (a.voor === 'kind') s.push('speelgoed-spellen');\n        if (extra) s.push(extra);\n        return s;\n      },\n      tip: { text: 'Tip: maak het af met mooie cadeauverpakking.', handle: 'cadeauverpakking', label: 'Bekijk cadeauverpakking' },\n      more: function () { return 'cadeau'; },\n      steps: [\n        { id: 'voor', q: 'Voor wie is het cadeau?', options: [\n          { id: 'vrouw', icon: '\uD83D\uDC69', label: 'Een vrouw', sub: 'Moeder, zus, vriendin', gender: 'f' },\n          { id: 'man', icon: '\uD83D\uDC68', label: 'Een man', sub: 'Vader, broer, vriend', gender: 'm' },\n          { id: 'kind', icon: '\uD83E\uDDD2', label: 'Een kind', age: 'kind', cols: ['speelgoed-spellen', 'islamitische-kinderboeken', 'poppen-knuffels'], types: ['Kinderboek', 'Spel & Speelgoed', 'Spel', 'Poppen & Knuffels', 'Kinderkleding', 'Schoolspullen', 'Kinderhoofddoek', 'Cadeauset', 'Mystery Box'] },\n          { id: 'stel', icon: '\uD83D\uDC91', label: 'Een stel of gezin', kw: ['koppel', 'hem en haar', 'samen', 'gezin', 'huis', 'set'] }\n        ] },\n        { id: 'moment', q: 'Wat is de gelegenheid?', options: [\n          { id: 'eid', icon: '\uD83C\uDF19', label: 'Eid', cols: ['top25-eid-cadeaus', 'eid-decoratie'], tags: ['eid cadeau', 'eid cadeaus', 'eidmubarak'], kw: ['eid'] },\n          { id: 'ramadan', icon: '\uD83C\uDFEE', label: 'Ramadan', cols: ['ramadan-producten', 'top-25-ramadan-boeken-en-producten'], kw: ['ramadan'] },\n          { id: 'geboorte', icon: '\uD83D\uDC76', label: 'Geboorte', kw: ['baby', 'geboorte', 'aqiqah', 'newborn', 'kraam'] },\n          { id: 'huwelijk', icon: '\uD83D\uDC8D', label: 'Huwelijk', cols: ['huwelijk'], kw: ['huwelijk', 'bruid', 'nikah', 'koppel', 'hem en haar', 'wedding'] },\n          { id: 'hadj', icon: '\uD83D\uDD4B', label: 'Hadj of Umrah', cols: ['hadj-umrah'], kw: ['hadj', 'hajj', 'umrah', 'zamzam', 'mekka', 'makkah'] },\n          { id: 'nieuw', icon: '\uD83C\uDF31', label: 'Nieuwe moslim', sub: 'Bekering / shahada', cols: ['beginners-basis-islam', 'introductie-tot-islam-beginners'], kw: ['beginners', 'nieuwe moslim', 'shahada', 'starterspakket'] },\n          { id: 'zomaar', icon: '\uD83D\uDC9B', label: 'Zomaar', sub: 'Of een verjaardag', none: true }\n        ] },\n        { id: 'soort', q: 'Waar denk je aan?', options: [\n          { id: 'geur', icon: '\uD83C\uDF38', label: 'Geur & verzorging', types: PERFUME_TYPES.concat(['Parfumolie', 'Parfumset', 'Cadeauset', 'Body Mist', 'Bakhour', 'Wierook & Bakhour', 'Verzorging']), cols: ['parfum'] },\n          { id: 'boek', icon: '\uD83D\uDCDA', label: 'Een boek of Koran', types: ['Boek', 'Koran', 'Kinderboek', 'Engelse Boek', 'Arabische Boek', 'Voordeelbundel Boeken', 'Cadeauset'] },\n          { id: 'gebed', icon: '\uD83D\uDCFF', label: 'Gebed & dhikr', sub: 'Tasbih, gebedskleed', types: ['Tasbeeh', 'Gebedskleed', 'Gebedskleding', 'Koranhouder', 'Elektronica', 'Cadeauset'] },\n          { id: 'deco', icon: '\uD83D\uDDBC\uFE0F', label: 'Iets voor in huis', sub: 'Decoratie & kalligrafie', types: ['Wonen', 'Lijstjes & Bordjes', 'Poster', 'Kalender', 'Koranhouder'] },\n          { id: 'pakket', icon: '\uD83C\uDF80', label: 'Een kant-en-klaar pakket', sub: 'Cadeausets & mystery boxen', types: ['Cadeauset', 'Mystery Box', 'Parfumset', 'Voordeelbundel Boeken'], cols: ['cadeaupakket'] },\n          { id: 'verras', icon: '\u2728', label: 'Verras me', none: true }\n        ] },\n        budgetStep([[0, 15, '\uD83E\uDE99'], [15, 30], [30, 50], [50, 9999, '\uD83D\uDC8E']])\n      ]\n    },\n    {\n      id: 'gebed', icon: '\uD83D\uDCFF', label: 'Gebed & dhikr', sub: 'Gebedskleed, tasbih, kleding',\n      sources: ['gebed-dhikr-producten', 'gebedskleedgebedskleden', 'tasbih', 'gebedskleding', 'koranhouder', 'elektronica', 'dua-doea-bordjes'],\n      more: function (a) { return { kleed: 'gebedskleedgebedskleden', tasbih: 'tasbih', kleding: 'gebedskleding', houder: 'koranhouder', digitaal: 'elektronica', deco: 'dua-doea-bordjes' }[a.wat] || 'gebed-dhikr-producten'; },\n      steps: [\n        { id: 'wat', q: 'Wat zoek je?', options: [\n          { id: 'kleed', icon: '\uD83E\uDDCE', label: 'Gebedskleed', types: ['Gebedskleed'], cols: ['gebedskleedgebedskleden'] },\n          { id: 'tasbih', icon: '\uD83D\uDCFF', label: 'Tasbih', sub: 'Gebedskralen of teller', types: ['Tasbeeh'], cols: ['tasbih'] },\n          { id: 'kleding', icon: '\uD83E\uDDD5', label: 'Gebedskleding', sub: 'Isdal, khimaar, ihraam', types: ['Gebedskleding', 'Khimaar', 'Hoofddoek', 'ihraam', 'Abaya', 'Kinderhoofddoek'], cols: ['gebedskleding'] },\n          { id: 'houder', icon: '\uD83D\uDCD6', label: 'Koranhouder', sub: 'Rahl / leesstandaard', types: ['Koranhouder'], cols: ['koranhouder'] },\n          { id: 'digitaal', icon: '\uD83D\uDD0A', label: 'Elektronica', sub: 'Adhan-klok, Koranspeaker', types: ['Elektronica'], cols: ['elektronica'] },\n          { id: 'deco', icon: '\uD83D\uDDBC\uFE0F', label: 'Dua-bordjes & stickers', types: ['Lijstjes & Bordjes', 'Stickers & Magneten', 'Wonen'], cols: ['dua-doea-bordjes'] }\n        ] },\n        { id: 'voor', q: 'Voor wie?', options: [\n          { id: 'vrouw', icon: '\uD83D\uDC69', label: 'Een vrouw', gender: 'f', nkw: ['kind', 'kinder', 'kids', 'meisje', 'meisjes', 'jongen'] },\n          { id: 'man', icon: '\uD83D\uDC68', label: 'Een man', gender: 'm', nkw: ['kind', 'kinder', 'kids', 'meisje', 'jongen'] },\n          { id: 'kind', icon: '\uD83E\uDDD2', label: 'Een kind', age: 'kind', kw: ['kind', 'kinder', 'kids', 'junior', 'jongen', 'meisje'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        { id: 'extra', q: 'Waar moet het vooral goed in zijn?', options: [\n          { id: 'reis', icon: '\uD83E\uDDF3', label: 'Handig op reis', sub: 'Licht, opvouwbaar, pocket', kw: ['reis', 'travel', 'pocket', 'opvouwbaar', 'compact', 'mini', 'zak'] },\n          { id: 'comfort', icon: '\u2601\uFE0F', label: 'Comfort & kwaliteit', sub: 'Dik, zacht, stevig', kw: ['dik', 'zacht', 'soft', 'foam', 'luxe', 'premium', 'fluweel', 'velvet', 'hout', 'massief'] },\n          { id: 'mooi', icon: '\uD83C\uDF81', label: 'Mooi om te geven', kw: ['cadeau', 'set', 'box', 'gift', 'luxe', 'goud'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        budgetStep([[0, 10, '\uD83E\uDE99'], [10, 25], [25, 50], [50, 9999, '\uD83D\uDC8E']])\n      ]\n    },\n    {\n      id: 'huisgeur', icon: '\uD83D\uDD6F\uFE0F', label: 'Huisgeur & bakhour', sub: 'Bakhour, roomspray, auto',\n      sources: ['bakhour-wierook', 'huisparfum', 'luchtverfrisser', 'autoparfum', 'geurblokjes', 'geurolie'],\n      more: function (a) { return { bakhour: 'bakhour-wierook', brander: 'bakhour-wierook', huis: 'huisparfum', auto: 'autoparfum', kast: 'geurblokjes', olie: 'geurolie' }[a.waar] || 'luchtverfrisser'; },\n      steps: [\n        { id: 'waar', q: 'Wat zoek je?', options: [\n          { id: 'bakhour', icon: '\uD83E\uDE94', label: 'Bakhour & wierook', sub: 'Om te branden', types: ['Bakhour', 'Bakhoursnippers', 'Bakhourtablet', 'Wierook & Bakhour', 'Hars'] },\n          { id: 'brander', icon: '\uD83C\uDFFA', label: 'Een brander', sub: 'Mabkhara of houder', types: ['Brander & Houder', 'Elektronica'], kw: ['brander', 'mabkhara', 'burner', 'houder'] },\n          { id: 'huis', icon: '\uD83C\uDFE0', label: 'Geur in huis', sub: 'Roomspray, geurstokjes', types: ['Roomspray', 'Geurstokjes', 'Kamerverfrisser', 'Luchtverfrisser'] },\n          { id: 'olie', icon: '\uD83D\uDCA7', label: 'Geurolie', sub: 'Voor brander of diffuser', types: ['Geurolie'] },\n          { id: 'auto', icon: '\uD83D\uDE97', label: 'In de auto', types: ['Autoparfum', 'Autogeurhanger'] },\n          { id: 'kast', icon: '\uD83D\uDC55', label: 'Kast & kleding', sub: 'Geurblokjes', types: ['Geurblokje'] }\n        ] },\n        { id: 'geur', q: 'Welke geur zoek je?', hint: 'Kies er maximaal twee.', multi: 2, must: true, when: { waar: ['bakhour', 'huis', 'olie', 'auto', 'kast'] }, options: SCENTS },\n        budgetStep([[0, 8, '\uD83E\uDE99'], [8, 15], [15, 30], [30, 9999, '\uD83D\uDC8E']])\n      ]\n    },\n    {\n      id: 'kids', icon: '\uD83E\uDDF8', label: 'Voor kinderen', sub: 'Speelgoed, spellen, school',\n      sources: ['speelgoed-spellen', 'poppen-knuffels', 'islamitische-schoolspullen', 'islamitische-quiz-kaarten', 'kleur-knutselboeken'],\n      more: function () { return 'speelgoed-spellen'; },\n      steps: [\n        { id: 'leeftijd', q: 'Hoe oud is het kind?', options: [\n          { id: 'baby', icon: '\uD83D\uDC76', label: '0 \u2013 3 jaar', age: 'baby' },\n          { id: 'kleuter', icon: '\uD83E\uDDF8', label: '3 \u2013 6 jaar', age: 'kleuter' },\n          { id: 'kind6', icon: '\uD83C\uDF92', label: '6 \u2013 9 jaar', age: 'kind6' },\n          { id: 'kind9', icon: '\u26BD', label: '9 \u2013 12 jaar', age: 'kind9' },\n          { id: 'tiener', icon: '\uD83E\uDDD1\u200D\uD83C\uDF93', label: '12+ jaar', age: 'tiener' }\n        ] },\n        { id: 'soort', q: 'Waar heeft het kind zin in?', hint: 'Kies er maximaal twee.', multi: 2, must: true, options: [\n          { id: 'spel', icon: '\uD83C\uDFB2', label: 'Spellen & quiz', types: ['Spel', 'Spel & Speelgoed'], cols: ['islamitische-quiz-kaarten'], kw: ['spel', 'quiz', 'kaarten', 'memory', 'game', 'bordspel'] },\n          { id: 'knuffel', icon: '\uD83E\uDDF8', label: 'Knuffels & poppen', types: ['Poppen & Knuffels'], cols: ['poppen-knuffels'] },\n          { id: 'bouwen', icon: '\uD83E\uDDF1', label: 'Bouwen & puzzelen', kw: ['bouw', 'puzzel', 'puzzle', 'blokjes', 'blokken', 'lego', 'bouwstenen'] },\n          { id: 'leren', icon: '\uD83D\uDCA1', label: 'Spelend leren', sub: 'Koran, Arabisch, dua', kw: ['leren', 'arabisch', 'arabic', 'koran', 'quran', 'alfabet', 'letters', 'educatief', 'dua', 'woorden'] },\n          { id: 'creatief', icon: '\uD83D\uDD8D\uFE0F', label: 'Kleuren & knutselen', cols: ['kleur-knutselboeken'], types: ['Stickers & Magneten'], kw: ['kleur', 'knutsel', 'sticker', 'tekenen'] },\n          { id: 'school', icon: '\uD83C\uDF92', label: 'Voor school', sub: 'Etui, bidon, rugzak', types: ['Schoolspullen'], cols: ['islamitische-schoolspullen'] }\n        ] },\n        { id: 'voor', q: 'Is het voor een jongen of een meisje?', options: [\n          { id: 'jongen', icon: '\uD83D\uDC66', label: 'Jongen', gender: 'm', kw: ['jongen', 'boy'] },\n          { id: 'meisje', icon: '\uD83D\uDC67', label: 'Meisje', gender: 'f', kw: ['meisje', 'girl', 'moslima', 'hijab'] },\n          { id: 'geen', icon: '\uD83E\uDD37', label: 'Maakt niet uit', none: true }\n        ] },\n        budgetStep([[0, 10, '\uD83E\uDE99'], [10, 20], [20, 35], [35, 9999, '\uD83D\uDC8E']])\n      ]\n    }\n  ];\n\n  // Startscherm: volgorde van de tegels\n  var START_TILES = [\n    { flow: 'parfum' },\n    { flow: 'boeken' },\n    { flow: 'kleding' },\n    { flow: 'verzorging' },\n    { flow: 'cadeau' },\n    { flow: 'gebed' },\n    { flow: 'huisgeur' },\n    { flow: 'kids' }\n  ];\n\n  // Oude gedeelde links (?pz=koran, ?pz=kinderboeken) openen de samengevoegde categorie\n  var LEGACY_FLOWS = {\n    koran: { flow: 'boeken', preset: { voor: 'koran' } },\n    kinderboeken: { flow: 'boeken', preset: { voor: 'kind' } }\n  };\n\n  /* ------------------------------------------------------------------ */\n  /*  2. Hulpjes voor productdata                                        */\n  /* ------------------------------------------------------------------ */\n\n  var AGE_BUCKETS = { baby: [0, 3], kleuter: [3, 6], kind6: [6, 9], kind9: [9, 12], tiener: [12, 18], volw: [18, 99] };\n  var AGE_LABEL = { baby: '0\u20133 jaar', kleuter: '3\u20136 jaar', kind6: '6\u20139 jaar', kind9: '9\u201312 jaar', tiener: 'tieners', volw: 'volwassenen', kind: 'kinderen' };\n\n  function lc(s) { return (s || '').toString().toLowerCase(); }\n\n  function ageSet(p) {\n    if (p._ages) return p._ages;\n    var set = {};\n    function add(lo, hi) { Object.keys(AGE_BUCKETS).forEach(function (k) { var b = AGE_BUCKETS[k]; if (b[0] < hi && b[1] > lo) set[k] = 1; }); }\n    (p.a || []).forEach(function (raw) {\n      var s = lc(raw), m;\n      if (/alle leeftijden|universeel|all ages/.test(s)) add(0, 99);\n      else if ((m = s.match(/(\\d+)\\s*-\\s*(\\d+)/))) add(+m[1], Math.max(+m[2], +m[1] + 1));\n      else if ((m = s.match(/(\\d+)\\s*(jaar|years?)\\s*(of ouder|or older|\\+)/))) add(+m[1], 99);\n      else if (/baby|peuter|toddler|infant/.test(s)) add(0, 3);\n      else if (/kleuter/.test(s)) add(3, 6);\n      else if (/schoolgaand/.test(s)) add(6, 12);\n      else if (/kinderen|kids|children/.test(s)) add(3, 12);\n      else if (/teen|tiener/.test(s)) add(12, 18);\n      else if (/adult|volwassen/.test(s)) add(18, 99);\n    });\n    if (!Object.keys(set).length) {\n      var cols = p.col || [];\n      if (cols.indexOf('baby-peuterboeken') > -1) add(0, 6);\n    }\n    p._ages = set;\n    return set;\n  }\n\n  function genderSet(p) {\n    if (p._g) return p._g;\n    var g = {};\n    (p.g || []).concat(p.dg ? [p.dg] : []).forEach(function (raw) {\n      var s = lc(raw);\n      if (/vrouw|female|dames|women/.test(s)) g.f = 1;\n      else if (/mann|male|heren|men/.test(s)) g.m = 1;\n      else if (/unisex/.test(s)) g.u = 1;\n      else if (/kids|kind/.test(s)) g.k = 1;\n    });\n    var t = ' ' + lc(p.t) + ' ';\n    if (/\\b(women|woman|femme|for her|pour elle|dames|meisje|girls?)\\b/.test(t)) g.f = 1;\n    if (/\\b(men|man|homme|for him|pour homme|heren|jongen|boys?|ihram|ihraam)\\b/.test(t)) g.m = 1;\n    p._g = g;\n    return g;\n  }\n\n  function hay(p) {\n    if (p._hay) return p._hay;\n    p._hay = { t: lc(p.t), x: lc((p.tg || []).join(' | ') + ' | ' + (p.d || '') + ' | ' + p.v) };\n    return p._hay;\n  }\n\n  // Zoekwoord moet aan het begin van een woord staan: 'oud' past op 'Oudh', niet op 'goud'\n  function kwRe(o) {\n    if (!o._re) o._re = new RegExp('(?:^|[^a-z0-9\\u00c0-\\u024f])(?:' + o.kw.map(function (k) { return k.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); }).join('|') + ')', 'i');\n    return o._re;\n  }\n  function xkwRe(o) {\n    if (!o._xre) o._xre = kwRe({ kw: o.xkw });\n    return o._xre;\n  }\n  function rkwRe(o) {\n    if (!o._rre) o._rre = kwRe({ kw: o.rkw });\n    return o._rre;\n  }\n  function nkwRe(o) {\n    if (!o._nre) o._nre = kwRe({ kw: o.nkw });\n    return o._nre;\n  }\n\n  function hasCol(p, cols) { var c = p.col || []; for (var i = 0; i < cols.length; i++) if (c.indexOf(cols[i]) > -1) return true; return false; }\n\n  /* ------------------------------------------------------------------ */\n  /*  3. Score-model                                                     */\n  /* ------------------------------------------------------------------ */\n\n  // Hoe goed past \u00E9\u00E9n gekozen antwoord bij een product?\n  function matchOption(p, o) {\n    var s = 0, hit = false, h = hay(p);\n    if (o.fam) {\n      var fams = (p.f || []).map(lc);\n      if (o.fam.some(function (f) { return fams.indexOf(f) > -1; })) { s += 4; hit = true; }\n    }\n    if (o.cols && hasCol(p, o.cols)) { s += 4; hit = true; }\n    if (o.kw) {\n      var re = kwRe(o), inT = re.test(h.t), inX = !inT && re.test(h.x);\n      if (inT) { s += 3; hit = true; } else if (inX) { s += 1.5; hit = hit || !o.fam; }\n    }\n    if (o.rkw && !rkwRe(o).test(h.t)) return { s: -99, hit: false, x: true };\n    if (o.xkw && xkwRe(o).test(h.t)) return { s: -99, hit: false, x: true };\n    if (o.nkw && nkwRe(o).test(h.t)) s -= 3;\n    else if (o.hitIfNot && o.nkw) { s += 1; hit = true; }\n    if (o.tags) {\n      var tg = (p.tg || []).map(lc);\n      if (o.tags.some(function (t) { return tg.indexOf(t) > -1; })) { s += 2; hit = true; }\n    }\n    if (o.occ) {\n      var oc = (p.o || []).map(lc);\n      if (o.occ.some(function (t) { return oc.indexOf(t) > -1; })) { s += 2; hit = true; }\n    }\n    if (o.kaft && p.kf && o.kaft.indexOf(p.kf) > -1) { s += 2; hit = true; }\n    return { s: s, hit: hit };\n  }\n\n  function scoreProduct(p, ctx, level) {\n    var score = 0, why = [], hits = 0;\n    function reason(r) { if (r && why.indexOf(r) < 0) why.push(r); }\n\n    // Uitsluiten wat niet in deze zoeker hoort\n    if (ctx.exclude.length && ctx.exclude.indexOf(p.ty) > -1) return null;\n    if (ctx.baseTypes && ctx.baseTypes.indexOf(p.ty) < 0) return null;\n\n    // Producttype: wat de klant koos (bijv. bakhour, parfumolie) blijft altijd verplicht\n    if (ctx.types) {\n      if (ctx.types.indexOf(p.ty) < 0) return null;\n      hits++;\n    }\n\n    // Budget op de prijs van de hoofdvariant (bijv. de grote fles, niet het sample)\n    if (ctx.budget && level < 2) {\n      var eur = p.p / 100, tol = level === 1 ? 0.25 : 0;\n      if (eur < ctx.budget[0] * (1 - tol) || eur > ctx.budget[1] * (1 + tol)) return null;\n      if (eur >= ctx.budget[0] && eur <= ctx.budget[1]) reason('Binnen je budget');\n    }\n\n    // Geslacht\n    if (ctx.gender) {\n      var g = genderSet(p);\n      if (ctx.gender === 'f' || ctx.gender === 'm') {\n        var other = ctx.gender === 'f' ? 'm' : 'f';\n        if (g[ctx.gender]) { score += 5; reason(ctx.gender === 'f' ? 'Voor haar' : 'Voor hem'); }\n        else if (g.u) { score += 2; reason('Unisex'); }\n        else if (g[other]) { if (level < 2) return null; score -= 6; }\n      } else if (ctx.gender === 'u') {\n        if (g.u) { score += 5; reason('Unisex'); }\n        else if (g.f && g.m) score += 2;\n        else if (g.f || g.m) score -= 3;\n      }\n    }\n\n    // Leeftijd\n    if (ctx.age) {\n      var ages = ageSet(p), keys = Object.keys(ages);\n      var want = ctx.age === 'kind' ? ['baby', 'kleuter', 'kind6', 'kind9'] : [ctx.age];\n      if (keys.length) {\n        if (want.some(function (w) { return ages[w]; })) { score += 5; reason('Geschikt voor ' + AGE_LABEL[ctx.age]); }\n        else { if (level < 1 && ctx.ageStrict) return null; score -= 6; }\n      }\n    }\n\n    // Taal\n    if (ctx.lang) {\n      if (p.tl) {\n        if (ctx.lang.indexOf(p.tl) > -1) { score += 5; reason(p.tl.replace(' - ', '\u2013')); }\n        else { if (level < 1) return null; score -= 5; }\n      } else {\n        var c = p.col || [];\n        var guess = c.indexOf('engelse-boeken') > -1 ? 'Engels' : c.indexOf('arabische-boeken') > -1 ? 'Arabisch' : null;\n        if (guess && ctx.lang.indexOf(guess) > -1) score += 3;\n        else if (guess) { if (level < 1) return null; score -= 5; }\n        else score -= 1;\n      }\n    }\n\n    // Voorkeuren uit de gekozen antwoorden\n    for (var i = 0; i < ctx.prefs.length; i++) {\n      var pref = ctx.prefs[i], any = false, best = 0;\n      for (var j = 0; j < pref.options.length; j++) {\n        var m = matchOption(p, pref.options[j]);\n        if (m.x) return null;\n        if (m.hit) { any = true; hits++; if (!pref.options[j].age && !pref.options[j].gender) reason(pref.options[j].label); }\n        best = Math.max(best, m.s);\n        score += m.s * (j === 0 ? 1 : 0.8);\n      }\n      if (pref.must && !any) { if (level < 1) return null; score -= 5; }\n    }\n\n    // Populariteit (feed is gesorteerd op best verkocht)\n    score += 3 * (1 - p.rank);\n    if (p.rank < 0.04) reason('Bestseller');\n    var tg = (p.tg || []).map(lc);\n    if (tg.indexOf('topproduct') > -1 || tg.indexOf('top25') > -1 || tg.indexOf('topcadeau') > -1) score += 1;\n    if (p.r >= 4.5 && p.rc >= 3) { score += 1; reason('\u2605 ' + p.r.toFixed(1).replace('.', ',') + ' (' + p.rc + ')'); }\n\n    // Op het ruimste niveau alleen producten die tenminste ergens op aansluiten\n    if (level >= 1 && !hits && ctx.prefs.length) return null;\n    return { p: p, score: score, why: why };\n  }\n\n  function baseName(t) { return lc(t).split(/\\s[-\u2013]\\s/)[0].replace(/\\s+(edp|edt|parfumolie|parfum|eau de parfum)$/, '').trim(); }\n\n  function rank(products, ctx, want) {\n    var out = null, level = 0;\n    for (level = 0; level < 3; level++) {\n      out = [];\n      for (var i = 0; i < products.length; i++) { var r = scoreProduct(products[i], ctx, level); if (r) out.push(r); }\n      if (out.length >= Math.min(3, want)) break;\n    }\n    out.sort(function (a, b) { return b.score - a.score; });\n    // Variatie: \u00E9\u00E9n per productlijn en max. 3 per merk\n    var picked = [], seen = {}, vend = {};\n    out.forEach(function (r) {\n      var b = baseName(r.p.t), v = lc(r.p.v);\n      if (seen[b]) return;\n      if ((vend[v] || 0) >= 3 && ctx.diverse) return;\n      seen[b] = 1; vend[v] = (vend[v] || 0) + 1; picked.push(r);\n    });\n    if (picked.length < want) out.forEach(function (r) { if (picked.indexOf(r) < 0 && picked.length < want * 3) picked.push(r); });\n    return { list: picked, level: Math.min(level, 2), total: out.length };\n  }\n\n  /* ------------------------------------------------------------------ */\n  /*  4. Data laden                                                      */\n  /* ------------------------------------------------------------------ */\n\n  var memCache = {};\n\n  function storeGet(k) { try { var v = JSON.parse(sessionStorage.getItem(k)); if (v && Date.now() - v.t < 1800000) return v.d; } catch (e) {} return null; }\n  function storeSet(k, d) { try { sessionStorage.setItem(k, JSON.stringify({ t: Date.now(), d: d })); } catch (e) {} }\n\n  function loadCollection(handle, cfg) {\n    if (memCache[handle]) return memCache[handle];\n    var key = 'pz3:' + handle + ':' + cfg.pages;\n    var cached = storeGet(key);\n    if (cached) return (memCache[handle] = Promise.resolve(cached));\n    if (cfg.sample) {\n      var ids = (cfg.sample.lists && cfg.sample.lists[handle]) || [];\n      var s = ids.map(function (id, i) { return Object.assign({}, cfg.sample.products[id], { rank: i / Math.max(ids.length, 1) }); });\n      return (memCache[handle] = new Promise(function (res) { setTimeout(function () { res(s); }, 250); }));\n    }\n    var all = [];\n    function page(n) {\n      var url = cfg.root + 'collections/' + encodeURIComponent(handle) + '?view=zoeker&sort_by=best-selling&page=' + n;\n      return fetch(url, { credentials: 'same-origin' }).then(function (r) {\n        if (!r.ok) throw new Error('HTTP ' + r.status);\n        return r.text();\n      }).then(function (txt) { return JSON.parse(txt); });\n    }\n    // Pagina 1 vertelt hoeveel pagina's er zijn; de rest tegelijk ophalen\n    memCache[handle] = page(1).then(function (first) {\n      all = first.products || [];\n      var n = Math.min(first.pages || 1, cfg.pages), rest = [];\n      for (var i = 2; i <= n; i++) rest.push(page(i).catch(function () { return { products: [] }; }));\n      return Promise.all(rest).then(function (pages) { pages.forEach(function (d) { all = all.concat(d.products || []); }); });\n    }).then(function () {\n      var n = all.length;\n      all.forEach(function (p, i) { p.rank = i / Math.max(n, 1); });\n      storeSet(key, all);\n      return all;\n    }).catch(function (e) { delete memCache[handle]; throw e; });\n    return memCache[handle];\n  }\n\n  function loadSources(handles, cfg) {\n    return Promise.all(handles.map(function (h) {\n      return loadCollection(h, cfg).catch(function () { return []; });\n    })).then(function (lists) {\n      var byId = {}, merged = [];\n      lists.forEach(function (list) {\n        list.forEach(function (p) {\n          var ex = byId[p.id];\n          if (!ex) { ex = byId[p.id] = Object.assign({}, p); merged.push(ex); }\n          else ex.rank = Math.min(ex.rank, p.rank);\n        });\n      });\n      return merged;\n    });\n  }\n\n  /* ------------------------------------------------------------------ */\n  /*  5. Interface                                                       */\n  /* ------------------------------------------------------------------ */\n\n  function esc(s) { return (s == null ? '' : String(s)).replace(/[&<>\"']/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]; }); }\n  function money(cents) { return (cents / 100).toLocaleString('nl-NL', { style: 'currency', currency: 'EUR' }); }\n  function track(ev, data) { try { (window.dataLayer = window.dataLayer || []).push(Object.assign({ event: ev }, data || {})); } catch (e) {} }\n  function flowById(id) { for (var i = 0; i < FLOWS.length; i++) if (FLOWS[i].id === id) return FLOWS[i]; return null; }\n\n  function Finder(root, cfg) {\n    this.root = root;\n    this.cfg = cfg;\n    this.flow = null;\n    this.answers = {};\n    this.history = [];\n    this.shown = cfg.results;\n    this.body = root.querySelector('[data-pz-body]');\n    this.bar = root.querySelector('[data-pz-bar]');\n    this.live = root.querySelector('[data-pz-live]');\n    var self = this;\n    root.addEventListener('click', function (e) { self.onClick(e); });\n    if (!this.restore()) this.renderStart();\n  }\n\n  Finder.prototype.enabledTiles = function () {\n    var on = this.cfg.flows;\n    return START_TILES.filter(function (t) { return !on || on[t.id || t.flow] !== false; });\n  };\n\n  Finder.prototype.visibleSteps = function () {\n    var a = this.answers;\n    return this.flow.steps.filter(function (s) {\n      if (!s.when) return true;\n      return Object.keys(s.when).every(function (k) { return s.when[k].indexOf(a[k]) > -1 || (Array.isArray(a[k]) && a[k].some(function (v) { return s.when[k].indexOf(v) > -1; })); });\n    });\n  };\n\n  Finder.prototype.sources = function () {\n    var s = this.flow.sources;\n    return typeof s === 'function' ? s(this.answers) : s;\n  };\n\n  Finder.prototype.prefetch = function () {\n    if (!this.flow) return;\n    var self = this;\n    this.sources().forEach(function (h) { loadCollection(h, self.cfg).catch(function () {}); });\n  };\n\n  Finder.prototype.focusTitle = function () {\n    var h = this.body.querySelector('h2, h3');\n    if (h) { h.setAttribute('tabindex', '-1'); try { h.focus({ preventScroll: true }); } catch (e) { h.focus(); } }\n    var top = this.root.getBoundingClientRect().top;\n    if (top < 0 || top > window.innerHeight * 0.6) this.root.scrollIntoView({ behavior: 'smooth', block: 'start' });\n  };\n\n  Finder.prototype.setProgress = function (frac) {\n    this.bar.style.width = Math.round(frac * 100) + '%';\n    this.bar.parentNode.setAttribute('aria-valuenow', Math.round(frac * 100));\n    this.bar.parentNode.hidden = frac <= 0;\n  };\n\n  Finder.prototype.renderStart = function () {\n    this.flow = null; this.answers = {}; this.history = []; this.presetKeys = [];\n    this.setProgress(0);\n    this.root.classList.remove('pz--results');\n    var tiles = this.enabledTiles().map(function (t) {\n      var f = flowById(t.flow);\n      return '<button type=\"button\" class=\"pz-tile\" data-pz-flow=\"' + esc(t.flow) + '\"' + (t.preset ? ' data-pz-preset=\"' + esc(JSON.stringify(t.preset)) + '\"' : '') + '>' +\n        '<span class=\"pz-ico\" aria-hidden=\"true\">' + (t.icon || f.icon) + '</span>' +\n        '<span class=\"pz-tile-txt\"><span class=\"pz-tile-t\">' + esc(t.label || f.label) + '</span>' +\n        '<span class=\"pz-tile-s\">' + esc(t.sub || f.sub) + '</span></span></button>';\n    }).join('');\n    // Heeft de sectie al een eigen titel? Dan geen tweede kop boven de tegels.\n    var hasHead = !!this.root.querySelector('.pz-head .pz-title-main');\n    this.body.innerHTML =\n      '<div class=\"pz-step pz-start' + (hasHead ? ' pz-start--bare' : '') + '\">' +\n      (hasHead\n        ? '<h2 class=\"pz-sr\">Waar ben je naar op zoek?</h2>'\n        : '<h2 class=\"pz-q\">Waar ben je naar op zoek?</h2><p class=\"pz-hint\">Kies een categorie. Daarna stellen we 3 tot 5 korte vragen.</p>') +\n      '<div class=\"pz-grid pz-grid--tiles\" role=\"group\" aria-label=\"Kies een categorie\">' + tiles + '</div></div>';\n    this.updateUrl(true);\n  };\n\n  Finder.prototype.startFlow = function (id, preset) {\n    this.flow = flowById(id);\n    if (!this.flow) return this.renderStart();\n    this.answers = Object.assign({}, preset || {});\n    this.presetKeys = Object.keys(preset || {});\n    this.history = [];\n    this.autoSkipped = {};\n    this.skipToken = null;\n    this.shown = this.cfg.results;\n    track('productzoeker_start', { pz_flow: id });\n    this.prefetch();\n    this.next();\n  };\n\n  Finder.prototype.currentIndex = function () {\n    var steps = this.visibleSteps();\n    for (var i = 0; i < steps.length; i++) if (!(steps[i].id in this.answers)) return i;\n    return steps.length;\n  };\n\n  Finder.prototype.next = function () {\n    var steps = this.visibleSteps(), i = this.currentIndex();\n    if (i >= steps.length) return this.renderResults();\n    var step = steps[i], self = this;\n    // Budgetvraag overslaan als er toch al weinig producten over zijn: een budget helpt dan niet meer\n    var isBudget = step.options.some(function (o) { return o.budget; });\n    if (!isBudget) return this.renderStep(step, i, steps.length);\n    var token = this.skipToken = {};\n    loadSources(this.sources(), this.cfg).then(function (products) {\n      if (token !== self.skipToken) return;\n      var res = rank(products, self.buildCtx(), self.cfg.results);\n      if (res.level > 0 || res.total <= self.cfg.results) {\n        self.answers[step.id] = 'geen';\n        (self.autoSkipped = self.autoSkipped || {})[step.id] = 1;\n        self.next();\n      } else self.renderStep(step, i, steps.length);\n    }).catch(function () {\n      if (token === self.skipToken) self.renderStep(step, i, steps.length);\n    });\n  };\n\n  // Vraagnummer zonder voorgeselecteerde vragen (bijv. de tegel 'Kinderboeken')\n  Finder.prototype.stepLabel = function (step) {\n    var pk = this.presetKeys || [];\n    var steps = this.visibleSteps().filter(function (s) { return pk.indexOf(s.id) < 0; });\n    var at = steps.indexOf(step);\n    return 'vraag ' + (at + 1) + ' van ' + steps.length;\n  };\n\n  Finder.prototype.renderStep = function (step, i, n) {\n    this.root.classList.remove('pz--results');\n    this.setProgress((i + 0.15) / (n + 1));\n    this.curStep = step;\n    var multi = step.multi || 0;\n    var sel = this.answers[step.id];\n    var selArr = Array.isArray(sel) ? sel : sel ? [sel] : [];\n    var opts = step.options.map(function (o) {\n      var on = selArr.indexOf(o.id) > -1;\n      return '<button type=\"button\" class=\"pz-opt' + (on ? ' is-on' : '') + (o.none ? ' pz-opt--none' : '') + '\" data-pz-opt=\"' + esc(o.id) + '\" aria-pressed=\"' + on + '\">' +\n        '<span class=\"pz-ico\" aria-hidden=\"true\">' + (o.icon || '') + '</span>' +\n        '<span class=\"pz-opt-txt\"><span class=\"pz-opt-t\">' + esc(o.label) + '</span>' +\n        (o.sub ? '<span class=\"pz-opt-s\">' + esc(o.sub) + '</span>' : '') + '</span>' +\n        (multi ? '<span class=\"pz-check\" aria-hidden=\"true\"></span>' : '') + '</button>';\n    }).join('');\n    this.body.innerHTML =\n      '<div class=\"pz-step\">' +\n      '<p class=\"pz-count\">' + esc(this.flow.label) + ' \u00B7 ' + this.stepLabel(step) + '</p>' +\n      '<h2 class=\"pz-q\">' + esc(step.q) + '</h2>' +\n      (step.hint ? '<p class=\"pz-hint\">' + esc(step.hint) + '</p>' : '') +\n      '<div class=\"pz-grid' + (step.options.length > 6 ? ' pz-grid--dense' : '') + '\" role=\"group\" aria-label=\"' + esc(step.q) + '\">' + opts + '</div>' +\n      '<div class=\"pz-nav\">' +\n      '<button type=\"button\" class=\"pz-btn pz-btn--ghost\" data-pz-back>\u2190 Terug</button>' +\n      (multi ? '<button type=\"button\" class=\"pz-btn pz-btn--primary\" data-pz-next' + (selArr.length ? '' : ' disabled') + '>Volgende \u2192</button>' : '') +\n      '</div></div>';\n    this.focusTitle();\n  };\n\n  Finder.prototype.choose = function (optId) {\n    var step = this.curStep; if (!step) return;\n    var opt = step.options.filter(function (o) { return o.id === optId; })[0];\n    if (!opt) return;\n    if (step.multi) {\n      var cur = Array.isArray(this.answers[step.id]) ? this.answers[step.id].slice() : [];\n      if (opt.none) cur = [opt.id];\n      else {\n        cur = cur.filter(function (id) { return !step.options.some(function (o) { return o.id === id && o.none; }); });\n        var at = cur.indexOf(opt.id);\n        if (at > -1) cur.splice(at, 1);\n        else { cur.push(opt.id); if (cur.length > step.multi) cur.shift(); }\n      }\n      if (cur.length) this.answers[step.id] = cur; else delete this.answers[step.id];\n      var self = this;\n      this.body.querySelectorAll('[data-pz-opt]').forEach(function (b) {\n        var on = cur.indexOf(b.getAttribute('data-pz-opt')) > -1;\n        b.classList.toggle('is-on', on); b.setAttribute('aria-pressed', on);\n      });\n      var nb = this.body.querySelector('[data-pz-next]');\n      if (nb) nb.disabled = !cur.length;\n      if (opt.none) { this.history.push(step.id); setTimeout(function () { self.next(); }, 180); }\n      return;\n    }\n    this.answers[step.id] = opt.id;\n    this.history.push(step.id);\n    // Antwoorden van stappen die nu niet meer zichtbaar zijn weggooien\n    var vis = this.visibleSteps().map(function (s) { return s.id; }), a = this.answers;\n    Object.keys(a).forEach(function (k) { if (vis.indexOf(k) < 0) delete a[k]; });\n    if (typeof this.flow.sources === 'function') this.prefetch();\n    var btn = this.body.querySelector('[data-pz-opt=\"' + optId + '\"]');\n    if (btn) { btn.classList.add('is-on'); btn.setAttribute('aria-pressed', 'true'); }\n    var self2 = this;\n    setTimeout(function () { self2.next(); }, 160);\n  };\n\n  Finder.prototype.back = function () {\n    if (!this.flow) return;\n    this.skipToken = null;\n    var steps = this.visibleSteps(), i = this.currentIndex();\n    if (this.root.classList.contains('pz--results')) i = steps.length;\n    if (i === 0) return this.renderStart();\n    var prev = steps[i - 1];\n    // Voorgeselecteerde startvraag (bijv. kinderboeken) overslaan\n    if (this.autoSkipped && this.autoSkipped[prev.id]) {\n      // Automatisch overgeslagen budgetvraag: ook de vraag daarvoor wissen, anders is 'Terug' een lus\n      delete this.answers[prev.id]; delete this.autoSkipped[prev.id];\n      if (i - 2 < 0) return this.renderStart();\n      prev = steps[i - 2];\n      i = i - 1;\n    }\n    delete this.answers[prev.id];\n    if (i - 1 === 0 && this.presetFirst) return this.renderStart();\n    this.renderStep(prev, i - 1, steps.length);\n  };\n\n  // E\u00E9n antwoord wijzigen: de rest blijft staan, daarna direct weer naar de resultaten\n  Finder.prototype.editStep = function (id) {\n    var steps = this.visibleSteps();\n    var idx = steps.map(function (s) { return s.id; }).indexOf(id);\n    if (idx < 0) return;\n    this.skipToken = null;\n    var a2 = this.answers, sk = this.autoSkipped || {};\n    Object.keys(sk).forEach(function (k) { delete a2[k]; });\n    this.autoSkipped = {};\n    delete this.answers[id];\n    this.renderStep(steps[idx], idx, steps.length);\n  };\n\n  Finder.prototype.buildCtx = function () {\n    var a = this.answers, ctx = { prefs: [], exclude: this.flow.excludeTypes || [], baseTypes: this.flow.types || null, diverse: true };\n    this.visibleSteps().forEach(function (step) {\n      var val = a[step.id]; if (val == null) return;\n      var ids = Array.isArray(val) ? val : [val];\n      var opts = step.options.filter(function (o) { return ids.indexOf(o.id) > -1 && !o.none; });\n      if (!opts.length) return;\n      var pref = { options: [], must: !!step.must }, stepTypes = null;\n      opts.forEach(function (o) {\n        if (o.budget) ctx.budget = o.budget;\n        if (o.excludeTypes) ctx.exclude = ctx.exclude.concat(o.excludeTypes);\n        if (o.gender) ctx.gender = o.gender;\n        if (o.age) { ctx.age = o.age; ctx.ageStrict = step.id === 'leeftijd'; }\n        if (o.lang) ctx.lang = (ctx.lang && step.id !== 'taal' && step.id !== 'ktaal') ? ctx.lang : o.lang;\n        if (o.types) stepTypes = (stepTypes || []).concat(o.types);\n        if (o.fam || o.cols || o.kw || o.tags || o.occ || o.kaft || o.nkw || o.xkw || o.rkw) pref.options.push(o);\n      });\n      if (pref.options.length) ctx.prefs.push(pref);\n      if (stepTypes) {\n        // Twee vragen met producttypes (bijv. 'kind' + 'boek'): de overlap telt\n        var both = ctx.types ? ctx.types.filter(function (t) { return stepTypes.indexOf(t) > -1; }) : [];\n        ctx.types = both.length ? both : stepTypes;\n      }\n    });\n    return ctx;\n  };\n\n  Finder.prototype.answerChips = function () {\n    var a = this.answers, out = [];\n    var sk = this.autoSkipped || {};\n    this.visibleSteps().forEach(function (step) {\n      var val = a[step.id]; if (val == null || sk[step.id]) return;\n      var ids = Array.isArray(val) ? val : [val];\n      var labels = step.options.filter(function (o) { return ids.indexOf(o.id) > -1; }).map(function (o) { return o.label; });\n      out.push('<button type=\"button\" class=\"pz-chip\" data-pz-edit=\"' + esc(step.id) + '\" title=\"Wijzig: ' + esc(step.q) + '\">' + esc(labels.join(' + ')) + ' <span aria-hidden=\"true\">\u270E</span></button>');\n    });\n    return out.join('');\n  };\n\n  Finder.prototype.renderResults = function () {\n    var self = this, flow = this.flow;\n    this.shown = this.cfg.results;\n    this.curStep = null;\n    this.setProgress(1);\n    this.root.classList.add('pz--results');\n    this.updateUrl();\n    var skeleton = '';\n    for (var i = 0; i < Math.min(this.shown, 6); i++) skeleton += '<div class=\"pz-card pz-card--skel\"><div class=\"pz-img\"></div><div class=\"pz-card-b\"><span></span><span></span><span></span></div></div>';\n    this.body.innerHTML =\n      '<div class=\"pz-res\">' +\n      '<div class=\"pz-res-head\"><h2 class=\"pz-q\">Even zoeken\u2026</h2><div class=\"pz-chips\">' + this.answerChips() + '</div></div>' +\n      '<div class=\"pz-cards\" aria-busy=\"true\">' + skeleton + '</div></div>';\n    var token = this.token = {};\n    loadSources(this.sources(), this.cfg).then(function (products) {\n      if (token !== self.token) return;\n      var res = rank(products, self.buildCtx(), self.shown);\n      self.lastRes = res;\n      self.paintResults(res);\n      track('productzoeker_complete', { pz_flow: flow.id, pz_answers: JSON.stringify(self.answers), pz_results: res.list.length });\n    }).catch(function () {\n      if (token !== self.token) return;\n      self.paintResults({ list: [], level: 2, total: 0, error: true });\n    });\n  };\n\n  Finder.prototype.paintResults = function (res) {\n    var flow = this.flow, cfg = this.cfg, more = flow.more ? flow.more(this.answers) : null;\n    var list = res.list.slice(0, this.shown);\n    var head = list.length\n      ? (res.level === 0 ? 'Dit past bij jou' : 'Dit komt het dichtst in de buurt')\n      : 'Helaas, geen goede match gevonden';\n    var note = '';\n    if (list.length && res.level > 0) note = '<p class=\"pz-note\">We vonden weinig producten die precies aan al je wensen voldoen, dus we hebben de zoektocht iets verruimd' + ((this.answers.budget && this.answers.budget !== 'geen') || (this.answers.kbudget && this.answers.kbudget !== 'geen') ? ' (bijvoorbeeld het budget)' : '') + '.</p>';\n    if (res.error) note = '<p class=\"pz-note\">De producten konden even niet geladen worden. Probeer het opnieuw of bekijk de collectie hieronder.</p>';\n\n    var cards = list.map(function (r, i) {\n      var p = r.p, sale = p.c && p.c > p.p;\n      var img = p.img ? '<img src=\"' + esc(p.img) + '\" alt=\"' + esc(p.t) + '\" data-pid=\"' + esc(p.id) + '\" loading=\"lazy\" width=\"400\" height=\"400\">' : '<span class=\"pz-noimg\" aria-hidden=\"true\">\uD83D\uDCE6</span>';\n      var why = r.why.slice(0, 3).map(function (w) { return '<li>' + esc(w) + '</li>'; }).join('');\n      var price = (p.pm && p.pm < p.p ? '<span class=\"pz-from\">vanaf ' + money(p.pm) + ' \u00B7 </span>' : '') +\n        '<span class=\"pz-price' + (sale ? ' is-sale' : '') + '\">' + money(p.p) + '</span>' + (sale ? ' <s>' + money(p.c) + '</s>' : '');\n      return '<article class=\"pz-card' + (i === 0 ? ' pz-card--best' : '') + '\">' +\n        (i === 0 ? '<span class=\"pz-badge\">Beste match</span>' : sale ? '<span class=\"pz-badge pz-badge--sale\">Aanbieding</span>' : '') +\n        '<a class=\"pz-img\" href=\"' + esc(p.u) + '\" tabindex=\"-1\" aria-hidden=\"true\">' + img + '</a>' +\n        '<div class=\"pz-card-b\">' +\n        (p.v ? '<p class=\"pz-vendor\">' + esc(p.v) + '</p>' : '') +\n        '<h3 class=\"pz-title\"><a href=\"' + esc(p.u) + '\" data-pz-click=\"' + esc(p.h) + '\">' + esc(p.t) + '</a></h3>' +\n        (why ? '<ul class=\"pz-why\" aria-label=\"Waarom dit past\">' + why + '</ul>' : '') +\n        '<p class=\"pz-prices\">' + price + '</p>' +\n        '<div class=\"pz-actions\">' +\n        (cfg.cart && p.vid ? '<button type=\"button\" class=\"pz-btn pz-btn--primary pz-btn--sm\" data-pz-add=\"' + esc(p.vid) + '\" data-pz-title=\"' + esc(p.t) + '\">In winkelwagen</button>' : '') +\n        '<a class=\"pz-btn pz-btn--ghost pz-btn--sm\" href=\"' + esc(p.u) + '\">Bekijken</a>' +\n        '</div></div></article>';\n    }).join('');\n\n    var moreBtn = res.list.length > list.length ? '<button type=\"button\" class=\"pz-btn pz-btn--ghost\" data-pz-more>Toon meer suggesties</button>' : '';\n    var tip = flow.tip && list.length ? '<p class=\"pz-tip\">\uD83C\uDF80 ' + esc(flow.tip.text) + ' <a href=\"' + cfg.root + 'collections/' + esc(flow.tip.handle) + '\">' + esc(flow.tip.label) + ' \u2192</a></p>' : '';\n    var empty = !list.length ? '<div class=\"pz-empty\"><p>Probeer een antwoord aan te passen, of bekijk het hele aanbod.</p></div>' : '';\n\n    this.body.innerHTML =\n      '<div class=\"pz-res\">' +\n      '<div class=\"pz-res-head\"><h2 class=\"pz-q\">' + head + '</h2>' +\n      '<p class=\"pz-hint\">Op basis van je antwoorden. Klik op een antwoord om het te wijzigen.</p>' +\n      '<div class=\"pz-chips\">' + this.answerChips() + '</div></div>' + note + empty +\n      (list.length ? '<div class=\"pz-cards\">' + cards + '</div>' : '') +\n      '<div class=\"pz-res-foot\">' + moreBtn + tip +\n      '<div class=\"pz-nav\">' +\n      '<button type=\"button\" class=\"pz-btn pz-btn--ghost\" data-pz-back>\u2190 Terug</button>' +\n      '<button type=\"button\" class=\"pz-btn pz-btn--ghost\" data-pz-restart>\u21BA Opnieuw beginnen</button>' +\n      (more ? '<a class=\"pz-btn pz-btn--primary\" href=\"' + cfg.root + 'collections/' + esc(more) + '\">Bekijk alles in deze categorie \u2192</a>' : '') +\n      '</div></div></div>';\n    this.live.textContent = list.length ? list.length + ' suggesties gevonden.' : 'Geen suggesties gevonden.';\n    this.focusTitle();\n  };\n\n  Finder.prototype.addToCart = function (btn) {\n    var id = btn.getAttribute('data-pz-add'), self = this;\n    btn.disabled = true; btn.textContent = 'Toevoegen\u2026';\n    var done = function (ok) {\n      btn.textContent = ok ? '\u2713 Toegevoegd' : 'Mislukt, probeer opnieuw';\n      btn.classList.toggle('is-done', ok);\n      btn.disabled = ok;\n      if (ok) {\n        self.toast('Toegevoegd aan je winkelwagen', self.cfg.root + 'cart', 'Naar winkelwagen');\n        track('productzoeker_add_to_cart', { pz_flow: self.flow && self.flow.id, pz_variant: id });\n        self.refreshCart();\n      }\n    };\n    if (this.cfg.sample) return setTimeout(function () { done(true); }, 400);\n    fetch(this.cfg.root + 'cart/add.js', {\n      method: 'POST', credentials: 'same-origin',\n      headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n      body: JSON.stringify({ items: [{ id: +id, quantity: 1 }] })\n    }).then(function (r) { done(r.ok); }).catch(function () { done(false); });\n  };\n\n  // Teller in de header bijwerken en bekende winkelwagen-widgets laten verversen.\n  // Let op: Shopify.onCartUpdate wordt bewust niet aangeroepen (standaard is dat een alert).\n  Finder.prototype.refreshCart = function () {\n    fetch(this.cfg.root + 'cart.js', { credentials: 'same-origin' }).then(function (r) { return r.json(); }).then(function (cart) {\n      document.querySelectorAll('[data-cart-count], .cart-count-bubble span, .cart-count').forEach(function (el) {\n        if (el.children.length === 0) el.textContent = cart.item_count;\n      });\n      try { if (window.__globeCart && typeof window.__globeCart.fetchCart === 'function') window.__globeCart.fetchCart(); } catch (e) {}\n      ['cart:refresh', 'cart:updated'].forEach(function (n) { try { document.dispatchEvent(new CustomEvent(n, { bubbles: true, detail: { cart: cart } })); } catch (e) {} });\n    }).catch(function () {});\n  };\n\n  Finder.prototype.toast = function (msg, href, label) {\n    var t = this.root.querySelector('.pz-toast');\n    if (!t) { t = document.createElement('div'); t.className = 'pz-toast'; t.setAttribute('role', 'status'); this.root.appendChild(t); }\n    t.innerHTML = '<span>\u2713 ' + esc(msg) + '</span> <a href=\"' + esc(href) + '\">' + esc(label) + ' \u2192</a>';\n    t.classList.add('is-on');\n    clearTimeout(this._tt);\n    this._tt = setTimeout(function () { t.classList.remove('is-on'); }, 5000);\n  };\n\n  Finder.prototype.onClick = function (e) {\n    var el = e.target.closest('button, a'); if (!el || !this.root.contains(el)) return;\n    if (el.hasAttribute('data-pz-flow')) {\n      var preset = el.getAttribute('data-pz-preset');\n      this.presetFirst = !!preset;\n      return this.startFlow(el.getAttribute('data-pz-flow'), preset ? JSON.parse(preset) : null);\n    }\n    if (el.hasAttribute('data-pz-opt')) return this.choose(el.getAttribute('data-pz-opt'));\n    if (el.hasAttribute('data-pz-next')) return this.next();\n    if (el.hasAttribute('data-pz-back')) return this.back();\n    if (el.hasAttribute('data-pz-restart')) { this.presetFirst = false; return this.renderStart(); }\n    if (el.hasAttribute('data-pz-edit')) return this.editStep(el.getAttribute('data-pz-edit'));\n    if (el.hasAttribute('data-pz-more')) { this.shown += this.cfg.results; return this.paintResults(this.lastRes); }\n    if (el.hasAttribute('data-pz-add')) return this.addToCart(el);\n    if (el.hasAttribute('data-pz-click')) track('productzoeker_click', { pz_flow: this.flow && this.flow.id, pz_product: el.getAttribute('data-pz-click') });\n  };\n\n  /* ---- Deelbare link: ?pz=parfum&pza=voor:haar|geur:zoet,oud ---- */\n  Finder.prototype.updateUrl = function (clear) {\n    if (!this.cfg.url || !window.history || !history.replaceState) return;\n    try {\n      var u = new URL(location.href);\n      u.searchParams.delete('pz'); u.searchParams.delete('pza');\n      if (!clear && this.flow) {\n        var a = this.answers;\n        u.searchParams.set('pz', this.flow.id);\n        u.searchParams.set('pza', Object.keys(a).map(function (k) { return k + ':' + [].concat(a[k]).join(','); }).join('|'));\n      }\n      history.replaceState(history.state, '', u.toString());\n    } catch (e) {}\n  };\n\n  Finder.prototype.restore = function () {\n    var q;\n    try { q = new URL(location.href).searchParams; } catch (e) { return false; }\n    var id = q.get('pz') || q.get('zoeker') || this.cfg.startFlow;\n    if (!id) return false;\n    var legacy = LEGACY_FLOWS[id] || null;\n    if (legacy) id = legacy.flow;\n    var tile = START_TILES.filter(function (t) { return (t.id || t.flow) === id; })[0];\n    var flow = flowById(tile ? tile.flow : id);\n    if (!flow) return false;\n    this.flow = flow;\n    var a = {};\n    (q.get('pza') || '').split(/[|;]/).forEach(function (pair) {\n      var kv = pair.split(':'); if (kv.length !== 2) return;\n      var step = flow.steps.filter(function (s) { return s.id === kv[0]; })[0]; if (!step) return;\n      var vals = kv[1].split(',').filter(function (v) { return step.options.some(function (o) { return o.id === v; }); });\n      if (!vals.length) return;\n      a[kv[0]] = step.multi ? vals : vals[0];\n    });\n    if (legacy) Object.assign(a, legacy.preset);\n    if (tile && tile.preset) { Object.assign(a, tile.preset); this.presetFirst = true; this.presetKeys = Object.keys(tile.preset); }\n    this.answers = a;\n    this.prefetch();\n    this.next();\n    return true;\n  };\n\n  /* ------------------------------------------------------------------ */\n  /*  6. Starten                                                         */\n  /* ------------------------------------------------------------------ */\n\n  function init(el) {\n    if (el.__pz) return;\n    var cfg = {};\n    try { cfg = JSON.parse((el.querySelector('script[data-pz-config]') || {}).textContent || '{}'); } catch (e) {}\n    cfg.root = (cfg.root || (window.Shopify && Shopify.routes && Shopify.routes.root) || '/').replace(/\\/?$/, '/');\n    cfg.pages = cfg.pages || 4;\n    cfg.results = cfg.results || 6;\n    cfg.cart = cfg.cart !== false;\n    cfg.url = cfg.url !== false;\n    if (window.PZ_SAMPLE) cfg.sample = window.PZ_SAMPLE;\n    el.__pz = new Finder(el, cfg);\n  }\n\n  function boot() { document.querySelectorAll('[data-pz]').forEach(init); }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot); else boot();\n  document.addEventListener('shopify:section:load', boot);\n\n  function plan(id, answers) {\n    var f = Object.create(Finder.prototype); f.flow = flowById(id); f.answers = answers || {};\n    return { ctx: f.buildCtx(), sources: f.sources(), steps: f.visibleSteps().map(function (s) { return s.id; }) };\n  }\n  window.Productzoeker = { FLOWS: FLOWS, rank: rank, plan: plan, boot: boot };\n})();\n"],
  "mappings": "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",
  "names": ["r"]
}
