{"id":4616,"date":"2026-08-12T10:29:00","date_gmt":"2026-08-12T08:29:00","guid":{"rendered":"https:\/\/www.kanopee.lu\/products\/toppings-inclusions\/"},"modified":"2026-11-12T15:32:38","modified_gmt":"2026-11-12T14:32:38","slug":"toppings-inclusions","status":"publish","type":"page","link":"https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/","title":{"rendered":"Toppings &#038; Inclusions"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4616\" class=\"elementor elementor-4616 elementor-4011\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-df04bd0 e-con-full e-flex e-con e-parent\" data-id=\"df04bd0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-d653389 e-flex e-con-boxed e-con e-child\" data-id=\"d653389\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-72e02df e-con-full e-flex e-con e-child\" data-id=\"72e02df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-474b81a elementor-hidden-mobile elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"474b81a\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:500,&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\"><span class=\"micro-baseline\">Products \/ Bakery Seeds<br><\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c903901 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"c903901\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:&quot;500&quot;,&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Toppings <br \/>&amp; Inclusions<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-954d910 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"954d910\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:&quot;500&quot;,&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">A wide range of Decorations &amp; Inclusions that highlight the unique character of each of your creations.\n<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9a10ada e-con-full e-grid elementor-hidden-tablet elementor-hidden-mobile e-con e-child\" data-id=\"9a10ada\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-8cd87d7 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"8cd87d7\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-14690d5 elementor-view-framed elementor-position-inline-start elementor-mobile-position-inline-start elementor-widget-tablet__width-auto elementor-shape-circle elementor-invisible elementor-widget elementor-widget-icon-box\" data-id=\"14690d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<a href=\"#\" class=\"elementor-icon\" tabindex=\"-1\" aria-label=\"Enhance&lt;br\/&gt;visual impact\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-glasses\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"><\/path><\/svg>\t\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<a href=\"#\" >\n\t\t\t\t\t\t\tEnhance<br \/>visual impact\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tcolors, finishes, decoration\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e15b2af e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"e15b2af\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;animation_delay&quot;:&quot;250&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f96c808 elementor-view-framed elementor-position-inline-start elementor-mobile-position-inline-start elementor-widget-tablet__width-auto elementor-shape-circle elementor-invisible elementor-widget elementor-widget-icon-box\" data-id=\"f96c808\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<a href=\"#\" class=\"elementor-icon\" tabindex=\"-1\" aria-label=\"Enrich&lt;br\/&gt;the sensory experience\">\n\t\t\t\t<svg class=\"ekit-svg-icon icon-valentines-heart\" viewBox=\"0 0 32 32\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M32 11.181c0-4.773-3.869-8.641-8.642-8.641-3.116 0-5.838 1.655-7.358 4.129-1.52-2.473-4.243-4.129-7.359-4.129-4.773 0-8.64 3.869-8.64 8.641 0 2.598 1.151 4.923 2.966 6.506l12.245 12.246c0.209 0.209 0.493 0.327 0.789 0.327s0.579-0.117 0.789-0.327l12.245-12.246c1.815-1.583 2.966-3.908 2.966-6.506z\"><\/path><\/svg>\t\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<a href=\"#\" >\n\t\t\t\t\t\t\tEnrich<br \/>the sensory experience\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\ttextures and indulgence\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-997ce35 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"997ce35\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;animation_delay&quot;:&quot;500&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-83710a4 elementor-view-framed elementor-position-inline-start elementor-mobile-position-inline-start elementor-widget-tablet__width-auto elementor-shape-circle elementor-invisible elementor-widget elementor-widget-icon-box\" data-id=\"83710a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<a href=\"#\" class=\"elementor-icon\" tabindex=\"-1\" aria-label=\"Boost&lt;br\/&gt;creativity\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-brain\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"><\/path><\/svg>\t\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<a href=\"#\" >\n\t\t\t\t\t\t\tBoost<br \/>creativity\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\textensive and customizable range\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3c08211 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"3c08211\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;,&quot;animation_delay&quot;:&quot;750&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-974e73a elementor-view-framed elementor-position-inline-start elementor-mobile-position-inline-start elementor-widget-tablet__width-auto elementor-shape-circle elementor-invisible elementor-widget elementor-widget-icon-box\" data-id=\"974e73a\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<a href=\"#\" class=\"elementor-icon\" tabindex=\"-1\" aria-label=\"Drive&lt;br\/&gt;purchasing decisions\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-power-off\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"><\/path><\/svg>\t\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<a href=\"#\" >\n\t\t\t\t\t\t\tDrive<br \/>purchasing decisions\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tEnhanced price-performance ratio\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c73403b e-flex e-con-boxed e-con e-parent\" data-id=\"c73403b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a2b0e77 elementor-widget elementor-widget-shortcode\" data-id=\"a2b0e77\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<section data-kp-uk=\"1\" class=\"kp-product-focus kp-toppings-focus\" data-kp-toppings data-ajax-url=\"https:\/\/www.kanopee.lu\/wp-admin\/admin-ajax.php\">\n\n  <div class=\"kp-product-grid\">\n\n    <button class=\"kp-choice\" data-product=\"base-chocolat\" type=\"button\">\n      <img decoding=\"async\" src=\"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/toppings-assets\/navigation-buttons\/toppings-base-chocolat.png\" alt=\"Assortment of chocolate chips, shavings and pieces\">\n      <span>Chocolate-based<\/span>\n    <\/button>\n\n    <button class=\"kp-choice\" data-product=\"base-sucre\" type=\"button\">\n      <img decoding=\"async\" src=\"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/toppings-assets\/navigation-buttons\/toppings-base-sucre.png\" alt=\"Assortment of sugar sprinkles, pearls and decorations\">\n      <span>Sugar-based<\/span>\n    <\/button>\n\n    <button class=\"kp-choice\" data-product=\"base-biscuit\" type=\"button\">\n      <img decoding=\"async\" src=\"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/toppings-assets\/navigation-buttons\/toppings-biscuits-enrobes.png\" alt=\"Biscuit pieces, coated cereals and chocolate lentils\">\n      <span>Biscuits & Coated Pieces<\/span>\n    <\/button>\n\n  <\/div>\n\n  <div class=\"kp-product-panel\">\n    <span class=\"micro-baseline\">Product details<br><br><\/span>\n    <h1 id=\"kp-title\">Toppings & Inclusions<\/h1>\n\n    <div class=\"kp-product-hero\" id=\"kp-product-hero\" aria-hidden=\"true\">\n      <img decoding=\"async\" id=\"kp-product-hero-image\" src=\"\" alt=\"\">\n    <\/div>\n\n    <div id=\"kp-content\"><\/div>\n\n    <div class=\"kp-toppings-explorer is-hidden\" id=\"kp-toppings-explorer\">\n      <div class=\"kp-toppings-wheel-wrap\">\n        <div class=\"kp-toppings-wheel-note\">Select a category<\/div>\n        <div class=\"kp-toppings-wheel-image\" id=\"kp-toppings-wheel\" aria-label=\"Topping shape categories\">\n          <img decoding=\"async\" src=\"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/08\/toppings-menu-camembert.jpg\" alt=\"Kanop\u00e9e topping and inclusion categories\">\n          <svg class=\"kp-toppings-map\" viewBox=\"0 0 100 100\" aria-hidden=\"true\">\n            <path data-shape=\"etoiles\" data-default-shape=\"etoiles\" d=\"M50 50 L50 12 A38 38 0 0 1 82.91 31 Z\"><\/path>\n            <path data-shape=\"vermicelles\" data-default-shape=\"vermicelles\" d=\"M50 50 L82.91 31 A38 38 0 0 1 82.91 69 Z\"><\/path>\n            <path data-shape=\"particulieres\" data-default-shape=\"particulieres\" d=\"M50 50 L82.91 69 A38 38 0 0 1 50 88 Z\"><\/path>\n            <path data-shape=\"coeurs\" data-default-shape=\"coeurs\" d=\"M50 50 L50 88 A38 38 0 0 1 17.09 69 Z\"><\/path>\n            <path data-shape=\"particulaires\" data-default-shape=\"particulaires\" d=\"M50 50 L17.09 69 A38 38 0 0 1 17.09 31 Z\"><\/path>\n            <path data-shape=\"mini-chunks\" data-default-shape=\"mini-chunks\" d=\"M50 50 L17.09 31 A38 38 0 0 1 50 12 Z\"><\/path>\n          <\/svg>\n          <div class=\"kp-toppings-tooltip\" id=\"kp-toppings-tooltip\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"kp-toppings-detail\" id=\"kp-toppings-detail\"><\/div>\n    <\/div>\n\n    <div class=\"kp-gallery-title\" id=\"kp-gallery-title\">Applications<\/div>\n    <div class=\"kp-apps\" id=\"kp-gallery\"><\/div>\n  <\/div>\n\n<\/section>\n\n<div class=\"kp-lightbox\" id=\"kp-lightbox-toppings\" aria-hidden=\"true\">\n  <button class=\"kp-lightbox-close\" type=\"button\" aria-label=\"Close\">\u00d7<\/button>\n  <button class=\"kp-lightbox-prev\" type=\"button\" aria-label=\"Previous image\">\u2039<\/button>\n  <img decoding=\"async\" id=\"kp-lightbox-image-toppings\" src=\"\" alt=\"\">\n  <button class=\"kp-lightbox-next\" type=\"button\" aria-label=\"Next image\">\u203a<\/button>\n<\/div>\n\n<style>\n.kp-product-focus,\n.kp-product-focus *{\n  box-sizing:border-box;\n}\n\n.kp-product-focus{\n  display:grid;\n  grid-template-columns:20% 80%;\n  gap:14px;\n  align-items:start;\n  width:100%;\n  max-width:100%;\n  overflow:visible;\n}\n\n.kp-product-grid{\n  position:relative;\n  z-index:1;\n  display:grid;\n  grid-template-columns:1fr;\n  gap:12px;\n  padding-top:36px;\n}\n\n.kp-choice{\n  appearance:none;\n  -webkit-appearance:none;\n  position:relative;\n  z-index:1;\n  display:flex;\n  flex-direction:row-reverse;\n  justify-content:space-between;\n  align-items:center;\n  gap:16px;\n  width:100%;\n  min-height:78px;\n  padding:14px 24px 14px 22px;\n  background:rgba(247,244,238,.94) !important;\n  border:0 !important;\n  border-radius:4px !important;\n  cursor:pointer;\n  box-shadow:none !important;\n  overflow:hidden !important;\n  transition:transform .32s ease, background .32s ease, margin-right .32s ease, padding-right .32s ease;\n}\n\n.kp-choice img{\n  width:76px;\n  height:46px;\n  flex:0 0 76px;\n  object-fit:cover;\n  display:block;\n  margin:0;\n  border-radius:0 !important;\n  opacity:1;\n  transition:transform .32s ease, opacity .32s ease, filter .32s ease;\n}\n\n.kp-choice span{\n  flex:1;\n  display:block;\n  text-align:right;\n  padding-right:0;\n  color:#2A2520 !important;\n  font-family:\"Manrope\",sans-serif;\n  font-size:11px;\n  line-height:1.25;\n  font-weight:500;\n  letter-spacing:.044em;\n  text-transform:uppercase;\n  white-space:normal;\n  transition:color .32s ease;\n}\n\n.kp-choice:hover{\n  transform:translateX(6px);\n  background:#fff !important;\n}\n\n.kp-choice:hover img,\n.kp-choice.active img{\n  opacity:.7;\n  transform:scale(1.02);\n}\n\n.kp-choice.active{\n  margin-right:-28px;\n  padding-right:32px;\n  background:linear-gradient(145deg,#171412 0%,#241b16 55%,#1a1614 100%) !important;\n  border-radius:4px 0 0 4px !important;\n  transform:none;\n  z-index:2;\n}\n\n.kp-choice.active span{\n  color:#fff !important;\n}\n\n.kp-product-panel{\n  position:relative;\n  z-index:2;\n  min-height:720px;\n  padding:52px 58px 60px;\n  overflow:hidden;\n  background:#171412;\n  color:rgba(255,255,255,.78);\n}\n\n.kp-product-panel:before{\n  content:\"\";\n  position:absolute;\n  inset:0;\n  z-index:0;\n  pointer-events:none;\n  background:linear-gradient(180deg,rgba(23,20,18,.98) 0%,rgba(23,20,18,.94) 100%);\n}\n\n.kp-product-panel > *{\n  position:relative;\n  z-index:2;\n}\n\n.kp-product-panel h1{\n  position:relative;\n  z-index:3;\n  margin:0 0 34px;\n  color:#fff;\n  font-family:\"Manrope\",sans-serif;\n  font-size:62px;\n  line-height:.98;\n  font-weight:200;\n  letter-spacing:0;\n}\n\n.kp-product-hero{\n  display:none;\n}\n\n.kp-product-hero img{\n  width:100%;\n  height:100%;\n  object-fit:cover;\n  object-position:center right;\n  display:block;\n  opacity:.55;\n}\n\n.kp-product-hero:after{\n  content:\"\";\n  position:absolute;\n  inset:0;\n  background:\n    linear-gradient(90deg,rgba(23,20,18,1) 0%,rgba(23,20,18,.90) 34%,rgba(23,20,18,.34) 100%),\n    linear-gradient(180deg,rgba(23,20,18,.10) 0%,rgba(23,20,18,.48) 62%,rgba(23,20,18,1) 100%);\n}\n\n.kp-top-copy{\n  width:100%;\n  max-width:1040px;\n  min-height:0;\n  margin-bottom:22px;\n}\n\n.kp-intro-text,\n.kp-product-panel p{\n  color:rgba(255,255,255,.78);\n  font-family:\"Manrope\",sans-serif;\n  font-size:16px;\n  line-height:1.72;\n  font-weight:300;\n  margin:0 0 20px;\n}\n\n.kp-product-panel h4{\n  margin:34px 0 14px;\n  color:#c6a87d;\n  font-family:\"Manrope\",sans-serif;\n  font-size:13px;\n  line-height:1.2;\n  font-weight:500;\n  letter-spacing:.28em;\n  text-transform:uppercase;\n}\n\n.kp-toppings-explorer{\n  display:grid;\n  grid-template-columns:minmax(280px,390px) 1fr;\n  gap:38px;\n  align-items:start;\n  margin-top:0;\n  margin-bottom:38px;\n  padding:28px 30px;\n  background:rgba(12,10,9,.48);\n  border:1px solid rgba(198,168,125,.16);\n}\n\n.kp-toppings-explorer.is-hidden{\n  display:none;\n}\n\n.kp-toppings-wheel-wrap{\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n  align-items:flex-start;\n  padding-top:0;\n}\n\n.kp-toppings-wheel-note{\n  width:min(100%,360px);\n  margin:0 0 20px;\n  color:#c6a87d;\n  font-size:11px;\n  line-height:1.2;\n  letter-spacing:.22em;\n  text-align:center;\n  text-transform:uppercase;\n}\n\n.kp-toppings-wheel-image{\n  position:relative;\n  width:min(100%,360px);\n  margin-top:6px;\n  aspect-ratio:1\/1;\n  border-radius:50%;\n  overflow:visible;\n  box-shadow:0 18px 44px rgba(0,0,0,.32);\n  background:rgba(255,255,255,.04);\n}\n\n.kp-toppings-wheel-image img{\n  width:100%;\n  height:100%;\n  object-fit:cover;\n  display:block;\n  border-radius:50%;\n  clip-path:circle(50% at 50% 50%);\n  filter:saturate(.92) contrast(1.04) brightness(.86);\n  transition:filter .28s ease, transform .28s ease;\n}\n\n.kp-toppings-wheel-image:hover img{\n  filter:saturate(.98) contrast(1.08) brightness(.92);\n  transform:scale(1.01);\n}\n\n.kp-toppings-map{\n  position:absolute;\n  inset:0;\n  width:100%;\n  height:100%;\n  z-index:3;\n  border-radius:50%;\n  clip-path:circle(50% at 50% 50%);\n}\n\n.kp-toppings-map path{\n  cursor:pointer;\n  fill:rgba(0,0,0,0);\n  stroke:transparent;\n  stroke-width:0;\n  transition:fill .22s ease;\n}\n\n.kp-toppings-map path:hover,\n.kp-toppings-map path.active{\n  fill:rgba(0,0,0,0);\n  stroke:transparent;\n  stroke-width:0;\n}\n\n.kp-toppings-tooltip{\n  position:absolute;\n  left:0;\n  top:0;\n  z-index:20;\n  display:block;\n  padding:8px 11px;\n  color:#fff;\n  background:rgba(18,14,12,.88);\n  border:1px solid rgba(198,168,125,.34);\n  font-size:11px;\n  line-height:1;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n  pointer-events:none;\n  opacity:0;\n  transform:translate(14px,14px);\n  transition:opacity .16s ease;\n  white-space:nowrap;\n  box-shadow:0 10px 24px rgba(0,0,0,.26);\n}\n\n.kp-toppings-tooltip.is-visible{\n  opacity:1;\n}\n\n.kp-toppings-detail{\n  min-height:330px;\n}\n\n.kp-toppings-detail h3{\n  margin:0 0 10px;\n  color:#fff;\n  font-family:\"Manrope\",sans-serif;\n  font-size:31px;\n  line-height:1.08;\n  font-weight:300;\n  letter-spacing:0;\n}\n\n.kp-toppings-detail .kp-detail-lead{\n  max-width:680px;\n  margin:0 0 22px;\n  color:rgba(255,255,255,.78);\n  font-size:15px;\n  line-height:1.75;\n}\n\n.kp-detail-tags{\n  display:flex;\n  flex-wrap:wrap;\n  gap:8px;\n  margin:0 0 24px;\n}\n\n.kp-detail-variants{\n  display:flex;\n  flex-wrap:wrap;\n  gap:10px;\n  margin:0 0 20px;\n}\n\n.kp-detail-variant{\n  appearance:none;\n  border:1px solid rgba(198,168,125,.42);\n  background:transparent;\n  color:#cdb990;\n  padding:9px 13px;\n  font:inherit;\n  font-size:12px;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n  cursor:pointer;\n}\n\n.kp-detail-variant.active,\n.kp-detail-variant:hover,\n.kp-detail-variant:focus-visible{\n  border-color:#c6a87d;\n  background:rgba(198,168,125,.12);\n  color:#fff;\n  outline:none;\n}\n\n.kp-detail-tag{\n  display:inline-flex;\n  align-items:center;\n  min-height:30px;\n  padding:6px 11px;\n  border:1px solid rgba(198,168,125,.28);\n  color:#c6a87d;\n  font-size:11px;\n  line-height:1;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n}\n\n.kp-detail-visuals{\n  display:grid;\n  grid-template-columns:1fr;\n  gap:24px;\n  max-width:760px;\n}\n\n.kp-forms-slider,\n.kp-color-section{\n  min-width:0;\n}\n\n.kp-mini-slider-title,\n.kp-color-section-title{\n  margin:0 0 10px;\n  color:#c6a87d;\n  font-size:11px;\n  letter-spacing:.22em;\n  text-transform:uppercase;\n}\n\n.kp-forms-slider{\n  position:relative;\n  padding:0;\n}\n\n.kp-forms-viewport{\n  width:100%;\n  overflow:hidden;\n}\n\n.kp-forms-track{\n  display:flex;\n  transition:transform .55s cubic-bezier(.22,.61,.36,1);\n  will-change:transform;\n}\n\n.kp-forms-page{\n  flex:0 0 100%;\n  display:grid;\n  grid-template-columns:repeat(4,minmax(0,1fr));\n  gap:12px;\n}\n\n.kp-mini-card{\n  appearance:none;\n  -webkit-appearance:none;\n  position:relative;\n  width:100%;\n  height:104px;\n  display:flex;\n  align-items:flex-end;\n  padding:10px !important;\n  margin:0;\n  color:#fff !important;\n  background:\n    radial-gradient(circle at 72% 28%,rgba(255,255,255,.22),transparent 0 26%),\n    linear-gradient(145deg,var(--c1),var(--c2)) !important;\n  border:1px solid rgba(255,255,255,.10) !important;\n  border-radius:0 !important;\n  box-shadow:none !important;\n  cursor:pointer;\n  font-size:10px;\n  line-height:1.2;\n  letter-spacing:.06em;\n  text-transform:uppercase;\n  overflow:hidden;\n  transition:transform .28s ease, filter .28s ease;\n}\n\n.kp-mini-card:hover{\n  transform:translateY(-3px);\n  filter:brightness(1.08);\n}\n\n.kp-mini-card.has-photo{\n  justify-content:flex-start;\n  padding:0 !important;\n  background:#171412 !important;\n  border-color:rgba(255,255,255,.08) !important;\n  border-radius:0 !important;\n}\n\n.kp-mini-card img{\n  position:absolute;\n  inset:0;\n  width:100%;\n  height:100%;\n  object-fit:cover;\n  display:block;\n  z-index:0;\n  border-radius:0 !important;\n  transition:transform .35s ease, opacity .35s ease;\n}\n\n.kp-mini-card.has-photo:hover{\n  transform:none;\n  filter:none;\n}\n\n.kp-mini-card.has-photo:hover img{\n  transform:scale(1.045);\n}\n\n.kp-mini-card.has-photo:after{\n  content:none !important;\n  display:none !important;\n  background:none !important;\n}\n\n.kp-mini-card.has-photo:before{\n  content:none !important;\n  display:none !important;\n  background:none !important;\n}\n\n.kp-mini-card-label{\n  position:relative;\n  z-index:2;\n  display:block;\n  max-width:100%;\n  overflow:hidden;\n  text-overflow:ellipsis;\n}\n\n.kp-mini-card.has-photo .kp-mini-card-label{\n  display:none;\n}\n\n.kp-forms-arrow{\n  appearance:none;\n  -webkit-appearance:none;\n  position:absolute;\n  top:50%;\n  z-index:4;\n  width:28px;\n  height:46px;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  padding:0 !important;\n  margin:0;\n  transform:translateY(-50%);\n  color:#c6a87d !important;\n  background:rgba(12,10,9,.68) !important;\n  border:1px solid rgba(198,168,125,.26) !important;\n  border-radius:0 !important;\n  box-shadow:none !important;\n  cursor:pointer;\n  font-size:25px;\n  line-height:1;\n  transition:background .25s ease, border-color .25s ease, color .25s ease, opacity .25s ease;\n}\n\n.kp-forms-arrow:hover{\n  color:#fff !important;\n  background:rgba(198,168,125,.18) !important;\n  border-color:rgba(198,168,125,.56) !important;\n}\n\n.kp-forms-arrow:disabled{\n  opacity:0;\n  pointer-events:none;\n}\n\n.kp-forms-prev{left:-40px;}\n.kp-forms-next{right:-40px;}\n\n.kp-color-dots{\n  display:flex;\n  flex-wrap:wrap;\n  gap:12px 16px;\n}\n\n.kp-color-dot-item{\n  display:inline-flex;\n  align-items:center;\n  gap:8px;\n  min-height:28px;\n  color:rgba(255,255,255,.78);\n  font-size:11px;\n  line-height:1;\n  letter-spacing:.06em;\n  text-transform:uppercase;\n}\n\n.kp-color-dot{\n  width:22px;\n  height:22px;\n  flex:0 0 22px;\n  border-radius:50%;\n  background:linear-gradient(135deg,var(--c1),var(--c2));\n  border:1px solid rgba(255,255,255,.28);\n  box-shadow:0 0 0 1px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.18);\n}\n\n.kp-specs{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:10px;\n  margin-top:2px;\n}\n\n.kp-spec{\n  min-width:0;\n  padding:13px 14px;\n  border-left:1px solid rgba(198,168,125,.42);\n  background:rgba(255,255,255,.025);\n}\n\n.kp-spec-label{\n  display:block;\n  margin-bottom:7px;\n  color:#c6a87d;\n  font-size:10px;\n  line-height:1.2;\n  letter-spacing:.15em;\n  text-transform:uppercase;\n}\n\n.kp-spec-value{\n  display:block;\n  color:rgba(255,255,255,.82);\n  font-size:12px;\n  line-height:1.55;\n}\n\n\n.kp-gallery-title{\n  display:none;\n  color:#c6a87d;\n  font-size:12px;\n  letter-spacing:.18em;\n  text-transform:uppercase;\n  margin-top:34px;\n  margin-bottom:14px;\n}\n\n.kp-gallery-title.is-visible{\n  display:block;\n}\n\n.kp-apps{\n  display:none;\n  width:100%;\n  overflow:visible;\n  opacity:1;\n  transition:opacity .3s ease;\n}\n\n.kp-apps.is-visible{\n  display:block;\n}\n\n.kp-apps-viewport{\n  width:100%;\n  overflow:hidden;\n}\n\n.kp-apps-track{\n  display:flex;\n  gap:14px;\n  align-items:stretch;\n  transition:transform .55s cubic-bezier(.22,.61,.36,1);\n  will-change:transform;\n}\n\n.kp-app-grid{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:14px;\n}\n\n.kp-app-card{\n  appearance:none;\n  -webkit-appearance:none;\n  flex:0 0 calc((100% - 28px) \/ 3);\n  min-width:0;\n  height:176px;\n  padding:0 !important;\n  margin:0;\n  border:0 !important;\n  outline:0 !important;\n  background:transparent !important;\n  box-shadow:none !important;\n  border-radius:0 !important;\n  overflow:hidden;\n  cursor:pointer;\n  position:relative;\n}\n\n.kp-app-grid .kp-app-card{\n  width:100%;\n  height:156px;\n  flex:none;\n}\n\n.kp-app-card img{\n  width:100%;\n  height:100%;\n  object-fit:cover;\n  display:block;\n  border:0 !important;\n  border-radius:0 !important;\n  box-shadow:none !important;\n  opacity:1;\n  transition:transform .55s ease;\n}\n\n.kp-app-card:before{\n  content:none !important;\n  display:none !important;\n  background:none !important;\n}\n\n.kp-app-card:hover img{\n  transform:scale(1.055);\n}\n\n.kp-app-empty{\n  color:rgba(255,255,255,.58);\n  font-size:13px;\n  padding:18px 0;\n}\n\n.kp-app-arrow{\n  appearance:none;\n  -webkit-appearance:none;\n  position:absolute;\n  top:50%;\n  z-index:6;\n  width:38px;\n  height:54px;\n  padding:0 !important;\n  margin:0;\n  border:0 !important;\n  border-radius:0 !important;\n  background:rgba(23,20,18,.86) !important;\n  color:#fff !important;\n  box-shadow:none !important;\n  cursor:pointer;\n  font-family:Arial,sans-serif;\n  font-size:24px;\n  font-weight:200;\n  line-height:1;\n  opacity:0;\n  transform:translateY(-50%);\n  transition:opacity .25s ease, background .25s ease;\n}\n\n.kp-apps:hover .kp-app-arrow{\n  opacity:1;\n}\n\n.kp-app-prev{left:0;}\n.kp-app-next{right:0;}\n\n.kp-app-arrow:disabled{\n  opacity:0 !important;\n  pointer-events:none;\n}\n\n.kp-app-dots{\n  display:flex;\n  justify-content:center;\n  align-items:center;\n  gap:7px;\n  margin-top:13px;\n}\n\n.kp-app-dot{\n  appearance:none;\n  -webkit-appearance:none;\n  width:18px;\n  height:1px;\n  padding:0 !important;\n  margin:0;\n  border:0 !important;\n  border-radius:0 !important;\n  background:rgba(255,255,255,.20) !important;\n  box-shadow:none !important;\n  cursor:pointer;\n  transition:width .3s ease, background .3s ease;\n}\n\n.kp-app-dot.active{\n  width:28px;\n  background:#c6a87d !important;\n}\n\n.kp-lightbox{\n  position:fixed;\n  inset:0;\n  z-index:99999;\n  background:rgba(10,8,7,.92);\n  display:none;\n  align-items:center;\n  justify-content:center;\n  padding:54px 74px;\n}\n\n.kp-lightbox.active{display:flex;}\n\n.kp-lightbox img{\n  display:block;\n  max-width:86vw;\n  max-height:86vh;\n  width:auto;\n  height:auto;\n  object-fit:contain;\n  border:0 !important;\n  border-radius:0 !important;\n  box-shadow:none !important;\n}\n\n.kp-lightbox-close,\n.kp-lightbox-prev,\n.kp-lightbox-next{\n  appearance:none;\n  -webkit-appearance:none;\n  position:absolute;\n  z-index:2;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  border:1px solid rgba(255,255,255,.22) !important;\n  background:rgba(23,20,18,.72) !important;\n  color:#fff !important;\n  cursor:pointer;\n  opacity:.92;\n  transition:opacity .25s ease, background .25s ease, border-color .25s ease;\n}\n\n.kp-lightbox-close:hover,\n.kp-lightbox-prev:hover,\n.kp-lightbox-next:hover{\n  opacity:1;\n  background:rgba(198,168,125,.92) !important;\n  border-color:rgba(198,168,125,.92) !important;\n}\n\n.kp-lightbox-close{\n  top:28px;\n  right:34px;\n  width:46px;\n  height:46px;\n  border-radius:50% !important;\n  font-size:34px;\n  line-height:1;\n  font-weight:200;\n}\n\n.kp-lightbox-prev,\n.kp-lightbox-next{\n  top:50%;\n  width:54px;\n  height:54px;\n  border-radius:50% !important;\n  font-size:44px;\n  line-height:1;\n  font-weight:200;\n  transform:translateY(-50%);\n}\n\n.kp-lightbox-prev{left:34px;}\n.kp-lightbox-next{right:34px;}\n\n@media(max-width:1024px){\n  .kp-product-focus{\n    grid-template-columns:1fr;\n  }\n\n  .kp-product-grid{\n    grid-template-columns:repeat(2,1fr);\n  }\n\n  .kp-choice.active{\n    margin-right:0;\n    padding-right:24px;\n    border-radius:4px !important;\n  }\n\n  .kp-top-copy{\n    width:100%;\n    max-width:100%;\n  }\n\n  .kp-toppings-explorer{\n    grid-template-columns:1fr;\n  }\n\n  .kp-toppings-wheel-wrap{\n    padding-top:0;\n  }\n}\n\n@media(max-width:767px){\n  .kp-product-panel{\n    padding:32px 24px;\n  }\n\n  .kp-product-panel h1{\n    font-size:38px;\n  }\n\n  .kp-top-copy{\n    width:100%;\n    min-height:0;\n  }\n\n  .kp-product-grid{\n    grid-template-columns:1fr;\n  }\n\n  .kp-toppings-explorer{\n    padding:20px 16px;\n  }\n\n  .kp-toppings-wheel-image{\n    width:min(100%,280px);\n  }\n\n  .kp-toppings-explorer{\n    margin-top:0;\n  }\n\n  .kp-forms-slider{\n    padding:0 18px;\n  }\n\n  .kp-forms-page{\n    grid-template-columns:repeat(2,minmax(0,1fr));\n  }\n\n  .kp-forms-prev{left:-4px;}\n  .kp-forms-next{right:-4px;}\n\n  .kp-mini-card{\n    height:96px;\n  }\n\n  .kp-specs{\n    grid-template-columns:1fr;\n  }\n\n  .kp-app-grid{\n    grid-template-columns:1fr;\n  }\n\n  .kp-app-card,\n  .kp-app-grid .kp-app-card{\n    height:190px;\n    flex-basis:100%;\n  }\n\n  .kp-app-arrow{\n    opacity:1;\n  }\n\n  .kp-lightbox{\n    padding:54px 22px;\n  }\n}\n<\/style>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function(){\n  const root = document.querySelector(\"[data-kp-toppings]\");\n  if (!root) return;\n\n  const ajaxUrl = root.getAttribute(\"data-ajax-url\");\n  const title = root.querySelector(\"#kp-title\");\n  const content = root.querySelector(\"#kp-content\");\n  const gallery = root.querySelector(\"#kp-gallery\");\n  const galleryTitle = root.querySelector(\"#kp-gallery-title\");\n  const heroImage = root.querySelector(\"#kp-product-hero-image\");\n  const buttons = root.querySelectorAll(\".kp-choice\");\n  const wheel = root.querySelector(\"#kp-toppings-wheel\");\n  const wheelImage = wheel ? wheel.querySelector(\"img\") : null;\n  const wheelNote = root.querySelector(\".kp-toppings-wheel-note\");\n  const wheelTooltip = root.querySelector(\"#kp-toppings-tooltip\");\n  const detail = root.querySelector(\"#kp-toppings-detail\");\n  const explorer = root.querySelector(\"#kp-toppings-explorer\");\n\n  const lightbox = document.querySelector(\"#kp-lightbox-toppings\");\n  const lightboxImage = document.querySelector(\"#kp-lightbox-image-toppings\");\n  const lightboxClose = lightbox ? lightbox.querySelector(\".kp-lightbox-close\") : null;\n  const lightboxPrev = lightbox ? lightbox.querySelector(\".kp-lightbox-prev\") : null;\n  const lightboxNext = lightbox ? lightbox.querySelector(\".kp-lightbox-next\") : null;\n\n  let kpCurrentGallery = [];\n  let kpGalleryIndex = 0;\n  let kpSliderIndex = 0;\n  let kpResizeHandler = null;\n  let kpAutoplayTimer = null;\n  let kpFormsTimer = null;\n  let kpActiveKey = \"all\";\n  let kpActiveShape = \"mini-chunks\";\n  let kpActiveVariant = 0;\n  const kpMiniChunksAssetBase = \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/08\/toppings-assets\/mini-chunks\/\";\n  const kpSugarAssetBase = \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/toppings-assets\/base-sucre\/\";\n  const kpChocolateeAssetBase = \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/toppings-assets\/base-chocolat\/\";\n\n  function sugarVisuals(folder, items){\n    const catalog = kpSugarCatalog[folder] || items;\n    return catalog.map(function(item){\n      return {\n        label: item[0],\n        full: kpSugarAssetBase + \"full\/\" + folder + \"\/\" + item[1],\n        thumb: kpSugarAssetBase + \"thumb\/\" + folder + \"\/\" + item[1]\n      };\n    });\n  }\n\n  function chocolateSlug(value){\n    return value\n      .normalize(\"NFD\")\n      .replace(\/[\\u0300-\\u036f]\/g, \"\")\n      .replace(\/[\u0153\u0152]\/g, \"o\")\n      .toLowerCase()\n      .replace(\/[^a-z0-9]+\/g, \"-\")\n      .replace(\/^-+|-+$\/g, \"\");\n  }\n\n  function chocolateVisuals(folder, labels){\n    return labels.map(function(label, index){\n      const file = String(index + 1).padStart(2, \"0\") + \"-\" + chocolateSlug(label) + \".jpg\";\n      return {\n        label: label,\n        full: kpChocolateeAssetBase + \"full\/\" + folder + \"\/\" + file,\n        thumb: kpChocolateeAssetBase + \"thumb\/\" + folder + \"\/\" + file\n      };\n    });\n  }\n\n  function biscuitVisuals(folder, labels){\n    return labels.map(function(label, index){\n      const file = String(index + 1).padStart(2, \"0\") + \"-\" + chocolateSlug(label) + \".jpg\";\n      return {\n        label: label,\n        full: \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/toppings-assets\/base-biscuit\/full\/\" + folder + \"\/\" + file,\n        thumb: \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/toppings-assets\/base-biscuit\/thumb\/\" + folder + \"\/\" + file\n      };\n    });\n  }\n\n  const kpSugarCatalog = {\n    \"vermicelles\": [\n      [\"Pastel multicoloured sugar sprinkles\", \"01-vermicelles-de-sucre-multicolores-pastel.jpg\"],\n      [\"Multicoloured on a dark background sugar sprinkles\", \"02-vermicelles-de-sucre-multicolores-sur-fond-fonce.jpg\"],\n      [\"Red, white and green sugar sprinkles\", \"03-vermicelles-de-sucre-rouge-blanc-vert.jpg\"],\n      [\"Blue sugar sprinkles\", \"04-vermicelles-de-sucre-bleus.jpg\"],\n      [\"Green sugar sprinkles\", \"05-vermicelles-de-sucre-verts.jpg\"],\n      [\"Pink and blue sugar sprinkles\", \"06-vermicelles-de-sucre-roses-et-bleus.jpg\"],\n      [\"Rainbow sugar sprinkles\", \"07-vermicelles-de-sucre-arc-en-ciel.jpg\"],\n      [\"Pastel yellow and green sugar sprinkles\", \"08-vermicelles-de-sucre-pastel-jaune-et-vert.jpg\"],\n      [\"Pastel sugar sprinkles\", \"09-vermicelles-de-sucre-pastel.jpg\"],\n      [\"Pink sugar sprinkles\", \"10-vermicelles-de-sucre-roses.jpg\"],\n      [\"White sugar sprinkles\", \"11-vermicelles-de-sucre-blancs.jpg\"],\n      [\"Pink and white sugar sprinkles\", \"12-vermicelles-de-sucre-roses-et-blancs.jpg\"],\n      [\"Yellow sugar sprinkles\", \"13-vermicelles-de-sucre-jaunes.jpg\"]\n    ],\n    \"flocons\": [\n      [\"Dark chocolate flakes\", \"01-paillettes-de-chocolat-noir.jpg\"],\n      [\"Milk chocolate flakes\", \"02-paillettes-de-chocolat-au-lait.jpg\"],\n      [\"White chocolate flakes\", \"03-paillettes-de-chocolat-blanc.jpg\"],\n      [\"Mixed dark and milk chocolate flakes\", \"04-melange-de-paillettes-chocolat-noir-et-lait.jpg\"],\n      [\"Mixed dark and white chocolate flakes\", \"05-melange-de-paillettes-chocolat-noir-et-blanc.jpg\"],\n      [\"Milk fine chocolate flakes\", \"06-flocons-fins-de-chocolat-au-lait.jpg\"],\n      [\"Dark fine chocolate flakes\", \"07-flocons-fins-de-chocolat-noir.jpg\"],\n      [\"Two-tone chocolate and yellow flakes\", \"08-paillettes-bicolores-chocolat-et-jaune.jpg\"]\n    ],\n    \"formes-extrudees\": [\n      [\"Pink, blue and white sugar confetti\", \"01-confettis-de-sucre-rose-bleu-et-blanc.jpg\"],\n      [\"Multicoloured sugar confetti\", \"02-confettis-de-sucre-multicolores.jpg\"],\n      [\"White, turquoise and purple sugar pearls\", \"03-perles-de-sucre-blanc-turquoise-et-violet.jpg\"],\n      [\"Multicoloured sugar flowers\", \"04-fleurs-de-sucre-multicolores.jpg\"],\n      [\"Flamingo sugar decorations\", \"05-decors-de-sucre-flamants-roses.jpg\"],\n      [\"Pastel sugar hearts\", \"06-coeurs-de-sucre-pastel.jpg\"],\n      [\"Pink sugar flowers\", \"07-fleurs-de-sucre-roses.jpg\"],\n      [\"Orange sugar hearts\", \"08-coeurs-de-sucre-orange.jpg\"],\n      [\"Pink sugar hearts\", \"09-coeurs-de-sucre-roses.jpg\"],\n      [\"Pink, purple and white sugar hearts\", \"10-coeurs-de-sucre-rose-violet-et-blanc.jpg\"],\n      [\"White and blue sugar flakes\", \"11-flocons-de-sucre-blancs-et-bleus.jpg\"],\n      [\"Multicoloured sugar letters and numbers\", \"12-lettres-et-chiffres-de-sucre-multicolores.jpg\"],\n      [\"Autumn sugar decorations\", \"13-decors-de-sucre-automne.jpg\"],\n      [\"Dark and white sugar decorations\", \"14-decors-de-sucre-noir-et-blanc.jpg\"],\n      [\"Multicoloured sugar numbers\", \"15-chiffres-de-sucre-multicolores.jpg\"],\n      [\"Orange sugar decorations\", \"16-decors-de-sucre-orange.jpg\"],\n      [\"Multicoloured sugar stars\", \"17-etoiles-de-sucre-multicolores.jpg\"],\n      [\"Blue and yellow sugar stars\", \"18-etoiles-de-sucre-bleues-et-jaunes.jpg\"]\n    ],\n    \"non-pareilles\": [\n      [\"Red, blue and white nonpareils\", \"01-non-pareilles-rouge-bleu-et-blanc.jpg\"],\n      [\"Multicoloured nonpareils\", \"02-non-pareilles-multicolores.jpg\"],\n      [\"Red, green and white nonpareils\", \"03-non-pareilles-rouge-vert-et-blanc.jpg\"],\n      [\"Blue nonpareils\", \"04-non-pareilles-bleues.jpg\"],\n      [\"Purple nonpareils\", \"05-non-pareilles-violettes.jpg\"],\n      [\"Chocolate nonpareils\", \"06-non-pareilles-chocolat.jpg\"],\n      [\"Green nonpareils\", \"07-non-pareilles-vertes.jpg\"],\n      [\"Gold nonpareils\", \"08-non-pareilles-dorees.jpg\"],\n      [\"Black nonpareils\", \"09-non-pareilles-noires.jpg\"],\n      [\"Red nonpareils\", \"10-non-pareilles-rouges.jpg\"],\n      [\"White nonpareils\", \"11-non-pareilles-blanches.jpg\"]\n    ],\n    \"perles-moelleuses\": [\n      [\"Yellow soft pearls\", \"01-perles-moelleuses-jaunes.jpg\"],\n      [\"Blue soft pearls\", \"02-perles-moelleuses-bleues.jpg\"],\n      [\"Milk chocolate soft pearls\", \"03-perles-moelleuses-chocolat-au-lait.jpg\"],\n      [\"Caramel soft pearls\", \"04-perles-moelleuses-caramel.jpg\"],\n      [\"Cocoa soft pearls\", \"05-perles-moelleuses-cacao.jpg\"],\n      [\"Chocolate and white soft pearls\", \"06-perles-moelleuses-chocolat-et-blanc.jpg\"],\n      [\"White soft pearls\", \"07-perles-moelleuses-blanches.jpg\"],\n      [\"Dark chocolate soft pearls\", \"08-perles-moelleuses-chocolat-noir.jpg\"],\n      [\"Sunshine yellow soft pearls\", \"09-perles-moelleuses-jaune-soleil.jpg\"],\n      [\"Pistachio green soft pearls\", \"10-perles-moelleuses-vert-pistache.jpg\"],\n      [\"Red soft pearls\", \"11-perles-moelleuses-rouges.jpg\"],\n      [\"Pink soft pearls\", \"12-perles-moelleuses-roses.jpg\"],\n      [\"Ivory soft pearls\", \"13-perles-moelleuses-ivoire.jpg\"]\n    ],\n    \"eclats-caramelises\": [\n      [\"Pistachio pieces\", \"02-eclats-de-pistache.jpg\"],\n      [\"Coconut flakes\", \"04-paillettes-de-noix-de-coco.jpg\"],\n      [\"Caramelised coconut pieces\", \"06-eclats-de-coco-caramelises.jpg\"],\n      [\"Caramelised nuts\", \"08-noix-caramelisees.jpg\"],\n      [\"Almond pieces\", \"10-eclats-d-amandes.jpg\"],\n      [\"Hazelnut pieces\", \"12-eclats-de-noisettes.jpg\"]\n    ]\n  };\n\n  const shapeLibrary = {\n    \"mini-chunks\": {\n      label: \"Mini chunks\",\n      lead: \"Small regular or irregular pieces for visible inclusions, distinctive mouthfeel and a premium finish.\",\n      tags: [\"Cookies\", \"Muffins\", \"Ice cream\", \"Granola\", \"Bars\"],\n      forms: [\"Mini cubes\", \"Irregular chunks\", \"Crushed drops\", \"Micro inclusions\", \"Chips\", \"Pieces\", \"Plaques\", \"Granules\"],\n      visuals: [\n        {label:\"Dark chocolate mini cubes\", file:\"01-mini-chunks-dark-10x10.jpg\"},\n        {label:\"White chocolate chunks\", file:\"02-mini-chunks-white-10x10.jpg\"},\n        {label:\"Milk chocolate chunks\", file:\"03-mini-chunks-milk-13x13.jpg\"},\n        {label:\"Aerated milk chocolate mini chunks\", file:\"04-mini-chunks-aerated-milk.jpg\"},\n        {label:\"Thick dark chocolate chunks\", file:\"05-mini-chunks-dark-10x10-thick.jpg\"},\n        {label:\"Irregular dark chocolate chunks\", file:\"06-mini-chunks-irregular-dark.jpg\"},\n        {label:\"Bronze chunks\", file:\"07-mini-chunks-bronze.jpg\"},\n        {label:\"Chocolate mixed chunks\", file:\"08-mini-chunks-mixed.jpg\"}\n      ],\n      colors: [\"Dark chocolate\", \"Milk chocolate\", \"White chocolate\", \"Caramel\", \"Two-colour\"]\n    },\n    \"sugar-vermicelles\": {\n      label: \"Sugar Sprinkles\",\n      lead: \"Crunchy sugar-based decorations, available in single colours or mixes, to add colour and texture to pastries, chocolates and ice cream.\",\n      tags: [\"Pastries\", \"Ice cream\", \"Chocolates\", \"Surface decoration\"],\n      forms: [\"Pastel mix\", \"Multicoloured mix\", \"Bright mix\", \"Blue\", \"Green\", \"Pink\", \"Yellow\", \"White\", \"White and pink\", \"Classic mix\"],\n      visuals: sugarVisuals(\"vermicelles\", [\n        [\"Pastel mix\", \"vermicelli-mix-picture-1.jpg\"],\n        [\"Multicoloured mix\", \"vermicelli-mixed-colours-picture-1.jpg\"],\n        [\"Bright mix\", \"vermicelli-mixed-colours-picture-2.jpg\"],\n        [\"Blue sprinkles\", \"vermicelli-blue-picture.jpg\"],\n        [\"Green sprinkles\", \"vermicelli-green-picture.jpg\"],\n        [\"Pink sprinkles\", \"vermicelli-pink-picture.jpg\"],\n        [\"Yellow sprinkles\", \"vermicelli-yellow-picture.jpg\"],\n        [\"White sprinkles\", \"vermicelli-white-picture.jpg\"],\n        [\"White and pink sprinkles\", \"vermicelli-white-pink-picture.jpg\"],\n        [\"Classic mix\", \"vermicelli-mixed-colours-picture-3.jpg\"]\n      ]),\n      colors: [\"Single colour\", \"2-colour mix\", \"6-colour mix\", \"Cocoa\", \"Natural colourings\"],\n      hideColors: true,\n      specs: [\n        [\"Size options\", \"Length and thickness adjustable on request (1.4 to 3.2 mm)\"],\n        [\"Composition\", \"Single colour or mixes of up to 6 colours\"],\n        [\"Packaging\", \"1 kg bag, 2.5 kg or 5 kg carton, 20 kg sack\"]\n      ]\n    },\n    \"sugar-flocons\": {\n      label: \"Cocoa Flakes & Shavings\",\n      lead: \"Flakes and shavings in different sizes and compositions for an indulgent, crunchy and eye-catching finish.\",\n      tags: [\"Donuts\", \"Croissants\", \"Muesli\", \"Yoghurts\", \"Ice cream\"],\n      forms: [\"Dark flakes\", \"Milk flakes\", \"White flakes\", \"Duomix\", \"White flakes\", \"Fine flakes\", \"2 mm flakes\", \"3 mm flakes\", \"Duo-mix flakes\", \"Milk flakes\"],\n      visuals: sugarVisuals(\"flocons\", [\n        [\"Dark flakes\", \"01-paillette-noire.jpg\"],\n        [\"Milk flakes\", \"02-paillette-lait.jpg\"],\n        [\"White flakes\", \"03-paillette-blanche.jpg\"],\n        [\"Duomix\", \"04-duomix.jpg\"],\n        [\"White flakes\", \"05-flocon-blanc.jpg\"],\n        [\"Fine flakes\", \"06-paillette-noire-fine.jpg\"],\n        [\"2 mm flakes\", \"07-paillette-noire-2mm.jpg\"],\n        [\"3 mm flakes\", \"08-paillette-noire-3mm.jpg\"],\n        [\"Duo-mix flakes\", \"09-flocon-duomix.jpg\"],\n        [\"Milk flakes\", \"10-flocon-lait.jpg\"]\n      ]),\n      colors: [\"Dark\", \"Milk\", \"White\", \"Duomix\", \"Reduced sugar\"],\n      hideColors: true,\n      specs: [\n        [\"Size options\", \"From 1 mm to 8 mm\"],\n        [\"Types\", \"With or without glazing agent\"],\n        [\"Composition\", \"White, milk, dark or reduced sugar\"],\n        [\"Packaging\", \"5 kg carton or 20 kg sack\"]\n      ]\n    },\n    \"sugar-non-pareilles\": {\n      label: \"Crunchy Nonpareils\",\n      lead: \"Tiny colourful crunchy pearls that add crunch, a festive touch and a distinctive visual signature to recipes.\",\n      tags: [\"Donuts\", \"Muffins\", \"Ice cream\", \"Confectionery\"],\n      forms: [\"Multicoloured mix\", \"Pastel mix\", \"Three-colour mix\"],\n      visuals: sugarVisuals(\"non-pareilles\", [\n        [\"Multicoloured mix\", \"crunchy-pearls-mixed-colours-picture-1.jpg\"],\n        [\"Pastel mix\", \"crunchy-pearls-mixed-colours-picture-2.jpg\"],\n        [\"Three-colour mix\", \"crunchy-pearls-blue-red-white-picture.jpg\"]\n      ]),\n      colors: [\"White\", \"Pink\", \"Red\", \"Blue\", \"8-colour mix\"],\n      hideColors: true,\n      specs: [\n        [\"Size options\", \"3 different sizes (1.4 to 2 mm)\"],\n        [\"Composition\", \"Single colour or mixes of up to 8 colours\"],\n        [\"Packaging\", \"1 kg bag, 2.5 kg or 5 kg carton, 20 kg sack\"]\n      ]\n    },\n    \"sugar-perles-moelleuses\": {\n      label: \"Soft Pearls & Crunchy Pieces\",\n      lead: \"Pearls and pieces with firm or soft textures, available in a range of flavours and colours for generous, customisable decorations.\",\n      tags: [\"Cupcakes\", \"Caf\u00e9s\", \"Cookies\", \"Ice cream\", \"Donuts\"],\n      forms: [\"Yellow\", \"Red\", \"Pistachio\", \"Banana\", \"Cinnamon\", \"Coffee\", \"Strawberry\", \"Caramel\", \"Coconut\", \"Cocoa mix\"],\n      visuals: sugarVisuals(\"perles-moelleuses\", [\n        [\"Yellow pearls\", \"crunchy-pearls-yellow-picture.jpg\"],\n        [\"Red pearls\", \"crunchy-pearls-red-picture.jpg\"],\n        [\"Pistachio pearls\", \"crunchy-pearls-pistachio-flavour-picture.jpg\"],\n        [\"Banana pearls\", \"crunchy-pearls-banana-flavour-picture.jpg\"],\n        [\"Cinnamon pearls\", \"crunchy-pearls-cinnamon-flavour-picture.jpg\"],\n        [\"Coffee pearls\", \"crunchy-pearls-coffee-flavour-picture.jpg\"],\n        [\"Strawberry pearls\", \"crunchy-pearls-strawberry-flavour-picture.jpg\"],\n        [\"Caramel pearls\", \"crunchy-pearls-caramel-flavour-picture.jpg\"],\n        [\"Coconut pearls\", \"crunchy-pearls-coconut-flavour-picture.jpg\"],\n        [\"Mixed cocoa pearls\", \"crunchy-pearls-cocoa-mix-picture.jpg\"]\n      ]),\n      colors: [\"Yellow\", \"Red\", \"Blue\", \"Pistachio\", \"Caramel\", \"Strawberry\"],\n      hideColors: true,\n      specs: [\n        [\"Size options\", \"2 different sizes (2 to 4.5 mm)\"],\n        [\"Composition\", \"Single colour or mixes\"],\n        [\"Packaging\", \"1 kg bag, 2.5 kg or 5 kg carton, 20 kg sack\"]\n      ]\n    },\n    \"sugar-formes-extrudees\": {\n      label: \"Extruded Shapes\",\n      lead: \"Crunchy, playful and festive decorations in a wide range of shapes and mixes to bring pastries, chocolates and ice cream to life.\",\n      tags: [\"Pastries\", \"Ice cream\", \"Chocolates\", \"Seasonal\"],\n      forms: [\"Pastel confetti\", \"Multicoloured confetti\", \"Numbers\", \"Mini hearts\", \"Pastel hearts\", \"Red hearts\", \"Stars\", \"Letters\", \"Butterflies\", \"Christmas mix\"],\n      visuals: sugarVisuals(\"formes-extrudees\", [\n        [\"Pastel confetti\", \"confetti-mixed-colours-pastel-picture-1.jpg\"],\n        [\"Multicoloured confetti\", \"confetti-mixed-colours-picture.jpg\"],\n        [\"Numbers\", \"sugar-numbers-picture.jpg\"],\n        [\"Mini hearts\", \"sugar-hearts-mini-white-pink-red-picture.jpg\"],\n        [\"Pastel hearts\", \"sugar-hearts-white-pink-purple-picture.jpg\"],\n        [\"Red hearts\", \"sugar-hearts-red-picture.jpg\"],\n        [\"Stars\", \"sugar-stars-yellow-blue-picture.jpg\"],\n        [\"Letters\", \"sugar-letters-picture.jpg\"],\n        [\"Butterflies\", \"sugar-butterflies-mixed-colours-picture.jpg\"],\n        [\"Christmas mix\", \"sugar-christmas-mix-picture-1.jpg\"]\n      ]),\n      colors: [\"Pink\", \"Red\", \"White\", \"Blue\", \"Yellow\", \"Mixes\"],\n      hideColors: true,\n      specs: [\n        [\"Size options\", \"Various sizes, bespoke designs on request\"],\n        [\"Composition\", \"Single colour or mixes\"],\n        [\"Packaging\", \"1 kg bag, 2.5 kg or 5 kg carton, 20 kg sack\"]\n      ]\n    },\n    \"sugar-eclats-caramelises\": {\n      label: \"Caramelised Nut Pieces & Praline Pastes\",\n      lead: \"A range of caramelised nuts, in pieces or paste form, to enhance texture, indulgence and the premium character of recipes.\",\n      tags: [\"Chocolate making\", \"Confectionery fillings\", \"Ice cream decoration\", \"Cakes\"],\n      forms: [\"Fine pieces\", \"Crunchy pieces\", \"Medium particle size\", \"Large particle size\", \"Praline paste\", \"With salt\", \"With butter\", \"Bespoke\"],\n      visuals: sugarVisuals(\"eclats-caramelises\", []),\n      colors: [\"Almond\", \"Hazelnut\", \"Peanut\", \"Caramel\", \"Praline\", \"Salt and butter\"],\n      hideColors: true,\n      specs: [\n        [\"Size options\", \"Various particle sizes available\"],\n        [\"Types\", \"Options with added salt or butter\"],\n        [\"Composition\", \"Minimum 20% nuts\"]\n      ]\n    },\n    \"chocolate-chunks-batons\": {\n      label: \"Chunks & Chocolate Batons\",\n      variants: [\n        {\n          label: \"Chunks\",\n          lead: \"Regular, irregular, aerated or coated chunks for generous, visible chocolate inclusions in cookies, ice cream, doughnuts and muesli.\",\n          tags: [\"Cookies\", \"Ice cream\", \"Donuts\", \"Muesli\"],\n          forms: [\"Dark bronze irregular dark chocolate chunks\", \"Regular dark chocolate, 10 mm chunks\", \"White chocolate, 10 mm chunks\", \"Aerated milk chocolate chunks\", \"Irregular dark chocolate chunks\", \"Aerated dark chocolate chunks\", \"Milk chocolate, 13 mm chunks\", \"Dark gold irregular dark chocolate chunks\"],\n          visuals: chocolateVisuals(\"chunks\", [\"Dark bronze irregular dark chocolate chunks\", \"Regular dark chocolate, 10 mm chunks\", \"White chocolate, 10 mm chunks\", \"Aerated milk chocolate chunks\", \"Irregular dark chocolate chunks\", \"Aerated dark chocolate chunks\", \"Milk chocolate, 13 mm chunks\", \"Dark gold irregular dark chocolate chunks\"]),\n          specs: [[\"Size options\", \"Width and length from 3 to 13 mm, height from 1 to 6 mm\"], [\"Types\", \"Regular, irregular, mixed, aerated or coated\"], [\"Composition\", \"Standard or speciality chocolate\"], [\"Packaging\", \"10 kg or 20 kg carton\"]]\n        },\n        {\n          label: \"Chocolate Batons\",\n          lead: \"Moulded or extruded batons designed for pains au chocolat, viennoiserie and demanding bakery applications.\",\n          tags: [\"Pains au chocolat\", \"Viennoiserie\", \"Bakery\"],\n          forms: [\"Milk chocolate chocolate batons\", \"Dark chocolate in sleeves chocolate batons\", \"Dark chocolate chocolate batons\", \"Long dark chocolate chocolate batons\"],\n          visuals: chocolateVisuals(\"batons-boulangers\", [\"Milk chocolate chocolate batons\", \"Dark chocolate in sleeves chocolate batons\", \"Dark chocolate chocolate batons\", \"Long dark chocolate chocolate batons\"]),\n          specs: [[\"Size options\", \"Width 8 to 10 mm, length 8 to 36 cm, height 4 to 6 mm\"], [\"Types\", \"Moulded or extruded\"], [\"Composition\", \"Standard chocolate, specialities or CBE\"], [\"Packaging\", \"1.6 kg or 2.5 kg sleeve, 4 kg or 10 kg carton\"]]\n        }\n      ]\n    },\n    \"chocolate-copeaux-micro\": {\n      label: \"Shavings & Micro Curls\",\n      variants: [\n        {\n          label: \"Standard Shavings\",\n          lead: \"White, milk or dark chocolate shavings for a generous, indulgent finish on entremets, merveilleux, Black Forest gateaux and ice cream.\",\n          tags: [\"Black Forest gateau\", \"Merveilleux\", \"Ice cream\", \"Entremets\"],\n          forms: [\"Dark chocolate shavings\", \"Milk chocolate shavings\", \"White chocolate shavings\"],\n          visuals: chocolateVisuals(\"copeaux\", [\"Dark chocolate shavings\", \"Milk chocolate shavings\", \"White chocolate shavings\"]),\n          specs: [[\"Size options\", \"Single size, thickness adjustable on request\"], [\"Composition\", \"Standard chocolate, specialities or CBE\"], [\"Packaging\", \"2.5 kg to 12 kg carton\"]]\n        },\n        {\n          label: \"Micro curls\",\n          lead: \"Classic, marbled or flavoured micro curls for delicate decoration and chocolate texture in muesli, pastries, ice cream and doughnuts.\",\n          tags: [\"Muesli\", \"Patisserie\", \"Donuts\", \"Ice cream\"],\n          forms: [\"Three-chocolate micro curls\", \"Dark chocolate, 27 mm micro curls\", \"Milk chocolate, 27 mm micro curls\", \"Lime micro curls\", \"Dark and white chocolate duo micro curls\", \"Marbled chocolate micro curls\", \"White chocolate, 15 mm micro curls\", \"White chocolate, 27 mm micro curls\", \"Dark chocolate, 15 mm micro curls\", \"Caramel micro curls\", \"Milk chocolate, 12 mm micro curls\", \"Strawberry micro curls\"],\n          visuals: chocolateVisuals(\"micro-copeaux\", [\"Three-chocolate micro curls\", \"Dark chocolate, 27 mm micro curls\", \"Milk chocolate, 27 mm micro curls\", \"Lime micro curls\", \"Dark and white chocolate duo micro curls\", \"Marbled chocolate micro curls\", \"White chocolate, 15 mm micro curls\", \"White chocolate, 27 mm micro curls\", \"Dark chocolate, 15 mm micro curls\", \"Caramel micro curls\", \"Milk chocolate, 12 mm micro curls\", \"Strawberry micro curls\"]),\n          specs: [[\"Size options\", \"Width from 4 to 27 mm\"], [\"Types\", \"Tight, loose or open\"], [\"Composition\", \"Standard chocolate, specialities or CBE\"], [\"Packaging\", \"2.5 kg, 4 kg or 12 kg carton\"]]\n        }\n      ]\n    },\n    \"chocolate-pistoles-pepites\": {\n      label: \"Callets & Chips\",\n      lead: \"Callets, drops and chips in white, milk, dark, caramel, blond or ruby chocolate for indulgent inclusions and decorations.\",\n      tags: [\"Cookies\", \"Brioches\", \"Muffins\", \"Pastries\"],\n      forms: [\"Dark chocolate callets\", \"Milk chocolate callets\", \"Fine dark chocolate chips\", \"Fine milk chocolate chips\", \"White chocolate chips\", \"Caramel chocolate chips\", \"Dark chocolate drops\", \"Milk chocolate drops\", \"White chocolate chips\", \"Milk chocolate with a chocolate bar callets\", \"Aerated dark chocolate callets\", \"Milk chocolate callets\", \"White chocolate callets\", \"Pink ruby chocolate callets\", \"Caramel chocolate callets\", \"Crunchy milk chocolate chips\", \"Milk chocolate drops\", \"Irregular dark chocolate chips\"],\n      visuals: chocolateVisuals(\"pistoles-pepites\", [\"Dark chocolate callets\", \"Milk chocolate callets\", \"Fine dark chocolate chips\", \"Fine milk chocolate chips\", \"White chocolate chips\", \"Caramel chocolate chips\", \"Dark chocolate drops\", \"Milk chocolate drops\", \"White chocolate chips\", \"Milk chocolate with a chocolate bar callets\", \"Aerated dark chocolate callets\", \"Milk chocolate callets\", \"White chocolate callets\", \"Pink ruby chocolate callets\", \"Caramel chocolate callets\", \"Crunchy milk chocolate chips\", \"Milk chocolate drops\", \"Irregular dark chocolate chips\"]),\n      hideColors: true,\n      specs: [[\"Size options\", \"From 3,000 to 120,000 pieces per kg\"], [\"Types\", \"Vibrated, non-vibrated or aerated\"], [\"Composition\", \"Standard chocolate, specialities or CBE\"], [\"Packaging\", \"10 kg or 20 kg carton\"]]\n    },\n    \"chocolate-pencils-enroules\": {\n      label: \"Pencils & Curls\",\n      lead: \"Chocolate pencils and curls that add volume, height and a refined patisserie finish to cakes, entremets and ice cream.\",\n      tags: [\"Cakes\", \"Entremets\", \"Ice cream\", \"Decoration\"],\n      forms: [\"Fine white chocolate pencils\", \"White and dark chocolate pencils\", \"Dark chocolate curls\", \"Dark chocolate pencils\", \"White chocolate pencils\", \"Dark and white chocolate curls\", \"White and ruby chocolate curls\", \"Marbled chocolate curls\", \"Extra-fine white chocolate pencils\", \"Marbled chocolate pencils\", \"Decorated white and dark chocolate pencils\", \"White chocolate pencils\", \"Thick white chocolate pencils\", \"Fine dark and white chocolate curls\", \"Dark and white chocolate curls\", \"Coloured pencils\", \"Dark and white chocolate pencils\", \"Long white chocolate pencils\", \"Long marbled chocolate pencils\", \"Wide dark and white chocolate curls\", \"Wide white and ruby chocolate curls\", \"Short dark and white chocolate curls\"],\n      visuals: chocolateVisuals(\"pencils-enroules\", [\"Fine white chocolate pencils\", \"White and dark chocolate pencils\", \"Dark chocolate curls\", \"Dark chocolate pencils\", \"White chocolate pencils\", \"Dark and white chocolate curls\", \"White and ruby chocolate curls\", \"Marbled chocolate curls\", \"Extra-fine white chocolate pencils\", \"Marbled chocolate pencils\", \"Decorated white and dark chocolate pencils\", \"White chocolate pencils\", \"Thick white chocolate pencils\", \"Fine dark and white chocolate curls\", \"Dark and white chocolate curls\", \"Coloured pencils\", \"Dark and white chocolate pencils\", \"Long white chocolate pencils\", \"Long marbled chocolate pencils\", \"Wide dark and white chocolate curls\", \"Wide white and ruby chocolate curls\", \"Short dark and white chocolate curls\"]),\n      hideColors: true,\n      specs: [[\"Size options\", \"Width from 40 to 200 mm\"], [\"Types\", \"Single colour, two colours or marbled\"], [\"Composition\", \"Standard chocolate\"], [\"Packaging\", \"Outer box\"]]\n    },\n    \"chocolate-grandes-decorations\": {\n      label: \"Large Decorations\",\n      lead: \"Large white, milk, dark, marbled or coloured chocolate pieces for a distinctive visual finish on desserts, entremets and ice cream.\",\n      tags: [\"Cakes\", \"Entremets\", \"Ice cream\", \"Desserts\"],\n      forms: [\"Dark chocolate large decoration\", \"Milk chocolate decorations\", \"Dark chocolate decorations\", \"Marbled chocolate decorations\", \"Milk chocolate pencils\", \"Marbled chocolate pencils\", \"Decorated milk chocolate pencils\", \"Ruby chocolate pencils\", \"White chocolate pencils\", \"Dark and white chocolate curls\", \"Dark and white chocolate decorations\", \"Dark and ruby chocolate decorations\", \"Orange chocolate large decorations\", \"Pink chocolate large decorations\", \"Green and pink chocolate large decorations\", \"Dark and white chocolate large decorations\", \"Marbled chocolate curls\", \"White and dark chocolate curls\", \"White and ruby chocolate curls\"],\n      visuals: chocolateVisuals(\"grandes-decorations\", [\"Dark chocolate large decoration\", \"Milk chocolate decorations\", \"Dark chocolate decorations\", \"Marbled chocolate decorations\", \"Milk chocolate pencils\", \"Marbled chocolate pencils\", \"Decorated milk chocolate pencils\", \"Ruby chocolate pencils\", \"White chocolate pencils\", \"Dark and white chocolate curls\", \"Dark and white chocolate decorations\", \"Dark and ruby chocolate decorations\", \"Orange chocolate large decorations\", \"Pink chocolate large decorations\", \"Green and pink chocolate large decorations\", \"Dark and white chocolate large decorations\", \"Marbled chocolate curls\", \"White and dark chocolate curls\", \"White and ruby chocolate curls\"]),\n      hideColors: true,\n      specs: [[\"Size options\", \"Wide choice available\"], [\"Types\", \"Single colour, two colours or marbled\"], [\"Composition\", \"Standard chocolate\"], [\"Packaging\", \"Outer box\"]]\n    },\n    \"chocolate-cuts\": {\n      label: \"Cuts\",\n      lead: \"Plaques, triangles and graphic decorations in white, dark, marbled or coloured chocolate to add structure and contrast to patisserie creations.\",\n      tags: [\"Cakes\", \"Entremets\", \"Desserts\", \"Decoration\"],\n      forms: [\"White and ruby chocolate cuts\", \"White and dark chocolate plaques\", \"Triangular marbled chocolate cuts\", \"White and dark chocolate triangles\", \"Fine white and ruby chocolate cuts\", \"White and ruby chocolate plaques\", \"White chocolate with dark dots triangles\", \"White chocolate with dark stripes triangles\", \"White chocolate with multicoloured stripes cuts\", \"Striped white chocolate sticks\"],\n      visuals: chocolateVisuals(\"cuts\", [\"White and ruby chocolate cuts\", \"White and dark chocolate plaques\", \"Triangular marbled chocolate cuts\", \"White and dark chocolate triangles\", \"Fine white and ruby chocolate cuts\", \"White and ruby chocolate plaques\", \"White chocolate with dark dots triangles\", \"White chocolate with dark stripes triangles\", \"White chocolate with multicoloured stripes cuts\", \"Striped white chocolate sticks\"]),\n      hideColors: true\n    },\n    \"biscuit-lentilles\": {\n      label: \"Chocolate Lentils\",\n      lead: \"A colourful alternative to sugar decorations, chocolate lentils add colour, crunch and consistency to ice cream, cookies, yoghurts and chocolate bars.\",\n      tags: [\"Ice cream\", \"Cookies\", \"Yoghurts\", \"Chocolate bars\"],\n      forms: [\"Crushed multicoloured chocolate lentils\", \"Crushed coloured chocolate lentils\", \"Red, green, yellow and black chocolate lentils\", \"Multicoloured chocolate lentils\", \"Pastel chocolate lentils\", \"Multicoloured on a white background chocolate lentils\", \"Scattered multicoloured chocolate lentils\", \"Scattered pastel chocolate lentils\", \"Orange and red chocolate lentils\", \"Naturally coloured chocolate lentils\", \"Pastel blue, pink and green chocolate lentils\", \"Multicoloured in bulk chocolate lentils\"],\n      visuals: biscuitVisuals(\"lentilles-chocolat\", [\"Crushed multicoloured chocolate lentils\", \"Crushed coloured chocolate lentils\", \"Red, green, yellow and black chocolate lentils\", \"Multicoloured chocolate lentils\", \"Pastel chocolate lentils\", \"Multicoloured on a white background chocolate lentils\", \"Scattered multicoloured chocolate lentils\", \"Scattered pastel chocolate lentils\", \"Orange and red chocolate lentils\", \"Naturally coloured chocolate lentils\", \"Pastel blue, pink and green chocolate lentils\", \"Multicoloured in bulk chocolate lentils\"]),\n      hideColors: true,\n      specs: [[\"Characteristics\", \"Bake-stable recipes for pre-bake applications\"], [\"Colour protection\", \"Colour-safe recipes to prevent colour bleeding\"], [\"Options\", \"Vegan, cocoa-free ChoViva and customisation options\"]]\n    },\n    \"biscuit-cereales-enrobees\": {\n      label: \"Coated Extruded Cereals\",\n      lead: \"Crunchy cereals coated in chocolate or compound coating, available in a wide variety of formats, flavours and colours.\",\n      tags: [\"Donuts\", \"Yoghurts\", \"Ice cream\", \"Cakes\"],\n      forms: [\"Mixed coated extruded cereals\", \"Dark chocolate coated extruded cereals\", \"Dark chocolate rings coated extruded cereals\", \"Three-chocolate coated cereal pearls\", \"Mixed chocolate coated cereal pearls\", \"Caramel coated cereal pearls\", \"Dark chocolate coated cereal pearls\", \"Metallic coated cereal pearls\", \"Multicoloured coated cereal pearls\", \"White chocolate coated cereal pearls\", \"Milk chocolate coated cereal pearls\", \"Red coated cereal pearls\", \"Metallic red coated cereal pearls\", \"Blue coated cereal pearls\", \"White and copper coated cereal pearls\"],\n      visuals: biscuitVisuals(\"cereales-enrobees\", [\"Mixed coated extruded cereals\", \"Dark chocolate coated extruded cereals\", \"Dark chocolate rings coated extruded cereals\", \"Three-chocolate coated cereal pearls\", \"Mixed chocolate coated cereal pearls\", \"Caramel coated cereal pearls\", \"Dark chocolate coated cereal pearls\", \"Metallic coated cereal pearls\", \"Multicoloured coated cereal pearls\", \"White chocolate coated cereal pearls\", \"Milk chocolate coated cereal pearls\", \"Red coated cereal pearls\", \"Metallic red coated cereal pearls\", \"Blue coated cereal pearls\", \"White and copper coated cereal pearls\"]),\n      hideColors: true,\n      specs: [[\"Size\", \"Options available on request\"], [\"Characteristics\", \"Colour-safe recipes, with or without glazing agent\"], [\"Flavours\", \"Natural flavouring, coffee or tangy flavour options\"], [\"Options\", \"Vegan, cocoa-free ChoViva or organic\"]]\n    },\n    \"biscuit-eclats\": {\n      label: \"Biscuit Pieces\",\n      lead: \"Crunchy or soft pieces that add biscuit flavour and a more intense textural experience to recipes.\",\n      tags: [\"Ice cream\", \"Entremets\", \"Milkshakes\", \"Mueslis\"],\n      forms: [\"Petit beurre biscuit pieces\", \"Chocolate biscuit pieces\", \"Shortbread pieces\", \"Crushed amaretti\", \"Brownie cubes\", \"Pink biscuit pieces\", \"Crunchy cereal and biscuit mix\", \"Mini shortbread biscuits\"],\n      visuals: biscuitVisuals(\"eclats-biscuits\", [\"Petit beurre biscuit pieces\", \"Chocolate biscuit pieces\", \"Shortbread pieces\", \"Crushed amaretti\", \"Brownie cubes\", \"Pink biscuit pieces\", \"Crunchy cereal and biscuit mix\", \"Mini shortbread biscuits\"]),\n      hideColors: true,\n      specs: [[\"Aspect\", \"Crunchy or soft\"], [\"Applications\", \"Formulations adapted to moist, frozen, ambient or chilled applications\"], [\"Recipes\", \"Speculoos, Oreo-style, petit beurre, Breton shortbread, sponge fingers, crumble, macarons, amaretti, brownie, feuilletine, cookie dough and savoury options\"]]\n    },\n    \"etoiles\": {\n      label: \"Star Shapes\",\n      lead: \"Ready-to-use decorations for seasonal applications, desserts, ice cream and pastries.\",\n      tags: [\"Decoration\", \"Seasonal\", \"Patisserie\", \"Ice cream making\"],\n      forms: [\"Stars\", \"Micro stars\", \"Flat stars\", \"Thick stars\", \"White stars\", \"Coloured stars\", \"Fine stars\", \"Decorative stars\"],\n      colors: [\"White\", \"Golden\", \"Chocolate\", \"Pink\", \"Red\"]\n    },\n    \"vermicelles\": {\n      label: \"Sprinkles\",\n      lead: \"Fine or short formats for surface decoration, coatings, doughnuts, ice cream and dessert cups.\",\n      tags: [\"Topping\", \"Surface decoration\", \"Donuts\", \"Ice cream\"],\n      forms: [\"Fine\", \"Short\", \"Long\", \"Extra-fine\", \"Milk chocolate sprinkles\", \"Dark chocolate sprinkles\", \"White sprinkles\", \"Coloured sprinkles\"],\n      colors: [\"Dark\", \"Milk\", \"White\", \"Coloured\", \"Caramel\"]\n    },\n    \"particulieres\": {\n      label: \"Bespoke Shapes\",\n      lead: \"Bespoke shapes developed to create a strong visual signature in the recipe or decoration.\",\n      tags: [\"Bespoke\", \"Signature\", \"Premium\", \"Decoration\"],\n      forms: [\"Discs\", \"Pencils\", \"Shavings\", \"Plaques\", \"Special decorations\", \"Micro curls\", \"Flakes\", \"Shapes on request\"],\n      colors: [\"Dark\", \"Milk\", \"White\", \"Marbled\", \"Coloured\"]\n    },\n    \"coeurs\": {\n      label: \"Heart Shapes\",\n      lead: \"Seasonal and occasion-themed decorations for pastries, ice cream, biscuits and limited editions.\",\n      tags: [\"Valentine\u2019s Day\", \"Seasonal\", \"Decoration\", \"Patisserie\"],\n      forms: [\"Flat hearts\", \"Mini hearts\", \"Domed hearts\", \"Micro decorations\", \"Red hearts\", \"Pink hearts\", \"White hearts\", \"Two-colour hearts\"],\n      colors: [\"Red\", \"Pink\", \"White\", \"Chocolate\", \"Two-colour\"]\n    },\n    \"particulaires\": {\n      label: \"Pieces & Granules\",\n      lead: \"A range of particle sizes and pieces to add crunch, contrast and visible texture.\",\n      tags: [\"Crunch\", \"Texture\", \"Inclusion\", \"Sprinkling\"],\n      forms: [\"Pieces\", \"Granules\", \"Fine chips\", \"Flakes\", \"Nibs\", \"Crumble\", \"Crushed biscuit\", \"Caramelised praline\"],\n      colors: [\"Cocoa\", \"Caramel\", \"Biscuit\", \"Nuts\", \"Mix\"]\n    }\n  };\n\n  const products = {\n    all: {\n      title: \"Toppings & Inclusions\",\n      hero: \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/08\/categorie-toppings-inclusions.jpg\",\n      content: `<div class=\"kp-top-copy\"><p class=\"kp-intro-text\">A range designed to add texture, contrast and a distinctive visual identity to finished products: chocolate decorations, crunchy inclusions, sugar shapes and biscuit-based pieces.<\/p><\/div>`,\n      shapes: [\"mini-chunks\", \"etoiles\", \"vermicelles\", \"particulieres\", \"coeurs\", \"particulaires\"]\n    },\n    \"base-chocolat\": {\n      title: \"Chocolate-based\",\n      hero: \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/08\/categorie-chocolats-specialites.jpg\",\n      content: `<div class=\"kp-top-copy\"><p class=\"kp-intro-text\">Chocolate-based decorations and inclusions that add flavour intensity, visual contrast and texture to biscuits, ice cream, viennoiserie, desserts and bars.<\/p><\/div>`,\n      wheelImage: kpChocolateeAssetBase + \"menu-camembert-chocolat.jpg\",\n      wheelAlt: \"Kanop\u00e9e chocolate-based topping categories\",\n      wheelNote: \"Hover over a category\",\n      requiresShapeSelection: true,\n      shapes: [\"chocolate-chunks-batons\", \"chocolate-pistoles-pepites\", \"chocolate-pencils-enroules\", \"chocolate-grandes-decorations\", \"chocolate-cuts\", \"chocolate-copeaux-micro\"],\n      wheelMap: [\"chocolate-chunks-batons\", \"chocolate-pistoles-pepites\", \"chocolate-pencils-enroules\", \"chocolate-grandes-decorations\", \"chocolate-cuts\", \"chocolate-copeaux-micro\"]\n    },\n    \"base-sucre\": {\n      title: \"Sugar-based\",\n      hero: \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/08\/categorie-sucres-naturels-fibres.jpg\",\n      content: `<div class=\"kp-top-copy\"><p class=\"kp-intro-text\">Colours, textures, flavours: our sugar-based decorations offer countless ways to differentiate your creations, add value and enhance their appeal.<\/p><\/div>`,\n      wheelImage: kpSugarAssetBase + \"menu-camembert-sucre.jpg\",\n      wheelAlt: \"Kanop\u00e9e sugar-based topping categories\",\n      wheelNote: \"Hover over a category\",\n      requiresShapeSelection: true,\n      shapes: [\"sugar-vermicelles\", \"sugar-flocons\", \"sugar-non-pareilles\", \"sugar-eclats-caramelises\", \"sugar-formes-extrudees\", \"sugar-perles-moelleuses\"],\n      wheelMap: [\"sugar-flocons\", \"sugar-non-pareilles\", \"sugar-eclats-caramelises\", \"sugar-formes-extrudees\", \"sugar-perles-moelleuses\", \"sugar-vermicelles\"]\n    },\n    \"base-biscuit\": {\n      title: \"Biscuits & Coated Pieces\",\n      hero: \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/08\/categorie-toppings-inclusions.jpg\",\n      content: `<div class=\"kp-top-copy\"><p class=\"kp-intro-text\">Enjoyment starts with the eyes. Our biscuit-based and coated decorations and inclusions enhance your creations with irresistible visual appeal, a wealth of flavours and a variety of textures.<\/p><\/div>`,\n      wheelImage: \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/toppings-assets\/base-biscuit\/menu-camembert-biscuits.jpg\",\n      wheelAlt: \"Kanop\u00e9e biscuit and coated topping categories\",\n      wheelNote: \"Hover over a category\",\n      requiresShapeSelection: true,\n      wheelSegments: 3,\n      shapes: [\"biscuit-cereales-enrobees\", \"biscuit-eclats\", \"biscuit-lentilles\"],\n      wheelMap: [\"biscuit-cereales-enrobees\", \"biscuit-eclats\", \"biscuit-lentilles\"]\n    }\n  };\n\n  function getCardsPerView(){\n    if (window.innerWidth <= 767) return 1;\n    return 3;\n  }\n\n  function stopAutoplay(){\n    if (kpAutoplayTimer) {\n      clearInterval(kpAutoplayTimer);\n      kpAutoplayTimer = null;\n    }\n  }\n\n  function getFullSrc(item){\n    return item && typeof item === \"object\" ? item.full : item;\n  }\n\n  function getThumbSrc(item){\n    return item && typeof item === \"object\" ? (item.thumb || item.full) : item;\n  }\n\n  function getAltText(item){\n    return item && typeof item === \"object\" && item.alt ? item.alt : \"Kanop\u00e9e toppings and inclusions application\";\n  }\n\n  function setLightboxImage(index){\n    const item = kpCurrentGallery[index];\n    lightboxImage.src = getFullSrc(item);\n    lightboxImage.alt = getAltText(item);\n  }\n\n  function openLightbox(index){\n    if (!kpCurrentGallery.length || !lightbox) return;\n\n    stopAutoplay();\n    kpGalleryIndex = index;\n    setLightboxImage(kpGalleryIndex);\n    lightbox.classList.add(\"active\");\n    lightbox.setAttribute(\"aria-hidden\", \"false\");\n    document.documentElement.style.overflow = \"hidden\";\n  }\n\n  function closeLightbox(){\n    if (!lightbox) return;\n\n    lightbox.classList.remove(\"active\");\n    lightbox.setAttribute(\"aria-hidden\", \"true\");\n    lightboxImage.src = \"\";\n    lightboxImage.alt = \"\";\n    document.documentElement.style.overflow = \"\";\n\n    if (kpActiveKey !== \"all\") {\n      startAutoplay();\n    }\n  }\n\n  function changeLightbox(direction){\n    if (!kpCurrentGallery.length) return;\n\n    kpGalleryIndex += direction;\n\n    if (kpGalleryIndex < 0) {\n      kpGalleryIndex = kpCurrentGallery.length - 1;\n    }\n\n    if (kpGalleryIndex >= kpCurrentGallery.length) {\n      kpGalleryIndex = 0;\n    }\n\n    setLightboxImage(kpGalleryIndex);\n  }\n\n  function createCard(item, index){\n    const card = document.createElement(\"button\");\n    card.className = \"kp-app-card\";\n    card.type = \"button\";\n    card.setAttribute(\"aria-label\", \"View \" + getAltText(item));\n\n    const img = document.createElement(\"img\");\n    img.src = getThumbSrc(item);\n    img.alt = getAltText(item);\n    img.loading = \"lazy\";\n    img.decoding = \"async\";\n\n    card.appendChild(img);\n\n    card.addEventListener(\"click\", function(){\n      openLightbox(index);\n    });\n\n    return card;\n  }\n\n  function moveWheelTooltip(event){\n    if (!wheelTooltip || !wheel) return;\n\n    const bounds = wheel.getBoundingClientRect();\n    const x = event.clientX - bounds.left;\n    const y = event.clientY - bounds.top;\n    wheelTooltip.style.left = x + \"px\";\n    wheelTooltip.style.top = y + \"px\";\n  }\n\n  function showWheelTooltip(label, event){\n    if (!wheelTooltip) return;\n\n    wheelTooltip.textContent = label;\n    moveWheelTooltip(event);\n    wheelTooltip.classList.add(\"is-visible\");\n  }\n\n  function hideWheelTooltip(){\n    if (!wheelTooltip) return;\n\n    wheelTooltip.classList.remove(\"is-visible\");\n  }\n\n  function renderWheel(productKey){\n    const data = products[productKey] || products.all;\n    const keys = data.shapes || products.all.shapes;\n    const areas = wheel.querySelectorAll(\"[data-shape]\");\n    const isAwaitingSelection = data.requiresShapeSelection && !kpActiveShape;\n    const sixSegments = [\n      \"M50 50 L50 12 A38 38 0 0 1 82.91 31 Z\",\n      \"M50 50 L82.91 31 A38 38 0 0 1 82.91 69 Z\",\n      \"M50 50 L82.91 69 A38 38 0 0 1 50 88 Z\",\n      \"M50 50 L50 88 A38 38 0 0 1 17.09 69 Z\",\n      \"M50 50 L17.09 69 A38 38 0 0 1 17.09 31 Z\",\n      \"M50 50 L17.09 31 A38 38 0 0 1 50 12 Z\"\n    ];\n    const threeSegments = [\n      \"M50 50 L29.3 18.1 A38 38 0 0 1 87.95 48 Z\",\n      \"M50 50 L87.95 48 A38 38 0 0 1 32.7 83.9 Z\",\n      \"M50 50 L32.7 83.9 A38 38 0 0 1 29.3 18.1 Z\"\n    ];\n    const segmentPaths = data.wheelSegments === 3 ? threeSegments : sixSegments;\n\n    if (wheelNote) {\n      wheelNote.textContent = data.wheelNote || \"Select a category\";\n    }\n\n    if (wheelImage) {\n      wheelImage.src = data.wheelImage || \"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/08\/toppings-menu-camembert.jpg\";\n      wheelImage.alt = data.wheelAlt || \"Kanop\u00e9e topping and inclusion categories\";\n    }\n\n    if (!isAwaitingSelection && (!shapeLibrary[kpActiveShape] || keys.indexOf(kpActiveShape) === -1)) {\n      kpActiveShape = keys[0];\n    }\n\n    areas.forEach(function(area, index){\n      const isVisibleArea = index < segmentPaths.length;\n      area.setAttribute(\"d\", segmentPaths[index] || sixSegments[index]);\n      area.style.display = isVisibleArea ? \"\" : \"none\";\n      if (!isVisibleArea) return;\n\n      const key = data.wheelMap && data.wheelMap[index] ? data.wheelMap[index] : area.dataset.defaultShape;\n      area.setAttribute(\"data-shape\", key);\n      const isAvailable = keys.indexOf(key) !== -1;\n\n      area.classList.toggle(\"active\", key === kpActiveShape);\n      area.style.pointerEvents = isAvailable ? \"auto\" : \"none\";\n      area.style.opacity = isAvailable ? \"1\" : \".18\";\n\n      if (!area.dataset.bound) {\n        area.dataset.bound = \"true\";\n\n        area.addEventListener(\"mouseenter\", function(event){\n          const nextKey = area.getAttribute(\"data-shape\");\n          if (!shapeLibrary[nextKey]) return;\n          showWheelTooltip(shapeLibrary[nextKey].label, event);\n\n          kpActiveVariant = 0;\n          kpActiveShape = nextKey;\n          renderWheel(kpActiveKey);\n          renderShapeDetail(nextKey);\n        });\n\n        area.addEventListener(\"mousemove\", function(event){\n          moveWheelTooltip(event);\n        });\n\n        area.addEventListener(\"mouseleave\", hideWheelTooltip);\n\n        area.addEventListener(\"click\", function(){\n          const nextKey = area.getAttribute(\"data-shape\");\n          if (!shapeLibrary[nextKey]) return;\n          kpActiveVariant = 0;\n          kpActiveShape = nextKey;\n          renderWheel(kpActiveKey);\n          renderShapeDetail(nextKey);\n        });\n      }\n    });\n  }\n\n  function openVisualLightbox(label, tone, index){\n    if (!lightbox || !lightboxImage) return;\n\n    stopAutoplay();\n    kpGalleryIndex = index;\n    setLightboxImage(kpGalleryIndex);\n    lightbox.classList.add(\"active\");\n    lightbox.setAttribute(\"aria-hidden\", \"false\");\n    document.documentElement.style.overflow = \"hidden\";\n  }\n\n  function createVisualItem(label, index){\n    const pair = getTonePair(index, \"forms\");\n    const svg = encodeURIComponent(`<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1200 760\"><defs><linearGradient id=\"g\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop stop-color=\"${pair[0]}\"\/><stop offset=\"1\" stop-color=\"${pair[1]}\"\/><\/linearGradient><radialGradient id=\"r\" cx=\"72%\" cy=\"28%\" r=\"52%\"><stop stop-color=\"rgba(255,255,255,.32)\"\/><stop offset=\"1\" stop-color=\"rgba(255,255,255,0)\"\/><\/radialGradient><\/defs><rect width=\"1200\" height=\"760\" fill=\"url(#g)\"\/><rect width=\"1200\" height=\"760\" fill=\"url(#r)\"\/><circle cx=\"930\" cy=\"210\" r=\"130\" fill=\"rgba(255,255,255,.14)\"\/><circle cx=\"190\" cy=\"610\" r=\"90\" fill=\"rgba(0,0,0,.18)\"\/><text x=\"80\" y=\"650\" fill=\"white\" font-family=\"Arial, sans-serif\" font-size=\"54\" letter-spacing=\"6\">${label.toUpperCase()}<\/text><\/svg>`);\n\n    return {\n      full: \"data:image\/svg+xml;charset=UTF-8,\" + svg,\n      thumb: \"data:image\/svg+xml;charset=UTF-8,\" + svg,\n      alt: label + \" - Toppings & Inclusions Kanop\u00e9e\"\n    };\n  }\n\n  function createPhotoVisualItem(item){\n    return {\n      full: item.full || kpMiniChunksAssetBase + \"full\/\" + item.file,\n      thumb: item.thumb || kpMiniChunksAssetBase + \"thumb\/\" + item.file,\n      alt: item.label + \" - Toppings & Inclusions Kanop\u00e9e\",\n      label: item.label\n    };\n  }\n\n  function stopFormsAutoplay(){\n    if (kpFormsTimer) {\n      clearInterval(kpFormsTimer);\n      kpFormsTimer = null;\n    }\n  }\n\n  function getTonePair(index, kind){\n    const palettes = kind === \"colors\"\n      ? [[\"#2a1510\",\"#5d3424\"],[\"#f0dfbd\",\"#b6854f\"],[\"#8b1f1d\",\"#d7584c\"],[\"#f4ead6\",\"#d6c19a\"],[\"#523018\",\"#bd8a42\"],[\"#d34d62\",\"#f0a7b2\"]]\n      : [[\"#2d2018\",\"#6b3c28\"],[\"#4d3729\",\"#9c714b\"],[\"#111111\",\"#4b4038\"],[\"#7b5939\",\"#c6a87d\"],[\"#33251d\",\"#6a4a35\"],[\"#5d2f22\",\"#a6774b\"],[\"#1d1714\",\"#6f4b36\"],[\"#8d6a43\",\"#d2af75\"]];\n\n    return palettes[index % palettes.length];\n  }\n\n  function getColorPair(label, index){\n    const normalized = label.toLowerCase();\n\n    if (normalized.indexOf(\"dark\") !== -1 || normalized.indexOf(\"cocoa\") !== -1 || normalized.indexOf(\"chocolate\") !== -1) return [\"#2a1510\", \"#5d3424\"];\n    if (normalized.indexOf(\"milk\") !== -1) return [\"#6f3f27\", \"#a46d45\"];\n    if (normalized.indexOf(\"white\") !== -1) return [\"#f3e7c9\", \"#d5bd88\"];\n    if (normalized.indexOf(\"red\") !== -1) return [\"#8f1f23\", \"#d54a4c\"];\n    if (normalized.indexOf(\"pink\") !== -1) return [\"#d9546d\", \"#f2a0af\"];\n    if (normalized.indexOf(\"gold\") !== -1) return [\"#d8b773\", \"#f1d89e\"];\n    if (normalized.indexOf(\"caramel\") !== -1) return [\"#9b5b2e\", \"#d5a15d\"];\n    if (normalized.indexOf(\"two-colour\") !== -1 || normalized.indexOf(\"mix\") !== -1 || normalized.indexOf(\"marbl\") !== -1) return [\"#f2e4c3\", \"#623624\"];\n    if (normalized.indexOf(\"biscuit\") !== -1) return [\"#9a6a43\", \"#d0a56f\"];\n    if (normalized.indexOf(\"fruit\") !== -1) return [\"#7e4b26\", \"#c99347\"];\n    if (normalized.indexOf(\"color\") !== -1) return [\"#be3836\", \"#e6d6ae\"];\n\n    return getTonePair(index, \"colors\");\n  }\n\n  function makeMiniCard(label, index, galleryItems){\n    const visual = galleryItems[index];\n    const card = document.createElement(\"button\");\n    card.type = \"button\";\n    card.className = \"kp-mini-card\";\n    card.setAttribute(\"aria-label\", \"Enlarge \" + label);\n    const pair = getTonePair(index, \"forms\");\n    card.style.setProperty(\"--c1\", pair[0]);\n    card.style.setProperty(\"--c2\", pair[1]);\n\n    if (visual && visual.thumb && visual.thumb.indexOf(\"data:image\/svg\") !== 0) {\n      card.classList.add(\"has-photo\");\n      const img = document.createElement(\"img\");\n      img.src = visual.thumb;\n      img.alt = visual.alt || label;\n      img.loading = \"lazy\";\n      img.decoding = \"async\";\n      card.appendChild(img);\n    }\n\n    const labelEl = document.createElement(\"span\");\n    labelEl.className = \"kp-mini-card-label\";\n    labelEl.textContent = label;\n    card.appendChild(labelEl);\n\n    card.addEventListener(\"click\", function(){\n      kpCurrentGallery = galleryItems;\n      openVisualLightbox(label, pair, index);\n    });\n\n    return card;\n  }\n\n  function renderFormsSlider(items, visuals){\n    const block = document.createElement(\"div\");\n    block.className = \"kp-forms-slider\";\n\n    const titleEl = document.createElement(\"div\");\n    titleEl.className = \"kp-mini-slider-title\";\n    titleEl.textContent = \"Formats\";\n\n    const viewport = document.createElement(\"div\");\n    viewport.className = \"kp-forms-viewport\";\n\n    const track = document.createElement(\"div\");\n    track.className = \"kp-forms-track\";\n\n    const pageSize = 8;\n    const galleryItems = visuals && visuals.length\n      ? visuals.map(createPhotoVisualItem)\n      : items.map(function(label, index){\n          return createVisualItem(label, index);\n        });\n    const cardLabels = visuals && visuals.length\n      ? visuals.map(function(item){ return item.label; })\n      : items;\n    const pages = [];\n    for (let i = 0; i < cardLabels.length; i += pageSize) {\n      pages.push(cardLabels.slice(i, i + pageSize));\n    }\n\n    pages.forEach(function(pageItems, pageIndex){\n      const page = document.createElement(\"div\");\n      page.className = \"kp-forms-page\";\n\n      pageItems.forEach(function(label, index){\n        page.appendChild(makeMiniCard(label, pageIndex * pageSize + index, galleryItems));\n      });\n\n      track.appendChild(page);\n    });\n\n    viewport.appendChild(track);\n\n    const prev = document.createElement(\"button\");\n    prev.type = \"button\";\n    prev.className = \"kp-forms-arrow kp-forms-prev\";\n    prev.setAttribute(\"aria-label\", \"Previous shapes\");\n    prev.textContent = \"\u2039\";\n\n    const next = document.createElement(\"button\");\n    next.type = \"button\";\n    next.className = \"kp-forms-arrow kp-forms-next\";\n    next.setAttribute(\"aria-label\", \"Next shapes\");\n    next.textContent = \"\u203a\";\n\n    let pageIndex = 0;\n\n    function update(){\n      track.style.transform = \"translateX(\" + (-pageIndex * 100) + \"%)\";\n      prev.disabled = pages.length <= 1;\n      next.disabled = pages.length <= 1;\n    }\n\n    function go(direction){\n      if (pages.length <= 1) return;\n      pageIndex += direction;\n      if (pageIndex < 0) pageIndex = pages.length - 1;\n      if (pageIndex >= pages.length) pageIndex = 0;\n      update();\n    }\n\n    prev.addEventListener(\"click\", function(){ go(-1); });\n    next.addEventListener(\"click\", function(){ go(1); });\n\n    block.appendChild(titleEl);\n    block.appendChild(prev);\n    block.appendChild(viewport);\n    block.appendChild(next);\n\n    update();\n\n    if (pages.length > 1) {\n      kpFormsTimer = setInterval(function(){\n        go(1);\n      }, 5000);\n    }\n\n    return block;\n  }\n\n  function renderColorDots(items){\n    const block = document.createElement(\"div\");\n    block.className = \"kp-color-section\";\n\n    const titleEl = document.createElement(\"div\");\n    titleEl.className = \"kp-color-section-title\";\n    titleEl.textContent = \"Colours\";\n\n    const dots = document.createElement(\"div\");\n    dots.className = \"kp-color-dots\";\n\n    items.forEach(function(label, index){\n      const item = document.createElement(\"span\");\n      item.className = \"kp-color-dot-item\";\n\n      const dot = document.createElement(\"span\");\n      dot.className = \"kp-color-dot\";\n      const pair = getColorPair(label, index);\n      dot.style.setProperty(\"--c1\", pair[0]);\n      dot.style.setProperty(\"--c2\", pair[1]);\n\n      const text = document.createElement(\"span\");\n      text.textContent = label;\n\n      item.appendChild(dot);\n      item.appendChild(text);\n      dots.appendChild(item);\n    });\n\n    block.appendChild(titleEl);\n    block.appendChild(dots);\n    return block;\n  }\n\n  function renderSpecs(items){\n    const block = document.createElement(\"div\");\n    block.className = \"kp-specs\";\n\n    items.forEach(function(spec){\n      const item = document.createElement(\"div\");\n      item.className = \"kp-spec\";\n\n      const label = document.createElement(\"span\");\n      label.className = \"kp-spec-label\";\n      label.textContent = spec[0];\n\n      const value = document.createElement(\"span\");\n      value.className = \"kp-spec-value\";\n      value.textContent = spec[1];\n\n      item.appendChild(label);\n      item.appendChild(value);\n      block.appendChild(item);\n    });\n\n    return block;\n  }\n\n  function renderShapeDetail(key){\n    const item = shapeLibrary[key] || shapeLibrary[\"mini-chunks\"];\n    const variants = item.variants || [];\n    const activeVariant = variants.length\n      ? variants[Math.min(kpActiveVariant, variants.length - 1)]\n      : item;\n    stopFormsAutoplay();\n\n    detail.innerHTML = \"\";\n\n    const h = document.createElement(\"h3\");\n    h.textContent = activeVariant.label || item.label;\n\n    const lead = document.createElement(\"p\");\n    lead.className = \"kp-detail-lead\";\n    lead.textContent = activeVariant.lead || item.lead;\n\n    const variantButtons = document.createElement(\"div\");\n    variantButtons.className = \"kp-detail-variants\";\n\n    variants.forEach(function(variant, index){\n      const button = document.createElement(\"button\");\n      button.type = \"button\";\n      button.className = \"kp-detail-variant\" + (index === kpActiveVariant ? \" active\" : \"\");\n      button.textContent = variant.label;\n      button.addEventListener(\"click\", function(){\n        kpActiveVariant = index;\n        renderShapeDetail(key);\n      });\n      variantButtons.appendChild(button);\n    });\n\n    const tags = document.createElement(\"div\");\n    tags.className = \"kp-detail-tags\";\n    (activeVariant.tags || item.tags || []).forEach(function(tag){\n      const span = document.createElement(\"span\");\n      span.className = \"kp-detail-tag\";\n      span.textContent = tag;\n      tags.appendChild(span);\n    });\n\n    const visuals = document.createElement(\"div\");\n    visuals.className = \"kp-detail-visuals\";\n    visuals.appendChild(renderFormsSlider(activeVariant.forms || item.forms, activeVariant.visuals || item.visuals));\n\n    if (activeVariant.specs && activeVariant.specs.length) {\n      visuals.appendChild(renderSpecs(activeVariant.specs));\n    } else if (item.specs && item.specs.length) {\n      visuals.appendChild(renderSpecs(item.specs));\n    }\n\n    if (activeVariant.colors && activeVariant.colors.length && !activeVariant.hideColors) {\n      visuals.appendChild(renderColorDots(activeVariant.colors));\n    } else if (item.colors && item.colors.length && !item.hideColors) {\n      visuals.appendChild(renderColorDots(item.colors));\n    }\n\n    detail.appendChild(h);\n    detail.appendChild(lead);\n    if (variants.length) detail.appendChild(variantButtons);\n    detail.appendChild(tags);\n    detail.appendChild(visuals);\n  }\n\n  function clearResizeHandler(){\n    if (kpResizeHandler) {\n      window.removeEventListener(\"resize\", kpResizeHandler);\n      kpResizeHandler = null;\n    }\n  }\n\n  function renderGalleryGrid(images){\n    gallery.style.opacity = \"1\";\n    clearResizeHandler();\n    stopAutoplay();\n\n    if (!images.length) {\n      gallery.innerHTML = '<div class=\"kp-app-empty\">No images available for this selection.<\/div>';\n      return;\n    }\n\n    const grid = document.createElement(\"div\");\n    grid.className = \"kp-app-grid\";\n\n    images.slice(0, 9).forEach(function(item, index){\n      grid.appendChild(createCard(item, index));\n    });\n\n    gallery.innerHTML = \"\";\n    gallery.appendChild(grid);\n  }\n\n  function renderGallerySlider(images){\n    gallery.style.opacity = \"1\";\n    clearResizeHandler();\n    stopAutoplay();\n\n    if (!images.length) {\n      gallery.innerHTML = '<div class=\"kp-app-empty\">No images available for this selection.<\/div>';\n      return;\n    }\n\n    const viewport = document.createElement(\"div\");\n    viewport.className = \"kp-apps-viewport\";\n\n    const track = document.createElement(\"div\");\n    track.className = \"kp-apps-track\";\n\n    images.forEach(function(item, index){\n      track.appendChild(createCard(item, index));\n    });\n\n    viewport.appendChild(track);\n\n    const prev = document.createElement(\"button\");\n    prev.className = \"kp-app-arrow kp-app-prev\";\n    prev.type = \"button\";\n    prev.setAttribute(\"aria-label\", \"Previous applications\");\n    prev.textContent = \"\u2039\";\n\n    const next = document.createElement(\"button\");\n    next.className = \"kp-app-arrow kp-app-next\";\n    next.type = \"button\";\n    next.setAttribute(\"aria-label\", \"Next applications\");\n    next.textContent = \"\u203a\";\n\n    const dots = document.createElement(\"div\");\n    dots.className = \"kp-app-dots\";\n\n    gallery.innerHTML = \"\";\n    gallery.appendChild(viewport);\n    gallery.appendChild(prev);\n    gallery.appendChild(next);\n    gallery.appendChild(dots);\n\n    function updateSlider(){\n      const cardsPerView = getCardsPerView();\n      const maxIndex = Math.max(0, images.length - cardsPerView);\n\n      kpSliderIndex = Math.max(0, Math.min(kpSliderIndex, maxIndex));\n\n      const target = track.querySelectorAll(\".kp-app-card\")[kpSliderIndex];\n      const offset = target ? target.offsetLeft : 0;\n\n      track.style.transform = \"translateX(-\" + offset + \"px)\";\n\n      prev.disabled = maxIndex <= 0;\n      next.disabled = maxIndex <= 0;\n\n      dots.innerHTML = \"\";\n\n      if (maxIndex > 0) {\n        for (let i = 0; i <= maxIndex; i++) {\n          const dot = document.createElement(\"button\");\n          dot.className = \"kp-app-dot\" + (i === kpSliderIndex ? \" active\" : \"\");\n          dot.type = \"button\";\n          dot.setAttribute(\"aria-label\", \"Go to group \" + (i + 1));\n\n          dot.addEventListener(\"click\", function(){\n            kpSliderIndex = i;\n            updateSlider();\n            restartAutoplay();\n          });\n\n          dots.appendChild(dot);\n        }\n      }\n    }\n\n    function nextSlideLoop(step){\n      const maxIndex = Math.max(0, images.length - getCardsPerView());\n\n      if (maxIndex <= 0) return;\n\n      kpSliderIndex = kpSliderIndex + step;\n\n      if (kpSliderIndex > maxIndex) {\n        kpSliderIndex = 0;\n      }\n\n      updateSlider();\n    }\n\n    function startAutoplayLocal(){\n      stopAutoplay();\n\n      const maxIndex = Math.max(0, images.length - getCardsPerView());\n\n      if (maxIndex <= 0) return;\n\n      kpAutoplayTimer = setInterval(function(){\n        nextSlideLoop(1);\n      }, 7000);\n    }\n\n    function restartAutoplay(){\n      startAutoplayLocal();\n    }\n\n    root.kpStartToppingsAutoplay = startAutoplayLocal;\n\n    prev.addEventListener(\"click\", function(){\n      const maxIndex = Math.max(0, images.length - getCardsPerView());\n\n      if (maxIndex <= 0) return;\n\n      kpSliderIndex = kpSliderIndex <= 0 ? maxIndex : kpSliderIndex - 1;\n      updateSlider();\n      restartAutoplay();\n    });\n\n    next.addEventListener(\"click\", function(){\n      nextSlideLoop(1);\n      restartAutoplay();\n    });\n\n    gallery.addEventListener(\"mouseenter\", stopAutoplay);\n    gallery.addEventListener(\"mouseleave\", startAutoplayLocal);\n\n    kpResizeHandler = function(){\n      updateSlider();\n      restartAutoplay();\n    };\n\n    window.addEventListener(\"resize\", kpResizeHandler);\n\n    requestAnimationFrame(function(){\n      updateSlider();\n      startAutoplayLocal();\n    });\n  }\n\n  function startAutoplay(){\n    if (typeof root.kpStartToppingsAutoplay === \"function\") {\n      root.kpStartToppingsAutoplay();\n    }\n  }\n\n  function loadGallery(productKey){\n    gallery.style.opacity = \"0\";\n    galleryTitle.classList.add(\"is-visible\");\n    gallery.classList.add(\"is-visible\");\n    gallery.innerHTML = '<div class=\"kp-app-empty\">Loading applications...<\/div>';\n\n    fetch(ajaxUrl + \"?kp_lang=en&action=kp_toppings_gallery&product=\" + encodeURIComponent(productKey))\n      .then(function(response){\n        return response.json();\n      })\n      .then(function(payload){\n        const images = payload && payload.success && payload.data && payload.data.images ? payload.data.images : [];\n        const mode = payload && payload.success && payload.data && payload.data.mode ? payload.data.mode : \"slider\";\n\n        kpCurrentGallery = images;\n        kpGalleryIndex = 0;\n        kpSliderIndex = 0;\n\n        if (mode === \"global\") {\n          renderGalleryGrid(images);\n        } else {\n          renderGallerySlider(images);\n        }\n      })\n      .catch(function(){\n        kpCurrentGallery = [];\n        renderGalleryGrid([]);\n      });\n  }\n\n  function updateProduct(key){\n    if (key === kpActiveKey) return;\n\n    kpActiveKey = key;\n\n    const data = products[key] || products.all;\n    title.textContent = data.title;\n    content.innerHTML = data.content;\n    heroImage.src = data.hero;\n    if (explorer) explorer.classList.toggle(\"is-hidden\", key === \"all\");\n\n    buttons.forEach(function(button){\n      button.classList.toggle(\"active\", button.getAttribute(\"data-product\") === key);\n    });\n\n    kpActiveVariant = 0;\n    kpActiveShape = data.requiresShapeSelection\n      ? null\n      : (data.shapes && data.shapes.length ? data.shapes[0] : \"mini-chunks\");\n    renderWheel(key);\n    detail.innerHTML = \"\";\n\n    if (kpActiveShape) {\n      renderShapeDetail(kpActiveShape);\n    }\n    loadGallery(key);\n  }\n\n  if (lightboxClose) {\n    lightboxClose.addEventListener(\"click\", closeLightbox);\n  }\n\n  if (lightboxPrev) {\n    lightboxPrev.addEventListener(\"click\", function(){\n      changeLightbox(-1);\n    });\n  }\n\n  if (lightboxNext) {\n    lightboxNext.addEventListener(\"click\", function(){\n      changeLightbox(1);\n    });\n  }\n\n  if (lightbox) {\n    lightbox.addEventListener(\"click\", function(event){\n      if (event.target === lightbox) {\n        closeLightbox();\n      }\n    });\n  }\n\n  document.addEventListener(\"keydown\", function(event){\n    if (!lightbox || !lightbox.classList.contains(\"active\")) return;\n\n    if (event.key === \"Escape\") {\n      closeLightbox();\n    }\n\n    if (event.key === \"ArrowLeft\") {\n      changeLightbox(-1);\n    }\n\n    if (event.key === \"ArrowRight\") {\n      changeLightbox(1);\n    }\n  });\n\n  buttons.forEach(function(button){\n    const key = button.getAttribute(\"data-product\");\n\n    button.addEventListener(\"mouseenter\", function(){\n      updateProduct(key);\n    });\n\n    button.addEventListener(\"click\", function(){\n      updateProduct(key);\n    });\n  });\n\n  title.textContent = products.all.title;\n  content.innerHTML = products.all.content;\n  heroImage.src = products.all.hero;\n  loadGallery(\"all\");\n});\n<\/script>\n\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aed7b72 e-con-full e-flex e-con e-parent\" data-id=\"aed7b72\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-4713ccb e-con-full e-flex e-con e-child\" data-id=\"4713ccb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-00edf52 e-con-full e-flex e-con e-child\" data-id=\"00edf52\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-51265a3 e-con-full e-flex e-con e-child\" data-id=\"51265a3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ffdee8b elementor-widget elementor-widget-text-editor\" data-id=\"ffdee8b\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<span class=\"micro-baseline\">OUR APPROACH <\/span>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-91c4a93 elementor-widget elementor-widget-heading\" data-id=\"91c4a93\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Performance, quality, and innovation<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4ac5aee e-con-full animated-fast e-flex e-con e-child\" data-id=\"4ac5aee\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;none&quot;,&quot;animation_delay&quot;:200,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-fcff4c9 e-con-full animated-fast e-flex elementor-invisible e-con e-child\" data-id=\"fcff4c9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;slideInUp&quot;,&quot;animation_delay&quot;:0}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2812a39 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"2812a39\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-globe-americas\" viewBox=\"0 0 496 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8eae725 elementor-widget elementor-widget-text-editor\" data-id=\"8eae725\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">International network<br\/>of selected<br\/>producers<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0503972 e-con-full animated-fast e-flex elementor-invisible e-con e-child\" data-id=\"0503972\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;slideInUp&quot;,&quot;animation_delay&quot;:0}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-41cf29a elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"41cf29a\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-far-check-circle\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43a11df elementor-widget elementor-widget-text-editor\" data-id=\"43a11df\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Quality\n&#038; traceability<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-858d7f2 e-con-full animated-fast e-flex elementor-invisible e-con e-child\" data-id=\"858d7f2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;slideInUp&quot;,&quot;animation_delay&quot;:0}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4c5fd1d elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"4c5fd1d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-sliders-h\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5e6f0d8 elementor-widget elementor-widget-text-editor\" data-id=\"5e6f0d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Solutions tailored to\nyour operational\nrequirements<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0add0c2 e-con-full animated-fast e-flex elementor-invisible e-con e-child\" data-id=\"0add0c2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;slideInUp&quot;,&quot;animation_delay&quot;:0}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d6a8953 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"d6a8953\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-truck-loading\" viewBox=\"0 0 640 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a643703 elementor-widget elementor-widget-text-editor\" data-id=\"a643703\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Logistical flexibility &#038; packaging<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-da6a89c e-con-full animated-fast e-flex elementor-invisible e-con e-child\" data-id=\"da6a89c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;slideInUp&quot;,&quot;animation_delay&quot;:0}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8beee47 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"8beee47\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-flask\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9576ce4 elementor-widget elementor-widget-text-editor\" data-id=\"9576ce4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Formulation &#038; sourcing support<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2cc8a3d e-con-full e-flex e-con e-parent\" data-id=\"2cc8a3d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-2ba8c4a e-flex e-con-boxed e-con e-child\" data-id=\"2ba8c4a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-ebe2a0b e-con-full e-flex e-con e-child\" data-id=\"ebe2a0b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6f78df1 elementor-widget elementor-widget-heading\" data-id=\"6f78df1\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A specific requirement?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2596f11 elementor-widget elementor-widget-text-editor\" data-id=\"2596f11\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong><span style=\"color: #ffffff;\">Our team assists you in identifying, sourcing, and developing solutions tailored to your needs.<\/span><\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-40b438b elementor-align-center elementor-invisible elementor-widget elementor-widget-button\" data-id=\"40b438b\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:&quot;500&quot;,&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.kanopee.lu\/en\/contact\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Contact us<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Products \/ Bakery Seeds Toppings &amp; Inclusions A wide range of Decorations &amp; Inclusions that highlight the unique character of each of your creations. Enhancevisual impact colors, finishes, decoration Enrichthe sensory experience textures and indulgence Boostcreativity extensive and customizable range Drivepurchasing decisions Enhanced price-performance ratio OUR APPROACH Performance, quality, and innovation International networkof selectedproducers Quality [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4545,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4616","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Toppings &amp; Inclusions - Kanop\u00e9e<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Toppings &amp; Inclusions - Kanop\u00e9e\" \/>\n<meta property=\"og:description\" content=\"Products \/ Bakery Seeds Toppings &amp; Inclusions A wide range of Decorations &amp; Inclusions that highlight the unique character of each of your creations. Enhancevisual impact colors, finishes, decoration Enrichthe sensory experience textures and indulgence Boostcreativity extensive and customizable range Drivepurchasing decisions Enhanced price-performance ratio OUR APPROACH Performance, quality, and innovation International networkof selectedproducers Quality [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/\" \/>\n<meta property=\"og:site_name\" content=\"Kanop\u00e9e\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-12T14:32:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/Kanopee-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/products\\\/toppings-inclusions\\\/\",\"url\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/products\\\/toppings-inclusions\\\/\",\"name\":\"Toppings & Inclusions - Kanop\u00e9e\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/#website\"},\"datePublished\":\"2026-08-12T08:29:00+00:00\",\"dateModified\":\"2026-11-12T14:32:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/products\\\/toppings-inclusions\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/products\\\/toppings-inclusions\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/products\\\/toppings-inclusions\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Products\",\"item\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/products\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Toppings &#038; Inclusions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/\",\"name\":\"Kanop\u00e9e\",\"description\":\"Une vision globale du sourcing agroalimentaire\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/#organization\"},\"alternateName\":\"Kanopee\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/#organization\",\"name\":\"Kanop\u00e9e\",\"url\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.kanopee.lu\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Kanopee-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.kanopee.lu\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/Kanopee-logo.jpg\",\"width\":1200,\"height\":675,\"caption\":\"Kanop\u00e9e\"},\"image\":{\"@id\":\"https:\\\/\\\/www.kanopee.lu\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Toppings & Inclusions - Kanop\u00e9e","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/","og_locale":"en_US","og_type":"article","og_title":"Toppings & Inclusions - Kanop\u00e9e","og_description":"Products \/ Bakery Seeds Toppings &amp; Inclusions A wide range of Decorations &amp; Inclusions that highlight the unique character of each of your creations. Enhancevisual impact colors, finishes, decoration Enrichthe sensory experience textures and indulgence Boostcreativity extensive and customizable range Drivepurchasing decisions Enhanced price-performance ratio OUR APPROACH Performance, quality, and innovation International networkof selectedproducers Quality [&hellip;]","og_url":"https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/","og_site_name":"Kanop\u00e9e","article_modified_time":"2026-11-12T14:32:38+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/Kanopee-logo.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/","url":"https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/","name":"Toppings & Inclusions - Kanop\u00e9e","isPartOf":{"@id":"https:\/\/www.kanopee.lu\/en\/#website"},"datePublished":"2026-08-12T08:29:00+00:00","dateModified":"2026-11-12T14:32:38+00:00","breadcrumb":{"@id":"https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.kanopee.lu\/en\/products\/toppings-inclusions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.kanopee.lu\/en\/"},{"@type":"ListItem","position":2,"name":"Products","item":"https:\/\/www.kanopee.lu\/en\/products\/"},{"@type":"ListItem","position":3,"name":"Toppings &#038; Inclusions"}]},{"@type":"WebSite","@id":"https:\/\/www.kanopee.lu\/en\/#website","url":"https:\/\/www.kanopee.lu\/en\/","name":"Kanop\u00e9e","description":"Une vision globale du sourcing agroalimentaire","publisher":{"@id":"https:\/\/www.kanopee.lu\/en\/#organization"},"alternateName":"Kanopee","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kanopee.lu\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.kanopee.lu\/en\/#organization","name":"Kanop\u00e9e","url":"https:\/\/www.kanopee.lu\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kanopee.lu\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/Kanopee-logo.jpg","contentUrl":"https:\/\/www.kanopee.lu\/wp-content\/uploads\/2026\/09\/Kanopee-logo.jpg","width":1200,"height":675,"caption":"Kanop\u00e9e"},"image":{"@id":"https:\/\/www.kanopee.lu\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.kanopee.lu\/en\/wp-json\/wp\/v2\/pages\/4616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kanopee.lu\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kanopee.lu\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kanopee.lu\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kanopee.lu\/en\/wp-json\/wp\/v2\/comments?post=4616"}],"version-history":[{"count":1,"href":"https:\/\/www.kanopee.lu\/en\/wp-json\/wp\/v2\/pages\/4616\/revisions"}],"predecessor-version":[{"id":4619,"href":"https:\/\/www.kanopee.lu\/en\/wp-json\/wp\/v2\/pages\/4616\/revisions\/4619"}],"up":[{"embeddable":true,"href":"https:\/\/www.kanopee.lu\/en\/wp-json\/wp\/v2\/pages\/4545"}],"wp:attachment":[{"href":"https:\/\/www.kanopee.lu\/en\/wp-json\/wp\/v2\/media?parent=4616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}