{"id":2410,"date":"2026-08-27T17:37:27","date_gmt":"2026-08-27T15:37:27","guid":{"rendered":"https:\/\/consoldemo.co.za\/rebelle\/?page_id=2410"},"modified":"2026-09-01T13:41:16","modified_gmt":"2026-09-01T11:41:16","slug":"ujabulile-a-taste-of-south-africa","status":"publish","type":"page","link":"https:\/\/consoldemo.co.za\/rebelle\/our-work\/ujabulile-a-taste-of-south-africa\/","title":{"rendered":"Ujabulile: A Taste of South Africa"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2410\" class=\"elementor elementor-2410\">\n\t\t\t\t<div class=\"elementor-element elementor-element-169d0d3f e-flex e-con-boxed e-con e-parent\" data-id=\"169d0d3f\" 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-5615aeb6 elementor-widget elementor-widget-text-editor\" data-id=\"5615aeb6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"p1\">Ujabulile: <br \/>A Taste of <br \/>South Africa.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c07f047 elementor-widget elementor-widget-text-editor\" data-id=\"5c07f047\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Proudly SA Gifts<\/p>\t\t\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-74976145 e-con-full e-flex e-con e-parent\" data-id=\"74976145\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-384f99dc elementor-widget elementor-widget-html\" data-id=\"384f99dc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* Main scrolling strip *\/\n.rebelle-marquee {\n    width: 100%;\n    overflow: hidden;\n    background-color: transparent;\n    color: #eae1d4;\n    padding: 12px 0;\n}\n\n\/* Moving track *\/\n.rebelle-marquee-track {\n    display: flex;\n    width: max-content;\n    animation: rebelle-scroll 30s linear infinite;\n    will-change: transform;\n}\n\n\/* Each duplicated group must remain identical *\/\n.rebelle-marquee-group {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n}\n\n\/* Individual text items *\/\n.rebelle-marquee-text {\n    display: block;\n    flex-shrink: 0;\n    padding-right: 6px;\n    white-space: nowrap;\n\n    font-family: inherit;\n    font-size: clamp(20px, 1.2vw, 38px);\n    font-weight: 600;\n    line-height: 1.2;\n    letter-spacing: -0.02em;\n}\n\n\/* Continuous left movement *\/\n@keyframes rebelle-scroll {\n    from {\n        transform: translateX(0);\n    }\n\n    to {\n        transform: translateX(-50%);\n    }\n}\n\n\/* Pause when hovered *\/\n.rebelle-marquee:hover .rebelle-marquee-track {\n    animation-play-state: paused;\n}\n\n\/* Accessibility *\/\n@media (prefers-reduced-motion: reduce) {\n    .rebelle-marquee-track {\n        animation-play-state: paused;\n    }\n}\n\n\/* Mobile adjustments *\/\n@media screen and (max-width: 767px) {\n    .rebelle-marquee {\n        padding: 10px 0;\n    }\n\n    .rebelle-marquee-text {\n        font-size: 27px;\n        padding-right: 25px;\n    }\n}\n<\/style>\n\n<div\n    class=\"rebelle-marquee\"\n    aria-label=\"Concept Development, Product Sourcing, Packaging Design, Personalisation, Production\"\n>\n    <div class=\"rebelle-marquee-track\">\n\n        <!-- First group -->\n        <div class=\"rebelle-marquee-group\">\n\n            <span class=\"rebelle-marquee-text\">\n                Concept Development \u00b7 Product Sourcing \u00b7 Packaging Design \u00b7 Personalisation \u00b7 Production \u00b7\n            <\/span>\n\n            <span class=\"rebelle-marquee-text\">\n                Concept Development \u00b7 Product Sourcing \u00b7 Packaging Design \u00b7 Personalisation \u00b7 Production \u00b7\n            <\/span>\n\n            <span class=\"rebelle-marquee-text\">\n                Concept Development \u00b7 Product Sourcing \u00b7 Packaging Design \u00b7 Personalisation \u00b7 Production \u00b7\n            <\/span>\n\n        <\/div>\n\n        <!-- Exact duplicate for seamless looping -->\n        <div\n            class=\"rebelle-marquee-group\"\n            aria-hidden=\"true\"\n        >\n\n            <span class=\"rebelle-marquee-text\">\n                Concept Development \u00b7 Product Sourcing \u00b7 Packaging Design \u00b7 Personalisation \u00b7 Production \u00b7\n            <\/span>\n\n            <span class=\"rebelle-marquee-text\">\n                Concept Development \u00b7 Product Sourcing \u00b7 Packaging Design \u00b7 Personalisation \u00b7 Production \u00b7\n            <\/span>\n\n            <span class=\"rebelle-marquee-text\">\n                Concept Development \u00b7 Product Sourcing \u00b7 Packaging Design \u00b7 Personalisation \u00b7 Production \u00b7\n            <\/span>\n\n        <\/div>\n\n    <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-248b0050 e-flex e-con-boxed e-con e-parent\" data-id=\"248b0050\" 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-1ed61e01 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"1ed61e01\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* =========================================\n   REBELLE - THE ASK\n========================================= *\/\n\n.rebelle-ask-shell {\n    width: max-content;\n    max-width: 100%;\n    overflow: hidden;\n}\n\n.rebelle-ask {\n    display: flex;\n    align-items: center;\n    flex-wrap: nowrap;\n\n    width: max-content;\n\n    font-family: \"Arboria Bold\", \"Arboria\", sans-serif !important;\n    font-size: 70px;\n    line-height: 65px;\n    font-weight: 700;\n    letter-spacing: -0.035em;\n\n    color: #b02960;\n}\n\n\n\/* STATIC \"THE\" *\/\n\n.rebelle-ask-label {\n    display: inline-block;\n    white-space: nowrap;\n}\n\n\n\/* PURPLE ASK BLOCK *\/\n\n.rebelle-ask-highlight {\n    display: inline-block;\n\n    margin-left: 10px;\n    padding: 5px 12px 8px;\n\n    background-color: #a08ea3;\n    color: #b02960;\n\n    white-space: nowrap;\n\n    will-change: transform, opacity;\n}\n\n\n\/* =========================================\n   START POSITION\n========================================= *\/\n\n.rebelle-ask-shell.animate-ready .rebelle-ask-highlight {\n    opacity: 0;\n    transform: translateX(-140px);\n}\n\n\n\/* =========================================\n   FLY IN FROM LEFT\n========================================= *\/\n\n.rebelle-ask-shell.animate-ready.is-visible .rebelle-ask-highlight {\n    animation:\n        rebelleAskFlyIn\n        1.5s\n        cubic-bezier(0.22, 1, 0.36, 1)\n        forwards;\n}\n\n\n@keyframes rebelleAskFlyIn {\n\n    0% {\n        opacity: 0;\n        transform: translateX(-140px);\n    }\n\n    100% {\n        opacity: 1;\n        transform: translateX(0);\n    }\n}\n\n\n\/* =========================================\n   TABLET\n========================================= *\/\n\n@media screen and (max-width: 1024px) {\n\n    .rebelle-ask {\n        font-size: 54px;\n        line-height: 52px;\n    }\n\n}\n\n\n\/* =========================================\n   MOBILE\n========================================= *\/\n\n@media screen and (max-width: 767px) {\n\n    .rebelle-ask {\n        font-size: 36px;\n        line-height: 36px;\n    }\n\n    .rebelle-ask-highlight {\n        margin-left: 6px;\n        padding: 3px 7px 5px;\n    }\n\n    .rebelle-ask-shell.animate-ready .rebelle-ask-highlight {\n        transform: translateX(-80px);\n    }\n\n}\n\n\n\/* =========================================\n   REDUCED MOTION\n========================================= *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n    .rebelle-ask-shell.animate-ready .rebelle-ask-highlight {\n        opacity: 1;\n        transform: none;\n        animation: none;\n    }\n\n}\n<\/style>\n\n\n<div class=\"rebelle-ask-shell\">\n\n    <div class=\"rebelle-ask\">\n\n        <span class=\"rebelle-ask-label\">\n            The\n        <\/span>\n\n        <span class=\"rebelle-ask-highlight\">\n            Ask.\n        <\/span>\n\n    <\/div>\n\n<\/div>\n\n\n<script>\n(function () {\n\n    const sections =\n        document.querySelectorAll('.rebelle-ask-shell');\n\n    const reducedMotion =\n        window.matchMedia(\n            '(prefers-reduced-motion: reduce)'\n        ).matches;\n\n\n    sections.forEach(function (section) {\n\n        if (section.classList.contains('rebelle-animation-ready')) {\n            return;\n        }\n\n        section.classList.add(\n            'animate-ready',\n            'rebelle-animation-ready'\n        );\n\n\n        if (reducedMotion) {\n\n            section.classList.add('is-visible');\n\n            return;\n        }\n\n\n        const observer = new IntersectionObserver(\n            function (entries, observerInstance) {\n\n                entries.forEach(function (entry) {\n\n                    if (entry.isIntersecting) {\n\n                        entry.target.classList.add(\n                            'is-visible'\n                        );\n\n                        observerInstance.unobserve(\n                            entry.target\n                        );\n\n                    }\n\n                });\n\n            },\n            {\n                threshold: 0.35\n            }\n        );\n\n\n        observer.observe(section);\n\n    });\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4d3b11fb elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"4d3b11fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"p1\">Create a proudly South African client gift that celebrated local flavour, craftsmanship and culture while delivering a warm, memorable expression of appreciation.<\/p>\t\t\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-44e648e1 e-flex e-con-boxed e-con e-parent\" data-id=\"44e648e1\" 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-1b23ba96 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"1b23ba96\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* =========================================\n   REBELLE - THE SPARK\n========================================= *\/\n\n.rebelle-spark-shell {\n    width: max-content;\n    max-width: 100%;\n    overflow: hidden;\n}\n\n.rebelle-spark {\n    display: flex;\n    align-items: center;\n    flex-wrap: nowrap;\n\n    width: max-content;\n\n    font-family: \"Arboria Bold\", \"Arboria\", sans-serif !important;\n    font-size: 70px;\n    line-height: 65px;\n    font-weight: 700;\n    letter-spacing: -0.035em;\n\n    color: #b02960;\n}\n\n\n\/* STATIC \"THE\" *\/\n\n.rebelle-spark-label {\n    display: inline-block;\n    white-space: nowrap;\n}\n\n\n\/* PURPLE SPARK BLOCK *\/\n\n.rebelle-spark-highlight {\n    display: inline-block;\n\n    margin-left: 10px;\n    padding: 5px 12px 8px;\n\n    background-color: #a08ea3;\n    color: #b02960;\n\n    white-space: nowrap;\n\n    will-change: transform, opacity;\n}\n\n\n\/* =========================================\n   START POSITION\n========================================= *\/\n\n.rebelle-spark-shell.animate-ready .rebelle-spark-highlight {\n    opacity: 0;\n    transform: translateX(-140px);\n}\n\n\n\/* =========================================\n   FLY IN FROM LEFT\n========================================= *\/\n\n.rebelle-spark-shell.animate-ready.is-visible .rebelle-spark-highlight {\n    animation:\n        rebelleSparkFlyIn\n        1.5s\n        cubic-bezier(0.22, 1, 0.36, 1)\n        forwards;\n}\n\n\n@keyframes rebelleSparkFlyIn {\n\n    0% {\n        opacity: 0;\n        transform: translateX(-140px);\n    }\n\n    100% {\n        opacity: 1;\n        transform: translateX(0);\n    }\n}\n\n\n\/* =========================================\n   TABLET\n========================================= *\/\n\n@media screen and (max-width: 1024px) {\n\n    .rebelle-spark {\n        font-size: 54px;\n        line-height: 52px;\n    }\n\n}\n\n\n\/* =========================================\n   MOBILE\n========================================= *\/\n\n@media screen and (max-width: 767px) {\n\n    .rebelle-spark {\n        font-size: 36px;\n        line-height: 36px;\n    }\n\n    .rebelle-spark-highlight {\n        margin-left: 6px;\n        padding: 3px 7px 5px;\n    }\n\n    .rebelle-spark-shell.animate-ready .rebelle-spark-highlight {\n        transform: translateX(-80px);\n    }\n\n}\n\n\n\/* =========================================\n   REDUCED MOTION\n========================================= *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n    .rebelle-spark-shell.animate-ready .rebelle-spark-highlight {\n        opacity: 1;\n        transform: none;\n        animation: none;\n    }\n\n}\n<\/style>\n\n\n<div class=\"rebelle-spark-shell\">\n\n    <div class=\"rebelle-spark\">\n\n        <span class=\"rebelle-spark-label\">\n            The\n        <\/span>\n\n        <span class=\"rebelle-spark-highlight\">\n            Spark.\n        <\/span>\n\n    <\/div>\n\n<\/div>\n\n\n<script>\n(function () {\n\n    const sections =\n        document.querySelectorAll('.rebelle-spark-shell');\n\n    const reducedMotion =\n        window.matchMedia(\n            '(prefers-reduced-motion: reduce)'\n        ).matches;\n\n\n    sections.forEach(function (section) {\n\n        if (section.classList.contains('rebelle-animation-ready')) {\n            return;\n        }\n\n        section.classList.add(\n            'animate-ready',\n            'rebelle-animation-ready'\n        );\n\n\n        if (reducedMotion) {\n\n            section.classList.add('is-visible');\n\n            return;\n        }\n\n\n        const observer = new IntersectionObserver(\n            function (entries, observerInstance) {\n\n                entries.forEach(function (entry) {\n\n                    if (entry.isIntersecting) {\n\n                        entry.target.classList.add(\n                            'is-visible'\n                        );\n\n                        observerInstance.unobserve(\n                            entry.target\n                        );\n\n                    }\n\n                });\n\n            },\n            {\n                threshold: 0.35\n            }\n        );\n\n\n        observer.observe(section);\n\n    });\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6f1a4974 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"6f1a4974\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"p1\"><strong>Ujabulile \u2014 Made to Make You Smile <\/strong><\/p><p class=\"p1\">Inspired by the joy of sharing good food, the gift brought together a colourful collection of locally made favourites \u2014 each one offering a small taste of South Africa.<\/p>\t\t\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-1c1cba6c e-flex e-con-boxed e-con e-parent\" data-id=\"1c1cba6c\" 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-3a7cb856 elementor-widget elementor-widget-text-editor\" data-id=\"3a7cb856\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"p1\">Because nothing says \u201cYou\u2019re valued\u201d quite like something that clearly wasn\u2019t chosen five minutes before the deadline.<\/p>\t\t\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-72b363fe e-flex e-con-boxed e-con e-parent\" data-id=\"72b363fe\" 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-6fa35637 e-con-full e-flex e-con e-child\" data-id=\"6fa35637\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-27f53063 elementor-widget elementor-widget-html\" data-id=\"27f53063\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* =====================================================\n   REBELLE - MADE TANGIBLE\n===================================================== *\/\n\n.rebelle-tangible-shell,\n.rebelle-tangible-shell * {\n    box-sizing: border-box;\n}\n\n.rebelle-tangible-shell {\n    width: max-content;\n    max-width: 100%;\n    overflow: hidden;\n}\n\n\n\/* =====================================================\n   MAIN HEADING\n===================================================== *\/\n\n.rebelle-tangible-heading {\n    display: flex;\n    align-items: center;\n    flex-wrap: nowrap;\n\n    width: max-content;\n    max-width: 100%;\n\n    margin: 0;\n    padding: 0;\n\n    font-family: \"Arboria Bold\", \"Arboria\", sans-serif !important;\n\n    font-size: 70px;\n    line-height: 65px;\n    font-weight: 700;\n    letter-spacing: -0.035em;\n\n    color: #b02960;\n}\n\n\n\/* =====================================================\n   STATIC \"MADE\"\n===================================================== *\/\n\n.rebelle-tangible-label {\n    display: inline-block;\n    white-space: nowrap;\n}\n\n\n\/* =====================================================\n   PURPLE \"TANGIBLE.\" BLOCK\n===================================================== *\/\n\n.rebelle-tangible-highlight {\n    display: inline-block;\n\n    margin-left: 10px;\n    padding: 5px 12px 8px;\n\n    background-color: #a08ea3;\n    color: #b02960;\n\n    font-family: \"Arboria Bold\", \"Arboria\", sans-serif !important;\n\n    font-size: 70px;\n    line-height: 65px;\n    font-weight: 700;\n\n    white-space: nowrap;\n\n    will-change: transform, opacity;\n}\n\n\n\/* =====================================================\n   START POSITION\n===================================================== *\/\n\n.rebelle-tangible-shell.animate-ready .rebelle-tangible-highlight {\n    opacity: 0;\n    transform: translateX(-160px);\n}\n\n\n\/* =====================================================\n   FLY IN FROM LEFT\n===================================================== *\/\n\n.rebelle-tangible-shell.animate-ready.is-visible .rebelle-tangible-highlight {\n    animation:\n        rebelleTangibleFlyIn\n        1.5s\n        cubic-bezier(0.22, 1, 0.36, 1)\n        forwards;\n}\n\n\n@keyframes rebelleTangibleFlyIn {\n\n    0% {\n        opacity: 0;\n        transform: translateX(-160px);\n    }\n\n    100% {\n        opacity: 1;\n        transform: translateX(0);\n    }\n\n}\n\n\n\/* =====================================================\n   TABLET\n===================================================== *\/\n\n@media screen and (max-width: 1024px) {\n\n    .rebelle-tangible-heading,\n    .rebelle-tangible-highlight {\n        font-size: 54px;\n        line-height: 52px;\n    }\n\n}\n\n\n\/* =====================================================\n   MOBILE\n===================================================== *\/\n\n@media screen and (max-width: 767px) {\n\n    .rebelle-tangible-heading,\n    .rebelle-tangible-highlight {\n        font-size: 36px;\n        line-height: 36px;\n    }\n\n    .rebelle-tangible-highlight {\n        margin-left: 6px;\n        padding: 3px 7px 5px;\n    }\n\n    .rebelle-tangible-shell.animate-ready .rebelle-tangible-highlight {\n        transform: translateX(-90px);\n    }\n\n}\n\n\n\/* =====================================================\n   REDUCED MOTION\n===================================================== *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n    .rebelle-tangible-shell.animate-ready .rebelle-tangible-highlight {\n        opacity: 1;\n        transform: none;\n        animation: none;\n    }\n\n}\n<\/style>\n\n\n<div class=\"rebelle-tangible-shell\">\n\n    <div class=\"rebelle-tangible-heading\">\n\n        <span class=\"rebelle-tangible-label\">\n            Made\n        <\/span>\n\n        <span class=\"rebelle-tangible-highlight\">\n            Tangible.\n        <\/span>\n\n    <\/div>\n\n<\/div>\n\n\n<script>\n(function () {\n\n    const sections =\n        document.querySelectorAll('.rebelle-tangible-shell');\n\n    const reducedMotion =\n        window.matchMedia(\n            '(prefers-reduced-motion: reduce)'\n        ).matches;\n\n\n    sections.forEach(function (section) {\n\n        if (\n            section.classList.contains(\n                'rebelle-tangible-animation-ready'\n            )\n        ) {\n            return;\n        }\n\n\n        section.classList.add(\n            'animate-ready',\n            'rebelle-tangible-animation-ready'\n        );\n\n\n        if (reducedMotion) {\n\n            section.classList.add('is-visible');\n\n            return;\n        }\n\n\n        const observer = new IntersectionObserver(\n\n            function (entries, observerInstance) {\n\n                entries.forEach(function (entry) {\n\n                    if (entry.isIntersecting) {\n\n                        entry.target.classList.add(\n                            'is-visible'\n                        );\n\n                        observerInstance.unobserve(\n                            entry.target\n                        );\n\n                    }\n\n                });\n\n            },\n\n            {\n                threshold: 0.35\n            }\n\n        );\n\n\n        observer.observe(section);\n\n    });\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-38399cae elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"38399cae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* =====================================================\n   REBELLE - MADE TANGIBLE DROPDOWNS\n===================================================== *\/\n\n.tangible-dropdown-grid {\n    --card-text: #b02960;\n    --card-border: #b02960;\n\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 34px 36px;\n\n    width: 100%;\n    padding: 0;\n\n    background: transparent;\n}\n\n.tangible-dropdown-grid,\n.tangible-dropdown-grid * {\n    box-sizing: border-box;\n}\n\n\n\/* =====================================================\n   INDIVIDUAL BOX\n===================================================== *\/\n\n.tangible-dropdown-card {\n    width: 100%;\n    align-self: start;\n\n    margin: 0;\n\n    color: var(--card-text);\n    background: transparent;\n\n    border: 1px solid var(--card-border);\n\n    overflow: hidden;\n\n    transition: height 0.3s ease;\n}\n\n\n\/* =====================================================\n   SAME HEIGHT WHEN OPEN\n===================================================== *\/\n\n.tangible-dropdown-card[open] {\n    height: 230px;\n}\n\n\n\/* =====================================================\n   CLICKABLE HEADING\n===================================================== *\/\n\n.tangible-dropdown-card summary {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    width: 100%;\n\n    padding: 28px 22px;\n\n    cursor: pointer;\n    list-style: none;\n\n    background: transparent !important;\n    background-color: transparent !important;\n\n    color: var(--card-text) !important;\n\n    border: none !important;\n    box-shadow: none !important;\n    outline: none;\n}\n\n\n\/* Remove browser default triangle *\/\n\n.tangible-dropdown-card summary::-webkit-details-marker {\n    display: none;\n}\n\n.tangible-dropdown-card summary::marker {\n    content: \"\";\n}\n\n\n\/* Prevent Astra \/ Elementor hover styling *\/\n\n.tangible-dropdown-card summary:hover,\n.tangible-dropdown-card summary:focus,\n.tangible-dropdown-card summary:active {\n    background: transparent !important;\n    background-color: transparent !important;\n\n    color: var(--card-text) !important;\n\n    border: none !important;\n    box-shadow: none !important;\n}\n\n\n\/* =====================================================\n   HEADING\n===================================================== *\/\n\n.tangible-dropdown-title {\n    margin: 0;\n\n    color: var(--card-text);\n\n    font-family: \"Arboria\", sans-serif;\n    font-size: 32px;\n    font-weight: 700;\n    line-height: 1.1;\n}\n\n\n\/* =====================================================\n   CUSTOM ARROW\n===================================================== *\/\n\n.tangible-dropdown-arrow {\n    flex: 0 0 auto;\n\n    width: 13px;\n    height: 13px;\n\n    margin-left: 20px;\n    margin-right: 4px;\n\n    border-right: 1.5px solid var(--card-text);\n    border-bottom: 1.5px solid var(--card-text);\n\n    transform: rotate(45deg);\n\n    transition: transform 0.3s ease;\n}\n\n\n\/* Arrow turns upward when opened *\/\n\n.tangible-dropdown-card[open] .tangible-dropdown-arrow {\n    transform: rotate(225deg);\n}\n\n\n\/* =====================================================\n   CONTENT\n===================================================== *\/\n\n.tangible-dropdown-content {\n    padding: 0 22px 28px;\n\n    color: var(--card-text);\n\n    font-family: \"Arboria\", sans-serif;\n    font-size: 17px;\n    font-weight: 400;\n    line-height: 1.55;\n\n    animation: tangibleDropdownReveal 0.3s ease;\n}\n\n\n\/* JUSTIFIED PARAGRAPHS *\/\n\n.tangible-dropdown-content p {\n    margin: 0;\n\n    text-align: justify;\n    text-justify: inter-word;\n}\n\n\n\/* =====================================================\n   OPENING ANIMATION\n===================================================== *\/\n\n@keyframes tangibleDropdownReveal {\n\n    from {\n        opacity: 0;\n        transform: translateY(-6px);\n    }\n\n    to {\n        opacity: 1;\n        transform: translateY(0);\n    }\n\n}\n\n\n\/* =====================================================\n   KEYBOARD ACCESSIBILITY\n===================================================== *\/\n\n.tangible-dropdown-card summary:focus-visible {\n    outline: 2px solid var(--card-text);\n    outline-offset: -5px;\n}\n\n\n\/* =====================================================\n   TABLET\n===================================================== *\/\n\n@media screen and (max-width: 1024px) {\n\n    .tangible-dropdown-grid {\n        gap: 24px;\n    }\n\n    \/* Same height for all open tablet cards *\/\n    .tangible-dropdown-card[open] {\n        height: 230px;\n    }\n\n    .tangible-dropdown-card summary {\n        padding: 22px 18px;\n    }\n\n    .tangible-dropdown-title {\n        font-size: 27px;\n    }\n\n    .tangible-dropdown-content {\n        padding: 0 18px 22px;\n\n        font-size: 16px;\n        line-height: 1.5;\n    }\n\n}\n\n\n\/* =====================================================\n   MOBILE\n===================================================== *\/\n\n@media screen and (max-width: 767px) {\n\n    .tangible-dropdown-grid {\n        grid-template-columns: 1fr;\n        gap: 16px;\n    }\n\n    \/*\n     * Allow natural height on mobile so longer\n     * paragraphs can never be clipped.\n     *\/\n    .tangible-dropdown-card[open] {\n        height: auto;\n        min-height: 0;\n    }\n\n    .tangible-dropdown-card summary {\n        padding: 19px 16px;\n    }\n\n    .tangible-dropdown-title {\n        font-size: 24px;\n    }\n\n    .tangible-dropdown-content {\n        padding: 0 16px 20px;\n\n        font-size: 15px;\n        line-height: 1.5;\n    }\n\n    \/* Justification is less attractive on narrow screens *\/\n    .tangible-dropdown-content p {\n        text-align: left;\n    }\n\n    .tangible-dropdown-arrow {\n        width: 11px;\n        height: 11px;\n\n        margin-left: 15px;\n        margin-right: 3px;\n    }\n\n}\n<\/style>\n\n\n<div class=\"tangible-dropdown-grid\">\n\n\n    <!-- THE LOOK -->\n\n    <details class=\"tangible-dropdown-card\">\n\n        <summary>\n\n            <span class=\"tangible-dropdown-title\">\n                The Look\n            <\/span>\n\n            <span\n                class=\"tangible-dropdown-arrow\"\n                aria-hidden=\"true\">\n            <\/span>\n\n        <\/summary>\n\n        <div class=\"tangible-dropdown-content\">\n\n            <p>\n                Rich navy, vibrant turquoise and African-inspired patterning created a look that felt celebratory, contemporary and unmistakably local.\n            <\/p>\n\n        <\/div>\n\n    <\/details>\n\n\n\n    <!-- THE PACKAGING -->\n\n    <details class=\"tangible-dropdown-card\">\n\n        <summary>\n\n            <span class=\"tangible-dropdown-title\">\n                The Packaging\n            <\/span>\n\n            <span\n                class=\"tangible-dropdown-arrow\"\n                aria-hidden=\"true\">\n            <\/span>\n\n        <\/summary>\n\n        <div class=\"tangible-dropdown-content\">\n\n            <p>\n                A premium rigid box was finished with a patterned personalised belly band, turning the collection into a polished and generous client gift.\n            <\/p>\n\n        <\/div>\n\n    <\/details>\n\n\n\n    <!-- THE MESSAGE -->\n\n    <details class=\"tangible-dropdown-card\">\n\n        <summary>\n\n            <span class=\"tangible-dropdown-title\">\n                The Message\n            <\/span>\n\n            <span\n                class=\"tangible-dropdown-arrow\"\n                aria-hidden=\"true\">\n            <\/span>\n\n        <\/summary>\n\n        <div class=\"tangible-dropdown-content\">\n\n            <p>\n                A celebration of South African makers, flavours and the simple joy of sharing something proudly local.\n            <\/p>\n\n        <\/div>\n\n    <\/details>\n\n\n\n    <!-- THE EXPERIENCE -->\n\n    <details class=\"tangible-dropdown-card\">\n\n        <summary>\n\n            <span class=\"tangible-dropdown-title\">\n                The Experience\n            <\/span>\n\n            <span\n                class=\"tangible-dropdown-arrow\"\n                aria-hidden=\"true\">\n            <\/span>\n\n        <\/summary>\n\n        <div class=\"tangible-dropdown-content\">\n\n            <p>\n                Recipients opened the box to discover a mix of sweet and savoury treats, including local coffee, Mandela Tea, biltong, biscuits, nougat, toffee and handcrafted marshmallow puffs.\n            <\/p>\n\n        <\/div>\n\n    <\/details>\n\n\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2dbf4512 e-con-full e-flex e-con e-child\" data-id=\"2dbf4512\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\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-310ebb0b e-flex e-con-boxed e-con e-parent\" data-id=\"310ebb0b\" 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-5982d700 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"5982d700\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* =========================================\n   REBELLE - VIEW THE FULL PROJECT\n========================================= *\/\n\n.rebelle-project-shell {\n    width: max-content;\n    max-width: 100%;\n    overflow: hidden;\n}\n\n.rebelle-project-heading {\n    display: flex;\n    align-items: center;\n    flex-wrap: nowrap;\n\n    width: max-content;\n\n    font-family: \"Arboria Bold\", \"Arboria\", sans-serif !important;\n    font-size: 70px;\n    line-height: 65px;\n    font-weight: 700;\n    letter-spacing: -0.035em;\n\n    color: #b02960;\n}\n\n\n\/* =========================================\n   STATIC \"VIEW THE\"\n========================================= *\/\n\n.rebelle-project-label {\n    display: inline-block;\n    white-space: nowrap;\n}\n\n\n\/* =========================================\n   PURPLE \"FULL PROJECT.\" BLOCK\n========================================= *\/\n\n.rebelle-project-highlight {\n    display: inline-block;\n\n    margin-left: 10px;\n    padding: 5px 12px 8px;\n\n    background-color: #a08ea3;\n    color: #b02960;\n\n    white-space: nowrap;\n\n    font-family: \"Arboria Bold\", \"Arboria\", sans-serif !important;\n    font-size: 70px;\n    line-height: 65px;\n    font-weight: 700;\n\n    will-change: transform, opacity;\n}\n\n\n\/* =========================================\n   START POSITION\n========================================= *\/\n\n.rebelle-project-shell.animate-ready .rebelle-project-highlight {\n    opacity: 0;\n    transform: translateX(-160px);\n}\n\n\n\/* =========================================\n   FLY IN FROM LEFT\n========================================= *\/\n\n.rebelle-project-shell.animate-ready.is-visible .rebelle-project-highlight {\n    animation:\n        rebelleProjectFlyIn\n        1.5s\n        cubic-bezier(0.22, 1, 0.36, 1)\n        forwards;\n}\n\n\n@keyframes rebelleProjectFlyIn {\n\n    0% {\n        opacity: 0;\n        transform: translateX(-160px);\n    }\n\n    100% {\n        opacity: 1;\n        transform: translateX(0);\n    }\n}\n\n\n\/* =========================================\n   TABLET\n========================================= *\/\n\n@media screen and (max-width: 1024px) {\n\n    .rebelle-project-heading,\n    .rebelle-project-highlight {\n        font-size: 54px;\n        line-height: 52px;\n    }\n\n}\n\n\n\/* =========================================\n   MOBILE\n========================================= *\/\n\n@media screen and (max-width: 767px) {\n\n    .rebelle-project-heading,\n    .rebelle-project-highlight {\n        font-size: 36px;\n        line-height: 36px;\n    }\n\n    .rebelle-project-highlight {\n        margin-left: 6px;\n        padding: 3px 7px 5px;\n    }\n\n    .rebelle-project-shell.animate-ready .rebelle-project-highlight {\n        transform: translateX(-90px);\n    }\n\n}\n\n\n\/* =========================================\n   REDUCED MOTION\n========================================= *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n    .rebelle-project-shell.animate-ready .rebelle-project-highlight {\n        opacity: 1;\n        transform: none;\n        animation: none;\n    }\n\n}\n<\/style>\n\n\n<div class=\"rebelle-project-shell\">\n\n    <div class=\"rebelle-project-heading\">\n\n        <span class=\"rebelle-project-label\">\n            View the\n        <\/span>\n\n        <span class=\"rebelle-project-highlight\">\n            full project.\n        <\/span>\n\n    <\/div>\n\n<\/div>\n\n\n<script>\n(function () {\n\n    const sections =\n        document.querySelectorAll('.rebelle-project-shell');\n\n    const reducedMotion =\n        window.matchMedia(\n            '(prefers-reduced-motion: reduce)'\n        ).matches;\n\n\n    sections.forEach(function (section) {\n\n        if (\n            section.classList.contains(\n                'rebelle-project-animation-ready'\n            )\n        ) {\n            return;\n        }\n\n\n        section.classList.add(\n            'animate-ready',\n            'rebelle-project-animation-ready'\n        );\n\n\n        if (reducedMotion) {\n\n            section.classList.add('is-visible');\n\n            return;\n        }\n\n\n        const observer = new IntersectionObserver(\n\n            function (entries, observerInstance) {\n\n                entries.forEach(function (entry) {\n\n                    if (entry.isIntersecting) {\n\n                        entry.target.classList.add(\n                            'is-visible'\n                        );\n\n                        observerInstance.unobserve(\n                            entry.target\n                        );\n\n                    }\n\n                });\n\n            },\n\n            {\n                threshold: 0.35\n            }\n\n        );\n\n\n        observer.observe(section);\n\n    });\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-60b3e414 elementor-widget__width-inherit elementor-arrows-position-inside elementor-widget elementor-widget-image-carousel\" data-id=\"60b3e414\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;slides_to_show&quot;:&quot;4&quot;,&quot;slides_to_scroll&quot;:&quot;1&quot;,&quot;navigation&quot;:&quot;arrows&quot;,&quot;image_spacing_custom&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:30,&quot;sizes&quot;:[]},&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;speed&quot;:500,&quot;image_spacing_custom_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;image_spacing_custom_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"image-carousel.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-image-carousel-wrapper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Image Carousel\" dir=\"ltr\">\n\t\t\t<div class=\"elementor-image-carousel swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 of 7\"><a data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"60b3e414\" data-elementor-lightbox-title=\"hero image\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQxMywidXJsIjoiaHR0cHM6XC9cL2NvbnNvbGRlbW8uY28uemFcL3JlYmVsbGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjZcLzA4XC9IRVJPLUlNQUdFLmpwZWciLCJzbGlkZXNob3ciOiI2MGIzZTQxNCJ9\" href=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/HERO-IMAGE.jpeg\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/HERO-IMAGE.jpeg\" alt=\"hero image\"  title=\"Ujabulile: A Taste of South Africa\" \/><\/figure><\/a><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 of 7\"><a data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"60b3e414\" data-elementor-lightbox-title=\"whatsapp image 2026 08 11 at 15.46.36 (1)\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQxNCwidXJsIjoiaHR0cHM6XC9cL2NvbnNvbGRlbW8uY28uemFcL3JlYmVsbGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjZcLzA4XC9XaGF0c0FwcC1JbWFnZS0yMDI2LTA4LTExLWF0LTE1LjQ2LjM2LTEuanBlZyIsInNsaWRlc2hvdyI6IjYwYjNlNDE0In0%3D\" href=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.36-1.jpeg\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.36-1.jpeg\" alt=\"whatsapp image 2026 08 11 at 15.46.36 (1)\"  title=\"Ujabulile: A Taste of South Africa\" \/><\/figure><\/a><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 of 7\"><a data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"60b3e414\" data-elementor-lightbox-title=\"whatsapp image 2026 08 11 at 15.46.36\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQxNSwidXJsIjoiaHR0cHM6XC9cL2NvbnNvbGRlbW8uY28uemFcL3JlYmVsbGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjZcLzA4XC9XaGF0c0FwcC1JbWFnZS0yMDI2LTA4LTExLWF0LTE1LjQ2LjM2LmpwZWciLCJzbGlkZXNob3ciOiI2MGIzZTQxNCJ9\" href=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.36.jpeg\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.36.jpeg\" alt=\"whatsapp image 2026 08 11 at 15.46.36\"  title=\"Ujabulile: A Taste of South Africa\" \/><\/figure><\/a><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"4 of 7\"><a data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"60b3e414\" data-elementor-lightbox-title=\"whatsapp image 2026 08 11 at 15.46.37 (3)\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQxNiwidXJsIjoiaHR0cHM6XC9cL2NvbnNvbGRlbW8uY28uemFcL3JlYmVsbGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjZcLzA4XC9XaGF0c0FwcC1JbWFnZS0yMDI2LTA4LTExLWF0LTE1LjQ2LjM3LTMuanBlZyIsInNsaWRlc2hvdyI6IjYwYjNlNDE0In0%3D\" href=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.37-3.jpeg\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.37-3.jpeg\" alt=\"whatsapp image 2026 08 11 at 15.46.37 (3)\"  title=\"Ujabulile: A Taste of South Africa\" \/><\/figure><\/a><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"5 of 7\"><a data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"60b3e414\" data-elementor-lightbox-title=\"whatsapp image 2026 08 11 at 15.46.37\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQxNywidXJsIjoiaHR0cHM6XC9cL2NvbnNvbGRlbW8uY28uemFcL3JlYmVsbGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjZcLzA4XC9XaGF0c0FwcC1JbWFnZS0yMDI2LTA4LTExLWF0LTE1LjQ2LjM3LmpwZWciLCJzbGlkZXNob3ciOiI2MGIzZTQxNCJ9\" href=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.37.jpeg\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.37.jpeg\" alt=\"whatsapp image 2026 08 11 at 15.46.37\"  title=\"Ujabulile: A Taste of South Africa\" \/><\/figure><\/a><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"6 of 7\"><a data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"60b3e414\" data-elementor-lightbox-title=\"whatsapp image 2026 08 11 at 15.46.38 (2)\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQxOCwidXJsIjoiaHR0cHM6XC9cL2NvbnNvbGRlbW8uY28uemFcL3JlYmVsbGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjZcLzA4XC9XaGF0c0FwcC1JbWFnZS0yMDI2LTA4LTExLWF0LTE1LjQ2LjM4LTIuanBlZyIsInNsaWRlc2hvdyI6IjYwYjNlNDE0In0%3D\" href=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.38-2.jpeg\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.38-2.jpeg\" alt=\"whatsapp image 2026 08 11 at 15.46.38 (2)\"  title=\"Ujabulile: A Taste of South Africa\" \/><\/figure><\/a><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"7 of 7\"><a data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"60b3e414\" data-elementor-lightbox-title=\"whatsapp image 2026 08 11 at 15.46.38\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQxOSwidXJsIjoiaHR0cHM6XC9cL2NvbnNvbGRlbW8uY28uemFcL3JlYmVsbGVcL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjZcLzA4XC9XaGF0c0FwcC1JbWFnZS0yMDI2LTA4LTExLWF0LTE1LjQ2LjM4LmpwZWciLCJzbGlkZXNob3ciOiI2MGIzZTQxNCJ9\" href=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.38.jpeg\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/WhatsApp-Image-2026-08-11-at-15.46.38.jpeg\" alt=\"whatsapp image 2026 08 11 at 15.46.38\"  title=\"Ujabulile: A Taste of South Africa\" \/><\/figure><\/a><\/div>\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/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-204a154f e-flex e-con-boxed e-con e-parent\" data-id=\"204a154f\" 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-6a624420 e-con-full e-flex e-con e-child\" data-id=\"6a624420\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7ce20134 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"7ce20134\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\/* =====================================================\n   REBELLE - THE REBELLE TOUCH\n===================================================== *\/\n\n.rebelle-touch-shell,\n.rebelle-touch-shell * {\n    box-sizing: border-box;\n}\n\n.rebelle-touch-shell {\n    width: 100%;\n    max-width: 100%;\n}\n\n\n\/* =====================================================\n   MAIN HEADING\n===================================================== *\/\n\n.rebelle-touch-heading {\n    display: flex;\n    align-items: center;\n    flex-wrap: nowrap;\n\n    width: max-content;\n    max-width: 100%;\n\n    font-family: \"Arboria Bold\", \"Arboria\", sans-serif !important;\n\n    font-size: 70px;\n    line-height: 65px;\n    font-weight: 700;\n    letter-spacing: -0.035em;\n\n    color: #b02960;\n}\n\n\n\/* =====================================================\n   STATIC \"THE\"\n===================================================== *\/\n\n.rebelle-touch-label {\n    display: inline-block;\n    flex: 0 0 auto;\n\n    white-space: nowrap;\n}\n\n\n\/* =====================================================\n   ANIMATED GROUP\n   PURPLE BLOCK + WORDING + BOW\n===================================================== *\/\n\n.rebelle-touch-animated {\n    position: relative;\n\n    display: inline-block;\n    flex: 0 0 auto;\n\n    margin-left: 10px;\n\n    will-change: transform, opacity;\n}\n\n\n\/* =====================================================\n   PURPLE BLOCK\n===================================================== *\/\n\n.rebelle-touch-highlight {\n    display: inline-block;\n\n    padding: 5px 18px 8px;\n\n    background-color: #a08ea3;\n    color: #b02960;\n\n    font-family: \"Arboria Bold\", \"Arboria\", sans-serif !important;\n\n    font-size: 70px;\n    line-height: 65px;\n    font-weight: 700;\n    letter-spacing: -0.035em;\n\n    white-space: nowrap;\n}\n\n\n\/* =====================================================\n   BOW\n===================================================== *\/\n\n.rebelle-touch-bow {\n    position: absolute;\n\n    width: 90px;\n    height: auto;\n\n    right: -53px;\n    top: -35px;\n\n    z-index: 3;\n\n    pointer-events: none;\n}\n\n\n\/* =====================================================\n   START POSITION\n===================================================== *\/\n\n.rebelle-touch-shell.animate-ready .rebelle-touch-animated {\n    opacity: 0;\n    transform: translateX(-170px);\n}\n\n\n\/* =====================================================\n   FLY IN FROM LEFT\n===================================================== *\/\n\n.rebelle-touch-shell.animate-ready.is-visible .rebelle-touch-animated {\n    animation:\n        rebelleTouchFlyIn\n        1.5s\n        cubic-bezier(0.22, 1, 0.36, 1)\n        forwards;\n}\n\n\n@keyframes rebelleTouchFlyIn {\n\n    0% {\n        opacity: 0;\n        transform: translateX(-170px);\n    }\n\n    100% {\n        opacity: 1;\n        transform: translateX(0);\n    }\n\n}\n\n\n\/* =====================================================\n   TABLET\n===================================================== *\/\n\n@media screen and (max-width: 1024px) {\n\n    .rebelle-touch-heading,\n    .rebelle-touch-highlight {\n        font-size: 54px;\n        line-height: 52px;\n    }\n\n    .rebelle-touch-bow {\n        width: 75px;\n\n        right: -53px;\n        top: -32px;\n    }\n\n}\n\n\n\/* =====================================================\n   MOBILE\n===================================================== *\/\n\n@media screen and (max-width: 767px) {\n\n    .rebelle-touch-heading {\n        font-size: 34px;\n        line-height: 34px;\n    }\n\n    .rebelle-touch-highlight {\n        font-size: 34px;\n        line-height: 34px;\n\n        padding: 3px 8px 5px;\n    }\n\n    .rebelle-touch-animated {\n        margin-left: 6px;\n    }\n\n    .rebelle-touch-bow {\n        width: 48px;\n\n        right: 110px;\n        top: -23px;\n    }\n\n    .rebelle-touch-shell.animate-ready .rebelle-touch-animated {\n        transform: translateX(-90px);\n    }\n\n}\n\n\n\/* =====================================================\n   REDUCED MOTION\n===================================================== *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n    .rebelle-touch-shell.animate-ready .rebelle-touch-animated {\n        opacity: 1;\n        transform: none;\n        animation: none;\n    }\n\n}\n<\/style>\n\n\n<div class=\"rebelle-touch-shell\">\n\n    <div class=\"rebelle-touch-heading\">\n\n        <!-- STATIC WORD -->\n\n        <span class=\"rebelle-touch-label\">\n            The\n        <\/span>\n\n\n        <!-- EVERYTHING INSIDE THIS GROUP FLIES IN TOGETHER -->\n\n        <span class=\"rebelle-touch-animated\">\n\n            <span class=\"rebelle-touch-highlight\">\n                Rebelle Touch.\n            <\/span>\n\n            <img decoding=\"async\"\n                class=\"rebelle-touch-bow\"\n                src=\"https:\/\/consoldemo.co.za\/rebelle\/wp-content\/uploads\/2026\/08\/Rebelle-Bow.png\"\n                alt=\"Rebelle Bow\"\n                aria-hidden=\"true\"\n             title=\"Ujabulile: A Taste of South Africa\">\n\n        <\/span>\n\n    <\/div>\n\n<\/div>\n\n\n<script>\n(function () {\n\n    const sections =\n        document.querySelectorAll('.rebelle-touch-shell');\n\n    const reducedMotion =\n        window.matchMedia(\n            '(prefers-reduced-motion: reduce)'\n        ).matches;\n\n\n    sections.forEach(function (section) {\n\n        if (\n            section.classList.contains(\n                'rebelle-touch-animation-ready'\n            )\n        ) {\n            return;\n        }\n\n\n        section.classList.add(\n            'animate-ready',\n            'rebelle-touch-animation-ready'\n        );\n\n\n        if (reducedMotion) {\n\n            section.classList.add('is-visible');\n\n            return;\n        }\n\n\n        const observer = new IntersectionObserver(\n\n            function (entries, observerInstance) {\n\n                entries.forEach(function (entry) {\n\n                    if (entry.isIntersecting) {\n\n                        entry.target.classList.add(\n                            'is-visible'\n                        );\n\n                        observerInstance.unobserve(\n                            entry.target\n                        );\n\n                    }\n\n                });\n\n            },\n\n            {\n                threshold: 0.35\n            }\n\n        );\n\n\n        observer.observe(section);\n\n    });\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5ad4c745 elementor-widget__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"5ad4c745\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"p1\">We sourced every item from South African brands and makers, creating a gift that supported local while giving recipients a delicious journey through homegrown favourites.<\/p><p>\u00a0<\/p><p class=\"p1\"><strong>Local flavour, beautifully boxed.<\/strong><\/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-6f9049ec e-con-full e-flex e-con e-child\" data-id=\"6f9049ec\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3742435c elementor-align-justify elementor-widget__width-initial elementor-widget elementor-widget-button\" data-id=\"3742435c\" data-element_type=\"widget\" data-e-type=\"widget\" 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 elementor-animation-grow\" href=\"https:\/\/consoldemo.co.za\/rebelle\/start-a-project\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Start A Project<\/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 class=\"elementor-element elementor-element-2ee74d3b elementor-align-justify elementor-widget__width-initial elementor-widget elementor-widget-button\" data-id=\"2ee74d3b\" data-element_type=\"widget\" data-e-type=\"widget\" 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 elementor-animation-grow\" href=\"https:\/\/consoldemo.co.za\/rebelle\/our-work\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Back To Our Work<\/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","protected":false},"excerpt":{"rendered":"<p>Ujabulile: A Taste of South Africa. Proudly SA Gifts Concept Development \u00b7 Product Sourcing \u00b7 Packaging Design \u00b7 Personalisation \u00b7 Production \u00b7 Concept Development \u00b7 Product Sourcing \u00b7 Packaging Design \u00b7 Personalisation \u00b7 Production \u00b7 Concept Development \u00b7 Product Sourcing \u00b7 Packaging Design \u00b7 Personalisation \u00b7 Production \u00b7 Concept Development \u00b7 Product Sourcing \u00b7 Packaging [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":764,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"disabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2410","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/consoldemo.co.za\/rebelle\/wp-json\/wp\/v2\/pages\/2410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/consoldemo.co.za\/rebelle\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/consoldemo.co.za\/rebelle\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/consoldemo.co.za\/rebelle\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/consoldemo.co.za\/rebelle\/wp-json\/wp\/v2\/comments?post=2410"}],"version-history":[{"count":10,"href":"https:\/\/consoldemo.co.za\/rebelle\/wp-json\/wp\/v2\/pages\/2410\/revisions"}],"predecessor-version":[{"id":2954,"href":"https:\/\/consoldemo.co.za\/rebelle\/wp-json\/wp\/v2\/pages\/2410\/revisions\/2954"}],"up":[{"embeddable":true,"href":"https:\/\/consoldemo.co.za\/rebelle\/wp-json\/wp\/v2\/pages\/764"}],"wp:attachment":[{"href":"https:\/\/consoldemo.co.za\/rebelle\/wp-json\/wp\/v2\/media?parent=2410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}