<!doctype html>
<html lang="it">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Layerloop — Produzione medicale</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://use.typekit.net/udx8dif.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..20" />
<style>
:root {
--primary: #2557ff;
--text: #0a0e27;
--muted: #6f7b91;
--bg: #fbfdff;
}
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
font-family: "neue-haas-grotesk-display", Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
color: var(--text);
background: var(--bg);
overflow-x: hidden;
}
/* Helpers */
.pr-10 { padding-right: 10px; }
.pt-40 { padding-top: 40px; }
.pb-40 { padding-bottom: 40px; }
.mb-40 { margin-bottom: 40px; }
@media (min-width: 768px) {
.pt-md-80 { padding-top: 80px; }
.pb-md-80 { padding-bottom: 80px; }
}
h2 { font-size: clamp(32px, 4vw, 48px); line-height: 1.15; font-weight: 300; }
/* STICKY NAVBAR - GLASS EFFECT */
nav {
position: fixed;
top: 0; left: 0; right: 0;
z-index: 1000;
padding: 18px 32px;
display: flex;
justify-content: space-between;
align-items: center;
background: rgba(251, 253, 255, 0.7);
backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(10, 14, 39, 0.06);
}
.nav-logo {
font-size: 16px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: -0.5px;
color: var(--text);
}
.nav-links {
display: flex;
gap: 40px;
list-style: none;
margin: 0;
padding: 0;
}
.nav-links a {
font-size: 14px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.3px;
color: var(--text);
text-decoration: none;
transition: color 0.3s ease;
}
.nav-links a:hover { color: var(--primary); }
/* HERO SECTION */
.hero {
margin-top: 80px;
min-height: 120vh;
position: relative;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
.hero-bg {
position: absolute;
inset: 0;
z-index: 0;
overflow: hidden;
pointer-events: none;
}
.triangle {
position: absolute;
opacity: 0.6;
animation: float 20s ease-in-out infinite;
border-radius: 50%;
}
.triangle1 {
width: 600px; height: 600px;
background: radial-gradient(circle, rgba(37, 87, 255, 0.35), rgba(123, 135, 255, 0.05));
top: -200px; left: -50px;
filter: blur(20px);
animation-delay: 0s;
}
.triangle2 {
width: 550px; height: 550px;
background: radial-gradient(circle, rgba(255, 200, 220, 0.3), rgba(255, 220, 230, 0.05));
top: -100px; right: -100px;
filter: blur(10px);
animation-delay: -4s;
}
.triangle3 {
width: 580px; height: 580px;
background: radial-gradient(circle, rgba(123, 217, 255, 0.28), rgba(211, 168, 213, 0.05));
bottom: -250px; left: 10%;
filter: blur(10px);
animation-delay: -14s;
}
@keyframes float {
0%, 100% { transform: translate(0, 0) rotate(0deg); }
33% { transform: translate(20px, -30px) rotate(120deg); }
66% { transform: translate(-20px, 20px) rotate(240deg); }
}
.hero-content { z-index: 10; animation: fadeInLeft 1s ease-out; }
.hero-title {
font-size: clamp(52px, 5vw, 82px);
font-weight: 300;
line-height: 1.1;
letter-spacing: -0.5px;
margin: 0;
}
.accent {
color: var(--primary);
font-weight: 600;
font-family: "cofo-sans-pixel", sans-serif;
}
.hero-desc {
font-size: 20px;
color: var(--muted);
margin-bottom: 20px;
line-height: 1.4;
}
p {
font-size: 20px;
color: var(--muted);
margin-bottom: 20px;
line-height: 1.4;
}
.hero-image { display: flex; justify-content: center; z-index: 5; }
.hero-image img { width: 100%; height: auto; display: block; }
.cta-group {
display: flex;
gap: 16px;
justify-content: center;
width: 100%;
margin-top: 48px;
z-index: 10;
position: absolute;
bottom: 60px;
left: 0; right: 0;
padding: 0 16px;
}
.btn {
padding: 14px 28px;
border-radius: 999px;
border: none;
font-size: 16px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
cursor: pointer;
transition: all 0.3s ease;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 10px;
}
.btn-primary {
background: linear-gradient(90deg, var(--primary), #6f7bff);
color: #fff;
box-shadow: 0 10px 30px rgba(37, 87, 255, 0.25);
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 15px 40px rgba(37, 87, 255, 0.35);
}
.btn-secondary {
background: #fff;
color: var(--primary);
border: 2px solid var(--primary);
box-shadow: 0 8px 24px rgba(10, 14, 39, 0.08);
}
.btn-secondary:hover {
transform: translateY(-2px);
background: rgba(37, 87, 255, 0.05);
}
@keyframes fadeInLeft {
from { opacity: 0; transform: translateX(-30px); }
to { opacity: 1; transform: translateX(0); }
}
@media (max-width: 991px) {
nav { padding: 14px 16px; }
.nav-links { gap: 20px; }
.nav-links a { font-size: 13px; }
.hero { margin-top: 60px; min-height: 150vh; }
.cta-group { flex-direction: column; bottom: 20px; }
.btn { justify-content: center; width: 100%; }
}
.material-symbols-outlined {
font-variation-settings:
'FILL' 1,
'wght' 400,
'GRAD' 0,
'opsz' 24;
}
/* SECTION WRAPPERS */
.section-grey { background-color: #f6f6f6; }
/* Feature cards (ecosystem) */
.feature-card {
background: #fff;
border-radius: 20px;
padding: 28px 22px;
box-shadow: 0 10px 30px rgba(10,14,39,0.06);
min-height: 260px;
display: flex;
flex-direction: column;
justify-content: flex-start;
transition: transform 0.22s ease, box-shadow 0.22s ease;
}
.feature-card:hover { transform: translateY(-6px); box-shadow: 0 20px 50px rgba(10,14,39,0.08); }
.feature-card .icon-wrap { width: 42px; height: 42px; margin-bottom: 18px; }
.feature-card h3 { color: var(--primary); font-weight: 700; font-size: 18px; margin: 0 0 10px 0; }
.feature-card p { color: #4a4f5b; line-height: 1.6; margin: 0; }
.side-text h4 { color: #33333a; font-weight: 800; font-size: 18px; margin-bottom: 18px; }
.side-text p { color: #3a3f4f; line-height: 1.75; font-size: 16px; }
@media (max-width: 991px) {
.feature-card { padding: 20px; min-height: 200px; }
.side-text { margin-top: 20px; }
}
/* MAP GRAPH */
.map-graph {
--blue: #2f54ff;
--blue-soft: rgba(47, 84, 255, 0.28);
--text: #2f54ff;
--pill-bg: #ffffff;
--shadow: 0 12px 34px rgba(10, 23, 60, 0.08);
--lg: clamp(88px, 8.5vw, 126px);
--md: clamp(74px, 6.8vw, 108px);
--sm: clamp(62px, 5.6vw, 88px);
--ring: clamp(3px, 0.35vw, 5px);
--label-font: clamp(13px, 1.2vw, 17px);
--label-pad-y: clamp(10px, 1.1vw, 14px);
--label-pad-x: clamp(18px, 2vw, 28px);
width: 100%;
}
.map-graph__inner {
position: relative;
width: 100%;
border-radius: 28px;
overflow: hidden;
aspect-ratio: 1892 / 826;
min-height: 280px;
background: rgba(255,255,255,0.35);
}
.map-graph__svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.mg-edge {
fill: none;
stroke: var(--blue);
stroke-width: 1.2;
stroke-linecap: round;
stroke-dasharray: 6 8;
opacity: 0.85;
}
.mg-edge--decor { opacity: 0.6; }
.map-graph__nodes {
position: absolute;
inset: 0;
pointer-events: none;
}
.mg-node {
position: absolute;
left: calc(var(--x) * 1%);
top: calc(var(--y) * 1%);
transform: translate(-50%, -50%) scale(0.96);
opacity: 0;
filter: blur(2px);
transition: transform 0.6s ease, opacity 0.6s ease, filter 0.6s ease;
pointer-events: auto;
}
.mg-node__ring {
width: var(--size);
height: var(--size);
border-radius: 999px;
box-shadow: var(--shadow);
background: #ffffff;
padding: var(--ring);
}
.mg-node__img {
width: 100%;
height: 100%;
display: block;
border-radius: 999px;
object-fit: cover;
}
.mg-node--lg { --size: var(--lg); }
.mg-node--md { --size: var(--md); }
.mg-node--sm { --size: var(--sm); }
.mg-node--lg .mg-node__ring,
.mg-node--md .mg-node__ring,
.mg-node--sm .mg-node__ring {
border: calc(var(--ring) * 1px) solid rgba(255,255,255,0.9);
}
.mg-node--lg .mg-node__ring {
box-shadow: 0 0 0 calc(var(--ring) * 2px) var(--blue-soft), var(--shadow);
}
.mg-node--md .mg-node__ring,
.mg-node--sm .mg-node__ring {
box-shadow: 0 0 0 calc(var(--ring) * 1.6px) rgba(47, 84, 255, 0.14), var(--shadow);
}
.mg-node__label {
position: absolute;
top: 50%;
left: calc(100% - 10px);
transform: translateY(-50%);
background: var(--pill-bg);
color: var(--text);
font-weight: 600;
font-size: var(--label-font);
padding: var(--label-pad-y) var(--label-pad-x);
border-radius: 999px;
box-shadow: 0 10px 26px rgba(10, 23, 60, 0.06);
white-space: nowrap;
}
.mg-node__label--left { left: auto; right: calc(100% - 10px); }
.mg-node__label--wide {
padding-right: calc(var(--label-pad-x) * 1.3);
padding-left: calc(var(--label-pad-x) * 1.3);
}
.map-graph.is-animating .mg-node {
opacity: 1;
filter: blur(0);
transform: translate(-50%, -50%) scale(1);
}
/* reveal mask */
.mg-reveal-rect { width: 0; }
.map-graph.is-animating .mg-reveal-rect { animation: mg-reveal 1.35s ease forwards; }
@keyframes mg-reveal { from { width: 0; } to { width: 1000px; } }
@media (max-width: 640px) {
.mg-node__label { left: calc(100% - 16px); }
.mg-node__label--left { right: calc(100% - 16px); }
}
/* PAYXINSOLE cards */
.features-section { padding: 80px 32px; position: relative; overflow: hidden; }
.feature-card-left,
.feature-card-right {
border-radius: 24px;
overflow: hidden;
height: 100%;
display: flex;
flex-direction: column;
position: relative;
}
.feature-card-left {
background: linear-gradient(135deg, rgba(230, 230, 250, 0.6), rgba(220, 220, 245, 0.4));
border: 1px solid rgba(200, 200, 230, 0.3);
backdrop-filter: blur(8px);
padding: 40px;
}
.feature-card-right {
background: linear-gradient(135deg, rgba(197, 189, 222, 0.4), rgba(242, 241, 244, 0.2));
border: 1px solid rgba(150, 130, 220, 0.3);
backdrop-filter: blur(8px);
padding: 40px 40px 30px;
}
.card-visual {
position: absolute;
top: 0; right: 0; bottom: 0;
width: 46%;
z-index: 1;
overflow: hidden;
border-left: 1px solid rgba(255,255,255,0.06);
}
.card-visual img { width: 100%; height: 100%; object-fit: cover; display: block; }
.feature-card-left .card-content {
position: relative;
z-index: 2;
max-width: 54%;
}
.card-footer { margin-top: auto; position: relative; z-index: 2; }
.card-footer p {
font-size: 14px;
font-weight: 500;
letter-spacing: 0.5px;
text-transform: uppercase;
color: #929292
margin: 0;
line-height: 1.5;
}
@media (max-width: 991px) {
.card-visual { position: relative; width: 100%; height: 240px; margin-top: 18px; border-left: none; }
.feature-card-left .card-content { max-width: 100%; }
.features-section { padding: 60px 20px; }
.feature-card-left, .feature-card-right { padding: 32px; }
}
@media (max-width: 768px) {
.feature-card-left, .feature-card-right { padding: 24px; }
}
@media (prefers-reduced-motion: reduce) {
.triangle, .hero-content, .map-graph.is-animating .mg-reveal-rect { animation: none !important; }
.mg-node { transition: none !important; }
}
/* CONTACT FORM SECTION */
.contact-section {
position: relative;
padding: 120px 32px;
min-height: 60vh;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
.contact-bg {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 0;
overflow: hidden;
}
.contact-section .triangle {
position: absolute;
filter: blur(50px);
opacity: 0.4;
}
.contact-content {
position: relative;
z-index: 10;
max-width: 600px;
width: 100%;
}
.contact-title {
font-size: clamp(32px, 4vw, 52px);
font-weight: 300;
line-height: 1.2;
color: var(--text);
margin-bottom: 36px;
text-align: center;
}
.contact-form {
display: flex;
flex-direction: column;
gap: 16px;
}
.form-group {
display: flex;
flex-direction: column;
}
.form-group label {
font-size: 14px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
color: var(--text);
margin-bottom: 8px;
}
.form-group input,
.form-group textarea {
padding: 14px 16px;
border: 1px solid rgba(10, 14, 39, 0.15);
border-radius: 8px;
font-family: Inter, system-ui, sans-serif;
font-size: 16px;
color: var(--text);
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(8px);
transition: all 0.3s ease;
}
.form-group input:focus,
.form-group textarea:focus {
outline: none;
border-color: var(--primary);
background: #fff;
box-shadow: 0 0 0 3px rgba(37, 87, 255, 0.1);
}
.form-group textarea {
resize: vertical;
min-height: 130px;
}
.btn-submit {
padding: 14px 28px;
border-radius: 999px;
border: none;
font-size: 16px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.5px;
cursor: pointer;
background: linear-gradient(90deg, var(--primary), #6f7bff);
color: #fff;
box-shadow: 0 10px 30px rgba(37, 87, 255, 0.25);
transition: all 0.3s ease;
margin-top: 16px;
}
.btn-submit:hover {
transform: translateY(-2px);
box-shadow: 0 15px 40px rgba(37, 87, 255, 0.35);
}
@media (max-width: 768px) {
.contact-section {
padding: 80px 20px;
}
.contact-title {
font-size: 28px;
margin-bottom: 28px;
}
}
</style>
</head>
<body>
<nav>
<div class="nav-logo">Layerloop</div>
<ul class="nav-links">
<li><a href="#layerloop-med">LAYERLOOP MED</a></li>
<li><a href="#payxinsole">PAYXINSOLE</a></li>
<li><a href="#materials">MATERIALI</a></li>
<li><a href="#contact">CONTATTI</a></li>
</ul>
</nav>
<section class="hero">
<div class="hero-bg" aria-hidden="true">
<div class="triangle triangle1"></div>
<div class="triangle triangle2"></div>
<div class="triangle triangle3"></div>
</div>
<div class="container-fluid h-100">
<div class="row h-100">
<div class="col-lg-6 col-12 px-lg-5 px-4 align-self-center" style="z-index: 10;">
<div class="hero-content pb-40 pb-md-80">
<h1 class="hero-title">
Designed for care,<br>
not for <span class="accent">machines</span>
</h1>
<div class="row justify-content-between pt-40">
<div class="col-lg-7">
<p class="hero-desc">
La stampa 3D progettata per applicazioni medical-oriented e produzione certificabile.
</p>
</div>
<div class="col-lg-5">
<div class="hero-desc d-flex" style="color: #2557ff;">
<span class="material-symbols-outlined pr-10" style="color:#2557ff; font-size:32px; line-height:110%;">verified</span>
<strong>compatibile con 10+ software certificati</strong>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-6 col-12 align-self-end justify-content-center" style="z-index: 5; padding-top: 40px;">
<div class="hero-image">
<img src="upload/Ipad_med.png" alt="Medical professionals with 3D printer" />
</div>
</div>
</div>
</div>
<div class="cta-group">
<button type="button" class="btn btn-primary">Richiedi consulenza</button>
<button type="button" class="btn btn-secondary">Scopri PayxInsole</button>
</div>
</section>
<section class="section-grey" id="layerloop-med">
<div class="pt-40 pt-md-80 pb-40"></div>
<section>
<div class="container-fluid">
<div class="row align-items-center gx-5 justify-content-start">
<div class="col-lg-5 col-12 px-lg-5 px-4 align-self-start">
<h2 class="mb-40">
Un ecosistema che
porta <br>la
produzione medicale<br> <span class="accent">in-house</span>
</h2>
</div>
<div class="col-lg-6 offset-lg-1">
<div class="row justify-content-start">
<div class="col-lg-6 col-12 px-lg-5 px-4">
<div style="margin-bottom: 40px;">
<p style="font-size: 14px; font-weight: 600; color: #818181; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 12px;">
PRODUZIONE IN-HOUSE BY LAYERLOOP MED
</p>
<p class="hero-desc">
Un ecosistema che unisce hardware professionale, materiali selezionati e processo controllato per portare la produzione medicale su misura direttamente in-house.
</p>
</div>
</div>
<div class="col-lg-6 col-12 px-lg-5 px-4">
<div style="margin-bottom: 40px;">
<p style="font-size: 14px; font-weight: 600; color: #818181; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 12px;">
Nel medicale non basta una stampante 3D
</p>
<p class="hero-desc">
Layerloop Medical Division nasce per rispondere a questa esigenza: trasformare la stampa 3D in una piattaforma produttiva medical-ready, dove hardware, materiali e processo sono progettati per supportare applicazioni sanitarie reali e percorsi di certificazione del dispositivo finale.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<div class="pt-40 pt-md-80 pb-40"></div>
<section>
<div class="container-fluid">
<div class="row justify-content-center">
<section class="map-graph" data-animate-on-scroll="true" aria-label="Grafico connessioni Layerloop">
<div class="map-graph__inner">
<svg class="map-graph__svg" viewBox="0 0 1000 436" preserveAspectRatio="xMidYMid meet" aria-hidden="true">
<defs>
<mask id="mg-reveal" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse" x="0" y="0" width="1000" height="436">
<rect class="mg-reveal-rect" x="0" y="0" width="0" height="436" fill="#fff"></rect>
</mask>
</defs>
<path class="mg-edge mg-edge--decor" d="M -40 90 C 180 20, 320 140, 520 85 S 760 10, 1040 70" mask="url(#mg-reveal)" />
<g id="mg-edges" mask="url(#mg-reveal)"></g>
</svg>
<div class="map-graph__nodes">
<div class="mg-node mg-node--lg" data-id="medici" style="--x: 14; --y: 22;">
<div class="mg-node__ring">
<img class="mg-node__img" src="upload/medici.png" alt="Medici" />
</div>
<span class="mg-node__label mg-node__label--left">medici</span>
</div>
<div class="mg-node mg-node--sm" data-id="materiali" style="--x: 30; --y: 46;">
<div class="mg-node__ring">
<img class="mg-node__img" src="upload/materialee.png" alt="Materiali" />
</div>
<span class="mg-node__label">materiali</span>
</div>
<div class="mg-node mg-node--md" data-id="hardware" style="--x: 49; --y: 40;">
<div class="mg-node__ring">
<img class="mg-node__img" src="upload/chip.png" alt="Hardware" />
</div>
<span class="mg-node__label">hardware</span>
</div>
<div class="mg-node mg-node--lg" data-id="additive" style="--x: 83; --y: 18;">
<div class="mg-node__ring">
<img class="mg-node__img" src="upload/additive.png" alt="Additive manufacturing" />
</div>
<span class="mg-node__label">additive manufacturing</span>
</div>
<div class="mg-node mg-node--md" data-id="processo" style="--x: 78; --y: 63;">
<div class="mg-node__ring">
<img class="mg-node__img" src="upload/additive.png" alt="Processo controllato" />
</div>
<span class="mg-node__label mg-node__label--wide">processo controllato</span>
</div>
</div>
</div>
</section>
</div>
</div>
</section>
<div class="pt-40 pt-md-80 pb-40"></div>
<section class="ecosystem-feature-cards pb-40">
<div class="container-fluid">
<div class="row align-items-start justify-content-between gx-5">
<div class="col-lg-8 px-lg-5">
<div class="row g-4">
<div class="col-md-4 col-12">
<div class="feature-card p-5">
<div class="icon-wrap">
<span class="material-symbols-outlined" style="font-size: 42px;"> barefoot </span>
</div>
<h3>PODOLOGI</h3>
<p>Produzione in-house di plantari su misura, con controllo clinico, tempi rapidi e costi sostenibili.</p>
</div>
</div>
<div class="col-md-4 col-12">
<div class="feature-card p-5">
<div class="icon-wrap">
<span class="material-symbols-outlined" style="font-size: 42px;"> local_hospital </span>
</div>
<h3>CLINICHE</h3>
<p>Dispositivi medicali personalizzati con processo controllato e integrabile nei flussi esistenti.</p>
</div>
</div>
<div class="col-md-4 col-12">
<div class="feature-card p-5">
<div class="icon-wrap">
<span class="material-symbols-outlined" style="font-size: 42px;"> orthopedics </span>
</div>
<h3>ORTOPEDICI</h3>
<p>Componenti funzionali affidabili, materiali tecnici e produzione scalabile in-house.</p>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-12 px-lg-5 px-4">
<div class="">