{"id":5930,"date":"2026-08-05T13:21:01","date_gmt":"2026-08-05T05:21:01","guid":{"rendered":"https:\/\/dressgreen.org\/?page_id=5930"},"modified":"2026-10-07T16:32:40","modified_gmt":"2026-10-07T08:32:40","slug":"corp-solution-upcycling","status":"publish","type":"page","link":"https:\/\/dressgreen.org\/cn\/our-service-corporate-solutions\/corp-solution-upcycling\/","title":{"rendered":"Corporate Upcycling Solutions &#038; Custom Gifts | Dress Green"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull\" style=\"min-height:380px;aspect-ratio:unset;\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1536\" data-attachment-id=\"6072\" data-permalink=\"https:\/\/dressgreen.org\/cn\/our-service-corporate-solutions\/corp-solution-upcycling\/491586765_1210046100484625_3531227147471213640_n\/\" data-orig-file=\"https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?fit=1536%2C1536&amp;ssl=1\" data-orig-size=\"1536,1536\" data-comments-opened=\"1\" data-image-title=\"491586765_1210046100484625_3531227147471213640_n\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?fit=1024%2C1024&amp;ssl=1\" class=\"wp-block-cover__image-background wp-image-6072 size-full\" alt=\"\" src=\"https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=1536%2C1536&#038;ssl=1\" style=\"object-position:56% 59%\" data-object-fit=\"cover\" data-object-position=\"56% 59%\" srcset=\"https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?w=1536&amp;ssl=1 1536w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=1024%2C1024&amp;ssl=1 1024w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=768%2C768&amp;ssl=1 768w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=12%2C12&amp;ssl=1 12w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=1200%2C1200&amp;ssl=1 1200w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=800%2C800&amp;ssl=1 800w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=600%2C600&amp;ssl=1 600w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=400%2C400&amp;ssl=1 400w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=200%2C200&amp;ssl=1 200w, https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg?resize=375%2C375&amp;ssl=1 375w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim\" style=\"background-color:#787c78\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<p class=\"has-text-align-center has-base-2-color has-text-color has-link-color has-body-font-family wp-elements-1 wp-block-paragraph\" style=\"font-size:clamp(20px, 1.25rem + ((1vw - 3.2px) * 1.25), 32px);\">UPCYCLING<\/p>\n<\/div><\/div>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center has-contrast-color has-text-color has-link-color has-body-font-family has-large-font-size wp-elements-2 wp-block-paragraph\"><strong>Upcycling Service<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center alignwide has-body-font-family has-medium-font-size wp-block-paragraph\">We upcycle your company\u2019s old uniforms and sustainable materials into custom products tailored specifically for your brand. Beyond sustainable production, Dress Green collaborates with brands to craft impactful marketing campaigns and strengthen their green brand identity.<\/p>\n\n\n\n<div style=\"height:24px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow\">\n<!-- ========================================== -->\n<!-- SECTION: Upcycling Service Workflow        -->\n<!-- ========================================== -->\n<style>\n.hdiw-container {\n  width: 100%;\n  max-width: none !important;\n  margin: 36px 0;\n  font-family: Inter, sans-serif;\n}\n\n.hdiw-title {\n  margin-bottom: 28px !important;\n  color: #1c6a49 !important;\n  text-align: center;\n  font-size: 1.5rem !important;\n  line-height: 1.3 !important;\n}\n\n.hdiw-title strong {\n  color: #1c6a49 !important;\n}\n\n.hdiw-steps-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 32px 24px;\n  width: 100%;\n}\n\n.hdiw-step-item {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  text-align: center;\n  position: relative;\n}\n\n.hdiw-header {\n  position: relative;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  height: 40px;\n  margin-bottom: 16px;\n}\n\n.hdiw-icon-wrapper {\n  width: 38px;\n  height: 38px;\n  color: #1c6a49;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.hdiw-icon-wrapper svg {\n  width: 28px;\n  height: 28px;\n}\n\n.hdiw-step-item h4 {\n  font-size: 16px !important;\n  font-weight: 700 !important;\n  margin: 0 0 8px 0 !important;\n  line-height: 1.3 !important;\n  color: #1c6a49!important;\n  font-family: inherit;\n}\n\n.hdiw-step-item p {\n  font-size: 13.5px !important;\n  color: #4B5563 !important;\n  line-height: 1.55 !important;\n  margin: 0 !important;\n  font-family: inherit;\n}\n\n.hdiw-actions {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  width: 100%;\n  margin-top: 32px;\n}\n\n.hdiw-btn {\n  background-color: #1c6a49 !important;\n  color: #ffffff !important;\n  font-size: 14px !important;\n  font-weight: 600 !important;\n  padding: 10px 24px !important;\n  border-radius: 6px !important;\n  text-decoration: none !important;\n  transition: background-color 0.2s ease;\n  display: inline-block;\n  text-align: center;\n  font-family: inherit;\n}\n\n.hdiw-btn:hover {\n  background-color: #144d34 !important;\n}\n\n@media (max-width: 992px) {\n  .hdiw-steps-grid {\n    grid-template-columns: repeat(2, 1fr);\n    gap: 32px 24px;\n  }\n}\n\n@media (max-width: 600px) {\n  .hdiw-steps-grid {\n    grid-template-columns: 1fr;\n    gap: 28px;\n  }\n}\n<\/style>\n\n<div class=\"hdiw-container\">\n  <p class=\"has-text-align-center has-contrast-color has-text-color has-link-color has-large-font-size hdiw-title\">\n    <strong>Upcycling Service Workflow<\/strong>\n  <\/p>\n\n  <div class=\"hdiw-steps-grid\">\n    <div class=\"hdiw-step-item\">\n      <div class=\"hdiw-header\">\n        <div class=\"hdiw-icon-wrapper\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"23 4 23 10 17 10\"><\/polyline>\n            <path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"><\/path>\n          <\/svg>\n        <\/div>\n      <\/div>\n      <h4>1. Garment Collection<\/h4>\n      <p>Collect unwanted textiles and garments from your company or organization to initiate the upcycling cycle.<\/p>\n    <\/div>\n\n    <div class=\"hdiw-step-item\">\n      <div class=\"hdiw-header\">\n        <div class=\"hdiw-icon-wrapper\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"><\/path>\n            <polyline points=\"3.27 6.96 12 12.01 20.73 6.96\"><\/polyline>\n            <line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/div>\n      <\/div>\n      <h4>2. Sorting &amp; Material Audit<\/h4>\n      <p>Sort collected textiles by fabric condition and quantify total volume (kg) to prepare for processing.<\/p>\n    <\/div>\n\n    <div class=\"hdiw-step-item\">\n      <div class=\"hdiw-header\">\n        <div class=\"hdiw-icon-wrapper\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polygon points=\"12 2 2 7 12 12 22 7 12 2\"><\/polygon>\n            <polyline points=\"2 17 12 22 22 17\"><\/polyline>\n            <polyline points=\"2 12 12 17 22 12\"><\/polyline>\n          <\/svg>\n        <\/div>\n      <\/div>\n      <h4>3. Redesign Development<\/h4>\n      <p>Collaborate with our design team to convert discarded fabrics into brand-new product concepts.<\/p>\n    <\/div>\n\n    <div class=\"hdiw-step-item\">\n      <div class=\"hdiw-header\">\n        <div class=\"hdiw-icon-wrapper\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M20.38 3.46 16 2a4 4 0 0 0-8 0L3.62 3.46a2 2 0 0 0-1.34 2.23l.58 3.47a1 1 0 0 0 .99.84H6v10a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V10h2.15a1 1 0 0 0 .99-.84l.58-3.47a2 2 0 0 0-1.34-2.23z\"><\/path>\n          <\/svg>\n        <\/div>\n      <\/div>\n      <h4>4. Sample Approval<\/h4>\n      <p>Receive and review physical upcycled prototypes for quality and design sign-off prior to production.<\/p>\n    <\/div>\n\n    <div class=\"hdiw-step-item\">\n      <div class=\"hdiw-header\">\n        <div class=\"hdiw-icon-wrapper\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"><\/path>\n            <circle cx=\"9\" cy=\"7\" r=\"4\"><\/circle>\n            <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"><\/path>\n            <path d=\"M16 3.13a4 4 0 0 1 0 7.75\"><\/path>\n          <\/svg>\n        <\/div>\n      <\/div>\n      <h4>5. Mass Production<\/h4>\n      <p>Full-scale production executed by our inclusive team, empowering PWDs, elderly, and retired artisans.<\/p>\n    <\/div>\n\n    <div class=\"hdiw-step-item\">\n      <div class=\"hdiw-header\">\n        <div class=\"hdiw-icon-wrapper\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"><\/line>\n            <line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"><\/line>\n            <line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"><\/line>\n          <\/svg>\n        <\/div>\n      <\/div>\n      <h4>6. ESG Impact Report<\/h4>\n      <p>Obtain a detailed report highlighting social impact (man-hours for vulnerable groups) and textile mass saved (kg).<\/p>\n    <\/div>\n  <\/div>\n\n  <div class=\"hdiw-actions\">\n    <a href=\"https:\/\/api.whatsapp.com\/send\/?phone=85236119078&amp;text=Hi+Dress+Green%2C+I+want+to+inquire+about+Upcycling+Service&amp;type=phone_number&amp;app_absent=0\" class=\"hdiw-btn\">Inquire Upcycling Service<\/a>\n  <\/div>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:24px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center has-contrast-color has-text-color has-link-color has-body-font-family has-large-font-size wp-elements-3 wp-block-paragraph\"><strong>Featured Projects<\/strong><\/p>\n\n\n\n<div class=\"wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow\">\n<title>Featured Projects Carousel<\/title>\n\n  <!-- Performance & Preconnect Hints -->\n  <link rel=\"preconnect\" href=\"https:\/\/cdn.tailwindcss.com\" crossorigin=\"\">\n  <link rel=\"preconnect\" href=\"https:\/\/dressgreen.org\" crossorigin=\"\">\n  <link rel=\"preload\" as=\"image\" href=\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/09\/Untitled-design-54.png\" fetchpriority=\"high\">\n\n  <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n  <script>\n    tailwind.config = {\n      theme: {\n        extend: {\n          colors: {\n            brandGreen: {\n              800: '#1c6a49 ',\n              900: '#1b5e20',\n            }\n          }\n        }\n      }\n    }\n  <\/script>\n\n  <style>\n    #featured-modal.hidden,\n    #featured-modal[style*=\"display: none\"] {\n      display: none !important;\n    }\n\n    #featured-projects-block * {\n      -webkit-tap-highlight-color: transparent;\n    }\n\n    #featured-projects-block button:focus,\n    #featured-projects-block div:focus {\n      outline: none !important;\n      box-shadow: none !important;\n    }\n  <\/style>\n\n<!-- ================================================================= -->\n<!-- FEATURED PROJECTS CAROUSEL BLOCK (Max Width 1280px)               -->\n<!-- ================================================================= -->\n<div id=\"featured-projects-block\" class=\"max-w-[1280px] mx-auto px-0 sm:px-6 my-8 font-sans select-none\">\n    \n    <!-- Main Carousel Wrapper -->\n    <div class=\"relative group\" id=\"featured-carousel-wrapper\">\n        \n        <!-- Track Container -->\n        <div id=\"featured-carousel-container\" class=\"overflow-hidden bg-gray-900 border-0 sm:border sm:border-gray-100 sm:rounded-none\">\n            <div id=\"featured-track\" class=\"flex transition-transform duration-500 cubic-bezier(0.25, 1, 0.5, 1) w-full\">\n                <!-- Slides rendered dynamically -->\n            <\/div>\n        <\/div>\n\n        <!-- Desktop Pagination Dots -->\n        <div id=\"featured-dots-desktop\" class=\"hidden md:flex absolute bottom-4 right-6 z-20 items-center space-x-2\">\n            <!-- Desktop dots generated dynamically -->\n        <\/div>\n\n    <\/div>\n\n    <!-- POP-OUT \/ MODAL FOR FEATURED DETAILS -->\n    <div id=\"featured-modal\" class=\"hidden fixed inset-0 z-[99999] items-center justify-center p-4 bg-black\/50 backdrop-blur-sm opacity-0 pointer-events-none transition-all duration-300\">\n        <!-- Overlay Click Area -->\n        <div class=\"absolute inset-0\" onclick=\"closeFeaturedModal()\"><\/div>\n\n        <!-- Modal Content Container -->\n        <div class=\"relative bg-white rounded-2xl max-w-2xl w-full max-h-[85vh] flex flex-col overflow-hidden shadow-xl transform scale-95 transition-transform duration-300 z-10\" id=\"featured-modal-box\">\n            \n            <!-- Close Button -->\n            <button onclick=\"closeFeaturedModal()\" aria-label=\"Close overview modal\" class=\"absolute top-4 right-4 z-30 w-9 h-9 rounded-full bg-black\/40 hover:bg-black\/70 text-white flex items-center justify-center transition-colors focus:outline-none shadow-md cursor-pointer\">\n                <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"><\/path>\n                <\/svg>\n            <\/button>\n\n            <!-- FIXED MODAL IMAGE GALLERY HEADER -->\n            <div class=\"relative aspect-[16\/9] w-full bg-gray-900 overflow-hidden group\/modal flex-shrink-0\" id=\"modal-gallery-container\">\n                <div id=\"modal-image-track\" class=\"flex transition-transform duration-500 ease-out h-full w-full\">\n                    <!-- Gallery slides injected dynamically -->\n                <\/div>\n\n                <!-- Gradient Overlay -->\n                <div class=\"absolute inset-0 bg-gradient-to-t from-black\/40 via-transparent to-transparent pointer-events-none z-10\"><\/div>\n\n                <!-- Frameless Modal Image Nav Arrows -->\n                <button id=\"modal-prev-btn\" onclick=\"prevModalImage()\" aria-label=\"Previous Image\" class=\"absolute left-2 sm:left-4 top-1\/2 -translate-y-1\/2 z-20 bg-transparent border-0 outline-none p-0 focus:outline-none text-white\/90 hover:text-white transition-all duration-200 hover:scale-125 active:scale-95 drop-shadow-[0_2px_6px_rgba(0,0,0,0.8)] cursor-pointer\">\n                    <svg class=\"w-7 h-7 sm:w-8 sm:h-8\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                        <path d=\"M15 18L9 12L15 6\"><\/path>\n                    <\/svg>\n                <\/button>\n                <button id=\"modal-next-btn\" onclick=\"nextModalImage()\" aria-label=\"Next Image\" class=\"absolute right-2 sm:right-4 top-1\/2 -translate-y-1\/2 z-20 bg-transparent border-0 outline-none p-0 focus:outline-none text-white\/90 hover:text-white transition-all duration-200 hover:scale-125 active:scale-95 drop-shadow-[0_2px_6px_rgba(0,0,0,0.8)] cursor-pointer\">\n                    <svg class=\"w-7 h-7 sm:w-8 sm:h-8\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                        <path d=\"M9 18L15 12L9 6\"><\/path>\n                    <\/svg>\n                <\/button>\n\n                <!-- Modal Gallery Pagination Dots -->\n                <div id=\"modal-image-dots\" class=\"absolute bottom-3 left-1\/2 -translate-x-1\/2 z-20 flex items-center space-x-1.5\">\n                    <!-- Modal dots injected dynamically -->\n                <\/div>\n            <\/div>\n\n            <!-- SCROLLABLE TEXT CONTENT -->\n            <div class=\"p-6 sm:p-8 space-y-4 overflow-y-auto flex-1\">\n                <div>\n                    <h3 id=\"modal-title\" class=\"text-2xl font-bold text-gray-900 leading-snug\"><\/h3>\n                    <p id=\"modal-location\" class=\"text-sm font-medium text-brandGreen-900 mt-1\"><\/p>\n                <\/div>\n\n                <div class=\"pt-2 border-t border-gray-100\">\n                    <h4 class=\"text-xs font-semibold text-gray-400 uppercase tracking-wider mb-2\">Project Highlights &amp; Overview<\/h4>\n                    <p id=\"modal-description\" class=\"text-sm text-gray-600 leading-relaxed\"><\/p>\n                <\/div>\n\n                <div class=\"pt-4 flex justify-end\">\n                    <button onclick=\"closeFeaturedModal()\" class=\"px-5 py-2.5 bg-brandGreen-900 hover:bg-brandGreen-800 text-white font-medium text-sm rounded-lg transition-colors focus:outline-none cursor-pointer\">\n                        Close Overview\n                    <\/button>\n                <\/div>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n<\/div>\n\n<!-- JAVASCRIPT LOGIC -->\n<script>\n    const FEATURED_PROJECTS = [\n        {\n            id: 'feat-1',\n            title: 'The Pen Bear',\n            location: '@The Peninsula Hong Kong',\n            coverImageDesktop: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/08\/Case-Study-Banners-1200-x-520-px-13.png',\n            coverImageMobile: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/Untitled-design-59.png',\n            coverAlt: 'The Pen Bear - Upcycled Pageboy Uniform Teddy Bear at The Peninsula Hong Kong',\n            images: [\n                {\n                    url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/Untitled-design-59.png',\n                    alt: 'The Pen Bear upcycled teddy bears in hotel uniform'\n                },\n {\n                    url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/Untitled-design-18.png',\n                    alt: 'The Peninsula teddy bear in a white hotel pageboy uniform sitting outdoors'\n                },\n {\n                    url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/Untitled-design-19.png',\n                    alt: 'The Pen Bear dressed in a custom white pageboy uniform and cap'\n                },\n {\n                    url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/Untitled-design-21.png',\n                    alt: 'White hotel pageboy uniform jacket and trousers'\n                },\n            ],\n            description: 'In collaboration with The Peninsula Hong Kong, The Pen Bear transforms retired hotel textiles into a circular innovation mascot. The signature white jacket and hat are custom-tailored from decommissioned corporate uniforms, while the plush filling is made from thoroughly cleaned, repurposed hotel feather toppers.<br><\/br>Beyond diverting textile waste from local landfills, each bear is handcrafted in local workshops by marginalized community members\u2014including the elderly, persons with disabilities, and individuals in mental health recovery\u2014combining luxury heritage with social impact.'\n        },\n        {\n            id: 'feat-2',\n            title: 'Wyatt the Shih Tzu',\n            location: '@Grand Hyatt Hong Kong',\n            coverImageDesktop: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/08\/Case-Study-Banners-1200-x-520-px-10.png',\n            coverImageMobile: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/Untitled-design-61.png', \n            coverAlt: 'Wyatt the Shih Tzu upcycled plushes in chef uniform',\n            images: [\n                { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/Untitled-design-61.png', alt: 'Wyatt the Shih Tzu upcycled plush dog in hotel chef cloths' },\n                { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/6-1.png', alt: 'Teddy bear in chef uniform and hat sitting in kitchen' },\n                { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/7-1.png', alt: 'Two seniors sewing teddy bears wearing chef uniforms' },\n                { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/8-1.png', alt: 'Smiling man collecting large pile of white uniform cloths' },\n                { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/9-1.png', alt: 'Laser cutter tracing patterns on white uniform fabric' },\n                { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/10-1.png', alt: 'Laser cutter bed with multiple small chef hat pieces cut out' }\n            ],\n            description: 'In collaboration with Grand Hyatt Hong Kong, \u201cWyatt\u201d the Shih Tzu repurposes retired hotel linens into a custom corporate mascot. The chef hat and uniform shirt are handcrafted using decommissioned white hotel chef uniforms and table linens, while the inner plush filling is made from repurposed textile fibers.<br><\/br>This upcycling initiative diverts discarded hospitality linens directly from local landfills while promoting circular design. Handcrafted by local community workshops, each plush mascot showcases sustainable craftsmanship and hotel brand identity.'\n        },\n        {\n            id: 'feat-3',\n            title: 'Brooks Brothers 205th Anniversary Commemorative Lamb Plush Collection',\n            location: '@Brooks Brothers',\n            coverImageDesktop: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/Brooks-Brother-Lamb.png',\n            coverImageMobile: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/11-1.png', \n            coverAlt: 'Brooks Brothers 205th Anniversary Commemorative Lamb Plush Collection',\n            images: [\n    { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/11-1.png', alt: 'Brooks Brothers 205th Anniversary Commemorative Lamb Plush Collection poster' },\n    { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/12-1.png', alt: 'Wall of Brooks Brothers commemorative plush lambs displayed in individual boxes' },\n    { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/13-1.png', alt: 'Plush lamb wearing red plaid shirt and tie next to miniature clothing items' },\n    { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/14-1.png', alt: 'Plush lambs wearing navy jackets surrounded by buttons, clothes, and hangers' },\n    { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/15-1.png', alt: 'Close-up of a sewing machine stitching denim fabric with elastic band' }\n            ],\n            description: 'The Brooks Brothers 205th Anniversary Commemorative Lamb Plush Project is an upcycling and brand collaboration initiative executed in partnership with Dress Green. Celebrating over two centuries of Brooks Brothers heritage, this project transforms authentic surplus textiles and iconic uniform materials into bespoke, high-value collectible lamb plushies, showcasing a blend of sustainable craftsmanship, historical prestige, and social inclusion.'\n        },\n        {\n            id: 'feat-4',\n            title: 'HAECO Shoe Bag',\n            location: '@HAECO',\n            coverImageDesktop: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/HAECO-Sheo-Bag.png',\n            coverImageMobile: '', \n            coverAlt: '',\n            images: [\n    { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/16-1.png', alt: 'Two teal upcycled shoe bags made from HAECO coveralls with diagonal white zippers and branded logos' },\n    { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/17-1.png', alt: 'Teal HAECO workwear jacket paired with upcycled shoe bags, one containing a white sneaker' },\n    { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/18-1.png', alt: 'Disassembled grey and teal HAECO coverall fabric pieces arranged flat for upcycling' },\n    { url: 'https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/19-1.png', alt: 'A PwD cutting green HAECO workwear fabric with scissors during the upcycling process' }\n            ],\n            description: \"Shoe bags for HAECO are crafted from employees' worn work clothes, blending practicality with modern style. Featuring a front zip for easy access, they cater to HAECO employees who enjoy gym and sports activities. These bags also demonstrate the company's commitment to environmental protection.\"\n        },\n    ];\n\n    let currentFeaturedIndex = 0;\n    let currentModalImageIndex = 0;\n    let currentModalProjectImages = [];\n    let featuredAutoplayTimer = null;\n\n    let trackEl, desktopDotsContainerEl, modalEl, modalBoxEl, modalTrackEl, modalDotsEl, modalPrevBtn, modalNextBtn;\n\n    const PLACEHOLDER_IMG = 'https:\/\/placehold.co\/800x450\/111827\/ffffff?text=Image+Unavailable';\n\n    function preloadImage(url) {\n        if (!url) return;\n        const img = new Image();\n        img.src = url;\n    }\n\n    function initFeaturedCarousel() {\n        trackEl = document.getElementById('featured-track');\n        desktopDotsContainerEl = document.getElementById('featured-dots-desktop');\n        modalEl = document.getElementById('featured-modal');\n        modalBoxEl = document.getElementById('featured-modal-box');\n        modalTrackEl = document.getElementById('modal-image-track');\n        modalDotsEl = document.getElementById('modal-image-dots');\n        modalPrevBtn = document.getElementById('modal-prev-btn');\n        modalNextBtn = document.getElementById('modal-next-btn');\n\n        if (!trackEl) return;\n\n        trackEl.innerHTML = FEATURED_PROJECTS.map((item, idx) => {\n            const isFirst = idx === 0;\n            const fallbackImg = (typeof item.images[0] === 'string' ? item.images[0] : item.images[0]?.url) || PLACEHOLDER_IMG;\n            \n            const desktopImg = item.coverImageDesktop || fallbackImg;\n            const mobileImg = item.coverImageMobile || desktopImg;\n            const imgAlt = item.coverAlt || `${item.title} ${item.location}`;\n            \n            const imgAttrs = isFirst \n                ? 'fetchpriority=\"high\" decoding=\"async\"' \n                : 'loading=\"lazy\" decoding=\"async\"';\n\n            return `\n            <div class=\"w-full flex-shrink-0 cursor-pointer group focus:outline-none select-none\" tabindex=\"-1\" onclick=\"openFeaturedModal(${idx})\">\n                <div class=\"relative w-full aspect-[16\/9] md:aspect-auto md:h-[500px] bg-black overflow-hidden\">\n                    <picture>\n                        <!-- Mobile cover image for screens < 768px -->\n                        <source media=\"(max-width: 767px)\" srcset=\"${mobileImg}\">\n                        <!-- Desktop cover image for screens >= 768px -->\n                        <img decoding=\"async\" \n                            src=\"${desktopImg}\" \n                            alt=\"${imgAlt}\" \n                            class=\"w-full h-full object-cover object-center transition-transform duration-700 ease-out group-hover:scale-105\"\n                            ${imgAttrs}\n                            onerror=\"this.onerror=null; this.src='${PLACEHOLDER_IMG}';\"\n                        \/>\n                    <\/picture>\n\n                    <!-- SEO Crawlability: Visually Hidden Heading for Search Engine Indexing -->\n                    <span class=\"sr-only\">${item.title} - ${item.location}<\/span>\n\n                    <!-- Main Carousel Nav Arrows -->\n                    <button onclick=\"event.stopPropagation(); prevFeaturedSlide()\" class=\"absolute left-2 sm:left-5 top-1\/2 -translate-y-1\/2 z-20 cursor-pointer bg-transparent border-0 outline-none p-0 focus:outline-none text-white\/90 hover:text-white transition-all duration-200 hover:scale-125 active:scale-95 drop-shadow-[0_2px_6px_rgba(0,0,0,0.8)]\" aria-label=\"Previous Featured Project\" tabindex=\"-1\">\n                        <svg class=\"w-7 h-7 sm:w-11 sm:h-11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                            <path d=\"M15 18L9 12L15 6\"><\/path>\n                        <\/svg>\n                    <\/button>\n\n                    <button onclick=\"event.stopPropagation(); nextFeaturedSlide()\" class=\"absolute right-2 sm:right-5 top-1\/2 -translate-y-1\/2 z-20 cursor-pointer bg-transparent border-0 outline-none p-0 focus:outline-none text-white\/90 hover:text-white transition-all duration-200 hover:scale-125 active:scale-95 drop-shadow-[0_2px_6px_rgba(0,0,0,0.8)]\" aria-label=\"Next Featured Project\" tabindex=\"-1\">\n                        <svg class=\"w-7 h-7 sm:w-11 sm:h-11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                            <path d=\"M9 18L15 12L9 6\"><\/path>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n            <\/div>\n            `;\n        }).join('');\n\n        if (desktopDotsContainerEl) {\n            desktopDotsContainerEl.innerHTML = FEATURED_PROJECTS.map((_, idx) => `\n                <button \n                    onclick=\"event.stopPropagation(); goToFeaturedSlide(${idx})\" \n                    class=\"w-2.5 h-2.5 rounded-full transition-all duration-300 focus:outline-none cursor-pointer ${idx === 0 ? 'bg-white w-7' : 'bg-white\/50 hover:bg-white\/80'}\"\n                    aria-label=\"Slide ${idx + 1}\"\n                ><\/button>\n            `).join('');\n        }\n\n        setupTouchGestures();\n\n        const wrapper = document.getElementById('featured-carousel-wrapper');\n        if (wrapper) {\n            wrapper.addEventListener('mouseenter', pauseFeaturedAutoplay, { passive: true });\n            wrapper.addEventListener('mouseleave', startFeaturedAutoplay, { passive: true });\n        }\n\n        document.addEventListener('visibilitychange', () => {\n            if (document.hidden) {\n                pauseFeaturedAutoplay();\n            } else {\n                startFeaturedAutoplay();\n            }\n        });\n\n        if (window.requestIdleCallback) {\n            requestIdleCallback(() => {\n                preloadImage(FEATURED_PROJECTS[1]?.coverImageDesktop);\n                if (FEATURED_PROJECTS[1]?.coverImageMobile) preloadImage(FEATURED_PROJECTS[1]?.coverImageMobile);\n            });\n        } else {\n            setTimeout(() => {\n                preloadImage(FEATURED_PROJECTS[1]?.coverImageDesktop);\n                if (FEATURED_PROJECTS[1]?.coverImageMobile) preloadImage(FEATURED_PROJECTS[1]?.coverImageMobile);\n            }, 1000);\n        }\n\n        startFeaturedAutoplay();\n    }\n\n    function updateFeaturedSlide() {\n        if (trackEl) {\n            trackEl.style.transform = `translateX(-${currentFeaturedIndex * 100}%)`;\n        }\n\n        const desktopDots = document.querySelectorAll('#featured-dots-desktop button');\n        desktopDots.forEach((dot, idx) => {\n            if (idx === currentFeaturedIndex) {\n                dot.className = 'w-7 h-2.5 rounded-full bg-white transition-all duration-300 focus:outline-none cursor-pointer';\n            } else {\n                dot.className = 'w-2.5 h-2.5 rounded-full bg-white\/50 hover:bg-white\/80 transition-all duration-300 focus:outline-none cursor-pointer';\n            }\n        });\n\n        const nextIdx = (currentFeaturedIndex + 1) % FEATURED_PROJECTS.length;\n        const nextImgDesktop = FEATURED_PROJECTS[nextIdx]?.coverImageDesktop;\n        const nextImgMobile = FEATURED_PROJECTS[nextIdx]?.coverImageMobile;\n        if (nextImgDesktop) preloadImage(nextImgDesktop);\n        if (nextImgMobile) preloadImage(nextImgMobile);\n    }\n\n    function nextFeaturedSlide() {\n        currentFeaturedIndex = (currentFeaturedIndex + 1) % FEATURED_PROJECTS.length;\n        updateFeaturedSlide();\n        resetFeaturedAutoplay();\n    }\n\n    function prevFeaturedSlide() {\n        currentFeaturedIndex = (currentFeaturedIndex - 1 + FEATURED_PROJECTS.length) % FEATURED_PROJECTS.length;\n        updateFeaturedSlide();\n        resetFeaturedAutoplay();\n    }\n\n    function goToFeaturedSlide(index) {\n        currentFeaturedIndex = index;\n        updateFeaturedSlide();\n        resetFeaturedAutoplay();\n    }\n\n    function startFeaturedAutoplay() {\n        if (!featuredAutoplayTimer && FEATURED_PROJECTS.length > 1) {\n            featuredAutoplayTimer = setInterval(nextFeaturedSlide, 5000);\n        }\n    }\n\n    function pauseFeaturedAutoplay() {\n        if (featuredAutoplayTimer) {\n            clearInterval(featuredAutoplayTimer);\n            featuredAutoplayTimer = null;\n        }\n    }\n\n    function resetFeaturedAutoplay() {\n        pauseFeaturedAutoplay();\n        startFeaturedAutoplay();\n    }\n\n    function setupTouchGestures() {\n        let touchStartX = 0;\n        let touchEndX = 0;\n\n        const container = document.getElementById('featured-carousel-container');\n        if (!container) return;\n\n        container.addEventListener('touchstart', (e) => {\n            touchStartX = e.changedTouches[0].screenX;\n        }, { passive: true });\n\n        container.addEventListener('touchend', (e) => {\n            touchEndX = e.changedTouches[0].screenX;\n            handleSwipe();\n        }, { passive: true });\n\n        function handleSwipe() {\n            const swipeThreshold = 40;\n            if (touchStartX - touchEndX > swipeThreshold) {\n                nextFeaturedSlide();\n            } else if (touchEndX - touchStartX > swipeThreshold) {\n                prevFeaturedSlide();\n            }\n        }\n    }\n\n    function renderModalGallery(images, projectTitle) {\n        currentModalProjectImages = (images && images.length > 0) ? images : [{ url: PLACEHOLDER_IMG, alt: 'Project preview' }];\n        currentModalImageIndex = 0;\n\n        if (!modalTrackEl || !modalDotsEl) return;\n\n        modalTrackEl.innerHTML = currentModalProjectImages.map((imgObj, i) => {\n            const imgUrl = typeof imgObj === 'string' ? imgObj : imgObj.url;\n            const imgAlt = (typeof imgObj === 'object' && imgObj.alt) ? imgObj.alt : `${projectTitle} image ${i + 1}`;\n\n            return `\n            <div class=\"min-w-full flex-shrink-0 h-full w-full flex items-center justify-center bg-black\">\n                <img \n                    src=\"${imgUrl}\" \n                    alt=\"${imgAlt}\" \n                    class=\"w-full h-full object-cover\" \n                    ${i === 0 ? 'decoding=\"async\"' : 'loading=\"lazy\" decoding=\"async\"'}\n                    onerror=\"this.onerror=null; this.src='${PLACEHOLDER_IMG}';\"\n                \/>\n            <\/div>\n            `;\n        }).join('');\n\n        if (currentModalProjectImages.length > 1) {\n            modalPrevBtn.style.display = 'block';\n            modalNextBtn.style.display = 'block';\n            modalDotsEl.innerHTML = currentModalProjectImages.map((_, idx) => `\n                <button \n                    onclick=\"goToModalImage(${idx})\" \n                    class=\"w-2 h-2 rounded-full transition-all duration-300 focus:outline-none cursor-pointer ${idx === 0 ? 'bg-white w-5' : 'bg-white\/50 hover:bg-white\/80'}\"\n                    aria-label=\"Modal slide ${idx + 1}\"\n                ><\/button>\n            `).join('');\n        } else {\n            modalPrevBtn.style.display = 'none';\n            modalNextBtn.style.display = 'none';\n            modalDotsEl.innerHTML = '';\n        }\n\n        updateModalImageSlide();\n    }\n\n    function updateModalImageSlide() {\n        if (modalTrackEl) {\n            modalTrackEl.style.transform = `translateX(-${currentModalImageIndex * 100}%)`;\n        }\n\n        const dots = document.querySelectorAll('#modal-image-dots button');\n        dots.forEach((dot, idx) => {\n            if (idx === currentModalImageIndex) {\n                dot.className = 'w-5 h-2 rounded-full bg-white transition-all duration-300 focus:outline-none cursor-pointer';\n            } else {\n                dot.className = 'w-2 h-2 rounded-full bg-white\/50 hover:bg-white\/80 transition-all duration-300 focus:outline-none cursor-pointer';\n            }\n        });\n    }\n\n    function nextModalImage() {\n        if (currentModalProjectImages.length <= 1) return;\n        currentModalImageIndex = (currentModalImageIndex + 1) % currentModalProjectImages.length;\n        updateModalImageSlide();\n    }\n\n    function prevModalImage() {\n        if (currentModalProjectImages.length <= 1) return;\n        currentModalImageIndex = (currentModalImageIndex - 1 + currentModalProjectImages.length) % currentModalProjectImages.length;\n        updateModalImageSlide();\n    }\n\n    function goToModalImage(index) {\n        currentModalImageIndex = index;\n        updateModalImageSlide();\n    }\n\n    function openFeaturedModal(index) {\n        const project = FEATURED_PROJECTS[index];\n        if (!project) return;\n\n        document.getElementById('modal-title').innerText = project.title;\n        document.getElementById('modal-location').innerText = project.location;\n        document.getElementById('modal-description').innerHTML = project.description;\n\n        renderModalGallery(project.images, project.title);\n\n        modalEl.classList.remove('hidden');\n        modalEl.classList.add('flex');\n\n        requestAnimationFrame(() => {\n            modalEl.classList.remove('opacity-0', 'pointer-events-none');\n            modalBoxEl.classList.remove('scale-95');\n            modalBoxEl.classList.add('scale-100');\n        });\n\n        pauseFeaturedAutoplay();\n    }\n\n    function closeFeaturedModal() {\n        modalEl.classList.add('opacity-0', 'pointer-events-none');\n        modalBoxEl.classList.remove('scale-100');\n        modalBoxEl.classList.add('scale-95');\n\n        setTimeout(() => {\n            modalEl.classList.remove('flex');\n            modalEl.classList.add('hidden');\n        }, 300);\n\n        startFeaturedAutoplay();\n    }\n\n    document.addEventListener('keydown', (e) => {\n        if (!modalEl || modalEl.classList.contains('hidden')) return;\n        if (e.key === 'Escape') closeFeaturedModal();\n        if (e.key === 'ArrowRight') nextModalImage();\n        if (e.key === 'ArrowLeft') prevModalImage();\n    });\n\n    document.addEventListener('DOMContentLoaded', initFeaturedCarousel);\n<\/script>\n<\/div>\n\n\n\n\n\n<p class=\"has-text-align-center has-contrast-color has-text-color has-link-color has-body-font-family has-large-font-size wp-elements-4 wp-block-paragraph\"><strong>Explore More Upcycling Products<\/strong><\/p>\n\n\n\n<div class=\"wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow\">\n<link rel=\"preconnect\" href=\"https:\/\/dressgreen.org\" crossorigin=\"\">\n<link rel=\"dns-prefetch\" href=\"https:\/\/dressgreen.org\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&amp;display=swap\" rel=\"stylesheet\" media=\"print\" onload=\"this.media='all'\">\n\n<style>\n    .showcase-container {\n        --brand-green-900: #1b5e20;\n        --brand-green-hover: #15803d;\n        --text-gray-900: #111827;\n        --text-gray-500: #6b7280;\n        --border-gray-100: #f3f4f6;\n        \n        font-family: 'Inter', system-ui, -apple-system, sans-serif !important;\n        background-color: #fffefa;\n        color: #1f2937;\n        max-width: 1280px;\n        margin-left: auto;\n        margin-right: auto;\n        padding: 2rem 1rem;\n        box-sizing: border-box;\n    }\n\n    .showcase-container *, .showcase-container *::before, .showcase-container *::after {\n        box-sizing: border-box;\n    }\n\n    @media (min-width: 640px) {\n        .showcase-container {\n            padding-left: 1.5rem;\n            padding-right: 1.5rem;\n        }\n    }\n\n    .filter-wrapper {\n        margin-bottom: 2.5rem;\n        border-bottom: 1px solid var(--border-gray-100);\n        padding-bottom: 0.5rem;\n    }\n    .filter-container {\n        display: flex;\n        flex-wrap: wrap;\n        align-items: center;\n        justify-content: center;\n        gap: 1.5rem;\n        overflow-x: auto;\n    }\n    @media (min-width: 640px) {\n        .filter-container {\n            gap: 2.5rem;\n        }\n    }\n\n    .filter-btn {\n        position: relative !important;\n        padding: 0.5rem 0 !important;\n        font-size: 0.875rem !important;\n        font-weight: 600 !important;\n        background: transparent !important;\n        border: none !important;\n        outline: none !important;\n        box-shadow: none !important;\n        cursor: pointer;\n        white-space: nowrap;\n        color: var(--text-gray-500) !important;\n        transition: color 0.2s ease;\n        line-height: 1.5 !important;\n        margin: 0 !important;\n        font-family: inherit !important;\n    }\n\n    .filter-btn::before,\n    .filter-btn::after,\n    .filter-btn .indicator::before,\n    .filter-btn .indicator::after {\n        display: none !important;\n        content: none !important;\n    }\n\n    @media (min-width: 640px) {\n        .filter-btn {\n            font-size: 1rem !important;\n        }\n    }\n    .filter-btn:hover, .filter-btn.active {\n        color: var(--brand-green-900) !important;\n    }\n    .filter-btn .indicator {\n        position: absolute;\n        bottom: 0;\n        left: 0;\n        width: 100%;\n        height: 2.5px;\n        background-color: var(--brand-green-900);\n        border-radius: 9999px;\n        border: none !important;\n    }\n\n    .cases-grid {\n        display: grid;\n        grid-template-columns: repeat(1, minmax(0, 1fr));\n        column-gap: 1.5rem;\n        row-gap: 2.5rem;\n        min-height: 400px;\n    }\n    @media (min-width: 640px) {\n        .cases-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n    }\n    @media (min-width: 768px) {\n        .cases-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }\n    }\n    @media (min-width: 1024px) {\n        .cases-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n    }\n\n    .case-card {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n    .card-image-wrapper {\n        position: relative;\n        width: 100%;\n        aspect-ratio: 1 \/ 1;\n        overflow: hidden;\n        background-color: #f3f4f6;\n        box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n        margin-bottom: 0.75rem;\n    }\n\n    .slider-track {\n        display: flex;\n        transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n        width: 100%;\n        height: 100%;\n        will-change: transform;\n    }\n\n    .slider-slide {\n        flex: 0 0 100%;\n        width: 100%;\n        height: 100%;\n        position: relative;\n        background-color: #e5e7eb;\n    }\n\n    .slider-slide img {\n        width: 100%;\n        height: 100%;\n        object-fit: cover;\n        display: block;\n        backface-visibility: hidden;\n        transform: translateZ(0);\n        transition: opacity 0.2s ease-in-out;\n    }\n\n    .showcase-container .hidden { display: none !important; }\n    .no-scrollbar::-webkit-scrollbar { display: none; }\n    .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }\n\n    .green-arrow-btn {\n        position: absolute;\n        top: 50%;\n        transform: translateY(-50%);\n        background: transparent !important;\n        border: none !important;\n        outline: none !important;\n        box-shadow: none !important;\n        filter: drop-shadow(0px 1px 2px rgba(0,0,0,0.4));\n        transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), filter 0.2s ease;\n        transform-origin: center center;\n        padding: 0.375rem;\n        z-index: 10;\n        cursor: pointer;\n    }\n    .green-arrow-btn.left-btn { left: 0.5rem; }\n    .green-arrow-btn.right-btn { right: 0.5rem; }\n\n    .green-arrow-btn:hover {\n        transform: translateY(-50%) scale(1.22) !important;\n        filter: drop-shadow(0px 2px 5px rgba(0,0,0,0.6));\n    }\n    .green-arrow-btn:active {\n        transform: translateY(-50%) scale(0.95) !important;\n    }\n\n    .card-meta {\n        text-align: center;\n        padding-left: 0.25rem;\n        padding-right: 0.25rem;\n        width: 100%;\n    }\n    \n    .showcase-container .card-title {\n        font-weight: 700 !important;\n        color: var(--text-gray-900) !important;\n        font-size: 0.875rem !important;\n        line-height: 1.375 !important;\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        margin: 0 !important;\n        padding: 0 !important;\n        text-shadow: none !important;\n    }\n    \n    @media (min-width: 640px) {\n        .showcase-container .card-title { font-size: 15px !important; }\n    }\n    \n    .showcase-container .card-location {\n        font-size: 0.75rem !important;\n        color: var(--text-gray-500) !important;\n        font-weight: 400 !important;\n        line-height: 1.4 !important;\n        margin-top: 0.25rem !important;\n        margin-bottom: 0 !important;\n        padding: 0 !important;\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n    }\n\n    .counter-footer {\n        margin-top: 3rem;\n        text-align: center;\n        font-size: 0.75rem !important;\n        font-weight: 500 !important;\n        color: var(--text-gray-500) !important;\n        line-height: 1.5 !important;\n    }\n    \n    .highlight-text {\n        color: var(--brand-green-900) !important;\n        font-weight: 700 !important;\n    }\n<\/style>\n\n<div class=\"showcase-container\">\n    <div class=\"filter-wrapper\">\n        <div id=\"filter-container\" class=\"filter-container no-scrollbar\"><\/div>\n    <\/div>\n\n    <div id=\"cases-grid\" class=\"cases-grid\"><\/div>\n\n    <div id=\"no-results\" class=\"hidden\" style=\"padding-top: 4rem; padding-bottom: 4rem; text-align: center; color: var(--text-gray-500); font-weight: 500;\">\n        No upcycling projects found in this category.\n    <\/div>\n\n    <div class=\"counter-footer\">\n        Showing <span id=\"showing-count\" class=\"highlight-text\">0<\/span> of <span id=\"total-count\" class=\"highlight-text\">0<\/span> past upcycling projects\n    <\/div>\n<\/div>\n\n<script>\n    const CATEGORIES = [\n        \"All\",\n        \"Bags\",\n        \"Embroidery Pins\",\n        \"Linko Bears\",\n        \"Phone Straps\",\n        \"Stationery\",\n        \"Tableware\",\n        \"UNI Bears & Plush Toys\",\n        \"Others\"\n    ];\n\n    const CASES_DATA = [\n        { id: 1, title: \"Tote Bags\", location: \"@Tradeport\", category: \"Bags\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/1.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/2.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/3.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/4.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/5.png\"] },\n        { id: 2, title: \"Tote Bags\", location: \"@Modern Terminals Limited\", category: \"Bags\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/6.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/7.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/8.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/9.png\"] },\n        { id: 3, title: \"Denim Bags\", location: \"@Sample\", category: \"Bags\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/11.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/10.png\"] },\n        { id: 4, title: \"Tote Bags & Umbrella Cases\", location: \"@Red Cross\", category: [\"Bags\",\"Others\"], images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/12.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/13.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/14.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/15.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/74.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/75.png\"] },\n        { id: 5, title: \"Shoe Bags\", location: \"@HAECO\", category: \"Bags\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/16.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/17.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/18.png\"] },\n        { id: 6, title: \"Tote Bags\", location: \"@Ngong Ping 360\", category: \"Bags\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/19.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/20.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/21.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/28.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/29.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/30.png\"] },\n        { id: 7, title: \"Tote Bags\", location: \"@MGM\", category: \"Bags\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/23.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/22.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/24.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/25.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/26.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/27.png\"] },\n        { id: 8, title: \"Drawstring Bags\", location: \"@Swire Coca-Cola\", category: \"Bags\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/31.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/32.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/33.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/34.png\"] },\n        { id: 9, title: \"Embroidery Pins\", location: \"@Hong Kong Electric\", category: \"Embroidery Pins\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/35.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/36.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/37.png\"] },\n        { id: 10, title: \"Embroidery Pins & Card Cases\", location: \"@Hong Kong Tramways\", category: [\"Embroidery Pins\",\"Stationery\"], images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/38.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/39.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/40.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/41.png\"] },\n        { id: 11, title: \"Embroidery Pins\", location: \"@Peterson Group\", category: \"Embroidery Pins\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/42.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/43.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/44.png\"] },\n        { id: 12, title: \"YCA Linko Bear\", location: \"@YMCA Christian Academy\", category: \"Linko Bears\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/45.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/46.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/47.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/48.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/49.png\"] },\n        { id: 13, title: \"The Pen Bear & Peninsula Linko Bear\", location: \"@The Peninsula Hong Kong\", category: [\"UNI Bears & Plush Toys\",\"Linko Bears\"], images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/53.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/54.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/Untitled-design-22.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/50.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/51.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/52.png\"] },\n        { id: 14, title: \"HKBU Linko Bear\", location: \"@HKBU\", category: \"Linko Bears\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/56.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/57.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/58.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/59.png\"] },\n        { id: 15, title: \"205<sup>th<\/sup> Anniversary Commemorative Lamb Plushes\", location: \"@Brooks Brothers\", category: \"UNI Bears & Plush Toys\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/60.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/61.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/62.png\"] },\n        { id: 16, title: \"Wyatt the Shih Tzu\", location: \"@Grand Hyatt Hong Kong\", category: \"UNI Bears & Plush Toys\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/63.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/64.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/65.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/66.png\"] },\n        { id: 17, title: \"Fabric Book Cover\", location: \"@One Seventh Bookshops\", category: \"Stationery\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/67.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/68.png\"]},\n        { id: 18, title: \"Cutlery Cases\", location: \"@Business Environment Council\", category: \"Tableware\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/69.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/70.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/71.png\"]},\n        { id: 19, title: \"Pencil Case\", location: \"@Kerry Properties\", category: \"Stationery\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/72.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/73.png\"]},\n        { id: 20, title: \"Waist Bags, Umbrella Cases, Keychains & Storage Boxes\", location: \"@Fedex\", category: [\"Stationery\", \"Others\"], images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/76.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/79.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/77.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/78.png\"]},\n        { id: 21, title: \"Cutlery Cases\", location: \"@Jardines\", category: \"Tableware\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/80.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/81.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/82.png\"]},\n        { id: 22, title: \"UNI Bear & Bottle Holder\", location: \"@Veolia Hong Kong\", category: [\"UNI Bears & Plush Toys\",\"Others\"], images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/83.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/84-1.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/85-1.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/86-1.png\"]},\n        { id: 23, title: \"PolyVentures Umbrella Case\", location: \"@PolyVentures\", category: \"Others\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/87-1.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/88-1.png\"]},\n        { id: 24, title: \"Cutlery Cases\", location: \"@Shanghai Commercial Bank\", category: \"Others\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/89-1.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/90.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/91.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/92.png\"]},\n        { id: 25, title: \"Featured Pendant\", location: \"@EverGreen\", category: \"Others\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/93.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/94.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/95.png\"]},\n        { id: 26, title: \"Drink Coasters\", location: \"@Sample\", category: \"Tableware\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/96.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/97.png\"]},\n        { id: 27, title: \"Book Cover\", location: \"@Po Leung Kuk Choi Kai Yau School\", category: \"Stationery\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/100.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/101.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/102.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/103.png\"]},\n        { id: 28, title: \"Keychains\", location: \"@Nestl\u00e9\", category: \"Others\", images: [\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/104.png\",\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/10\/105.png\"]},\n    ];\n\n    let activeCategory = \"All\";\n    const slideState = {};\n\n    CASES_DATA.forEach(item => {\n        slideState[item.id] = 0;\n    });\n\n    document.addEventListener(\"DOMContentLoaded\", () => {\n        renderFilters();\n        renderInitialGrid();\n        updateFilterCounts();\n    });\n\n    function renderFilters() {\n        const container = document.getElementById(\"filter-container\");\n        container.innerHTML = CATEGORIES.map(category => {\n            const isActive = category === activeCategory;\n            return `\n                <button \n                    type=\"button\"\n                    data-category=\"${category}\"\n                    onclick=\"setFilter('${category}')\" \n                    class=\"filter-btn ${isActive ? 'active' : ''}\"\n                >\n                    ${category}\n                    <span class=\"indicator ${isActive ? '' : 'hidden'}\"><\/span>\n                <\/button>\n            `;\n        }).join('');\n    }\n\n    function setFilter(category) {\n        if (activeCategory === category) return;\n        activeCategory = category;\n\n        const buttons = document.querySelectorAll('.filter-btn');\n        buttons.forEach(btn => {\n            const btnCat = btn.getAttribute('data-category');\n            const indicator = btn.querySelector('.indicator');\n            if (btnCat === category) {\n                btn.classList.add('active');\n                if (indicator) indicator.classList.remove('hidden');\n            } else {\n                btn.classList.remove('active');\n                if (indicator) indicator.classList.add('hidden');\n            }\n        });\n\n        filterCases();\n    }\n\n    function renderInitialGrid() {\n        const grid = document.getElementById(\"cases-grid\");\n        \n        grid.innerHTML = CASES_DATA.map((item, itemIdx) => {\n            const hasMultipleImages = item.images && item.images.length > 1;\n            const categoryStr = Array.isArray(item.category) ? item.category.join('||') : item.category;\n\n            return `\n                <div id=\"case-card-${item.id}\" data-category=\"${categoryStr}\" class=\"case-card\" onmouseenter=\"preloadCardImages(${item.id})\">\n                    <div class=\"card-image-wrapper\">\n                        <div id=\"slider-track-${item.id}\" class=\"slider-track\" style=\"transform: translateX(0%);\">\n                            ${item.images.map((imgUrl, idx) => {\n                                const isFirstSlide = idx === 0;\n                                \n                                if (isFirstSlide) {\n                                    return `\n                                        <div class=\"slider-slide\">\n                                            <img loading=\"lazy\" \n                                                src=\"${imgUrl}\" \n                                                alt=\"${item.title} image${idx + 1}\"\n                                                width=\"600\"\n                                                height=\"570\"\n                                                decoding=\"async\"\n                                                style=\"opacity: 0;\"\n                                                onload=\"this.style.opacity=1\"\n                                                onerror=\"this.onerror=null; this.src='https:\/\/placehold.co\/600x550\/e2e8f0\/1e293b?text=Workshop+Image'; this.style.opacity=1;\"\n                                            \/>\n                                        <\/div>\n                                    `;\n                                } else {\n                                    return `\n                                        <div class=\"slider-slide\">\n                                            <img \n                                                data-src=\"${imgUrl}\" \n                                                alt=\"${item.title} image${idx + 1}\"\n                                                width=\"600\"\n                                                height=\"570\"\n                                                decoding=\"async\"\n                                                style=\"opacity: 0;\"\n                                                onload=\"this.style.opacity=1\"\n                                                onerror=\"this.onerror=null; this.src='https:\/\/placehold.co\/600x550\/e2e8f0\/1e293b?text=Workshop+Image'; this.style.opacity=1;\"\n                                            \/>\n                                        <\/div>\n                                    `;\n                                }\n                            }).join('')}\n                        <\/div>\n\n                        ${hasMultipleImages ? `\n                            <button \n                                type=\"button\"\n                                onclick=\"prevSlide(${item.id},${item.images.length})\" \n                                class=\"green-arrow-btn left-btn\"\n                                aria-label=\"Previous image\"\n                            >\n                                <svg style=\"width: 1.5rem; height: 1.5rem;\" viewBox=\"0 0 24 24\" fill=\"none\">\n                                    <path d=\"M15 18L9 12L15 6\" stroke=\"#ffffff\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                    <path d=\"M15 18L9 12L15 6\" stroke=\"#ffffff\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/button>\n\n                            <button \n                                type=\"button\"\n                                onclick=\"nextSlide(${item.id},${item.images.length})\" \n                                class=\"green-arrow-btn right-btn\"\n                                aria-label=\"Next image\"\n                            >\n                                <svg style=\"width: 1.5rem; height: 1.5rem;\" viewBox=\"0 0 24 24\" fill=\"none\">\n                                    <path d=\"M9 18L15 12L9 6\" stroke=\"#ffffff\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                    <path d=\"M9 18L15 12L9 6\" stroke=\"#ffffff\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                                <\/svg>\n                            <\/button>\n                        ` : ''}\n                    <\/div>\n\n                    <div class=\"card-meta\">\n                        <h3 class=\"card-title\" title=\"${item.title}\">\n                            ${item.title}\n                        <\/h3>\n                        <p class=\"card-location\" title=\"${item.location}\">\n                            ${item.location}\n                        <\/p>\n                    <\/div>\n                <\/div>\n            `;\n        }).join('');\n    }\n\n    function preloadCardImages(caseId) {\n        const track = document.getElementById(`slider-track-${caseId}`);\n        if (!track) return;\n        const lazyImgs = track.querySelectorAll('img[data-src]');\n        lazyImgs.forEach(img => {\n            img.src = img.getAttribute('data-src');\n            img.removeAttribute('data-src');\n        });\n    }\n\n    function filterCases() {\n        const cards = document.querySelectorAll('.case-card');\n        let showingCount = 0;\n\n        cards.forEach(card => {\n            const categories = card.getAttribute('data-category').split('||');\n            const isMatch = activeCategory === \"All\" || categories.includes(activeCategory);\n\n            if (isMatch) {\n                card.classList.remove('hidden');\n                showingCount++;\n            } else {\n                card.classList.add('hidden');\n            }\n        });\n\n        document.getElementById(\"showing-count\").innerText = showingCount;\n        document.getElementById(\"total-count\").innerText = CASES_DATA.length;\n\n        const noResultsEl = document.getElementById(\"no-results\");\n        if (showingCount === 0) {\n            noResultsEl.classList.remove(\"hidden\");\n        } else {\n            noResultsEl.classList.add(\"hidden\");\n        }\n    }\n\n    function updateFilterCounts() {\n        document.getElementById(\"showing-count\").innerText = CASES_DATA.length;\n        document.getElementById(\"total-count\").innerText = CASES_DATA.length;\n    }\n\n    function prevSlide(caseId, totalImages) {\n        preloadCardImages(caseId);\n        if (!slideState[caseId]) {\n            slideState[caseId] = 0;\n        }\n        slideState[caseId] = (slideState[caseId] - 1 + totalImages) % totalImages;\n        updateSlidePosition(caseId);\n    }\n\n    function nextSlide(caseId, totalImages) {\n        preloadCardImages(caseId);\n        if (slideState[caseId] === undefined) {\n            slideState[caseId] = 0;\n        }\n        slideState[caseId] = (slideState[caseId] + 1) % totalImages;\n        updateSlidePosition(caseId);\n    }\n\n    function updateSlidePosition(caseId) {\n        const track = document.getElementById(`slider-track-${caseId}`);\n        if (track) {\n            const currentIndex = slideState[caseId];\n            track.style.transform = `translateX(-${currentIndex * 100}%)`;\n        }\n    }\n<\/script>\n<\/div>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-0aa01211 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/api.whatsapp.com\/send\/?phone=85236119078&amp;text&amp;type=phone_number&amp;app_absent=0\">Contact Us to Know More<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Upcycling Service We upcycle your company\u2019s old uniforms and sustainable materials into custom products tailored specifically for your brand. Beyond sustainable production, Dress Green collaborates with brands to craft impactful marketing campaigns and strengthen their green brand identity. Upcycling Service Workflow 1. Garment Collection Collect unwanted textiles and garments from your company or organization to [&hellip;]<\/p>\n","protected":false},"author":260225860,"featured_media":0,"parent":1772,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_wpcom_ai_launchpad_about_page":false,"_wpcom_ai_launchpad_gallery_page":false,"_wpcom_ai_launchpad_contact_page":false,"_wpcom_ai_launchpad_events_page":false,"_wpcom_ai_launchpad_video_page":false,"_wpcom_ai_launchpad_portfolio_piece":false,"footnotes":""},"class_list":["post-5930","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Corporate Upcycling Solutions &amp; Custom Gifts | Dress Green - Dress Green | Design x Sustainability<\/title>\n<meta name=\"description\" content=\"Transform old uniforms and excess fabric into bespoke corporate gifts. Discover eco-friendly upcycling solutions designed to enhance your brand&#039;s sustainability story.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dressgreen.org\/cn\/our-service-corporate-solutions\/corp-solution-upcycling\/\" \/>\n<meta property=\"og:locale\" content=\"zh_HK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Corporate Upcycling Solutions &amp; Custom Gifts | Dress Green - Dress Green | Design x Sustainability\" \/>\n<meta property=\"og:description\" content=\"Transform old uniforms and excess fabric into bespoke corporate gifts. Discover eco-friendly upcycling solutions designed to enhance your brand&#039;s sustainability story.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dressgreen.org\/cn\/our-service-corporate-solutions\/corp-solution-upcycling\/\" \/>\n<meta property=\"og:site_name\" content=\"Dress Green | Design x Sustainability\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-07T08:32:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u9810\u8a08\u95b1\u8b80\u6642\u9593\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 \u5206\u9418\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dressgreen.org\\\/our-service-corporate-solutions\\\/corp-solution-upcycling\\\/\",\"url\":\"https:\\\/\\\/dressgreen.org\\\/our-service-corporate-solutions\\\/corp-solution-upcycling\\\/\",\"name\":\"Corporate Upcycling Solutions & Custom Gifts | Dress Green - Dress Green | Design x Sustainability\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dressgreen.org\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dressgreen.org\\\/our-service-corporate-solutions\\\/corp-solution-upcycling\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dressgreen.org\\\/our-service-corporate-solutions\\\/corp-solution-upcycling\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/dressgreen.org\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/491586765_1210046100484625_3531227147471213640_n.jpg\",\"datePublished\":\"2026-08-05T05:21:01+00:00\",\"dateModified\":\"2026-10-07T08:32:40+00:00\",\"description\":\"Transform old uniforms and excess fabric into bespoke corporate gifts. Discover eco-friendly upcycling solutions designed to enhance your brand's sustainability story.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dressgreen.org\\\/our-service-corporate-solutions\\\/corp-solution-upcycling\\\/#breadcrumb\"},\"inLanguage\":\"zh-HK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dressgreen.org\\\/our-service-corporate-solutions\\\/corp-solution-upcycling\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-HK\",\"@id\":\"https:\\\/\\\/dressgreen.org\\\/our-service-corporate-solutions\\\/corp-solution-upcycling\\\/#primaryimage\",\"url\":\"https:\\\/\\\/dressgreen.org\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/491586765_1210046100484625_3531227147471213640_n.jpg\",\"contentUrl\":\"https:\\\/\\\/dressgreen.org\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/491586765_1210046100484625_3531227147471213640_n.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dressgreen.org\\\/our-service-corporate-solutions\\\/corp-solution-upcycling\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dressgreen.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Innovative Recycling Solutions for Businesses\",\"item\":\"https:\\\/\\\/dressgreen.org\\\/our-service-corporate-solutions\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Corporate Upcycling Solutions &#038; Custom Gifts | Dress Green\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dressgreen.org\\\/#website\",\"url\":\"https:\\\/\\\/dressgreen.org\\\/\",\"name\":\"Dress Green | Design x Sustainability\",\"description\":\"Unleash your uniform waste\",\"publisher\":{\"@id\":\"https:\\\/\\\/dressgreen.org\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dressgreen.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-HK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dressgreen.org\\\/#organization\",\"name\":\"Dress Green | Design x Sustainability\",\"url\":\"https:\\\/\\\/dressgreen.org\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-HK\",\"@id\":\"https:\\\/\\\/dressgreen.org\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dressgreen.org\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/dress-green-for-patent_2022.11.28_e5b7a5e4bd9ce58d80e59f9f-1-e8a487e69cac-31-e589afe69cac-1.png?fit=3949%2C3070&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dressgreen.org\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/dress-green-for-patent_2022.11.28_e5b7a5e4bd9ce58d80e59f9f-1-e8a487e69cac-31-e589afe69cac-1.png?fit=3949%2C3070&ssl=1\",\"width\":3949,\"height\":3070,\"caption\":\"Dress Green | Design x Sustainability\"},\"image\":{\"@id\":\"https:\\\/\\\/dressgreen.org\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Corporate Upcycling Solutions & Custom Gifts | Dress Green - Dress Green | Design x Sustainability","description":"Transform old uniforms and excess fabric into bespoke corporate gifts. Discover eco-friendly upcycling solutions designed to enhance your brand's sustainability story.","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:\/\/dressgreen.org\/cn\/our-service-corporate-solutions\/corp-solution-upcycling\/","og_locale":"zh_HK","og_type":"article","og_title":"Corporate Upcycling Solutions & Custom Gifts | Dress Green - Dress Green | Design x Sustainability","og_description":"Transform old uniforms and excess fabric into bespoke corporate gifts. Discover eco-friendly upcycling solutions designed to enhance your brand's sustainability story.","og_url":"https:\/\/dressgreen.org\/cn\/our-service-corporate-solutions\/corp-solution-upcycling\/","og_site_name":"Dress Green | Design x Sustainability","article_modified_time":"2026-10-07T08:32:40+00:00","og_image":[{"url":"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"\u9810\u8a08\u95b1\u8b80\u6642\u9593":"4 \u5206\u9418"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dressgreen.org\/our-service-corporate-solutions\/corp-solution-upcycling\/","url":"https:\/\/dressgreen.org\/our-service-corporate-solutions\/corp-solution-upcycling\/","name":"Corporate Upcycling Solutions & Custom Gifts | Dress Green - Dress Green | Design x Sustainability","isPartOf":{"@id":"https:\/\/dressgreen.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dressgreen.org\/our-service-corporate-solutions\/corp-solution-upcycling\/#primaryimage"},"image":{"@id":"https:\/\/dressgreen.org\/our-service-corporate-solutions\/corp-solution-upcycling\/#primaryimage"},"thumbnailUrl":"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg","datePublished":"2026-08-05T05:21:01+00:00","dateModified":"2026-10-07T08:32:40+00:00","description":"Transform old uniforms and excess fabric into bespoke corporate gifts. Discover eco-friendly upcycling solutions designed to enhance your brand's sustainability story.","breadcrumb":{"@id":"https:\/\/dressgreen.org\/our-service-corporate-solutions\/corp-solution-upcycling\/#breadcrumb"},"inLanguage":"zh-HK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dressgreen.org\/our-service-corporate-solutions\/corp-solution-upcycling\/"]}]},{"@type":"ImageObject","inLanguage":"zh-HK","@id":"https:\/\/dressgreen.org\/our-service-corporate-solutions\/corp-solution-upcycling\/#primaryimage","url":"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg","contentUrl":"https:\/\/dressgreen.org\/wp-content\/uploads\/2026\/07\/491586765_1210046100484625_3531227147471213640_n.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/dressgreen.org\/our-service-corporate-solutions\/corp-solution-upcycling\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dressgreen.org\/"},{"@type":"ListItem","position":2,"name":"Innovative Recycling Solutions for Businesses","item":"https:\/\/dressgreen.org\/our-service-corporate-solutions\/"},{"@type":"ListItem","position":3,"name":"Corporate Upcycling Solutions &#038; Custom Gifts | Dress Green"}]},{"@type":"WebSite","@id":"https:\/\/dressgreen.org\/#website","url":"https:\/\/dressgreen.org\/","name":"Dress Green | Design x Sustainability","description":"Unleash your uniform waste","publisher":{"@id":"https:\/\/dressgreen.org\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dressgreen.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-HK"},{"@type":"Organization","@id":"https:\/\/dressgreen.org\/#organization","name":"Dress Green | Design x Sustainability","url":"https:\/\/dressgreen.org\/","logo":{"@type":"ImageObject","inLanguage":"zh-HK","@id":"https:\/\/dressgreen.org\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2025\/02\/dress-green-for-patent_2022.11.28_e5b7a5e4bd9ce58d80e59f9f-1-e8a487e69cac-31-e589afe69cac-1.png?fit=3949%2C3070&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dressgreen.org\/wp-content\/uploads\/2025\/02\/dress-green-for-patent_2022.11.28_e5b7a5e4bd9ce58d80e59f9f-1-e8a487e69cac-31-e589afe69cac-1.png?fit=3949%2C3070&ssl=1","width":3949,"height":3070,"caption":"Dress Green | Design x Sustainability"},"image":{"@id":"https:\/\/dressgreen.org\/#\/schema\/logo\/image\/"}}]}},"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PfXnBq-1xE","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/dressgreen.org\/cn\/wp-json\/wp\/v2\/pages\/5930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dressgreen.org\/cn\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dressgreen.org\/cn\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dressgreen.org\/cn\/wp-json\/wp\/v2\/users\/260225860"}],"replies":[{"embeddable":true,"href":"https:\/\/dressgreen.org\/cn\/wp-json\/wp\/v2\/comments?post=5930"}],"version-history":[{"count":88,"href":"https:\/\/dressgreen.org\/cn\/wp-json\/wp\/v2\/pages\/5930\/revisions"}],"predecessor-version":[{"id":8118,"href":"https:\/\/dressgreen.org\/cn\/wp-json\/wp\/v2\/pages\/5930\/revisions\/8118"}],"up":[{"embeddable":true,"href":"https:\/\/dressgreen.org\/cn\/wp-json\/wp\/v2\/pages\/1772"}],"wp:attachment":[{"href":"https:\/\/dressgreen.org\/cn\/wp-json\/wp\/v2\/media?parent=5930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}