{"id":5137,"date":"2026-05-04T18:45:06","date_gmt":"2026-05-04T16:45:06","guid":{"rendered":"https:\/\/reschemindustries.com\/?page_id=5137"},"modified":"2026-09-15T10:57:37","modified_gmt":"2026-09-15T08:57:37","slug":"about-us","status":"publish","type":"page","link":"https:\/\/reschemindustries.com\/en\/about-us\/","title":{"rendered":"About us"},"content":{"rendered":"<div><strong>About us<\/strong><\/div>\n<h1>The <strong>story<\/strong> <br \/>of the Reschem Industries<\/h1>\n<div>From 1990 to today. Five specialised companies serving industry. The people, the values and the vision they share.<\/div>\n<ul>\n<li>\n<p>\n        <a href=\"#intro\">Discover the Group<\/a>\n    <\/p>\n<\/li>\n<li>\n<p>\n        <a href=\"https:\/\/reschemindustries.com\/en\/contact\/\">Contact us<\/a>\n    <\/p>\n<\/li>\n<\/ul>\n<h2>From 1990 to today: how Reschem Industries began<\/h2>\n<div>Reschem Industries was founded with one goal: <strong class=\"uk-text-primary\">bringing high quality chemical ingredients and solutions to Italian industry<\/strong>, backed by a service built on expertise and reliability.<\/div>\n<div>\n<p>The story of <strong>Reschem Industries<\/strong> is one of growth, evolution and specialisation. Today the Group brings together <strong>five companies<\/strong>, each with distinctive expertise and a shared vision, built over time through solid relationships and long-term goals.<\/p>\n<\/div>\n<div>\n<div class=\"timeline-vertical-line\"><\/div>\n<\/div>\n<ul>\n<li>\n<div>Reschem Italia <br \/>is founded<\/div>\n<p><strong>1990<\/strong><\/p>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>Shareholding <br \/>in Sikel Italia<\/div>\n<p><strong>1993<\/strong><\/p>\n<\/li>\n<li>\n<div>Acquisition of <br \/>Sikel Italia<\/div>\n<p><strong>1995<\/strong><\/p>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>New premises <br \/>in Parabiago<\/div>\n<p><strong>2002<\/strong><\/p>\n<\/li>\n<li>\n<div>Marco Garegnani becomes CEO and the second generation joins the management team<\/div>\n<p><strong>2008<\/strong><\/p>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>Qores SRL <br \/>is established<\/div>\n<p><strong>2016<\/strong><\/p>\n<\/li>\n<li>\n<div>Reschem &#038; Sikel <br \/>merge<\/div>\n<p><strong>2017<\/strong><\/p>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>Acquisition <br \/>of Docet Srl<\/div>\n<p><strong>2018<\/strong><\/p>\n<\/li>\n<li>\n<div>Acquisition of<br \/> Vicris Srl<\/div>\n<p><strong>2019<\/strong><\/p>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>Acquisition <br \/>of KPI Srl<\/div>\n<p><strong>2021<\/strong><\/p>\n<\/li>\n<li>\n<div>Acquisition of KChimica Srl<\/div>\n<p><strong>2023<\/strong><\/p>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>&nbsp;<\/div>\n<\/li>\n<li>\n<div>Reschem Industries <br \/>is founded<\/div>\n<p><strong>2025<\/strong><\/p>\n<\/li>\n<\/ul>\n<div>Our identity<\/div>\n<h2><strong>Private ownership<\/strong> <br class=\"uk-visible@m\" \/>on an industrial scale<\/h2>\n<ul>\n<li>\n<p>        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/background-card.jpg\" alt=\"\"><\/p>\n<div>Care for people<\/div>\n<\/li>\n<li>\n<p>        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/background-card.jpg\" alt=\"\"><\/p>\n<div>Long-term relationships<\/div>\n<\/li>\n<li>\n<p>        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/background-card.jpg\" alt=\"\"><\/p>\n<div>A strong sense of belonging<\/div>\n<\/li>\n<li>\n<p>        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/background-card.jpg\" alt=\"\"><\/p>\n<div>Full commitment, every day<\/div>\n<\/li>\n<li>\n<p>        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/background-card.jpg\" alt=\"\"><\/p>\n<div>Always looking ahead<\/div>\n<\/li>\n<\/ul>\n<div>\n<h3><strong>Vision<\/strong> and <strong>mission<\/strong> <br \/>of the Reschem Group<\/h3>\n<p><a href=\"https:\/\/reschemindustries.com\/en\/contact\/\">Contact us<\/a><\/p>\n<\/div>\n<div>\n<div id=\"wp-globe-wrapper\" >\n<div id=\"globe-canvas-container\"><\/div>\n<p>    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r134\/three.min.js\"><\/script><br \/>\n    <script>\n        (function() {\n            function inRange(val, min, max) { return val >= min ? val <= max : false; }\n\n            function isItaly(lat, lon) {\n                if (!inRange(lat, 36, 47.5)) return false;\n                if (!inRange(lon, 6.5, 18.5)) return false;\n                if (inRange(lat, 38.5, 41.5)) { if (inRange(lon, 8, 10)) return true; }\n                if (inRange(lat, 36, 38.5))   { if (inRange(lon, 12, 15.7)) return true; }\n                if (inRange(lat, 38.5, 40.5)) { if (inRange(lon, 15.5, 18.5)) return true; }\n                if (inRange(lat, 40.5, 43.5)) { if (inRange(lon, 13.5, 17.5)) return true; }\n                if (inRange(lat, 43.5, 44.5)) { if (inRange(lon, 10.5, 14.5)) return true; }\n                if (inRange(lat, 44.5, 47.5)) { if (inRange(lon, 6.5, 14)) return true; }\n                return false;\n            }\n\n            function initGlobe() {\n                if (typeof THREE === 'undefined') { setTimeout(initGlobe, 100); return; }\n\n                var COLOR_ACCENT = 0x29b6f6;\n                var COLOR_DOTS   = 0xd8d8d8;\n                var COLOR_NET    = 0x000000;\n\n                var ARC_POINTS    = 80;\n                var ARC_DURATION  = 900;\n                var ARC_PAUSE     = 150;\n                var ARC_HOLD      = 1800;\n                var FADE_DUR      = 500;\n                var DOT_SCALE_DUR = 300;\n\n                var MAP_URL = 'https:\/\/raw.githubusercontent.com\/mrdoob\/three.js\/master\/examples\/textures\/planets\/earth_atmos_2048.jpg';\n\n                var container = document.getElementById('globe-canvas-container');\n                if (!container) return;\n\n                var W = container.clientWidth, H = container.clientHeight;\n                var scene  = new THREE.Scene();\n                var camera = new THREE.PerspectiveCamera(45, W \/ H, 0.1, 1000);\n                camera.position.z = 17;\n\n                var renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n                renderer.setSize(W, H);\n                renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\n                container.appendChild(renderer.domElement);\n\n                var mainGroup = new THREE.Group();\n                scene.add(mainGroup);\n                mainGroup.rotation.y = 3.5;    \/\/ <<< Italia spostata a sinistra nel layout reale\n                mainGroup.rotation.x = 0.50;\n\n                function getCircleTexture() {\n                    var c = document.createElement('canvas');\n                    c.width = 32; c.height = 32;\n                    var ctx = c.getContext('2d');\n                    ctx.beginPath();\n                    ctx.arc(16, 16, 15, 0, 2 * Math.PI);\n                    ctx.fillStyle = 'rgb(255,255,255)';\n                    ctx.fill();\n                    var tex = new THREE.Texture(c);\n                    tex.needsUpdate = true;\n                    return tex;\n                }\n                var circleTex = getCircleTexture();\n\n                function easeOutBack(t) {\n                    var c1 = 1.70158;\n                    var c3 = c1 + 1;\n                    return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);\n                }\n\n                function latLonToVec3(lat, lon, r) {\n                    var phi   = (90 - lat) * (Math.PI \/ 180);\n                    var theta = (lon + 180) * (Math.PI \/ 180);\n                    return new THREE.Vector3(\n                        -(r * Math.sin(phi) * Math.cos(theta)),\n                        r * Math.cos(phi),\n                        r * Math.sin(phi) * Math.sin(theta)\n                    );\n                }\n\n                function buildArcPoints(startLat, startLon, endLat, endLon) {\n                    var R     = 5.05;\n                    var start = latLonToVec3(startLat, startLon, R);\n                    var end   = latLonToVec3(endLat, endLon, R);\n                    var mid   = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\n                    var dist  = start.distanceTo(end);\n                    mid.normalize().multiplyScalar(5 + dist * 0.45 + 0.5);\n                    var pts = [];\n                    for (var i = 0; i <= ARC_POINTS; i++) {\n                        var t = i \/ ARC_POINTS;\n                        pts.push(new THREE.Vector3(\n                            (1-t)*(1-t)*start.x + 2*(1-t)*t*mid.x + t*t*end.x,\n                            (1-t)*(1-t)*start.y + 2*(1-t)*t*mid.y + t*t*end.y,\n                            (1-t)*(1-t)*start.z + 2*(1-t)*t*mid.z + t*t*end.z\n                        ));\n                    }\n                    return pts;\n                }\n\n                var oLat = 41.9, oLon = 12.5;\n                var destinations = [\n                    [40.7, -74.0], [51.5, -0.12], [35.7, 139.7],\n                    [-23.5, -46.6], [1.3, 103.8], [25.2, 55.3],\n                    [19.4, -99.1], [-33.9, 18.4], [37.6, 55.8], [30.0, 31.2]\n                ];\n\n                var arcData   = [];\n                var arcLines  = [];\n                var dotMeshes = [];\n\n                var originDot = new THREE.Mesh(\n                    new THREE.SphereGeometry(0.09, 8, 8),\n                    new THREE.MeshBasicMaterial({ color: COLOR_ACCENT })\n                );\n                originDot.position.copy(latLonToVec3(oLat, oLon, 5.05));\n                mainGroup.add(originDot);\n\n                function buildArcLines() {\n                    arcLines.forEach(function(l) { mainGroup.remove(l); });\n                    dotMeshes.forEach(function(d) { mainGroup.remove(d); });\n                    arcLines  = [];\n                    dotMeshes = [];\n                    arcData   = [];\n\n                    destinations.forEach(function(d) {\n                        var pts = buildArcPoints(oLat, oLon, d[0], d[1]);\n                        var geo = new THREE.BufferGeometry().setFromPoints(pts);\n                        geo.setDrawRange(0, 0);\n                        var mat = new THREE.LineBasicMaterial({\n                            color: COLOR_ACCENT, transparent: true, opacity: 0.9, linewidth: 2\n                        });\n                        var line = new THREE.Line(geo, mat);\n                        mainGroup.add(line);\n                        arcLines.push(line);\n\n                        var dot = new THREE.Mesh(\n                            new THREE.SphereGeometry(0.09, 8, 8),\n                            new THREE.MeshBasicMaterial({ color: COLOR_ACCENT, transparent: true, opacity: 0 })\n                        );\n                        dot.position.copy(latLonToVec3(d[0], d[1], 5.05));\n                        dot.scale.set(0, 0, 0);\n                        mainGroup.add(dot);\n                        dotMeshes.push(dot);\n\n                        arcData.push({ pts: pts, geo: geo, drawn: 0, dotShown: false, dotStartTime: -1 });\n                    });\n                }\n\n                var animState = {\n                    phase: 'drawing',\n                    currentArc: 0,\n                    arcStartTime: 0,\n                    holdStartTime: 0,\n                    fadeStartTime: 0\n                };\n\n                function resetAnimation(now) {\n                    buildArcLines();\n                    animState.phase        = 'drawing';\n                    animState.currentArc   = 0;\n                    animState.arcStartTime = now;\n                }\n\n                function updateArcs(now) {\n                    var s = animState;\n\n                    arcData.forEach(function(ad, i) {\n                        if (ad.dotStartTime > 0) {\n                            var dp = (now - ad.dotStartTime) \/ DOT_SCALE_DUR;\n                            if (dp > 1) { dp = 1; }\n                            var sc = easeOutBack(dp);\n                            dotMeshes[i].scale.set(sc, sc, sc);\n                            dotMeshes[i].material.opacity = dp;\n                        }\n                    });<\/p>\n<p>                    if (s.phase === 'drawing') {\n                        var idx = s.currentArc;\n                        if (idx >= arcData.length) {\n                            s.phase = 'holding';\n                            s.holdStartTime = now;\n                            return;\n                        }\n                        var ad      = arcData[idx];\n                        var elapsed = now - s.arcStartTime;\n                        var prog    = elapsed \/ ARC_DURATION;\n                        if (prog > 1) { prog = 1; }<\/p>\n<p>                        var targetCount = Math.round(prog * (ARC_POINTS + 1));\n                        if (targetCount !== ad.drawn) {\n                            ad.drawn = targetCount;\n                            ad.geo.setDrawRange(0, targetCount);\n                        }<\/p>\n<p>                        if (prog >= 1) {\n                            if (!ad.dotShown) {\n                                ad.dotShown     = true;\n                                ad.dotStartTime = now;\n                            }\n                            if (elapsed >= ARC_DURATION + ARC_PAUSE) {\n                                s.currentArc++;\n                                s.arcStartTime = now;\n                            }\n                        }\n                    }<\/p>\n<p>                    if (s.phase === 'holding') {\n                        if (now - s.holdStartTime >= ARC_HOLD) {\n                            s.phase = 'fading';\n                            s.fadeStartTime = now;\n                        }\n                    }<\/p>\n<p>                    if (s.phase === 'fading') {\n                        var fp = (now - s.fadeStartTime) \/ FADE_DUR;\n                        if (fp > 1) { fp = 1; }\n                        var op = 1 - fp;\n                        arcLines.forEach(function(l) { l.material.opacity = op * 0.9; });\n                        dotMeshes.forEach(function(dm) { dm.material.opacity = op; });\n                        if (fp >= 1) { resetAnimation(now); }\n                    }\n                }<\/p>\n<p>                function createInnerGlobe(image) {\n                    var canvas = document.createElement('canvas');\n                    canvas.width  = image.width;\n                    canvas.height = image.height;\n                    var ctx = canvas.getContext('2d');\n                    ctx.drawImage(image, 0, 0);\n                    var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n                    var data    = imgData.data;<\/p>\n<p>                    var positions = [], colors = [];\n                    var colBase  = new THREE.Color(COLOR_DOTS);\n                    var colItaly = new THREE.Color(COLOR_ACCENT);<\/p>\n<p>                    for (var y = 0; y < canvas.height; y++) {\n                        for (var x = 0; x < canvas.width; x++) {\n                            var lat   = (1 - y \/ canvas.height) * 180 - 90;\n                            var lon   = (x \/ canvas.width) * 360 - 180;\n                            var italy = isItaly(lat, lon);\n                            if (!italy) {\n                                if (y % 4 !== 0) continue;\n                                if (x % 4 !== 0) continue;\n                            }\n                            var idx2 = (y * canvas.width + x) * 4;\n                            if (data[idx2] < 50) continue;\n                            var phi   = (90 - lat) * (Math.PI \/ 180);\n                            var theta = (lon + 180) * (Math.PI \/ 180);\n                            positions.push(\n                                -(5 * Math.sin(phi) * Math.cos(theta)),\n                                5 * Math.cos(phi),\n                                5 * Math.sin(phi) * Math.sin(theta)\n                            );\n                            var col = italy ? colItaly : colBase;\n                            colors.push(col.r, col.g, col.b);\n                        }\n                    }\n\n                    var geo = new THREE.BufferGeometry();\n                    geo.setAttribute('position', new THREE.Float32BufferAttribute(positions, 3));\n                    geo.setAttribute('color',    new THREE.Float32BufferAttribute(colors, 3));\n                    mainGroup.add(new THREE.Points(geo, new THREE.PointsMaterial({\n                        size: 0.028, vertexColors: true, map: circleTex,\n                        transparent: true, opacity: 1.0, sizeAttenuation: true\n                    })));\n\n                    buildArcLines();\n                    animState.arcStartTime = performance.now();\n                }\n\n                function createOuterNetwork() {\n                    var geo = new THREE.IcosahedronGeometry(6, 2);\n                    var wf  = new THREE.WireframeGeometry(geo);\n                    mainGroup.add(new THREE.LineSegments(wf, new THREE.LineBasicMaterial({\n                        color: COLOR_NET, transparent: true, opacity: 0.12\n                    })));\n                    var pos = geo.attributes.position.array;\n                    var dg  = new THREE.BufferGeometry();\n                    dg.setAttribute('position', new THREE.BufferAttribute(pos, 3));\n                    mainGroup.add(new THREE.Points(dg, new THREE.PointsMaterial({\n                        color: COLOR_NET, size: 0.05, map: circleTex,\n                        transparent: true, opacity: 0.35\n                    })));\n                }\n\n                var loader = new THREE.ImageLoader();\n                loader.setCrossOrigin('Anonymous');\n                loader.load(MAP_URL, function(img) {\n                    createInnerGlobe(img);\n                    createOuterNetwork();\n                });\n\n                var isDragging = false, prevX = 0, prevY = 0, velX = 0, velY = 0;\n                container.addEventListener('mousedown', function(e) {\n                    isDragging = true; prevX = e.clientX; prevY = e.clientY;\n                    velX = 0; velY = 0; container.style.cursor = 'grabbing';\n                });\n                window.addEventListener('mousemove', function(e) {\n                    if (!isDragging) return;\n                    var dx = e.clientX - prevX, dy = e.clientY - prevY;\n                    mainGroup.rotation.y += dx * 0.006;\n                    mainGroup.rotation.x += dy * 0.006;\n                    velY = dx * 0.006; velX = dy * 0.006;\n                    prevX = e.clientX; prevY = e.clientY;\n                });\n                window.addEventListener('mouseup', function() {\n                    isDragging = false; container.style.cursor = 'grab';\n                });\n                container.addEventListener('touchstart', function(e) {\n                    isDragging = true; prevX = e.touches[0].clientX; prevY = e.touches[0].clientY;\n                    velX = 0; velY = 0;\n                }, {passive: true});\n                window.addEventListener('touchmove', function(e) {\n                    if (!isDragging) return;\n                    var dx = e.touches[0].clientX - prevX, dy = e.touches[0].clientY - prevY;\n                    mainGroup.rotation.y += dx * 0.006;\n                    mainGroup.rotation.x += dy * 0.006;\n                    velY = dx * 0.006; velX = dy * 0.006;\n                    prevX = e.touches[0].clientX; prevY = e.touches[0].clientY;\n                }, {passive: true});\n                window.addEventListener('touchend', function() { isDragging = false; });\n\n                function animate() {\n                    requestAnimationFrame(animate);\n                    updateArcs(performance.now());\n                    if (!isDragging) {\n                        mainGroup.rotation.y += velY;\n                        mainGroup.rotation.x += velX;\n                        velY *= 0.94; velX *= 0.94;\n                        if (Math.abs(velY) < 0.0005) {\n                            if (Math.abs(velX) < 0.0005) {\n                                mainGroup.rotation.y += 0.0008;\n                            }\n                        }\n                    }\n                    renderer.render(scene, camera);\n                }\n                animate();\n\n                window.addEventListener('resize', function() {\n                    var w = container.clientWidth, h = container.clientHeight;\n                    camera.aspect = w \/ h; camera.updateProjectionMatrix();\n                    renderer.setSize(w, h);\n                });\n            }\n\n            if (document.readyState === 'complete') { initGlobe(); }\n            else { window.addEventListener('load', initGlobe); }\n        })();\n    <\/script>\n<\/div>\n<\/div>\n<div>\n<h3><strong>Vision<\/strong> and <strong>mission<\/strong> <br \/>of the Reschem Group<\/h3>\n<p><a href=\"https:\/\/reschemindustries.com\/en\/contact\/\">Contact us<\/a><\/p>\n<\/div>\n<div>\n<h3>Our vision<\/h3>\n<div>\n<p>Delivering practical solutions in an ever-changing world<\/p>\n<\/div>\n<\/div>\n<div>\n<h3>Our mission<\/h3>\n<div>\n<p>Every day we create added value for our partners by producing and distributing solutions for industry. We are a point of reference for application know-how, regulatory advice and efficient logistics.<\/p>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/reschem-industries-newsletter.svg\" alt=\"\"><\/p>\n<h1>Stay up to date with the Reschem Industries Group<\/h1>\n<div>Sign up to our newsletter for updates on Reschem Industries, the Group companies and the latest news from the speciality chemicals sector.<\/div>\n<div>\n<p>    <iframe\n    src=\"https:\/\/link.crmup.it\/widget\/form\/B8Rp2ahYKjEt2ymNgLIV\"\n    style=\"width:100%;height:100%;border:none;border-radius:8px\"\n    id=\"inline-B8Rp2ahYKjEt2ymNgLIV\" \n    data-layout=\"{'id':'INLINE'}\"\n    data-trigger-type=\"alwaysShow\"\n    data-trigger-value=\"\"\n    data-activation-type=\"alwaysActivated\"\n    data-activation-value=\"\"\n    data-deactivation-type=\"neverDeactivate\"\n    data-deactivation-value=\"\"\n    data-form-name=\"Reschem ind.\u00a0newsletter ita\"\n    data-height=\"432\"\n    data-layout-iframe-id=\"inline-B8Rp2ahYKjEt2ymNgLIV\"\n    data-form-id=\"B8Rp2ahYKjEt2ymNgLIV\"\n    data-cookie-consent=\"true\"\n    data-cookie-consent-provider=\"auto\"\n    title=\"Reschem ind.\u00a0newsletter ita\"\n    \n        ><br \/>\n<\/iframe><br \/>\n<script src=\"https:\/\/link.crmup.it\/js\/form_embed.js\"><\/script>\n<\/div>\n<p><!--more--><br \/>\n<!-- {\"type\":\"layout\",\"children\":[{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"animation_delay\":\"200\",\"header_transparent\":true,\"header_transparent_noplaceholder\":true,\"height\":\"viewport\",\"height_viewport_offset\":true,\"image\":\"wp-content\/uploads\/2026\/05\/reschem-industries-chi-siamo-1.jpg\",\"image_effect\":\"parallax\",\"image_parallax_bgy\":\"100\",\"image_position\":\"center-center\",\"image_size\":\"cover\",\"media_overlay_gradient\":\"linear-gradient(0deg,rgba(21, 31, 109, 0.8) 0%, rgba(0, 0, 0, 0) 100%);\",\"padding_bottom\":\"large\",\"padding_top\":\"large\",\"style\":\"primary\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"border\":false,\"image_position\":\"center-center\",\"image_size\":\"cover\",\"position_sticky_breakpoint\":\"m\",\"width_medium\":\"3-4\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"<strong>About us<\/strong>\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"margin_bottom\":\"xsmall\",\"title_color\":\"background\",\"title_element\":\"div\"}},{\"type\":\"headline\",\"props\":{\"content\":\"The <strong>story<\/strong> <br \/>of the Reschem Industries\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"margin_top\":\"default\",\"title_color\":\"primary\",\"title_element\":\"h1\",\"title_style\":\"heading-large\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"From 1990 to today. Five specialised companies serving industry. The people, the values and the vision they share.\",\"margin_bottom\":\"\",\"margin_top\":\"default\",\"maxwidth\":\"xlarge\",\"text_color\":\"secondary\"}},{\"type\":\"button\",\"props\":{\"grid_column_gap\":\"small\",\"grid_row_gap\":\"small\",\"margin_bottom\":\"default\",\"margin_top\":\"medium\"},\"children\":[{\"type\":\"button_item\",\"props\":{\"button_style\":\"primary\",\"content\":\"Discover the Group\",\"dialog_layout\":\"modal\",\"dialog_offcanvas_flip\":true,\"icon_align\":\"left\",\"link\":\"#intro\"}},{\"type\":\"button_item\",\"props\":{\"button_style\":\"default\",\"content\":\"Contact us\",\"dialog_layout\":\"modal\",\"dialog_offcanvas_flip\":true,\"icon_align\":\"left\",\"link\":\"\/en\/contact\"}}]}]},{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"vertical_align\":\"middle\",\"width_medium\":\"1-4\"}}],\"props\":{\"divider\":false,\"layout\":\"3-4,1-4\"}}],\"name\":\"Hero\"},{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"animation_delay\":\"200\",\"id\":\"intro\",\"image_position\":\"center-center\",\"padding_bottom\":\"small\",\"padding_top\":\"large\",\"sticky\":\"reveal\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"From 1990 to today: how Reschem Industries began\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"margin_top\":\"small\",\"text_align\":\"center\",\"text_align_breakpoint\":\"m\",\"text_align_fallback\":\"left\",\"title_element\":\"h2\",\"title_style\":\"text-meta\"}},{\"type\":\"headline\",\"props\":{\"content\":\"Reschem Industries was founded with one goal: <strong class=\\\"uk-text-primary\\\">bringing high quality chemical ingredients and solutions to Italian industry<\/strong>, backed by a service built on expertise and reliability.\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"margin_top\":\"remove\",\"text_align\":\"center\",\"text_align_breakpoint\":\"m\",\"text_align_fallback\":\"left\",\"title_color\":\"muted\",\"title_element\":\"div\",\"title_style\":\"h1\"}},{\"type\":\"text\",\"props\":{\"block_align\":\"center\",\"column_breakpoint\":\"m\",\"content\":\"\n\n<p>The story of <strong>Reschem Industries<\/strong> is one of growth, evolution and specialisation. Today the Group brings together <strong>five companies<\/strong>, each with distinctive expertise and a shared vision, built over time through solid relationships and long-term goals.<\/p>\n\n\",\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"maxwidth\":\"2xlarge\",\"maxwidth_breakpoint\":\"m\",\"text_align\":\"center\",\"text_align_breakpoint\":\"m\",\"text_align_fallback\":\"left\"}}]}]}],\"name\":\"History\"},{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"class\":\"timeline-vertical\",\"height\":\"viewport\",\"image_position\":\"center-center\",\"padding_bottom\":\"none\",\"padding_top\":\"none\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"props\":{\"class\":\"timeline-line-container\",\"height\":\"viewport\"},\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"html\",\"props\":{\"content\":\"\n\n<div class=\\\"timeline-vertical-line\\\"><\/div>\n\n\"}}]}]},{\"type\":\"row\",\"props\":{\"class\":\"timeline-dates uk-padding-large\"},\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"grid\",\"props\":{\"content_column_breakpoint\":\"m\",\"filter_align\":\"left\",\"filter_all\":true,\"filter_grid_breakpoint\":\"m\",\"filter_grid_width\":\"auto\",\"filter_position\":\"top\",\"filter_style\":\"tab\",\"grid_column_gap\":\"small\",\"grid_default\":\"1\",\"grid_large\":\"2\",\"grid_medium\":\"2\",\"grid_row_gap\":\"small\",\"grid_small\":\"1\",\"image_align\":\"top\",\"image_grid_breakpoint\":\"m\",\"image_grid_width\":\"1-2\",\"image_svg_color\":\"emphasis\",\"item_animation\":true,\"lightbox_bg_close\":true,\"link_style\":\"default\",\"link_text\":\"Read more\",\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"meta_align\":\"above-title\",\"meta_color\":\"primary\",\"meta_element\":\"div\",\"meta_style\":\"h2\",\"panel_padding\":\"default\",\"panel_style\":\"tile-default\",\"show_content\":true,\"show_hover_image\":true,\"show_hover_video\":true,\"show_image\":true,\"show_link\":true,\"show_meta\":true,\"show_title\":true,\"show_video\":true,\"title_align\":\"top\",\"title_color\":\"muted\",\"title_element\":\"div\",\"title_grid_breakpoint\":\"m\",\"title_grid_width\":\"1-2\",\"title_hover_style\":\"reset\",\"title_margin\":\"remove\",\"title_style\":\"h2\"},\"children\":[{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-text-right@m dot-right\",\"meta\":\"<strong>1990<\/strong>\",\"title\":\"Reschem Italia <br \/>is founded\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"dot-left\",\"meta\":\"<strong>1993<\/strong>\",\"title\":\"Shareholding <br \/>in Sikel Italia\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-text-right@m dot-right\",\"meta\":\"<strong>1995<\/strong>\",\"title\":\"Acquisition of <br \/>Sikel Italia\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"dot-left\",\"meta\":\"<strong>2002<\/strong>\",\"title\":\"New premises <br \/>in Parabiago\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-text-right@m dot-right\",\"meta\":\"<strong>2008<\/strong>\",\"title\":\"Marco Garegnani becomes CEO and the second generation joins the management team\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"dot-left\",\"meta\":\"<strong>2016<\/strong>\",\"title\":\"Qores SRL <br \/>is established\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-text-right@m dot-right\",\"meta\":\"<strong>2017<\/strong>\",\"title\":\"Reschem & Sikel <br \/>merge\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"dot-left\",\"meta\":\"<strong>2018<\/strong>\",\"title\":\"Acquisition <br \/>of Docet Srl\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-text-right@m dot-right\",\"meta\":\"<strong>2019<\/strong>\",\"title\":\"Acquisition of<br \/> Vicris Srl\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"dot-left\",\"meta\":\"<strong>2021<\/strong>\",\"title\":\"Acquisition <br \/>of KPI Srl\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-text-right@m dot-right\",\"meta\":\"<strong>2023<\/strong>\",\"title\":\"Acquisition of KChimica Srl\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"uk-visible@m\",\"meta\":\"\",\"title\":\"&nbsp;\"}},{\"type\":\"grid_item\",\"props\":{\"class\":\"dot-left\",\"meta\":\"<strong>2025<\/strong>\",\"title\":\"Reschem Industries <br \/>is founded\"}}]}]}]}],\"name\":\"timeline-vertical\"},{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"animation_delay\":\"200\",\"image_position\":\"center-center\",\"padding_bottom\":\"large\",\"padding_top\":\"xlarge\",\"style\":\"secondary\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"Our identity\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"text_align\":\"center\",\"title_element\":\"div\",\"title_style\":\"text-meta\"}},{\"type\":\"headline\",\"props\":{\"block_align\":\"center\",\"content\":\"<strong>Private ownership<\/strong> <br class=\\\"uk-visible@m\\\" \/>on an industrial scale\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"margin_bottom\":\"large\",\"margin_top\":\"default\",\"maxwidth\":\"2xlarge\",\"text_align\":\"center\",\"title_element\":\"h2\",\"title_style\":\"h1\"}},{\"type\":\"gallery\",\"props\":{\"animation\":\"parallax\",\"filter_align\":\"left\",\"filter_all\":true,\"filter_grid_breakpoint\":\"m\",\"filter_grid_width\":\"auto\",\"filter_position\":\"top\",\"filter_style\":\"tab\",\"grid_column_align\":true,\"grid_column_gap\":\"small\",\"grid_default\":\"1\",\"grid_divider\":false,\"grid_medium\":\"3\",\"grid_row_align\":false,\"grid_row_gap\":\"small\",\"grid_small\":\"2\",\"image_border\":\"rounded\",\"image_box_shadow\":\"large\",\"item_animation\":false,\"lightbox_bg_close\":true,\"link_style\":\"default\",\"link_text\":\"Read more\",\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"meta_align\":\"below-title\",\"meta_element\":\"div\",\"meta_style\":\"text-meta\",\"overlay_hover\":false,\"overlay_mode\":\"cover\",\"overlay_position\":\"top-left\",\"overlay_style\":\"\",\"overlay_transition\":\"fade\",\"show_content\":true,\"show_hover_image\":true,\"show_hover_video\":true,\"show_link\":true,\"show_meta\":true,\"show_title\":true,\"text_align\":\"left\",\"text_color\":\"light\",\"title_element\":\"div\",\"title_hover_style\":\"reset\",\"title_style\":\"h2\"},\"children\":[{\"type\":\"gallery_item\",\"props\":{\"image\":\"wp-content\/uploads\/2026\/05\/background-card.jpg\",\"title\":\"Care for people\"}},{\"type\":\"gallery_item\",\"props\":{\"image\":\"wp-content\/uploads\/2026\/05\/background-card.jpg\",\"title\":\"Long-term relationships\"}},{\"type\":\"gallery_item\",\"props\":{\"image\":\"wp-content\/uploads\/2026\/05\/background-card.jpg\",\"title\":\"A strong sense of belonging\"}},{\"type\":\"gallery_item\",\"props\":{\"image\":\"wp-content\/uploads\/2026\/05\/background-card.jpg\",\"title\":\"Full commitment, every day\"}},{\"type\":\"gallery_item\",\"props\":{\"image\":\"wp-content\/uploads\/2026\/05\/background-card.jpg\",\"title\":\"Always looking ahead\"}}]}]}]}],\"name\":\"Private company\"},{\"type\":\"section\",\"props\":{\"animation\":\"slide-bottom-medium\",\"animation_delay\":\"200\",\"height\":\"viewport\",\"height_viewport_offset\":false,\"image_effect\":\"fixed\",\"image_position\":\"top-left\",\"image_size\":\"cover\",\"media_overlay\":\"rgba(255, 255, 255, 0.7)\",\"padding_bottom\":\"large\",\"padding_top\":\"none\",\"style\":\"default\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"large\"},\"children\":[{\"type\":\"row\",\"props\":{\"class\":\"uk-hidden@m\"},\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\"},\"children\":[{\"type\":\"panel\",\"props\":{\"class\":\"uk-margin-large-top uk-padding-large uk-padding-remove-left uk-padding-remove-bottom uk-padding-remove-right\",\"content_column_breakpoint\":\"m\",\"image_align\":\"top\",\"image_grid_breakpoint\":\"m\",\"image_grid_width\":\"1-2\",\"image_svg_color\":\"emphasis\",\"link\":\"en\/contact\/\",\"link_margin\":\"medium\",\"link_style\":\"default\",\"link_text\":\"Contact us\",\"margin_bottom\":\"default\",\"margin_top\":\"\",\"meta_align\":\"below-title\",\"meta_element\":\"div\",\"meta_style\":\"text-meta\",\"title\":\"<strong>Vision<\/strong> and <strong>mission<\/strong> <br \/>of the Reschem Group\",\"title_align\":\"top\",\"title_color\":\"primary\",\"title_element\":\"h3\",\"title_grid_breakpoint\":\"m\",\"title_grid_width\":\"1-2\",\"title_hover_style\":\"reset\"},\"name\":\"Mobile panel\"}]}]},{\"type\":\"row\",\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky\":\"section\",\"position_sticky_breakpoint\":\"\",\"vertical_align\":\"middle\"},\"children\":[{\"type\":\"html\",\"props\":{\"animation\":\"parallax\",\"content\":\"\\n\n\n<div id=\\\"wp-globe-wrapper\\\" >\\n    \n\n<div id=\\\"globe-canvas-container\\\"><\/div>\n\n\\n    <script src=\\\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r134\/three.min.js\\\"><\/script>\\n    <script>\\n        (function() {\\n            function inRange(val, min, max) { return val >= min ? val <= max : false; }\\n\\n            function isItaly(lat, lon) {\\n                if (!inRange(lat, 36, 47.5)) return false;\\n                if (!inRange(lon, 6.5, 18.5)) return false;\\n                if (inRange(lat, 38.5, 41.5)) { if (inRange(lon, 8, 10)) return true; }\\n                if (inRange(lat, 36, 38.5))   { if (inRange(lon, 12, 15.7)) return true; }\\n                if (inRange(lat, 38.5, 40.5)) { if (inRange(lon, 15.5, 18.5)) return true; }\\n                if (inRange(lat, 40.5, 43.5)) { if (inRange(lon, 13.5, 17.5)) return true; }\\n                if (inRange(lat, 43.5, 44.5)) { if (inRange(lon, 10.5, 14.5)) return true; }\\n                if (inRange(lat, 44.5, 47.5)) { if (inRange(lon, 6.5, 14)) return true; }\\n                return false;\\n            }\\n\\n            function initGlobe() {\\n                if (typeof THREE === 'undefined') { setTimeout(initGlobe, 100); return; }\\n\\n                var COLOR_ACCENT = 0x29b6f6;\\n                var COLOR_DOTS   = 0xd8d8d8;\\n                var COLOR_NET    = 0x000000;\\n\\n                var ARC_POINTS    = 80;\\n                var ARC_DURATION  = 900;\\n                var ARC_PAUSE     = 150;\\n                var ARC_HOLD      = 1800;\\n                var FADE_DUR      = 500;\\n                var DOT_SCALE_DUR = 300;\\n\\n                var MAP_URL = 'https:\/\/raw.githubusercontent.com\/mrdoob\/three.js\/master\/examples\/textures\/planets\/earth_atmos_2048.jpg';\\n\\n                var container = document.getElementById('globe-canvas-container');\\n                if (!container) return;\\n\\n                var W = container.clientWidth, H = container.clientHeight;\\n                var scene  = new THREE.Scene();\\n                var camera = new THREE.PerspectiveCamera(45, W \/ H, 0.1, 1000);\\n                camera.position.z = 17;\\n\\n                var renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\\n                renderer.setSize(W, H);\\n                renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\\n                container.appendChild(renderer.domElement);\\n\\n                var mainGroup = new THREE.Group();\\n                scene.add(mainGroup);\\n                mainGroup.rotation.y = 3.5;    \/\/ <<< Italia spostata a sinistra nel layout reale\\n                mainGroup.rotation.x = 0.50;\\n\\n                function getCircleTexture() {\\n                    var c = document.createElement('canvas');\\n                    c.width = 32; c.height = 32;\\n                    var ctx = c.getContext('2d');\\n                    ctx.beginPath();\\n                    ctx.arc(16, 16, 15, 0, 2 * Math.PI);\\n                    ctx.fillStyle = 'rgb(255,255,255)';\\n                    ctx.fill();\\n                    var tex = new THREE.Texture(c);\\n                    tex.needsUpdate = true;\\n                    return tex;\\n                }\\n                var circleTex = getCircleTexture();\\n\\n                function easeOutBack(t) {\\n                    var c1 = 1.70158;\\n                    var c3 = c1 + 1;\\n                    return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);\\n                }\\n\\n                function latLonToVec3(lat, lon, r) {\\n                    var phi   = (90 - lat) * (Math.PI \/ 180);\\n                    var theta = (lon + 180) * (Math.PI \/ 180);\\n                    return new THREE.Vector3(\\n                        -(r * Math.sin(phi) * Math.cos(theta)),\\n                        r * Math.cos(phi),\\n                        r * Math.sin(phi) * Math.sin(theta)\\n                    );\\n                }\\n\\n                function buildArcPoints(startLat, startLon, endLat, endLon) {\\n                    var R     = 5.05;\\n                    var start = latLonToVec3(startLat, startLon, R);\\n                    var end   = latLonToVec3(endLat, endLon, R);\\n                    var mid   = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\\n                    var dist  = start.distanceTo(end);\\n                    mid.normalize().multiplyScalar(5 + dist * 0.45 + 0.5);\\n                    var pts = [];\\n                    for (var i = 0; i <= ARC_POINTS; i++) {\\n                        var t = i \/ ARC_POINTS;\\n                        pts.push(new THREE.Vector3(\\n                            (1-t)*(1-t)*start.x + 2*(1-t)*t*mid.x + t*t*end.x,\\n                            (1-t)*(1-t)*start.y + 2*(1-t)*t*mid.y + t*t*end.y,\\n                            (1-t)*(1-t)*start.z + 2*(1-t)*t*mid.z + t*t*end.z\\n                        ));\\n                    }\\n                    return pts;\\n                }\\n\\n                var oLat = 41.9, oLon = 12.5;\\n                var destinations = [\\n                    [40.7, -74.0], [51.5, -0.12], [35.7, 139.7],\\n                    [-23.5, -46.6], [1.3, 103.8], [25.2, 55.3],\\n                    [19.4, -99.1], [-33.9, 18.4], [37.6, 55.8], [30.0, 31.2]\\n                ];\\n\\n                var arcData   = [];\\n                var arcLines  = [];\\n                var dotMeshes = [];\\n\\n                var originDot = new THREE.Mesh(\\n                    new THREE.SphereGeometry(0.09, 8, 8),\\n                    new THREE.MeshBasicMaterial({ color: COLOR_ACCENT })\\n                );\\n                originDot.position.copy(latLonToVec3(oLat, oLon, 5.05));\\n                mainGroup.add(originDot);\\n\\n                function buildArcLines() {\\n                    arcLines.forEach(function(l) { mainGroup.remove(l); });\\n                    dotMeshes.forEach(function(d) { mainGroup.remove(d); });\\n                    arcLines  = [];\\n                    dotMeshes = [];\\n                    arcData   = [];\\n\\n                    destinations.forEach(function(d) {\\n                        var pts = buildArcPoints(oLat, oLon, d[0], d[1]);\\n                        var geo = new THREE.BufferGeometry().setFromPoints(pts);\\n                        geo.setDrawRange(0, 0);\\n                        var mat = new THREE.LineBasicMaterial({\\n                            color: COLOR_ACCENT, transparent: true, opacity: 0.9, linewidth: 2\\n                        });\\n                        var line = new THREE.Line(geo, mat);\\n                        mainGroup.add(line);\\n                        arcLines.push(line);\\n\\n                        var dot = new THREE.Mesh(\\n                            new THREE.SphereGeometry(0.09, 8, 8),\\n                            new THREE.MeshBasicMaterial({ color: COLOR_ACCENT, transparent: true, opacity: 0 })\\n                        );\\n                        dot.position.copy(latLonToVec3(d[0], d[1], 5.05));\\n                        dot.scale.set(0, 0, 0);\\n                        mainGroup.add(dot);\\n                        dotMeshes.push(dot);\\n\\n                        arcData.push({ pts: pts, geo: geo, drawn: 0, dotShown: false, dotStartTime: -1 });\\n                    });\\n                }\\n\\n                var animState = {\\n                    phase: 'drawing',\\n                    currentArc: 0,\\n                    arcStartTime: 0,\\n                    holdStartTime: 0,\\n                    fadeStartTime: 0\\n                };\\n\\n                function resetAnimation(now) {\\n                    buildArcLines();\\n                    animState.phase        = 'drawing';\\n                    animState.currentArc   = 0;\\n                    animState.arcStartTime = now;\\n                }\\n\\n                function updateArcs(now) {\\n                    var s = animState;\\n\\n                    arcData.forEach(function(ad, i) {\\n                        if (ad.dotStartTime > 0) {\\n                            var dp = (now - ad.dotStartTime) \/ DOT_SCALE_DUR;\\n                            if (dp > 1) { dp = 1; }\\n                            var sc = easeOutBack(dp);\\n                            dotMeshes[i].scale.set(sc, sc, sc);\\n                            dotMeshes[i].material.opacity = dp;\\n                        }\\n                    });\\n\\n                    if (s.phase === 'drawing') {\\n                        var idx = s.currentArc;\\n                        if (idx >= arcData.length) {\\n                            s.phase = 'holding';\\n                            s.holdStartTime = now;\\n                            return;\\n                        }\\n                        var ad      = arcData[idx];\\n                        var elapsed = now - s.arcStartTime;\\n                        var prog    = elapsed \/ ARC_DURATION;\\n                        if (prog > 1) { prog = 1; }\\n\\n                        var targetCount = Math.round(prog * (ARC_POINTS + 1));\\n                        if (targetCount !== ad.drawn) {\\n                            ad.drawn = targetCount;\\n                            ad.geo.setDrawRange(0, targetCount);\\n                        }\\n\\n                        if (prog >= 1) {\\n                            if (!ad.dotShown) {\\n                                ad.dotShown     = true;\\n                                ad.dotStartTime = now;\\n                            }\\n                            if (elapsed >= ARC_DURATION + ARC_PAUSE) {\\n                                s.currentArc++;\\n                                s.arcStartTime = now;\\n                            }\\n                        }\\n                    }\\n\\n                    if (s.phase === 'holding') {\\n                        if (now - s.holdStartTime >= ARC_HOLD) {\\n                            s.phase = 'fading';\\n                            s.fadeStartTime = now;\\n                        }\\n                    }\\n\\n                    if (s.phase === 'fading') {\\n                        var fp = (now - s.fadeStartTime) \/ FADE_DUR;\\n                        if (fp > 1) { fp = 1; }\\n                        var op = 1 - fp;\\n                        arcLines.forEach(function(l) { l.material.opacity = op * 0.9; });\\n                        dotMeshes.forEach(function(dm) { dm.material.opacity = op; });\\n                        if (fp >= 1) { resetAnimation(now); }\\n                    }\\n                }\\n\\n                function createInnerGlobe(image) {\\n                    var canvas = document.createElement('canvas');\\n                    canvas.width  = image.width;\\n                    canvas.height = image.height;\\n                    var ctx = canvas.getContext('2d');\\n                    ctx.drawImage(image, 0, 0);\\n                    var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\\n                    var data    = imgData.data;\\n\\n                    var positions = [], colors = [];\\n                    var colBase  = new THREE.Color(COLOR_DOTS);\\n                    var colItaly = new THREE.Color(COLOR_ACCENT);\\n\\n                    for (var y = 0; y < canvas.height; y++) {\\n                        for (var x = 0; x < canvas.width; x++) {\\n                            var lat   = (1 - y \/ canvas.height) * 180 - 90;\\n                            var lon   = (x \/ canvas.width) * 360 - 180;\\n                            var italy = isItaly(lat, lon);\\n                            if (!italy) {\\n                                if (y % 4 !== 0) continue;\\n                                if (x % 4 !== 0) continue;\\n                            }\\n                            var idx2 = (y * canvas.width + x) * 4;\\n                            if (data[idx2] < 50) continue;\\n                            var phi   = (90 - lat) * (Math.PI \/ 180);\\n                            var theta = (lon + 180) * (Math.PI \/ 180);\\n                            positions.push(\\n                                -(5 * Math.sin(phi) * Math.cos(theta)),\\n                                5 * Math.cos(phi),\\n                                5 * Math.sin(phi) * Math.sin(theta)\\n                            );\\n                            var col = italy ? colItaly : colBase;\\n                            colors.push(col.r, col.g, col.b);\\n                        }\\n                    }\\n\\n                    var geo = new THREE.BufferGeometry();\\n                    geo.setAttribute('position', new THREE.Float32BufferAttribute(positions, 3));\\n                    geo.setAttribute('color',    new THREE.Float32BufferAttribute(colors, 3));\\n                    mainGroup.add(new THREE.Points(geo, new THREE.PointsMaterial({\\n                        size: 0.028, vertexColors: true, map: circleTex,\\n                        transparent: true, opacity: 1.0, sizeAttenuation: true\\n                    })));\\n\\n                    buildArcLines();\\n                    animState.arcStartTime = performance.now();\\n                }\\n\\n                function createOuterNetwork() {\\n                    var geo = new THREE.IcosahedronGeometry(6, 2);\\n                    var wf  = new THREE.WireframeGeometry(geo);\\n                    mainGroup.add(new THREE.LineSegments(wf, new THREE.LineBasicMaterial({\\n                        color: COLOR_NET, transparent: true, opacity: 0.12\\n                    })));\\n                    var pos = geo.attributes.position.array;\\n                    var dg  = new THREE.BufferGeometry();\\n                    dg.setAttribute('position', new THREE.BufferAttribute(pos, 3));\\n                    mainGroup.add(new THREE.Points(dg, new THREE.PointsMaterial({\\n                        color: COLOR_NET, size: 0.05, map: circleTex,\\n                        transparent: true, opacity: 0.35\\n                    })));\\n                }\\n\\n                var loader = new THREE.ImageLoader();\\n                loader.setCrossOrigin('Anonymous');\\n                loader.load(MAP_URL, function(img) {\\n                    createInnerGlobe(img);\\n                    createOuterNetwork();\\n                });\\n\\n                var isDragging = false, prevX = 0, prevY = 0, velX = 0, velY = 0;\\n                container.addEventListener('mousedown', function(e) {\\n                    isDragging = true; prevX = e.clientX; prevY = e.clientY;\\n                    velX = 0; velY = 0; container.style.cursor = 'grabbing';\\n                });\\n                window.addEventListener('mousemove', function(e) {\\n                    if (!isDragging) return;\\n                    var dx = e.clientX - prevX, dy = e.clientY - prevY;\\n                    mainGroup.rotation.y += dx * 0.006;\\n                    mainGroup.rotation.x += dy * 0.006;\\n                    velY = dx * 0.006; velX = dy * 0.006;\\n                    prevX = e.clientX; prevY = e.clientY;\\n                });\\n                window.addEventListener('mouseup', function() {\\n                    isDragging = false; container.style.cursor = 'grab';\\n                });\\n                container.addEventListener('touchstart', function(e) {\\n                    isDragging = true; prevX = e.touches[0].clientX; prevY = e.touches[0].clientY;\\n                    velX = 0; velY = 0;\\n                }, {passive: true});\\n                window.addEventListener('touchmove', function(e) {\\n                    if (!isDragging) return;\\n                    var dx = e.touches[0].clientX - prevX, dy = e.touches[0].clientY - prevY;\\n                    mainGroup.rotation.y += dx * 0.006;\\n                    mainGroup.rotation.x += dy * 0.006;\\n                    velY = dx * 0.006; velX = dy * 0.006;\\n                    prevX = e.touches[0].clientX; prevY = e.touches[0].clientY;\\n                }, {passive: true});\\n                window.addEventListener('touchend', function() { isDragging = false; });\\n\\n                function animate() {\\n                    requestAnimationFrame(animate);\\n                    updateArcs(performance.now());\\n                    if (!isDragging) {\\n                        mainGroup.rotation.y += velY;\\n                        mainGroup.rotation.x += velX;\\n                        velY *= 0.94; velX *= 0.94;\\n                        if (Math.abs(velY) < 0.0005) {\\n                            if (Math.abs(velX) < 0.0005) {\\n                                mainGroup.rotation.y += 0.0008;\\n                            }\\n                        }\\n                    }\\n                    renderer.render(scene, camera);\\n                }\\n                animate();\\n\\n                window.addEventListener('resize', function() {\\n                    var w = container.clientWidth, h = container.clientHeight;\\n                    camera.aspect = w \/ h; camera.updateProjectionMatrix();\\n                    renderer.setSize(w, h);\\n                });\\n            }\\n\\n            if (document.readyState === 'complete') { initGlobe(); }\\n            else { window.addEventListener('load', initGlobe); }\\n        })();\\n    <\/script>\\n<\/div>\n\n\\n\",\"parallax_breakpoint\":\"m\",\"parallax_y\":\"200\",\"position\":\"relative\",\"position_z_index\":\"1\"}}]}]},{\"type\":\"row\",\"props\":{\"class\":\"z-100\",\"column_gap\":\"collapse\",\"layout\":\"2-5,3-5\"},\"children\":[{\"type\":\"column\",\"props\":{\"class\":\"uk-visible@m\",\"image_position\":\"center-center\",\"position_sticky\":\"row\",\"position_sticky_breakpoint\":\"m\",\"position_sticky_offset\":\"30vh\",\"vertical_align\":\"middle\",\"width_medium\":\"2-5\"},\"children\":[{\"type\":\"panel\",\"props\":{\"content_column_breakpoint\":\"m\",\"image_align\":\"top\",\"image_grid_breakpoint\":\"m\",\"image_grid_width\":\"1-2\",\"image_svg_color\":\"emphasis\",\"link\":\"en\/contact\/\",\"link_margin\":\"medium\",\"link_style\":\"default\",\"link_text\":\"Contact us\",\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"meta_align\":\"below-title\",\"meta_element\":\"div\",\"meta_style\":\"text-meta\",\"title\":\"<strong>Vision<\/strong> and <strong>mission<\/strong> <br \/>of the Reschem Group\",\"title_align\":\"top\",\"title_color\":\"primary\",\"title_element\":\"h3\",\"title_grid_breakpoint\":\"m\",\"title_grid_width\":\"1-2\",\"title_hover_style\":\"reset\"},\"name\":\"Desktop panel\"}]},{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"width_medium\":\"3-5\"},\"children\":[{\"type\":\"panel\",\"props\":{\"animation\":\"parallax\",\"class\":\"card-blur\",\"content\":\"\n\n<p>Delivering practical solutions in an ever-changing world<\/p>\n\n\",\"content_column_breakpoint\":\"m\",\"content_style\":\"h2\",\"image_align\":\"top\",\"image_grid_breakpoint\":\"m\",\"image_grid_width\":\"1-2\",\"image_svg_color\":\"emphasis\",\"link_style\":\"default\",\"link_text\":\"Read more\",\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"meta_align\":\"below-title\",\"meta_element\":\"div\",\"meta_style\":\"text-meta\",\"panel_padding\":\"default\",\"panel_style\":\"card-hover\",\"parallax_y\":\"-200\",\"position\":\"relative\",\"position_z_index\":\"1\",\"title\":\"Our vision\",\"title_align\":\"top\",\"title_color\":\"primary\",\"title_element\":\"h3\",\"title_grid_breakpoint\":\"m\",\"title_grid_width\":\"1-2\",\"title_hover_style\":\"reset\",\"title_style\":\"h3\"}},{\"type\":\"panel\",\"props\":{\"animation\":\"parallax\",\"class\":\"card-blur\",\"content\":\"\n\n<p>Every day we create added value for our partners by producing and distributing solutions for industry. We are a point of reference for application know-how, regulatory advice and efficient logistics.<\/p>\n\n\",\"content_column_breakpoint\":\"m\",\"content_style\":\"h2\",\"image_align\":\"top\",\"image_grid_breakpoint\":\"m\",\"image_grid_width\":\"1-2\",\"image_svg_color\":\"emphasis\",\"link_style\":\"default\",\"link_text\":\"Read more\",\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"meta_align\":\"below-title\",\"meta_element\":\"div\",\"meta_style\":\"text-meta\",\"panel_padding\":\"default\",\"panel_style\":\"card-hover\",\"parallax_y\":\"-100\",\"position\":\"relative\",\"position_z_index\":\"1\",\"title\":\"Our mission\",\"title_align\":\"top\",\"title_color\":\"primary\",\"title_element\":\"h3\",\"title_grid_breakpoint\":\"m\",\"title_grid_width\":\"1-2\",\"title_hover_style\":\"reset\",\"title_style\":\"h3\"}}]}]}],\"name\":\"Vision and mission [DESK]\"},{\"type\":\"section\",\"props\":{\"image\":\"wp-content\/uploads\/2026\/05\/background-newsletter.jpg\",\"image_effect\":\"parallax\",\"image_parallax_bgx\":\"-100\",\"image_parallax_bgy\":\"100\",\"image_position\":\"center-left\",\"image_size\":\"cover\",\"media_overlay\":\"rgba(21, 31, 109, 0.43)\",\"padding_bottom\":\"large\",\"padding_top\":\"large\",\"style\":\"primary\",\"title_breakpoint\":\"xl\",\"title_position\":\"top-left\",\"title_rotation\":\"left\",\"vertical_align\":\"middle\",\"width\":\"default\"},\"children\":[{\"type\":\"row\",\"props\":{\"divider\":false,\"layout\":\"1-3,2-3\",\"row_gap\":\"large\"},\"children\":[{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"vertical_align\":\"middle\",\"width_medium\":\"1-3\"},\"children\":[{\"type\":\"image\",\"props\":{\"class\":\"immagine-newsletter\",\"image\":\"wp-content\/uploads\/2026\/05\/reschem-industries-newsletter.svg\",\"image_svg_color\":\"emphasis\",\"image_width\":250,\"margin_bottom\":\"default\",\"margin_top\":\"default\",\"text_align\":\"left\",\"text_align_breakpoint\":\"s\",\"text_align_fallback\":\"center\"}}]},{\"type\":\"column\",\"props\":{\"image_position\":\"center-center\",\"position_sticky_breakpoint\":\"m\",\"vertical_align\":\"middle\",\"width_medium\":\"2-3\"},\"children\":[{\"type\":\"headline\",\"props\":{\"content\":\"Stay up to date with the Reschem Industries Group\",\"image_align\":\"left\",\"image_margin\":\"xsmall\",\"margin_top\":\"small\",\"title_element\":\"h1\",\"title_style\":\"h1\"}},{\"type\":\"text\",\"props\":{\"column_breakpoint\":\"m\",\"content\":\"Sign up to our newsletter for updates on Reschem Industries, the Group companies and the latest news from the speciality chemicals sector.\",\"margin_bottom\":\"medium\",\"margin_top\":\"medium\"}},{\"type\":\"html\",\"props\":{\"content\":\"<iframe\\n    src=\\\"https:\/\/link.crmup.it\/widget\/form\/B8Rp2ahYKjEt2ymNgLIV\\\"\\n    style=\\\"width:100%;height:100%;border:none;border-radius:8px\\\"\\n    id=\\\"inline-B8Rp2ahYKjEt2ymNgLIV\\\" \\n    data-layout=\\\"{'id':'INLINE'}\\\"\\n    data-trigger-type=\\\"alwaysShow\\\"\\n    data-trigger-value=\\\"\\\"\\n    data-activation-type=\\\"alwaysActivated\\\"\\n    data-activation-value=\\\"\\\"\\n    data-deactivation-type=\\\"neverDeactivate\\\"\\n    data-deactivation-value=\\\"\\\"\\n    data-form-name=\\\"Reschem ind.\u00a0newsletter ita\\\"\\n    data-height=\\\"432\\\"\\n    data-layout-iframe-id=\\\"inline-B8Rp2ahYKjEt2ymNgLIV\\\"\\n    data-form-id=\\\"B8Rp2ahYKjEt2ymNgLIV\\\"\\n    data-cookie-consent=\\\"true\\\"\\n    data-cookie-consent-provider=\\\"auto\\\"\\n    title=\\\"Reschem ind.\u00a0newsletter ita\\\"\\n    \\n        >\\n<\/iframe>\\n<script src=\\\"https:\/\/link.crmup.it\/js\/form_embed.js\\\"><\/script>\"}}]}]}],\"name\":\"[SECTION] Newsletter\"}],\"version\":\"5.0.32\"} --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>About us The story of the Reschem Industries From 1990 to today. Five specialised companies serving industry. The people, the values and the vision they share. Discover the Group Contact us From 1990 to today: how Reschem Industries began Reschem Industries was founded with one goal: bringing high quality chemical ingredients and solutions to Italian [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-5137","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/reschemindustries.com\/en\/wp-json\/wp\/v2\/pages\/5137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/reschemindustries.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/reschemindustries.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/reschemindustries.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/reschemindustries.com\/en\/wp-json\/wp\/v2\/comments?post=5137"}],"version-history":[{"count":5,"href":"https:\/\/reschemindustries.com\/en\/wp-json\/wp\/v2\/pages\/5137\/revisions"}],"predecessor-version":[{"id":5173,"href":"https:\/\/reschemindustries.com\/en\/wp-json\/wp\/v2\/pages\/5137\/revisions\/5173"}],"wp:attachment":[{"href":"https:\/\/reschemindustries.com\/en\/wp-json\/wp\/v2\/media?parent=5137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}