{"id":12160,"date":"2026-08-20T14:09:53","date_gmt":"2026-08-20T12:09:53","guid":{"rendered":"https:\/\/www.gimasi.com\/?page_id=12160"},"modified":"2026-08-20T14:15:01","modified_gmt":"2026-08-20T12:15:01","slug":"home-2-0","status":"publish","type":"page","link":"https:\/\/www.gimasi.com\/?page_id=12160","title":{"rendered":"Home.2.0"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12160\" class=\"elementor elementor-12160\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8df6b4c e-flex e-con-boxed e-con e-parent\" data-id=\"8df6b4c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-b5d9122 e-con-full e-flex e-con e-child\" data-id=\"b5d9122\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-30ec4e0 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"30ec4e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#WHAT\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">WHAT WE DO<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c1e1874 e-con-full e-flex e-con e-child\" data-id=\"c1e1874\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ec2ca78 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"ec2ca78\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#GIOT\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">GIoT<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-605b866 e-con-full e-flex e-con e-child\" data-id=\"605b866\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c64f4ee elementor-align-center elementor-widget elementor-widget-button\" data-id=\"c64f4ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#CASE\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">CASE STUDY<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-41b2947 e-con-full e-flex e-con e-child\" data-id=\"41b2947\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e4b000d elementor-align-center elementor-widget elementor-widget-button\" data-id=\"e4b000d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#WHO\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">WHO WE ARE<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9376205 e-con-full e-flex e-con e-parent\" data-id=\"9376205\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f381b1c elementor-widget elementor-widget-html\" data-id=\"f381b1c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"it\">\r\n<head>\r\n<meta charset=\"utf-8\" \/>\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\r\n<title>Gimasi \u2014 Hero<\/title>\r\n\r\n<style>\r\n  :root {\r\n    --void: #060b16;\r\n    --void-2: #0f2138;\r\n    --wire: #23405f;\r\n    --glow: #7fd8ff;\r\n    --glow-strong: #bdeeff;\r\n    --glow-dim: rgba(127, 216, 255, 0.45);\r\n\r\n    --mono: ui-monospace, \"SF Mono\", \"Roboto Mono\", \"Cascadia Code\", Consolas, monospace;\r\n    --sans: Arial, Helvetica, sans-serif;\r\n  }\r\n\r\n  * { box-sizing: border-box; }\r\n  body { margin: 0; font-family: var(--sans); background: #030509; }\r\n\r\n  .hero {\r\n    position: relative;\r\n    min-height: 80vh;\r\n    background: radial-gradient(130% 95% at 50% -10%, var(--void-2) 0%, var(--void) 55%, #020306 100%);\r\n    overflow: hidden;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n  }\r\n\r\n  \/* macchie di luce soffuse, per un ambiente pi\u00f9 luminoso e \"vivo\" *\/\r\n  .hero-aurora {\r\n    position: absolute;\r\n    inset: 0;\r\n    pointer-events: none;\r\n    mix-blend-mode: screen;\r\n    filter: blur(60px);\r\n  }\r\n  .hero-aurora span {\r\n    position: absolute;\r\n    border-radius: 50%;\r\n    opacity: 0.55;\r\n    animation: drift 14s ease-in-out infinite;\r\n  }\r\n  .hero-aurora span:nth-child(1) {\r\n    width: 520px; height: 520px;\r\n    left: 8%; top: 10%;\r\n    background: radial-gradient(circle, rgba(127,216,255,0.55), transparent 70%);\r\n    animation-delay: 0s;\r\n  }\r\n  .hero-aurora span:nth-child(2) {\r\n    width: 460px; height: 460px;\r\n    right: 6%; top: 30%;\r\n    background: radial-gradient(circle, rgba(180,140,255,0.4), transparent 70%);\r\n    animation-delay: -5s;\r\n  }\r\n  .hero-aurora span:nth-child(3) {\r\n    width: 420px; height: 420px;\r\n    left: 38%; bottom: 4%;\r\n    background: radial-gradient(circle, rgba(127,216,255,0.35), transparent 70%);\r\n    animation-delay: -9s;\r\n  }\r\n  @keyframes drift {\r\n    0%, 100% { transform: translate(0, 0) scale(1); }\r\n    50% { transform: translate(30px, -25px) scale(1.08); }\r\n  }\r\n\r\n  .hero-canvas {\r\n    position: absolute;\r\n    inset: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    display: block;\r\n  }\r\n\r\n  .hero-grid {\r\n    position: absolute;\r\n    inset: 0;\r\n    pointer-events: none;\r\n    background-image:\r\n      linear-gradient(var(--wire) 1px, transparent 1px),\r\n      linear-gradient(90deg, var(--wire) 1px, transparent 1px);\r\n    background-size: 42px 42px;\r\n    opacity: 0.5;\r\n    -webkit-mask-image: radial-gradient(360px 360px at var(--mx, 50%) var(--my, 50%), #000 0%, transparent 75%);\r\n    mask-image: radial-gradient(360px 360px at var(--mx, 50%) var(--my, 50%), #000 0%, transparent 75%);\r\n  }\r\n\r\n  .hero-orbits {\r\n    position: absolute;\r\n    top: 50%; left: 50%;\r\n    width: 900px; height: 900px;\r\n    transform: translate(-50%, -50%);\r\n    pointer-events: none;\r\n    opacity: 0.55;\r\n  }\r\n  .hero-orbits svg { width: 100%; height: 100%; }\r\n  .orbit-ring {\r\n    fill: none;\r\n    stroke: var(--wire);\r\n    stroke-width: 1;\r\n  }\r\n  .orbit-spin-slow { animation: spin 90s linear infinite; transform-origin: 50% 50%; }\r\n  .orbit-spin-rev  { animation: spin 130s linear infinite reverse; transform-origin: 50% 50%; }\r\n  @keyframes spin { to { transform: rotate(360deg); } }\r\n\r\n  .hero-content {\r\n    position: relative;\r\n    z-index: 2;\r\n    max-width: 780px;\r\n    padding: 40px 28px;\r\n    text-align: center;\r\n  }\r\n\r\n  .hero-eyebrow {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    font-family: var(--mono);\r\n    font-size: 12px;\r\n    letter-spacing: 2px;\r\n    text-transform: uppercase;\r\n    color: var(--glow-strong);\r\n    background: rgba(127, 216, 255, 0.12);\r\n    border: 1px solid rgba(127, 216, 255, 0.4);\r\n    padding: 7px 14px;\r\n    border-radius: 999px;\r\n    margin-bottom: 26px;\r\n    box-shadow: 0 0 24px rgba(127, 216, 255, 0.15);\r\n  }\r\n  .hero-eyebrow::before {\r\n    content: \"\";\r\n    width: 6px; height: 6px;\r\n    border-radius: 50%;\r\n    background: var(--glow-strong);\r\n    box-shadow: 0 0 10px 3px var(--glow-dim);\r\n    animation: pulse 2s ease-in-out infinite;\r\n  }\r\n  @keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }\r\n\r\n  .hero-content h1 {\r\n    margin: 0 0 22px;\r\n    font-size: clamp(34px, 5.4vw, 62px);\r\n    line-height: 1.08;\r\n    letter-spacing: -0.5px;\r\n    color: #f7fbff;\r\n  }\r\n  .hero-content h1 span {\r\n    background: linear-gradient(90deg, var(--glow) 0%, #e4faff 45%, var(--glow) 100%);\r\n    -webkit-background-clip: text;\r\n    background-clip: text;\r\n    color: transparent;\r\n    text-shadow: 0 0 40px rgba(127, 216, 255, 0.35);\r\n  }\r\n\r\n  .hero-content h3 {\r\n    margin: 0 auto 36px;\r\n    max-width: 940px;\r\n    font-size: 22px;\r\n    line-height: 1.65;\r\n    color: #b9c6d8;\r\n  }\r\n\r\n  .hero-actions {\r\n    display: flex;\r\n    justify-content: center;\r\n    gap: 14px;\r\n    flex-wrap: wrap;\r\n  }\r\n\r\n  .btn {\r\n    font-family: Adlam Display;\r\n    font-size: 16.5px;\r\n    font-weight: 600;\r\n    padding: 13px 24px;\r\n    border-radius: 8px;\r\n    text-decoration: none;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, border-color 0.2s ease;\r\n  }\r\n  .btn-primary {\r\n    background: transparent;\r\n    text-decoration: none!important;\r\n    color: #00C6BC;\r\n    border:1px solid rgba(255,255,255,0.22);\r\n    box-shadow: 0 0 26px rgba(127, 216, 255, 0.5);\r\n  }\r\n  .btn-primary:hover {\r\n    transform: translateY(-2px);\r\n    box-shadow: 0 12px 34px rgba(127, 216, 255, 0.6);\r\n  }\r\n  .btn-ghost {\r\n    background: transparent;\r\n    text-decoration: none!important;\r\n    color: #00C6BC;\r\n    border: 1px solid rgba(255,255,255,0.22);\r\n  }\r\n  .btn-ghost:hover {\r\n    border-color: var(--glow-strong);\r\n    color: var(--glow-strong);\r\n    transform: translateY(-2px);\r\n  }\r\n\r\n  .hero-scroll-cue {\r\n    position: absolute;\r\n    bottom: 28px;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    z-index: 2;\r\n    font-family: var(--mono);\r\n    font-size: 11px;\r\n    letter-spacing: 1.5px;\r\n    text-transform: uppercase;\r\n    color: #7a8ca3;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    gap: 8px;\r\n  }\r\n  .hero-scroll-cue span {\r\n    width: 1px; height: 26px;\r\n    background: linear-gradient(var(--glow), transparent);\r\n    animation: cue 1.8s ease-in-out infinite;\r\n  }\r\n  @keyframes cue { 0% { opacity: 0; transform: scaleY(0); } 40% { opacity: 1; transform: scaleY(1); } 100% { opacity: 0; transform: scaleY(1) translateY(6px); } }\r\n\r\n  @media (max-width: 640px) {\r\n    .hero-orbits { width: 560px; height: 560px; }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .orbit-spin-slow, .orbit-spin-rev, .hero-eyebrow::before, .hero-scroll-cue span, .hero-aurora span { animation: none !important; }\r\n  }\r\n<\/style>\r\n<\/head>\r\n\r\n<body>\r\n\r\n<section class=\"hero\" id=\"hero\">\r\n\r\n  <div class=\"hero-aurora\" aria-hidden=\"true\"><span><\/span><span><\/span><span><\/span><\/div>\r\n\r\n  <canvas class=\"hero-canvas\" id=\"heroCanvas\"><\/canvas>\r\n  <div class=\"hero-grid\" id=\"heroGrid\"><\/div>\r\n\r\n  <div class=\"hero-orbits\" aria-hidden=\"true\">\r\n    <svg viewBox=\"0 0 900 900\">\r\n      <ellipse class=\"orbit-ring orbit-spin-slow\" cx=\"450\" cy=\"450\" rx=\"420\" ry=\"180\"><\/ellipse>\r\n      <ellipse class=\"orbit-ring orbit-spin-rev\" cx=\"450\" cy=\"450\" rx=\"300\" ry=\"300\"><\/ellipse>\r\n      <ellipse class=\"orbit-ring orbit-spin-slow\" cx=\"450\" cy=\"450\" rx=\"180\" ry=\"420\"><\/ellipse>\r\n    <\/svg>\r\n  <\/div>\r\n\r\n  <div class=\"hero-content\">\r\n    <span class=\"hero-eyebrow\">     Gimasi \u00b7 IoT \u00b7 2012<\/span>\r\n    <h1>Shaping the <span>IoT<\/span> that connects the real world.<\/h1>\r\n    <h3>\r\n      Electonics, firmware, Cloud and industrial production: we engineer every layer of the IoT stack as one connected ecosystem, from the first schematic to the certified product.\r\n    <\/h3>\r\n    <div class=\"hero-actions\">\r\n      <a class=\"btn btn-primary\" href=\"https:\/\/www.gimasi.com\/?page_id=5852\">Explore the IoT stack<\/a>\r\n      <a class=\"btn btn-ghost\" href=\"https:\/\/www.gimasi.com\/?page_id=1712\">Talk to our team<\/a>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"hero-scroll-cue\"><span><\/span>scroll<\/div>\r\n\r\n<\/section>\r\n\r\n<script>\r\n(function () {\r\n  const canvas = document.getElementById('heroCanvas');\r\n  const grid = document.getElementById('heroGrid');\r\n  const hero = document.getElementById('hero');\r\n  const ctx = canvas.getContext('2d');\r\n\r\n  let w, h, dpr;\r\n  let particles = [];\r\n  const COUNT = 80;\r\n  const LINK_DIST = 140;\r\n  const MOUSE_RADIUS = 170;\r\n\r\n  const mouse = { x: -9999, y: -9999, active: false };\r\n\r\n  function resize() {\r\n    dpr = Math.min(window.devicePixelRatio || 1, 2);\r\n    w = hero.clientWidth;\r\n    h = hero.clientHeight;\r\n    canvas.width = w * dpr;\r\n    canvas.height = h * dpr;\r\n    canvas.style.width = w + 'px';\r\n    canvas.style.height = h + 'px';\r\n    ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n  }\r\n\r\n  function makeParticles() {\r\n    particles = [];\r\n    for (let i = 0; i < COUNT; i++) {\r\n      particles.push({\r\n        x: Math.random() * w,\r\n        y: Math.random() * h,\r\n        vx: (Math.random() - 0.5) * 0.35,\r\n        vy: (Math.random() - 0.5) * 0.35,\r\n        r: 1.3 + Math.random() * 1.4\r\n      });\r\n    }\r\n  }\r\n\r\n  function step() {\r\n    ctx.clearRect(0, 0, w, h);\r\n\r\n    for (const p of particles) {\r\n      p.x += p.vx;\r\n      p.y += p.vy;\r\n\r\n      if (p.x < 0 || p.x > w) p.vx *= -1;\r\n      if (p.y < 0 || p.y > h) p.vy *= -1;\r\n\r\n      if (mouse.active) {\r\n        const dx = p.x - mouse.x;\r\n        const dy = p.y - mouse.y;\r\n        const dist = Math.hypot(dx, dy);\r\n        if (dist < MOUSE_RADIUS && dist > 0.01) {\r\n          const force = (MOUSE_RADIUS - dist) \/ MOUSE_RADIUS;\r\n          p.x += (dx \/ dist) * force * 1.7;\r\n          p.y += (dy \/ dist) * force * 1.7;\r\n        }\r\n      }\r\n    }\r\n\r\n    \/\/ linee tra particelle vicine \u2014 pi\u00f9 luminose\r\n    for (let i = 0; i < particles.length; i++) {\r\n      for (let j = i + 1; j < particles.length; j++) {\r\n        const a = particles[i], b = particles[j];\r\n        const dist = Math.hypot(a.x - b.x, a.y - b.y);\r\n        if (dist < LINK_DIST) {\r\n          ctx.strokeStyle = `rgba(150, 226, 255, ${0.28 * (1 - dist \/ LINK_DIST)})`;\r\n          ctx.lineWidth = 1;\r\n          ctx.beginPath();\r\n          ctx.moveTo(a.x, a.y);\r\n          ctx.lineTo(b.x, b.y);\r\n          ctx.stroke();\r\n        }\r\n      }\r\n\r\n      if (mouse.active) {\r\n        const dist = Math.hypot(particles[i].x - mouse.x, particles[i].y - mouse.y);\r\n        if (dist < MOUSE_RADIUS) {\r\n          ctx.strokeStyle = `rgba(190, 238, 255, ${0.6 * (1 - dist \/ MOUSE_RADIUS)})`;\r\n          ctx.lineWidth = 1.1;\r\n          ctx.beginPath();\r\n          ctx.moveTo(particles[i].x, particles[i].y);\r\n          ctx.lineTo(mouse.x, mouse.y);\r\n          ctx.stroke();\r\n        }\r\n      }\r\n    }\r\n\r\n    \/\/ punti luminosi con leggero bagliore\r\n    ctx.shadowBlur = 6;\r\n    ctx.shadowColor = 'rgba(150, 226, 255, 0.9)';\r\n    ctx.fillStyle = 'rgba(220, 245, 255, 0.95)';\r\n    for (const p of particles) {\r\n      ctx.beginPath();\r\n      ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);\r\n      ctx.fill();\r\n    }\r\n    ctx.shadowBlur = 0;\r\n\r\n    requestAnimationFrame(step);\r\n  }\r\n\r\n  hero.addEventListener('mousemove', (e) => {\r\n    const rect = hero.getBoundingClientRect();\r\n    mouse.x = e.clientX - rect.left;\r\n    mouse.y = e.clientY - rect.top;\r\n    mouse.active = true;\r\n    grid.style.setProperty('--mx', mouse.x + 'px');\r\n    grid.style.setProperty('--my', mouse.y + 'px');\r\n  });\r\n  hero.addEventListener('mouseleave', () => { mouse.active = false; });\r\n\r\n  window.addEventListener('resize', resize);\r\n\r\n  resize();\r\n  makeParticles();\r\n\r\n  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n  if (!prefersReducedMotion) {\r\n    requestAnimationFrame(step);\r\n  } else {\r\n    step();\r\n  }\r\n})();\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ef70d91 e-con-full e-flex e-con e-parent\" data-id=\"ef70d91\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8cb02fd elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"8cb02fd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d207b75 e-flex e-con-boxed e-con e-parent\" data-id=\"d207b75\" 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-f0e763a e-con-full e-flex e-con e-child\" data-id=\"f0e763a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2ea87f1 elementor-widget elementor-widget-heading\" data-id=\"2ea87f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">WHAT WE DO<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-329b861 elementor-widget-mobile__width-initial elementor-widget elementor-widget-heading\" data-id=\"329b861\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">One team.\nThe full IoT stack<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-98d47f4 elementor-widget-mobile__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"98d47f4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>From the first schematic to post-sale firmware updates, one team handles every step. No external handoffs, no integration gaps.<br \/>As a result, development remains faster, communication stays direct, and every stage follows the same engineering standards.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3e154ed elementor-widget elementor-widget-menu-anchor\" data-id=\"3e154ed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"WHAT\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d4c4bf7 e-con-full e-flex e-con e-child\" data-id=\"d4c4bf7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9044695 elementor-widget elementor-widget-video\" data-id=\"9044695\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;mute&quot;:&quot;yes&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/v3.mp4\" autoplay=\"\" controls=\"\" muted=\"muted\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f6865c7 e-con-full e-flex e-con e-parent\" data-id=\"f6865c7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9d1592c elementor-widget elementor-widget-html\" data-id=\"9d1592c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"en\">\r\n\r\n<head>\r\n\r\n  <meta charset=\"utf-8\">\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n\r\n  <title>Gimasi Production Timeline<\/title>\r\n\r\n  <style>\r\n\r\n    :root {\r\n      --ink: #162235;\r\n      --muted: #657386;\r\n\r\n      --line: #c7d1dc;\r\n\r\n      --surface: #ffffff;\r\n      --surface-soft: #f7f9fc;\r\n\r\n      --accent: #2f6f9f;\r\n      --accent-soft: #dcecf7;\r\n\r\n      --card-width: 258px;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       RESET\r\n    ================================= *\/\r\n\r\n    * {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    body {\r\n      margin: 0;\r\n      background: #ffffff;\r\n\r\n      font-family:\r\n        Arial,\r\n        Helvetica,\r\n        sans-serif;\r\n\r\n      color: var(--ink);\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       MAIN SECTION\r\n    ================================= *\/\r\n\r\n    .timeline-wrap {\r\n\r\n      position: relative;\r\n\r\n      width: min(2000px, 80vw);\r\n\r\n      margin: 0 auto;\r\n\r\n      padding:\r\n        90px\r\n        40px\r\n        110px;\r\n\r\n      overflow: hidden;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       BACKGROUND DOTS\r\n    ================================= *\/\r\n\r\n    .timeline-wrap::before {\r\n\r\n      content: \"\";\r\n\r\n      position: absolute;\r\n\r\n      inset: 0;\r\n\r\n      background-image:\r\n        radial-gradient(\r\n          var(--line) 1px,\r\n          transparent 1px\r\n        );\r\n\r\n      background-size: 26px 26px;\r\n\r\n      opacity: 0.3;\r\n\r\n      mask-image:\r\n        radial-gradient(\r\n          ellipse at center,\r\n          #000 55%,\r\n          transparent 92%\r\n        );\r\n\r\n      pointer-events: none;\r\n\r\n      z-index: 0;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       MAP\r\n    ================================= *\/\r\n\r\n    .map {\r\n\r\n      position: relative;\r\n\r\n      z-index: 1;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       ARROWS \/ CONNECTING LINES\r\n    ================================= *\/\r\n\r\n    .map-arrows {\r\n\r\n      position: absolute;\r\n\r\n      inset: 0;\r\n\r\n      width: 100%;\r\n      height: 100%;\r\n\r\n      overflow: visible;\r\n\r\n      pointer-events: none;\r\n\r\n      z-index: 0;\r\n    }\r\n\r\n\r\n    \/*\r\n      IMPORTANT:\r\n      No arrowheads.\r\n      Just clean curved lines.\r\n    *\/\r\n\r\n    .map-arrows path {\r\n\r\n      fill: none;\r\n\r\n      stroke: var(--line);\r\n\r\n      stroke-width: 2;\r\n\r\n      stroke-linecap: round;\r\n\r\n      stroke-linejoin: round;\r\n\r\n      opacity: 0.9;\r\n\r\n      transition:\r\n        stroke 0.3s ease,\r\n        opacity 0.3s ease;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       ROW\r\n    ================================= *\/\r\n\r\n    .map-row {\r\n\r\n      position: relative;\r\n\r\n      z-index: 1;\r\n\r\n      display: flex;\r\n\r\n      align-items: flex-start;\r\n\r\n      justify-content: space-between;\r\n\r\n      gap: 20px;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       NODE\r\n    ================================= *\/\r\n\r\n    .map-node {\r\n\r\n      position: relative;\r\n\r\n      width: var(--card-width);\r\n\r\n      flex:\r\n        0 0\r\n        var(--card-width);\r\n\r\n      opacity: 0;\r\n\r\n      transform:\r\n        translateY(14px)\r\n        scale(0.94);\r\n\r\n      transition:\r\n        opacity 0.6s ease,\r\n        transform 0.6s ease;\r\n    }\r\n\r\n\r\n    \/* entrance animation *\/\r\n\r\n    .map-row.in-view .map-node {\r\n\r\n      opacity: 1;\r\n\r\n      transform:\r\n        translateY(0)\r\n        scale(1);\r\n    }\r\n\r\n\r\n    .map-row.in-view .map-node.n1 {\r\n      transition-delay: 0s;\r\n    }\r\n\r\n    .map-row.in-view .map-node.n2 {\r\n      transition-delay: 0.25s;\r\n    }\r\n\r\n    .map-row.in-view .map-node.n3 {\r\n      transition-delay: 0.5s;\r\n    }\r\n\r\n    .map-row.in-view .map-node.n4 {\r\n      transition-delay: 0.75s;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       WAVY POSITION\r\n    ================================= *\/\r\n\r\n    .map-node.n1 {\r\n      margin-top: 0;\r\n    }\r\n\r\n    .map-node.n2 {\r\n      margin-top: 150px;\r\n    }\r\n\r\n    .map-node.n3 {\r\n      margin-top: 26px;\r\n    }\r\n\r\n    .map-node.n4 {\r\n      margin-top: 176px;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       NUMBER BADGE\r\n    ================================= *\/\r\n\r\n    .node-badge {\r\n\r\n      position: absolute;\r\n\r\n      top: -16px;\r\n\r\n      left: 18px;\r\n\r\n      width: 34px;\r\n      height: 34px;\r\n\r\n      border-radius: 50%;\r\n\r\n      background: var(--accent);\r\n\r\n      color: #ffffff;\r\n\r\n      font-size: 14px;\r\n\r\n      font-weight: 700;\r\n\r\n      display: flex;\r\n\r\n      align-items: center;\r\n\r\n      justify-content: center;\r\n\r\n      box-shadow:\r\n        0 6px 14px\r\n        rgba(47,111,159,0.35),\r\n\r\n        0 0 0 4px #ffffff;\r\n\r\n      z-index: 2;\r\n\r\n      transition:\r\n        transform 0.25s ease,\r\n        box-shadow 0.25s ease;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       CARD\r\n    ================================= *\/\r\n\r\n    .card {\r\n\r\n      position: relative;\r\n\r\n      padding:\r\n        22px\r\n        18px\r\n        18px;\r\n\r\n      border:\r\n        1px solid\r\n        #e1e7ee;\r\n\r\n      border-radius: 16px;\r\n\r\n      background: var(--surface);\r\n\r\n      box-shadow:\r\n        0 10px 24px\r\n        rgba(22,34,53,0.08);\r\n\r\n      transition:\r\n        transform 0.28s ease,\r\n        box-shadow 0.28s ease,\r\n        border-color 0.28s ease;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       DESKTOP HOVER\r\n    ================================= *\/\r\n\r\n    @media (hover: hover) and (pointer: fine) {\r\n\r\n      .map-node:hover .card {\r\n\r\n        transform:\r\n          translateY(-5px)\r\n          scale(1.025);\r\n\r\n        box-shadow:\r\n          0 18px 32px\r\n          rgba(22,34,53,0.14);\r\n\r\n        border-color:\r\n          rgba(47,111,159,0.35);\r\n      }\r\n\r\n\r\n      .map-node:hover .node-badge {\r\n\r\n        transform: scale(1.08);\r\n\r\n        box-shadow:\r\n          0 8px 18px\r\n          rgba(47,111,159,0.40),\r\n\r\n          0 0 0 4px #ffffff;\r\n      }\r\n\r\n\r\n      .map-node:hover .title-box {\r\n\r\n        background:\r\n          var(--accent);\r\n\r\n        color:\r\n          #ffffff;\r\n      }\r\n\r\n\r\n      .map-node:hover\r\n      .map-arrows path {\r\n\r\n        stroke:\r\n          var(--accent);\r\n      }\r\n\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       TITLE\r\n    ================================= *\/\r\n\r\n    .title-box {\r\n\r\n      display: inline-block;\r\n\r\n      margin-bottom: 12px;\r\n\r\n      padding:\r\n        7px\r\n        10px;\r\n\r\n      border-radius: 6px;\r\n\r\n      background:\r\n        var(--surface-soft);\r\n\r\n      color:\r\n        var(--ink);\r\n\r\n      font-size: 13px;\r\n\r\n      font-weight: 600;\r\n\r\n      text-transform: uppercase;\r\n\r\n      letter-spacing: 0.5px;\r\n\r\n      transition:\r\n        background 0.25s ease,\r\n        color 0.25s ease;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       TEXT\r\n    ================================= *\/\r\n\r\n    .text-box {\r\n\r\n      margin: 0;\r\n\r\n      color:\r\n        var(--muted);\r\n\r\n      font-size: 13.5px;\r\n\r\n      line-height: 1.55;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       CTA\r\n    ================================= *\/\r\n\r\n    .cta-button {\r\n\r\n      display: inline-block;\r\n\r\n      margin-top: 12px;\r\n\r\n      padding:\r\n        8px\r\n        12px;\r\n\r\n      font-size: 0.85rem;\r\n\r\n      font-weight: 600;\r\n\r\n      text-decoration: none;\r\n\r\n      color:\r\n        var(--accent);\r\n\r\n      background:\r\n        var(--accent-soft);\r\n\r\n      border-radius: 5px;\r\n\r\n      transition:\r\n        background 0.2s ease,\r\n        color 0.2s ease,\r\n        transform 0.2s ease;\r\n    }\r\n\r\n\r\n    .cta-button:hover {\r\n\r\n      background:\r\n        var(--accent);\r\n\r\n      color:\r\n        #ffffff;\r\n\r\n      transform:\r\n        translateY(-1px);\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       ACCESSIBILITY\r\n    ================================= *\/\r\n\r\n    .card:focus-visible,\r\n    .cta-button:focus-visible {\r\n\r\n      outline:\r\n        2px solid\r\n        var(--accent);\r\n\r\n      outline-offset:\r\n        4px;\r\n    }\r\n\r\n\r\n    \/* ================================\r\n       REDUCED MOTION\r\n    ================================= *\/\r\n\r\n    @media (prefers-reduced-motion: reduce) {\r\n\r\n      .map-node,\r\n      .card,\r\n      .node-badge,\r\n      .title-box,\r\n      .cta-button {\r\n\r\n        transition: none !important;\r\n      }\r\n\r\n      .map-row .map-node {\r\n\r\n        opacity: 1 !important;\r\n\r\n        transform:\r\n          none !important;\r\n      }\r\n\r\n      .map-arrows path {\r\n\r\n        transition: none !important;\r\n      }\r\n    }\r\n\r\n\r\n    \/* ==================================================\r\n       TABLET\r\n    ================================================== *\/\r\n\r\n    @media (max-width: 1100px) {\r\n\r\n      .timeline-wrap {\r\n\r\n        width: 100%;\r\n\r\n        padding:\r\n          70px\r\n          25px\r\n          90px;\r\n      }\r\n\r\n\r\n      .map-row {\r\n\r\n        gap: 14px;\r\n      }\r\n\r\n\r\n      .map-node {\r\n\r\n        width: 22%;\r\n\r\n        flex:\r\n          0 0\r\n          22%;\r\n      }\r\n\r\n\r\n      .map-node.n2 {\r\n\r\n        margin-top: 110px;\r\n      }\r\n\r\n\r\n      .map-node.n4 {\r\n\r\n        margin-top: 130px;\r\n      }\r\n\r\n\r\n      .card {\r\n\r\n        padding:\r\n          20px\r\n          15px\r\n          16px;\r\n      }\r\n\r\n\r\n      .title-box {\r\n\r\n        font-size: 11px;\r\n      }\r\n\r\n\r\n      .text-box {\r\n\r\n        font-size: 12.5px;\r\n\r\n        line-height: 1.5;\r\n      }\r\n    }\r\n\r\n\r\n    \/* ==================================================\r\n       MOBILE\r\n    ================================================== *\/\r\n\r\n    @media (max-width: 900px) {\r\n\r\n      .timeline-wrap {\r\n\r\n        width: 100%;\r\n\r\n        padding:\r\n          50px\r\n          20px\r\n          70px;\r\n      }\r\n\r\n\r\n      \/*\r\n        Hide desktop connecting SVG.\r\n        On mobile the cards become\r\n        a simple vertical flow.\r\n      *\/\r\n\r\n      .map-arrows {\r\n\r\n        display: none;\r\n      }\r\n\r\n\r\n      .map-row {\r\n\r\n        flex-direction: column;\r\n\r\n        gap: 28px;\r\n      }\r\n\r\n\r\n      .map-node {\r\n\r\n        width: 100%;\r\n\r\n        flex:\r\n          none;\r\n\r\n        margin-top: 0 !important;\r\n\r\n        opacity: 1;\r\n\r\n        transform: none;\r\n      }\r\n\r\n\r\n      \/*\r\n        Small vertical connector\r\n        between cards.\r\n      *\/\r\n\r\n      .map-node:not(:last-child)::after {\r\n\r\n        content: \"\";\r\n\r\n        display: block;\r\n\r\n        width: 2px;\r\n\r\n        height: 28px;\r\n\r\n        background:\r\n          var(--line);\r\n\r\n        margin:\r\n          8px 0 0 34px;\r\n      }\r\n\r\n\r\n      .card {\r\n\r\n        padding:\r\n          24px\r\n          20px\r\n          20px;\r\n\r\n        border-radius: 14px;\r\n      }\r\n\r\n\r\n      .title-box {\r\n\r\n        font-size: 12px;\r\n      }\r\n\r\n\r\n      .text-box {\r\n\r\n        font-size: 14px;\r\n\r\n        line-height: 1.6;\r\n      }\r\n\r\n\r\n      \/*\r\n        No floating animation on mobile.\r\n      *\/\r\n\r\n      .map-row .map-node {\r\n\r\n        animation: none !important;\r\n      }\r\n    }\r\n\r\n\r\n    \/* ==================================================\r\n       SMALL MOBILE\r\n    ================================================== *\/\r\n\r\n    @media (max-width: 480px) {\r\n\r\n      .timeline-wrap {\r\n\r\n        padding:\r\n          40px\r\n          15px\r\n          55px;\r\n      }\r\n\r\n\r\n      .card {\r\n\r\n        padding:\r\n          22px\r\n          17px\r\n          18px;\r\n      }\r\n\r\n\r\n      .node-badge {\r\n\r\n        width: 31px;\r\n\r\n        height: 31px;\r\n\r\n        left: 14px;\r\n\r\n        top: -14px;\r\n\r\n        font-size: 13px;\r\n      }\r\n\r\n\r\n      .title-box {\r\n\r\n        font-size: 11px;\r\n\r\n        padding:\r\n          6px\r\n          9px;\r\n      }\r\n\r\n\r\n      .text-box {\r\n\r\n        font-size: 13.5px;\r\n      }\r\n    }\r\n\r\n  <\/style>\r\n\r\n<\/head>\r\n\r\n\r\n<body>\r\n\r\n\r\n<section\r\n  class=\"timeline-wrap\"\r\n  id=\"timelineWrap\"\r\n>\r\n\r\n\r\n  <div\r\n    class=\"map\"\r\n    id=\"map\"\r\n  >\r\n\r\n\r\n    <!-- ==========================================\r\n         CURVED CONNECTING LINES\r\n         NO ARROWHEADS\r\n    =========================================== -->\r\n\r\n    <svg\r\n      class=\"map-arrows\"\r\n      id=\"mapArrows\"\r\n      aria-hidden=\"true\"\r\n    >\r\n\r\n      <path\r\n        id=\"arrow-1\"\r\n      ><\/path>\r\n\r\n      <path\r\n        id=\"arrow-2\"\r\n      ><\/path>\r\n\r\n      <path\r\n        id=\"arrow-3\"\r\n      ><\/path>\r\n\r\n    <\/svg>\r\n\r\n\r\n    <!-- ==========================================\r\n         TIMELINE\r\n    =========================================== -->\r\n\r\n    <div\r\n      class=\"map-row\"\r\n      id=\"mapRow\"\r\n    >\r\n\r\n\r\n      <!-- ================================\r\n           STEP 1\r\n      ================================= -->\r\n\r\n      <div class=\"map-node n1\">\r\n\r\n        <span class=\"node-badge\">\r\n          1\r\n        <\/span>\r\n\r\n        <div class=\"card\">\r\n\r\n          <div class=\"title-box\">\r\n            LISTEN &amp; ASSESS\r\n          <\/div>\r\n\r\n          <p class=\"text-box\">\r\n\r\n            First, our team reviews your current\r\n            technology and business constraints\r\n            before recommending the most suitable\r\n            solution. If an upgrade does not create\r\n            real value, we communicate it clearly.\r\n\r\n            As a result, every decision remains\r\n            transparent, practical, and fully informed\r\n            from the beginning.\r\n\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- ================================\r\n           STEP 2\r\n      ================================= -->\r\n\r\n      <div class=\"map-node n2\">\r\n\r\n        <span class=\"node-badge\">\r\n          2\r\n        <\/span>\r\n\r\n        <div class=\"card\">\r\n\r\n          <div class=\"title-box\">\r\n            DESIGN &amp; PROTOTYPE\r\n          <\/div>\r\n\r\n          <p class=\"text-box\">\r\n\r\n            We transform your concept into a\r\n            market-ready IoT device. Our engineers\r\n            handle PCB design, firmware, and enclosure\r\n            development entirely in-house, enabling\r\n            fast and reliable prototyping.\r\n\r\n            <br><br>\r\n\r\n            Whether for startups or enterprise product\r\n            lines, the process adapts to your timeline\r\n            and budget, ensuring a scalable development\r\n            path.\r\n\r\n            Meanwhile, every component is designed to\r\n            integrate seamlessly with the rest of the\r\n            IoT ecosystem.\r\n\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- ================================\r\n           STEP 3\r\n      ================================= -->\r\n\r\n      <div class=\"map-node n3\">\r\n\r\n        <span class=\"node-badge\">\r\n          3\r\n        <\/span>\r\n\r\n        <div class=\"card\">\r\n\r\n          <div class=\"title-box\">\r\n            TEST &amp; CERTIFICATIONS\r\n          <\/div>\r\n\r\n          <p class=\"text-box\">\r\n\r\n            Each device undergoes functional testing\r\n            and certification before production.\r\n\r\n            This ensures compliance with industrial\r\n            standards and guarantees reliability in\r\n            real-world environments.\r\n\r\n            <br><br>\r\n\r\n            Consequently, every product is ready for\r\n            reliable deployment in demanding industrial\r\n            environments.\r\n\r\n          <\/p>\r\n\r\n\r\n          <a\r\n            class=\"cta-button\"\r\n            href=\"https:\/\/www.gimasi.com\/?page_id=3643\"\r\n            target=\"_blank\"\r\n            rel=\"noopener\"\r\n          >\r\n\r\n            View Certifications\r\n\r\n          <\/a>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n      <!-- ================================\r\n           STEP 4\r\n      ================================= -->\r\n\r\n      <div class=\"map-node n4\">\r\n\r\n        <span class=\"node-badge\">\r\n          4\r\n        <\/span>\r\n\r\n        <div class=\"card\">\r\n\r\n          <div class=\"title-box\">\r\n            PRODUCTION &amp; POST SALE SUPPORT\r\n          <\/div>\r\n\r\n          <p class=\"text-box\">\r\n\r\n            Finally, we manage SMT assembly and\r\n            quality control in Switzerland.\r\n\r\n            After delivery, we continue with firmware\r\n            updates, FOTA management, and technical\r\n            support to ensure long-term stability.\r\n\r\n          <\/p>\r\n\r\n        <\/div>\r\n\r\n      <\/div>\r\n\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n<\/section>\r\n\r\n\r\n\r\n<script>\r\n\r\n(function () {\r\n\r\n  const map =\r\n    document.getElementById(\"map\");\r\n\r\n  const row =\r\n    document.getElementById(\"mapRow\");\r\n\r\n  const nodes =\r\n    Array.from(\r\n      row.querySelectorAll(\".map-node\")\r\n    );\r\n\r\n\r\n  const paths = [\r\n\r\n    document.getElementById(\"arrow-1\"),\r\n\r\n    document.getElementById(\"arrow-2\"),\r\n\r\n    document.getElementById(\"arrow-3\")\r\n\r\n  ];\r\n\r\n\r\n  \/*\r\n    Different curvature for each connection.\r\n  *\/\r\n\r\n  const curl = [\r\n    65,\r\n    -85,\r\n    55\r\n  ];\r\n\r\n\r\n  \/* ==========================================\r\n     BUILD CURVED CONNECTIONS\r\n  =========================================== *\/\r\n\r\n  function buildArrows() {\r\n\r\n    if (window.innerWidth <= 900) {\r\n      return;\r\n    }\r\n\r\n\r\n    const mapRect =\r\n      map.getBoundingClientRect();\r\n\r\n\r\n    for (\r\n      let i = 0;\r\n      i < paths.length;\r\n      i++\r\n    ) {\r\n\r\n      const cardA =\r\n        nodes[i].querySelector(\".card\");\r\n\r\n      const cardB =\r\n        nodes[i + 1].querySelector(\".card\");\r\n\r\n\r\n      const rectA =\r\n        cardA.getBoundingClientRect();\r\n\r\n      const rectB =\r\n        cardB.getBoundingClientRect();\r\n\r\n\r\n      \/*\r\n        Start slightly inside\r\n        the right edge.\r\n      *\/\r\n\r\n      const x1 =\r\n        rectA.right -\r\n        mapRect.left -\r\n        3;\r\n\r\n\r\n      const y1 =\r\n        rectA.top -\r\n        mapRect.top +\r\n        rectA.height \/ 2;\r\n\r\n\r\n      \/*\r\n        End slightly inside\r\n        the left edge.\r\n      *\/\r\n\r\n      const x2 =\r\n        rectB.left -\r\n        mapRect.left +\r\n        3;\r\n\r\n\r\n      const y2 =\r\n        rectB.top -\r\n        mapRect.top +\r\n        rectB.height \/ 2;\r\n\r\n\r\n      const dx =\r\n        x2 - x1;\r\n\r\n\r\n      const c =\r\n        curl[i];\r\n\r\n\r\n      const c1x =\r\n        x1 + dx * 0.35;\r\n\r\n\r\n      const c1y =\r\n        y1 + c;\r\n\r\n\r\n      const c2x =\r\n        x1 + dx * 0.65;\r\n\r\n\r\n      const c2y =\r\n        y2 - c * 0.4;\r\n\r\n\r\n      \/*\r\n        Smooth B\u00e9zier curve.\r\n      *\/\r\n\r\n      const d =\r\n        `M ${x1},${y1}\r\n         C ${c1x},${c1y}\r\n           ${c2x},${c2y}\r\n           ${x2},${y2}`;\r\n\r\n\r\n      paths[i].setAttribute(\r\n        \"d\",\r\n        d\r\n      );\r\n\r\n\r\n      \/*\r\n        Animate the line\r\n        drawing itself.\r\n      *\/\r\n\r\n      const length =\r\n        paths[i].getTotalLength();\r\n\r\n\r\n      paths[i].style.strokeDasharray =\r\n        length;\r\n\r\n      if (\r\n        !paths[i].dataset.revealed\r\n      ) {\r\n\r\n        paths[i].style.strokeDashoffset =\r\n          length;\r\n      }\r\n\r\n    }\r\n\r\n  }\r\n\r\n\r\n  \/* ==========================================\r\n     REVEAL LINE\r\n  =========================================== *\/\r\n\r\n  function revealArrow(\r\n    index,\r\n    delay\r\n  ) {\r\n\r\n    const path =\r\n      paths[index];\r\n\r\n\r\n    setTimeout(\r\n      function () {\r\n\r\n        path.style.transition =\r\n          \"stroke-dashoffset 0.9s ease\";\r\n\r\n\r\n        path.style.strokeDashoffset =\r\n          \"0\";\r\n\r\n\r\n        path.dataset.revealed =\r\n          \"1\";\r\n\r\n      },\r\n      delay\r\n    );\r\n\r\n  }\r\n\r\n\r\n  \/* ==========================================\r\n     RESIZE\r\n  =========================================== *\/\r\n\r\n  let resizeTimer;\r\n\r\n\r\n  window.addEventListener(\r\n    \"resize\",\r\n    function () {\r\n\r\n      clearTimeout(\r\n        resizeTimer\r\n      );\r\n\r\n\r\n      resizeTimer =\r\n        setTimeout(\r\n          buildArrows,\r\n          150\r\n        );\r\n\r\n    }\r\n  );\r\n\r\n\r\n  window.addEventListener(\r\n    \"load\",\r\n    buildArrows\r\n  );\r\n\r\n\r\n  setTimeout(\r\n    buildArrows,\r\n    300\r\n  );\r\n\r\n\r\n  \/* ==========================================\r\n     SCROLL REVEAL\r\n  =========================================== *\/\r\n\r\n  const observer =\r\n    new IntersectionObserver(\r\n      function (entries) {\r\n\r\n        entries.forEach(\r\n          function (entry) {\r\n\r\n            if (\r\n              entry.isIntersecting\r\n            ) {\r\n\r\n              buildArrows();\r\n\r\n\r\n              row.classList.add(\r\n                \"in-view\"\r\n              );\r\n\r\n\r\n              revealArrow(\r\n                0,\r\n                350\r\n              );\r\n\r\n\r\n              revealArrow(\r\n                1,\r\n                700\r\n              );\r\n\r\n\r\n              revealArrow(\r\n                2,\r\n                1050\r\n              );\r\n\r\n\r\n              observer.disconnect();\r\n\r\n            }\r\n\r\n          }\r\n        );\r\n\r\n      },\r\n      {\r\n        threshold: 0.2\r\n      }\r\n    );\r\n\r\n\r\n  observer.observe(map);\r\n\r\n\r\n})();\r\n\r\n<\/script>\r\n\r\n\r\n<\/body>\r\n\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f635e2a e-con-full e-flex e-con e-parent\" data-id=\"f635e2a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ba2a94c elementor-widget elementor-widget-heading\" data-id=\"ba2a94c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h6 class=\"elementor-heading-title elementor-size-default\">TRUSTED COLLABS<\/h6>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-988a5fa elementor-widget elementor-widget-heading\" data-id=\"988a5fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Partners who shape our journey<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5e7ce27 e-flex e-con-boxed e-con e-parent\" data-id=\"5e7ce27\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f6de010 e-con-full e-flex e-con e-child\" data-id=\"f6de010\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-42e01b7 elementor-widget elementor-widget-image\" data-id=\"42e01b7\" 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\" width=\"219\" height=\"130\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/hemargroup-logo-partner.png\" class=\"attachment-full size-full wp-image-11116\" alt=\"HemarGroup Partner logo\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5559a23 e-con-full e-flex e-con e-child\" data-id=\"5559a23\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2d63acc elementor-widget elementor-widget-image\" data-id=\"2d63acc\" 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\" width=\"150\" height=\"150\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/05\/bi-telekom-logo-01-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail wp-image-4507\" alt=\"Deutsche Telekom logo \u2013 technology and connectivity partner\" srcset=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/05\/bi-telekom-logo-01-150x150.jpg 150w, https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/05\/elementor\/thumbs\/bi-telekom-logo-01-r61gr7nh5rcjpsl4x8mqioebxia77sc4cs3y3v6go8.jpg 100w, https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/05\/elementor\/thumbs\/bi-telekom-logo-01-r61gr7ngjtybwsi9ps75gmz5eu6dvwq9evtd15xuno.jpg 50w, https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/05\/elementor\/thumbs\/bi-telekom-logo-01-r61gr7nh1dgwjzrrhcjmb2ihtrv1cm0jrlnfhq4qo4.jpg 90w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e1efe50 e-con-full e-flex e-con e-child\" data-id=\"e1efe50\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-57be91b elementor-widget elementor-widget-image\" data-id=\"57be91b\" 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\" width=\"150\" height=\"109\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/05\/Swisscom_logo.svg\" class=\"attachment-thumbnail size-thumbnail wp-image-4444\" alt=\"Swisscom Logo -strategic telecom partner of Gimasi IoT Swiss Solution\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7384fad e-con-full e-flex e-con e-child\" data-id=\"7384fad\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0c047d5 elementor-widget elementor-widget-image\" data-id=\"0c047d5\" 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 loading=\"lazy\" decoding=\"async\" width=\"128\" height=\"38\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/05\/coop_logo.svg\" class=\"attachment-full size-full wp-image-4443\" alt=\"Coop logo \u2013 retail partner collaborating with Gimasi IoT solutions\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e34153d e-con-full e-flex e-con e-parent\" data-id=\"e34153d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b04c79b elementor-widget elementor-widget-menu-anchor\" data-id=\"b04c79b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"GIOT\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7144351 elementor-widget elementor-widget-html\" data-id=\"7144351\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"it\">\r\n\r\n<head>\r\n\r\n<meta charset=\"UTF-8\">\r\n\r\n<meta\r\n    name=\"viewport\"\r\n    content=\"width=device-width, initial-scale=1.0\"\r\n>\r\n\r\n<title>GIoT Cloud Platform \u2014 Gimasi SA<\/title>\r\n\r\n\r\n<style>\r\n\r\n\/* =========================================================\r\n   GIoT SECTION \u2014 BASE\r\n========================================================= *\/\r\n\r\n#giot {\r\n    position: relative;\r\n    overflow: hidden;\r\n\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n    padding: 80px 80px 20px 100px ;\r\n\r\n    background: #071B3A;\r\n\r\n    color: #FFFFFF;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   INTERACTIVE CANVAS\r\n   SOLO DENTRO LA SEZIONE GIOT\r\n========================================================= *\/\r\n\r\n#giot-canvas {\r\n    position: absolute;\r\n\r\n    inset: 0;\r\n\r\n    width: 10%;\r\n    height: 100%;\r\n\r\n    z-index: 0;\r\n\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n\/*\r\n   Subtle dark overlay.\r\n   Keeps the network visible but discreet.\r\n*\/\r\n\r\n#giot::after {\r\n    content: \"\";\r\n\r\n    position: center;\r\n\r\n    inset: 0;\r\n\r\n    z-index: 1;\r\n\r\n    pointer-events: none;\r\n\r\n    background:\r\n        radial-gradient(\r\n            circle at 70% 45%,\r\n            rgba(16,184,174,0.08),\r\n            transparent 42%\r\n        ),\r\n        linear-gradient(\r\n            180deg,\r\n            rgba(7,27,58,0.05),\r\n            rgba(7,27,58,0.16)\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CONTENT\r\n========================================================= *\/\r\n\r\n#giot .giot-wrap {\r\n    position: relative;\r\n\r\n    z-index: 2;\r\n\r\n    width: min(\r\n        1100px,\r\n        calc(100% -80px)\r\n    );\r\n\r\n    margin: 0 auto;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SECTION NUMBER\r\n========================================================= *\/\r\n\r\n#giot .giot-number {\r\n    position: absolute;\r\n\r\n    top: 28px;\r\n    right: 32px;\r\n\r\n    z-index: 3;\r\n\r\n    font-family:\r\n        \"Arial\",\r\n        Arial,\r\n        monospace;\r\n\r\n    font-size: 10px;\r\n\r\n    color: rgba(255,255,255,0.45);\r\n\r\n    letter-spacing: .08em;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   GRID\r\n========================================================= *\/\r\n\r\n#giot .giot-grid {\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        minmax(0, 1fr)\r\n        minmax(0, 1fr);\r\n\r\n    gap: 70px;\r\n\r\n    align-items: center;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   EYEBROW\r\n========================================================= *\/\r\n\r\n#giot .giot-eyebrow {\r\n\r\n    margin-bottom: 18px;\r\n\r\n    font-family:\r\n        \"Arial\",\r\n        Arial,\r\n        monospace;\r\n\r\n    font-size: 11px;\r\n\r\n    line-height: 1.4;\r\n\r\n    color: #7EE0D6;\r\n\r\n    letter-spacing: .08em;\r\n\r\n    text-transform: uppercase;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TITLE\r\n========================================================= *\/\r\n\r\n#giot .giot-title {\r\n\r\n    margin: 0;\r\n\r\n    max-width: 650px;\r\n\r\n    font-family:\r\n        Arial,\r\n        Helvetica,\r\n        sans-serif;\r\n\r\n    font-size:\r\n        clamp(\r\n            36px,\r\n            4.2vw,\r\n            58px\r\n        );\r\n\r\n    line-height: 1.04;\r\n\r\n    font-weight: 600;\r\n\r\n    letter-spacing: -.035em;\r\n\r\n    color: #FFFFFF;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   FEATURES\r\n========================================================= *\/\r\n\r\n#giot .giot-features {\r\n\r\n    list-style: none;\r\n\r\n    margin: 32px 0 0;\r\n\r\n    padding: 0;\r\n\r\n    max-width: 620px;\r\n}\r\n\r\n\r\n#giot .giot-feature {\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        100px\r\n        minmax(0, 1fr);\r\n\r\n    gap: 18px;\r\n\r\n    padding: 15px 0;\r\n\r\n    border-top:\r\n        1px solid\r\n        rgba(255,255,255,0.14);\r\n}\r\n\r\n\r\n#giot .giot-feature:first-child {\r\n    border-top: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   FEATURE LABEL\r\n========================================================= *\/\r\n\r\n#giot .giot-feature-label {\r\n\r\n    font-family:\r\n        \"Courier New\",\r\n        Courier,\r\n        monospace;\r\n\r\n    font-size: 12px;\r\n\r\n    line-height: 1.4;\r\n\r\n    color: #7EE0D6;\r\n\r\n    letter-spacing: .08em;\r\n\r\n    text-transform: uppercase;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   FEATURE TEXT\r\n========================================================= *\/\r\n\r\n#giot .giot-feature-text {\r\n\r\n    font-size: 16px;\r\n\r\n    line-height: 1.5;\r\n    letter-spacing: .04em;\r\n\r\n    color:\r\n        rgba(255,255,255,0.76);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   BUTTON\r\n========================================================= *\/\r\n\r\n#giot .giot-button {\r\n\r\n    display: inline-flex;\r\n\r\n    align-items: center;\r\n\r\n    gap: 9px;\r\n\r\n    margin-top: 26px;\r\n\r\n    padding:\r\n        12px\r\n        17px;\r\n\r\n    border:\r\n        1px solid\r\n        rgba(255,255,255,0.35);\r\n\r\n    border-radius: 5px;\r\n\r\n    background:\r\n        rgba(255,255,255,0.06);\r\n\r\n    color: #FFFFFF;\r\n\r\n    font-family:\r\n        Arial,\r\n        Helvetica,\r\n        sans-serif;\r\n\r\n    font-size: 13px;\r\n\r\n    font-weight: 600;\r\n\r\n    text-decoration: none;\r\n\r\n    transition:\r\n        background .2s ease,\r\n        border-color .2s ease,\r\n        transform .2s ease;\r\n}\r\n\r\n\r\n#giot .giot-button::after {\r\n\r\n    content: \"\u2192\";\r\n\r\n    font-size: 15px;\r\n\r\n    line-height: 1;\r\n\r\n    transition:\r\n        transform .2s ease;\r\n}\r\n\r\n\r\n#giot .giot-button:hover {\r\n\r\n    background:\r\n        rgba(255,255,255,0.12);\r\n\r\n    border-color:\r\n        rgba(255,255,255,0.65);\r\n\r\n    transform:\r\n        translateY(-2px);\r\n}\r\n\r\n\r\n#giot .giot-button:hover::after {\r\n\r\n    transform:\r\n        translateX(3px);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   IMAGE CONTAINER\r\n========================================================= *\/\r\n\r\n#giot .giot-image-wrapper {\r\n\r\n    position: relative;\r\n\r\n    width: 100%;\r\n\r\n    overflow: hidden;\r\n\r\n    border-radius: 7px;\r\n    \r\n    border:\r\n        1px solid\r\n        rgba(255,255,255,0.14);\r\n\r\n    background:\r\n        rgba(255,255,255,0.04);\r\n\r\n    box-shadow:\r\n        0 25px 70px\r\n        rgba(0,0,0,0.24);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   IMAGE\r\n========================================================= *\/\r\n\r\n#giot .giot-image {\r\n\r\n    display: block;\r\n\r\n    width: 150%;\r\n\r\n    height: auto;\r\n\r\n    aspect-ratio: 16 \/ 9;\r\n\r\n    object-fit: cover;\r\n\r\n    transition:\r\n        transform .5s ease;\r\n}\r\n\r\n\r\n\/*\r\n   Very subtle image movement.\r\n*\/\r\n\r\n#giot .giot-image-wrapper:hover\r\n.giot-image {\r\n\r\n    transform:\r\n        scale(1.015);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   IMAGE LIGHT EFFECT\r\n========================================================= *\/\r\n\r\n#giot .giot-image-wrapper::after {\r\n\r\n    content: \"\";\r\n\r\n    position: absolute;\r\n\r\n    inset: 0;\r\n\r\n    pointer-events: none;\r\n\r\n    background:\r\n        linear-gradient(\r\n            135deg,\r\n            rgba(16,184,174,0.08),\r\n            transparent 45%\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TABLET\r\n========================================================= *\/\r\n\r\n@media (max-width: 900px) {\r\n\r\n    #giot {\r\n\r\n        padding:\r\n            90px 0;\r\n    }\r\n\r\n\r\n    #giot .giot-wrap {\r\n\r\n        width:\r\n            min(\r\n                720px,\r\n                calc(100% - 40px)\r\n            );\r\n    }\r\n\r\n\r\n    #giot .giot-grid {\r\n\r\n        grid-template-columns: 1fr;\r\n\r\n        gap: 45px;\r\n    }\r\n\r\n\r\n    #giot .giot-title {\r\n\r\n        font-size:\r\n            clamp(\r\n                36px,\r\n                7vw,\r\n                50px\r\n            );\r\n    }\r\n\r\n\r\n    #giot .giot-image-wrapper {\r\n\r\n        max-width: 720px;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MOBILE\r\n========================================================= *\/\r\n\r\n@media (max-width: 600px) {\r\n\r\n    #giot {\r\n\r\n        padding:\r\n            76px 0;\r\n    }\r\n\r\n\r\n    #giot .giot-wrap {\r\n\r\n        width:\r\n            calc(100% - 32px);\r\n    }\r\n\r\n\r\n    #giot .giot-number {\r\n\r\n        top: 20px;\r\n\r\n        right: 16px;\r\n\r\n        font-size: 9px;\r\n    }\r\n\r\n\r\n    #giot .giot-eyebrow {\r\n\r\n        font-size: 10px;\r\n    }\r\n\r\n\r\n    #giot .giot-title {\r\n\r\n        font-size:\r\n            clamp(\r\n                32px,\r\n                10vw,\r\n                42px\r\n            );\r\n\r\n        line-height: 1.07;\r\n    }\r\n\r\n\r\n    #giot .giot-features {\r\n\r\n        margin-top: 25px;\r\n    }\r\n\r\n\r\n    #giot .giot-feature {\r\n\r\n        grid-template-columns:\r\n            78px\r\n            minmax(0, 1fr);\r\n\r\n        gap: 12px;\r\n\r\n        padding:\r\n            13px 0;\r\n    }\r\n\r\n\r\n    #giot .giot-feature-label {\r\n\r\n        font-size: 9px;\r\n    }\r\n\r\n\r\n    #giot .giot-feature-text {\r\n\r\n        font-size: 13px;\r\n    }\r\n\r\n\r\n    #giot .giot-image {\r\n\r\n        aspect-ratio:\r\n            4 \/ 3;\r\n    }\r\n\r\n\r\n    #giot .giot-button {\r\n\r\n        font-size: 12px;\r\n\r\n        padding:\r\n            11px 15px;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   REDUCED MOTION\r\n========================================================= *\/\r\n\r\n@media (\r\n    prefers-reduced-motion: reduce\r\n) {\r\n\r\n    #giot .giot-button,\r\n    #giot .giot-button::after,\r\n    #giot .giot-image {\r\n\r\n        transition: none;\r\n    }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n<\/head>\r\n\r\n\r\n<body>\r\n\r\n\r\n<!-- =======================================================\r\n     GIOT SECTION\r\n======================================================= -->\r\n\r\n<section id=\"giot\">\r\n\r\n\r\n    <!-- Interactive background -->\r\n    <canvas\r\n        id=\"giot-canvas\"\r\n        aria-hidden=\"true\">\r\n    <\/canvas>\r\n\r\n\r\n    <!-- Section number -->\r\n    <div class=\"giot-number\">\r\n        09 \/ 08\r\n    <\/div>\r\n\r\n\r\n    <div class=\"giot-wrap\">\r\n\r\n        <div class=\"giot-grid\">\r\n\r\n\r\n            <!-- =================================================\r\n                 LEFT \u2014 TEXT\r\n            ================================================== -->\r\n\r\n            <div class=\"giot-content\">\r\n\r\n\r\n                <div class=\"giot-eyebrow\">\r\n                    GIOT CLOUD PLATFORM\r\n                <\/div>\r\n\r\n\r\n                <h2 class=\"giot-title\">\r\n                    GIoT:\r\n                    Connecting the complete IoT Stack.\r\n                <\/h2>\r\n\r\n\r\n                <ul class=\"giot-features\">\r\n\r\n\r\n                    <li class=\"giot-feature\">\r\n\r\n                        <div class=\"giot-feature-label\">\r\n                            Monitor\r\n                        <\/div>\r\n\r\n                        <div class=\"giot-feature-text\">\r\n                    Real-time telemetry<br>Historical data storage<br>\r\nConfigurable dashboards<br>Live device status<br>\r\nGeolocation & Geofencing alarms\r\n\r\n                        <\/div>\r\n\r\n                    <\/li>\r\n\r\n\r\n                    <li class=\"giot-feature\">\r\n\r\n                        <div class=\"giot-feature-label\">\r\n                            connectivity\r\n                        <\/div>\r\n\r\n                        <div class=\"giot-feature-text\">\r\n                            MQTT<br>WiFi Geolocation & Geofencing<br>LoRaWAN\/ NB-IoT\/ LTE-M<br>BLE Gateway<br>FOTA\r\n\r\n                        <\/div>\r\n\r\n                    <\/li>\r\n\r\n\r\n                    <li class=\"giot-feature\">\r\n\r\n                        <div class=\"giot-feature-label\">\r\n                            Automate\r\n                        <\/div>\r\n\r\n                        <div class=\"giot-feature-text\">\r\n                           Alerts rules, email &amp; events\r\n                        <\/div>\r\n\r\n                    <\/li>\r\n\r\n\r\n                    <li class=\"giot-feature\">\r\n\r\n                        <div class=\"giot-feature-label\">\r\n                            Security\r\n                        <\/div>\r\n\r\n                        <div class=\"giot-feature-text\">\r\n                            Multi-tenant architecture<br>Role-based access control<br>API authentication\r\n\r\n                        <\/div>\r\n\r\n                    <\/li>\r\n\r\n\r\n                <\/ul>\r\n\r\n\r\n                <a\r\n                    href=\"https:\/\/www.gimasi.com\/?page_id=3480\"\r\n                    class=\"giot-button\">\r\n\r\n                    Scopri GIoT Cloud\r\n\r\n                <\/a>\r\n\r\n\r\n            <\/div>\r\n\r\n\r\n            <!-- =================================================\r\n                 RIGHT \u2014 IMAGE\r\n            ================================================== -->\r\n\r\n            <div class=\"giot-image-wrapper\">\r\n\r\n                <img decoding=\"async\"\r\n                    class=\"giot-image\"\r\n                    src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/08\/Site-Banner-Background-54.jpg\"\r\n                    alt=\"GIoT Cloud Platform\"\r\n                    loading=\"lazy\"\r\n                >\r\n\r\n            <\/div>\r\n\r\n\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n<\/section>\r\n\r\n\r\n\r\n<script>\r\n\r\n\/* =========================================================\r\n   GIoT INTERACTIVE BACKGROUND\r\n   THIS EFFECT EXISTS ONLY INSIDE #giot\r\n========================================================= *\/\r\n\r\n(function () {\r\n\r\n    \"use strict\";\r\n\r\n\r\n    const section =\r\n        document.getElementById(\"giot\");\r\n\r\n    const canvas =\r\n        document.getElementById(\"giot-canvas\");\r\n\r\n\r\n    if (!section || !canvas) {\r\n        return;\r\n    }\r\n\r\n\r\n    const ctx =\r\n        canvas.getContext(\"2d\");\r\n\r\n\r\n    if (!ctx) {\r\n        return;\r\n    }\r\n\r\n\r\n    let width = 0;\r\n    let height = 0;\r\n\r\n    let nodes = [];\r\n\r\n    let animationFrame;\r\n\r\n\r\n    \/*\r\n       Mouse coordinates relative\r\n       to the GIoT section.\r\n    *\/\r\n\r\n    const mouse = {\r\n\r\n        x: 0,\r\n        y: 0,\r\n\r\n        active: false\r\n\r\n    };\r\n\r\n\r\n    const MAX_DPR = 2;\r\n\r\n\r\n    \/* =====================================================\r\n       CREATE NODES\r\n    ===================================================== *\/\r\n\r\n    function createNodes() {\r\n\r\n        const area =\r\n            width * height;\r\n\r\n\r\n        let count =\r\n            Math.floor(\r\n                area \/ 17000\r\n            );\r\n\r\n\r\n        \/*\r\n           Keep performance under control.\r\n        *\/\r\n\r\n        count =\r\n            Math.max(\r\n                24,\r\n                Math.min(\r\n                    count,\r\n                    80\r\n                )\r\n            );\r\n\r\n\r\n        nodes =\r\n            Array.from(\r\n                {\r\n                    length: count\r\n                },\r\n                function () {\r\n\r\n                    return {\r\n\r\n                        x:\r\n                            Math.random()\r\n                            * width,\r\n\r\n                        y:\r\n                            Math.random()\r\n                            * height,\r\n\r\n                        vx:\r\n                            (Math.random() - 0.5)\r\n                            * 0.25,\r\n\r\n                        vy:\r\n                            (Math.random() - 0.5)\r\n                            * 0.25,\r\n\r\n                        radius:\r\n                            Math.random()\r\n                            * 1.3\r\n                            + 0.7\r\n\r\n                    };\r\n\r\n                }\r\n            );\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       RESIZE\r\n    ===================================================== *\/\r\n\r\n    function resize() {\r\n\r\n        const rect =\r\n            section.getBoundingClientRect();\r\n\r\n\r\n        width =\r\n            rect.width;\r\n\r\n        height =\r\n            rect.height;\r\n\r\n\r\n        const dpr =\r\n            Math.min(\r\n                window.devicePixelRatio || 1,\r\n                MAX_DPR\r\n            );\r\n\r\n\r\n        canvas.width =\r\n            Math.round(\r\n                width * dpr\r\n            );\r\n\r\n        canvas.height =\r\n            Math.round(\r\n                height * dpr\r\n            );\r\n\r\n\r\n        canvas.style.width =\r\n            width + \"px\";\r\n\r\n        canvas.style.height =\r\n            height + \"px\";\r\n\r\n\r\n        ctx.setTransform(\r\n            dpr,\r\n            0,\r\n            0,\r\n            dpr,\r\n            0,\r\n            0\r\n        );\r\n\r\n\r\n        createNodes();\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       UPDATE NODES\r\n    ===================================================== *\/\r\n\r\n    function updateNodes() {\r\n\r\n        nodes.forEach(\r\n            function (node) {\r\n\r\n                node.x += node.vx;\r\n\r\n                node.y += node.vy;\r\n\r\n\r\n                if (\r\n                    node.x <= 0 ||\r\n                    node.x >= width\r\n                ) {\r\n\r\n                    node.vx *= -1;\r\n\r\n                    node.x =\r\n                        Math.max(\r\n                            0,\r\n                            Math.min(\r\n                                width,\r\n                                node.x\r\n                            )\r\n                        );\r\n                }\r\n\r\n\r\n                if (\r\n                    node.y <= 0 ||\r\n                    node.y >= height\r\n                ) {\r\n\r\n                    node.vy *= -1;\r\n\r\n                    node.y =\r\n                        Math.max(\r\n                            0,\r\n                            Math.min(\r\n                                height,\r\n                                node.y\r\n                            )\r\n                        );\r\n                }\r\n\r\n            }\r\n        );\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       DRAW\r\n    ===================================================== *\/\r\n\r\n    function draw() {\r\n\r\n        ctx.clearRect(\r\n            0,\r\n            0,\r\n            width,\r\n            height\r\n        );\r\n\r\n\r\n        const connectionDistance =\r\n            window.innerWidth < 600\r\n                ? 95\r\n                : 125;\r\n\r\n\r\n        \/*\r\n           NODE \u2192 NODE\r\n        *\/\r\n\r\n        for (\r\n            let i = 0;\r\n            i < nodes.length;\r\n            i++\r\n        ) {\r\n\r\n            const a =\r\n                nodes[i];\r\n\r\n\r\n            for (\r\n                let j = i + 1;\r\n                j < nodes.length;\r\n                j++\r\n            ) {\r\n\r\n                const b =\r\n                    nodes[j];\r\n\r\n\r\n                const dx =\r\n                    a.x - b.x;\r\n\r\n                const dy =\r\n                    a.y - b.y;\r\n\r\n\r\n                const distance =\r\n                    Math.sqrt(\r\n                        dx * dx +\r\n                        dy * dy\r\n                    );\r\n\r\n\r\n                if (\r\n                    distance <\r\n                    connectionDistance\r\n                ) {\r\n\r\n                    const opacity =\r\n                        0.18 *\r\n                        (\r\n                            1 -\r\n                            distance \/\r\n                            connectionDistance\r\n                        );\r\n\r\n\r\n                    ctx.beginPath();\r\n\r\n                    ctx.moveTo(\r\n                        a.x,\r\n                        a.y\r\n                    );\r\n\r\n                    ctx.lineTo(\r\n                        b.x,\r\n                        b.y\r\n                    );\r\n\r\n\r\n                    ctx.strokeStyle =\r\n                        `rgba(126,224,214,${opacity})`;\r\n\r\n                    ctx.lineWidth =\r\n                        0.8;\r\n\r\n                    ctx.stroke();\r\n                }\r\n            }\r\n\r\n\r\n            \/*\r\n               NODE \u2192 MOUSE\r\n            *\/\r\n\r\n            if (\r\n                mouse.active\r\n            ) {\r\n\r\n                const dx =\r\n                    a.x -\r\n                    mouse.x;\r\n\r\n                const dy =\r\n                    a.y -\r\n                    mouse.y;\r\n\r\n\r\n                const distance =\r\n                    Math.sqrt(\r\n                        dx * dx +\r\n                        dy * dy\r\n                    );\r\n\r\n\r\n                const mouseRadius =\r\n                    window.innerWidth < 600\r\n                        ? 115\r\n                        : 175;\r\n\r\n\r\n                if (\r\n                    distance <\r\n                    mouseRadius\r\n                ) {\r\n\r\n                    const opacity =\r\n                        0.65 *\r\n                        (\r\n                            1 -\r\n                            distance \/\r\n                            mouseRadius\r\n                        );\r\n\r\n\r\n                    ctx.beginPath();\r\n\r\n                    ctx.moveTo(\r\n                        a.x,\r\n                        a.y\r\n                    );\r\n\r\n                    ctx.lineTo(\r\n                        mouse.x,\r\n                        mouse.y\r\n                    );\r\n\r\n\r\n                    ctx.strokeStyle =\r\n                        `rgba(16,184,174,${opacity})`;\r\n\r\n                    ctx.lineWidth =\r\n                        1.1;\r\n\r\n                    ctx.stroke();\r\n                }\r\n            }\r\n        }\r\n\r\n\r\n        \/*\r\n           NODES\r\n        *\/\r\n\r\n        nodes.forEach(\r\n            function (node) {\r\n\r\n                ctx.beginPath();\r\n\r\n                ctx.arc(\r\n                    node.x,\r\n                    node.y,\r\n                    node.radius,\r\n                    0,\r\n                    Math.PI * 2\r\n                );\r\n\r\n\r\n                ctx.fillStyle =\r\n                    \"rgba(126,224,214,0.75)\";\r\n\r\n                ctx.fill();\r\n            }\r\n        );\r\n\r\n\r\n        \/*\r\n           MOUSE GLOW\r\n        *\/\r\n\r\n        if (\r\n            mouse.active\r\n        ) {\r\n\r\n            const gradient =\r\n                ctx.createRadialGradient(\r\n                    mouse.x,\r\n                    mouse.y,\r\n                    0,\r\n                    mouse.x,\r\n                    mouse.y,\r\n                    30\r\n                );\r\n\r\n\r\n            gradient.addColorStop(\r\n                0,\r\n                \"rgba(16,184,174,0.22)\"\r\n            );\r\n\r\n\r\n            gradient.addColorStop(\r\n                1,\r\n                \"rgba(16,184,174,0)\"\r\n            );\r\n\r\n\r\n            ctx.beginPath();\r\n\r\n            ctx.arc(\r\n                mouse.x,\r\n                mouse.y,\r\n                30,\r\n                0,\r\n                Math.PI * 2\r\n            );\r\n\r\n\r\n            ctx.fillStyle =\r\n                gradient;\r\n\r\n            ctx.fill();\r\n\r\n\r\n            \/*\r\n               Small cursor point\r\n            *\/\r\n\r\n            ctx.beginPath();\r\n\r\n            ctx.arc(\r\n                mouse.x,\r\n                mouse.y,\r\n                3,\r\n                0,\r\n                Math.PI * 2\r\n            );\r\n\r\n\r\n            ctx.fillStyle =\r\n                \"#10B8AE\";\r\n\r\n            ctx.fill();\r\n        }\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       ANIMATION\r\n    ===================================================== *\/\r\n\r\n    function animate() {\r\n\r\n        updateNodes();\r\n\r\n        draw();\r\n\r\n        animationFrame =\r\n            requestAnimationFrame(\r\n                animate\r\n            );\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       MOUSE \u2014 ONLY GIOT\r\n    ===================================================== *\/\r\n\r\n    section.addEventListener(\r\n        \"mousemove\",\r\n        function (event) {\r\n\r\n            const rect =\r\n                section.getBoundingClientRect();\r\n\r\n\r\n            mouse.x =\r\n                event.clientX -\r\n                rect.left;\r\n\r\n            mouse.y =\r\n                event.clientY -\r\n                rect.top;\r\n\r\n\r\n            mouse.active =\r\n                true;\r\n\r\n        }\r\n    );\r\n\r\n\r\n    section.addEventListener(\r\n        \"mouseleave\",\r\n        function () {\r\n\r\n            mouse.active =\r\n                false;\r\n\r\n        }\r\n    );\r\n\r\n\r\n    \/* =====================================================\r\n       TOUCH \u2014 ONLY GIOT\r\n    ===================================================== *\/\r\n\r\n    section.addEventListener(\r\n        \"touchmove\",\r\n        function (event) {\r\n\r\n            if (\r\n                !event.touches.length\r\n            ) {\r\n                return;\r\n            }\r\n\r\n\r\n            const rect =\r\n                section.getBoundingClientRect();\r\n\r\n\r\n            const touch =\r\n                event.touches[0];\r\n\r\n\r\n            mouse.x =\r\n                touch.clientX -\r\n                rect.left;\r\n\r\n            mouse.y =\r\n                touch.clientY -\r\n                rect.top;\r\n\r\n\r\n            mouse.active =\r\n                true;\r\n\r\n        },\r\n        {\r\n            passive: true\r\n        }\r\n    );\r\n\r\n\r\n    section.addEventListener(\r\n        \"touchend\",\r\n        function () {\r\n\r\n            mouse.active =\r\n                false;\r\n\r\n        },\r\n        {\r\n            passive: true\r\n        }\r\n    );\r\n\r\n\r\n    \/* =====================================================\r\n       RESIZE\r\n    ===================================================== *\/\r\n\r\n    let resizeTimer;\r\n\r\n\r\n    window.addEventListener(\r\n        \"resize\",\r\n        function () {\r\n\r\n            clearTimeout(\r\n                resizeTimer\r\n            );\r\n\r\n\r\n            resizeTimer =\r\n                setTimeout(\r\n                    resize,\r\n                    100\r\n                );\r\n\r\n        }\r\n    );\r\n\r\n\r\n    \/* =====================================================\r\n       START\r\n    ===================================================== *\/\r\n\r\n    resize();\r\n\r\n    animate();\r\n\r\n\r\n})();\r\n\r\n<\/script>\r\n\r\n\r\n<\/body>\r\n\r\n<\/html>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-831a93b e-con-full e-flex e-con e-child\" data-id=\"831a93b\" 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-c7e4081 e-grid e-con-full e-con e-child\" data-id=\"c7e4081\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b00d5af elementor-widget elementor-widget-icon-box\" data-id=\"b00d5af\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tEvery number represents a device operating in the field, right now.\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d4d5db9 elementor-widget elementor-widget-icon-box\" data-id=\"d4d5db9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\t62.000 + \t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tDEPLOYED DEVICES\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a31bfa5 elementor-widget elementor-widget-icon-box\" data-id=\"a31bfa5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h3 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\t200+ \t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h3>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tACTIVE TENANTS\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9c9b74b e-grid e-con-full e-con e-child\" data-id=\"9c9b74b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-369fbfc elementor-widget elementor-widget-image\" data-id=\"369fbfc\" 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 loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/GDPR-compliant_logo@2x-300x300.webp\" class=\"attachment-medium size-medium wp-image-10868\" alt=\"GDPR Compliance certification\" srcset=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/GDPR-compliant_logo@2x-300x300.webp 300w, https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/GDPR-compliant_logo@2x-1024x1024.webp 1024w, https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/elementor\/thumbs\/GDPR-compliant_logo@2x-rozpuy9bihj0rx7noebt1hqu74f51am8h22yg2ngws.webp 150w, https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/GDPR-compliant_logo@2x-768x768.webp 768w, https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/GDPR-compliant_logo@2x.webp 1420w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cde4a89 elementor-widget elementor-widget-image\" data-id=\"cde4a89\" 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 loading=\"lazy\" decoding=\"async\" width=\"291\" height=\"300\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/07\/Logo-ISO-27001-291x300.webp\" class=\"attachment-medium size-medium wp-image-7667\" alt=\"Gimasi is Certified with ISO\/IEC 27001:2022 - ISMS\" srcset=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/07\/Logo-ISO-27001-291x300.webp 291w, https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/07\/Logo-ISO-27001.webp 477w\" sizes=\"(max-width: 291px) 100vw, 291px\" \/>\t\t\t\t\t\t\t\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<div class=\"elementor-element elementor-element-5fabd29 e-con-full e-flex e-con e-parent\" data-id=\"5fabd29\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b646a85 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"b646a85\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f1a0c04 e-flex e-con-boxed e-con e-parent\" data-id=\"f1a0c04\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-65219fe e-con-full e-flex e-con e-child\" data-id=\"65219fe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-94f6982 e-con-full e-flex elementor-invisible e-con e-child\" data-id=\"94f6982\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;shape_divider_top&quot;:&quot;curve-asymmetrical&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t<div class=\"elementor-shape elementor-shape-top\" aria-hidden=\"true\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" d=\"M0,0c0,0,0,6,0,6.7c0,18,240.2,93.6,615.2,92.6C989.8,98.5,1000,25,1000,6.7c0-0.7,0-6.7,0-6.7H0z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-488ed3e elementor-widget elementor-widget-image\" data-id=\"488ed3e\" 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 loading=\"lazy\" decoding=\"async\" width=\"128\" height=\"38\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/05\/coop_logo.svg\" class=\"attachment-large size-large wp-image-4443\" alt=\"Coop logo \u2013 retail partner collaborating with Gimasi IoT solutions\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-85f6124 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"85f6124\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Real-time temperature monitoring across Switzerland's largest retail network<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-840a253 elementor-widget elementor-widget-image\" data-id=\"840a253\" 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 loading=\"lazy\" decoding=\"async\" width=\"727\" height=\"408\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/12\/Screenshot-2026-02-02-124818.jpg\" class=\"attachment-large size-large wp-image-9319\" alt=\"Swisscom Cold Chain food - protect food safety\" srcset=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/12\/Screenshot-2026-02-02-124818.jpg 727w, https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/12\/Screenshot-2026-02-02-124818-300x168.jpg 300w\" sizes=\"(max-width: 727px) 100vw, 727px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9bdcf07 e-con-full e-flex e-con e-child\" data-id=\"9bdcf07\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-dd8dcdf e-con-full e-flex e-con e-child\" data-id=\"dd8dcdf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b24b0c0 elementor-widget-mobile__width-initial elementor-widget elementor-widget-heading\" data-id=\"b24b0c0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Cold Chain Monitoring on a National Scale<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-44c26cb e-con-full e-flex e-con e-child\" data-id=\"44c26cb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ec0b5eb elementor-widget elementor-widget-heading\" data-id=\"ec0b5eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">FEATURED CASE STUDY<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-48d9906 e-grid e-con-full e-con e-child\" data-id=\"48d9906\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-9b8c87f e-con-full e-flex e-con e-child\" data-id=\"9b8c87f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7902a8 elementor-widget elementor-widget-heading\" data-id=\"a7902a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Real-time<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-02f7583 elementor-widget elementor-widget-text-editor\" data-id=\"02f7583\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Temperature Monitoring<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0fbeecd e-con-full e-flex e-con e-child\" data-id=\"0fbeecd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b1a36d0 elementor-widget elementor-widget-heading\" data-id=\"b1a36d0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">2000 ~<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-134adfb elementor-widget elementor-widget-text-editor\" data-id=\"134adfb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Retail stores<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c652f03 e-con-full e-flex e-con e-parent\" data-id=\"c652f03\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fbe2e61 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"fbe2e61\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-57c48ed e-flex e-con-boxed e-con e-parent\" data-id=\"57c48ed\" 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-a4c4488 elementor-align-right elementor-mobile-align-left elementor-widget elementor-widget-button\" data-id=\"a4c4488\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.swisscom.ch\/it\/business\/enterprise\/storie-di-successi\/commercio-allingrosso-e-al-dettaglio\/coop.html?srsltid=AfmBOorigerN2Zl0mJtPryEfKncPlF8lCjmQVLp0iJZLTKprxpWbVkM7\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-far-arrow-alt-circle-right\" viewBox=\"0 0 512 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Read Full Case Study<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4763930 e-con-full e-flex e-con e-parent\" data-id=\"4763930\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6970144 elementor-widget elementor-widget-html\" data-id=\"6970144\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n\r\n<style>\r\n\r\n\/* =========================================================\r\n   GIMASI \u2014 IOT APPLICATIONS SECTION\r\n   Self-contained Elementor Free section\r\n   ========================================================= *\/\r\n\r\n.gimasi-iot-section {\r\n    --blue: #003B78;\r\n    --blue-light: #6B8ADA;\r\n    --card-bg: #F5F9FC;\r\n    --card-border: #D8E1EA;\r\n    --text: #003B78;\r\n    --muted: #667892;\r\n\r\n    position: relative;\r\n    width: 100%;\r\n    min-height: 430px;\r\n\r\n    padding: 72px 6vw;\r\n\r\n    background: #ffffff;\r\n\r\n    overflow: hidden;\r\n\r\n    isolation: isolate;\r\n\r\n    font-family:\r\n        Arial,\r\n        Helvetica,\r\n        sans-serif;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   BACKGROUND CANVAS\r\n\r\n   IMPORTANT:\r\n   It belongs ONLY to .gimasi-iot-section\r\n   ========================================================= *\/\r\n\r\n.gimasi-iot-section .triangle-canvas {\r\n    position: absolute;\r\n\r\n    top: 0;\r\n    left: 0;\r\n\r\n    width: 140%;\r\n    height: 100%;\r\n\r\n    display: block;\r\n\r\n    z-index: 0;\r\n\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CONTENT LAYER\r\n   ========================================================= *\/\r\n\r\n.gimasi-iot-section .iot-content {\r\n    position: relative;\r\n\r\n    z-index: 2;\r\n\r\n    width: 100%;\r\n    max-width: 1680px;\r\n\r\n    margin: 0 auto;\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        minmax(320px, 0.85fr)\r\n        minmax(600px, 1.55fr);\r\n\r\n    gap: 70px;\r\n\r\n    align-items: center;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   LEFT SIDE\r\n   ========================================================= *\/\r\n\r\n.gimasi-iot-section .iot-intro {\r\n    max-width: 500px;\r\n}\r\n\r\n\r\n.gimasi-iot-section .iot-eyebrow {\r\n    margin: 0 0 24px;\r\n\r\n    font-size: 16px;\r\n\r\n    font-weight: 600;\r\n\r\n    line-height: 1.3;\r\n\r\n    color: var(--blue);\r\n\r\n    letter-spacing: 0.2px;\r\n\r\n    text-transform: uppercase;\r\n}\r\n\r\n\r\n.gimasi-iot-section .iot-title {\r\n    margin: 0;\r\n\r\n    max-width: 520px;\r\n\r\n    color: var(--blue);\r\n\r\n    font-size: clamp(\r\n        28px,\r\n        3vw,\r\n        42px\r\n    );\r\n\r\n    line-height: 1.18;\r\n\r\n    font-weight: 600;\r\n\r\n    letter-spacing: -0.5px;\r\n}\r\n\r\n\r\n.gimasi-iot-section .iot-button {\r\n    display: inline-flex;\r\n\r\n    align-items: center;\r\n    justify-content: center;\r\n\r\n    margin-top: 34px;\r\n\r\n    min-height: 42px;\r\n\r\n    padding:\r\n        11px\r\n        18px;\r\n\r\n    border-radius: 8px;\r\n\r\n    background: var(--blue);\r\n\r\n    color: #ffffff;\r\n\r\n    text-decoration: none;\r\n\r\n    font-size: 14px;\r\n\r\n    font-weight: 600;\r\n\r\n    transition:\r\n        transform 0.22s ease,\r\n        background 0.22s ease,\r\n        box-shadow 0.22s ease;\r\n}\r\n\r\n\r\n.gimasi-iot-section .iot-button:hover {\r\n    transform: translateY(-2px);\r\n\r\n    background: #002F60;\r\n\r\n    box-shadow:\r\n        0 8px 20px\r\n        rgba(0, 59, 120, 0.18);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   RIGHT SIDE \u2014 APPLICATION GRID\r\n   ========================================================= *\/\r\n\r\n.gimasi-iot-section .applications-grid {\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        repeat(3, minmax(150px, 1fr));\r\n\r\n    gap: 22px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   APPLICATION CARD\r\n   ========================================================= *\/\r\n\r\n.gimasi-iot-section .application-card {\r\n\r\n    position: relative;\r\n\r\n    min-height: 98px;\r\n\r\n    padding:\r\n        16px\r\n        18px;\r\n\r\n    border:\r\n        1px solid\r\n        var(--card-border);\r\n\r\n    border-radius: 7px;\r\n\r\n    background:\r\n        rgba(245, 249, 252, 0.88);\r\n\r\n    display: flex;\r\n\r\n    flex-direction: column;\r\n\r\n    justify-content: flex-start;\r\n\r\n    transition:\r\n        transform 0.25s ease,\r\n        border-color 0.25s ease,\r\n        background 0.25s ease,\r\n        box-shadow 0.25s ease;\r\n\r\n    backdrop-filter: blur(3px);\r\n}\r\n\r\n\r\n.gimasi-iot-section .application-card:hover {\r\n\r\n    transform:\r\n        translateY(-4px);\r\n\r\n    border-color:\r\n        rgba(75, 112, 208, 0.45);\r\n\r\n    background:\r\n        rgba(255, 255, 255, 0.96);\r\n\r\n    box-shadow:\r\n        0 10px 24px\r\n        rgba(0, 59, 120, 0.08);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CARD HEADER\r\n   ========================================================= *\/\r\n\r\n.gimasi-iot-section .application-header {\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    gap: 10px;\r\n\r\n    margin-bottom: 10px;\r\n}\r\n\r\n\r\n.gimasi-iot-section .application-icon {\r\n\r\n    width: 25px;\r\n    height: 25px;\r\n\r\n    flex: 0 0 25px;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n    justify-content: center;\r\n\r\n    color: #000000;\r\n\r\n    font-size: 22px;\r\n\r\n    line-height: 1;\r\n}\r\n\r\n\r\n.gimasi-iot-section .application-title {\r\n\r\n    margin: 0;\r\n\r\n    color: var(--blue);\r\n\r\n    font-size: 18px;\r\n\r\n    line-height: 1.2;\r\n\r\n    font-weight: 600;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CARD TEXT\r\n   ========================================================= *\/\r\n\r\n.gimasi-iot-section .application-description {\r\n\r\n    margin: 0 0 0 35px;\r\n\r\n    color: var(--muted);\r\n\r\n    font-family:\r\n        Georgia,\r\n        \"Times New Roman\",\r\n        serif;\r\n\r\n    font-size: 13px;\r\n\r\n    line-height: 1.55;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TRIANGLE BACKGROUND \u2014 DESKTOP\r\n   ========================================================= *\/\r\n\r\n.gimasi-iot-section .triangle-canvas {\r\n\r\n    opacity: 1;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TABLET\r\n   ========================================================= *\/\r\n\r\n@media (max-width: 1100px) {\r\n\r\n    .gimasi-iot-section {\r\n\r\n        padding:\r\n            60px 35px;\r\n    }\r\n\r\n    .gimasi-iot-section .iot-content {\r\n\r\n        grid-template-columns:\r\n            1fr;\r\n\r\n        gap: 45px;\r\n    }\r\n\r\n    .gimasi-iot-section .iot-intro {\r\n\r\n        max-width: 650px;\r\n    }\r\n\r\n    .gimasi-iot-section .applications-grid {\r\n\r\n        grid-template-columns:\r\n            repeat(3, 1fr);\r\n\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SMALL TABLET\r\n   ========================================================= *\/\r\n\r\n@media (max-width: 760px) {\r\n\r\n    .gimasi-iot-section {\r\n\r\n        padding:\r\n            50px 25px;\r\n\r\n    }\r\n\r\n    .gimasi-iot-section .iot-title {\r\n\r\n        font-size: 30px;\r\n    }\r\n\r\n    .gimasi-iot-section .applications-grid {\r\n\r\n        grid-template-columns:\r\n            repeat(2, 1fr);\r\n\r\n        gap: 16px;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MOBILE\r\n   ========================================================= *\/\r\n\r\n@media (max-width: 520px) {\r\n\r\n    .gimasi-iot-section {\r\n\r\n        padding:\r\n            45px 20px;\r\n\r\n        min-height: auto;\r\n    }\r\n\r\n    .gimasi-iot-section .iot-content {\r\n\r\n        gap: 35px;\r\n    }\r\n\r\n    .gimasi-iot-section .iot-eyebrow {\r\n\r\n        font-size: 13px;\r\n\r\n        margin-bottom: 17px;\r\n    }\r\n\r\n    .gimasi-iot-section .iot-title {\r\n\r\n        font-size: 27px;\r\n\r\n        line-height: 1.2;\r\n    }\r\n\r\n    .gimasi-iot-section .applications-grid {\r\n\r\n        grid-template-columns:\r\n            1fr;\r\n\r\n        gap: 13px;\r\n    }\r\n\r\n    .gimasi-iot-section .application-card {\r\n\r\n        min-height: 90px;\r\n    }\r\n\r\n    \/*\r\n     * Sul telefono diminuiamo leggermente\r\n     * il movimento dei triangoli.\r\n     *\/\r\n\r\n    .gimasi-iot-section .triangle-canvas {\r\n\r\n        opacity: 0.65;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ACCESSIBILITY\r\n   ========================================================= *\/\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n\r\n    .gimasi-iot-section .application-card,\r\n    .gimasi-iot-section .iot-button {\r\n\r\n        transition: none;\r\n    }\r\n\r\n}\r\n\r\n<\/style>\r\n<\/head>\r\n\r\n\r\n<body>\r\n\r\n\r\n<section class=\"gimasi-iot-section\"\r\n         aria-label=\"IoT applications\">\r\n\r\n\r\n    <!-- =====================================================\r\n         INTERACTIVE BACKGROUND\r\n         ===================================================== -->\r\n\r\n    <canvas\r\n        class=\"triangle-canvas\"\r\n        aria-hidden=\"true\">\r\n    <\/canvas>\r\n\r\n\r\n    <!-- =====================================================\r\n         MAIN CONTENT\r\n         ===================================================== -->\r\n\r\n    <div class=\"iot-content\">\r\n\r\n\r\n        <!-- =================================================\r\n             LEFT\r\n             ================================================= -->\r\n\r\n        <div class=\"iot-intro\">\r\n\r\n            <p class=\"iot-eyebrow\">\r\n                UNDERSTAND THE NEED. BUILD THE SOLUTION.\r\n            <\/p>\r\n\r\n\r\n            <h2 class=\"iot-title\">\r\n              Every Gimasi IoT solution is built around the real need.\r\n            <\/h2>\r\n\r\n\r\n            <a\r\n                href=\"https:\/\/www.gimasi.com\/?page_id=1712\"\r\n                class=\"iot-button\">\r\n\r\n                Contact our Engineers\r\n\r\n            <\/a>\r\n\r\n        <\/div>\r\n\r\n\r\n\r\n        <!-- =================================================\r\n             RIGHT \u2014 APPLICATIONS\r\n             ================================================= -->\r\n\r\n        <div class=\"applications-grid\">\r\n\r\n\r\n            <!-- MONITOR -->\r\n\r\n            <article class=\"application-card\">\r\n\r\n                <div class=\"application-header\">\r\n\r\n                    <div class=\"application-icon\">\r\n                        \u2197\r\n                    <\/div>\r\n\r\n                    <h3 class=\"application-title\">\r\n                        Monitor\r\n                    <\/h3>\r\n\r\n                <\/div>\r\n\r\n                <p class=\"application-description\">\r\n                    Temperature \u00b7 Humidity \u00b7 Environment\r\n                <\/p>\r\n\r\n            <\/article>\r\n\r\n\r\n\r\n            <!-- TRACK -->\r\n\r\n            <article class=\"application-card\">\r\n\r\n                <div class=\"application-header\">\r\n\r\n                    <div class=\"application-icon\">\r\n                        \u2691\r\n                    <\/div>\r\n\r\n                    <h3 class=\"application-title\">\r\n                        Track\r\n                    <\/h3>\r\n\r\n                <\/div>\r\n\r\n                <p class=\"application-description\">\r\n                    Assets \u00b7 Vehicles \u00b7 Equipment\r\n                <\/p>\r\n\r\n            <\/article>\r\n\r\n\r\n\r\n            <!-- TRIGGER -->\r\n\r\n            <article class=\"application-card\">\r\n\r\n                <div class=\"application-header\">\r\n\r\n                    <div class=\"application-icon\">\r\n                        \u26a1\r\n                    <\/div>\r\n\r\n                    <h3 class=\"application-title\">\r\n                        Trigger\r\n                    <\/h3>\r\n\r\n                <\/div>\r\n\r\n                <p class=\"application-description\">\r\n                    Service \u00b7 Assistance \u00b7 Workflows\r\n                <\/p>\r\n\r\n            <\/article>\r\n\r\n\r\n\r\n            <!-- MEASURE -->\r\n\r\n            <article class=\"application-card\">\r\n\r\n                <div class=\"application-header\">\r\n\r\n                    <div class=\"application-icon\">\r\n                        \u2692\r\n                    <\/div>\r\n\r\n                    <h3 class=\"application-title\">\r\n                        Measure\r\n                    <\/h3>\r\n\r\n                <\/div>\r\n\r\n                <p class=\"application-description\">\r\n                    Fill levels \u00b7 Usage \u00b7 Conditions\r\n                <\/p>\r\n\r\n            <\/article>\r\n\r\n\r\n\r\n            <!-- CONNECT -->\r\n\r\n            <article class=\"application-card\">\r\n\r\n                <div class=\"application-header\">\r\n\r\n                    <div class=\"application-icon\">\r\n                        \u25c9\r\n                    <\/div>\r\n\r\n                    <h3 class=\"application-title\">\r\n                        Connect\r\n                    <\/h3>\r\n\r\n                <\/div>\r\n\r\n                <p class=\"application-description\">\r\n                    Smart &amp; Sustainable Agriculture\r\n                <\/p>\r\n\r\n            <\/article>\r\n\r\n\r\n\r\n            <!-- OPTIMIZE -->\r\n\r\n            <article class=\"application-card\">\r\n\r\n                <div class=\"application-header\">\r\n\r\n                    <div class=\"application-icon\">\r\n                        \u2713\r\n                    <\/div>\r\n\r\n                    <h3 class=\"application-title\">\r\n                        Optimize\r\n                    <\/h3>\r\n\r\n                <\/div>\r\n\r\n                <p class=\"application-description\">\r\n                    Data \u00b7 Alerts \u00b7 Automation\r\n                <\/p>\r\n\r\n            <\/article>\r\n\r\n\r\n        <\/div>\r\n\r\n\r\n    <\/div>\r\n\r\n\r\n<\/section>\r\n\r\n\r\n\r\n<script>\r\n\r\n(function () {\r\n\r\n    \/*\r\n     * =========================================================\r\n     * GIMASI INTERACTIVE TRIANGLES\r\n     * =========================================================\r\n     *\/\r\n\r\n    function initTriangleBackground() {\r\n\r\n        const sections =\r\n            document.querySelectorAll(\r\n                \".gimasi-iot-section\"\r\n            );\r\n\r\n\r\n        sections.forEach(function (section) {\r\n\r\n\r\n            const canvas =\r\n                section.querySelector(\r\n                    \".triangle-canvas\"\r\n                );\r\n\r\n\r\n            if (!canvas) {\r\n                return;\r\n            }\r\n\r\n\r\n            const ctx =\r\n                canvas.getContext(\"2d\");\r\n\r\n\r\n            let width = 0;\r\n            let height = 0;\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * MOUSE\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            const mouse = {\r\n\r\n                x: -1000,\r\n\r\n                y: -1000,\r\n\r\n                active: false\r\n\r\n            };\r\n\r\n\r\n            section.addEventListener(\r\n                \"mousemove\",\r\n                function (event) {\r\n\r\n                    const rect =\r\n                        section.getBoundingClientRect();\r\n\r\n\r\n                    mouse.x =\r\n                        event.clientX -\r\n                        rect.left;\r\n\r\n\r\n                    mouse.y =\r\n                        event.clientY -\r\n                        rect.top;\r\n\r\n\r\n                    mouse.active = true;\r\n\r\n                },\r\n                {\r\n                    passive: true\r\n                }\r\n            );\r\n\r\n\r\n            section.addEventListener(\r\n                \"mouseleave\",\r\n                function () {\r\n\r\n                    mouse.active = false;\r\n\r\n                }\r\n            );\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * TRIANGLES\r\n             * -----------------------------------------------------\r\n             *\r\n             * More sparse than before.\r\n             * Outline only.\r\n             *\/\r\n\r\n            const triangles = [];\r\n\r\n\r\n            const triangleCount = 65;\r\n\r\n\r\n            function createTriangles() {\r\n\r\n                triangles.length = 0;\r\n\r\n\r\n                for (\r\n                    let i = 0;\r\n                    i < triangleCount;\r\n                    i++\r\n                ) {\r\n\r\n                    triangles.push({\r\n\r\n                        x:\r\n                            Math.random() *\r\n                            width,\r\n\r\n                        y:\r\n                            Math.random() *\r\n                            height,\r\n\r\n\r\n                        size:\r\n                            8 +\r\n                            Math.random() *\r\n                            15,\r\n\r\n\r\n                        rotation:\r\n                            Math.random() *\r\n                            Math.PI *\r\n                            2,\r\n\r\n\r\n                        rotationSpeed:\r\n                            (\r\n                                Math.random() -\r\n                                0.5\r\n                            ) * 0.002,\r\n\r\n\r\n                        driftX:\r\n                            (\r\n                                Math.random() -\r\n                                0.5\r\n                            ) * 0.035,\r\n\r\n\r\n                        driftY:\r\n                            (\r\n                                Math.random() -\r\n                                0.5\r\n                            ) * 0.035,\r\n\r\n\r\n                        pushX: 0,\r\n\r\n                        pushY: 0,\r\n\r\n\r\n                        opacity:\r\n                            0.12 +\r\n                            Math.random() *\r\n                            0.14\r\n\r\n                    });\r\n\r\n                }\r\n\r\n            }\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * RESIZE\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            function resize() {\r\n\r\n                const rect =\r\n                    section.getBoundingClientRect();\r\n\r\n\r\n                width =\r\n                    rect.width;\r\n\r\n\r\n                height =\r\n                    rect.height;\r\n\r\n\r\n                if (\r\n                    width <= 0 ||\r\n                    height <= 0\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const dpr =\r\n                    Math.min(\r\n                        window.devicePixelRatio ||\r\n                        1,\r\n                        2\r\n                    );\r\n\r\n\r\n                canvas.width =\r\n                    width * dpr;\r\n\r\n\r\n                canvas.height =\r\n                    height * dpr;\r\n\r\n\r\n                canvas.style.width =\r\n                    width + \"px\";\r\n\r\n\r\n                canvas.style.height =\r\n                    height + \"px\";\r\n\r\n\r\n                ctx.setTransform(\r\n                    dpr,\r\n                    0,\r\n                    0,\r\n                    dpr,\r\n                    0,\r\n                    0\r\n                );\r\n\r\n\r\n                createTriangles();\r\n\r\n            }\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * DRAW OUTLINED TRIANGLE\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            function drawTriangle(t) {\r\n\r\n                const x =\r\n                    t.x + t.pushX;\r\n\r\n\r\n                const y =\r\n                    t.y + t.pushY;\r\n\r\n\r\n                ctx.save();\r\n\r\n\r\n                ctx.translate(\r\n                    x,\r\n                    y\r\n                );\r\n\r\n\r\n                ctx.rotate(\r\n                    t.rotation\r\n                );\r\n\r\n\r\n                ctx.beginPath();\r\n\r\n\r\n                ctx.moveTo(\r\n                    0,\r\n                    -t.size\r\n                );\r\n\r\n\r\n                ctx.lineTo(\r\n                    t.size,\r\n                    t.size\r\n                );\r\n\r\n\r\n                ctx.lineTo(\r\n                    -t.size,\r\n                    t.size\r\n                );\r\n\r\n\r\n                ctx.closePath();\r\n\r\n\r\n                \/*\r\n                 * EMPTY TRIANGLE\r\n                 *\r\n                 * Only the outline is drawn.\r\n                 *\/\r\n\r\n                ctx.strokeStyle =\r\n                    \"rgba(75,112,208,\" +\r\n                    t.opacity +\r\n                    \")\";\r\n\r\n\r\n                ctx.lineWidth = 1;\r\n\r\n\r\n                ctx.stroke();\r\n\r\n\r\n                ctx.restore();\r\n\r\n            }\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * ANIMATION\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            function animate() {\r\n\r\n\r\n                ctx.clearRect(\r\n                    0,\r\n                    0,\r\n                    width,\r\n                    height\r\n                );\r\n\r\n\r\n                triangles.forEach(\r\n                    function (t) {\r\n\r\n\r\n                        \/*\r\n                         * Very slow natural movement\r\n                         *\/\r\n\r\n                        t.x +=\r\n                            t.driftX;\r\n\r\n\r\n                        t.y +=\r\n                            t.driftY;\r\n\r\n\r\n                        t.rotation +=\r\n                            t.rotationSpeed;\r\n\r\n\r\n                        \/*\r\n                         * -------------------------------------------------\r\n                         * MOUSE INTERACTION\r\n                         * -------------------------------------------------\r\n                         *\/\r\n\r\n                        if (mouse.active) {\r\n\r\n\r\n                            const dx =\r\n                                t.x -\r\n                                mouse.x;\r\n\r\n\r\n                            const dy =\r\n                                t.y -\r\n                                mouse.y;\r\n\r\n\r\n                            const distance =\r\n                                Math.sqrt(\r\n                                    dx * dx +\r\n                                    dy * dy\r\n                                );\r\n\r\n\r\n                            \/*\r\n                             * Larger interaction area\r\n                             *\/\r\n\r\n                            const radius =\r\n                                190;\r\n\r\n\r\n                            if (\r\n                                distance <\r\n                                radius\r\n                            ) {\r\n\r\n\r\n                                const force =\r\n                                    (\r\n                                        radius -\r\n                                        distance\r\n                                    ) \/\r\n                                    radius;\r\n\r\n\r\n                                const angle =\r\n                                    Math.atan2(\r\n                                        dy,\r\n                                        dx\r\n                                    );\r\n\r\n\r\n                                \/*\r\n                                 * Stronger movement\r\n                                 *\/\r\n\r\n                                const targetX =\r\n                                    Math.cos(\r\n                                        angle\r\n                                    ) *\r\n                                    force *\r\n                                    65;\r\n\r\n\r\n                                const targetY =\r\n                                    Math.sin(\r\n                                        angle\r\n                                    ) *\r\n                                    force *\r\n                                    65;\r\n\r\n\r\n                                \/*\r\n                                 * Smooth movement\r\n                                 *\/\r\n\r\n                                t.pushX +=\r\n                                    (\r\n                                        targetX -\r\n                                        t.pushX\r\n                                    ) * 0.16;\r\n\r\n\r\n                                t.pushY +=\r\n                                    (\r\n                                        targetY -\r\n                                        t.pushY\r\n                                    ) * 0.16;\r\n\r\n\r\n                                \/*\r\n                                 * Mouse proximity\r\n                                 * also makes the triangle\r\n                                 * rotate more visibly.\r\n                                 *\/\r\n\r\n                                t.rotation +=\r\n                                    force *\r\n                                    0.025;\r\n\r\n\r\n                            } else {\r\n\r\n\r\n                                t.pushX *=\r\n                                    0.90;\r\n\r\n\r\n                                t.pushY *=\r\n                                    0.90;\r\n\r\n                            }\r\n\r\n\r\n                        } else {\r\n\r\n\r\n                            t.pushX *=\r\n                                0.94;\r\n\r\n\r\n                            t.pushY *=\r\n                                0.94;\r\n\r\n                        }\r\n\r\n\r\n                        \/*\r\n                         * -------------------------------------------------\r\n                         * KEEP TRIANGLES INSIDE SECTION\r\n                         * -------------------------------------------------\r\n                         *\/\r\n\r\n                        if (\r\n                            t.x <\r\n                            -40\r\n                        ) {\r\n\r\n                            t.x =\r\n                                width + 40;\r\n\r\n                        }\r\n\r\n\r\n                        if (\r\n                            t.x >\r\n                            width + 40\r\n                        ) {\r\n\r\n                            t.x =\r\n                                -40;\r\n\r\n                        }\r\n\r\n\r\n                        if (\r\n                            t.y <\r\n                            -40\r\n                        ) {\r\n\r\n                            t.y =\r\n                                height + 40;\r\n\r\n                        }\r\n\r\n\r\n                        if (\r\n                            t.y >\r\n                            height + 40\r\n                        ) {\r\n\r\n                            t.y =\r\n                                -40;\r\n\r\n                        }\r\n\r\n\r\n                        drawTriangle(t);\r\n\r\n                    }\r\n                );\r\n\r\n\r\n                requestAnimationFrame(\r\n                    animate\r\n                );\r\n\r\n            }\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * START\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            resize();\r\n\r\n            animate();\r\n\r\n\r\n            window.addEventListener(\r\n                \"resize\",\r\n                resize,\r\n                {\r\n                    passive: true\r\n                }\r\n            );\r\n\r\n        });\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * Elementor \/ normal browser loading\r\n     *\/\r\n\r\n    if (\r\n        document.readyState ===\r\n        \"loading\"\r\n    ) {\r\n\r\n        document.addEventListener(\r\n            \"DOMContentLoaded\",\r\n            initTriangleBackground\r\n        );\r\n\r\n    } else {\r\n\r\n        initTriangleBackground();\r\n\r\n    }\r\n\r\n\r\n})();\r\n\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-adb264c e-con-full e-flex e-con e-parent\" data-id=\"adb264c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cddc864 elementor-widget elementor-widget-html\" data-id=\"cddc864\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     GIMASI \u2014 READY-TO-USE DEVICES \/ PRODUCT PORTFOLIO\r\n     Add this section AFTER the existing .gimasi-iot-section\r\n     ========================================================= -->\r\n\r\n<section class=\"gimasi-products-section\"\r\n         aria-label=\"Gimasi IoT product portfolio\">\r\n\r\n\r\n    <!-- =====================================================\r\n         BACKGROUND TRIANGLES\r\n         Uses the same visual language as the previous section\r\n         ===================================================== -->\r\n\r\n    <canvas\r\n        class=\"products-triangle-canvas\"\r\n        aria-hidden=\"true\">\r\n    <\/canvas>\r\n\r\n\r\n    <!-- =====================================================\r\n         CONTENT\r\n         ===================================================== -->\r\n\r\n    <div class=\"products-content\">\r\n\r\n\r\n        <!-- =================================================\r\n             SECTION INTRO\r\n             ================================================= -->\r\n\r\n        <div class=\"products-intro\">\r\n\r\n            <h2 class=\"products-title\">\r\n                Need a ready-to-use device?\r\n            <\/h2>\r\n\r\n            <p class=\"products-subtitle\">\r\n                Our portfolio covers the most common IoT applications.\r\n            <\/p>\r\n\r\n        <\/div>\r\n\r\n\r\n\r\n        <!-- =================================================\r\n             PRODUCT GRID\r\n             ================================================= -->\r\n\r\n        <div class=\"products-grid\">\r\n\r\n\r\n            <!-- =================================================\r\n                 SENSOR CLIMA XL\r\n                 ================================================= -->\r\n\r\n            <a\r\n                href=\"https:\/\/www.gimasi.com\/?page_id=2202\"\r\n                class=\"product-card\"\r\n                aria-label=\"Discover Sensor Clima XL\">\r\n\r\n\r\n                <div class=\"product-image-wrap\">\r\n\r\n                    <!--\r\n                    REPLACE THIS IMAGE URL\r\n                    with your actual WordPress image URL.\r\n                    -->\r\n\r\n                    <img decoding=\"async\"\r\n                        src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/SENSOR_CLIMA_XL16.04.26.jpg\"\r\n                        alt=\"Sensor Clima XL\"\r\n                        class=\"product-image\"\r\n                        loading=\"lazy\"\r\n                    >\r\n\r\n\r\n                    <!-- subtle image overlay -->\r\n\r\n                    <div class=\"product-image-overlay\"><\/div>\r\n\r\n\r\n                    <!-- product name -->\r\n\r\n                    <div class=\"product-name\">\r\n\r\n                        <span>\r\n                            Sensor Clima XL\r\n                        <\/span>\r\n\r\n                        <span class=\"product-arrow\">\r\n                            \u2192\r\n                        <\/span>\r\n\r\n                    <\/div>\r\n\r\n                <\/div>\r\n\r\n\r\n                <div class=\"product-meta\">\r\n\r\n                    Industrial Cold Chain\r\n                    <span>\u00b7<\/span>\r\n                    LoRaWAN\r\n                    <span>\u00b7<\/span>\r\n                    IP67\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/a>\r\n\r\n\r\n\r\n            <!-- =================================================\r\n                 SENSOR CLIMA\r\n                 ================================================= -->\r\n\r\n            <a\r\n                href=\"https:\/\/www.gimasi.com\/?page_id=1921\"\r\n                class=\"product-card\"\r\n                aria-label=\"Discover Sensor Clima\">\r\n\r\n\r\n                <div class=\"product-image-wrap\">\r\n\r\n                    <!--\r\n                    REPLACE THIS IMAGE URL\r\n                    with your actual WordPress image URL.\r\n                    -->\r\n\r\n                    <img decoding=\"async\"\r\n                        src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/07\/Gemini_Generated_Image_kivz9ukivz9ukivz.jpg\"\r\n                        alt=\"Sensor Clima\"\r\n                        class=\"product-image\"\r\n                        loading=\"lazy\"\r\n                    >\r\n\r\n\r\n                    <div class=\"product-image-overlay\"><\/div>\r\n\r\n\r\n                    <div class=\"product-name\">\r\n\r\n                        <span>\r\n                            Sensor Clima\r\n                        <\/span>\r\n\r\n                        <span class=\"product-arrow\">\r\n                            \u2192\r\n                        <\/span>\r\n\r\n                    <\/div>\r\n\r\n                <\/div>\r\n\r\n\r\n                <div class=\"product-meta\">\r\n\r\n                    Environmental Monitoring\r\n                    <span>\u00b7<\/span>\r\n                    LoRaWAN\r\n                    <span>\u00b7<\/span>\r\n                    IP67\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/a>\r\n\r\n\r\n\r\n            <!-- =================================================\r\n                 SERVICE BUTTON\r\n                 ================================================= -->\r\n\r\n            <a\r\n                href=\"https:\/\/www.gimasi.com\/?page_id=1922\"\r\n                class=\"product-card\"\r\n                aria-label=\"Discover Service Button\">\r\n\r\n\r\n                <div class=\"product-image-wrap\">\r\n\r\n                    <!--\r\n                    REPLACE THIS IMAGE URL\r\n                    with your actual WordPress image URL.\r\n                    -->\r\n\r\n                    <img decoding=\"async\"\r\n                        src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/08\/LinkedIn-Carousel-23-e1787121444830.jpg\"\r\n                        alt=\"Service Button\"\r\n                        class=\"product-image\"\r\n                        loading=\"lazy\"\r\n                    >\r\n\r\n\r\n                    <div class=\"product-image-overlay\"><\/div>\r\n\r\n\r\n                    <div class=\"product-name\">\r\n\r\n                        <span>\r\n                            Service Button\r\n                        <\/span>\r\n\r\n                        <span class=\"product-arrow\">\r\n                            \u2192\r\n                        <\/span>\r\n\r\n                    <\/div>\r\n\r\n                <\/div>\r\n\r\n\r\n                <div class=\"product-meta\">\r\n\r\n                    Wireless Call Button\r\n                    <span>\u00b7<\/span>\r\n                    NB-IoT \/ LTE-M\r\n                    <span>\u00b7<\/span>\r\n                    IP54\r\n\r\n                <\/div>\r\n\r\n\r\n            <\/a>\r\n\r\n\r\n        <\/div>\r\n\r\n\r\n\r\n        <!-- =================================================\r\n             CTA\r\n             ================================================= -->\r\n\r\n        <div class=\"products-footer\">\r\n\r\n            <a\r\n                href=\"https:\/\/www.gimasi.com\/?page_id=1940\"\r\n                class=\"products-button\">\r\n\r\n                Compare all products\r\n\r\n                <span>\r\n                    \u2192\r\n                <\/span>\r\n\r\n            <\/a>\r\n\r\n        <\/div>\r\n\r\n\r\n    <\/div>\r\n\r\n<\/section>\r\n\r\n\r\n\r\n<style>\r\n\r\n\/* =========================================================\r\n   GIMASI \u2014 PRODUCT PORTFOLIO SECTION\r\n   ========================================================= *\/\r\n\r\n\r\n\/* =========================================================\r\n   SECTION\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section {\r\n\r\n    --products-blue: #003B78;\r\n\r\n    --products-blue-dark: #002F60;\r\n\r\n    --products-border: #D8E1EA;\r\n\r\n    --products-bg: #F5F9FC;\r\n\r\n    --products-muted: #667892;\r\n\r\n    position: relative;\r\n\r\n    width: 100%;\r\n\r\n    padding:\r\n        72px 6vw\r\n        78px;\r\n\r\n    background: #FFFFFF;\r\n\r\n    overflow: hidden;\r\n\r\n    isolation: isolate;\r\n\r\n    font-family:\r\n        Arial,\r\n        Helvetica,\r\n        sans-serif;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   BACKGROUND CANVAS\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.products-triangle-canvas {\r\n\r\n    position: absolute;\r\n\r\n    inset: 0;\r\n\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n    display: block;\r\n\r\n    z-index: 0;\r\n\r\n    pointer-events: none;\r\n\r\n    opacity: 0.8;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CONTENT\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.products-content {\r\n\r\n    position: relative;\r\n\r\n    z-index: 2;\r\n\r\n    width: 100%;\r\n\r\n    max-width: 1120px;\r\n\r\n    margin: 0 auto;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   INTRO\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.products-intro {\r\n\r\n    text-align: center;\r\n\r\n    margin-bottom: 42px;\r\n}\r\n\r\n\r\n.gimasi-products-section\r\n.products-title {\r\n\r\n    margin: 0;\r\n\r\n    color:\r\n        var(--products-blue);\r\n\r\n    font-size:\r\n        clamp(\r\n            27px,\r\n            3vw,\r\n            38px\r\n        );\r\n\r\n    line-height: 1.15;\r\n\r\n    font-weight: 600;\r\n\r\n    letter-spacing:\r\n        -0.5px;\r\n}\r\n\r\n\r\n.gimasi-products-section\r\n.products-subtitle {\r\n\r\n    margin:\r\n        10px 0 0;\r\n\r\n    color:\r\n        var(--products-blue);\r\n\r\n    font-size:\r\n        clamp(\r\n            16px,\r\n            1.5vw,\r\n            20px\r\n        );\r\n\r\n    line-height: 1.45;\r\n\r\n    font-weight: 400;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   PRODUCT GRID\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.products-grid {\r\n\r\n    display: grid;\r\n\r\n    grid-template-columns:\r\n        repeat(\r\n            3,\r\n            minmax(0, 1fr)\r\n        );\r\n\r\n    gap: 38px;\r\n\r\n    align-items: start;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   PRODUCT CARD\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.product-card {\r\n\r\n    display: block;\r\n\r\n    position: relative;\r\n\r\n    color: inherit;\r\n\r\n    text-decoration: none;\r\n\r\n    outline: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   IMAGE WRAPPER\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.product-image-wrap {\r\n\r\n    position: relative;\r\n\r\n    width: 100%;\r\n\r\n    aspect-ratio:\r\n        0.84 \/ 1;\r\n\r\n    overflow: hidden;\r\n\r\n    border-radius: 10px;\r\n\r\n    background:\r\n        var(--products-bg);\r\n\r\n    border:\r\n        1px solid\r\n        rgba(\r\n            216,\r\n            225,\r\n            234,\r\n            0.9\r\n        );\r\n\r\n    box-shadow:\r\n        0 4px 18px\r\n        rgba(\r\n            0,\r\n            59,\r\n            120,\r\n            0.04\r\n        );\r\n\r\n    transition:\r\n        transform 0.28s ease,\r\n        box-shadow 0.28s ease,\r\n        border-color 0.28s ease;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   IMAGE\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.product-image {\r\n\r\n    position: absolute;\r\n\r\n    inset: 0;\r\n\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n    display: block;\r\n\r\n    object-fit: cover;\r\n\r\n    object-position: center;\r\n\r\n    transition:\r\n        transform 0.5s\r\n        cubic-bezier(\r\n            0.22,\r\n            1,\r\n            0.36,\r\n            1\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   IMAGE OVERLAY\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.product-image-overlay {\r\n\r\n    position: absolute;\r\n\r\n    inset: 0;\r\n\r\n    z-index: 1;\r\n\r\n    background:\r\n        linear-gradient(\r\n            to bottom,\r\n            rgba(0,0,0,0)\r\n            55%,\r\n\r\n            rgba(0,0,0,0.04)\r\n            70%,\r\n\r\n            rgba(0,0,0,0.42)\r\n            100%\r\n        );\r\n\r\n    pointer-events: none;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   PRODUCT NAME\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.product-name {\r\n\r\n    position: absolute;\r\n\r\n    left: 0;\r\n    right: 0;\r\n\r\n    bottom: 0;\r\n\r\n    z-index: 2;\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    justify-content: space-between;\r\n\r\n    gap: 15px;\r\n\r\n    padding:\r\n        22px 18px\r\n        17px;\r\n\r\n    color: #FFFFFF;\r\n\r\n    font-size:\r\n        clamp(\r\n            19px,\r\n            2vw,\r\n            25px\r\n        );\r\n\r\n    line-height: 1.1;\r\n\r\n    font-weight: 700;\r\n\r\n    text-transform: uppercase;\r\n\r\n    letter-spacing:\r\n        0.2px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   PRODUCT ARROW\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.product-arrow {\r\n\r\n    display: flex;\r\n\r\n    align-items: center;\r\n\r\n    justify-content: center;\r\n\r\n    flex:\r\n        0 0 31px;\r\n\r\n    width: 31px;\r\n    height: 31px;\r\n\r\n    border:\r\n        1px solid\r\n        rgba(\r\n            255,\r\n            255,\r\n            255,\r\n            0.65\r\n        );\r\n\r\n    border-radius: 50%;\r\n\r\n    background:\r\n        rgba(\r\n            0,\r\n            59,\r\n            120,\r\n            0.35\r\n        );\r\n\r\n    font-size: 16px;\r\n\r\n    transition:\r\n        transform 0.25s ease,\r\n        background 0.25s ease;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   PRODUCT META\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.product-meta {\r\n\r\n    margin-top: 12px;\r\n\r\n    padding:\r\n        0 3px;\r\n\r\n    color:\r\n        var(--products-muted);\r\n\r\n    font-size: 12px;\r\n\r\n    line-height: 1.5;\r\n\r\n    font-weight: 500;\r\n}\r\n\r\n\r\n.gimasi-products-section\r\n.product-meta span {\r\n\r\n    padding:\r\n        0 4px;\r\n\r\n    color:\r\n        #A9B5C4;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HOVER\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.product-card:hover\r\n.product-image-wrap {\r\n\r\n    transform:\r\n        translateY(-5px);\r\n\r\n    border-color:\r\n        rgba(\r\n            75,\r\n            112,\r\n            208,\r\n            0.4\r\n        );\r\n\r\n    box-shadow:\r\n        0 18px 38px\r\n        rgba(\r\n            0,\r\n            59,\r\n            120,\r\n            0.13\r\n        );\r\n}\r\n\r\n\r\n.gimasi-products-section\r\n.product-card:hover\r\n.product-image {\r\n\r\n    transform:\r\n        scale(1.035);\r\n}\r\n\r\n\r\n.gimasi-products-section\r\n.product-card:hover\r\n.product-arrow {\r\n\r\n    transform:\r\n        translateX(3px);\r\n\r\n    background:\r\n        rgba(\r\n            0,\r\n            59,\r\n            120,\r\n            0.75\r\n        );\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   FOCUS\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.product-card:focus-visible\r\n.product-image-wrap {\r\n\r\n    outline:\r\n        3px solid\r\n        rgba(\r\n            75,\r\n            112,\r\n            208,\r\n            0.45\r\n        );\r\n\r\n    outline-offset:\r\n        4px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   FOOTER \/ CTA\r\n   ========================================================= *\/\r\n\r\n.gimasi-products-section\r\n.products-footer {\r\n\r\n    display: flex;\r\n\r\n    justify-content: flex-end;\r\n\r\n    margin-top: 26px;\r\n}\r\n\r\n\r\n.gimasi-products-section\r\n.products-button {\r\n\r\n    display: inline-flex;\r\n\r\n    align-items: center;\r\n\r\n    gap: 12px;\r\n\r\n    min-height: 42px;\r\n\r\n    padding:\r\n        11px 17px;\r\n\r\n    border-radius: 8px;\r\n\r\n    background:\r\n        var(--products-blue);\r\n\r\n    color: #FFFFFF;\r\n\r\n    text-decoration: none;\r\n\r\n    font-size: 13px;\r\n\r\n    font-weight: 600;\r\n\r\n    transition:\r\n        transform 0.22s ease,\r\n        background 0.22s ease,\r\n        box-shadow 0.22s ease;\r\n}\r\n\r\n\r\n.gimasi-products-section\r\n.products-button span {\r\n\r\n    font-size: 16px;\r\n\r\n    line-height: 1;\r\n\r\n    transition:\r\n        transform 0.22s ease;\r\n}\r\n\r\n\r\n.gimasi-products-section\r\n.products-button:hover {\r\n\r\n    background:\r\n        var(--products-blue-dark);\r\n\r\n    transform:\r\n        translateY(-2px);\r\n\r\n    box-shadow:\r\n        0 8px 20px\r\n        rgba(\r\n            0,\r\n            59,\r\n            120,\r\n            0.18\r\n        );\r\n}\r\n\r\n\r\n.gimasi-products-section\r\n.products-button:hover span {\r\n\r\n    transform:\r\n        translateX(3px);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TABLET\r\n   ========================================================= *\/\r\n\r\n@media (max-width: 900px) {\r\n\r\n    .gimasi-products-section {\r\n\r\n        padding:\r\n            60px 35px\r\n            65px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .products-grid {\r\n\r\n        gap: 22px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .product-name {\r\n\r\n        font-size: 20px;\r\n\r\n        padding:\r\n            19px 15px\r\n            15px;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   SMALL TABLET\r\n   ========================================================= *\/\r\n\r\n@media (max-width: 720px) {\r\n\r\n    .gimasi-products-section {\r\n\r\n        padding:\r\n            55px 25px\r\n            60px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .products-grid {\r\n\r\n        grid-template-columns:\r\n            repeat(\r\n                2,\r\n                minmax(0, 1fr)\r\n            );\r\n\r\n        gap: 22px;\r\n    }\r\n\r\n\r\n    \/*\r\n     * Make the third card span the full width\r\n     * on small tablets.\r\n     *\/\r\n\r\n    .gimasi-products-section\r\n    .product-card:last-child {\r\n\r\n        grid-column:\r\n            1 \/ -1;\r\n\r\n        max-width:\r\n            calc(\r\n                50% - 11px\r\n            );\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .products-footer {\r\n\r\n        margin-top: 28px;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   MOBILE\r\n   ========================================================= *\/\r\n\r\n@media (max-width: 520px) {\r\n\r\n    .gimasi-products-section {\r\n\r\n        padding:\r\n            48px 20px\r\n            52px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .products-intro {\r\n\r\n        margin-bottom: 28px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .products-title {\r\n\r\n        font-size: 27px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .products-subtitle {\r\n\r\n        margin-top: 8px;\r\n\r\n        font-size: 15px;\r\n\r\n        line-height: 1.4;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .products-grid {\r\n\r\n        grid-template-columns: 1fr;\r\n\r\n        gap: 22px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .product-card:last-child {\r\n\r\n        grid-column: auto;\r\n\r\n        max-width: none;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .product-image-wrap {\r\n\r\n        aspect-ratio:\r\n            1 \/ 1.05;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .product-name {\r\n\r\n        font-size: 20px;\r\n\r\n        padding:\r\n            20px 16px\r\n            15px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .product-meta {\r\n\r\n        font-size: 11px;\r\n\r\n        margin-top: 9px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .products-footer {\r\n\r\n        justify-content: flex-start;\r\n\r\n        margin-top: 28px;\r\n    }\r\n\r\n\r\n    .gimasi-products-section\r\n    .products-button {\r\n\r\n        width: 100%;\r\n\r\n        justify-content: center;\r\n    }\r\n\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   REDUCED MOTION\r\n   ========================================================= *\/\r\n\r\n@media (\r\n    prefers-reduced-motion: reduce\r\n) {\r\n\r\n    .gimasi-products-section\r\n    .product-image-wrap,\r\n\r\n    .gimasi-products-section\r\n    .product-image,\r\n\r\n    .gimasi-products-section\r\n    .product-arrow,\r\n\r\n    .gimasi-products-section\r\n    .products-button,\r\n\r\n    .gimasi-products-section\r\n    .products-button span {\r\n\r\n        transition: none;\r\n    }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n\r\n<script>\r\n\r\n\/* =========================================================\r\n   GIMASI \u2014 PRODUCT SECTION TRIANGLES\r\n   ========================================================= *\/\r\n\r\n(function () {\r\n\r\n    \"use strict\";\r\n\r\n\r\n    function initProductTriangles() {\r\n\r\n        const sections =\r\n            document.querySelectorAll(\r\n                \".gimasi-products-section\"\r\n            );\r\n\r\n\r\n        sections.forEach(function (section) {\r\n\r\n\r\n            const canvas =\r\n                section.querySelector(\r\n                    \".products-triangle-canvas\"\r\n                );\r\n\r\n\r\n            if (!canvas) {\r\n                return;\r\n            }\r\n\r\n\r\n            const ctx =\r\n                canvas.getContext(\"2d\");\r\n\r\n\r\n            if (!ctx) {\r\n                return;\r\n            }\r\n\r\n\r\n            let width = 0;\r\n\r\n            let height = 0;\r\n\r\n\r\n            let triangles = [];\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * MOUSE\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            const mouse = {\r\n\r\n                x: -1000,\r\n\r\n                y: -1000,\r\n\r\n                active: false\r\n\r\n            };\r\n\r\n\r\n            section.addEventListener(\r\n                \"mousemove\",\r\n                function (event) {\r\n\r\n                    const rect =\r\n                        section.getBoundingClientRect();\r\n\r\n\r\n                    mouse.x =\r\n                        event.clientX -\r\n                        rect.left;\r\n\r\n\r\n                    mouse.y =\r\n                        event.clientY -\r\n                        rect.top;\r\n\r\n\r\n                    mouse.active = true;\r\n\r\n                },\r\n                {\r\n                    passive: true\r\n                }\r\n            );\r\n\r\n\r\n            section.addEventListener(\r\n                \"mouseleave\",\r\n                function () {\r\n\r\n                    mouse.active = false;\r\n\r\n                }\r\n            );\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * CREATE TRIANGLES\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            function createTriangles() {\r\n\r\n                triangles = [];\r\n\r\n\r\n                const area =\r\n                    width * height;\r\n\r\n\r\n                \/*\r\n                 * Sparse background.\r\n                 *\/\r\n\r\n                const count =\r\n                    Math.min(\r\n                        70,\r\n                        Math.max(\r\n                            35,\r\n                            Math.floor(\r\n                                area \/ 19000\r\n                            )\r\n                        )\r\n                    );\r\n\r\n\r\n                for (\r\n                    let i = 0;\r\n                    i < count;\r\n                    i++\r\n                ) {\r\n\r\n                    triangles.push({\r\n\r\n                        x:\r\n                            Math.random()\r\n                            * width,\r\n\r\n                        y:\r\n                            Math.random()\r\n                            * height,\r\n\r\n                        size:\r\n                            7 +\r\n                            Math.random()\r\n                            * 14,\r\n\r\n                        rotation:\r\n                            Math.random()\r\n                            * Math.PI * 2,\r\n\r\n                        rotationSpeed:\r\n                            (\r\n                                Math.random()\r\n                                - 0.5\r\n                            ) * 0.0015,\r\n\r\n                        driftX:\r\n                            (\r\n                                Math.random()\r\n                                - 0.5\r\n                            ) * 0.025,\r\n\r\n                        driftY:\r\n                            (\r\n                                Math.random()\r\n                                - 0.5\r\n                            ) * 0.025,\r\n\r\n                        pushX: 0,\r\n\r\n                        pushY: 0,\r\n\r\n                        opacity:\r\n                            0.08 +\r\n                            Math.random()\r\n                            * 0.11\r\n\r\n                    });\r\n\r\n                }\r\n\r\n            }\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * RESIZE\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            function resize() {\r\n\r\n                const rect =\r\n                    section.getBoundingClientRect();\r\n\r\n\r\n                width =\r\n                    rect.width;\r\n\r\n\r\n                height =\r\n                    rect.height;\r\n\r\n\r\n                if (\r\n                    width <= 0 ||\r\n                    height <= 0\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const dpr =\r\n                    Math.min(\r\n                        window.devicePixelRatio || 1,\r\n                        2\r\n                    );\r\n\r\n\r\n                canvas.width =\r\n                    Math.round(\r\n                        width * dpr\r\n                    );\r\n\r\n\r\n                canvas.height =\r\n                    Math.round(\r\n                        height * dpr\r\n                    );\r\n\r\n\r\n                canvas.style.width =\r\n                    width + \"px\";\r\n\r\n\r\n                canvas.style.height =\r\n                    height + \"px\";\r\n\r\n\r\n                ctx.setTransform(\r\n                    dpr,\r\n                    0,\r\n                    0,\r\n                    dpr,\r\n                    0,\r\n                    0\r\n                );\r\n\r\n\r\n                createTriangles();\r\n\r\n            }\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * DRAW TRIANGLE\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            function drawTriangle(triangle) {\r\n\r\n                const x =\r\n                    triangle.x +\r\n                    triangle.pushX;\r\n\r\n\r\n                const y =\r\n                    triangle.y +\r\n                    triangle.pushY;\r\n\r\n\r\n                ctx.save();\r\n\r\n\r\n                ctx.translate(\r\n                    x,\r\n                    y\r\n                );\r\n\r\n\r\n                ctx.rotate(\r\n                    triangle.rotation\r\n                );\r\n\r\n\r\n                ctx.beginPath();\r\n\r\n\r\n                ctx.moveTo(\r\n                    0,\r\n                    -triangle.size\r\n                );\r\n\r\n\r\n                ctx.lineTo(\r\n                    triangle.size,\r\n                    triangle.size\r\n                );\r\n\r\n\r\n                ctx.lineTo(\r\n                    -triangle.size,\r\n                    triangle.size\r\n                );\r\n\r\n\r\n                ctx.closePath();\r\n\r\n\r\n                ctx.strokeStyle =\r\n                    \"rgba(75,112,208,\" +\r\n                    triangle.opacity +\r\n                    \")\";\r\n\r\n\r\n                ctx.lineWidth = 1;\r\n\r\n\r\n                ctx.stroke();\r\n\r\n\r\n                ctx.restore();\r\n\r\n            }\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * ANIMATION\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            function animate() {\r\n\r\n\r\n                ctx.clearRect(\r\n                    0,\r\n                    0,\r\n                    width,\r\n                    height\r\n                );\r\n\r\n\r\n                triangles.forEach(\r\n                    function (triangle) {\r\n\r\n\r\n                        \/*\r\n                         * Slow autonomous movement\r\n                         *\/\r\n\r\n                        triangle.x +=\r\n                            triangle.driftX;\r\n\r\n\r\n                        triangle.y +=\r\n                            triangle.driftY;\r\n\r\n\r\n                        triangle.rotation +=\r\n                            triangle.rotationSpeed;\r\n\r\n\r\n                        \/*\r\n                         * -------------------------------------------------\r\n                         * MOUSE INTERACTION\r\n                         * -------------------------------------------------\r\n                         *\/\r\n\r\n                        if (\r\n                            mouse.active\r\n                        ) {\r\n\r\n                            const dx =\r\n                                triangle.x -\r\n                                mouse.x;\r\n\r\n\r\n                            const dy =\r\n                                triangle.y -\r\n                                mouse.y;\r\n\r\n\r\n                            const distance =\r\n                                Math.sqrt(\r\n                                    dx * dx +\r\n                                    dy * dy\r\n                                );\r\n\r\n\r\n                            const radius =\r\n                                170;\r\n\r\n\r\n                            if (\r\n                                distance <\r\n                                radius\r\n                            ) {\r\n\r\n                                const force =\r\n                                    (\r\n                                        radius -\r\n                                        distance\r\n                                    ) \/ radius;\r\n\r\n\r\n                                const angle =\r\n                                    Math.atan2(\r\n                                        dy,\r\n                                        dx\r\n                                    );\r\n\r\n\r\n                                const targetX =\r\n                                    Math.cos(angle)\r\n                                    * force\r\n                                    * 55;\r\n\r\n\r\n                                const targetY =\r\n                                    Math.sin(angle)\r\n                                    * force\r\n                                    * 55;\r\n\r\n\r\n                                triangle.pushX +=\r\n                                    (\r\n                                        targetX -\r\n                                        triangle.pushX\r\n                                    ) * 0.14;\r\n\r\n\r\n                                triangle.pushY +=\r\n                                    (\r\n                                        targetY -\r\n                                        triangle.pushY\r\n                                    ) * 0.14;\r\n\r\n\r\n                                triangle.rotation +=\r\n                                    force * 0.018;\r\n\r\n                            } else {\r\n\r\n                                triangle.pushX *= 0.91;\r\n\r\n                                triangle.pushY *= 0.91;\r\n\r\n                            }\r\n\r\n                        } else {\r\n\r\n                            triangle.pushX *= 0.94;\r\n\r\n                            triangle.pushY *= 0.94;\r\n\r\n                        }\r\n\r\n\r\n                        \/*\r\n                         * Keep inside canvas\r\n                         *\/\r\n\r\n                        if (\r\n                            triangle.x <\r\n                            -40\r\n                        ) {\r\n\r\n                            triangle.x =\r\n                                width + 40;\r\n\r\n                        }\r\n\r\n\r\n                        if (\r\n                            triangle.x >\r\n                            width + 40\r\n                        ) {\r\n\r\n                            triangle.x =\r\n                                -40;\r\n\r\n                        }\r\n\r\n\r\n                        if (\r\n                            triangle.y <\r\n                            -40\r\n                        ) {\r\n\r\n                            triangle.y =\r\n                                height + 40;\r\n\r\n                        }\r\n\r\n\r\n                        if (\r\n                            triangle.y >\r\n                            height + 40\r\n                        ) {\r\n\r\n                            triangle.y =\r\n                                -40;\r\n\r\n                        }\r\n\r\n\r\n                        drawTriangle(\r\n                            triangle\r\n                        );\r\n\r\n                    }\r\n                );\r\n\r\n\r\n                requestAnimationFrame(\r\n                    animate\r\n                );\r\n\r\n            }\r\n\r\n\r\n            \/*\r\n             * -----------------------------------------------------\r\n             * START\r\n             * -----------------------------------------------------\r\n             *\/\r\n\r\n            resize();\r\n\r\n            animate();\r\n\r\n\r\n            let resizeTimeout;\r\n\r\n\r\n            window.addEventListener(\r\n                \"resize\",\r\n                function () {\r\n\r\n                    clearTimeout(\r\n                        resizeTimeout\r\n                    );\r\n\r\n\r\n                    resizeTimeout =\r\n                        setTimeout(\r\n                            resize,\r\n                            100\r\n                        );\r\n\r\n                },\r\n                {\r\n                    passive: true\r\n                }\r\n            );\r\n\r\n        });\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n     * Elementor compatibility\r\n     *\/\r\n\r\n    if (\r\n        document.readyState ===\r\n        \"loading\"\r\n    ) {\r\n\r\n        document.addEventListener(\r\n            \"DOMContentLoaded\",\r\n            initProductTriangles\r\n        );\r\n\r\n    } else {\r\n\r\n        initProductTriangles();\r\n\r\n    }\r\n\r\n\r\n})();\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ea5d34f e-con-full e-flex e-con e-parent\" data-id=\"ea5d34f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-83e8014 e-con-full e-flex e-con e-child\" data-id=\"83e8014\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d70b612 eael-wpforms-labels-yes eael-wpforms-form-button-custom elementor-widget elementor-widget-eael-wpforms\" data-id=\"d70b612\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-wpforms.default\">\n\t\t\t\t\t            <div class=\"eael-contact-form eael-wpforms eael-wpforms-align-default\">\n                                <div class=\"wpforms-container \" id=\"wpforms-12125\"><form id=\"wpforms-form-12125\" class=\"wpforms-validate wpforms-form wpforms-ajax-form\" data-formid=\"12125\" method=\"post\" enctype=\"multipart\/form-data\" action=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F12160\" data-token=\"70e96a6bb158ad9f09c567a2e5ac6567\" data-token-time=\"1787254766\"><div class=\"wpforms-head-container\"><\/div><noscript class=\"wpforms-error-noscript\">Please enable JavaScript in your browser to complete this form.<\/noscript><div class=\"wpforms-field-container\"><div id=\"wpforms-12125-field_1-container\" class=\"wpforms-field wpforms-field-name\" data-field-id=\"1\"><label class=\"wpforms-field-label\" for=\"wpforms-12125-field_1\">Nome <span class=\"wpforms-required-label\">*<\/span><\/label><input type=\"text\" id=\"wpforms-12125-field_1\" class=\"wpforms-field-medium wpforms-field-required\" name=\"wpforms[fields][1]\" required><\/div><div id=\"wpforms-12125-field_3-container\" class=\"wpforms-field wpforms-field-email\" data-field-id=\"3\"><label class=\"wpforms-field-label\" for=\"wpforms-12125-field_3\">Email <span class=\"wpforms-required-label\">*<\/span><\/label><input type=\"email\" id=\"wpforms-12125-field_3\" class=\"wpforms-field-medium wpforms-field-required\" name=\"wpforms[fields][3]\" spellcheck=\"false\" required><\/div><div id=\"wpforms-12125-field_2-container\" class=\"wpforms-field wpforms-field-text\" data-field-id=\"2\"><label class=\"wpforms-field-label\" for=\"wpforms-12125-field_2\">Company<\/label><input type=\"text\" id=\"wpforms-12125-field_2\" class=\"wpforms-field-medium\" name=\"wpforms[fields][2]\" ><\/div><div id=\"wpforms-12125-field_7-container\" class=\"wpforms-field wpforms-field-select wpforms-field-select-style-classic\" data-field-id=\"7\"><label class=\"wpforms-field-label\" for=\"wpforms-12125-field_7\">What can we help you with?<\/label><select id=\"wpforms-12125-field_7\" class=\"wpforms-field-medium\" name=\"wpforms[fields][7]\"><option value=\"IoT Development\"  class=\"choice-1 depth-1\"  >IoT Development<\/option><option value=\"Hardware Development\"  class=\"choice-2 depth-1\"  >Hardware Development<\/option><option value=\"Software Development\"  class=\"choice-4 depth-1\"  >Software Development<\/option><option value=\"Existing IoT Project\"  class=\"choice-3 depth-1\"  >Existing IoT Project<\/option><option value=\"Other\"  class=\"choice-5 depth-1\"  >Other<\/option><\/select><\/div><div id=\"wpforms-12125-field_5-container\" class=\"wpforms-field wpforms-field-textarea\" data-field-id=\"5\"><label class=\"wpforms-field-label\" for=\"wpforms-12125-field_5\">Message<\/label><textarea id=\"wpforms-12125-field_5\" class=\"wpforms-field-medium\" name=\"wpforms[fields][5]\" ><\/textarea><\/div>\t\t<div id=\"wpforms-12125-field_6-container\"\n\t\t\tclass=\"wpforms-field wpforms-field-text\"\n\t\t\tdata-field-type=\"text\"\n\t\t\tdata-field-id=\"6\"\n\t\t\t>\n\t\t\t<label class=\"wpforms-field-label\" for=\"wpforms-12125-field_6\" >Policy What Privacy<\/label>\n\t\t\t<input type=\"text\" id=\"wpforms-12125-field_6\" class=\"wpforms-field-medium\" name=\"wpforms[fields][6]\" >\n\t\t<\/div>\n\t\t<div id=\"wpforms-12125-field_4-container\" class=\"wpforms-field wpforms-field-radio\" data-field-id=\"4\"><label class=\"wpforms-field-label\">Privacy Policy <span class=\"wpforms-required-label\">*<\/span><\/label><ul id=\"wpforms-12125-field_4\" class=\"wpforms-field-required\"><li class=\"choice-1 depth-1\"><input type=\"radio\" id=\"wpforms-12125-field_4_1\" name=\"wpforms[fields][4]\" value=\"I have read and accepet the Privacy Policy\" required ><label class=\"wpforms-field-label-inline\" for=\"wpforms-12125-field_4_1\">I have read and accepet the Privacy Policy<\/label><\/li><\/ul><\/div><script>\n\t\t\t\t( function() {\n\t\t\t\t\tconst style = document.createElement( 'style' );\n\t\t\t\t\tstyle.appendChild( document.createTextNode( '#wpforms-12125-field_6-container { position: absolute !important; overflow: hidden !important; display: inline !important; height: 1px !important; width: 1px !important; z-index: -1000 !important; padding: 0 !important; } #wpforms-12125-field_6-container input { visibility: hidden; } #wpforms-conversational-form-page #wpforms-12125-field_6-container label { counter-increment: none; }' ) );\n\t\t\t\t\tdocument.head.appendChild( style );\n\t\t\t\t\tdocument.currentScript?.remove();\n\t\t\t\t} )();\n\t\t\t<\/script><\/div><!-- .wpforms-field-container --><div class=\"wpforms-submit-container\" ><input type=\"hidden\" name=\"wpforms[id]\" value=\"12125\"><input type=\"hidden\" name=\"page_title\" value=\"\"><input type=\"hidden\" name=\"page_url\" value=\"https:\/\/www.gimasi.com\/index.php?rest_route=\/wp\/v2\/pages\/12160\"><input type=\"hidden\" name=\"url_referer\" value=\"\"><button type=\"submit\" name=\"wpforms[submit]\" id=\"wpforms-submit-12125\" class=\"wpforms-submit\" data-alt-text=\"Invio in corso...\" data-submit-text=\"Send\" aria-live=\"assertive\" value=\"wpforms-submit\">Send<\/button><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gimasi.com\/wp-content\/plugins\/wpforms-lite\/assets\/images\/submit-spin.svg\" class=\"wpforms-submit-spinner\" style=\"display: none;\" width=\"26\" height=\"26\" alt=\"Loading\"><\/div><\/form><\/div>  <!-- .wpforms-container -->            <\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1ceba8a e-con-full e-flex e-con e-child\" data-id=\"1ceba8a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-bd952b1 e-con-full e-flex e-con e-child\" data-id=\"bd952b1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8fc5022 elementor-widget elementor-widget-heading\" data-id=\"8fc5022\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Designed in Ticino. Built for the field. Supported by our team.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-506c153 e-con-full e-flex e-con e-child\" data-id=\"506c153\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-1583a5d e-grid e-con-full e-con e-child\" data-id=\"1583a5d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-158a44c e-con-full e-flex e-con e-child\" data-id=\"158a44c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-44073d1 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"44073d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d3b1f09 elementor-widget elementor-widget-icon-box\" data-id=\"d3b1f09\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tDesign\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tPCB \u00b7 Firmware \u00b7 Hardware \u00b7 Software\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d4cea47 e-con-full e-flex e-con e-child\" data-id=\"d4cea47\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8562651 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"8562651\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5cd7796 elementor-widget elementor-widget-icon-box\" data-id=\"5cd7796\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tBuild\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tSMT\u00b7 Assembly Line\u00b7 Testing\u00b7 3D\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-070e55e e-con-full e-flex e-con e-child\" data-id=\"070e55e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-82ba117 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"82ba117\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3bed47c elementor-widget elementor-widget-icon-box\" data-id=\"3bed47c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tTeam\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tFrom idea to field-ready product.\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dc5e4dd elementor-widget elementor-widget-menu-anchor\" data-id=\"dc5e4dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"menu-anchor.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-anchor\" id=\"WHO\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e720139 elementor-align-left elementor-mobile-align-left elementor-widget elementor-widget-button\" data-id=\"e720139\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm elementor-animation-grow\" href=\"https:\/\/www.gimasi.com\/?page_id=3743\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-users\" viewBox=\"0 0 640 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Meet the Team <\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-23b88e0 e-flex e-con-boxed e-con e-parent\" data-id=\"23b88e0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-107de10 e-con-full e-flex e-con e-child\" data-id=\"107de10\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e639a17 elementor-widget elementor-widget-heading\" data-id=\"e639a17\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Our Partners say...<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c7091d elementor-widget elementor-widget-text-editor\" data-id=\"5c7091d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>However, our best results are measured by the long-term partnerships we&#8217;ve built with our customers.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dc0cd41 elementor-section-height-min-height elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-items-middle\" data-id=\"dc0cd41\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4f90cf9\" data-id=\"4f90cf9\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-68eac61 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"68eac61\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-5dbf2e9\" data-id=\"5dbf2e9\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ed7a2a8 elementor-invisible elementor-widget elementor-widget-eael-testimonial\" data-id=\"ed7a2a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;}\" data-widget_type=\"eael-testimonial.default\">\n\t\t\t\t\t\n\t<div id=\"eael-testimonial-ed7a2a8\" class=\"eael-testimonial-item clearfix  content-bottom-icon-title-inline\">\n\t\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\t\t<div class=\"eael-testimonial-content\">\n\t\t\t\t<div class=\"eael-testimonial-text\"><p>&#8220;We appreciate GIMASI\u2019s flexibility and their ability to respond directly to our individual needs. Their friendly support makes the collaboration pleasant and reliable.&#8221;<\/p><\/div>\t\t\t<\/div>\n\t\t\t<div class=\"eael-testimonial-content eael-testimonial-inline-bio\">\n\t\t\t\t\t\t\t\t<div class=\"bio-text\"><p class=\"eael-testimonial-user\" style=\"display: block; float: none;\">TRINQ <\/p><p class=\"eael-testimonial-user-company\">CEO<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t\t\n\t\t<span class=\"eael-testimonial-quote\"><\/span>\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-dfffb24\" data-id=\"dfffb24\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ae77e97 elementor-invisible elementor-widget elementor-widget-eael-testimonial\" data-id=\"ae77e97\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;}\" data-widget_type=\"eael-testimonial.default\">\n\t\t\t\t\t\n\t<div id=\"eael-testimonial-ae77e97\" class=\"eael-testimonial-item clearfix testimonial-avatar-rounded content-bottom-icon-title-inline\">\n\t\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\t\t<div class=\"eael-testimonial-content\">\n\t\t\t\t<div class=\"eael-testimonial-text\"><p>Gimasi proved to be a highly professional and valuable partner in designing a cold chain monitoring system, helping improve processes, enhance quality control, save time and energy, and reduce food waste. Their after-sales support was also excellent, responsive and reliable.<\/p><\/div>\t\t\t<\/div>\n\t\t\t<div class=\"eael-testimonial-content eael-testimonial-inline-bio\">\n\t\t\t\t\t\t\t\t<div class=\"bio-text\"><p class=\"eael-testimonial-user\" style=\"display: block; float: none;\">COOP<\/p><p class=\"eael-testimonial-user-company\">Leiter IT Service Center OT<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t\t\n\t\t<span class=\"eael-testimonial-quote\"><\/span>\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b0c3aa8 elementor-invisible elementor-widget elementor-widget-eael-testimonial\" data-id=\"b0c3aa8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"eael-testimonial.default\">\n\t\t\t\t\t\n\t<div id=\"eael-testimonial-b0c3aa8\" class=\"eael-testimonial-item clearfix  content-bottom-icon-title-inline\">\n\t\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\t\t<div class=\"eael-testimonial-content\">\n\t\t\t\t<div class=\"eael-testimonial-text\"><p>Since 2016, Swisscom has collaborated with Gimasi on multiple IoT projects, from custom sensor hardware and software to large-scale deployments. Gimasi combines strong expertise in low-power and LoRaWAN technologies with a proactive approach and consistent quality. Their work on Coop\u2019s cold chain monitoring and large-scale LoRaWAN FOTA solutions has helped Swisscom deliver innovative IoT solutions for its customers.<\/p><\/div>\t\t\t<\/div>\n\t\t\t<div class=\"eael-testimonial-content eael-testimonial-inline-bio\">\n\t\t\t\t\t\t\t<div class=\"eael-testimonial-image\">\n\t\t\t\t\t\t\t\t\t<figure><img decoding=\"async\" src=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/05\/Swisscom_logo.svg\" title=\"Swisscom \u2013 Connectivity and IoT partnership\" alt=\"Swisscom Logo -strategic telecom partner of Gimasi IoT Swiss Solution\" loading=\"lazy\" \/><\/figure>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"bio-text\"><p class=\"eael-testimonial-user\">SWISSCOM<\/p><p class=\"eael-testimonial-user-company\">Solution Architect II (AG)<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t\t\n\t\t<span class=\"eael-testimonial-quote\"><\/span>\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-c6a9838\" data-id=\"c6a9838\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4df4545 elementor-invisible elementor-widget elementor-widget-eael-testimonial\" data-id=\"4df4545\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;}\" data-widget_type=\"eael-testimonial.default\">\n\t\t\t\t\t\n\t<div id=\"eael-testimonial-4df4545\" class=\"eael-testimonial-item clearfix testimonial-avatar-rounded content-bottom-icon-title-inline\">\n\t\t\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\t\t\t<div class=\"eael-testimonial-content\">\n\t\t\t\t<div class=\"eael-testimonial-text\"><div>We are pleased to collaborate with Gimasi team, which are always demonstrating their strong support and expertise in the IoT field.<\/div><\/div>\t\t\t<\/div>\n\t\t\t<div class=\"eael-testimonial-content eael-testimonial-inline-bio\">\n\t\t\t\t\t\t\t\t<div class=\"bio-text\"><p class=\"eael-testimonial-user\" style=\"display: block; float: none;\">HemarGroup<\/p><\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t\t\n\t\t<span class=\"eael-testimonial-quote\"><\/span>\n\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-4e252f2 elementor-widget__width-auto elementor-absolute elementor-hidden-mobile elementor-widget elementor-widget-image\" data-id=\"4e252f2\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" 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:\/\/static.live.templately.com\/agency\/2022\/10\/515516d9-test-bg-shape.png\" title=\"\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0fcdc90 elementor-widget__width-auto elementor-absolute elementor-hidden-mobile e-transform e-transform elementor-widget elementor-widget-image\" data-id=\"0fcdc90\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;,&quot;_transform_rotateZ_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:180,&quot;sizes&quot;:[]},&quot;_transform_translateX_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:11,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:372,&quot;sizes&quot;:[]},&quot;_transform_rotateZ_effect_tablet&quot;:{&quot;unit&quot;:&quot;deg&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_rotateZ_effect_mobile&quot;:{&quot;unit&quot;:&quot;deg&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateX_effect_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateX_effect_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" 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:\/\/static.live.templately.com\/agency\/2022\/10\/515516d9-test-bg-shape.png\" title=\"\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-fbda79c e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con e-parent\" data-id=\"fbda79c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6450958 elementor-widget elementor-widget-html\" data-id=\"6450958\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"it\">\r\n<head>\r\n<meta charset=\"utf-8\" \/>\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\r\n<title>Gimasi \u2014 IoT Blocks<\/title>\r\n\r\n<style>\r\n  :root {\r\n    --ink: #162235;\r\n    --muted: #657386;\r\n    --line: #c7d1dc;\r\n    --surface-soft: #f4f6fa;\r\n    --accent: #2f6f9f;\r\n    --accent-soft: #dcecf7;\r\n    --mono: ui-monospace, \"SF Mono\", \"Roboto Mono\", \"Cascadia Code\", Consolas, monospace;\r\n    --sans: Arial, Helvetica, sans-serif;\r\n  }\r\n\r\n  * { box-sizing: border-box; }\r\n  body { margin: 0; font-family: var(--sans); color: var(--ink); background: #fff; }\r\n\r\n  .blocks-wrap {\r\n    position: relative;\r\n    background: var(--surface-soft);\r\n    padding: 56px 24px 64px;\r\n    overflow: hidden;\r\n  }\r\n  .blocks-wrap::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background-image: radial-gradient(var(--line) 1px, transparent 1px);\r\n    background-size: 26px 26px;\r\n    opacity: 0.4;\r\n    mask-image: radial-gradient(ellipse at center, #000 55%, transparent 92%);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .blocks-header {\r\n    position: relative;\r\n    z-index: 1;\r\n    max-width: 600px;\r\n    margin: 0 auto 32px;\r\n    text-align: center;\r\n  }\r\n  .blocks-eyebrow {\r\n    display: inline-block;\r\n    font-family: var(--mono);\r\n    font-size: 11.5px;\r\n    letter-spacing: 1.5px;\r\n    text-transform: uppercase;\r\n    color: var(--accent);\r\n    background: var(--accent-soft);\r\n    padding: 6px 12px;\r\n    border-radius: 999px;\r\n    margin-bottom: 16px;\r\n  }\r\n  .blocks-header h2 {\r\n    margin: 0 0 12px;\r\n    font-size: clamp(24px, 3vw, 32px);\r\n  }\r\n  .blocks-header p {\r\n    margin: 0;\r\n    color: var(--muted);\r\n    line-height: 1.6;\r\n  }\r\n\r\n  .blocks-canvas {\r\n    position: relative;\r\n    z-index: 1;\r\n    max-width: 980px;\r\n    margin: 0 auto;\r\n    height: 540px;\r\n    border: 1px solid #e1e7ee;\r\n    border-radius: 20px;\r\n    background: rgba(255,255,255,0.65);\r\n    overflow: hidden;\r\n    touch-action: none;\r\n  }\r\n\r\n  .block {\r\n    position: absolute;\r\n    width: 138px;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    justify-content: center;\r\n    text-align: center;\r\n    padding: 14px 10px;\r\n    cursor: grab;\r\n    user-select: none;\r\n    color: #fff;\r\n    box-shadow: 0 10px 22px rgba(22,34,53,0.18);\r\n    touch-action: none;\r\n    will-change: transform;\r\n  }\r\n  .block:active { cursor: grabbing; }\r\n  .block.dragging {\r\n    box-shadow: 0 20px 38px rgba(22,34,53,0.3);\r\n    z-index: 10;\r\n  }\r\n\r\n  .block .k-title {\r\n    font-size: 13px;\r\n    font-weight: 700;\r\n    letter-spacing: 0.2px;\r\n    line-height: 1.25;\r\n    text-shadow: 0 1px 3px rgba(0,0,0,0.25);\r\n  }\r\n  .block .k-sub {\r\n    font-family: var(--mono);\r\n    font-size: 9px;\r\n    letter-spacing: 0.4px;\r\n    text-transform: uppercase;\r\n    opacity: 0.85;\r\n    margin-top: 4px;\r\n  }\r\n\r\n  .shape-circle { height: 138px; border-radius: 50%; }\r\n\r\n  .shape-hex {\r\n    height: 126px;\r\n    clip-path: polygon(25% 4%, 75% 4%, 98% 50%, 75% 96%, 25% 96%, 2% 50%);\r\n    border-radius: 4px;\r\n  }\r\n\r\n  .shape-chip {\r\n    height: 104px;\r\n    border-radius: 14px;\r\n  }\r\n  .shape-chip::before,\r\n  .shape-chip::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 18%;\r\n    right: 18%;\r\n    height: 3px;\r\n    background-color: rgba(255,255,255,0.55);\r\n    mask-image: repeating-linear-gradient(to right, #000 0 6px, transparent 6px 13px);\r\n    -webkit-mask-image: repeating-linear-gradient(to right, #000 0 6px, transparent 6px 13px);\r\n  }\r\n  .shape-chip::before { top: -3px; }\r\n  .shape-chip::after  { bottom: -3px; }\r\n\r\n  .blocks-hint {\r\n    position: relative;\r\n    z-index: 1;\r\n    text-align: center;\r\n    margin-top: 22px;\r\n    font-family: var(--mono);\r\n    font-size: 12px;\r\n    letter-spacing: 0.5px;\r\n    color: var(--muted);\r\n  }\r\n\r\n  @media (max-width: 900px) {\r\n    .blocks-canvas { height: 760px; }\r\n    .block { width: 116px; }\r\n    .shape-circle { height: 116px; }\r\n    .shape-hex { height: 106px; }\r\n    .shape-chip { height: 90px; }\r\n  }\r\n<\/style>\r\n<\/head>\r\n\r\n<body>\r\n\r\n<section class=\"blocks-wrap\" id=\"blocksWrap\">\r\n\r\n  <div class=\"blocks-header\">\r\n    <span class=\"blocks-eyebrow\">Your stack, like a set of building blocks<\/span>\r\n    <h2>The IoT universe, block by block<\/h2>\r\n    <p>Grab it, throw it, stack it. Each block is a layer of the full IoT stack \u2014 with its own physics, its own gravity, its own place.<\/p>\r\n  <\/div>\r\n\r\n  <div class=\"blocks-canvas\" id=\"blocksCanvas\"><\/div>\r\n\r\n  <p class=\"blocks-hint\">\/\/ drag a block \u2014 it bounces, slides, and settles on the others<\/p>\r\n\r\n<\/section>\r\n\r\n<script>\r\n(function () {\r\n  const canvas = document.getElementById('blocksCanvas');\r\n\r\n  \/\/ ingredienti dello stack IoT completo \u2014 ognuno con un colore proprio\r\n  const items = [\r\n    { title: 'Sensors',         sub: 'Sensing layer',        shape: 'hex',    color: '#0d9488' },\r\n    { title: 'Connectivity',    sub: 'BLE \u00b7 LoRa \u00b7 NB-IoT',   shape: 'circle', color: '#2563eb' },\r\n    { title: 'Edge Computing',  sub: 'On-device logic',       shape: 'chip',   color: '#7c3aed' },\r\n    { title: 'Firmware',        sub: 'Embedded software',     shape: 'hex',    color: '#b45309' },\r\n    { title: 'Cloud',           sub: 'Data platform',         shape: 'circle', color: '#0284c7' },\r\n    { title: 'Security',        sub: 'Security by design',    shape: 'chip',   color: '#dc2626' },\r\n    { title: 'PCB & Hardware',  sub: 'Electronics design',    shape: 'hex',    color: '#16a34a' },\r\n    { title: 'SMT Production',  sub: 'Swiss manufacturing',   shape: 'circle', color: '#ea580c' },\r\n    { title: 'FOTA & Support',  sub: 'Lifecycle care',        shape: 'chip',   color: '#db2777' }\r\n  ];\r\n\r\n  \/\/ ===== fisica: costanti =====\r\n  const GRAVITY = 0.55;\r\n  const RESTITUTION = 0.42;     \/\/ quanto rimbalzano\r\n  const AIR_FRICTION = 0.992;   \/\/ resistenza dell'aria (sempre attiva)\r\n  const SURFACE_FRICTION = 0.90; \/\/ attrito quando poggiano su pavimento\/altro blocco (fa \"scivolare fino a fermarsi\")\r\n  const REST_EPS = 0.55;         \/\/ sotto questa velocit\u00e0 verticale, il blocco si considera \"appoggiato\"\r\n\r\n  let W = canvas.clientWidth;\r\n  let H = canvas.clientHeight;\r\n\r\n  const blocks = items.map((item, i) => {\r\n    const el = document.createElement('div');\r\n    el.className = `block shape-${item.shape}`;\r\n    el.style.background = item.color;\r\n    el.innerHTML = `<div class=\"k-title\">${item.title}<\/div><div class=\"k-sub\">${item.sub}<\/div>`;\r\n    canvas.appendChild(el);\r\n\r\n    const w = 138;\r\n    const h = item.shape === 'circle' ? 138 : (item.shape === 'hex' ? 126 : 104);\r\n\r\n    \/\/ sparsi a caso, con parecchia sovrapposizione: un mucchio disordinato, non ordinato\r\n    const x = 10 + Math.random() * (W - w - 20);\r\n    const y = H - h - Math.random() * (h * 2.2);\r\n    const rot = (Math.random() * 24 - 12); \/\/ leggera inclinazione casuale\r\n\r\n    return {\r\n      el, w, h,\r\n      x, y,\r\n      vx: (Math.random() - 0.5) * 2,\r\n      vy: 0,\r\n      rot,\r\n      dragging: false\r\n    };\r\n  });\r\n\r\n  function applySize() {\r\n    W = canvas.clientWidth;\r\n    H = canvas.clientHeight;\r\n  }\r\n\r\n  function resolvePair(a, b) {\r\n    const overlapX = Math.min(a.x + a.w, b.x + b.w) - Math.max(a.x, b.x);\r\n    const overlapY = Math.min(a.y + a.h, b.y + b.h) - Math.max(a.y, b.y);\r\n    if (overlapX <= 0 || overlapY <= 0) return;\r\n\r\n    const aCenterX = a.x + a.w \/ 2, bCenterX = b.x + b.w \/ 2;\r\n    const aCenterY = a.y + a.h \/ 2, bCenterY = b.y + b.h \/ 2;\r\n\r\n    if (overlapX < overlapY) {\r\n      \/\/ separazione orizzontale\r\n      const dir = aCenterX < bCenterX ? -1 : 1;\r\n      const push = overlapX \/ (a.dragging || b.dragging ? 1 : 2);\r\n      if (!a.dragging) a.x += dir * push;\r\n      if (!b.dragging) b.x -= dir * push;\r\n      if (!a.dragging) a.vx = -a.vx * RESTITUTION;\r\n      if (!b.dragging) b.vx = -b.vx * RESTITUTION;\r\n    } else {\r\n      \/\/ separazione verticale (uno si appoggia sull'altro)\r\n      const dir = aCenterY < bCenterY ? -1 : 1;\r\n      const push = overlapY \/ (a.dragging || b.dragging ? 1 : 2);\r\n      if (!a.dragging) a.y += dir * push;\r\n      if (!b.dragging) b.y -= dir * push;\r\n\r\n      if (dir === -1) {\r\n        \/\/ a sopra, b sotto: a \"atterra\" su b\r\n        if (!a.dragging) {\r\n          a.vy = Math.abs(a.vy) < REST_EPS ? 0 : -a.vy * RESTITUTION;\r\n          a.vx *= SURFACE_FRICTION;\r\n        }\r\n        if (!b.dragging) b.vy = Math.max(b.vy, 0);\r\n      } else {\r\n        if (!b.dragging) {\r\n          b.vy = Math.abs(b.vy) < REST_EPS ? 0 : -b.vy * RESTITUTION;\r\n          b.vx *= SURFACE_FRICTION;\r\n        }\r\n        if (!a.dragging) a.vy = Math.max(a.vy, 0);\r\n      }\r\n    }\r\n  }\r\n\r\n  function step() {\r\n    for (const b of blocks) {\r\n      if (b.dragging) continue;\r\n\r\n      b.vy += GRAVITY;\r\n      b.x += b.vx;\r\n      b.y += b.vy;\r\n      b.vx *= AIR_FRICTION;\r\n\r\n      \/\/ pareti\r\n      if (b.x < 0) { b.x = 0; b.vx = -b.vx * RESTITUTION; }\r\n      if (b.x + b.w > W) { b.x = W - b.w; b.vx = -b.vx * RESTITUTION; }\r\n\r\n      \/\/ soffitto (raro, ma per sicurezza)\r\n      if (b.y < 0) { b.y = 0; b.vy = -b.vy * RESTITUTION; }\r\n\r\n      \/\/ pavimento\r\n      if (b.y + b.h > H) {\r\n        b.y = H - b.h;\r\n        if (Math.abs(b.vy) < REST_EPS) {\r\n          b.vy = 0;\r\n        } else {\r\n          b.vy = -b.vy * RESTITUTION;\r\n        }\r\n        b.vx *= SURFACE_FRICTION;\r\n      }\r\n    }\r\n\r\n    \/\/ risoluzione delle collisioni tra blocchi (due passate per maggiore stabilit\u00e0)\r\n    for (let pass = 0; pass < 2; pass++) {\r\n      for (let i = 0; i < blocks.length; i++) {\r\n        for (let j = i + 1; j < blocks.length; j++) {\r\n          resolvePair(blocks[i], blocks[j]);\r\n        }\r\n      }\r\n    }\r\n\r\n    for (const b of blocks) {\r\n      b.el.style.transform = `translate(${b.x}px, ${b.y}px) rotate(${b.rot}deg)`;\r\n    }\r\n\r\n    requestAnimationFrame(step);\r\n  }\r\n\r\n  \/\/ ===== drag: Pointer Events (mouse + touch) =====\r\n  let lastPointerTime = 0;\r\n\r\n  function bindDrag(b) {\r\n    let offsetX = 0, offsetY = 0;\r\n    let prevX = 0, prevY = 0, prevT = 0;\r\n\r\n    b.el.addEventListener('pointerdown', (e) => {\r\n      b.dragging = true;\r\n      b.rot = 0;\r\n      b.el.classList.add('dragging');\r\n      b.el.setPointerCapture(e.pointerId);\r\n\r\n      const rect = canvas.getBoundingClientRect();\r\n      offsetX = e.clientX - rect.left - b.x;\r\n      offsetY = e.clientY - rect.top - b.y;\r\n      prevX = b.x; prevY = b.y; prevT = performance.now();\r\n    });\r\n\r\n    b.el.addEventListener('pointermove', (e) => {\r\n      if (!b.dragging) return;\r\n      const rect = canvas.getBoundingClientRect();\r\n      const x = e.clientX - rect.left - offsetX;\r\n      const y = e.clientY - rect.top - offsetY;\r\n\r\n      b.x = Math.max(0, Math.min(W - b.w, x));\r\n      b.y = Math.max(-800, Math.min(H - b.h, y));\r\n\r\n      const now = performance.now();\r\n      const dt = Math.max(now - prevT, 1);\r\n      \/\/ stima la velocit\u00e0 di rilascio, per un piccolo \"lancio\" quando molli il blocco\r\n      b.vx = ((b.x - prevX) \/ dt) * 14;\r\n      b.vy = ((b.y - prevY) \/ dt) * 14;\r\n      prevX = b.x; prevY = b.y; prevT = now;\r\n    });\r\n\r\n    function release(e) {\r\n      if (!b.dragging) return;\r\n      b.dragging = false;\r\n      b.el.classList.remove('dragging');\r\n      try { b.el.releasePointerCapture(e.pointerId); } catch (err) {}\r\n    }\r\n\r\n    b.el.addEventListener('pointerup', release);\r\n    b.el.addEventListener('pointercancel', release);\r\n  }\r\n\r\n  blocks.forEach(bindDrag);\r\n\r\n  window.addEventListener('resize', applySize);\r\n  applySize();\r\n  requestAnimationFrame(step);\r\n})();\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\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>WHAT WE DO GIoT CASE STUDY WHO WE ARE Gimasi \u2014 Hero Gimasi \u00b7 IoT \u00b7 2012 Shaping the IoT [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-12160","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Home.2.0 -<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.gimasi.com\/?page_id=12160\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Home.2.0 -\" \/>\n<meta property=\"og:description\" content=\"WHAT WE DO GIoT CASE STUDY WHO WE ARE Gimasi \u2014 Hero Gimasi \u00b7 IoT \u00b7 2012 Shaping the IoT [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.gimasi.com\/?page_id=12160\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-20T12:15:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/hemargroup-logo-partner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"219\" \/>\n\t<meta property=\"og:image:height\" content=\"130\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"25 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/?page_id=12160\",\"url\":\"https:\\\/\\\/www.gimasi.com\\\/?page_id=12160\",\"name\":\"Home.2.0 -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/?page_id=12160#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/?page_id=12160#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.gimasi.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/hemargroup-logo-partner.png\",\"datePublished\":\"2026-08-20T12:09:53+00:00\",\"dateModified\":\"2026-08-20T12:15:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/?page_id=12160#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.gimasi.com\\\/?page_id=12160\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/?page_id=12160#primaryimage\",\"url\":\"https:\\\/\\\/www.gimasi.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/hemargroup-logo-partner.png\",\"contentUrl\":\"https:\\\/\\\/www.gimasi.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/hemargroup-logo-partner.png\",\"width\":219,\"height\":130,\"caption\":\"HemarGroup Partner logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/?page_id=12160#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.gimasi.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Home.2.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/#website\",\"url\":\"https:\\\/\\\/www.gimasi.com\\\/\",\"name\":\"www2.gimasi.com\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.gimasi.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/#organization\",\"name\":\"Gimasi SA\",\"url\":\"https:\\\/\\\/www.gimasi.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.gimasi.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/cropped-gimasilogo.png\",\"contentUrl\":\"https:\\\/\\\/www.gimasi.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/cropped-gimasilogo.png\",\"width\":170,\"height\":33,\"caption\":\"Gimasi SA\"},\"image\":{\"@id\":\"https:\\\/\\\/www.gimasi.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/gimasi-sa\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Home.2.0 -","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.gimasi.com\/?page_id=12160","og_locale":"en_US","og_type":"article","og_title":"Home.2.0 -","og_description":"WHAT WE DO GIoT CASE STUDY WHO WE ARE Gimasi \u2014 Hero Gimasi \u00b7 IoT \u00b7 2012 Shaping the IoT [&hellip;]","og_url":"https:\/\/www.gimasi.com\/?page_id=12160","article_modified_time":"2026-08-20T12:15:01+00:00","og_image":[{"width":219,"height":130,"url":"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/hemargroup-logo-partner.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"25 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.gimasi.com\/?page_id=12160","url":"https:\/\/www.gimasi.com\/?page_id=12160","name":"Home.2.0 -","isPartOf":{"@id":"https:\/\/www.gimasi.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.gimasi.com\/?page_id=12160#primaryimage"},"image":{"@id":"https:\/\/www.gimasi.com\/?page_id=12160#primaryimage"},"thumbnailUrl":"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/hemargroup-logo-partner.png","datePublished":"2026-08-20T12:09:53+00:00","dateModified":"2026-08-20T12:15:01+00:00","breadcrumb":{"@id":"https:\/\/www.gimasi.com\/?page_id=12160#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.gimasi.com\/?page_id=12160"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gimasi.com\/?page_id=12160#primaryimage","url":"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/hemargroup-logo-partner.png","contentUrl":"https:\/\/www.gimasi.com\/wp-content\/uploads\/2026\/06\/hemargroup-logo-partner.png","width":219,"height":130,"caption":"HemarGroup Partner logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.gimasi.com\/?page_id=12160#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.gimasi.com\/"},{"@type":"ListItem","position":2,"name":"Home.2.0"}]},{"@type":"WebSite","@id":"https:\/\/www.gimasi.com\/#website","url":"https:\/\/www.gimasi.com\/","name":"www2.gimasi.com","description":"","publisher":{"@id":"https:\/\/www.gimasi.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.gimasi.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.gimasi.com\/#organization","name":"Gimasi SA","url":"https:\/\/www.gimasi.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.gimasi.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/04\/cropped-gimasilogo.png","contentUrl":"https:\/\/www.gimasi.com\/wp-content\/uploads\/2025\/04\/cropped-gimasilogo.png","width":170,"height":33,"caption":"Gimasi SA"},"image":{"@id":"https:\/\/www.gimasi.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/gimasi-sa\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.gimasi.com\/index.php?rest_route=\/wp\/v2\/pages\/12160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gimasi.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gimasi.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gimasi.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gimasi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12160"}],"version-history":[{"count":67,"href":"https:\/\/www.gimasi.com\/index.php?rest_route=\/wp\/v2\/pages\/12160\/revisions"}],"predecessor-version":[{"id":12236,"href":"https:\/\/www.gimasi.com\/index.php?rest_route=\/wp\/v2\/pages\/12160\/revisions\/12236"}],"wp:attachment":[{"href":"https:\/\/www.gimasi.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}