) (document.head || document.body).appendChild(s); } function getUntil() { var v = localStorage.getItem(KEY); if (!v) return 0; var n = parseInt(v, 10); return Number.isFinite(n) ? n : 0; } function runGate() { var modalEl = document.getElementById('gate-modal'); if (!modalEl) { // se non c'è gate, carica comunque cookie loadAcconsento(); return; } var until = getUntil(); if (until && until > nowMs()) { modalEl.remove(); document.body.style.overflow = ''; // già accettato: carica cookie subito loadAcconsento(); return; } localStorage.removeItem(KEY); document.body.style.overflow = 'hidden'; var modal = UIkit.modal(modalEl); modal.show(); var title = document.getElementById('gate-title'); if (title) title.focus(); var btnContinue = document.getElementById('gate-continue'); var btnExit = document.getElementById('gate-exit'); if (btnContinue) { btnContinue.addEventListener('click', function (e) { e.preventDefault(); localStorage.setItem(KEY, String(nowMs() + msDays(DAYS))); modal.hide(); document.body.style.overflow = ''; // ORA carichi il cookie banner loadAcconsento(); }); } if (btnExit) { btnExit.addEventListener('click', function (e) { e.preventDefault(); window.location.href = 'https://www.google.it/'; }); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', runGate); } else { runGate(); } })(); // bottone per motion off document.addEventListener('DOMContentLoaded', () => { const STORAGE_KEY = "motionOff"; const prefersReduce = window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches; // 1) Creo il bottone (btn) e lo metto in pagina const btn = document.createElement('button'); btn.type = 'button'; btn.className = 'a11y-motion-toggle uk-button uk-button-default uk-button-small'; btn.setAttribute('aria-pressed', 'false'); btn.setAttribute('aria-label', 'Pausa animazioni di sfondo'); btn.textContent = '⏸︎'; document.body.appendChild(btn); // 2) Funzioni per capire se sotto al bottone lo sfondo è "scuro" o "chiaro" const parseRgb = (c) => { const m = c.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i); return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : null; }; const getBgColor = (el) => { let e = el; while (e && e !== document.documentElement) { const bg = getComputedStyle(e).backgroundColor; if (bg && bg !== 'rgba(0, 0, 0, 0)' && bg !== 'transparent') return bg; e = e.parentElement; } return getComputedStyle(document.body).backgroundColor || 'rgb(255,255,255)'; }; const luminance = ([r, g, b]) => { const a = [r, g, b].map(v => { v /= 255; return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); }); return 0.2126 * a[0] + 0.7152 * a[1] + 0.0722 * a[2]; }; const updateToggleTheme = () => { const rect = btn.getBoundingClientRect(); const x = Math.min(window.innerWidth - 1, Math.max(0, rect.left + rect.width / 2)); const y = Math.min(window.innerHeight - 1, Math.max(0, rect.top + rect.height / 2)); const under = document.elementFromPoint(x, y); const bg = getBgColor(under); const rgb = parseRgb(bg) || [255, 255, 255]; const isDark = luminance(rgb) < 0.45; btn.classList.toggle('on-dark', isDark); btn.classList.toggle('on-light', !isDark); }; // 3) Logica per ON/OFF movimento const apply = (off) => { document.body.classList.toggle('motion-off', off); btn.setAttribute('aria-pressed', off ? 'true' : 'false'); btn.textContent = off ? '▶︎' : '⏸︎'; document.querySelectorAll('.a11y-bgvideo video').forEach(v => { try { off ? v.pause() : v.play().catch(() => {}); } catch (e) {} }); localStorage.setItem(STORAGE_KEY, off ? "1" : "0"); // ricalcolo tema bottone (utile se cambia overlay/contesto) updateToggleTheme(); }; // 4) Stato iniziale const savedOff = localStorage.getItem(STORAGE_KEY) === "1"; apply(savedOff || !!prefersReduce); // 5) Listener: click (toggle), scroll e resize (per aggiornare il colore) btn.addEventListener('click', () => apply(!document.body.classList.contains('motion-off'))); updateToggleTheme(); window.addEventListener('scroll', updateToggleTheme, { passive: true }); window.addEventListener('resize', updateToggleTheme); });
Skip to main content

Laser energy for life

Decorative border

Laser energy for life

Decorative border
Sectors

Laser technology for more precise, less invasive medicine

We design advanced laser devices to deliver effective, safe solutions that support healthcare professionals.

About Us

Behind every pulse, our vision

We design next-generation laser solutions for healthcare.

From design and development to ongoing support, we guide professionals and healthcare facilities towards outstanding performance.

Multiracial group of people discussing in an office meeting room
Multiracial group of people discussing in an office meeting room
Support

Continuous assistance, expertise assured

We provide technical assistance and ongoing training for our customers.
We guide you step by step with a team that is always ready to support you.

Technician working on an electronic part
Medency staff next to the machine on display at the trade fair stand
Operator participating in a video call
Operator demonstrating the use of the machine to two people
People sitting in a meeting room watching a presentation on screen
Training

An Academy tailored for professionals

Exclusive access to educational content, constant support, and regular updates to help you excel in your field.

Animated image of a video webinar

ACTIVEDUCATION

Discover the digital platform dedicated to training and sharing content on laser applications in medicine.

Animated image of a certification

Certifications and training

Join recognised courses and earn official certifications that enhance your professional skills.

Animated image of an information manual

Guides and Tutorials

Learn to get the most from every device.
Practical videos and detailed guides to support you at every stage, from installation to daily use.

Animated image on customer care

Continuous Support

Technical assistance, updates, and advice to ensure you make the most of every device, every day.

Need more information?

Fill in the form or give us a call: our team is ready to assist.
Technology and expertise at your service.