{"id":25,"date":"2026-05-29T09:18:27","date_gmt":"2026-05-29T09:18:27","guid":{"rendered":"https:\/\/kosmixpro.com\/case-studies\/"},"modified":"2026-06-16T14:57:29","modified_gmt":"2026-06-16T14:57:29","slug":"case-studies","status":"publish","type":"page","link":"https:\/\/kosmixpro.com\/es\/case-studies\/","title":{"rendered":"Estudios de caso"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"25\" class=\"elementor elementor-25\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c3f7f3d e-con e-atomic-element e-div-block-base \" data-id=\"c3f7f3d\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"c3f7f3d\">\n    <div class=\"e-con e-atomic-element e-tabs-base \"\n    data-id=\"e309ede\"\n    data-element_type=\"e-tabs\"\n    data-e-type=\"e-tabs\"\n    data-interaction-id=\"e309ede\"\n    data-interactions=\"null\"\n    x-data=\"eTabse309ede\"\n    data-e-settings=\"&#x7B;&quot;default-active-tab&quot;&#x3A;&quot;e309ede-tab-0&quot;&#x7D;\"\n            >\n    <div class=\"e-con e-atomic-element e-tabs-menu-base \"\n    data-id=\"18b08c0\"\n    data-element_type=\"e-tabs-menu\"\n    data-e-type=\"e-tabs-menu\"\n    data-interaction-id=\"18b08c0\"\n    data-interactions=\"null\"\n    role=\"tablist\"\n            ><button class=\"e-con e-atomic-element e-tab-base  e--selected\"\n    data-id=\"5a463e4\"\n    data-element_type=\"e-tab\"\n    data-e-type=\"e-tab\"\n    data-interaction-id=\"5a463e4\"\n    data-interactions=\"null\"\n    role=\"tab\"\n    tabindex=\"0\"\n    aria-selected=\"true\"\n    x-bind=\"tab\"\n    x-ref=\"5a463e4\"\n    id=\"e309ede-tab-0\"\n    aria-controls=\"e309ede-tab-content-0\"\n        >\t\t\t<span class=\"e-2bcc164-f7cc6cb e-paragraph-base\" data-interaction-id=\"2bcc164\">Haircare<\/span>\n\t\t<\/button>\n<button class=\"e-con e-atomic-element e-tab-base \"\n    data-id=\"c1ff30f\"\n    data-element_type=\"e-tab\"\n    data-e-type=\"e-tab\"\n    data-interaction-id=\"c1ff30f\"\n    data-interactions=\"null\"\n    role=\"tab\"\n    tabindex=\"-1\"\n    aria-selected=\"false\"\n    x-bind=\"tab\"\n    x-ref=\"c1ff30f\"\n    id=\"e309ede-tab-1\"\n    aria-controls=\"e309ede-tab-content-1\"\n        >\t\t\t<span class=\"e-paragraph-base\" data-interaction-id=\"c4a6a8e\">Perfume<\/span>\n\t\t<\/button>\n<button class=\"e-con e-atomic-element e-tab-base \"\n    data-id=\"b4029e5\"\n    data-element_type=\"e-tab\"\n    data-e-type=\"e-tab\"\n    data-interaction-id=\"b4029e5\"\n    data-interactions=\"null\"\n    role=\"tab\"\n    tabindex=\"-1\"\n    aria-selected=\"false\"\n    x-bind=\"tab\"\n    x-ref=\"b4029e5\"\n    id=\"e309ede-tab-2\"\n    aria-controls=\"e309ede-tab-content-2\"\n        >\t\t\t<span class=\"e-paragraph-base\" data-interaction-id=\"d1faa06\">Skincare<\/span>\n\t\t<\/button>\n<\/div>\n<div class=\"e-con e-atomic-element e-tabs-content-area-base \"\n    data-id=\"e0a4c62\"\n    data-element_type=\"e-tabs-content-area\"\n    data-e-type=\"e-tabs-content-area\"\n    data-interaction-id=\"e0a4c62\"\n    data-interactions=\"null\"\n            ><div class=\"e-con e-atomic-element e-tab-content-base  e--selected\"\n    data-id=\"22d27fe\"\n    data-element_type=\"e-tab-content\"\n    data-e-type=\"e-tab-content\"\n    data-interaction-id=\"22d27fe\"\n    data-interactions=\"null\"\n    role=\"tabpanel\"\n    x-bind=\"tabContent\"\n    id=\"e309ede-tab-content-0\"\n    aria-labelledby=\"e309ede-tab-0\"\n            >\t\t<div class=\"elementor-element elementor-element-cad3150 elementor--h-position-center elementor--v-position-middle elementor-arrows-position-inside elementor-pagination-position-inside elementor-widget elementor-widget-slides\" data-id=\"cad3150\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;transition&quot;:&quot;slide&quot;,&quot;transition_speed&quot;:500}\" data-widget_type=\"slides.default\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-slides-wrapper elementor-main-swiper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Slides\" dir=\"ltr\" data-animation=\"fadeInUp\">\n\t\t\t\t<div class=\"swiper-wrapper elementor-slides\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-repeater-item-541fc25 swiper-slide\" role=\"group\" aria-roledescription=\"slide\"><div class=\"swiper-slide-bg\" role=\"img\" aria-label=\"KVM500 mixer\"><\/div><div class=\"swiper-slide-inner\" ><div class=\"swiper-slide-contents\"><div class=\"elementor-slide-heading\">Haircare Italy<\/div><div class=\"elementor-slide-description\">Independent Haircare brand scaling from contract fill to in-house production. \n500 L\/batch.<\/div><div  class=\"elementor-button elementor-slide-button elementor-size-sm\">Click Here<\/div><\/div><\/div><\/div><div class=\"elementor-repeater-item-ea7aeb4 swiper-slide\" role=\"group\" aria-roledescription=\"slide\"><div class=\"swiper-slide-bg\" role=\"img\" aria-label=\"KVM 500\"><\/div><div class=\"swiper-slide-inner\" ><div class=\"swiper-slide-contents\"><div class=\"elementor-slide-heading\">Haircare Greece<\/div><div class=\"elementor-slide-description\">Natural haircare OEM replacing a manual hot-fill process. \n\n500L vessel, fill temperature 25\u00b0C.<\/div><div  class=\"elementor-button elementor-slide-button elementor-size-sm\">Click Here<\/div><\/div><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\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\" aria-label=\"Previous slide\">\n\t\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\t<\/div>\n\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\" aria-label=\"Next slide\">\n\t\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\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n<div class=\"e-con e-atomic-element e-tab-content-base \"\n    data-id=\"c9487c9\"\n    data-element_type=\"e-tab-content\"\n    data-e-type=\"e-tab-content\"\n    data-interaction-id=\"c9487c9\"\n    data-interactions=\"null\"\n    role=\"tabpanel\"\n    x-bind=\"tabContent\"\n    id=\"e309ede-tab-content-1\"\n    aria-labelledby=\"e309ede-tab-1\"\n     hidden=\"true\" style=\"display: none;\"        >\t\t<div class=\"elementor-element elementor-element-409d63f elementor--h-position-center elementor--v-position-middle elementor-arrows-position-inside elementor-pagination-position-inside elementor-widget elementor-widget-slides\" data-id=\"409d63f\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;transition&quot;:&quot;slide&quot;,&quot;transition_speed&quot;:500}\" data-widget_type=\"slides.default\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-slides-wrapper elementor-main-swiper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Slides\" dir=\"ltr\" data-animation=\"fadeInUp\">\n\t\t\t\t<div class=\"swiper-wrapper elementor-slides\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-repeater-item-f6812a9 swiper-slide\" role=\"group\" aria-roledescription=\"slide\"><div class=\"swiper-slide-bg\" role=\"img\" aria-label=\"KPM perfume mixer\"><\/div><div class=\"swiper-slide-inner\" ><div class=\"swiper-slide-contents\"><div class=\"elementor-slide-heading\">Perfume Production<\/div><div class=\"elementor-slide-description\">High-volume perfume factory, 18-SKU portfolio. 60 BPM high-speed filling, automatic screw capping and wrap-around labeling, GS1 barcode integration.<\/div><div  class=\"elementor-button elementor-slide-button elementor-size-sm\">Click Here<\/div><\/div><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n<div class=\"e-con e-atomic-element e-tab-content-base \"\n    data-id=\"d8e6ba7\"\n    data-element_type=\"e-tab-content\"\n    data-e-type=\"e-tab-content\"\n    data-interaction-id=\"d8e6ba7\"\n    data-interactions=\"null\"\n    role=\"tabpanel\"\n    x-bind=\"tabContent\"\n    id=\"e309ede-tab-content-2\"\n    aria-labelledby=\"e309ede-tab-2\"\n     hidden=\"true\" style=\"display: none;\"        >\t\t<div class=\"elementor-element elementor-element-059f087 elementor--h-position-center elementor--v-position-middle elementor-arrows-position-inside elementor-pagination-position-inside elementor-widget elementor-widget-slides\" data-id=\"059f087\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;transition&quot;:&quot;slide&quot;,&quot;transition_speed&quot;:500}\" data-widget_type=\"slides.default\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-slides-wrapper elementor-main-swiper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Slides\" dir=\"ltr\" data-animation=\"fadeInUp\">\n\t\t\t\t<div class=\"swiper-wrapper elementor-slides\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-repeater-item-5c13754 swiper-slide\" role=\"group\" aria-roledescription=\"slide\"><div class=\"swiper-slide-bg\" role=\"img\" aria-label=\"KFM-5000\"><\/div><div class=\"swiper-slide-inner\" ><div class=\"swiper-slide-contents\"><div class=\"elementor-slide-heading\">Personal Care \u00b7 Americas<\/div><div class=\"elementor-slide-description\">70% alcohol-content gel production. ATEX Zone 2 compliant filling environment, explosion-proof motor options, static-grounded conveyor system.<\/div><div  class=\"elementor-button elementor-slide-button elementor-size-sm\">Click Here<\/div><\/div><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n<\/div>\n\n<\/div>\n\t\t\n\n<\/div>\n<div class=\"elementor-element elementor-element-5539e5d e-flex e-con-boxed e-con e-parent\" data-id=\"5539e5d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0bd7fcf elementor-widget elementor-widget-html\" data-id=\"0bd7fcf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<style>\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   TOKENS\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n:root {\n  --white:      #ffffff;\n  --gray-50:    #f4f5f8;\n  --gray-100:   #eaedf3;\n  --gray-200:   #d8dce8;\n  --gray-300:   #bec4d6;\n  --gray-400:   #8f99b2;\n  --gray-500:   #606a84;\n  --gray-600:   #454e66;\n  --gray-700:   #353d54;\n  --gray-900:   #151926;\n \n  --blue-50:    #edf2fb;\n  --blue-100:   #ccdaf4;\n  --blue-200:   #99b5e9;\n  --blue-400:   #4878c8;\n  --blue-500:   #1f5bb5;\n  --blue-600:   #164a97;\n  --blue-700:   #0f3578;\n  --blue-800:   #092560;\n \n  --green:      #1a7a4a;\n  --green-bg:   #e8f5ee;\n \n  --font:      'Barlow', system-ui, sans-serif;\n  --font-cond: 'Barlow Condensed', system-ui, sans-serif;\n  --ease: cubic-bezier(0.4, 0, 0.2, 1);\n  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n \n*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\nhtml { font-size: 16px; scroll-behavior: smooth; }\nbody {\n  font-family: var(--font);\n  background: var(--white);\n  color: var(--gray-900);\n  -webkit-font-smoothing: antialiased;\n  overflow-x: hidden;\n}\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   TOPBAR\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.topbar {\n  background: var(--blue-800);\n  height: 34px;\n  display: flex; align-items: center;\n  padding: 0 52px;\n}\n.topbar-inner {\n  max-width: 1200px; margin: 0 auto; width: 100%;\n  display: flex; justify-content: flex-end; gap: 24px;\n}\n.topbar a {\n  font-size: 11px; font-weight: 500; letter-spacing: 0.4px;\n  color: rgba(255,255,255,0.55); text-decoration: none;\n  transition: color 0.15s;\n}\n.topbar a:hover { color: var(--white); }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   NAV\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nnav {\n  position: sticky; top: 0; z-index: 300;\n  background: var(--white);\n  border-bottom: 2px solid var(--blue-500);\n  height: 66px;\n}\n.nav-inner {\n  max-width: 1200px; margin: 0 auto;\n  height: 100%;\n  display: flex; align-items: center; justify-content: space-between;\n  padding: 0 52px;\n}\n.nav-logo {\n  display: flex; align-items: center; gap: 0;\n  text-decoration: none; flex-shrink: 0;\n}\n.logo-mark {\n  background: var(--blue-500); color: var(--white);\n  font-family: var(--font-cond);\n  font-size: 21px; font-weight: 800;\n  letter-spacing: 2px; text-transform: uppercase;\n  padding: 6px 14px; line-height: 1;\n}\n.logo-sub {\n  font-size: 9px; font-weight: 500;\n  letter-spacing: 1.8px; text-transform: uppercase;\n  color: var(--gray-400); margin-left: 12px; line-height: 1.3;\n}\n.logo-sub span { display: block; }\n.nav-links { display: flex; list-style: none; gap: 0; height: 100%; }\n.nav-links li { height: 100%; }\n.nav-links a {\n  display: flex; align-items: center; height: 100%;\n  padding: 0 18px;\n  font-size: 13.5px; font-weight: 500; letter-spacing: 0.2px;\n  color: var(--gray-600); text-decoration: none;\n  border-bottom: 3px solid transparent; margin-bottom: -2px;\n  transition: color 0.15s, border-color 0.15s;\n}\n.nav-links a:hover { color: var(--blue-500); border-bottom-color: var(--blue-500); }\n.nav-links a.active { color: var(--blue-500); border-bottom-color: var(--blue-500); font-weight: 600; }\n.nav-cta {\n  display: inline-flex; align-items: center; gap: 7px;\n  background: var(--blue-500); color: var(--white) !important;\n  font-size: 12px !important; font-weight: 700 !important;\n  padding: 9px 20px !important; border-radius: 3px;\n  border-bottom: none !important; margin-bottom: 0 !important;\n  height: auto !important; white-space: nowrap;\n  transition: background 0.15s !important; flex-shrink: 0;\n}\n.nav-cta:hover { background: var(--blue-600) !important; }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   BREADCRUMB\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.breadcrumb {\n  background: var(--gray-50);\n  border-bottom: 1px solid var(--gray-200);\n  padding: 10px 52px;\n}\n.bc-inner {\n  max-width: 1200px; margin: 0 auto;\n  display: flex; align-items: center; gap: 7px;\n  font-size: 12px; color: var(--gray-400);\n}\n.bc-inner a { color: var(--gray-500); text-decoration: none; }\n.bc-inner a:hover { color: var(--blue-500); }\n.bc-sep { color: var(--gray-300); font-size: 10px; }\n.bc-current { color: var(--blue-500); font-weight: 600; }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   HERO\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.hero {\n  background: var(--blue-800);\n  padding: 72px 52px 60px;\n  position: relative; overflow: hidden;\n}\n.hero::before {\n  content: '';\n  position: absolute; inset: 0;\n  background-image:\n    linear-gradient(rgba(255,255,255,0.022) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(255,255,255,0.022) 1px, transparent 1px);\n  background-size: 48px 48px;\n  pointer-events: none;\n}\n.hero::after {\n  content: '';\n  position: absolute; right: 0; top: 0; bottom: 0; width: 5px;\n  background: var(--blue-400);\n}\n.hero-inner {\n  max-width: 1200px; margin: 0 auto;\n  position: relative; z-index: 1;\n  display: grid; grid-template-columns: 1fr auto;\n  gap: 48px; align-items: flex-end;\n}\n.hero-eyebrow {\n  display: flex; align-items: center; gap: 10px;\n  font-size: 10px; font-weight: 700; letter-spacing: 2.5px; text-transform: uppercase;\n  color: rgba(255,255,255,0.45); margin-bottom: 16px;\n}\n.hero-eyebrow::before {\n  content: ''; width: 16px; height: 2px;\n  background: var(--blue-400); flex-shrink: 0;\n}\n.hero h1 {\n  font-family: var(--font-cond);\n  font-size: clamp(32px, 5vw, 56px);\n  font-weight: 800; text-transform: uppercase;\n  letter-spacing: -0.5px; line-height: 1.05;\n  color: var(--white); margin-bottom: 16px;\n}\n.hero h1 em {\n  font-style: italic; font-weight: 400;\n  text-transform: none; color: #7eb8f7;\n}\n.hero-desc {\n  font-size: 15px; font-weight: 300;\n  color: rgba(255,255,255,0.58); line-height: 1.75; max-width: 560px;\n}\n.hero-stats {\n  display: flex; flex-direction: column; gap: 2px;\n  align-items: flex-end; flex-shrink: 0;\n}\n.hero-stat {\n  display: flex; align-items: center; gap: 12px;\n  background: rgba(255,255,255,0.06);\n  border: 1px solid rgba(255,255,255,0.1);\n  padding: 10px 20px; min-width: 200px;\n}\n.hs-num {\n  font-family: var(--font-cond);\n  font-size: 28px; font-weight: 700; color: var(--white); line-height: 1;\n}\n.hs-num sup { font-size: 13px; color: #7eb8f7; }\n.hs-label { font-size: 11px; color: rgba(255,255,255,0.45); line-height: 1.35; }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   FILTER BAR\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.filter-bar {\n  background: var(--gray-50);\n  border-bottom: 1px solid var(--gray-200);\n  padding: 0 52px;\n  position: sticky; top: 66px; z-index: 200;\n}\n.filter-inner {\n  max-width: 1200px; margin: 0 auto;\n  display: flex; align-items: center; gap: 0;\n  overflow-x: auto; scrollbar-width: none;\n}\n.filter-inner::-webkit-scrollbar { display: none; }\n \n.filter-label {\n  font-size: 10px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase;\n  color: var(--gray-400); white-space: nowrap;\n  padding: 16px 20px 16px 0;\n  border-right: 1px solid var(--gray-200);\n  margin-right: 0; flex-shrink: 0;\n}\n.filter-btn {\n  display: flex; align-items: center; gap: 7px;\n  background: none; border: none; border-bottom: 2px solid transparent;\n  padding: 16px 20px; cursor: pointer; white-space: nowrap;\n  font-family: var(--font); font-size: 13px; font-weight: 500;\n  color: var(--gray-500);\n  transition: color 0.15s, border-color 0.15s;\n  flex-shrink: 0;\n}\n.filter-btn:hover { color: var(--blue-500); }\n.filter-btn.active {\n  color: var(--blue-500); font-weight: 600;\n  border-bottom-color: var(--blue-500);\n}\n.filter-count {\n  font-size: 10px; font-weight: 700;\n  background: var(--gray-200); color: var(--gray-500);\n  padding: 2px 7px; border-radius: 100px; min-width: 22px; text-align: center;\n  transition: background 0.15s, color 0.15s;\n}\n.filter-btn.active .filter-count {\n  background: var(--blue-100); color: var(--blue-600);\n}\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   MAIN LAYOUT\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.main-wrap {\n  max-width: 1200px; margin: 0 auto;\n  padding: 52px 52px 96px;\n}\n \n\/* Results count *\/\n.results-bar {\n  display: flex; align-items: center; justify-content: space-between;\n  margin-bottom: 32px;\n  padding-bottom: 20px;\n  border-bottom: 1px solid var(--gray-200);\n}\n.results-count {\n  font-size: 12px; font-weight: 500; color: var(--gray-400);\n  letter-spacing: 0.3px;\n}\n.results-count span { color: var(--gray-700); font-weight: 700; }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   FEATURED CARD (large)\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.cs-featured {\n  display: grid;\n  grid-template-columns: 1fr 420px;\n  border: 1px solid var(--gray-200);\n  margin-bottom: 24px;\n  cursor: pointer;\n  transition: box-shadow 0.2s var(--ease);\n  position: relative;\n  overflow: hidden;\n}\n.cs-featured:hover {\n  box-shadow: 0 8px 32px rgba(21,25,38,0.12);\n}\n.cs-featured::before {\n  content: '';\n  position: absolute; left: 0; top: 0; bottom: 0; width: 4px;\n  background: var(--blue-500);\n  transform: scaleY(0);\n  transform-origin: bottom;\n  transition: transform 0.25s var(--ease);\n}\n.cs-featured:hover::before { transform: scaleY(1); }\n \n\/* Visual panel *\/\n.cs-visual {\n  background: var(--gray-900);\n  position: relative; overflow: hidden;\n  display: flex; flex-direction: column; justify-content: flex-end;\n  padding: 36px 40px;\n  min-height: 320px;\n}\n.cs-visual-bg {\n  position: absolute; inset: 0;\n  background-image:\n    linear-gradient(rgba(255,255,255,0.018) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(255,255,255,0.018) 1px, transparent 1px);\n  background-size: 32px 32px;\n}\n.cs-visual-gradient {\n  position: absolute; inset: 0;\n  pointer-events: none;\n}\n.cs-country-flag {\n  position: absolute; top: 24px; right: 24px; z-index: 2;\n  font-size: 28px; line-height: 1;\n  filter: drop-shadow(0 2px 6px rgba(0,0,0,0.4));\n}\n.cs-type-badge {\n  position: absolute; top: 24px; left: 24px; z-index: 2;\n  font-family: var(--font-cond);\n  font-size: 10px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase;\n  color: #7eb8f7;\n  background: rgba(30,91,181,0.25);\n  border: 1px solid rgba(126,184,247,0.3);\n  padding: 5px 12px;\n}\n.cs-visual-content { position: relative; z-index: 2; }\n.cs-headline {\n  font-family: var(--font-cond);\n  font-size: 26px; font-weight: 800; text-transform: uppercase;\n  letter-spacing: -0.3px; line-height: 1.1;\n  color: var(--white); margin-bottom: 10px;\n}\n.cs-headline em { font-style: italic; font-weight: 400; color: #7eb8f7; text-transform: none; }\n.cs-tagline {\n  font-size: 13px; font-weight: 300; color: rgba(255,255,255,0.6);\n  line-height: 1.6; max-width: 400px;\n}\n \n\/* Info panel *\/\n.cs-info {\n  padding: 40px 40px;\n  display: flex; flex-direction: column; gap: 0;\n  border-left: 1px solid var(--gray-200);\n}\n.cs-meta-row {\n  display: flex; align-items: center; gap: 10px;\n  padding: 14px 0;\n  border-bottom: 1px solid var(--gray-100);\n}\n.cs-meta-row:last-of-type { border-bottom: none; }\n.cs-meta-icon {\n  width: 32px; height: 32px; flex-shrink: 0;\n  background: var(--gray-50);\n  border: 1px solid var(--gray-200);\n  display: flex; align-items: center; justify-content: center;\n  font-size: 13px;\n}\n.cs-meta-label {\n  font-size: 10px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase;\n  color: var(--gray-400); display: block; margin-bottom: 2px;\n}\n.cs-meta-val {\n  font-size: 13.5px; font-weight: 500; color: var(--gray-900); line-height: 1.3;\n}\n.cs-models-row {\n  display: flex; flex-wrap: wrap; gap: 6px; margin-top: 20px; margin-bottom: 20px;\n}\n.cs-model-tag {\n  font-family: var(--font-cond);\n  font-size: 11px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase;\n  color: var(--blue-600);\n  background: var(--blue-50); border: 1px solid var(--blue-100);\n  padding: 4px 10px;\n}\n.cs-result-list {\n  list-style: none; display: flex; flex-direction: column; gap: 7px;\n  margin-bottom: 28px; flex: 1;\n}\n.cs-result-list li {\n  display: flex; gap: 9px; align-items: flex-start;\n  font-size: 13px; color: var(--gray-600); line-height: 1.5;\n}\n.cs-result-list li::before {\n  content: '\u2197';\n  color: var(--green); font-size: 12px; flex-shrink: 0; margin-top: 1px;\n}\n.cs-read-btn {\n  display: inline-flex; align-items: center; gap: 8px;\n  background: var(--blue-500); color: var(--white);\n  font-family: var(--font-cond);\n  font-size: 11px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase;\n  padding: 11px 20px; border: none; cursor: pointer;\n  transition: background 0.15s, gap 0.15s;\n  align-self: flex-start;\n}\n.cs-read-btn:hover { background: var(--blue-600); gap: 12px; }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   CARD GRID\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.cs-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 16px;\n}\n \n.cs-card {\n  border: 1px solid var(--gray-200);\n  cursor: pointer;\n  transition: box-shadow 0.2s var(--ease), border-color 0.2s;\n  position: relative; overflow: hidden;\n  display: flex; flex-direction: column;\n}\n.cs-card:hover {\n  box-shadow: 0 6px 24px rgba(21,25,38,0.1);\n  border-color: var(--blue-200);\n}\n.cs-card::before {\n  content: '';\n  position: absolute; left: 0; top: 0; bottom: 0; width: 3px;\n  background: var(--blue-500);\n  transform: scaleY(0); transform-origin: bottom;\n  transition: transform 0.22s var(--ease);\n}\n.cs-card:hover::before { transform: scaleY(1); }\n \n\/* Card header band *\/\n.cs-card-head {\n  background: var(--gray-900);\n  padding: 24px 24px 20px;\n  position: relative; overflow: hidden; min-height: 120px;\n  display: flex; flex-direction: column; justify-content: flex-end;\n}\n.cs-card-grid-bg {\n  position: absolute; inset: 0;\n  background-image:\n    linear-gradient(rgba(255,255,255,0.016) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(255,255,255,0.016) 1px, transparent 1px);\n  background-size: 24px 24px;\n}\n.cs-card-gradient {\n  position: absolute; inset: 0; pointer-events: none;\n}\n.cs-card-flag {\n  position: absolute; top: 14px; right: 16px; font-size: 20px; z-index: 2;\n}\n.cs-card-type {\n  font-family: var(--font-cond);\n  font-size: 9px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase;\n  color: rgba(255,255,255,0.35);\n  position: relative; z-index: 2;\n  margin-bottom: 5px;\n}\n.cs-card-title {\n  font-family: var(--font-cond);\n  font-size: 17px; font-weight: 700; text-transform: uppercase;\n  letter-spacing: -0.2px; line-height: 1.15;\n  color: var(--white); position: relative; z-index: 2;\n}\n.cs-card-title em { font-style: italic; font-weight: 400; color: #7eb8f7; text-transform: none; }\n \n\/* Card body *\/\n.cs-card-body {\n  padding: 20px 24px 24px;\n  display: flex; flex-direction: column; gap: 16px; flex: 1;\n}\n.cs-card-tags { display: flex; flex-wrap: wrap; gap: 5px; }\n.cs-card-tag {\n  font-family: var(--font-cond);\n  font-size: 10px; font-weight: 700; letter-spacing: 0.8px; text-transform: uppercase;\n  color: var(--blue-600); background: var(--blue-50); border: 1px solid var(--blue-100);\n  padding: 3px 8px;\n}\n.cs-card-desc {\n  font-size: 13px; font-weight: 300; color: var(--gray-500);\n  line-height: 1.65; flex: 1;\n}\n.cs-card-metrics {\n  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;\n}\n.cs-metric {\n  background: var(--gray-50); border: 1px solid var(--gray-100);\n  padding: 10px 12px;\n}\n.cs-metric-val {\n  font-family: var(--font-cond);\n  font-size: 20px; font-weight: 700; letter-spacing: -0.5px;\n  color: var(--blue-600); line-height: 1;\n}\n.cs-metric-val sup { font-size: 10px; font-weight: 500; }\n.cs-metric-label {\n  font-size: 10px; font-weight: 500; color: var(--gray-400);\n  margin-top: 3px; letter-spacing: 0.2px;\n}\n.cs-card-action {\n  display: flex; align-items: center; justify-content: space-between;\n  padding-top: 14px;\n  border-top: 1px solid var(--gray-100);\n}\n.cs-card-cta {\n  font-family: var(--font-cond);\n  font-size: 11px; font-weight: 700; letter-spacing: 1.2px; text-transform: uppercase;\n  color: var(--blue-500); display: flex; align-items: center; gap: 6px;\n  transition: gap 0.15s, color 0.15s;\n}\n.cs-card:hover .cs-card-cta { gap: 9px; color: var(--blue-600); }\n.cs-card-year {\n  font-size: 11px; font-weight: 500; color: var(--gray-300);\n  font-variant-numeric: tabular-nums;\n}\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   NO RESULTS\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.no-results {\n  text-align: center; padding: 80px 24px; display: none;\n}\n.no-results h3 {\n  font-family: var(--font-cond); font-size: 22px; font-weight: 700;\n  text-transform: uppercase; color: var(--gray-300); margin-bottom: 12px;\n}\n.no-results p { font-size: 14px; color: var(--gray-400); font-weight: 300; }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   MODAL\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.modal-overlay {\n  position: fixed; inset: 0; z-index: 500;\n  background: rgba(15,20,35,0.75);\n  backdrop-filter: blur(4px);\n  display: flex; align-items: center; justify-content: center;\n  padding: 24px;\n  opacity: 0; pointer-events: none;\n  transition: opacity 0.25s var(--ease);\n}\n.modal-overlay.open {\n  opacity: 1; pointer-events: all;\n}\n.modal {\n  background: var(--white);\n  max-width: 860px; width: 100%;\n  max-height: 90vh; overflow-y: auto;\n  position: relative;\n  transform: translateY(20px) scale(0.98);\n  transition: transform 0.28s var(--ease-spring);\n}\n.modal-overlay.open .modal {\n  transform: translateY(0) scale(1);\n}\n \n\/* Modal header *\/\n.modal-head {\n  background: var(--gray-900);\n  padding: 40px 48px 32px;\n  position: relative; overflow: hidden;\n}\n.modal-head-bg {\n  position: absolute; inset: 0;\n  background-image:\n    linear-gradient(rgba(255,255,255,0.018) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(255,255,255,0.018) 1px, transparent 1px);\n  background-size: 40px 40px;\n}\n.modal-head-accent {\n  position: absolute; inset: 0; pointer-events: none;\n}\n.modal-close {\n  position: absolute; top: 20px; right: 20px; z-index: 10;\n  width: 36px; height: 36px;\n  background: rgba(255,255,255,0.08);\n  border: 1px solid rgba(255,255,255,0.15);\n  color: rgba(255,255,255,0.7); font-size: 18px;\n  display: flex; align-items: center; justify-content: center;\n  cursor: pointer; transition: all 0.15s;\n}\n.modal-close:hover { background: rgba(255,255,255,0.15); color: var(--white); }\n.modal-head-inner { position: relative; z-index: 2; }\n.modal-type {\n  font-size: 10px; font-weight: 700; letter-spacing: 2.5px; text-transform: uppercase;\n  color: rgba(255,255,255,0.35); margin-bottom: 12px;\n  display: flex; align-items: center; gap: 8px;\n}\n.modal-type::before { content: ''; width: 14px; height: 1px; background: rgba(255,255,255,0.3); }\n.modal-title {\n  font-family: var(--font-cond);\n  font-size: clamp(22px, 3.5vw, 34px);\n  font-weight: 800; text-transform: uppercase;\n  color: var(--white); line-height: 1.1; margin-bottom: 12px;\n}\n.modal-title em { font-style: italic; font-weight: 400; color: #7eb8f7; text-transform: none; }\n.modal-subtitle {\n  font-size: 14px; font-weight: 300; color: rgba(255,255,255,0.55); line-height: 1.65;\n}\n.modal-flag { font-size: 24px; position: absolute; top: 40px; right: 80px; z-index: 2; }\n \n\/* Modal meta row *\/\n.modal-meta {\n  display: flex; gap: 0;\n  border-bottom: 1px solid var(--gray-200);\n}\n.modal-meta-item {\n  flex: 1; padding: 18px 24px;\n  border-right: 1px solid var(--gray-200);\n}\n.modal-meta-item:last-child { border-right: none; }\n.mmi-label {\n  font-size: 9px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase;\n  color: var(--gray-400); margin-bottom: 5px; display: block;\n}\n.mmi-val {\n  font-size: 14px; font-weight: 600; color: var(--gray-900);\n}\n \n\/* Modal body *\/\n.modal-body { padding: 40px 48px; }\n.modal-section { margin-bottom: 36px; }\n.modal-section:last-child { margin-bottom: 0; }\n.modal-section-title {\n  font-family: var(--font-cond);\n  font-size: 13px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase;\n  color: var(--blue-500); margin-bottom: 16px;\n  display: flex; align-items: center; gap: 10px;\n}\n.modal-section-title::after {\n  content: ''; flex: 1; height: 1px; background: var(--gray-200);\n}\n \n\/* Challenge \/ solution *\/\n.cs-block {\n  display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 24px;\n}\n.cs-block-item {\n  padding: 20px 22px;\n  border: 1px solid var(--gray-200);\n  position: relative;\n}\n.cs-block-item.challenge { border-left: 3px solid #d04444; }\n.cs-block-item.solution  { border-left: 3px solid var(--blue-500); }\n.cs-block-label {\n  font-size: 9px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase;\n  color: var(--gray-400); margin-bottom: 8px; display: block;\n}\n.cs-block-item.challenge .cs-block-label { color: #d04444; }\n.cs-block-item.solution  .cs-block-label { color: var(--blue-500); }\n.cs-block-text {\n  font-size: 13.5px; font-weight: 400; color: var(--gray-700); line-height: 1.7;\n}\n \n\/* Equipment list *\/\n.cs-equip-list {\n  display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px;\n}\n.cs-equip-item {\n  display: flex; align-items: center; gap: 12px;\n  padding: 14px 16px;\n  background: var(--gray-50); border: 1px solid var(--gray-200);\n}\n.cs-equip-model {\n  font-family: var(--font-cond);\n  font-size: 12px; font-weight: 700; letter-spacing: 1px;\n  color: var(--blue-600); background: var(--blue-50);\n  border: 1px solid var(--blue-100);\n  padding: 3px 10px; flex-shrink: 0;\n}\n.cs-equip-name {\n  font-size: 13px; font-weight: 500; color: var(--gray-700);\n}\n \n\/* Results metrics *\/\n.cs-results-grid {\n  display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;\n}\n.cs-result-card {\n  padding: 20px 18px;\n  border: 1px solid var(--gray-200); text-align: center;\n  position: relative; overflow: hidden;\n}\n.cs-result-card::before {\n  content: ''; position: absolute;\n  top: 0; left: 0; right: 0; height: 3px;\n  background: linear-gradient(90deg, var(--blue-500), var(--blue-400));\n}\n.cs-result-num {\n  font-family: var(--font-cond);\n  font-size: 32px; font-weight: 800; letter-spacing: -1px;\n  color: var(--blue-600); line-height: 1;\n}\n.cs-result-num sup { font-size: 14px; font-weight: 500; }\n.cs-result-desc {\n  font-size: 12px; color: var(--gray-500); margin-top: 6px; line-height: 1.4;\n}\n \n\/* Quote block *\/\n.cs-quote {\n  background: var(--blue-800);\n  padding: 28px 32px; position: relative; overflow: hidden;\n  margin-top: 28px;\n}\n.cs-quote::before {\n  content: '\"';\n  position: absolute; left: 16px; top: 0;\n  font-family: var(--font-cond);\n  font-size: 120px; font-style: italic;\n  color: rgba(255,255,255,0.06); line-height: 1;\n  pointer-events: none;\n}\n.cs-quote-text {\n  font-size: 15px; font-style: italic; font-weight: 300;\n  color: rgba(255,255,255,0.8); line-height: 1.75;\n  position: relative; z-index: 1; margin-bottom: 16px;\n}\n.cs-quote-author {\n  font-size: 12px; font-weight: 600; color: #7eb8f7;\n  font-style: normal; position: relative; z-index: 1;\n}\n \n\/* Modal footer *\/\n.modal-footer {\n  padding: 24px 48px;\n  background: var(--gray-50);\n  border-top: 1px solid var(--gray-200);\n  display: flex; align-items: center; justify-content: space-between; gap: 20px;\n}\n.modal-footer-note {\n  font-size: 12px; color: var(--gray-400); font-weight: 300;\n}\n.modal-cta {\n  display: inline-flex; align-items: center; gap: 8px;\n  background: var(--blue-500); color: var(--white);\n  font-family: var(--font-cond);\n  font-size: 12px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase;\n  padding: 12px 24px; text-decoration: none;\n  transition: background 0.15s, gap 0.15s;\n}\n.modal-cta:hover { background: var(--blue-600); gap: 11px; }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   CTA STRIP\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.cta-strip {\n  background: var(--gray-900);\n  padding: 64px 52px;\n}\n.cta-strip-inner {\n  max-width: 1200px; margin: 0 auto;\n  display: grid; grid-template-columns: 1fr auto;\n  gap: 48px; align-items: center;\n}\n.cta-eyebrow {\n  font-size: 10px; font-weight: 700; letter-spacing: 2.5px; text-transform: uppercase;\n  color: rgba(255,255,255,0.35); margin-bottom: 12px;\n  display: flex; align-items: center; gap: 8px;\n}\n.cta-eyebrow::before { content: ''; width: 14px; height: 1px; background: #7eb8f7; }\n.cta-title {\n  font-family: var(--font-cond);\n  font-size: clamp(22px, 3vw, 36px); font-weight: 800;\n  text-transform: uppercase; color: var(--white); margin-bottom: 12px;\n}\n.cta-title em { font-style: italic; font-weight: 400; color: #7eb8f7; text-transform: none; }\n.cta-desc { font-size: 14px; font-weight: 300; color: rgba(255,255,255,0.5); line-height: 1.7; max-width: 520px; }\n.cta-actions { display: flex; flex-direction: column; gap: 10px; flex-shrink: 0; }\n.btn-cta-primary {\n  display: inline-flex; align-items: center; gap: 8px;\n  background: var(--blue-500); color: var(--white);\n  font-family: var(--font-cond);\n  font-size: 12px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase;\n  padding: 14px 28px; text-decoration: none;\n  transition: background 0.15s; white-space: nowrap;\n}\n.btn-cta-primary:hover { background: var(--blue-400); }\n.btn-cta-secondary {\n  display: inline-flex; align-items: center; gap: 8px;\n  background: transparent; color: rgba(255,255,255,0.6);\n  font-size: 12px; font-weight: 500;\n  padding: 12px 24px; text-decoration: none;\n  border: 1px solid rgba(255,255,255,0.15);\n  transition: all 0.15s; white-space: nowrap;\n}\n.btn-cta-secondary:hover { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.3); }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   TRANSITIONS\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.cs-card, .cs-featured {\n  animation: fadeUp 0.5s var(--ease) both;\n}\n@keyframes fadeUp {\n  from { opacity: 0; transform: translateY(12px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n.cs-card:nth-child(1) { animation-delay: 0.04s; }\n.cs-card:nth-child(2) { animation-delay: 0.09s; }\n.cs-card:nth-child(3) { animation-delay: 0.14s; }\n.cs-card:nth-child(4) { animation-delay: 0.19s; }\n.cs-card:nth-child(5) { animation-delay: 0.24s; }\n.cs-card:nth-child(6) { animation-delay: 0.29s; }\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   RESPONSIVE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n@media (max-width: 1000px) {\n  .topbar, .breadcrumb, .filter-bar { padding: 0 24px; }\n  .nav-inner { padding: 0 24px; }\n  .hero { padding: 52px 24px 44px; }\n  .hero-inner { grid-template-columns: 1fr; gap: 28px; }\n  .hero-stats { flex-direction: row; align-items: flex-start; }\n  .main-wrap { padding: 36px 24px 72px; }\n  .cs-featured { grid-template-columns: 1fr; }\n  .cs-info { border-left: none; border-top: 1px solid var(--gray-200); }\n  .cs-grid { grid-template-columns: 1fr 1fr; }\n  .modal-body { padding: 28px 28px; }\n  .modal-head { padding: 32px 28px 24px; }\n  .modal-footer { padding: 20px 28px; }\n  .cs-block { grid-template-columns: 1fr; }\n  .cs-results-grid { grid-template-columns: 1fr 1fr; }\n  .cta-strip { padding: 52px 24px; }\n  .cta-strip-inner { grid-template-columns: 1fr; gap: 28px; }\n  .cta-actions { flex-direction: row; flex-wrap: wrap; }\n}\n@media (max-width: 640px) {\n  .nav-links { display: none; }\n  .cs-grid { grid-template-columns: 1fr; }\n  .modal-meta { flex-wrap: wrap; }\n  .modal-meta-item { min-width: 50%; border-bottom: 1px solid var(--gray-200); }\n  .cs-equip-list { grid-template-columns: 1fr; }\n  .cs-results-grid { grid-template-columns: 1fr; }\n  .hero-stats { flex-direction: column; }\n  .modal-footer { flex-direction: column; align-items: flex-start; gap: 16px; }\n}\n<\/style>\n<\/head>\n<body>\n \n<!-- HERO -->\n<section class=\"hero\" aria-label=\"Case Studies hero\">\n  <div class=\"hero-inner\">\n    <div>\n      <div class=\"hero-eyebrow\">Project References<\/div>\n      <h1>Case<br><em>Studies<\/em><\/h1>\n      <p class=\"hero-desc\">Real installations. Documented results. From 100 L\/day startup lines to 50,000 L\/day multi-shift OEM\/ODM operations \u2014 across Europe, North America, and Asia-Pacific.<\/p>\n    <\/div>\n    <div class=\"hero-stats\">\n      <div class=\"hero-stat\">\n        <div><div class=\"hs-num\">200<sup>+<\/sup><\/div><div class=\"hs-label\">Lines installed<\/div><\/div>\n      <\/div>\n      <div class=\"hero-stat\">\n        <div><div class=\"hs-num\">40<sup>+<\/sup><\/div><div class=\"hs-label\">Countries<\/div><\/div>\n      <\/div>\n      <div class=\"hero-stat\">\n        <div><div class=\"hs-num\">95<sup>%<\/sup><\/div><div class=\"hs-label\">On-time FAT\/SAT<\/div><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n \n<!-- FILTER BAR -->\n<div class=\"filter-bar\" role=\"navigation\" aria-label=\"Filter case studies\">\n  <div class=\"filter-inner\">\n    <span class=\"filter-label\">Filter by<\/span>\n    <button class=\"filter-btn active\" data-filter=\"all\">All Projects <span class=\"filter-count\">7<\/span><\/button>\n    <button class=\"filter-btn\" data-filter=\"skincare\">Skincare <span class=\"filter-count\">3<\/span><\/button>\n    <button class=\"filter-btn\" data-filter=\"haircare\">Haircare <span class=\"filter-count\">1<\/span><\/button>\n    <button class=\"filter-btn\" data-filter=\"bodycare\">Body Care <span class=\"filter-count\">2<\/span><\/button>\n    <button class=\"filter-btn\" data-filter=\"personal-care\">Personal Care <span class=\"filter-count\">1<\/span><\/button>\n    <button class=\"filter-btn\" data-filter=\"europe\">Europe <span class=\"filter-count\">3<\/span><\/button>\n    <button class=\"filter-btn\" data-filter=\"americas\">Americas <span class=\"filter-count\">2<\/span><\/button>\n    <button class=\"filter-btn\" data-filter=\"apac\">Asia-Pacific <span class=\"filter-count\">2<\/span><\/button>\n  <\/div>\n<\/div>\n \n<!-- MAIN -->\n<main class=\"main-wrap\" id=\"main-content\">\n \n  <div class=\"results-bar\">\n    <span class=\"results-count\">Showing <span id=\"results-num\">7<\/span> projects<\/span>\n  <\/div>\n \n  <!-- FEATURED CARD -->\n  <div class=\"cs-featured\"\n       data-tags=\"skincare europe\"\n       data-id=\"0\"\n       role=\"button\" tabindex=\"0\"\n       aria-label=\"Open case study: Full Turnkey Skincare Line, Germany\">\n    <div class=\"cs-visual\">\n      <div class=\"cs-visual-bg\"><\/div>\n      <div class=\"cs-visual-gradient\" style=\"background:radial-gradient(ellipse 60% 70% at 80% 30%, rgba(31,91,181,0.25), transparent 55%)\"><\/div>\n      <span class=\"cs-country-flag\" aria-label=\"Germany\">\ud83c\udde9\ud83c\uddea<\/span>\n      <span class=\"cs-type-badge\">Featured Project<\/span>\n      <div class=\"cs-visual-content\">\n        <div class=\"cs-headline\">Full Turnkey <em>Skincare Line<\/em><\/div>\n        <div class=\"cs-tagline\">5,000 L\/day capacity. Private label OEM factory supplying 12 EU retailers. Commissioned in 47 days.<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"cs-info\">\n      <div class=\"cs-meta-row\">\n        <div class=\"cs-meta-icon\">\ud83d\udccd<\/div>\n        <div><span class=\"cs-meta-label\">Location<\/span><span class=\"cs-meta-val\">Hamburg, Germany<\/span><\/div>\n      <\/div>\n      <div class=\"cs-meta-row\">\n        <div class=\"cs-meta-icon\">\ud83c\udfed<\/div>\n        <div><span class=\"cs-meta-label\">Client Type<\/span><span class=\"cs-meta-val\">OEM\/ODM Contract Manufacturer<\/span><\/div>\n      <\/div>\n      <div class=\"cs-meta-row\">\n        <div class=\"cs-meta-icon\">\ud83d\udcc5<\/div>\n        <div><span class=\"cs-meta-label\">Commissioned<\/span><span class=\"cs-meta-val\">2023 \u00b7 47-day lead time<\/span><\/div>\n      <\/div>\n      <div class=\"cs-models-row\">\n        <span class=\"cs-model-tag\">KVM-1000<\/span>\n        <span class=\"cs-model-tag\">KM-RO-2000<\/span>\n        <span class=\"cs-model-tag\">KFM-60<\/span>\n        <span class=\"cs-model-tag\">KCM-60<\/span>\n        <span class=\"cs-model-tag\">KTM-60<\/span>\n      <\/div>\n      <ul class=\"cs-result-list\">\n        <li>Batch consistency improved \u2014 fill deviation reduced from \u00b13.2% to \u00b10.4%<\/li>\n        <li>Line throughput 62 BPM achieved on first production day post-commissioning<\/li>\n        <li>Full CE + ISO 22716 GMP documentation approved by client's auditor in first review<\/li>\n      <\/ul>\n      <button class=\"cs-read-btn\" data-id=\"0\" aria-label=\"Read full case study\">\n        Read Full Case Study\n        <svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <path d=\"M2 6.5h9M7.5 2.5l4 4-4 4\"\/>\n        <\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n \n  <!-- GRID CARDS -->\n  <div class=\"cs-grid\" id=\"cs-grid\">\n \n    <div class=\"cs-card\" data-tags=\"skincare americas\" data-id=\"1\"\n         role=\"button\" tabindex=\"0\" aria-label=\"Open case study: Serum Production Line, USA\">\n      <div class=\"cs-card-head\">\n        <div class=\"cs-card-grid-bg\"><\/div>\n        <div class=\"cs-card-gradient\" style=\"background:radial-gradient(ellipse 80% 60% at 90% 20%, rgba(31,91,181,0.3), transparent 60%)\"><\/div>\n        <span class=\"cs-card-flag\" aria-label=\"United States\">\ud83c\uddfa\ud83c\uddf8<\/span>\n        <div class=\"cs-card-type\">Skincare \u00b7 Americas<\/div>\n        <div class=\"cs-card-title\">Serum <em>&amp; Essence<\/em> Line<\/div>\n      <\/div>\n      <div class=\"cs-card-body\">\n        <div class=\"cs-card-tags\">\n          <span class=\"cs-card-tag\">KVM-200<\/span>\n          <span class=\"cs-card-tag\">KFM-30<\/span>\n          <span class=\"cs-card-tag\">KTM-30<\/span>\n        <\/div>\n        <p class=\"cs-card-desc\">Independent skincare brand scaling from contract fill to in-house production. 200 L\/batch, 10 ml glass dropper filling at \u00b10.3% accuracy.<\/p>\n        <div class=\"cs-card-metrics\">\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">\u00b10.3<sup>%<\/sup><\/div>\n            <div class=\"cs-metric-label\">Fill accuracy<\/div>\n          <\/div>\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">28<sup> days<\/sup><\/div>\n            <div class=\"cs-metric-label\">Lead time<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"cs-card-action\">\n          <span class=\"cs-card-cta\">View Project \u2192<\/span>\n          <span class=\"cs-card-year\">2024<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n \n    <div class=\"cs-card\" data-tags=\"bodycare europe\" data-id=\"2\"\n         role=\"button\" tabindex=\"0\" aria-label=\"Open case study: Body Butter Production, France\">\n      <div class=\"cs-card-head\">\n        <div class=\"cs-card-grid-bg\"><\/div>\n        <div class=\"cs-card-gradient\" style=\"background:radial-gradient(ellipse 80% 60% at 10% 80%, rgba(21,100,120,0.35), transparent 60%)\"><\/div>\n        <span class=\"cs-card-flag\" aria-label=\"France\">\ud83c\uddeb\ud83c\uddf7<\/span>\n        <div class=\"cs-card-type\">Body Care \u00b7 Europe<\/div>\n        <div class=\"cs-card-title\">Body Butter <em>Hot-Fill<\/em> Line<\/div>\n      <\/div>\n      <div class=\"cs-card-body\">\n        <div class=\"cs-card-tags\">\n          <span class=\"cs-card-tag\">KLM-500<\/span>\n          <span class=\"cs-card-tag\">KFM-40 Hot<\/span>\n          <span class=\"cs-card-tag\">KCM-40<\/span>\n        <\/div>\n        <p class=\"cs-card-desc\">Natural cosmetics OEM replacing a manual hot-fill process. 500 L vessel, fill temperature 75\u00b0C, jar and tube formats on one line.<\/p>\n        <div class=\"cs-card-metrics\">\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">75<sup>\u00b0C<\/sup><\/div>\n            <div class=\"cs-metric-label\">Fill temp<\/div>\n          <\/div>\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">3\u00d7<\/div>\n            <div class=\"cs-metric-label\">Throughput increase<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"cs-card-action\">\n          <span class=\"cs-card-cta\">View Project \u2192<\/span>\n          <span class=\"cs-card-year\">2023<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n \n    <div class=\"cs-card\" data-tags=\"haircare apac\" data-id=\"3\"\n         role=\"button\" tabindex=\"0\" aria-label=\"Open case study: Haircare Production, Australia\">\n      <div class=\"cs-card-head\">\n        <div class=\"cs-card-grid-bg\"><\/div>\n        <div class=\"cs-card-gradient\" style=\"background:radial-gradient(ellipse 70% 60% at 50% 20%, rgba(60,80,160,0.3), transparent 55%)\"><\/div>\n        <span class=\"cs-card-flag\" aria-label=\"Australia\">\ud83c\udde6\ud83c\uddfa<\/span>\n        <div class=\"cs-card-type\">Haircare \u00b7 Asia-Pacific<\/div>\n        <div class=\"cs-card-title\">Shampoo <em>&amp; Conditioner<\/em> Line<\/div>\n      <\/div>\n      <div class=\"cs-card-body\">\n        <div class=\"cs-card-tags\">\n          <span class=\"cs-card-tag\">KFM-80<\/span>\n          <span class=\"cs-card-tag\">KCM-60<\/span>\n          <span class=\"cs-card-tag\">KTM-60<\/span>\n          <span class=\"cs-card-tag\">KM-RO-500<\/span>\n        <\/div>\n        <p class=\"cs-card-desc\">High-volume haircare OEM factory, 8-SKU portfolio. 80 BPM high-speed filling, automatic screw capping and wrap-around labeling, GS1 barcode integration.<\/p>\n        <div class=\"cs-card-metrics\">\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">80<\/div>\n            <div class=\"cs-metric-label\">BPM throughput<\/div>\n          <\/div>\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">8<\/div>\n            <div class=\"cs-metric-label\">SKUs on one line<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"cs-card-action\">\n          <span class=\"cs-card-cta\">View Project \u2192<\/span>\n          <span class=\"cs-card-year\">2023<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n \n    <div class=\"cs-card\" data-tags=\"personal-care americas\" data-id=\"4\"\n         role=\"button\" tabindex=\"0\" aria-label=\"Open case study: Hand Sanitiser Line, Canada\">\n      <div class=\"cs-card-head\">\n        <div class=\"cs-card-grid-bg\"><\/div>\n        <div class=\"cs-card-gradient\" style=\"background:radial-gradient(ellipse 80% 50% at 80% 80%, rgba(100,130,40,0.2), transparent 55%)\"><\/div>\n        <span class=\"cs-card-flag\" aria-label=\"Canada\">\ud83c\udde8\ud83c\udde6<\/span>\n        <div class=\"cs-card-type\">Personal Care \u00b7 Americas<\/div>\n        <div class=\"cs-card-title\">Gel Sanitiser <em>ATEX Line<\/em><\/div>\n      <\/div>\n      <div class=\"cs-card-body\">\n        <div class=\"cs-card-tags\">\n          <span class=\"cs-card-tag\">KFM-50 ATEX<\/span>\n          <span class=\"cs-card-tag\">KCM-40<\/span>\n          <span class=\"cs-card-tag\">KTM-40<\/span>\n        <\/div>\n        <p class=\"cs-card-desc\">70% alcohol-content hand gel production. ATEX Zone 2 compliant filling environment, explosion-proof motor options, static-grounded conveyor system.<\/p>\n        <div class=\"cs-card-metrics\">\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">70<sup>%<\/sup><\/div>\n            <div class=\"cs-metric-label\">Alcohol content<\/div>\n          <\/div>\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">ATEX<\/div>\n            <div class=\"cs-metric-label\">Zone 2 certified<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"cs-card-action\">\n          <span class=\"cs-card-cta\">View Project \u2192<\/span>\n          <span class=\"cs-card-year\">2022<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n \n    <div class=\"cs-card\" data-tags=\"skincare apac\" data-id=\"5\"\n         role=\"button\" tabindex=\"0\" aria-label=\"Open case study: Sunscreen Production, Japan\">\n      <div class=\"cs-card-head\">\n        <div class=\"cs-card-grid-bg\"><\/div>\n        <div class=\"cs-card-gradient\" style=\"background:radial-gradient(ellipse 70% 60% at 20% 30%, rgba(31,91,181,0.28), transparent 55%)\"><\/div>\n        <span class=\"cs-card-flag\" aria-label=\"Japan\">\ud83c\uddef\ud83c\uddf5<\/span>\n        <div class=\"cs-card-type\">Skincare \u00b7 Asia-Pacific<\/div>\n        <div class=\"cs-card-title\">Mineral SPF <em>Emulsifier<\/em><\/div>\n      <\/div>\n      <div class=\"cs-card-body\">\n        <div class=\"cs-card-tags\">\n          <span class=\"cs-card-tag\">KVM-500<\/span>\n          <span class=\"cs-card-tag\">KM-RO-1000<\/span>\n          <span class=\"cs-card-tag\">KFM-40<\/span>\n        <\/div>\n        <p class=\"cs-card-desc\">Mineral sunscreen OEM requiring precise zinc oxide dispersion. High-shear vacuum homogenisation under nitrogen blanket. SPF 30\u201350 formulation range.<\/p>\n        <div class=\"cs-card-metrics\">\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">SPF50<\/div>\n            <div class=\"cs-metric-label\">Max formulation<\/div>\n          <\/div>\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">N\u2082<\/div>\n            <div class=\"cs-metric-label\">Blanket option<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"cs-card-action\">\n          <span class=\"cs-card-cta\">View Project \u2192<\/span>\n          <span class=\"cs-card-year\">2024<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n \n    <div class=\"cs-card\" data-tags=\"bodycare europe\" data-id=\"6\"\n         role=\"button\" tabindex=\"0\" aria-label=\"Open case study: Body Lotion Line, UK\">\n      <div class=\"cs-card-head\">\n        <div class=\"cs-card-grid-bg\"><\/div>\n        <div class=\"cs-card-gradient\" style=\"background:radial-gradient(ellipse 80% 60% at 60% 70%, rgba(31,91,181,0.22), transparent 60%)\"><\/div>\n        <span class=\"cs-card-flag\" aria-label=\"United Kingdom\">\ud83c\uddec\ud83c\udde7<\/span>\n        <div class=\"cs-card-type\">Body Care \u00b7 Europe<\/div>\n        <div class=\"cs-card-title\">Body Lotion <em>Scale-Up<\/em><\/div>\n      <\/div>\n      <div class=\"cs-card-body\">\n        <div class=\"cs-card-tags\">\n          <span class=\"cs-card-tag\">KLM-200\u21921000<\/span>\n          <span class=\"cs-card-tag\">KFM-60<\/span>\n          <span class=\"cs-card-tag\">KCM-50<\/span>\n        <\/div>\n        <p class=\"cs-card-desc\">Contract manufacturer scaling from 200 L pilot to 1,000 L production vessel. Phased installation: emulsifier first, filling line added 6 months later.<\/p>\n        <div class=\"cs-card-metrics\">\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">5\u00d7<\/div>\n            <div class=\"cs-metric-label\">Capacity increase<\/div>\n          <\/div>\n          <div class=\"cs-metric\">\n            <div class=\"cs-metric-val\">Phased<\/div>\n            <div class=\"cs-metric-label\">Investment model<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"cs-card-action\">\n          <span class=\"cs-card-cta\">View Project \u2192<\/span>\n          <span class=\"cs-card-year\">2022<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n \n  <\/div><!-- \/cs-grid -->\n \n  <div class=\"no-results\" id=\"no-results\">\n    <h3>No projects found<\/h3>\n    <p>Try a different filter, or <a href=\"\/contact\/\" style=\"color:var(--blue-500)\">contact us<\/a> for references in your specific region or sector.<\/p>\n  <\/div>\n \n<\/main>\n \n<!-- CTA STRIP -->\n<section class=\"cta-strip\" aria-label=\"Contact and quote\">\n  <div class=\"cta-strip-inner\">\n    <div>\n      <div class=\"cta-eyebrow\">Start Your Project<\/div>\n      <h2 class=\"cta-title\">Need a reference in your <em>market?<\/em><\/h2>\n      <p class=\"cta-desc\">We have 200+ installations across 40+ countries. If you need a site-visit reference or want to speak with an existing Kosmix customer in your region, we can arrange it.<\/p>\n    <\/div>\n    <div class=\"cta-actions\">\n      <a href=\"\/contact\/\" class=\"btn-cta-primary\">Request a Quote \u2192<\/a>\n      <a href=\"\/solutions\/cosmetic-production-line\/\" class=\"btn-cta-secondary\">View Production Line<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n \n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     MODAL\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<div class=\"modal-overlay\" id=\"modal-overlay\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"modal-title\">\n  <div class=\"modal\" id=\"modal\">\n    <div class=\"modal-head\">\n      <div class=\"modal-head-bg\"><\/div>\n      <div class=\"modal-head-accent\" id=\"modal-accent\"><\/div>\n      <button class=\"modal-close\" id=\"modal-close\" aria-label=\"Close\">\u2715<\/button>\n      <div class=\"modal-head-inner\">\n        <div class=\"modal-type\" id=\"modal-type\">Case Study<\/div>\n        <h2 class=\"modal-title\" id=\"modal-title\">Loading\u2026<\/h2>\n        <p class=\"modal-subtitle\" id=\"modal-subtitle\"><\/p>\n      <\/div>\n      <span class=\"modal-flag\" id=\"modal-flag\" aria-hidden=\"true\"><\/span>\n    <\/div>\n    <div class=\"modal-meta\" id=\"modal-meta\"><\/div>\n    <div class=\"modal-body\" id=\"modal-body\"><\/div>\n    <div class=\"modal-footer\">\n      <span class=\"modal-footer-note\">All specifications verified at commissioning. References available upon request.<\/span>\n      <a href=\"\/contact\/\" class=\"modal-cta\">Discuss a Similar Project \u2192<\/a>\n    <\/div>\n  <\/div>\n<\/div>\n \n<script>\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   DATA\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst CASES = [\n  {\n    id: 0,\n    type: \"Featured Project \u00b7 Skincare \u00b7 Europe\",\n    flag: \"\ud83c\udde9\ud83c\uddea\",\n    title: \"Full Turnkey Skincare Line\",\n    titleEm: \"\",\n    subtitle: \"5,000 L\/day OEM\/ODM contract manufacturer supplying 12 EU private-label brands. Full turnkey installation: RO water, emulsification, filling, capping, and labeling.\",\n    accentColor: \"rgba(31,91,181,0.3)\",\n    meta: [\n      { label: \"Location\", val: \"Hamburg, Germany\" },\n      { label: \"Client\", val: \"OEM Contract Manufacturer\" },\n      { label: \"Capacity\", val: \"5,000 L \/ day\" },\n      { label: \"Commissioned\", val: \"2023 \u00b7 47 days\" }\n    ],\n    challenge: \"The client was running four separate vendor systems \u2014 incompatible PLCs, no shared SCADA, and recurring integration failures costing approximately 12 hours of downtime per week. Fill deviation on their legacy filler was \u00b13.2%, failing the \u00b11% specification required by their largest retailer buyer.\",\n    solution: \"Full 5-machine turnkey line on a single Kosmix PLC network. KVM-1000 vacuum emulsifier, KM-RO-2000 water system, KFM-60 servo piston filler, KCM-60 rotary capper, KTM-60 wrap labeler. OPC-UA data output to client's existing MES system. CE + ISO 22716 documentation package prepared before installation date.\",\n    equipment: [\n      { model: \"KVM-1000\", name: \"Vacuum Emulsifying Mixer, 1,000 L\" },\n      { model: \"KM-RO-2000\", name: \"RO Water Treatment, 2,000 L\/hr\" },\n      { model: \"KFM-60\", name: \"Servo Piston Filling Machine, 60 BPM\" },\n      { model: \"KCM-60\", name: \"Rotary Capping Machine, 60 BPM\" },\n      { model: \"KTM-60\", name: \"Wrap-Around Labeling Machine, 60 BPM\" }\n    ],\n    results: [\n      { num: \"\u00b10.4%\", label: \"Fill deviation achieved (from \u00b13.2%)\" },\n      { num: \"62 BPM\", label: \"Line throughput on first production day\" },\n      { num: \"1st Review\", label: \"CE + GMP docs approved by auditor\" }\n    ],\n    quote: \"The integration was seamless. One PLC, one HMI, one service contact. Our auditor approved the CE documentation on first review \u2014 that has never happened with our previous Chinese suppliers.\",\n    author: \"Production Director, Hamburg OEM Factory\"\n  },\n  {\n    id: 1,\n    type: \"Skincare \u00b7 Americas\",\n    flag: \"\ud83c\uddfa\ud83c\uddf8\",\n    title: \"Serum & Essence\",\n    titleEm: \"Filling Line\",\n    subtitle: \"Independent skincare brand scaling from contract fill to in-house production. 200 L\/batch KVM emulsifier and KFM peristaltic line for 10 ml glass dropper bottles.\",\n    accentColor: \"rgba(31,91,181,0.25)\",\n    meta: [\n      { label: \"Location\", val: \"Los Angeles, USA\" },\n      { label: \"Client\", val: \"Independent Skincare Brand\" },\n      { label: \"Capacity\", val: \"200 L \/ batch\" },\n      { label: \"Commissioned\", val: \"2024 \u00b7 28 days\" }\n    ],\n    challenge: \"Brand owner previously using a contract filler, losing 18% margin to fill fees. New in-house target: 10 ml glass droppers at \u00b10.5% accuracy. Previous semi-auto filler trialled was achieving \u00b12.8% with frequent drip contamination on serum formula.\",\n    solution: \"KVM-200 vacuum emulsifier for HA serum and peptide cream formulas. KFM-30 with peristaltic filling heads for 10 ml glass dropper format. Anti-drip nozzle design validated with client's actual formula before dispatch. Full FAT completed at Kosmix factory with client engineer witnessing.\",\n    equipment: [\n      { model: \"KVM-200\", name: \"Vacuum Emulsifying Mixer, 200 L\" },\n      { model: \"KFM-30\", name: \"Peristaltic Filling Machine, 30 BPM\" },\n      { model: \"KTM-30\", name: \"Front + Back Labeling Machine, 30 BPM\" }\n    ],\n    results: [\n      { num: \"\u00b10.3%\", label: \"Fill accuracy on 10 ml dropper\" },\n      { num: \"28 days\", label: \"Factory to commissioned line\" },\n      { num: \"18%\", label: \"Margin recovered vs contract fill\" }\n    ],\n    quote: \"We ran FAT with our actual HA serum formula. The peristaltic nozzles had zero drip on the first trial run. The machine paid for itself within three production months.\",\n    author: \"Founder, Independent Skincare Brand, Los Angeles\"\n  },\n  {\n    id: 2,\n    type: \"Body Care \u00b7 Europe\",\n    flag: \"\ud83c\uddeb\ud83c\uddf7\",\n    title: \"Body Butter\",\n    titleEm: \"Hot-Fill Line\",\n    subtitle: \"Natural cosmetics OEM factory replacing a manual hot-fill process. 500 L KLM vessel, fill temperature 75\u00b0C, jar and tube formats on one integrated line.\",\n    accentColor: \"rgba(21,100,120,0.3)\",\n    meta: [\n      { label: \"Location\", val: \"Lyon, France\" },\n      { label: \"Client\", val: \"Natural Cosmetics OEM\" },\n      { label: \"Capacity\", val: \"500 L \/ batch \u00b7 75\u00b0C\" },\n      { label: \"Commissioned\", val: \"2023 \u00b7 38 days\" }\n    ],\n    challenge: \"Client was manually ladling hot body butter into jars at 80\u00b0C \u2014 4 operators, 200 units\/hour, with regular burn incidents and high batch rejection due to air inclusion and uneven fill weights. Insurance required an automated solution.\",\n    solution: \"KLM-500 with heated jacket and anchor agitator for high-lipid body butter formula. KFM-40 Hot-Fill with insulated hoppers and heated nozzles maintaining 75\u00b0C at point of fill. Jar and tube format interchangeability via quick-change nozzle kits. CIP station included for allergen-sensitive product changeover.\",\n    equipment: [\n      { model: \"KLM-500\", name: \"Emulsifying Mixer, 500 L, heated jacket\" },\n      { model: \"KFM-40 Hot\", name: \"Hot-Fill Machine, 75\u00b0C, 40 BPM\" },\n      { model: \"KCM-40\", name: \"Rotary Capping Machine, 40 BPM\" }\n    ],\n    results: [\n      { num: \"3\u00d7\", label: \"Throughput vs manual process\" },\n      { num: \"0\", label: \"Operator burn incidents post-install\" },\n      { num: \"75\u00b0C\", label: \"Fill temperature maintained at nozzle\" }\n    ],\n    quote: \"Automating the hot-fill was a safety requirement first, a business case second. Kosmix delivered both \u2014 throughput tripled and our insurance auditor was satisfied with the guarding and controls.\",\n    author: \"Operations Manager, Natural Cosmetics OEM, Lyon\"\n  },\n  {\n    id: 3,\n    type: \"Haircare \u00b7 Asia-Pacific\",\n    flag: \"\ud83c\udde6\ud83c\uddfa\",\n    title: \"Shampoo & Conditioner\",\n    titleEm: \"High-Speed Line\",\n    subtitle: \"High-volume haircare OEM factory. 80 BPM filling for 8-SKU shampoo and conditioner portfolio. GS1 barcode integration and wrap-around labeling.\",\n    accentColor: \"rgba(60,80,160,0.28)\",\n    meta: [\n      { label: \"Location\", val: \"Melbourne, Australia\" },\n      { label: \"Client\", val: \"Haircare OEM\/ODM Factory\" },\n      { label: \"Throughput\", val: \"80 BPM \u00b7 8 SKUs\" },\n      { label: \"Commissioned\", val: \"2023 \u00b7 52 days\" }\n    ],\n    challenge: \"Client operating three separate filling lines at 25 BPM each, with three different labeling machines. SKU changeover took 45 minutes per format. Client's largest retail customer (national chain) required GS1 barcode compliance on all labels from Q1 2023.\",\n    solution: \"Single KFM-80 high-speed piston filler replacing all three lines. KCM-60 rotary capper for screw caps. KTM-60 wrap labeler with GS1 Datamatrix print-and-apply unit integrated inline. Changeover time reduced to 8 minutes with quick-change format kits. KM-RO-500 water system for process water compliance.\",\n    equipment: [\n      { model: \"KFM-80\", name: \"High-Speed Filling Machine, 80 BPM\" },\n      { model: \"KCM-60\", name: \"Rotary Capping Machine, 60 BPM\" },\n      { model: \"KTM-60\", name: \"Wrap Labeler + GS1 Print-and-Apply\" },\n      { model: \"KM-RO-500\", name: \"RO Water Treatment, 500 L\/hr\" }\n    ],\n    results: [\n      { num: \"80 BPM\", label: \"Single-line throughput (vs 75 BPM on 3 lines)\" },\n      { num: \"8 min\", label: \"SKU changeover time (from 45 min)\" },\n      { num: \"GS1\", label: \"Barcode compliance achieved Q1 2023\" }\n    ],\n    quote: \"Going from three lines to one was a risk. Within one week we were running faster than all three old lines combined, and the changeover time cut our weekly downtime by 6 hours.\",\n    author: \"Plant Manager, Haircare OEM Factory, Melbourne\"\n  },\n  {\n    id: 4,\n    type: \"Personal Care \u00b7 Americas\",\n    flag: \"\ud83c\udde8\ud83c\udde6\",\n    title: \"Gel Sanitiser\",\n    titleEm: \"ATEX Line\",\n    subtitle: \"70% alcohol-content hand gel production. ATEX Zone 2 compliant filling environment, explosion-proof motors, and static-grounded conveyor system.\",\n    accentColor: \"rgba(100,130,40,0.2)\",\n    meta: [\n      { label: \"Location\", val: \"Toronto, Canada\" },\n      { label: \"Client\", val: \"Personal Care OEM\" },\n      { label: \"Product\", val: \"70% IPA Gel \u00b7 ATEX Zone 2\" },\n      { label: \"Commissioned\", val: \"2022 \u00b7 35 days\" }\n    ],\n    challenge: \"Client required a compliant alcohol-gel filling line meeting CSA\/UL requirements for Class I, Division 2 (ATEX Zone 2 equivalent) hazardous locations. Previous filling line was not rated for high-alcohol environments \u2014 client was operating with a fire safety non-compliance notice.\",\n    solution: \"KFM-50 ATEX configuration with explosion-proof (Ex-d) motor, antistatic filling nozzles, static-grounded conveyor, and pressurised control panel purging. KCM-40 and KTM-40 also supplied in ATEX-compatible spec. Full ATEX Zone 2 equipment documentation package provided for client's HSE team.\",\n    equipment: [\n      { model: \"KFM-50 ATEX\", name: \"Ex-proof Filling Machine, Zone 2, 50 BPM\" },\n      { model: \"KCM-40 ATEX\", name: \"Ex-proof Capping Machine, 40 BPM\" },\n      { model: \"KTM-40\", name: \"Labeling Machine, antistatic conveyor\" }\n    ],\n    results: [\n      { num: \"Zone 2\", label: \"ATEX classification achieved\" },\n      { num: \"35 days\", label: \"From order to commissioned line\" },\n      { num: \"HSE \u2713\", label: \"Non-compliance notice cleared\" }\n    ],\n    quote: \"The ATEX documentation package was the most comprehensive we have received from any equipment supplier. Our HSE manager cleared the non-compliance notice within two weeks of installation.\",\n    author: \"EHS Director, Personal Care OEM, Toronto\"\n  },\n  {\n    id: 5,\n    type: \"Skincare \u00b7 Asia-Pacific\",\n    flag: \"\ud83c\uddef\ud83c\uddf5\",\n    title: \"Mineral SPF\",\n    titleEm: \"Emulsification\",\n    subtitle: \"Mineral sunscreen OEM requiring precise zinc oxide dispersion under nitrogen blanket. KVM-500 with high-shear vacuum homogenisation for SPF 30\u201350 range.\",\n    accentColor: \"rgba(31,91,181,0.28)\",\n    meta: [\n      { label: \"Location\", val: \"Osaka, Japan\" },\n      { label: \"Client\", val: \"Sunscreen OEM Manufacturer\" },\n      { label: \"Product\", val: \"Mineral SPF 30\u201350\" },\n      { label: \"Commissioned\", val: \"2024 \u00b7 42 days\" }\n    ],\n    challenge: \"Client producing mineral sunscreen with 20% uncoated zinc oxide \u2014 an abrasive, high-density pigment prone to settling and agglomeration. Previous homogeniser could not achieve uniform ZnO particle distribution, resulting in 30% batch rejection for SPF non-conformance.\",\n    solution: \"KVM-500 with enhanced high-shear rotor-stator at 3,500 RPM. Nitrogen blanket inlet installed to prevent ZnO oxidation during processing. Anchor agitator with PTFE scrapers handles the thick (40,000 cP) sunscreen base. KM-RO-1000 for USP-grade process water. Batch rejection rate tracked at commissioning.\",\n    equipment: [\n      { model: \"KVM-500\", name: \"Vacuum Emulsifier, 3,500 RPM, N\u2082 blanket\" },\n      { model: \"KM-RO-1000\", name: \"RO Water Treatment, 1,000 L\/hr\" },\n      { model: \"KFM-40\", name: \"Servo Piston Filling, 40 BPM\" }\n    ],\n    results: [\n      { num: \"30%\u21922%\", label: \"Batch rejection rate reduction\" },\n      { num: \"SPF50\", label: \"Highest formulation validated\" },\n      { num: \"N\u2082\", label: \"Blanket option standard on KVM\" }\n    ],\n    quote: \"The ZnO dispersion uniformity was the key requirement. Kosmix ran our actual formula during FAT and we witnessed 97% conformance rate before we signed off on shipment.\",\n    author: \"R&D Manager, Sunscreen OEM, Osaka\"\n  },\n  {\n    id: 6,\n    type: \"Body Care \u00b7 Europe\",\n    flag: \"\ud83c\uddec\ud83c\udde7\",\n    title: \"Body Lotion\",\n    titleEm: \"Scale-Up\",\n    subtitle: \"UK contract manufacturer scaling from 200 L pilot to 1,000 L production. Phased investment: emulsifier in Phase 1, filling and capping line 6 months later.\",\n    accentColor: \"rgba(31,91,181,0.22)\",\n    meta: [\n      { label: \"Location\", val: \"Birmingham, UK\" },\n      { label: \"Client\", val: \"Contract Cosmetics Manufacturer\" },\n      { label: \"Capacity\", val: \"200 L \u2192 1,000 L \/ batch\" },\n      { label: \"Commissioned\", val: \"2022\u20132023 \u00b7 Phased\" }\n    ],\n    challenge: \"Startup contract manufacturer with limited capex. Needed to demonstrate emulsification capacity to secure their first major retail private-label contract before committing to a full line. Required a phased investment path that avoided over-capitalising on unproven volume.\",\n    solution: \"Phase 1: KLM-200 emulsifier installed and commissioned in 22 days. Secured retail contract within 4 months. Phase 2: KLM upgraded to KLM-1000 vessel (same frame, larger tank) plus KFM-60 and KCM-50 installed 6 months later. Same PLC network \u2014 no integration cost for Phase 2 addition.\",\n    equipment: [\n      { model: \"KLM-200\u21921000\", name: \"Emulsifier, phased vessel upgrade\" },\n      { model: \"KFM-60\", name: \"Servo Filling Machine, Phase 2\" },\n      { model: \"KCM-50\", name: \"Rotary Capping Machine, Phase 2\" }\n    ],\n    results: [\n      { num: \"5\u00d7\", label: \"Capacity increase across phases\" },\n      { num: \"22 days\", label: \"Phase 1 installation time\" },\n      { num: \"Phased\", label: \"Investment matched to revenue\" }\n    ],\n    quote: \"The phased approach was the deciding factor. No other supplier offered a credible upgrade path \u2014 most wanted us to buy the full line upfront. Kosmix let us grow into it.\",\n    author: \"Managing Director, Contract Cosmetics, Birmingham\"\n  }\n];\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   FILTER\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst filterBtns = document.querySelectorAll('.filter-btn');\nconst allCards   = document.querySelectorAll('[data-id]');\nconst featured   = document.querySelector('.cs-featured');\nconst numEl      = document.getElementById('results-num');\nconst noResults  = document.getElementById('no-results');\n \nfilterBtns.forEach(btn => {\n  btn.addEventListener('click', () => {\n    filterBtns.forEach(b => b.classList.remove('active'));\n    btn.classList.add('active');\n    const f = btn.dataset.filter;\n    let visible = 0;\n    allCards.forEach(card => {\n      const tags = card.dataset.tags || '';\n      const show = f === 'all' || tags.includes(f);\n      card.style.display = show ? '' : 'none';\n      if (show) visible++;\n    });\n    numEl.textContent = visible;\n    noResults.style.display = visible === 0 ? 'block' : 'none';\n  });\n});\n \n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   MODAL\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst overlay   = document.getElementById('modal-overlay');\nconst modalEl   = document.getElementById('modal');\nconst closeBtn  = document.getElementById('modal-close');\n \nfunction openModal(id) {\n  const d = CASES.find(c => c.id === id);\n  if (!d) return;\n \n  document.getElementById('modal-type').textContent = d.type;\n  document.getElementById('modal-title').innerHTML =\n    d.titleEm ? `${d.title} <em>${d.titleEm}<\/em>` : d.title;\n  document.getElementById('modal-subtitle').textContent = d.subtitle;\n  document.getElementById('modal-flag').textContent = d.flag;\n  document.getElementById('modal-accent').style.background =\n    `radial-gradient(ellipse 60% 70% at 80% 30%, ${d.accentColor}, transparent 55%)`;\n \n  \/\/ Meta\n  document.getElementById('modal-meta').innerHTML = d.meta.map(m =>\n    `<div class=\"modal-meta-item\">\n      <span class=\"mmi-label\">${m.label}<\/span>\n      <span class=\"mmi-val\">${m.val}<\/span>\n    <\/div>`\n  ).join('');\n \n  \/\/ Body\n  document.getElementById('modal-body').innerHTML = `\n    <div class=\"modal-section\">\n      <div class=\"modal-section-title\">Challenge &amp; Solution<\/div>\n      <div class=\"cs-block\">\n        <div class=\"cs-block-item challenge\">\n          <span class=\"cs-block-label\">Challenge<\/span>\n          <p class=\"cs-block-text\">${d.challenge}<\/p>\n        <\/div>\n        <div class=\"cs-block-item solution\">\n          <span class=\"cs-block-label\">Kosmix Solution<\/span>\n          <p class=\"cs-block-text\">${d.solution}<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n    <div class=\"modal-section\">\n      <div class=\"modal-section-title\">Equipment Supplied<\/div>\n      <div class=\"cs-equip-list\">\n        ${d.equipment.map(e => `\n          <div class=\"cs-equip-item\">\n            <span class=\"cs-equip-model\">${e.model}<\/span>\n            <span class=\"cs-equip-name\">${e.name}<\/span>\n          <\/div>`).join('')}\n      <\/div>\n    <\/div>\n    <div class=\"modal-section\">\n      <div class=\"modal-section-title\">Measured Results<\/div>\n      <div class=\"cs-results-grid\">\n        ${d.results.map(r => `\n          <div class=\"cs-result-card\">\n            <div class=\"cs-result-num\">${r.num}<\/div>\n            <div class=\"cs-result-desc\">${r.label}<\/div>\n          <\/div>`).join('')}\n      <\/div>\n      <div class=\"cs-quote\">\n        <p class=\"cs-quote-text\">\"${d.quote}\"<\/p>\n        <span class=\"cs-quote-author\">\u2014 ${d.author}<\/span>\n      <\/div>\n    <\/div>\n  `;\n \n  overlay.classList.add('open');\n  document.body.style.overflow = 'hidden';\n  closeBtn.focus();\n}\n \nfunction closeModal() {\n  overlay.classList.remove('open');\n  document.body.style.overflow = '';\n}\n \n\/\/ Trigger from cards\ndocument.querySelectorAll('[data-id]').forEach(el => {\n  el.addEventListener('click', () => openModal(parseInt(el.dataset.id)));\n  el.addEventListener('keydown', e => {\n    if (e.key === 'Enter' || e.key === ' ') {\n      e.preventDefault();\n      openModal(parseInt(el.dataset.id));\n    }\n  });\n});\n \n\/\/ \"Read Full Case Study\" button\ndocument.querySelectorAll('.cs-read-btn').forEach(btn => {\n  btn.addEventListener('click', e => {\n    e.stopPropagation();\n    openModal(parseInt(btn.dataset.id));\n  });\n});\n \ncloseBtn.addEventListener('click', closeModal);\noverlay.addEventListener('click', e => { if (e.target === overlay) closeModal(); });\ndocument.addEventListener('keydown', e => { if (e.key === 'Escape') closeModal(); });\n<\/script>\n \n<\/body>\n<\/html>\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-36b762c hostinger-ai-customer-reviews-2 e-flex e-con-boxed e-con e-parent\" data-id=\"36b762c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-384b9be e-grid e-con-full e-con e-child\" data-id=\"384b9be\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-27f457a e-con-full hostinger-ai-background-image e-flex e-con e-child\" data-id=\"27f457a\" 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<div class=\"elementor-element elementor-element-c47ee61 e-con-full e-flex e-con e-child\" data-id=\"c47ee61\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-839cc74 e-con-full e-flex e-con e-child\" data-id=\"839cc74\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-5636e4b e-con-full e-flex e-con e-child\" data-id=\"5636e4b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-618581b e-con-full e-flex e-con e-child\" data-id=\"618581b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e9eaf23 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"e9eaf23\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-star\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-934a239 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"934a239\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-star\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-125edcd elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"125edcd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-star\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-816cd80 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"816cd80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-star\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f57a250 elementor-view-default elementor-widget elementor-widget-icon\" data-id=\"f57a250\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<div class=\"elementor-icon\">\n\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-star\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef10b70 hostinger-ai-testimonial-text elementor-widget elementor-widget-text-editor\" data-id=\"ef10b70\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\tKosmix machines boosted our batch consistency and cut production time significantly.\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c9ce16a e-con-full e-flex e-con e-child\" data-id=\"c9ce16a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6488d50 hostinger-ai-testimonial-image elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"6488d50\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/kosmixpro.com\/wp-content\/themes\/hostinger-ai-theme\/assets\/images\/testimonials\/man-2-400x450-c.jpg\" title=\"\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b865a43 e-con-full e-flex e-con e-child\" data-id=\"b865a43\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-72969e3 hostinger-ai-testimonial-name hostinger-index-0 elementor-widget elementor-widget-text-editor\" data-id=\"72969e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\tJohn Doe\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Haircare Perfume Skincare Haircare ItalyIndependent Haircare brand scaling from contract fill to in-house production. 500 L\/batch.Click HereHaircare GreeceNatural haircare OEM replacing a manual hot-fill process. 500L vessel, fill temperature 25\u00b0C.Click Here Perfume ProductionHigh-volume perfume factory, 18-SKU portfolio. 60 BPM high-speed filling, automatic screw capping and wrap-around labeling, GS1 barcode integration.Click Here Personal Care \u00b7 Americas70% &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/kosmixpro.com\/es\/case-studies\/\" class=\"more-link\">Leer m\u00e1s<span class=\"screen-reader-text\"> \u00abCase Studies\u00bb<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"inspiro_hide_title":false,"footnotes":""},"class_list":["post-25","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/kosmixpro.com\/es\/wp-json\/wp\/v2\/pages\/25","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kosmixpro.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kosmixpro.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kosmixpro.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kosmixpro.com\/es\/wp-json\/wp\/v2\/comments?post=25"}],"version-history":[{"count":24,"href":"https:\/\/kosmixpro.com\/es\/wp-json\/wp\/v2\/pages\/25\/revisions"}],"predecessor-version":[{"id":320,"href":"https:\/\/kosmixpro.com\/es\/wp-json\/wp\/v2\/pages\/25\/revisions\/320"}],"wp:attachment":[{"href":"https:\/\/kosmixpro.com\/es\/wp-json\/wp\/v2\/media?parent=25"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}