{"id":530,"date":"2024-03-25T08:47:34","date_gmt":"2024-03-25T08:47:34","guid":{"rendered":"https:\/\/www.delegi.it\/?page_id=530"},"modified":"2026-09-18T12:53:00","modified_gmt":"2026-09-18T12:53:00","slug":"landing-2","status":"publish","type":"page","link":"https:\/\/www.delegi.it\/","title":{"rendered":"landing"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"530\" class=\"elementor elementor-530\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ccb8daa elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ccb8daa\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6e57087\" data-id=\"6e57087\" data-element_type=\"column\" data-e-type=\"column\">\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-b9c5654 elementor-widget elementor-widget-html\" data-id=\"b9c5654\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- Delegi landing \u2014 incollare in UN widget \"HTML\" di Elementor.\r\n     Pagina consigliata: template \"Elementor Canvas\", un solo contenitore a larghezza piena, padding 0.\r\n     File generato da tools\/build_elementor.py: non modificarlo a mano. -->\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin \/>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Instrument+Sans:wght@400;500;600;700&family=Instrument+Serif:ital@1&family=Work+Sans:wght@400;500;600&display=swap\" rel=\"stylesheet\" \/>\r\n<script>\r\ndocument.documentElement.classList.add(\"js\");\r\n(function () {\r\n  var sbw = function () {\r\n    document.documentElement.style.setProperty(\"--dl-sbw\", (window.innerWidth - document.documentElement.clientWidth) + \"px\");\r\n  };\r\n  sbw();\r\n  window.addEventListener(\"resize\", sbw);\r\n  window.addEventListener(\"load\", sbw);\r\n})();\r\n<\/script>\r\n<style>\r\n\r\n#delegi-lp,\r\n#delegi-lp :where(*:not(svg, svg *)),\r\n#delegi-lp :where(*:not(svg, svg *))::before,\r\n#delegi-lp :where(*:not(svg, svg *))::after { all: revert; }\r\n\/* =====================================================================\r\n   Delegi \u2014 light editorial landing\r\n   White base \u00b7 navy ink \u00b7 amber accent \u00b7 hairlines instead of fades\r\n   ===================================================================== *\/\r\n\r\n#delegi-lp {\r\n  --navy: #19375B;\r\n  --navy-900: #0E2240;\r\n  --amber: #F0A83B;\r\n  --amber-600: #D98F22;\r\n\r\n  --bg: #FFFFFF;\r\n  --surface: #F6F8FB;\r\n  --line: #E6EBF2;\r\n  --line-strong: #D5DDE8;\r\n  --ink: #0E2240;\r\n  --ink-soft: #4A5B72;\r\n  --ink-mute: #627186;\r\n  --field-line: #7A889C;\r\n  --tint: #EDF2F8;\r\n\r\n  --font-heading: \"Instrument Sans\", \"Helvetica Neue\", Arial, sans-serif;\r\n  --font-serif: \"Instrument Serif\", Georgia, serif;\r\n  --font-body: \"Work Sans\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\r\n\r\n  --container: 1360px;\r\n  --gutter: 32px;\r\n  --header-h: 84px;\r\n\r\n  --radius-sm: 12px;\r\n  --radius: 22px;\r\n  --radius-lg: 32px;\r\n\r\n  --shadow-sm: 0 1px 2px rgba(14, 34, 64, 0.05);\r\n  --shadow: 0 12px 32px -12px rgba(14, 34, 64, 0.16);\r\n  --shadow-lg: 0 30px 60px -24px rgba(14, 34, 64, 0.28);\r\n\r\n  --ease: cubic-bezier(0.22, 1, 0.36, 1);\r\n  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);\r\n\r\n  --section-y: clamp(96px, 5rem + 5vw, 176px);\r\n}\r\n\r\n\/* ---------- reset ---------- *\/\r\n#delegi-lp, #delegi-lp *, #delegi-lp *::before, #delegi-lp *::after { box-sizing: border-box; }\r\n#delegi-lp { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }\r\nhtml.lenis-off { scroll-behavior: smooth; }\r\nhtml.lenis, html.lenis body { height: auto; }\r\n.lenis.lenis-smooth { scroll-behavior: auto !important; }\r\n.lenis.lenis-stopped { overflow: hidden; }\r\n\r\n#delegi-lp {\r\n  margin: 0;\r\n  background: var(--bg);\r\n  color: var(--ink);\r\n  font-family: var(--font-body);\r\n  font-size: 1.0625rem;\r\n  line-height: 1.65;\r\n  -webkit-font-smoothing: antialiased;\r\n  -moz-osx-font-smoothing: grayscale;\r\n  overflow-x: clip;\r\n}\r\n#delegi-lp img, #delegi-lp svg { display: block; max-width: 100%; }\r\n#delegi-lp a { color: inherit; text-decoration: none; }\r\n#delegi-lp button, #delegi-lp input { font: inherit; color: inherit; }\r\n#delegi-lp button { cursor: pointer; background: none; border: 0; padding: 0; }\r\n#delegi-lp h1, #delegi-lp h2, #delegi-lp h3, #delegi-lp p, #delegi-lp ul { margin: 0; }\r\n#delegi-lp ul { padding: 0; list-style: none; }\r\n#delegi-lp address { font-style: normal; }\r\n#delegi-lp ::selection { background: var(--amber); color: var(--navy-900); }\r\n\r\n#delegi-lp h1, #delegi-lp h2, #delegi-lp h3 {\r\n  font-family: var(--font-heading);\r\n  color: var(--ink);\r\n  font-weight: 600;\r\n  text-wrap: balance;\r\n}\r\n#delegi-lp h2 {\r\n  font-size: clamp(2.1rem, 1.3rem + 2.6vw, 3.9rem);\r\n  line-height: 1.04;\r\n  letter-spacing: -0.03em;\r\n}\r\n#delegi-lp h3 {\r\n  font-size: clamp(1.2rem, 1.05rem + 0.4vw, 1.45rem);\r\n  line-height: 1.2;\r\n  letter-spacing: -0.015em;\r\n}\r\n#delegi-lp p { text-wrap: pretty; }\r\n\r\n#delegi-lp :focus-visible { outline: 2px solid var(--navy); outline-offset: 3px; border-radius: 6px; }\r\n#delegi-lp .form-panel__copy :focus-visible { outline-color: var(--amber); }\r\n#delegi-lp #main:focus { outline: none; }\r\n\r\n#delegi-lp .container {\r\n  width: 100%;\r\n  max-width: calc(var(--container) + var(--gutter) * 2);\r\n  margin-inline: auto;\r\n  padding-inline: var(--gutter);\r\n}\r\n\r\n#delegi-lp .skip-link {\r\n  position: fixed;\r\n  top: 12px;\r\n  left: 12px;\r\n  z-index: 200;\r\n  padding: 10px 18px;\r\n  border-radius: 999px;\r\n  background: var(--navy);\r\n  color: #fff;\r\n  font-weight: 600;\r\n  transform: translateY(-160%);\r\n  transition: transform 0.25s var(--ease);\r\n}\r\n#delegi-lp .skip-link:focus { transform: none; }\r\n\r\n\/* ---------- progress ---------- *\/\r\n#delegi-lp .progress {\r\n  position: fixed;\r\n  inset: 0 0 auto 0;\r\n  height: 3px;\r\n  z-index: 120;\r\n  pointer-events: none;\r\n}\r\n#delegi-lp .progress__bar {\r\n  display: block;\r\n  height: 100%;\r\n  background: linear-gradient(90deg, var(--navy), var(--amber));\r\n  transform: scaleX(0);\r\n  transform-origin: 0 50%;\r\n}\r\n\r\n\/* ---------- buttons ---------- *\/\r\n#delegi-lp .btn {\r\n  --tx: 0px;\r\n  --ty: 0px;\r\n  position: relative;\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  gap: 12px;\r\n  padding: 15px 26px;\r\n  border-radius: 999px;\r\n  font-family: var(--font-heading);\r\n  font-weight: 600;\r\n  font-size: 1rem;\r\n  letter-spacing: -0.005em;\r\n  line-height: 1;\r\n  white-space: nowrap;\r\n  border: 1px solid transparent;\r\n  transform: translate3d(var(--tx), var(--ty), 0);\r\n  transition:\r\n    transform 0.5s var(--ease),\r\n    background-color 0.3s var(--ease),\r\n    color 0.3s var(--ease),\r\n    border-color 0.3s var(--ease),\r\n    box-shadow 0.3s var(--ease);\r\n}\r\n#delegi-lp .btn.is-magnet { transition-duration: 0.18s, 0.3s, 0.3s, 0.3s, 0.3s; }\r\n#delegi-lp .btn__icon {\r\n  display: inline-grid;\r\n  place-items: center;\r\n  width: 30px;\r\n  height: 30px;\r\n  margin: -8px -12px -8px 0;\r\n  border-radius: 50%;\r\n  background: var(--amber);\r\n  color: var(--navy-900);\r\n  overflow: hidden;\r\n}\r\n#delegi-lp .btn:hover .btn__icon svg { animation: dl-arrow-loop 0.55s var(--ease); }\r\n@keyframes dl-arrow-loop {\r\n  0% { transform: translateX(0); }\r\n  45% { transform: translateX(140%); }\r\n  46% { transform: translateX(-140%); }\r\n  100% { transform: translateX(0); }\r\n}\r\n\r\n#delegi-lp .btn--primary { background: var(--navy); color: #fff; box-shadow: 0 10px 24px -12px rgba(25, 55, 91, 0.55); }\r\n#delegi-lp .btn--primary:hover { background: var(--navy-900); box-shadow: 0 16px 30px -12px rgba(14, 34, 64, 0.55); }\r\n#delegi-lp .btn--accent { background: var(--amber); color: var(--navy-900); box-shadow: 0 10px 24px -12px rgba(217, 143, 34, 0.7); }\r\n#delegi-lp .btn--accent:hover { background: #F5B652; }\r\n#delegi-lp .btn--sm { min-height: 44px; padding: 11px 20px; font-size: 0.95rem; }\r\n#delegi-lp .btn--lg { padding: 20px 30px; font-size: 1.06rem; }\r\n#delegi-lp .btn--lg .btn__icon { width: 36px; height: 36px; margin-right: -16px; }\r\n#delegi-lp .btn--block { width: 100%; padding-block: 17px; }\r\n\r\n#delegi-lp .btn.is-loading { pointer-events: none; opacity: 0.8; }\r\n#delegi-lp .btn.is-loading::after {\r\n  content: \"\";\r\n  width: 16px;\r\n  height: 16px;\r\n  border: 2px solid rgba(14, 34, 64, 0.25);\r\n  border-top-color: var(--navy-900);\r\n  border-radius: 50%;\r\n  animation: dl-spin 0.7s linear infinite;\r\n}\r\n@keyframes dl-spin { to { transform: rotate(360deg); } }\r\n\r\n\/* ---------- header ---------- *\/\r\n#delegi-lp .header {\r\n  position: fixed;\r\n  inset: 0 0 auto 0;\r\n  z-index: 100;\r\n  height: var(--header-h);\r\n  display: flex;\r\n  align-items: center;\r\n  background: rgba(255, 255, 255, 0);\r\n  border-bottom: 1px solid transparent;\r\n  transition:\r\n    background-color 0.35s var(--ease),\r\n    border-color 0.35s var(--ease),\r\n    box-shadow 0.35s var(--ease);\r\n}\r\n#delegi-lp .header.is-scrolled {\r\n  background: rgba(255, 255, 255, 0.94);\r\n  border-bottom-color: var(--line);\r\n  box-shadow: 0 6px 18px -14px rgba(14, 34, 64, 0.35);\r\n}\r\n#delegi-lp .header__inner {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n  gap: 24px;\r\n}\r\n#delegi-lp .brand { display: inline-flex; align-items: center; flex-shrink: 0; }\r\n#delegi-lp .brand__logo {\r\n  height: 42px;\r\n  width: auto;\r\n  transform-origin: left center;\r\n  transition: transform 0.35s var(--ease);\r\n}\r\n#delegi-lp .header.is-scrolled .brand__logo { transform: scale(0.88); }\r\n#delegi-lp .header__actions { display: flex; align-items: center; gap: 12px; }\r\n#delegi-lp .header__inner { position: relative; }\r\n\r\n\/* main navigation \u2014 same links as the footer *\/\r\n#delegi-lp .nav {\r\n  position: absolute;\r\n  left: 50%;\r\n  top: 50%;\r\n  transform: translate(-50%, -50%);\r\n}\r\n#delegi-lp .nav__list { display: flex; align-items: center; gap: 6px; }\r\n#delegi-lp .nav__link {\r\n  position: relative;\r\n  display: inline-block;\r\n  padding: 12px 16px;\r\n  font-family: var(--font-heading);\r\n  font-weight: 600;\r\n  font-size: 0.98rem;\r\n  letter-spacing: -0.005em;\r\n  color: var(--ink-soft);\r\n  transition: color 0.3s var(--ease);\r\n}\r\n#delegi-lp .nav__link::after {\r\n  content: \"\";\r\n  position: absolute;\r\n  left: 16px;\r\n  right: 16px;\r\n  bottom: 6px;\r\n  height: 2px;\r\n  border-radius: 2px;\r\n  background: var(--amber);\r\n  transform: scaleX(0);\r\n  transform-origin: 100% 50%;\r\n  transition: transform 0.45s var(--ease);\r\n}\r\n#delegi-lp .nav__link:hover, #delegi-lp .nav__link.is-active { color: var(--ink); }\r\n#delegi-lp .nav__link:hover::after, #delegi-lp .nav__link.is-active::after { transform: scaleX(1); transform-origin: 0 50%; }\r\n\r\n#delegi-lp .nav-toggle {\r\n  display: none;\r\n  position: relative;\r\n  width: 44px;\r\n  height: 44px;\r\n  border-radius: 50%;\r\n  border: 1px solid var(--line-strong);\r\n  background: #fff;\r\n}\r\n#delegi-lp .nav-toggle__bar {\r\n  position: absolute;\r\n  left: 13px;\r\n  right: 13px;\r\n  height: 2px;\r\n  border-radius: 2px;\r\n  background: var(--ink);\r\n  transition: transform 0.4s var(--ease), top 0.4s var(--ease);\r\n}\r\n#delegi-lp .nav-toggle__bar:nth-child(1) { top: 17px; }\r\n#delegi-lp .nav-toggle__bar:nth-child(2) { top: 24px; }\r\n#delegi-lp .header.menu-open .nav-toggle__bar:nth-child(1) { top: 20.5px; transform: rotate(45deg); }\r\n#delegi-lp .header.menu-open .nav-toggle__bar:nth-child(2) { top: 20.5px; transform: rotate(-45deg); }\r\n#delegi-lp .header.menu-open {\r\n  background: #fff;\r\n  border-bottom-color: var(--line);\r\n}\r\n\r\n@media (max-width: 860px) {\r\n  #delegi-lp .nav-toggle { display: grid; }\r\n  #delegi-lp .nav {\r\n    position: fixed;\r\n    left: 0;\r\n    right: 0;\r\n    top: var(--header-h);\r\n    transform: none;\r\n    padding: 12px var(--gutter) 28px;\r\n    background: #fff;\r\n    border-bottom: 1px solid var(--line);\r\n    box-shadow: 0 24px 40px -28px rgba(14, 34, 64, 0.35);\r\n    visibility: hidden;\r\n    opacity: 0;\r\n    translate: 0 -10px;\r\n    transition: opacity 0.35s var(--ease), translate 0.45s var(--ease), visibility 0s linear 0.45s;\r\n  }\r\n  #delegi-lp .header.menu-open .nav {\r\n    visibility: visible;\r\n    opacity: 1;\r\n    translate: 0 0;\r\n    transition: opacity 0.35s var(--ease), translate 0.45s var(--ease), visibility 0s;\r\n  }\r\n  #delegi-lp .nav__list { flex-direction: column; align-items: stretch; gap: 0; }\r\n  #delegi-lp .nav__list li + li { border-top: 1px solid var(--line); }\r\n  #delegi-lp .nav__link {\r\n    display: block;\r\n    padding: 18px 0;\r\n    font-size: 1.5rem;\r\n    letter-spacing: -0.02em;\r\n    color: var(--ink);\r\n  }\r\n  #delegi-lp .nav__link::after { display: none; }\r\n  #delegi-lp .nav__link.is-active { color: var(--navy); }\r\n}\r\n\r\n@keyframes dl-menu-in { from { opacity: 0; transform: translateY(-6px); } }\r\n\r\n\/* ---------- reveal system ---------- *\/\r\n\/* Reveals use the individual `translate` property so they never fight\r\n   with transform-based tilt \/ magnetic \/ parallax effects. *\/\r\n.js #delegi-lp [data-animate]:not([data-split]) {\r\n  opacity: 0;\r\n  translate: 0 28px;\r\n  transition:\r\n    opacity 0.9s var(--ease) var(--d, 0ms),\r\n    translate 1s var(--ease) var(--d, 0ms);\r\n}\r\n.js #delegi-lp [data-animate].in-view:not([data-split]) { opacity: 1; translate: 0 0; }\r\n\r\n\/* word mask reveal *\/\r\n#delegi-lp [data-split] .word {\r\n  display: inline-block;\r\n  overflow: hidden;\r\n  vertical-align: top;\r\n  padding: 0.06em 0.04em 0.14em;\r\n  margin: -0.06em -0.04em -0.14em;\r\n}\r\n#delegi-lp [data-split] .word__inner {\r\n  display: inline-block;\r\n  transform: translate3d(0, 112%, 0);\r\n  transition: transform 1.05s var(--ease);\r\n  transition-delay: calc(var(--d, 0ms) + var(--i, 0) * 55ms);\r\n}\r\n#delegi-lp [data-split].in-view .word__inner { transform: none; }\r\nhtml:not(.js) #delegi-lp [data-split] .word__inner { transform: none; }\r\n\r\n\/* ---------- eyebrow ---------- *\/\r\n#delegi-lp .eyebrow {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 10px;\r\n  padding: 8px 16px 8px 12px;\r\n  border-radius: 999px;\r\n  border: 1px solid var(--line);\r\n  background: #fff;\r\n  font-family: var(--font-heading);\r\n  font-weight: 600;\r\n  font-size: 0.88rem;\r\n  letter-spacing: 0.01em;\r\n  color: var(--navy);\r\n  box-shadow: var(--shadow-sm);\r\n}\r\n#delegi-lp .eyebrow__dot {\r\n  position: relative;\r\n  width: 8px;\r\n  height: 8px;\r\n  border-radius: 50%;\r\n  background: var(--amber);\r\n}\r\n#delegi-lp .eyebrow__dot::after {\r\n  content: \"\";\r\n  position: absolute;\r\n  inset: -4px;\r\n  border-radius: 50%;\r\n  border: 1.5px solid var(--amber);\r\n  opacity: 0;\r\n  animation: dl-ping 2.4s var(--ease) infinite;\r\n}\r\n@keyframes dl-ping {\r\n  0% { transform: scale(0.5); opacity: 0.8; }\r\n  80%, 100% { transform: scale(1.6); opacity: 0; }\r\n}\r\n\r\n\/* ---------- hero ---------- *\/\r\n#delegi-lp .hero {\r\n  position: relative;\r\n  display: flex;\r\n  align-items: flex-start;\r\n  background: #fff;\r\n  overflow: hidden;\r\n  isolation: isolate;\r\n}\r\n#delegi-lp .hero__canvas {\r\n  position: absolute;\r\n  inset: 0;\r\n  width: 100%;\r\n  height: 100%;\r\n  z-index: 0;\r\n  opacity: 0;\r\n  transition: opacity 0.9s;\r\n  pointer-events: none;\r\n}\r\n#delegi-lp .hero__canvas.is-ready { opacity: 1; }\r\n\r\n#delegi-lp .hero__inner {\r\n  position: relative;\r\n  z-index: 1;\r\n  padding-top: calc(var(--header-h) + clamp(40px, 7vh, 96px));\r\n  padding-bottom: clamp(190px, 26vh, 290px); \/* band where the dot wave lives *\/\r\n}\r\n#delegi-lp .hero__title {\r\n  margin-top: 28px;\r\n  max-width: 17.5ch;\r\n  font-size: clamp(2.8rem, 1.1rem + 5.4vw, 6.4rem);\r\n  line-height: 1.02;\r\n  letter-spacing: -0.035em;\r\n  font-weight: 600;\r\n  color: var(--ink);\r\n}\r\n@media (min-width: 1180px) {\r\n  #delegi-lp .hero__title { max-width: 24ch; }\r\n}\r\n\/* \"primo\" \u2014 editorial serif italic + hand-drawn amber stroke *\/\r\n#delegi-lp .hl {\r\n  position: relative;\r\n  display: inline-block;\r\n  font-family: var(--font-serif);\r\n  font-style: italic;\r\n  font-weight: 400;\r\n  letter-spacing: -0.01em;\r\n  color: var(--navy);\r\n  padding-right: 0.04em;\r\n}\r\n#delegi-lp .hl__line {\r\n  position: absolute;\r\n  left: -2%;\r\n  right: -2%;\r\n  bottom: -0.1em;\r\n  width: 104%;\r\n  height: 0.2em;\r\n  color: var(--amber);\r\n  overflow: visible;\r\n}\r\n#delegi-lp .hl__line path {\r\n  stroke-dasharray: 260;\r\n  stroke-dashoffset: 260;\r\n  transition: stroke-dashoffset 1.1s var(--ease-in-out) 1.05s;\r\n}\r\n#delegi-lp .hero__title.in-view .hl__line path { stroke-dashoffset: 0; }\r\nhtml:not(.js) #delegi-lp .hl__line path { stroke-dashoffset: 0; }\r\n\/* the highlighted word needs extra room below for the stroke *\/\r\n#delegi-lp .hero__title .word--hl {\r\n  padding-bottom: 0.3em;\r\n  margin-bottom: -0.3em;\r\n  padding-right: 0.1em;\r\n  margin-right: -0.1em;\r\n}\r\n\r\n#delegi-lp .hero__foot {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  align-items: center;\r\n  gap: 20px 40px;\r\n  margin-top: clamp(32px, 4vw, 52px);\r\n}\r\n#delegi-lp .hero__subtitle {\r\n  font-size: clamp(1.1rem, 1rem + 0.45vw, 1.35rem);\r\n  line-height: 1.5;\r\n  color: var(--ink-soft);\r\n  max-width: 34ch;\r\n}\r\n\r\n#delegi-lp .scroll-cue {\r\n  position: absolute;\r\n  z-index: 1;\r\n  left: max(var(--gutter), calc((100% - var(--container)) \/ 2));\r\n  bottom: 36px;\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 12px;\r\n  color: var(--navy);\r\n}\r\n#delegi-lp .scroll-cue__track {\r\n  position: relative;\r\n  width: 26px;\r\n  height: 42px;\r\n  border-radius: 999px;\r\n  border: 1.5px solid var(--line-strong);\r\n  background: rgba(255, 255, 255, 0.7);\r\n}\r\n#delegi-lp .scroll-cue__dot {\r\n  position: absolute;\r\n  left: 50%;\r\n  top: 8px;\r\n  width: 4px;\r\n  height: 8px;\r\n  margin-left: -2px;\r\n  border-radius: 4px;\r\n  background: var(--navy);\r\n  animation: dl-cue 2s var(--ease-in-out) infinite;\r\n}\r\n@keyframes dl-cue {\r\n  0% { transform: translateY(0); opacity: 0; }\r\n  25% { opacity: 1; }\r\n  70% { transform: translateY(16px); opacity: 0; }\r\n  100% { opacity: 0; }\r\n}\r\n#delegi-lp .scroll-cue__arrow { color: var(--ink-mute); transition: transform 0.4s var(--ease), color 0.3s; }\r\n#delegi-lp .scroll-cue:hover .scroll-cue__arrow { transform: translateY(4px); color: var(--navy); }\r\n\r\n\/* ---------- sections ---------- *\/\r\n#delegi-lp .section {\r\n  position: relative;\r\n  padding-block: var(--section-y);\r\n  background: #fff;\r\n}\r\n#delegi-lp #servizi { border-top: 1px solid var(--line); }\r\n#delegi-lp .section-head { margin-bottom: clamp(44px, 5vw, 76px); }\r\n#delegi-lp .section-head h2 { max-width: 16ch; }\r\n#delegi-lp .section-head--split {\r\n  display: grid;\r\n  grid-template-columns: repeat(4, minmax(0, 1fr));\r\n  align-items: end;\r\n  gap: 24px 20px;\r\n}\r\n#delegi-lp .section-head--split h2 { grid-column: 1 \/ 3; }\r\n#delegi-lp .section-head--split p {\r\n  grid-column: 3 \/ 5;\r\n  color: var(--ink-soft);\r\n  font-size: clamp(1.05rem, 1rem + 0.25vw, 1.2rem);\r\n  max-width: 44ch;\r\n}\r\n\r\n\/* ---------- services ---------- *\/\r\n#delegi-lp .services-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(4, minmax(0, 1fr));\r\n  gap: 20px;\r\n}\r\n#delegi-lp .service-card {\r\n  position: relative;\r\n  display: flex;\r\n  flex-direction: column;\r\n  justify-content: space-between;\r\n  gap: 56px;\r\n  min-height: 300px;\r\n  padding: 28px;\r\n  border-radius: var(--radius);\r\n  border: 1px solid var(--line);\r\n  background: #fff;\r\n  overflow: hidden;\r\n  isolation: isolate;\r\n}\r\n#delegi-lp .service-card, .js #delegi-lp .service-card[data-animate] {\r\n  transition:\r\n    opacity 0.9s var(--ease) var(--d, 0ms),\r\n    translate 1s var(--ease) var(--d, 0ms),\r\n    transform 0.6s var(--ease),\r\n    border-color 0.35s var(--ease),\r\n    box-shadow 0.45s var(--ease);\r\n}\r\n.js #delegi-lp .service-card.is-tilting[data-animate], #delegi-lp .service-card.is-tilting { transition-duration: 0.9s, 1s, 0.12s, 0.35s, 0.45s; }\r\n#delegi-lp .service-card:hover { border-color: var(--navy); box-shadow: var(--shadow); }\r\n#delegi-lp .service-card__top { display: flex; align-items: flex-start; justify-content: space-between; }\r\n#delegi-lp .service-card__icon {\r\n  display: grid;\r\n  place-items: center;\r\n  width: 60px;\r\n  height: 60px;\r\n  border-radius: 16px;\r\n  background: var(--tint);\r\n  color: var(--navy);\r\n  transition: background-color 0.35s var(--ease), color 0.35s var(--ease), transform 0.5s var(--ease);\r\n}\r\n#delegi-lp .service-card__icon svg { width: 30px; height: 30px; }\r\n#delegi-lp .service-card:hover .service-card__icon { background: var(--navy); color: #fff; transform: rotate(-6deg); }\r\n#delegi-lp .service-card__num {\r\n  position: absolute;\r\n  z-index: -1;\r\n  right: 18px;\r\n  bottom: -0.2em;\r\n  font-family: var(--font-serif);\r\n  font-style: italic;\r\n  font-weight: 400;\r\n  font-size: clamp(5rem, 3rem + 4vw, 9rem);\r\n  line-height: 1;\r\n  letter-spacing: -0.02em;\r\n  color: transparent;\r\n  -webkit-text-stroke: 1px var(--line-strong);\r\n  pointer-events: none;\r\n  user-select: none;\r\n  transition: color 0.5s var(--ease), -webkit-text-stroke-color 0.5s var(--ease);\r\n}\r\n#delegi-lp .service-card:hover .service-card__num { color: var(--amber); -webkit-text-stroke-color: transparent; }\r\n#delegi-lp .service-card h3 { max-width: 13ch; position: relative; }\r\n\r\n\/* ---------- story ---------- *\/\r\n#delegi-lp .section--story { padding-top: 0; }\r\n#delegi-lp .story {\r\n  display: grid;\r\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\r\n  align-items: center;\r\n  gap: clamp(40px, 6vw, 110px);\r\n}\r\n#delegi-lp .story__visual {\r\n  position: relative;\r\n  border-radius: var(--radius-lg);\r\n  background: var(--surface);\r\n  border: 1px solid var(--line);\r\n  padding: clamp(40px, 5vw, 72px) clamp(28px, 4vw, 64px);\r\n  overflow: hidden;\r\n}\r\n#delegi-lp .story__visual::before {\r\n  content: \"\";\r\n  position: absolute;\r\n  inset: 0;\r\n  background-image: radial-gradient(rgba(25, 55, 91, 0.13) 1px, transparent 1.2px);\r\n  background-size: 22px 22px;\r\n  pointer-events: none;\r\n}\r\n#delegi-lp .story__float { position: relative; will-change: transform; }\r\n#delegi-lp .story-stack {\r\n  position: relative;\r\n  height: 460px;\r\n  max-width: 480px;\r\n  margin-inline: auto;\r\n}\r\n#delegi-lp .story-stack__card {\r\n  --rot: 0deg;\r\n  --depth: 0;\r\n  --fan: 0px;\r\n  position: absolute;\r\n  width: 74%;\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: 40px;\r\n  padding: 26px 28px;\r\n  border-radius: 22px;\r\n  background: #fff;\r\n  border: 1px solid var(--line);\r\n  box-shadow: var(--shadow-lg);\r\n  font-family: var(--font-heading);\r\n  font-weight: 600;\r\n  font-size: 1.2rem;\r\n  letter-spacing: -0.01em;\r\n  color: var(--navy);\r\n  transform:\r\n    translate3d(\r\n      calc(var(--px, 0) * var(--depth) * 1px + var(--p, 0) * var(--fan)),\r\n      calc(var(--py, 0) * var(--depth) * 1px + var(--p, 0) * var(--fanY, 0px)),\r\n      0\r\n    )\r\n    rotate(calc(var(--rot) + var(--p, 0) * var(--rotShift, 0deg)))\r\n    scale(calc(1 + var(--p, 0) * 0.04));\r\n  will-change: transform;\r\n}\r\n#delegi-lp .story-stack__card svg {\r\n  width: 34px;\r\n  height: 34px;\r\n  padding: 7px;\r\n  border-radius: 10px;\r\n  background: var(--tint);\r\n  color: var(--navy);\r\n  box-sizing: content-box;\r\n}\r\n#delegi-lp .story-stack__card--1 { top: 0; left: 0; z-index: 3; --rot: -4deg; --depth: 26; --fan: -34px; --fanY: -26px; --rotShift: -5deg; }\r\n#delegi-lp .story-stack__card--2 { top: 142px; left: 26%; z-index: 2; --rot: 3deg; --depth: 16; --fan: 30px; --fanY: 0px; --rotShift: 4deg; }\r\n#delegi-lp .story-stack__card--2 svg { background: rgba(240, 168, 59, 0.18); color: var(--amber-600); }\r\n#delegi-lp .story-stack__card--3 { top: 284px; left: 6%; z-index: 1; --rot: -1deg; --depth: 8; --fan: -12px; --fanY: 30px; --rotShift: -2deg; background: var(--navy); border-color: var(--navy); color: #fff; }\r\n#delegi-lp .story-stack__card--3 svg { background: rgba(255, 255, 255, 0.1); color: var(--amber); }\r\n\r\n#delegi-lp .story__content { max-width: 60ch; }\r\n#delegi-lp .story__content > * + * { margin-top: 20px; }\r\n#delegi-lp .story__content > h2 + * { margin-top: 32px; }\r\n#delegi-lp .story__lead {\r\n  font-family: var(--font-heading);\r\n  font-size: clamp(1.2rem, 1.05rem + 0.5vw, 1.45rem);\r\n  line-height: 1.45;\r\n  font-weight: 500;\r\n  letter-spacing: -0.01em;\r\n  color: var(--navy);\r\n  padding-left: 20px;\r\n  border-left: 3px solid var(--amber);\r\n}\r\n#delegi-lp .story__content p:not(.story__lead) { color: var(--ink-soft); }\r\n#delegi-lp .story__content > div:last-child { margin-top: 36px; }\r\n\r\n\/* ---------- testimonials ---------- *\/\r\n#delegi-lp #testimonianze { padding-top: 0; }\r\n#delegi-lp .testimonials-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(3, minmax(0, 1fr));\r\n  gap: 24px;\r\n}\r\n#delegi-lp .testimonial-card { display: flex; flex-direction: column; gap: 18px; }\r\n#delegi-lp .testimonial-card__media {\r\n  position: relative;\r\n  aspect-ratio: 4 \/ 5;\r\n  border-radius: var(--radius);\r\n  background: var(--navy);\r\n  overflow: hidden;\r\n  display: grid;\r\n  place-items: center;\r\n  isolation: isolate;\r\n}\r\n#delegi-lp .testimonial-card__media::before {\r\n  content: \"\";\r\n  position: absolute;\r\n  inset: 0;\r\n  z-index: -1;\r\n  background: var(--navy);\r\n  transform: scale(1);\r\n  transition: transform 0.9s var(--ease);\r\n}\r\n#delegi-lp .testimonial-card__media::after {\r\n  content: \"\";\r\n  position: absolute;\r\n  inset: 0;\r\n  z-index: -1;\r\n  background-image: radial-gradient(rgba(255, 255, 255, 0.09) 1px, transparent 1.2px);\r\n  background-size: 18px 18px;\r\n}\r\n#delegi-lp .testimonial-card:hover .testimonial-card__media::before { transform: scale(1.08); }\r\n#delegi-lp .testimonial-card__thumb {\r\n  position: absolute;\r\n  inset: 0;\r\n  z-index: -1;\r\n  width: 100%;\r\n  height: 100%;\r\n  object-fit: cover;\r\n  transform: scale(var(--thumb-scale, 1.02));\r\n  transition: transform 0.9s var(--ease);\r\n}\r\n#delegi-lp .testimonial-card:hover .testimonial-card__thumb { transform: scale(calc(var(--thumb-scale, 1.02) * 1.05)); }\r\n\/* flat tint so the play button and index read on any frame *\/\r\n#delegi-lp .testimonial-card__media.has-thumb::after {\r\n  z-index: 0;\r\n  background: rgba(14, 34, 64, 0.28);\r\n  background-image: none;\r\n  pointer-events: none;\r\n  transition: background-color 0.4s var(--ease);\r\n}\r\n#delegi-lp .testimonial-card:hover .testimonial-card__media.has-thumb::after { background-color: rgba(14, 34, 64, 0.12); }\r\n#delegi-lp .testimonial-card__media.has-thumb .testimonial-card__player, #delegi-lp .testimonial-card__media.has-thumb .testimonial-card__index { z-index: 1; }\r\n\r\n\/* video lightbox: each clip opens at its real aspect ratio *\/\r\n#delegi-lp .video-modal {\r\n  --rn: 1.7778;\r\n  width: min(92vw, calc(86vh * var(--rn)), 1200px);\r\n  max-width: none; \/* override the UA dialog cap *\/\r\n  max-height: none;\r\n  margin: auto;\r\n  aspect-ratio: var(--rn);\r\n  padding: 0;\r\n  border: 0;\r\n  border-radius: 18px;\r\n  background: #000;\r\n  overflow: visible;\r\n  box-shadow: 0 40px 90px -30px rgba(0, 0, 0, 0.6);\r\n}\r\n#delegi-lp .video-modal::backdrop { background: rgba(14, 34, 64, 0.82); }\r\n#delegi-lp .video-modal[open] { animation: dl-modal-in 0.45s var(--ease); }\r\n#delegi-lp .video-modal[open]::backdrop { animation: dl-fade-in 0.35s var(--ease); }\r\n@keyframes dl-modal-in { from { opacity: 0; transform: translateY(24px) scale(0.96); } to { opacity: 1; transform: none; } }\r\n@keyframes dl-fade-in { from { opacity: 0; } to { opacity: 1; } }\r\n#delegi-lp .video-modal__frame {\r\n  display: block;\r\n  width: 100%;\r\n  height: 100%;\r\n  border: 0;\r\n  border-radius: inherit;\r\n}\r\n#delegi-lp .video-modal__close {\r\n  position: absolute;\r\n  top: -56px;\r\n  right: 0;\r\n  display: grid;\r\n  place-items: center;\r\n  width: 44px;\r\n  height: 44px;\r\n  border-radius: 50%;\r\n  background: #fff;\r\n  color: var(--navy-900);\r\n  transition: transform 0.4s var(--ease), background-color 0.3s;\r\n}\r\n#delegi-lp .video-modal__close:hover { transform: rotate(90deg); background: var(--amber); }\r\n#delegi-lp .video-modal__close:focus-visible { outline: 2px solid var(--amber); outline-offset: 3px; }\r\n#delegi-lp .testimonial-card__index {\r\n  position: absolute;\r\n  top: 18px;\r\n  left: 20px;\r\n  font-family: var(--font-heading);\r\n  font-weight: 500;\r\n  font-size: 0.9rem;\r\n  letter-spacing: 0.04em;\r\n  color: rgba(255, 255, 255, 0.55);\r\n}\r\n#delegi-lp .testimonial-card__player {\r\n  position: relative;\r\n  display: grid;\r\n  place-items: center;\r\n  width: 76px;\r\n  height: 76px;\r\n  border-radius: 50%;\r\n  background: var(--amber);\r\n  color: var(--navy-900);\r\n  box-shadow: 0 14px 30px -10px rgba(0, 0, 0, 0.45);\r\n  transition: transform 0.5s var(--ease), background-color 0.3s;\r\n}\r\n#delegi-lp .testimonial-card__player svg { width: 28px; height: 28px; margin-left: 3px; }\r\n#delegi-lp .testimonial-card__player::before, #delegi-lp .testimonial-card__player::after {\r\n  content: \"\";\r\n  position: absolute;\r\n  inset: 0;\r\n  border-radius: 50%;\r\n  border: 1.5px solid rgba(240, 168, 59, 0.8);\r\n  animation: dl-pulse 2.6s var(--ease) infinite;\r\n  pointer-events: none;\r\n}\r\n#delegi-lp .testimonial-card__player::after { animation-delay: 1.3s; }\r\n@keyframes dl-pulse {\r\n  0% { transform: scale(1); opacity: 0.9; }\r\n  100% { transform: scale(1.8); opacity: 0; }\r\n}\r\n#delegi-lp .testimonial-card:hover .testimonial-card__player { transform: scale(1.08); background: #F5B652; }\r\n#delegi-lp .testimonial-card__meta { padding-inline: 4px; }\r\n#delegi-lp .testimonial-card__name {\r\n  font-family: var(--font-heading);\r\n  font-weight: 600;\r\n  font-size: 1.2rem;\r\n  letter-spacing: -0.01em;\r\n  color: var(--ink);\r\n}\r\n#delegi-lp .testimonial-card__role { color: var(--ink-mute); font-size: 0.95rem; margin-top: 2px; }\r\n\r\n\/* ---------- form panel ---------- *\/\r\n#delegi-lp .section--form { padding-top: 0; }\r\n#delegi-lp .form-panel {\r\n  position: relative;\r\n  display: grid;\r\n  grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);\r\n  align-items: center;\r\n  gap: clamp(40px, 6vw, 96px);\r\n  padding: clamp(40px, 6vw, 96px);\r\n  border-radius: var(--radius-lg);\r\n  background-color: var(--navy-900);\r\n  background-image: radial-gradient(rgba(255, 255, 255, 0.07) 1px, transparent 1.2px);\r\n  background-size: 24px 24px;\r\n  color: #fff;\r\n  overflow: hidden;\r\n  isolation: isolate;\r\n}\r\n#delegi-lp .form-panel__copy h2 { color: #fff; max-width: 17ch; }\r\n#delegi-lp .emoji { display: inline-block; font-size: 0.6em; vertical-align: middle; line-height: 1; }\r\n#delegi-lp .form-panel__copy > p {\r\n  margin-top: 22px;\r\n  font-size: clamp(1.05rem, 1rem + 0.25vw, 1.2rem);\r\n  color: rgba(255, 255, 255, 0.74);\r\n  max-width: 44ch;\r\n}\r\n#delegi-lp .form-panel__points { margin-top: 36px; display: grid; gap: 14px; }\r\n#delegi-lp .form-panel__points li {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 14px;\r\n  font-weight: 500;\r\n  color: #fff;\r\n}\r\n#delegi-lp .check {\r\n  flex-shrink: 0;\r\n  display: grid;\r\n  place-items: center;\r\n  width: 28px;\r\n  height: 28px;\r\n  border-radius: 50%;\r\n  background: rgba(240, 168, 59, 0.16);\r\n  color: var(--amber);\r\n}\r\n#delegi-lp .check svg { width: 15px; height: 15px; }\r\n\r\n#delegi-lp .form-card {\r\n  display: grid;\r\n  gap: 18px;\r\n  padding: clamp(26px, 3vw, 40px);\r\n  border-radius: 24px;\r\n  background: #fff;\r\n  color: var(--ink);\r\n  box-shadow: 0 40px 80px -30px rgba(0, 0, 0, 0.55);\r\n}\r\n#delegi-lp .form-field { display: grid; gap: 8px; }\r\n#delegi-lp .form-field label {\r\n  font-family: var(--font-heading);\r\n  font-size: 0.9rem;\r\n  font-weight: 600;\r\n  color: var(--ink-soft);\r\n  transition: color 0.2s;\r\n}\r\n#delegi-lp .form-field input {\r\n  width: 100%;\r\n  padding: 14px 16px;\r\n  border-radius: var(--radius-sm);\r\n  border: 1px solid var(--field-line);\r\n  background: var(--surface);\r\n  font-size: 1rem;\r\n  color: var(--ink);\r\n  transition: border-color 0.2s var(--ease), background-color 0.2s var(--ease), box-shadow 0.2s var(--ease);\r\n}\r\n#delegi-lp .form-field input::placeholder { color: var(--ink-mute); }\r\n#delegi-lp .form-field input:hover { border-color: var(--navy-900); }\r\n#delegi-lp .form-field input:focus {\r\n  outline: none;\r\n  background: #fff;\r\n  border-color: var(--navy);\r\n  box-shadow: 0 0 0 4px rgba(25, 55, 91, 0.1);\r\n}\r\n#delegi-lp .form-field.is-filled label, #delegi-lp .form-field:focus-within label { color: var(--navy); }\r\n#delegi-lp .form-field input:user-invalid { border-color: #D64545; }\r\n\r\n#delegi-lp .form-check {\r\n  position: relative;\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 12px;\r\n  min-height: 44px;\r\n  font-size: 0.95rem;\r\n  color: var(--ink-soft);\r\n  cursor: pointer;\r\n  user-select: none;\r\n}\r\n#delegi-lp .form-check input { position: absolute; opacity: 0; left: 0; top: 50%; width: 44px; height: 44px; margin: -22px 0 0 -11px; cursor: pointer; }\r\n#delegi-lp .form-check__box {\r\n  flex-shrink: 0;\r\n  display: grid;\r\n  place-items: center;\r\n  width: 22px;\r\n  height: 22px;\r\n  border-radius: 7px;\r\n  border: 1.5px solid var(--field-line);\r\n  background: #fff;\r\n  color: #fff;\r\n  transition: background-color 0.2s, border-color 0.2s;\r\n}\r\n#delegi-lp .form-check__box svg { width: 14px; height: 14px; opacity: 0; transform: scale(0.6); transition: opacity 0.2s, transform 0.3s var(--ease); }\r\n#delegi-lp .form-check input:checked + .form-check__box { background: var(--navy); border-color: var(--navy); }\r\n#delegi-lp .form-check input:checked + .form-check__box svg { opacity: 1; transform: none; }\r\n#delegi-lp .form-check input:focus-visible + .form-check__box { outline: 2px solid var(--navy); outline-offset: 2px; border-color: var(--navy); }\r\n#delegi-lp .form-check input:user-invalid + .form-check__box { border-color: #D64545; }\r\n#delegi-lp .form-card .btn--block { margin-top: 6px; }\r\n\/* honeypot: invisible to people, filled only by bots *\/\r\n#delegi-lp .hp-field { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }\r\n#delegi-lp .form-card__note.is-success { color: #1E7F4F; font-weight: 600; }\r\n#delegi-lp .form-card__note.is-error { color: #B42318; font-weight: 600; }\r\n#delegi-lp .form-card__note { font-size: 0.9rem; color: var(--ink-soft); min-height: 1.3em; text-align: center; }\r\n#delegi-lp .form-card__note:empty { display: none; }\r\n\r\n\/* ---------- footer ---------- *\/\r\n#delegi-lp .footer {\r\n  position: relative;\r\n  border-top: 1px solid var(--line);\r\n  background: #fff;\r\n  padding-top: clamp(64px, 3rem + 3vw, 104px);\r\n  padding-bottom: 14px;\r\n  overflow: hidden;\r\n}\r\n#delegi-lp .footer__top {\r\n  display: grid;\r\n  grid-template-columns: 1.6fr 1fr 1.1fr 1.1fr;\r\n  gap: 48px 40px;\r\n  padding-bottom: 56px;\r\n}\r\n#delegi-lp .footer__brand { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }\r\n#delegi-lp .footer__logo { height: 52px; width: auto; max-width: none; }\r\n#delegi-lp .footer__cta { margin-top: 14px; }\r\n#delegi-lp .footer__label {\r\n  margin-bottom: 18px;\r\n  font-family: var(--font-heading);\r\n  font-size: 0.78rem;\r\n  font-weight: 600;\r\n  letter-spacing: 0.12em;\r\n  text-transform: uppercase;\r\n  color: var(--ink-mute);\r\n}\r\n#delegi-lp .footer__list {\r\n  display: grid;\r\n  gap: 4px;\r\n  font-size: 1rem;\r\n  color: var(--ink-soft);\r\n}\r\n#delegi-lp .footer__strong { font-family: var(--font-heading); font-weight: 600; color: var(--ink); }\r\n#delegi-lp .footer__list a, #delegi-lp .footer__top-link {\r\n  display: inline-block;\r\n  padding-block: 10px;\r\n  margin-block: -6px;\r\n  color: var(--ink);\r\n  background-origin: content-box;\r\n  background-clip: content-box;\r\n  background-image: linear-gradient(var(--amber), var(--amber));\r\n  background-size: 0 1.5px;\r\n  background-position: 0 100%;\r\n  background-repeat: no-repeat;\r\n  transition: background-size 0.4s var(--ease), color 0.3s;\r\n}\r\n#delegi-lp .footer__list a:hover { color: var(--navy); background-size: 100% 1.5px; }\r\n\r\n#delegi-lp .footer__bottom {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n  gap: 16px;\r\n  padding-block: 22px;\r\n  border-top: 1px solid var(--line);\r\n  font-size: 0.9rem;\r\n  color: var(--ink-mute);\r\n}\r\n#delegi-lp .footer__top-link {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 10px;\r\n  font-family: var(--font-heading);\r\n  font-weight: 600;\r\n  font-size: 0.92rem;\r\n  background-image: none;\r\n}\r\n#delegi-lp .footer__top-icon {\r\n  display: grid;\r\n  place-items: center;\r\n  width: 36px;\r\n  height: 36px;\r\n  border-radius: 50%;\r\n  border: 1px solid var(--line-strong);\r\n  transition: background-color 0.3s var(--ease), border-color 0.3s var(--ease), color 0.3s;\r\n}\r\n#delegi-lp .footer__top-link:hover .footer__top-icon { background: var(--navy); border-color: var(--navy); color: #fff; }\r\n#delegi-lp .footer__top-link:hover .footer__top-icon svg { animation: dl-arrow-up 0.55s var(--ease); }\r\n@keyframes dl-arrow-up {\r\n  0% { transform: translateY(0); }\r\n  45% { transform: translateY(-140%); }\r\n  46% { transform: translateY(140%); }\r\n  100% { transform: translateY(0); }\r\n}\r\n\r\n\r\n\/* ---------- footer legal row ---------- *\/\r\n#delegi-lp .footer__bottom { flex-wrap: wrap; }\r\n#delegi-lp .footer__legal { margin-right: auto; }\r\n#delegi-lp .footer__policies { display: flex; gap: 24px; }\r\n#delegi-lp .footer__policies a {\r\n  display: inline-block;\r\n  padding-block: 12px;\r\n  color: var(--ink-soft);\r\n  transition: color 0.3s var(--ease);\r\n}\r\n#delegi-lp .footer__policies a:hover { color: var(--navy); text-decoration: underline; text-underline-offset: 4px; }\r\n#delegi-lp .form-check__link {\r\n  color: var(--navy);\r\n  text-decoration: underline;\r\n  text-underline-offset: 3px;\r\n  text-decoration-thickness: 1px;\r\n}\r\n#delegi-lp .form-check__link:hover { color: var(--amber-600); }\r\n\r\n\/* ---------- legal dialogs ---------- *\/\r\n#delegi-lp .legal-modal {\r\n  width: min(780px, calc(100vw - 32px));\r\n  max-width: none;\r\n  height: min(86vh, 900px);\r\n  max-height: none;\r\n  margin: auto;\r\n  padding: 0;\r\n  border: 0;\r\n  border-radius: 26px;\r\n  background: #fff;\r\n  color: var(--ink);\r\n  box-shadow: 0 40px 90px -30px rgba(14, 34, 64, 0.5);\r\n  overflow: hidden;\r\n}\r\n#delegi-lp .legal-modal[open] { display: flex; flex-direction: column; animation: dl-modal-in 0.45s var(--ease); }\r\n#delegi-lp .legal-modal::backdrop { background: rgba(14, 34, 64, 0.62); }\r\n#delegi-lp .legal-modal[open]::backdrop { animation: dl-fade-in 0.35s var(--ease); }\r\n#delegi-lp .legal-modal__head {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n  gap: 16px;\r\n  padding: 22px 28px;\r\n  border-bottom: 1px solid var(--line);\r\n}\r\n#delegi-lp .legal-modal__title {\r\n  font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem);\r\n  letter-spacing: -0.02em;\r\n}\r\n#delegi-lp .legal-modal__close {\r\n  flex: none;\r\n  display: grid;\r\n  place-items: center;\r\n  width: 44px;\r\n  height: 44px;\r\n  border-radius: 50%;\r\n  border: 1px solid var(--line-strong);\r\n  color: var(--ink);\r\n  transition: transform 0.4s var(--ease), background-color 0.3s, border-color 0.3s, color 0.3s;\r\n}\r\n#delegi-lp .legal-modal__close:hover { transform: rotate(90deg); background: var(--navy); border-color: var(--navy); color: #fff; }\r\n#delegi-lp .legal-modal__body {\r\n  flex: 1;\r\n  overflow-y: auto;\r\n  overscroll-behavior: contain;\r\n  padding: 8px 28px 40px;\r\n  font-size: 0.98rem;\r\n  line-height: 1.7;\r\n  color: var(--ink-soft);\r\n}\r\n#delegi-lp .legal-modal__body h3 {\r\n  margin: 30px 0 10px;\r\n  font-size: 1.12rem;\r\n  color: var(--ink);\r\n}\r\n#delegi-lp .legal-modal__body p + p { margin-top: 10px; }\r\n#delegi-lp .legal-modal__body ul { display: grid; gap: 10px; padding-left: 20px; list-style: disc; }\r\n#delegi-lp .legal-modal__body li::marker { color: var(--amber); }\r\n#delegi-lp .legal-modal__body strong { color: var(--ink); font-weight: 600; }\r\n#delegi-lp .legal-modal__body a { color: var(--navy); text-decoration: underline; text-underline-offset: 3px; word-break: break-word; }\r\n#delegi-lp .legal-modal__meta {\r\n  margin-top: 18px;\r\n  padding: 14px 16px;\r\n  border-radius: 14px;\r\n  background: var(--surface);\r\n  font-size: 0.9rem;\r\n}\r\n@media (max-width: 720px) {\r\n  #delegi-lp .legal-modal { width: calc(100vw - 20px); height: calc(100svh - 40px); border-radius: 22px; }\r\n  #delegi-lp .legal-modal__head { padding: 16px 18px; }\r\n  #delegi-lp .legal-modal__body { padding: 4px 18px 32px; }\r\n  #delegi-lp .footer__policies { gap: 20px; }\r\n}\r\n\r\n\/* ---------- responsive ---------- *\/\r\n@media (max-width: 1180px) {\r\n  #delegi-lp .services-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }\r\n  #delegi-lp .service-card { min-height: 240px; }\r\n}\r\n@media (max-width: 980px) {\r\n  #delegi-lp .footer__top { grid-template-columns: 1fr 1fr; }\r\n  #delegi-lp .footer__brand { grid-column: 1 \/ -1; }\r\n  #delegi-lp .section-head--split { grid-template-columns: 1fr; }\r\n  #delegi-lp .section-head--split h2, #delegi-lp .section-head--split p { grid-column: auto; }\r\n  #delegi-lp .story { grid-template-columns: 1fr; }\r\n  #delegi-lp .story__visual { order: 2; }\r\n  #delegi-lp .form-panel { grid-template-columns: 1fr; }\r\n  #delegi-lp .story { gap: 48px; }\r\n  #delegi-lp .story__content { max-width: 640px; }\r\n  \/* testimonials become a swipeable row with a peek of the next card *\/\r\n  #delegi-lp .testimonials-grid {\r\n    display: flex;\r\n    gap: 16px;\r\n    overflow-x: auto;\r\n    scroll-snap-type: x mandatory;\r\n    scroll-padding-inline: var(--gutter);\r\n    margin-inline: calc(var(--gutter) * -1);\r\n    padding: 4px var(--gutter) 12px;\r\n    scrollbar-width: none;\r\n    overscroll-behavior-x: contain;\r\n  }\r\n  #delegi-lp .testimonials-grid::-webkit-scrollbar { display: none; }\r\n  #delegi-lp .testimonial-card { flex: 0 0 min(62%, 440px); scroll-snap-align: start; }\r\n}\r\n@media (max-width: 720px) {\r\n  #delegi-lp { --gutter: 20px; --header-h: 72px; --section-y: 80px; }\r\n  #delegi-lp .brand__logo { height: 34px; }\r\n  #delegi-lp .header__actions { gap: 8px; }\r\n  #delegi-lp .btn--sm { padding: 11px 16px; font-size: 0.9rem; }\r\n  #delegi-lp .hero__inner { padding-top: calc(var(--header-h) + 32px); padding-bottom: clamp(160px, 24vh, 210px); }\r\n  #delegi-lp .hero__title { margin-top: 22px; }\r\n  #delegi-lp .hero__foot { flex-direction: column; align-items: flex-start; }\r\n  #delegi-lp .scroll-cue { bottom: 24px; }\r\n  #delegi-lp .services-grid { grid-template-columns: 1fr; gap: 14px; }\r\n  #delegi-lp .service-card { min-height: 0; gap: 40px; padding: 24px; }\r\n  #delegi-lp .story__visual { padding: 32px 20px; }\r\n  #delegi-lp .story-stack { height: 380px; }\r\n  #delegi-lp .story-stack__card { width: 80%; padding: 20px 22px; gap: 28px; font-size: 1.05rem; }\r\n  #delegi-lp .story-stack__card--2 { top: 118px; left: 20%; }\r\n  #delegi-lp .story-stack__card--3 { top: 236px; }\r\n  #delegi-lp .testimonial-card { flex-basis: 84%; }\r\n  #delegi-lp .testimonial-card__player { width: 64px; height: 64px; }\r\n  #delegi-lp .video-modal { width: min(94vw, calc(80vh * var(--rn))); }\r\n  #delegi-lp .video-modal__close { top: -52px; }\r\n  #delegi-lp .form-panel { padding: 36px 20px 20px; border-radius: 26px; }\r\n  #delegi-lp .form-card { padding: 22px; border-radius: 20px; }\r\n  #delegi-lp .footer__logo { height: 44px; }\r\n  #delegi-lp .footer__bottom { flex-direction: column-reverse; align-items: flex-start; gap: 8px; }\r\n}\r\n@media (max-width: 600px) {\r\n  #delegi-lp .story-stack { width: 86%; }\r\n  #delegi-lp .story-stack__card--1 { --fan: -17px; --fanY: -13px; }\r\n  #delegi-lp .story-stack__card--2 { --fan: 15px; --fanY: 0px; }\r\n  #delegi-lp .story-stack__card--3 { --fan: -6px; --fanY: 15px; }\r\n}\r\n\/* ---------- reduced motion ---------- *\/\r\n@media (prefers-reduced-motion: reduce) {\r\n  #delegi-lp, #delegi-lp *, #delegi-lp *::before, #delegi-lp *::after {\r\n    animation-duration: 0.001ms !important;\r\n    animation-iteration-count: 1 !important;\r\n    transition-duration: 0.001ms !important;\r\n    transition-delay: 0ms !important;\r\n  }\r\n  .js #delegi-lp [data-animate]:not([data-split]) { opacity: 1; translate: none; }\r\n  #delegi-lp [data-split] .word__inner { transform: none; }\r\n  #delegi-lp .hl__line path { stroke-dashoffset: 0; }\r\n  #delegi-lp .scroll-cue__dot { animation: none; opacity: 1; }\r\n}\r\n\r\n\/* ---- Elementor \/ WordPress integration ---- *\/\r\nhtml, body { overflow-x: clip; }\r\n\/* full-bleed: 100vw includes the classic (Windows) scrollbar, --dl-sbw removes it *\/\r\n#delegi-lp {\r\n  --dl-vw: calc(100vw - var(--dl-sbw, 0px));\r\n  position: relative;\r\n  width: var(--dl-vw);\r\n  max-width: var(--dl-vw);\r\n  margin-left: calc(50% - var(--dl-vw) \/ 2);\r\n  margin-right: calc(50% - var(--dl-vw) \/ 2);\r\n  text-align: left;\r\n}\r\n.admin-bar #delegi-lp .header { top: 32px; }\r\n@media (max-width: 782px) { .admin-bar #delegi-lp .header { top: 46px; } }\r\n\r\n<\/style>\r\n<div id=\"delegi-lp\">\r\n<a class=\"skip-link\" href=\"#main\">Vai al contenuto principale<\/a>\r\n<div class=\"progress\" aria-hidden=\"true\"><span class=\"progress__bar\" id=\"progressBar\"><\/span><\/div>\r\n\r\n<!-- HEADER -->\r\n<header class=\"header\" id=\"header\">\r\n  <div class=\"container header__inner\">\r\n    <a href=\"#hero\" class=\"brand\" aria-label=\"Delegi, torna alla home\">\r\n      <img fetchpriority=\"high\" decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVsAAACfCAYAAABXwXr7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAEiBJREFUeNrsnb1SLMcVxxt0AycubShVqcrLC0gQyY7u8AR3CV0K7u4TAE8APAHwBCyBAkcXZXbE3MyKWJUTZ6wClUKvqpTbcy5n5BVCsP05PdO\/X9UU+tj5On3636d7TncbAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJALn3751UgOLAEAsdjGBB84b44jzAAAsdgiqv1qt\/lzp\/+68+O3Xy9xCwAgso0T1T71zwAAiG2gqHbS\/KnW\/tOk+W8VbgEAiG28qJboFgCi8VHBUe2pRLJP\/K9P\/vjZ5z\/9\/MO\/\/ol7AEAoivxA1gjt2Dx8FPu9dK+VefhYtsJFACAEpQ4jnDwjtEb\/3wnuAQBEtu5RbdX8ud3w56SCAQCRrUdUuylXuAgAILb2Ue3U\/DrV6yUqUsEAALG1E1rXcViiWwBAbC2QtQ\/GDueNNU0MAMCZIj6QaarXvcclSAVzt\/vU5pzGxjRsMEheFfKevrPCRnqNGS5j1ysw9kM3iC0MksEPI+gHrkmAS011hTAAAMQ2QlQb61oAgNgOJqqdNn9CRqOVrhQGAIDYqtCOIkWi52yhAwC2DPkD2UvrH7gyNg9pZKe4D0AvA7Gq+XNoHiY4rWuEZBvdNMf1j99+XYe+79ZAjSmCeB\/xFlIoe6ybsJFT39qc09h0C8tBxN6uTFLaZChQRHcWMt1zqMMIsWd9sSoYQP+4NZtnJk1sA4XixFajqSrBraasmwDQG104NfYfy3dDzh4dYmSbci0DoluAfnCY+Lxhi622QuOEt6w0vQwA8u7tun4sH4XqwQ4tG2HZHGeBo9Ez3BWg1\/hmJQUJ4AYltj9++\/V8g1buxPKap\/gqQNFiGySFdJtyAICBs\/Q8f4HYAgDEF0vEFgDgJXRiwtzx9HmoiQ2ILQCUwLFDhLrQ84KA2AJAKdHtvoXg1vL7kNN1X1EMAFCQ4O5pbvwb89upuysV2W82yWxCbAEAnhddEdJ56vsyjAAAgNgCACC2AACA2AIAILYAAIgtAAAgtgAAiC0AAPwWJjVkju4IKnsnVc3xsXl5HyWZjviT\/l2wA7CTzSu1s9j+C\/P8eqZi3+\/1r9h7MZD338TfFvruixhbfyO2aQq7dfTdNUevSylQff+36vC2m9RVj64lIiB2kymIN7j8k\/Yem4epm2+M52ahzbV+mfLZHDch59Zn+P7V2jXkz42xnOqacrv75l63lu93FnLzgFcZiYsU9usXjFEPuMJLo3KkIjsOeGm51tQ87AbcLjV3ScT7webTtUYtFCP1ZTmumnvcqL3rDN+\/0vefBrrkh\/durnsu79wcF31obAYf2aq4SCEfmrSbNOYqsocm0PYbLwiB3Ououe9cW+5lgTYXvztJ5HetANVq7zqD9x\/r+08j+plc\/7C514we1QPbXRR0c8h24\/9pjvPChVac\/V4dc5T49nLvO92RuBR77zbHnXnY7j61333oLjf3f6cNbFc2kMb2LqLQPhbdd12\/c3FiK8bWip2qoLOOZsUBtdJ36YQfIhARII12hmzz1vd2O34UiXTvm+eZdORz5x343EQbmt2S6\/12ooKu1NG7iOCyi67UFpOMHmtXo9zJAO3disxJRo\/VRnznqWxgHj5CTTr2saIFdztBQZ9qQRc7XPBIaHO1RSsA0wHZOweReY4jHVJLYYPdTHzsttQhhe2YhayOdGJgXWhzd7SrIQhuZiLzHNNYgpupDdpnQmwDF\/LUQJ+Edl1wq56bvQ9Cuy64MYYUrjK1wW6qIZScCJ761aOIImWEFeJDmMzWqZvjfXOsHqcQqTjKPdpcZV\/7y5DCXh9Tw7Qi+77\/cs3e8s+L9ZzRtYk3lXk5P3zTIYX3odKkNOsg5zF4ed9rxNazkiK0v+LE0x5zs0E+7Jr43mhlG+u9J45C3zYS+z0TWnnfI49LiB0vXxK9tWm59VqjKj05n7xx6VF4T7FeK\/tQtI2O\/F0+fr5HU8ptGh5pFM8QW7dCvjJhZ+P0PaqtPCq+VPZj14qn582aZzhTp3aJciqJkJprXfSsF+Haczh2nXSgUa\/Y6UI\/CruI3UjL6sDTFCHSu+R9ZBbYfIOGvp2ivN7wbDJRp1IRL4LtgI4+MWHHaBfqvGcaXc17aF\/Xii+zbg5CdOHlGnItuaZrZN6jr8euqYXiW\/uhZnfpfPo9HX6wZeIzXq7n+g4fSL3bkfdw8UERX7XBjl7rOQ6JbO27LSG+qC60Nb3p+5xqHTOz7U6utNIHXzlKFgfRxUJsy6mNUk4zt\/fYsRdxHCNylzKUMW\/j9v3ixLivA+IzfCD+dxCw0ZHrHTd2kEV53v1OQ1hMGlioyNa327JQkZEPMvOBLF7h0mLvx1yiT1djcolwD3sQ3bqIzFnMIRL145mKmA2VS3SrH+1co+JVyOj+kR1qjfQXpmC8xTZAt+VMRbYeilE1T9U2qj1OsRaqCq7tF++RyfjLtka1U8vT6pDL5z0X4bo2cInOidqjWrODDEfsOzQ8iO2jqNa1gPdSOHwPoto68Ucol2gr57G1qYPvzVI9nGY22AYTE4fehGuDOEvU0K9Mz7JbshHbtRXts2tJO46ybG2SNP1Fnf7S8rTdjBereWv5+y7W83Up44mF37mm+M1TLoGodb6YdK+Qka3LONlghdYxuuhqB4q5wzlVho2bNGy2jUDyVDYtY1uffxPpt+t18bgDW0hvdmkKY9vDyceOlW82YKF1cfpOZtFoZGcr8q8ztLetD3b5AfY64ru51MXLDm1RXHTrE9m6jA\/dFLBqu63Td2kP24TyHGcGvo78ziGxbdxGmwzd6G\/GDs8z78oQ+qG2qOjWR2xtx8mSfpToqEtrK7SLjtPcbCt\/jmLbm8bNsUc3DvSbp3yva7G7NAXhJLZrc6H70mVJha1N6o6fd+VQ9tkIrvqhzUehZQY+aCtwVaDfPOabDIqwqL3JXCNbl8KdF2BP26\/B33f5sI6RVk6TG2yFP4dua4xn+DhBryaG\/y1LGkrYTuTki0J2cbUdPyx6Rk0AxgXY++MI9dFkNImoLsVZXddG+MLy99fowtOVRNcrgDRiO8pgUXTbnkGMYZuchvO+L8VZXyVyGCK4pznHBEmZmmHuHtLn+liMNiQZRhjSugcdRCEAQ\/a7YtZKcBXbEf6NXSAJ7zFB2WJrwxIzAwBiS7QHNJ50syE6rxLco89iWzv8vrL4\/dz07Gtsz1P46h52yzdJ\/JcyGSNnwxTblY2IykyfHGaP5TT7Sbku6ONhDrwf6PrJtmKbkzBXpTif6zCCbbpGLiJHtkDZXeyPMVl2YltMmWwncvJcWq\/YK0S976ld+kpfG\/0Yka1tLy8X3yOyfYHvLH\/\/pqcFa+vERFp5i8x4oHZwGffvvOFxXNCqOLGtbQu26\/FS3TbEtrItIv+eYQ0PHD7WjXuwS3CKCN+llxeDSUn++srRyWuHOf2yYWCX69nabli4clgVy\/b3VVcfDx2jilWGu2zUxn5Hg06W9nPsum+y5rFLmUwy+HCd8yaieYito5NPm8K97KKyqpPbOrp1hRTHbe61sBSxrir\/1NivzSBlntvuqO8ty\/ZNF\/bW3RRuHXxqa5MIv7m+VYaQctQcpx02PEX17HwmNbgsPnzeQaGKA14ler9WkGx421HZu3Qjc8xRtRXOSUdDCS5d5kVEv\/sQWXY4rHJiCsNHbOcO50i3OXVLKgI\/duguu0Y\/1w6Vf5zSIHo\/l8pf5+bA2lOy6QqPTDdjhW8j29slOBhpdJs6AJqaAjNxtj2cfOUouCdq7FSF6nKvuWflX2beyrvYZJXxBIy5gw8mi+g8usw2DbdrcHCS8uO1NvRFLi3quzaC66LgV7EFV69\/5Xj6ZWK7TFPlPWrFchH3nPeLsrX3OHED5yIuS5vvGxr8uJbRbYrGR+\/xzhS6XoqX2Gqk4xrtRBNcHapwFdp5gPn\/F8Y+5\/Zd7OEEj\/HrEA1Q7KEEWz88StHDau5xlSCq9Q1+RrEFV699awpOdwyx6pdPOpcI7rtQhSxi1Ry3HlGLCORZgMq\/chCnkQruKENnrzNM+XrMmaP\/RRu\/9RjGWmmDbet3Etm6BgriF3cxhhT0mkULbRCx1SjwwuMS4uz3Eo26Co2cp9HsnfEbeL8MuKqVS3S7q7bYDezsvlHFWe6O7NHLkgbuKILAnPv0IjzyX33KaqwR7lFAOxwhtOEi27aAfURqpNGoCM3G0Yb8Trtp93q+T1S4CLkilFaWM0db3IXK2lBb3ns4+7xHK5O59rLOtYc1DhHFNYc0+q6C5RW8NGU1N377eo3UHvc+wyxyrlzDPIxXP1cv56WI7VaoC2k0dhf4+Wp1vvW5319o4VUB7yPCuB+jq6zDGpVHxRPBvrGNdLSivPW0k9xzxzXK0o9+t5ZiseVp71PjN4w0d+nhqP8fGv8NJQ880g6d7f6CTeR53mtAsvide47V115rb3W0oX\/PUvmIQ108CxmAbQUWlqlH16lLvB38GZuMtRHyHYv9xeHNw5fq5aNhgl09vrBw9qh26UJsAzRwv\/R0zEPuqjT4v5mmrO82WhOXcQB7XzT3OQ44jBEzh7bNb9718LUDvUYRYht0pwbpwjQv9Nr0a7vo41hCqzaRqZQHASKNiVlLxndYm8J6aCimXWI3ntrA+Qhg23idJLL3IpTQtuWnwhJrrNT3utJbu8loqcfoBN+DrDHgrEfjMDIeeRH7JjrmOeuRX8z7vKOBDnu0UVMfkChxvyAbrHpWH\/IU2x4J7oU+ZyoBmPfEweYp7RLR3q2A5S64H54zxupbOtSUmw1Wsd63SLFdE9xcU4ZmgbtstoKbq6NdDEFonxDcXHOEowltxo3OcQ9ytvsltlrQp5l1ZaSl31PR60oA5ur8y8yijYMuGqCEgpvb+LM0bHspIrxMGp02op2bQtlOUNDi5DsZOPtchXaRiQDsGb\/JIKGo1S43Q3VyEbTmkEb\/OIOGf6mic9yBz3XV6LQRfG0KZjuxsx90ENG1BT3LaZxIbXKsFaDusNLvB5w1l7voXmjD30V09WGSS\/MMO12JTkf18MJEymFHbF+IcsXZzMO4ZezClsKdaVetzlgAZN2B\/YRRR61DBjslRhoqOLM10Y3dAC81ot7JJcMjUT1se0zHJX4Me4pXHRW2OPlcc+xkllOoJPx2tst134Skndu\/trC32CVUjqQ0PLIi1E0pUewG9hY7zBp7H6u9ZbucKpAfLlVsrjNv6Nt62L6\/bz1s698lkexv2crlQbTAX6vAVBaFK4UqM6vqoUVqOjOsMv+fGbbJNOVa7fKd2qbuKrJw2VSy6zJcW+hb7D1eO55ryFo\/\/E7tveyxz1XqY5v4W+trbf1bON4v1Qwy29luy5BluZW50DxXURd0TwB6H1AkE9sihxE2NOjKZLjnFQCAC9uYAAA6pJgtchBbAOiSYhYVR2wBoEv+ZPn7GrEFALCnsvx9bz+Kv6KsAYbDp19+9V\/LUzqbRqs55WPL074jsgWAHLDNdX3b4bNOHc6p+1owiC3AsLAVo4nrrtYBcBH63s5MQ2wBhsV7y9+L0B6lfkjd4nxs25D0eSITYgswIHSpTFtBOtGprKmEVkTWZQfkb\/pcNogtwPBwWT3uKsVwgt7jnXGbzDBHbAEgJ1y2o5LI9jam4K4JrUsUPe\/7WiiILcDwhhKWxu2rfSu440hCKwvOVI6XuO57uSC2AMPEdeNOEdw7\/YAVSminzZ974z41dxDLp27hkwDDpBG5c+OXaSARsgxJ3Lh04VVk33pEsy07Q1j0HrEFGK7YStf9ztinWD0ZXRpdJLw5Vk8tFK5r08q9ZBOAULuvnOWynRBiCwDPCe6uCm4fkQ0C9oZSFozZAgwYjUBnPXx0GbY4GFJZfIQ7Agybn3\/41+KPn33+vXbt+yK0skDOvxFbAEBw4wrt4HbnRWwByhPcqjn+gNAitgAQV3D\/0fzjn5vjk4werW6Ovwwhxev3IBsBoFA+\/fKr0+bPoel200WJZiW962Lo9iayBSg3yq2bKPdvKrZdbLw4b46\/NkL79xLsTWQLAO2yh1PzMONrHDmSvdFodlmSjRFbAHgsvBLlStaCzASrAgqszEC76fvqXYgtAMQU312NeP+0QeQrEatkPUhWwaK0CBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILzPwEGAAFJ52mkKNVBAAAAAElFTkSuQmCC\" alt=\"Delegi\" class=\"brand__logo\" width=\"347\" height=\"159\" \/>\r\n    <\/a>\r\n\r\n    <nav class=\"nav\" id=\"siteNav\" aria-label=\"Menu principale\">\r\n      <ul class=\"nav__list\">\r\n        <li><a href=\"#servizi\" class=\"nav__link\">Servizi<\/a><\/li>\r\n        <li><a href=\"#testimonianze\" class=\"nav__link\">Testimonianze<\/a><\/li>\r\n        <li><a href=\"#form\" class=\"nav__link\">Contatti<\/a><\/li>\r\n      <\/ul>\r\n    <\/nav>\r\n\r\n    <div class=\"header__actions\">\r\n      <a href=\"#form\" class=\"btn btn--primary btn--sm\" data-magnetic>Inizia subito<\/a>\r\n      <button class=\"nav-toggle\" id=\"navToggle\" type=\"button\" aria-controls=\"siteNav\" aria-expanded=\"false\" aria-label=\"Apri il menu\">\r\n        <span class=\"nav-toggle__bar\" aria-hidden=\"true\"><\/span>\r\n        <span class=\"nav-toggle__bar\" aria-hidden=\"true\"><\/span>\r\n      <\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/header>\r\n\r\n<main id=\"main\" tabindex=\"-1\">\r\n\r\n  <!-- HERO -->\r\n  <section id=\"hero\" class=\"hero\">\r\n    <canvas id=\"heroCanvas\" class=\"hero__canvas\" aria-hidden=\"true\"><\/canvas>\r\n\r\n    <div class=\"container hero__inner\">\r\n      <p class=\"eyebrow\" data-animate style=\"--d:80ms\"><span class=\"eyebrow__dot\" aria-hidden=\"true\"><\/span>Agenzia di comunicazione<\/p>\r\n      <h1 class=\"hero__title\" data-split data-animate style=\"--d:180ms\">Vuoi essere <em class=\"hl\">primo<svg class=\"hl__line\" viewBox=\"0 0 220 24\" preserveAspectRatio=\"none\" aria-hidden=\"true\"><path d=\"M4 16C46 7 104 4 150 7C176 9 198 12 216 17\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" fill=\"none\"\/><\/svg><\/em> nella mente dei tuoi potenziali clienti?<\/h1>\r\n      <div class=\"hero__foot\">\r\n        <p class=\"hero__subtitle\" data-animate style=\"--d:620ms\">Rivoluzioniamo la tua immagine digitale.<\/p>\r\n        <div class=\"hero__cta\" data-animate style=\"--d:740ms\">\r\n          <a href=\"#form\" class=\"btn btn--primary btn--lg\" data-magnetic data-wave-ripple>\r\n            <span>Inizia subito<\/span>\r\n            <span class=\"btn__icon\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 12H19M19 12L13 6M19 12L13 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\r\n          <\/a>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <a class=\"scroll-cue\" href=\"#servizi\" aria-label=\"Scorri ai servizi\">\r\n      <span class=\"scroll-cue__track\" aria-hidden=\"true\"><span class=\"scroll-cue__dot\"><\/span><\/span>\r\n      <svg class=\"scroll-cue__arrow\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M12 5V19M12 19L6 13M12 19L18 13\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n    <\/a>\r\n  <\/section>\r\n\r\n  <!-- SERVIZI -->\r\n  <section class=\"section\" id=\"servizi\">\r\n    <div class=\"container\">\r\n      <div class=\"section-head section-head--split\">\r\n        <h2 data-split data-animate>Ti accompagniamo passo passo<\/h2>\r\n        <p data-animate style=\"--d:120ms\">I nostri servizi sono pensati per aiutare la tua azienda a emergere e posizionarsi nel mercato digitale<\/p>\r\n      <\/div>\r\n\r\n      <div class=\"services-grid\" data-stagger>\r\n        <article class=\"service-card\" data-tilt data-animate>\r\n          <div class=\"service-card__top\">\r\n            <span class=\"service-card__icon\">\r\n              <svg viewBox=\"0 0 40 40\" fill=\"none\" aria-hidden=\"true\"><rect x=\"4\" y=\"6\" width=\"32\" height=\"22\" rx=\"4\" stroke=\"currentColor\" stroke-width=\"2\"\/><path d=\"M4 13H36\" stroke=\"currentColor\" stroke-width=\"2\"\/><circle cx=\"10\" cy=\"9.5\" r=\"1.2\" fill=\"currentColor\"\/><circle cx=\"14\" cy=\"9.5\" r=\"1.2\" fill=\"currentColor\"\/><path d=\"M13 33H27M20 28V33\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>\r\n            <\/span>\r\n          <\/div>\r\n          <h3>Branding e immagine coordinata<\/h3>\r\n          <span class=\"service-card__num\" aria-hidden=\"true\">01<\/span>\r\n        <\/article>\r\n\r\n        <article class=\"service-card\" data-tilt data-animate>\r\n          <div class=\"service-card__top\">\r\n            <span class=\"service-card__icon\">\r\n              <svg viewBox=\"0 0 40 40\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"20\" cy=\"20\" r=\"15\" stroke=\"currentColor\" stroke-width=\"2\"\/><path d=\"M5 20H35M20 5C24 9.5 26 14.5 26 20C26 25.5 24 30.5 20 35C16 30.5 14 25.5 14 20C14 14.5 16 9.5 20 5Z\" stroke=\"currentColor\" stroke-width=\"2\"\/><\/svg>\r\n            <\/span>\r\n          <\/div>\r\n          <h3>Sito web e landing page<\/h3>\r\n          <span class=\"service-card__num\" aria-hidden=\"true\">02<\/span>\r\n        <\/article>\r\n\r\n        <article class=\"service-card\" data-tilt data-animate>\r\n          <div class=\"service-card__top\">\r\n            <span class=\"service-card__icon\">\r\n              <svg viewBox=\"0 0 40 40\" fill=\"none\" aria-hidden=\"true\"><rect x=\"5\" y=\"6\" width=\"30\" height=\"29\" rx=\"3\" stroke=\"currentColor\" stroke-width=\"2\"\/><path d=\"M5 15H35M12 3V9M28 3V9\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><rect x=\"10\" y=\"20\" width=\"5\" height=\"5\" rx=\"1\" fill=\"currentColor\"\/><rect x=\"17.5\" y=\"20\" width=\"5\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.4\"\/><rect x=\"25\" y=\"20\" width=\"5\" height=\"5\" rx=\"1\" fill=\"currentColor\" opacity=\"0.4\"\/><\/svg>\r\n            <\/span>\r\n          <\/div>\r\n          <h3>Gestione calendario editoriale social<\/h3>\r\n          <span class=\"service-card__num\" aria-hidden=\"true\">03<\/span>\r\n        <\/article>\r\n\r\n        <article class=\"service-card\" data-tilt data-animate>\r\n          <div class=\"service-card__top\">\r\n            <span class=\"service-card__icon\">\r\n              <svg viewBox=\"0 0 40 40\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 30L15 21L21 27L34 12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><path d=\"M25 12H34V21\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n            <\/span>\r\n          <\/div>\r\n          <h3>Meta Ads e Google Ads<\/h3>\r\n          <span class=\"service-card__num\" aria-hidden=\"true\">04<\/span>\r\n        <\/article>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- STORYTELLING -->\r\n  <section class=\"section section--story\" id=\"storia\">\r\n    <div class=\"container story\">\r\n      <div class=\"story__visual\" data-animate aria-hidden=\"true\">\r\n        <div class=\"story__float\" data-parallax=\"0.06\">\r\n          <div class=\"story-stack\">\r\n            <div class=\"story-stack__card story-stack__card--1\">\r\n              <svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M12 3L4 7V12C4 16.5 7.5 20.4 12 21C16.5 20.4 20 16.5 20 12V7L12 3Z\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><\/svg>\r\n              <span>Logo<\/span>\r\n            <\/div>\r\n            <div class=\"story-stack__card story-stack__card--2\">\r\n              <svg viewBox=\"0 0 24 24\" fill=\"none\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"17\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.6\"\/><path d=\"M3 9H21M8 2V6M16 2V6\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\/><\/svg>\r\n              <span>Calendario editoriale<\/span>\r\n            <\/div>\r\n            <div class=\"story-stack__card story-stack__card--3\">\r\n              <svg viewBox=\"0 0 24 24\" fill=\"none\"><circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.6\"\/><path d=\"M3 12H21M12 3C14.5 6 15.5 9 15.5 12C15.5 15 14.5 18 12 21C9.5 18 8.5 15 8.5 12C8.5 9 9.5 6 12 3Z\" stroke=\"currentColor\" stroke-width=\"1.6\"\/><\/svg>\r\n              <span>Sito web<\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"story__content\">\r\n        <h2 data-split data-animate>Il tuo abito su misura per il successo<\/h2>\r\n        <p class=\"story__lead\" data-animate style=\"--d:100ms\">La comunicazione non \u00e8 solo una parte della tua azienda; \u00e8 il vestito su misura che indossi per incontrare i tuoi futuri clienti.<\/p>\r\n        <p data-animate style=\"--d:180ms\">Immagina di presentarti a un appuntamento importante: vorresti apparire al meglio, vero? Allo stesso modo, ogni dettaglio della tua comunicazione, dal logo che cattura l&rsquo;attenzione, al calendario editoriale per attirare il pubblico sui social, fino al sito web progettato con maestria, lavora insieme per creare un&rsquo;immagine impeccabile della tua attivit\u00e0.<\/p>\r\n        <p data-animate style=\"--d:240ms\">Noi siamo qui per assicurarci che il tuo &ldquo;abito&rdquo; sia non solo elegante ma perfettamente su misura per il mercato che vuoi conquistare. Lascia che ti aiutiamo a vestire la tua azienda per il successo, trasformando ogni elemento di comunicazione in un&rsquo;opportunit\u00e0 per attirare e coinvolgere il tuo cliente ideale.<\/p>\r\n        <div data-animate style=\"--d:300ms\">\r\n          <a href=\"#form\" class=\"btn btn--primary\" data-magnetic>\r\n            <span>Inizia subito<\/span>\r\n            <span class=\"btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 12H19M19 12L13 6M19 12L13 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\r\n          <\/a>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- TESTIMONIANZE -->\r\n  <section class=\"section\" id=\"testimonianze\">\r\n    <div class=\"container\">\r\n      <div class=\"section-head\">\r\n        <h2 data-split data-animate>Cosa dicono i nostri clienti<\/h2>\r\n      <\/div>\r\n\r\n      <div class=\"testimonials-grid\" data-stagger>\r\n        <article class=\"testimonial-card\" data-animate>\r\n          <div class=\"testimonial-card__media has-thumb\" data-yt=\"uDyytY4Upps\" data-ratio=\"9\/16\" data-title=\"Testimonianza di Chiara Ripamonti\">\r\n            <img loading=\"lazy\" class=\"testimonial-card__thumb\" src=\"https:\/\/i.ytimg.com\/vi\/uDyytY4Upps\/oar2.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"266\" height=\"480\" \/>\r\n            <span class=\"testimonial-card__index\" aria-hidden=\"true\">01<\/span>\r\n            <button class=\"testimonial-card__player\" aria-label=\"Riproduci testimonianza di Chiara Ripamonti\" type=\"button\">\r\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M8 5V19L19 12L8 5Z\" fill=\"currentColor\"\/><\/svg>\r\n            <\/button>\r\n          <\/div>\r\n          <div class=\"testimonial-card__meta\">\r\n            <p class=\"testimonial-card__name\">Chiara Ripamonti<\/p>\r\n            <p class=\"testimonial-card__role\">Testimonianza cliente<\/p>\r\n          <\/div>\r\n        <\/article>\r\n\r\n        <article class=\"testimonial-card\" data-animate>\r\n          <div class=\"testimonial-card__media has-thumb\" data-yt=\"IfI086gUHp4\" data-ratio=\"16\/9\" style=\"--thumb-scale:1.36\" data-title=\"Testimonianza di CompriamoAuto24\">\r\n            <img loading=\"lazy\" class=\"testimonial-card__thumb\" src=\"https:\/\/i.ytimg.com\/vi\/IfI086gUHp4\/sddefault.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" \/>\r\n            <span class=\"testimonial-card__index\" aria-hidden=\"true\">02<\/span>\r\n            <button class=\"testimonial-card__player\" aria-label=\"Riproduci testimonianza di CompriamoAuto24\" type=\"button\">\r\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M8 5V19L19 12L8 5Z\" fill=\"currentColor\"\/><\/svg>\r\n            <\/button>\r\n          <\/div>\r\n          <div class=\"testimonial-card__meta\">\r\n            <p class=\"testimonial-card__name\">CompriamoAuto24<\/p>\r\n            <p class=\"testimonial-card__role\">Testimonianza cliente<\/p>\r\n          <\/div>\r\n        <\/article>\r\n\r\n        <article class=\"testimonial-card\" data-animate>\r\n          <div class=\"testimonial-card__media has-thumb\" data-yt=\"JfVIfoSJq9Y\" data-ratio=\"4\/5\" data-title=\"Testimonianza di Antonella Salvia\">\r\n            <img loading=\"lazy\" class=\"testimonial-card__thumb\" src=\"https:\/\/i.ytimg.com\/vi\/JfVIfoSJq9Y\/oar2.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"378\" height=\"480\" \/>\r\n            <span class=\"testimonial-card__index\" aria-hidden=\"true\">03<\/span>\r\n            <button class=\"testimonial-card__player\" aria-label=\"Riproduci testimonianza di Antonella Salvia\" type=\"button\">\r\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M8 5V19L19 12L8 5Z\" fill=\"currentColor\"\/><\/svg>\r\n            <\/button>\r\n          <\/div>\r\n          <div class=\"testimonial-card__meta\">\r\n            <p class=\"testimonial-card__name\">Antonella Salvia<\/p>\r\n            <p class=\"testimonial-card__role\">Dicono di noi<\/p>\r\n          <\/div>\r\n        <\/article>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- FORM -->\r\n  <section class=\"section section--form\" id=\"form\">\r\n    <div class=\"container\">\r\n      <div class=\"form-panel\" data-animate>\r\n        <div class=\"form-panel__copy\">\r\n          <h2 data-split data-animate>\u00c8 arrivato il momento di rivoluzionare la tua immagine online <span class=\"emoji\" aria-hidden=\"true\">\ud83d\ude80<\/span><\/h2>\r\n          <p data-animate style=\"--d:120ms\">Inserisci i dati nel form qui sotto, ti contatteremo per un&rsquo;analisi gratuita<\/p>\r\n          <ul class=\"form-panel__points\" data-stagger>\r\n            <li data-animate><span class=\"check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 13L9 17L19 7\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>Analisi gratuita della tua immagine digitale<\/li>\r\n            <li data-animate><span class=\"check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 13L9 17L19 7\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>Nessun impegno<\/li>\r\n            <li data-animate><span class=\"check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 13L9 17L19 7\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>Risposta rapida del team Delegi<\/li>\r\n          <\/ul>\r\n        <\/div>\r\n\r\n        <form class=\"form-card\" id=\"leadForm\" data-animate style=\"--d:160ms\" novalidate>\r\n          <div class=\"form-field\">\r\n            <label for=\"f-name\">Nome e cognome<\/label>\r\n            <input id=\"f-name\" name=\"name\" type=\"text\" placeholder=\"Nome e cognome\" autocomplete=\"name\" required \/>\r\n          <\/div>\r\n          <div class=\"form-field\">\r\n            <label for=\"f-phone\">Telefono<\/label>\r\n            <input id=\"f-phone\" name=\"phone\" type=\"tel\" placeholder=\"Telefono\" autocomplete=\"tel\" inputmode=\"tel\" required \/>\r\n          <\/div>\r\n          <div class=\"form-field\">\r\n            <label for=\"f-email\">Email<\/label>\r\n            <input id=\"f-email\" name=\"email\" type=\"email\" placeholder=\"La tua migliore email\" autocomplete=\"email\" required \/>\r\n          <\/div>\r\n          <div class=\"hp-field\" aria-hidden=\"true\">\r\n            <label for=\"f-company\">Lascia vuoto<\/label>\r\n            <input id=\"f-company\" name=\"_honey\" type=\"text\" tabindex=\"-1\" autocomplete=\"off\" \/>\r\n          <\/div>\r\n          <label class=\"form-check\">\r\n            <input type=\"checkbox\" name=\"privacy\" required \/>\r\n            <span class=\"form-check__box\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 13L9 17L19 7\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\r\n            <span>Accetto la <a href=\"#privacy-policy\" class=\"form-check__link\">privacy policy<\/a> di Delegi Srl<\/span>\r\n          <\/label>\r\n          <button type=\"submit\" class=\"btn btn--accent btn--block\">Invia<\/button>\r\n          <p class=\"form-card__note\" id=\"formNote\" role=\"status\" aria-live=\"polite\"><\/p>\r\n        <\/form>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n<\/main>\r\n\r\n<!-- FOOTER -->\r\n<footer class=\"footer\">\r\n  <div class=\"container\">\r\n    <div class=\"footer__top\">\r\n      <div class=\"footer__brand\">\r\n        <img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVsAAACfCAYAAABXwXr7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAEiBJREFUeNrsnb1SLMcVxxt0AycubShVqcrLC0gQyY7u8AR3CV0K7u4TAE8APAHwBCyBAkcXZXbE3MyKWJUTZ6wClUKvqpTbcy5n5BVCsP05PdO\/X9UU+tj5On3636d7TncbAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJALn3751UgOLAEAsdjGBB84b44jzAAAsdgiqv1qt\/lzp\/+68+O3Xy9xCwAgso0T1T71zwAAiG2gqHbS\/KnW\/tOk+W8VbgEAiG28qJboFgCi8VHBUe2pRLJP\/K9P\/vjZ5z\/9\/MO\/\/ol7AEAoivxA1gjt2Dx8FPu9dK+VefhYtsJFACAEpQ4jnDwjtEb\/3wnuAQBEtu5RbdX8ud3w56SCAQCRrUdUuylXuAgAILb2Ue3U\/DrV6yUqUsEAALG1E1rXcViiWwBAbC2QtQ\/GDueNNU0MAMCZIj6QaarXvcclSAVzt\/vU5pzGxjRsMEheFfKevrPCRnqNGS5j1ysw9kM3iC0MksEPI+gHrkmAS011hTAAAMQ2QlQb61oAgNgOJqqdNn9CRqOVrhQGAIDYqtCOIkWi52yhAwC2DPkD2UvrH7gyNg9pZKe4D0AvA7Gq+XNoHiY4rWuEZBvdNMf1j99+XYe+79ZAjSmCeB\/xFlIoe6ybsJFT39qc09h0C8tBxN6uTFLaZChQRHcWMt1zqMMIsWd9sSoYQP+4NZtnJk1sA4XixFajqSrBraasmwDQG104NfYfy3dDzh4dYmSbci0DoluAfnCY+Lxhi622QuOEt6w0vQwA8u7tun4sH4XqwQ4tG2HZHGeBo9Ez3BWg1\/hmJQUJ4AYltj9++\/V8g1buxPKap\/gqQNFiGySFdJtyAICBs\/Q8f4HYAgDEF0vEFgDgJXRiwtzx9HmoiQ2ILQCUwLFDhLrQ84KA2AJAKdHtvoXg1vL7kNN1X1EMAFCQ4O5pbvwb89upuysV2W82yWxCbAEAnhddEdJ56vsyjAAAgNgCACC2AACA2AIAILYAAIgtAAAgtgAAiC0AAPwWJjVkju4IKnsnVc3xsXl5HyWZjviT\/l2wA7CTzSu1s9j+C\/P8eqZi3+\/1r9h7MZD338TfFvruixhbfyO2aQq7dfTdNUevSylQff+36vC2m9RVj64lIiB2kymIN7j8k\/Yem4epm2+M52ahzbV+mfLZHDch59Zn+P7V2jXkz42xnOqacrv75l63lu93FnLzgFcZiYsU9usXjFEPuMJLo3KkIjsOeGm51tQ87AbcLjV3ScT7webTtUYtFCP1ZTmumnvcqL3rDN+\/0vefBrrkh\/durnsu79wcF31obAYf2aq4SCEfmrSbNOYqsocm0PYbLwiB3Ououe9cW+5lgTYXvztJ5HetANVq7zqD9x\/r+08j+plc\/7C514we1QPbXRR0c8h24\/9pjvPChVac\/V4dc5T49nLvO92RuBR77zbHnXnY7j61333oLjf3f6cNbFc2kMb2LqLQPhbdd12\/c3FiK8bWip2qoLOOZsUBtdJ36YQfIhARII12hmzz1vd2O34UiXTvm+eZdORz5x343EQbmt2S6\/12ooKu1NG7iOCyi67UFpOMHmtXo9zJAO3disxJRo\/VRnznqWxgHj5CTTr2saIFdztBQZ9qQRc7XPBIaHO1RSsA0wHZOweReY4jHVJLYYPdTHzsttQhhe2YhayOdGJgXWhzd7SrIQhuZiLzHNNYgpupDdpnQmwDF\/LUQJ+Edl1wq56bvQ9Cuy64MYYUrjK1wW6qIZScCJ761aOIImWEFeJDmMzWqZvjfXOsHqcQqTjKPdpcZV\/7y5DCXh9Tw7Qi+77\/cs3e8s+L9ZzRtYk3lXk5P3zTIYX3odKkNOsg5zF4ed9rxNazkiK0v+LE0x5zs0E+7Jr43mhlG+u9J45C3zYS+z0TWnnfI49LiB0vXxK9tWm59VqjKj05n7xx6VF4T7FeK\/tQtI2O\/F0+fr5HU8ptGh5pFM8QW7dCvjJhZ+P0PaqtPCq+VPZj14qn582aZzhTp3aJciqJkJprXfSsF+Haczh2nXSgUa\/Y6UI\/CruI3UjL6sDTFCHSu+R9ZBbYfIOGvp2ivN7wbDJRp1IRL4LtgI4+MWHHaBfqvGcaXc17aF\/Xii+zbg5CdOHlGnItuaZrZN6jr8euqYXiW\/uhZnfpfPo9HX6wZeIzXq7n+g4fSL3bkfdw8UERX7XBjl7rOQ6JbO27LSG+qC60Nb3p+5xqHTOz7U6utNIHXzlKFgfRxUJsy6mNUk4zt\/fYsRdxHCNylzKUMW\/j9v3ixLivA+IzfCD+dxCw0ZHrHTd2kEV53v1OQ1hMGlioyNa327JQkZEPMvOBLF7h0mLvx1yiT1djcolwD3sQ3bqIzFnMIRL145mKmA2VS3SrH+1co+JVyOj+kR1qjfQXpmC8xTZAt+VMRbYeilE1T9U2qj1OsRaqCq7tF++RyfjLtka1U8vT6pDL5z0X4bo2cInOidqjWrODDEfsOzQ8iO2jqNa1gPdSOHwPoto68Ucol2gr57G1qYPvzVI9nGY22AYTE4fehGuDOEvU0K9Mz7JbshHbtRXts2tJO46ybG2SNP1Fnf7S8rTdjBereWv5+y7W83Up44mF37mm+M1TLoGodb6YdK+Qka3LONlghdYxuuhqB4q5wzlVho2bNGy2jUDyVDYtY1uffxPpt+t18bgDW0hvdmkKY9vDyceOlW82YKF1cfpOZtFoZGcr8q8ztLetD3b5AfY64ru51MXLDm1RXHTrE9m6jA\/dFLBqu63Td2kP24TyHGcGvo78ziGxbdxGmwzd6G\/GDs8z78oQ+qG2qOjWR2xtx8mSfpToqEtrK7SLjtPcbCt\/jmLbm8bNsUc3DvSbp3yva7G7NAXhJLZrc6H70mVJha1N6o6fd+VQ9tkIrvqhzUehZQY+aCtwVaDfPOabDIqwqL3JXCNbl8KdF2BP26\/B33f5sI6RVk6TG2yFP4dua4xn+DhBryaG\/y1LGkrYTuTki0J2cbUdPyx6Rk0AxgXY++MI9dFkNImoLsVZXddG+MLy99fowtOVRNcrgDRiO8pgUXTbnkGMYZuchvO+L8VZXyVyGCK4pznHBEmZmmHuHtLn+liMNiQZRhjSugcdRCEAQ\/a7YtZKcBXbEf6NXSAJ7zFB2WJrwxIzAwBiS7QHNJ50syE6rxLco89iWzv8vrL4\/dz07Gtsz1P46h52yzdJ\/JcyGSNnwxTblY2IykyfHGaP5TT7Sbku6ONhDrwf6PrJtmKbkzBXpTif6zCCbbpGLiJHtkDZXeyPMVl2YltMmWwncvJcWq\/YK0S976ld+kpfG\/0Yka1tLy8X3yOyfYHvLH\/\/pqcFa+vERFp5i8x4oHZwGffvvOFxXNCqOLGtbQu26\/FS3TbEtrItIv+eYQ0PHD7WjXuwS3CKCN+llxeDSUn++srRyWuHOf2yYWCX69nabli4clgVy\/b3VVcfDx2jilWGu2zUxn5Hg06W9nPsum+y5rFLmUwy+HCd8yaieYito5NPm8K97KKyqpPbOrp1hRTHbe61sBSxrir\/1NivzSBlntvuqO8ty\/ZNF\/bW3RRuHXxqa5MIv7m+VYaQctQcpx02PEX17HwmNbgsPnzeQaGKA14ler9WkGx421HZu3Qjc8xRtRXOSUdDCS5d5kVEv\/sQWXY4rHJiCsNHbOcO50i3OXVLKgI\/duguu0Y\/1w6Vf5zSIHo\/l8pf5+bA2lOy6QqPTDdjhW8j29slOBhpdJs6AJqaAjNxtj2cfOUouCdq7FSF6nKvuWflX2beyrvYZJXxBIy5gw8mi+g8usw2DbdrcHCS8uO1NvRFLi3quzaC66LgV7EFV69\/5Xj6ZWK7TFPlPWrFchH3nPeLsrX3OHED5yIuS5vvGxr8uJbRbYrGR+\/xzhS6XoqX2Gqk4xrtRBNcHapwFdp5gPn\/F8Y+5\/Zd7OEEj\/HrEA1Q7KEEWz88StHDau5xlSCq9Q1+RrEFV699awpOdwyx6pdPOpcI7rtQhSxi1Ry3HlGLCORZgMq\/chCnkQruKENnrzNM+XrMmaP\/RRu\/9RjGWmmDbet3Etm6BgriF3cxhhT0mkULbRCx1SjwwuMS4uz3Eo26Co2cp9HsnfEbeL8MuKqVS3S7q7bYDezsvlHFWe6O7NHLkgbuKILAnPv0IjzyX33KaqwR7lFAOxwhtOEi27aAfURqpNGoCM3G0Yb8Trtp93q+T1S4CLkilFaWM0db3IXK2lBb3ns4+7xHK5O59rLOtYc1DhHFNYc0+q6C5RW8NGU1N377eo3UHvc+wyxyrlzDPIxXP1cv56WI7VaoC2k0dhf4+Wp1vvW5319o4VUB7yPCuB+jq6zDGpVHxRPBvrGNdLSivPW0k9xzxzXK0o9+t5ZiseVp71PjN4w0d+nhqP8fGv8NJQ880g6d7f6CTeR53mtAsvide47V115rb3W0oX\/PUvmIQ108CxmAbQUWlqlH16lLvB38GZuMtRHyHYv9xeHNw5fq5aNhgl09vrBw9qh26UJsAzRwv\/R0zEPuqjT4v5mmrO82WhOXcQB7XzT3OQ44jBEzh7bNb9718LUDvUYRYht0pwbpwjQv9Nr0a7vo41hCqzaRqZQHASKNiVlLxndYm8J6aCimXWI3ntrA+Qhg23idJLL3IpTQtuWnwhJrrNT3utJbu8loqcfoBN+DrDHgrEfjMDIeeRH7JjrmOeuRX8z7vKOBDnu0UVMfkChxvyAbrHpWH\/IU2x4J7oU+ZyoBmPfEweYp7RLR3q2A5S64H54zxupbOtSUmw1Wsd63SLFdE9xcU4ZmgbtstoKbq6NdDEFonxDcXHOEowltxo3OcQ9ytvsltlrQp5l1ZaSl31PR60oA5ur8y8yijYMuGqCEgpvb+LM0bHspIrxMGp02op2bQtlOUNDi5DsZOPtchXaRiQDsGb\/JIKGo1S43Q3VyEbTmkEb\/OIOGf6mic9yBz3XV6LQRfG0KZjuxsx90ENG1BT3LaZxIbXKsFaDusNLvB5w1l7voXmjD30V09WGSS\/MMO12JTkf18MJEymFHbF+IcsXZzMO4ZezClsKdaVetzlgAZN2B\/YRRR61DBjslRhoqOLM10Y3dAC81ot7JJcMjUT1se0zHJX4Me4pXHRW2OPlcc+xkllOoJPx2tst134Skndu\/trC32CVUjqQ0PLIi1E0pUewG9hY7zBp7H6u9ZbucKpAfLlVsrjNv6Nt62L6\/bz1s698lkexv2crlQbTAX6vAVBaFK4UqM6vqoUVqOjOsMv+fGbbJNOVa7fKd2qbuKrJw2VSy6zJcW+hb7D1eO55ryFo\/\/E7tveyxz1XqY5v4W+trbf1bON4v1Qwy29luy5BluZW50DxXURd0TwB6H1AkE9sihxE2NOjKZLjnFQCAC9uYAAA6pJgtchBbAOiSYhYVR2wBoEv+ZPn7GrEFALCnsvx9bz+Kv6KsAYbDp19+9V\/LUzqbRqs55WPL074jsgWAHLDNdX3b4bNOHc6p+1owiC3AsLAVo4nrrtYBcBH63s5MQ2wBhsV7y9+L0B6lfkjd4nxs25D0eSITYgswIHSpTFtBOtGprKmEVkTWZQfkb\/pcNogtwPBwWT3uKsVwgt7jnXGbzDBHbAEgJ1y2o5LI9jam4K4JrUsUPe\/7WiiILcDwhhKWxu2rfSu440hCKwvOVI6XuO57uSC2AMPEdeNOEdw7\/YAVSminzZ974z41dxDLp27hkwDDpBG5c+OXaSARsgxJ3Lh04VVk33pEsy07Q1j0HrEFGK7YStf9ztinWD0ZXRpdJLw5Vk8tFK5r08q9ZBOAULuvnOWynRBiCwDPCe6uCm4fkQ0C9oZSFozZAgwYjUBnPXx0GbY4GFJZfIQ7Agybn3\/41+KPn33+vXbt+yK0skDOvxFbAEBw4wrt4HbnRWwByhPcqjn+gNAitgAQV3D\/0fzjn5vjk4werW6Ovwwhxev3IBsBoFA+\/fKr0+bPoel200WJZiW962Lo9iayBSg3yq2bKPdvKrZdbLw4b46\/NkL79xLsTWQLAO2yh1PzMONrHDmSvdFodlmSjRFbAHgsvBLlStaCzASrAgqszEC76fvqXYgtAMQU312NeP+0QeQrEatkPUhWwaK0CBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILzPwEGAAFJ52mkKNVBAAAAAElFTkSuQmCC\" alt=\"Delegi\" class=\"footer__logo\" width=\"347\" height=\"159\" \/>\r\n        <a href=\"#form\" class=\"btn btn--primary btn--sm footer__cta\">\r\n          <span>Inizia subito<\/span>\r\n          <span class=\"btn__icon\" aria-hidden=\"true\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M5 12H19M19 12L13 6M19 12L13 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\r\n        <\/a>\r\n      <\/div>\r\n\r\n      <nav class=\"footer__col\" aria-label=\"Sezioni\">\r\n        <p class=\"footer__label\">Esplora<\/p>\r\n        <ul class=\"footer__list\">\r\n          <li><a href=\"#servizi\">Servizi<\/a><\/li>\r\n          <li><a href=\"#testimonianze\">Testimonianze<\/a><\/li>\r\n          <li><a href=\"#form\">Contatti<\/a><\/li>\r\n        <\/ul>\r\n      <\/nav>\r\n\r\n      <div class=\"footer__col\">\r\n        <p class=\"footer__label\">Sede<\/p>\r\n        <address class=\"footer__list\">\r\n          <span class=\"footer__strong\">Delegi Srl<\/span>\r\n          <span>Via Visconti 3<\/span>\r\n          <span>21047 Saronno (Va)<\/span>\r\n        <\/address>\r\n      <\/div>\r\n\r\n      <div class=\"footer__col\">\r\n        <p class=\"footer__label\">Contatti<\/p>\r\n        <ul class=\"footer__list\">\r\n          <li><a href=\"mailto:info@delegi.it\">info@delegi.it<\/a><\/li>\r\n          <li><a href=\"tel:+393338031394\">+39 333 803 1394<\/a><\/li>\r\n          <li><a href=\"tel:+393275770899\">+39 327 577 0899<\/a><\/li>\r\n        <\/ul>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"footer__bottom\">\r\n      <p class=\"footer__legal\">&copy; <span id=\"year\">2026<\/span> Delegi S.r.l. &middot; P.IVA e C.F. 03933300125 &middot; REA 389788<\/p>\r\n      <ul class=\"footer__policies\">\r\n        <li><a href=\"#privacy-policy\">Privacy policy<\/a><\/li>\r\n        <li><a href=\"#cookie-policy\">Cookie policy<\/a><\/li>\r\n      <\/ul>\r\n      <a href=\"#hero\" class=\"footer__top-link\">\r\n        Torna su\r\n        <span class=\"footer__top-icon\" aria-hidden=\"true\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M12 19V5M12 5L6 11M12 5L18 11\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\r\n      <\/a>\r\n    <\/div>\r\n  <\/div>\r\n<\/footer>\r\n\r\n<!-- LEGAL: privacy & cookie policy -->\r\n<dialog class=\"legal-modal\" id=\"privacy-policy\" aria-labelledby=\"privacy-title\">\r\n  <div class=\"legal-modal__head\">\r\n    <h2 class=\"legal-modal__title\" id=\"privacy-title\">Privacy policy<\/h2>\r\n    <button class=\"legal-modal__close\" type=\"button\" data-legal-close aria-label=\"Chiudi\">\r\n      <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"\/><\/svg>\r\n    <\/button>\r\n  <\/div>\r\n  <div class=\"legal-modal__body\" data-lenis-prevent>\r\n    <p class=\"legal-modal__meta\">Informativa sul trattamento dei dati personali ai sensi degli artt. 13 e 14 del Regolamento (UE) 2016\/679 (&ldquo;GDPR&rdquo;). Ultimo aggiornamento: 18 settembre 2026.<\/p>\r\n\r\n    <h3>1. Titolare del trattamento<\/h3>\r\n    <p>Delegi S.r.l., Via Visconti 3, 21047 Saronno (VA) &ndash; P.IVA e C.F. 03933300125 &ndash; VAT IT03933300125 &ndash; REA 389788.<br \/>\r\n    Email: <a href=\"mailto:info@delegi.it\">info@delegi.it<\/a> &ndash; PEC: <a href=\"mailto:delegi@legalmail.it\">delegi@legalmail.it<\/a> &ndash; Tel. <a href=\"tel:+393338031394\">+39 333 803 1394<\/a>.<\/p>\r\n\r\n    <h3>2. Quali dati trattiamo<\/h3>\r\n    <ul>\r\n      <li><strong>Dati che ci fornisci tramite il modulo di contatto:<\/strong> nome e cognome, numero di telefono, indirizzo email.<\/li>\r\n      <li><strong>Dati che ci fornisci scrivendoci o chiamandoci:<\/strong> i dati di contatto e le informazioni contenute nella comunicazione.<\/li>\r\n      <li><strong>Dati di navigazione:<\/strong> i sistemi che erogano il sito acquisiscono, nel normale funzionamento, alcuni dati tecnici (ad es. indirizzo IP, tipo di browser, data e ora della richiesta), utilizzati per far funzionare il sito e garantirne la sicurezza.<\/li>\r\n    <\/ul>\r\n\r\n    <h3>3. Finalit\u00e0 e basi giuridiche<\/h3>\r\n    <ul>\r\n      <li><strong>Rispondere alla tua richiesta<\/strong> e ricontattarti per l&rsquo;analisi gratuita o per darti informazioni sui nostri servizi: esecuzione di misure precontrattuali adottate su tua richiesta (art. 6, par. 1, lett. b GDPR).<\/li>\r\n      <li><strong>Adempiere obblighi di legge<\/strong> (contabili, fiscali, richieste delle autorit\u00e0): art. 6, par. 1, lett. c GDPR.<\/li>\r\n      <li><strong>Garantire la sicurezza del sito<\/strong> e prevenire abusi e spam: legittimo interesse del Titolare (art. 6, par. 1, lett. f GDPR).<\/li>\r\n    <\/ul>\r\n    <p>Non utilizziamo i tuoi dati per inviarti newsletter o comunicazioni promozionali senza un tuo specifico consenso.<\/p>\r\n\r\n    <h3>4. Conferimento dei dati<\/h3>\r\n    <p>Il conferimento dei dati richiesti nel modulo \u00e8 facoltativo, ma \u00e8 necessario per ricontattarti: senza di essi non possiamo dare seguito alla tua richiesta.<\/p>\r\n\r\n    <h3>5. Modalit\u00e0 e tempi di conservazione<\/h3>\r\n    <p>I dati sono trattati con strumenti informatici e con misure di sicurezza adeguate a prevenirne la perdita e l&rsquo;accesso non autorizzato. Conserviamo i dati della tua richiesta per il tempo necessario a gestirla e, se non nasce un rapporto contrattuale, al massimo per 24 mesi dall&rsquo;ultimo contatto. Se diventi nostro cliente, li conserviamo per la durata del rapporto e, successivamente, per i tempi previsti dalla legge (ad es. 10 anni per la documentazione contabile e fiscale). I dati di navigazione sono conservati dai fornitori tecnici per il tempo strettamente necessario.<\/p>\r\n\r\n    <h3>6. Destinatari dei dati<\/h3>\r\n    <p>I dati sono trattati dal personale autorizzato di Delegi S.r.l. e possono essere comunicati a:<\/p>\r\n    <ul>\r\n      <li>fornitori che ci supportano nell&rsquo;erogazione del sito e nella gestione delle richieste, tra cui il servizio di inoltro dei moduli via email (FormSubmit), il fornitore di posta elettronica e il fornitore di hosting;<\/li>\r\n      <li>fornitori di servizi tecnici utilizzati dal sito che, per il loro funzionamento, ricevono l&rsquo;indirizzo IP del visitatore: Google (Google Fonts per i caratteri tipografici e, solo se avvii un video, YouTube), Cloudflare (cdnjs) e jsDelivr per la distribuzione di librerie software;<\/li>\r\n      <li>consulenti e professionisti (ad es. commercialista, legali), ove necessario;<\/li>\r\n      <li>autorit\u00e0 pubbliche, nei casi previsti dalla legge.<\/li>\r\n    <\/ul>\r\n    <p>I dati non sono diffusi.<\/p>\r\n\r\n    <h3>7. Trasferimento dei dati fuori dall&rsquo;UE<\/h3>\r\n    <p>Alcuni fornitori possono trattare dati in Paesi extra UE, in particolare negli Stati Uniti. In questi casi il trasferimento avviene sulla base delle garanzie previste dagli artt. 45 e 46 GDPR: decisioni di adeguatezza della Commissione europea (incluso l&rsquo;EU-U.S. Data Privacy Framework per i fornitori certificati) o clausole contrattuali standard.<\/p>\r\n\r\n    <h3>8. I tuoi diritti<\/h3>\r\n    <p>Puoi esercitare in qualsiasi momento i diritti di accesso, rettifica, cancellazione, limitazione del trattamento, portabilit\u00e0 e opposizione (artt. 15&ndash;22 GDPR), scrivendo a <a href=\"mailto:info@delegi.it\">info@delegi.it<\/a> o alla PEC <a href=\"mailto:delegi@legalmail.it\">delegi@legalmail.it<\/a>. Hai inoltre il diritto di proporre reclamo al Garante per la protezione dei dati personali (<a href=\"https:\/\/www.garanteprivacy.it\" target=\"_blank\" rel=\"noopener\">www.garanteprivacy.it<\/a>).<\/p>\r\n\r\n    <h3>9. Processi decisionali automatizzati<\/h3>\r\n    <p>I tuoi dati non sono sottoposti a processi decisionali automatizzati, compresa la profilazione.<\/p>\r\n\r\n    <h3>10. Modifiche<\/h3>\r\n    <p>Possiamo aggiornare questa informativa: la versione in vigore \u00e8 sempre quella pubblicata su questa pagina, con la data dell&rsquo;ultimo aggiornamento.<\/p>\r\n  <\/div>\r\n<\/dialog>\r\n\r\n<dialog class=\"legal-modal\" id=\"cookie-policy\" aria-labelledby=\"cookie-title\">\r\n  <div class=\"legal-modal__head\">\r\n    <h2 class=\"legal-modal__title\" id=\"cookie-title\">Cookie policy<\/h2>\r\n    <button class=\"legal-modal__close\" type=\"button\" data-legal-close aria-label=\"Chiudi\">\r\n      <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"\/><\/svg>\r\n    <\/button>\r\n  <\/div>\r\n  <div class=\"legal-modal__body\" data-lenis-prevent>\r\n    <p class=\"legal-modal__meta\">Titolare: Delegi S.r.l., Via Visconti 3, 21047 Saronno (VA) &ndash; P.IVA 03933300125. Ultimo aggiornamento: 18 settembre 2026.<\/p>\r\n\r\n    <h3>Cosa sono i cookie<\/h3>\r\n    <p>I cookie sono piccoli file di testo che i siti visitati salvano sul tuo dispositivo, per poi rileggerli alle visite successive. Tecnologie simili (come il local storage del browser) funzionano in modo analogo.<\/p>\r\n\r\n    <h3>Cookie utilizzati da questo sito<\/h3>\r\n    <p>Questo sito <strong>non installa cookie propri<\/strong> e non utilizza cookie di profilazione n\u00e9 strumenti di statistica. Per questo motivo, all&rsquo;apertura del sito non ti viene chiesto alcun consenso.<\/p>\r\n\r\n    <h3>Contenuti di terze parti<\/h3>\r\n    <ul>\r\n      <li><strong>Video YouTube.<\/strong> Le video testimonianze sono incorporate in modalit\u00e0 &ldquo;privacy avanzata&rdquo; (youtube-nocookie.com) e vengono caricate <strong>solo quando premi il pulsante play<\/strong>. Da quel momento YouTube (Google Ireland Ltd \/ Google LLC) pu\u00f2 installare cookie o tecnologie simili sul tuo dispositivo, secondo la propria informativa: <a href=\"https:\/\/policies.google.com\/privacy\" target=\"_blank\" rel=\"noopener\">policies.google.com\/privacy<\/a>. Se non avvii i video, nessun contenuto di YouTube viene caricato.<\/li>\r\n      <li><strong>Google Fonts.<\/strong> I caratteri tipografici del sito sono forniti da Google: non installano cookie, ma comportano la trasmissione del tuo indirizzo IP ai server di Google.<\/li>\r\n      <li><strong>Librerie software (cdnjs, jsDelivr).<\/strong> Alcune librerie grafiche sono distribuite da reti di fornitori esterni: non installano cookie, ma ricevono l&rsquo;indirizzo IP necessario a consegnare i file.<\/li>\r\n    <\/ul>\r\n\r\n    <h3>Come gestire i cookie<\/h3>\r\n    <p>Puoi visualizzare, bloccare o cancellare i cookie in qualsiasi momento dalle impostazioni del tuo browser (ad es. Chrome, Firefox, Safari, Edge), consultando la relativa guida. Il blocco dei cookie di terze parti pu\u00f2 impedire la riproduzione dei video incorporati.<\/p>\r\n\r\n    <h3>Contatti<\/h3>\r\n    <p>Per qualsiasi domanda scrivi a <a href=\"mailto:info@delegi.it\">info@delegi.it<\/a>. Per maggiori informazioni sul trattamento dei dati personali consulta la <a href=\"#privacy-policy\">privacy policy<\/a>.<\/p>\r\n  <\/div>\r\n<\/dialog>\r\n<\/div>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r128\/three.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@studio-freight\/lenis@1.0.42\/dist\/lenis.min.js\"><\/script>\r\n<script>\r\n\/* Delegi \u2014 hero dot-wave field (three.js r128 UMD, global THREE) *\/\r\n(function () {\r\n  \"use strict\";\r\n\r\n  const canvas = document.getElementById(\"heroCanvas\");\r\n  const hero = document.getElementById(\"hero\") || (canvas && canvas.parentElement);\r\n  if (!canvas || !hero || typeof THREE === \"undefined\") return;\r\n\r\n  const reduced = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\r\n\r\n  let renderer;\r\n  try {\r\n    renderer = new THREE.WebGLRenderer({\r\n      canvas,\r\n      alpha: true,\r\n      antialias: window.devicePixelRatio < 1.5,\r\n      powerPreference: \"high-performance\"\r\n    });\r\n    if (!renderer.getContext()) return;\r\n  } catch (e) {\r\n    return;\r\n  }\r\n  renderer.setClearColor(0xffffff, 0);\r\n  const PR = Math.min(window.devicePixelRatio || 1, 1.75);\r\n  renderer.setPixelRatio(PR);\r\n\r\n  \/* ---------- tunables ---------- *\/\r\n  const isPhone = window.matchMedia(\"(max-width: 600px)\").matches;\r\n  const isTablet = !isPhone && window.matchMedia(\"(max-width: 1024px)\").matches;\r\n  const CFG = {\r\n    cols: isPhone ? 80 : isTablet ? 120 : 150,\r\n    rows: isPhone ? 40 : isTablet ? 60 : 70,\r\n    width: 34,          \/\/ world units across (x)\r\n    zFar: -16,          \/\/ far edge (towards the top of the screen)\r\n    zNear: 6.5,         \/\/ near edge (below the bottom of the screen)\r\n    amplitude: 2.7,     \/\/ overall wave height\r\n    pointSize: isPhone ? 3.4 : 3.8,\r\n    amberRatio: 0.13,\r\n    mistRatio: 0.2,\r\n    colors: {\r\n      navy: \"#19375B\",\r\n      amber: \"#F0A83B\",\r\n      amberPeak: \"#FFC766\",\r\n      mist: \"#8FA6C4\"\r\n    }\r\n  };\r\n\r\n  \/* ---------- scene ---------- *\/\r\n  const scene = new THREE.Scene();\r\n  const camera = new THREE.PerspectiveCamera(42, 1, 0.1, 80);\r\n  const camBase = new THREE.Vector3(0, 3.1, 8.5);\r\n  const camTarget = new THREE.Vector3(0.8, 2.3, -3); \/\/ same ~4deg pitch as before, higher eye: closer, bigger rows\r\n  const group = new THREE.Group();\r\n  group.position.x = 2.2;          \/\/ push the mass of the field to the right\r\n  group.rotation.y = -0.22;        \/\/ diagonal sweep from bottom-right\r\n  scene.add(group);\r\n\r\n  \/* ---------- geometry: flat grid, displacement happens in the shader ---------- *\/\r\n  const count = CFG.cols * CFG.rows;\r\n  const positions = new Float32Array(count * 3);\r\n  const rands = new Float32Array(count * 3);\r\n  let i3 = 0;\r\n  for (let r = 0; r < CFG.rows; r++) {\r\n    const v = r \/ (CFG.rows - 1);\r\n    \/\/ denser rows towards the horizon compensate for perspective\r\n    const z = CFG.zFar + (CFG.zNear - CFG.zFar) * Math.pow(v, 1.1);\r\n    for (let c = 0; c < CFG.cols; c++) {\r\n      const u = c \/ (CFG.cols - 1);\r\n      positions[i3] = (u - 0.5) * CFG.width + (Math.random() - 0.5) * 0.05;\r\n      positions[i3 + 1] = 0;\r\n      positions[i3 + 2] = z;\r\n      rands[i3] = Math.random();       \/\/ colour pick\r\n      rands[i3 + 1] = Math.random();   \/\/ size jitter\r\n      rands[i3 + 2] = Math.random();   \/\/ twinkle phase\r\n      i3 += 3;\r\n    }\r\n  }\r\n  const geometry = new THREE.BufferGeometry();\r\n  geometry.setAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\r\n  geometry.setAttribute(\"aRand\", new THREE.BufferAttribute(rands, 3));\r\n\r\n  const col = (h) => new THREE.Color(h);\r\n  const uniforms = {\r\n    uTime: { value: 0 },\r\n    uRise: { value: reduced ? 1 : 0 },\r\n    uFlat: { value: 1 },\r\n    uAmp: { value: CFG.amplitude },\r\n    uSize: { value: CFG.pointSize },\r\n    uPR: { value: PR },\r\n    uOpacity: { value: 1 },\r\n    uMouse: { value: new THREE.Vector2(999, 999) },\r\n    uMouseStr: { value: 0 },\r\n    uRipples: {\r\n      value: [new THREE.Vector4(0, 0, -99, 0), new THREE.Vector4(0, 0, -99, 0), new THREE.Vector4(0, 0, -99, 0)]\r\n    },\r\n    \/\/ calm zone in NDC: xMin, xMax, yMin, yMax (headline block, top-left)\r\n    uCalm: { value: new THREE.Vector4(-1.2, 0.2, -0.25, 1.2) },\r\n    uAmberRatio: { value: CFG.amberRatio },\r\n    uMistRatio: { value: CFG.mistRatio },\r\n    uNavy: { value: col(CFG.colors.navy) },\r\n    uAmber: { value: col(CFG.colors.amber) },\r\n    uAmberPeak: { value: col(CFG.colors.amberPeak) },\r\n    uMist: { value: col(CFG.colors.mist) }\r\n  };\r\n\r\n  const NOISE = `\r\n    vec3 mod289(vec3 x){return x-floor(x*(1.0\/289.0))*289.0;}\r\n    vec4 mod289(vec4 x){return x-floor(x*(1.0\/289.0))*289.0;}\r\n    vec4 permute(vec4 x){return mod289(((x*34.0)+1.0)*x);}\r\n    vec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}\r\n    float snoise(vec3 v){\r\n      const vec2 C=vec2(1.0\/6.0,1.0\/3.0);\r\n      const vec4 D=vec4(0.0,0.5,1.0,2.0);\r\n      vec3 i=floor(v+dot(v,C.yyy));\r\n      vec3 x0=v-i+dot(i,C.xxx);\r\n      vec3 g=step(x0.yzx,x0.xyz);\r\n      vec3 l=1.0-g;\r\n      vec3 i1=min(g.xyz,l.zxy);\r\n      vec3 i2=max(g.xyz,l.zxy);\r\n      vec3 x1=x0-i1+C.xxx;\r\n      vec3 x2=x0-i2+C.yyy;\r\n      vec3 x3=x0-D.yyy;\r\n      i=mod289(i);\r\n      vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));\r\n      float n_=0.142857142857;\r\n      vec3 ns=n_*D.wyz-D.xzx;\r\n      vec4 j=p-49.0*floor(p*ns.z*ns.z);\r\n      vec4 x_=floor(j*ns.z);\r\n      vec4 y_=floor(j-7.0*x_);\r\n      vec4 x=x_*ns.x+ns.yyyy;\r\n      vec4 y=y_*ns.x+ns.yyyy;\r\n      vec4 h=1.0-abs(x)-abs(y);\r\n      vec4 b0=vec4(x.xy,y.xy);\r\n      vec4 b1=vec4(x.zw,y.zw);\r\n      vec4 s0=floor(b0)*2.0+1.0;\r\n      vec4 s1=floor(b1)*2.0+1.0;\r\n      vec4 sh=-step(h,vec4(0.0));\r\n      vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;\r\n      vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;\r\n      vec3 p0=vec3(a0.xy,h.x);\r\n      vec3 p1=vec3(a0.zw,h.y);\r\n      vec3 p2=vec3(a1.xy,h.z);\r\n      vec3 p3=vec3(a1.zw,h.w);\r\n      vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));\r\n      p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;\r\n      vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);\r\n      m=m*m;\r\n      return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));\r\n    }\r\n  `;\r\n\r\n  const vertexShader = `\r\n    attribute vec3 aRand;\r\n    uniform float uTime, uRise, uFlat, uAmp, uSize, uPR, uOpacity, uMouseStr;\r\n    uniform float uAmberRatio, uMistRatio;\r\n    uniform vec2 uMouse;\r\n    uniform vec4 uRipples[3];\r\n    uniform vec4 uCalm;\r\n    uniform vec3 uNavy, uAmber, uAmberPeak, uMist;\r\n    varying vec4 vColor;\r\n    ${NOISE}\r\n    void main(){\r\n      vec3 p = position;\r\n      float t = uTime;\r\n\r\n      \/\/ where would this dot land on screen if flat? -> calm the headline zone\r\n      vec4 flatClip = projectionMatrix * modelViewMatrix * vec4(p, 1.0);\r\n      vec2 ndc = flatClip.xy \/ flatClip.w;\r\n      float inX = 1.0 - smoothstep(uCalm.y - 0.1, uCalm.y + 0.18, ndc.x);\r\n      float inY = smoothstep(uCalm.z - 0.12, uCalm.z + 0.1, ndc.y);\r\n      float calm = inX * inY;\r\n\r\n      float ampX = mix(0.35, 1.0, smoothstep(-10.0, 10.0, p.x));\r\n      float ampZ = smoothstep(-18.0, 2.0, p.z);\r\n      float amp = uAmp * ampX * ampZ * mix(1.0, 0.18, calm);\r\n\r\n      float h = snoise(vec3(p.x * 0.1 + t * 0.04, p.z * 0.15 - t * 0.08, t * 0.06))\r\n              + snoise(vec3(p.x * 0.22, p.z * 0.26 + t * 0.11, t * 0.14)) * 0.36\r\n              + sin(p.x * 0.3 + p.z * 0.22 - t * 0.55) * 0.32;\r\n      h *= amp;\r\n\r\n      vec2 dm = p.xz - uMouse;\r\n      float bulge = exp(-dot(dm, dm) \/ 5.5) * uMouseStr * (0.5 + 0.7 * ampZ);\r\n\r\n      float rip = 0.0;\r\n      float ripGlow = 0.0;\r\n      for (int i = 0; i < 3; i++) {\r\n        vec4 r = uRipples[i];\r\n        float age = t - r.z;\r\n        if (r.w > 0.5 && age > 0.0 && age < 7.0) {\r\n          float x = length(p.xz - r.xy) - age * 5.0;\r\n          float wave = sin(x * 1.5) * exp(-x * x * 0.3);\r\n          rip += wave * exp(-age * 0.6) * 0.98 * (0.4 + 0.6 * ampZ);\r\n          ripGlow += max(wave, 0.0) * exp(-age * 0.9);\r\n        }\r\n      }\r\n\r\n      float y = (h + rip) * uRise * uFlat + bulge * uRise;\r\n      p.y += y;\r\n\r\n      vec4 mv = modelViewMatrix * vec4(p, 1.0);\r\n      gl_Position = projectionMatrix * mv;\r\n      float depth = -mv.z;\r\n\r\n      float size = uSize * (0.7 + aRand.y * 0.6) * uPR * (10.0 \/ depth);\r\n      float sub = clamp(size, 0.0, 1.0); \/\/ fade sub-pixel dots instead of flickering\r\n      gl_PointSize = clamp(size, 1.0, 26.0 * uPR);\r\n\r\n      float peak = smoothstep(0.15, 1.1, y);\r\n      vec3 c; float a;\r\n      if (aRand.x < uAmberRatio) {\r\n        c = mix(uAmber, uAmberPeak, peak);\r\n        a = 0.45 + 0.55 * peak + bulge * 0.3;\r\n      } else if (aRand.x < uAmberRatio + uMistRatio) {\r\n        c = uMist;\r\n        a = 0.72;\r\n      } else {\r\n        c = uNavy;\r\n        a = 0.8 + 0.2 * peak;\r\n      }\r\n      \/\/ brief amber flash on the ripple crest\r\n      float glow = clamp(ripGlow, 0.0, 1.0) * uRise;\r\n      c = mix(c, uAmberPeak, glow * 0.75);\r\n      a = mix(a, 1.0, glow * 0.6);\r\n      float fog = smoothstep(34.0, 5.0, depth) * smoothstep(1.2, 3.2, depth);\r\n      a *= fog * sub * mix(1.0, 0.14, calm) * uOpacity;\r\n      a *= 0.85 + 0.15 * sin(t * 1.3 + aRand.z * 6.2831);\r\n      vColor = vec4(c, clamp(a, 0.0, 1.0));\r\n    }\r\n  `;\r\n\r\n  const fragmentShader = `\r\n    varying vec4 vColor;\r\n    void main(){\r\n      float d = length(gl_PointCoord - 0.5);\r\n      float a = smoothstep(0.5, 0.3, d);\r\n      if (a * vColor.a < 0.004) discard;\r\n      gl_FragColor = vec4(vColor.rgb, vColor.a * a);\r\n    }\r\n  `;\r\n\r\n  const material = new THREE.ShaderMaterial({\r\n    uniforms,\r\n    vertexShader,\r\n    fragmentShader,\r\n    transparent: true,\r\n    depthWrite: false,\r\n    depthTest: false,\r\n    blending: THREE.NormalBlending\r\n  });\r\n  const points = new THREE.Points(geometry, material);\r\n  points.frustumCulled = false;\r\n  group.add(points);\r\n\r\n  \/* ---------- sizing ---------- *\/\r\n  let W = 1, H = 1, heroTop = 0;\r\n  const titleEl = hero.querySelector(\".hero__title\");\r\n  const footEl = hero.querySelector(\".hero__foot\");\r\n  const eyebrowEl = hero.querySelector(\".hero__eyebrow\");\r\n\r\n  function measureCalm(aspect) {\r\n    const calm = uniforms.uCalm.value;\r\n    if (!titleEl) {\r\n      if (aspect < 1) calm.set(-1.2, 1.2, 0.05, 1.2);\r\n      else calm.set(-1.2, 0.3, -0.6, 1.2);\r\n      return;\r\n    }\r\n    const hr = hero.getBoundingClientRect();\r\n    let right = 0, bottom = 0;\r\n    \/\/ element boxes (not text ranges) so split-text entrance transforms don't skew it;\r\n    \/\/ the foot is full-width, so measure its children (subtitle, CTA) instead\r\n    const els = [eyebrowEl, titleEl].concat(footEl ? Array.prototype.slice.call(footEl.children) : []);\r\n    els.forEach((el) => {\r\n      if (!el) return;\r\n      const r = el.getBoundingClientRect();\r\n      if (!r.width || !r.height) return;\r\n      right = Math.max(right, r.right - hr.left);\r\n      bottom = Math.max(bottom, r.bottom - hr.top);\r\n    });\r\n    const xMax = aspect < 1 ? 1.2 : Math.min(1.2, (2 * right) \/ W - 1 + 0.05);\r\n    const yMin = Math.max(-1.2, 1 - (2 * bottom) \/ H - 0.06);\r\n    calm.set(-1.2, xMax, yMin, 1.2);\r\n  }\r\n\r\n  function resize() {\r\n    W = Math.max(1, hero.offsetWidth);\r\n    H = Math.max(1, hero.offsetHeight);\r\n    heroTop = hero.getBoundingClientRect().top + window.scrollY;\r\n    const aspect = W \/ H;\r\n    renderer.setSize(W, H, false);\r\n    camera.aspect = aspect;\r\n    \/\/ narrower lens on tablet portrait keeps the lower half reading as a dense surface\r\n    camera.fov = aspect < 0.7 ? 58 : aspect < 1 ? 50 : aspect < 1.4 ? 46 : 42;\r\n    camera.updateProjectionMatrix();\r\n    measureCalm(aspect);\r\n    if (reduced) render();\r\n  }\r\n\r\n  let resizeQueued = false;\r\n  function scheduleResize() {\r\n    if (resizeQueued) return;\r\n    resizeQueued = true;\r\n    requestAnimationFrame(() => {\r\n      resizeQueued = false;\r\n      resize();\r\n    });\r\n  }\r\n\r\n  \/* ---------- pointer \/ ripple ---------- *\/\r\n  const raycaster = new THREE.Raycaster();\r\n  const groundPlane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0);\r\n  const ndcPt = new THREE.Vector2();\r\n  const hit = new THREE.Vector3();\r\n  const pointer = { x: 0, y: 0, inside: false };   \/\/ pointer in [-1,1]\r\n  const smooth = { x: 0, y: 0 };\r\n  const mouseTarget = new THREE.Vector2(999, 999);\r\n  let rippleIdx = 0;\r\n  let time = 0;\r\n\r\n  function toLocal(nx, ny, out) {\r\n    ndcPt.set(nx, ny);\r\n    raycaster.setFromCamera(ndcPt, camera);\r\n    if (!raycaster.ray.intersectPlane(groundPlane, hit)) return false;\r\n    group.worldToLocal(hit);\r\n    out.set(hit.x, hit.z);\r\n    return true;\r\n  }\r\n\r\n  function onMove(e) {\r\n    if (!visible) return;\r\n    const x = e.clientX \/ W;                       \/\/ hero spans the viewport width from x=0\r\n    const y = (e.clientY - (heroTop - window.scrollY)) \/ H;\r\n    pointer.inside = x >= 0 && x <= 1 && y >= 0 && y <= 1;\r\n    if (!pointer.inside) return;\r\n    pointer.x = x * 2 - 1;\r\n    pointer.y = -(y * 2 - 1);\r\n  }\r\n\r\n  const tmp2 = new THREE.Vector2();\r\n  function onClick(e) {\r\n    const r = hero.getBoundingClientRect();\r\n    const nx = ((e.clientX - r.left) \/ r.width) * 2 - 1;\r\n    const ny = -(((e.clientY - r.top) \/ r.height) * 2 - 1);\r\n    fireRipple(nx, ny);\r\n  }\r\n\r\n  function fireRipple(nx, ny) {\r\n    if (!toLocal(nx, ny, tmp2)) return;\r\n    uniforms.uRipples.value[rippleIdx].set(tmp2.x, tmp2.y, time, 1);\r\n    rippleIdx = (rippleIdx + 1) % 3;\r\n  }\r\n\r\n  \/\/ CTA hover sends a ripple from the button's centre\r\n  let lastCtaRipple = -10;\r\n  function onCtaEnter(e) {\r\n    if (time - lastCtaRipple < 1.2) return;\r\n    lastCtaRipple = time;\r\n    const r = e.currentTarget.getBoundingClientRect();\r\n    const top = heroTop - window.scrollY;\r\n    const nx = ((r.left + r.width \/ 2) \/ W) * 2 - 1;\r\n    const ny = -(((r.top + r.height \/ 2 - top) \/ H) * 2 - 1);\r\n    fireRipple(nx, ny);\r\n  }\r\n\r\n  \/* ---------- scroll ---------- *\/\r\n  let progress = 0, progressSmooth = 0;\r\n  window.addEventListener(\"delegi:scroll\", (e) => {\r\n    const p = e && e.detail ? Number(e.detail.heroProgress) : 0;\r\n    progress = isFinite(p) ? Math.min(1, Math.max(0, p)) : 0;\r\n  });\r\n\r\n  \/* ---------- frame ---------- *\/\r\n  const easeOut = (x) => 1 - Math.pow(1 - x, 3);\r\n  const RISE = 1.6;\r\n  let introT = 0;\r\n\r\n  function update(dt) {\r\n    time += dt;\r\n    uniforms.uTime.value = time;\r\n\r\n    if (introT < RISE) {\r\n      introT = Math.min(RISE, introT + dt);\r\n      uniforms.uRise.value = easeOut(introT \/ RISE);\r\n    }\r\n\r\n    const k = 1 - Math.pow(0.001, dt);          \/\/ frame-rate independent lerp\r\n    progressSmooth += (progress - progressSmooth) * Math.min(1, k * 1.6);\r\n    smooth.x += (pointer.x - smooth.x) * k * 0.6;\r\n    smooth.y += (pointer.y - smooth.y) * k * 0.6;\r\n\r\n    const p = progressSmooth;\r\n    uniforms.uFlat.value = 1 - 0.6 * p;\r\n    uniforms.uOpacity.value = 1 - 0.7 * p;\r\n    group.rotation.x = p * 0.16;\r\n\r\n    camera.position.set(\r\n      camBase.x + smooth.x * 0.7,\r\n      camBase.y + smooth.y * 0.35 + p * 1.4,\r\n      camBase.z - p * 1.5\r\n    );\r\n    camera.lookAt(camTarget.x, camTarget.y - p * 0.6, camTarget.z);\r\n    camera.updateMatrixWorld();\r\n    group.updateMatrixWorld();\r\n\r\n    if (pointer.inside && toLocal(pointer.x, pointer.y, tmp2)) mouseTarget.copy(tmp2);\r\n    const m = uniforms.uMouse.value;\r\n    if (m.x > 900) m.copy(mouseTarget);\r\n    else m.lerp(mouseTarget, k * 0.5);\r\n    const strTarget = pointer.inside ? 1 : 0;\r\n    uniforms.uMouseStr.value += (strTarget - uniforms.uMouseStr.value) * k * 0.4;\r\n  }\r\n\r\n  function render() {\r\n    renderer.render(scene, camera);\r\n  }\r\n\r\n  let rafId = 0, running = false, visible = true, last = 0;\r\n  function loop(now) {\r\n    rafId = requestAnimationFrame(loop);\r\n    const dt = Math.min(0.05, Math.max(0, (now - last) \/ 1000));\r\n    last = now;\r\n    update(dt);\r\n    render();\r\n  }\r\n  function start() {\r\n    if (running || reduced) return;\r\n    running = true;\r\n    last = performance.now();\r\n    rafId = requestAnimationFrame(loop);\r\n  }\r\n  function stop() {\r\n    running = false;\r\n    cancelAnimationFrame(rafId);\r\n  }\r\n  function sync() {\r\n    if (visible && !document.hidden) start();\r\n    else stop();\r\n  }\r\n\r\n  resize();\r\n  if (\"ResizeObserver\" in window) new ResizeObserver(scheduleResize).observe(hero);\r\n  window.addEventListener(\"resize\", scheduleResize);\r\n  window.addEventListener(\"load\", scheduleResize);\r\n  if (document.fonts && document.fonts.ready) document.fonts.ready.then(scheduleResize);\r\n  \/\/ hero text may still be settling from its entrance animation\r\n  setTimeout(scheduleResize, 1400);\r\n  setTimeout(scheduleResize, 2800);\r\n\r\n  if (reduced) {\r\n    \/\/ one static frame, wave fully risen\r\n    time = 6;\r\n    introT = RISE;\r\n    update(0);\r\n    render();\r\n    canvas.classList.add(\"is-ready\");\r\n    return;\r\n  }\r\n\r\n  window.addEventListener(\"pointermove\", onMove, { passive: true });\r\n  hero.addEventListener(\"pointerleave\", () => { pointer.inside = false; });\r\n  hero.addEventListener(\"click\", onClick);\r\n  let ctas = hero.querySelectorAll(\"[data-wave-ripple]\");\r\n  if (!ctas.length) ctas = hero.querySelectorAll(\".hero__cta a\");\r\n  Array.prototype.forEach.call(ctas, (el) => el.addEventListener(\"pointerenter\", onCtaEnter));\r\n  document.addEventListener(\"visibilitychange\", sync);\r\n  if (\"IntersectionObserver\" in window) {\r\n    new IntersectionObserver((entries) => {\r\n      visible = entries[0].isIntersecting;\r\n      sync();\r\n    }, { threshold: 0 }).observe(hero);\r\n  }\r\n\r\n  update(0);\r\n  render();\r\n  canvas.classList.add(\"is-ready\");\r\n  sync();\r\n})();\r\n\r\n<\/script>\r\n<script>\r\n(() => {\r\n  \"use strict\";\r\n\r\n  const root = document.documentElement;\r\n  const reduced = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\r\n  const finePointer = window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;\r\n  const lerp = (a, b, t) => a + (b - a) * t;\r\n  const clamp01 = (v) => (v < 0 ? 0 : v > 1 ? 1 : v);\r\n\r\n  \/* ==================================================================\r\n     1. Split headings into masked words\r\n        <span class=\"word\"><span class=\"word__inner\">text<\/span><\/span>\r\n        Inline elements (e.g. the highlighted \"primo\") stay intact and\r\n        are wrapped as a single word.\r\n     ================================================================== *\/\r\n  function makeWord(content, index, extraClass) {\r\n    const word = document.createElement(\"span\");\r\n    word.className = extraClass ? `word ${extraClass}` : \"word\";\r\n    const inner = document.createElement(\"span\");\r\n    inner.className = \"word__inner\";\r\n    inner.style.setProperty(\"--i\", index);\r\n    if (typeof content === \"string\") inner.textContent = content;\r\n    else inner.appendChild(content);\r\n    word.appendChild(inner);\r\n    return word;\r\n  }\r\n\r\n  document.querySelectorAll(\"[data-split]\").forEach((el) => {\r\n    const nodes = [...el.childNodes];\r\n    const frag = document.createDocumentFragment();\r\n    let i = 0;\r\n    nodes.forEach((node) => {\r\n      if (node.nodeType === Node.TEXT_NODE) {\r\n        const parts = node.textContent.split(\/(\\s+)\/);\r\n        parts.forEach((part) => {\r\n          if (!part) return;\r\n          if (\/^\\s+$\/.test(part)) frag.appendChild(document.createTextNode(\" \"));\r\n          else frag.appendChild(makeWord(part, i++));\r\n        });\r\n      } else if (node.nodeType === Node.ELEMENT_NODE) {\r\n        frag.appendChild(makeWord(node, i++, node.classList.contains(\"hl\") ? \"word--hl\" : \"\"));\r\n      }\r\n    });\r\n    el.textContent = \"\";\r\n    el.appendChild(frag);\r\n  });\r\n\r\n  \/* ==================================================================\r\n     2. Smooth scrolling (Lenis) with native fallback\r\n     ================================================================== *\/\r\n  const header = document.getElementById(\"header\");\r\n  let lenis = null;\r\n  if (!reduced && typeof window.Lenis === \"function\") {\r\n    lenis = new window.Lenis({\r\n      lerp: 0.09,\r\n      smoothWheel: true,\r\n      wheelMultiplier: 1,\r\n      syncTouch: false\r\n    });\r\n  } else {\r\n    root.classList.add(\"lenis-off\");\r\n  }\r\n\r\n  const headerOffset = () => (header ? header.offsetHeight : 0) + 8;\r\n\r\n  document.querySelectorAll('a[href^=\"#\"]').forEach((link) => {\r\n    link.addEventListener(\"click\", (e) => {\r\n      const id = link.getAttribute(\"href\");\r\n      if (id.length < 2) return;\r\n      const target = document.querySelector(id);\r\n      if (!target) return;\r\n      e.preventDefault();\r\n      if (target.tagName === \"DIALOG\") {\r\n        openLegal(target, link);\r\n        return;\r\n      }\r\n      const offset = target.id === \"hero\" ? 0 : -headerOffset();\r\n      if (lenis) {\r\n        lenis.scrollTo(target.id === \"hero\" ? 0 : target, { offset, duration: 1.4 });\r\n      } else {\r\n        const top = target.id === \"hero\" ? 0 : target.getBoundingClientRect().top + window.scrollY + offset;\r\n        window.scrollTo({ top, behavior: reduced ? \"auto\" : \"smooth\" });\r\n      }\r\n      if (target.tabIndex === -1 || id === \"#main\") target.focus({ preventScroll: true });\r\n    });\r\n  });\r\n\r\n  \/* ==================================================================\r\n     3. Measurements \u2014 layout is read only here (load \/ resize \/ fonts)\r\n     ================================================================== *\/\r\n  const hero = document.getElementById(\"hero\");\r\n  const progressBar = document.getElementById(\"progressBar\");\r\n  const storySection = document.querySelector(\".section--story\");\r\n  const stack = document.querySelector(\".story-stack\");\r\n  const pointer = { tx: 0, ty: 0, x: 0, y: 0 };\r\n\r\n  const parallaxItems = [...document.querySelectorAll(\"[data-parallax]\")].map((el) => ({\r\n    el,\r\n    speed: parseFloat(el.dataset.parallax) || 0.08,\r\n    center: 0,\r\n    current: 0\r\n  }));\r\n\r\n  const M = { vh: window.innerHeight, heroHeight: 1, docMax: 1, storyTop: 0, storyHeight: 1 };\r\n\r\n  function measure() {\r\n    const sy = window.scrollY;\r\n    M.vh = window.innerHeight;\r\n    M.heroHeight = hero ? hero.offsetHeight || 1 : 1;\r\n    M.docMax = Math.max(1, root.scrollHeight - M.vh);\r\n    if (storySection) {\r\n      const r = storySection.getBoundingClientRect();\r\n      M.storyTop = r.top + sy;\r\n      M.storyHeight = r.height || 1;\r\n    }\r\n    parallaxItems.forEach((item) => {\r\n      \/\/ measure without the current parallax offset\r\n      const r = item.el.getBoundingClientRect();\r\n      item.center = r.top + sy - item.current + r.height \/ 2;\r\n    });\r\n  }\r\n\r\n  let resizeTimer = 0;\r\n  window.addEventListener(\"resize\", () => {\r\n    clearTimeout(resizeTimer);\r\n    resizeTimer = setTimeout(measure, 120);\r\n  });\r\n  window.addEventListener(\"load\", measure);\r\n  if (document.fonts && document.fonts.ready) document.fonts.ready.then(measure);\r\n  measure();\r\n\r\n  \/* ==================================================================\r\n     4. The single animation loop \u2014 no layout reads, only writes\r\n     ================================================================== *\/\r\n  const scrollEvent = new CustomEvent(\"delegi:scroll\", { detail: { heroProgress: 0 } });\r\n  let scrolled = null;\r\n  let lastProgress = -1;\r\n  let storyP = 0;\r\n  let lastStoryP = -1;\r\n\r\n  function frame(time) {\r\n    requestAnimationFrame(frame);\r\n    if (lenis) lenis.raf(time);\r\n\r\n    const y = lenis && typeof lenis.scroll === \"number\" ? lenis.scroll : window.scrollY;\r\n\r\n    \/* header state (class only flips on change) *\/\r\n    const isScrolled = y > 12;\r\n    if (isScrolled !== scrolled) {\r\n      scrolled = isScrolled;\r\n      header.classList.toggle(\"is-scrolled\", isScrolled);\r\n    }\r\n\r\n    \/* progress bar *\/\r\n    const progress = clamp01(y \/ M.docMax);\r\n    if (Math.abs(progress - lastProgress) > 0.0005) {\r\n      lastProgress = progress;\r\n      progressBar.style.transform = `scaleX(${progress.toFixed(4)})`;\r\n    }\r\n\r\n    \/* hero scene contract *\/\r\n    scrollEvent.detail.heroProgress = clamp01(y \/ M.heroHeight);\r\n    window.dispatchEvent(scrollEvent);\r\n\r\n    if (reduced) return;\r\n\r\n    \/* parallax *\/\r\n    const viewCenter = y + M.vh \/ 2;\r\n    for (let k = 0; k < parallaxItems.length; k++) {\r\n      const item = parallaxItems[k];\r\n      const target = (viewCenter - item.center) * item.speed;\r\n      const next = lerp(item.current, target, 0.1);\r\n      if (Math.abs(next - item.current) > 0.01) {\r\n        item.current = next;\r\n        item.el.style.transform = `translate3d(0, ${next.toFixed(2)}px, 0)`;\r\n      }\r\n    }\r\n\r\n    \/* story stack: scroll-driven fan-out *\/\r\n    if (stack) {\r\n      const raw = (y + M.vh - M.storyTop) \/ (M.storyHeight + M.vh);\r\n      storyP = lerp(storyP, clamp01(raw * 1.4 - 0.15), 0.12);\r\n      if (Math.abs(storyP - lastStoryP) > 0.001) {\r\n        lastStoryP = storyP;\r\n        stack.style.setProperty(\"--p\", storyP.toFixed(3));\r\n      }\r\n      \/* pointer parallax, eased here (cards have no CSS transition) *\/\r\n      const nx = lerp(pointer.x, pointer.tx, 0.1);\r\n      const ny = lerp(pointer.y, pointer.ty, 0.1);\r\n      if (Math.abs(nx - pointer.x) > 0.0005 || Math.abs(ny - pointer.y) > 0.0005) {\r\n        pointer.x = nx;\r\n        pointer.y = ny;\r\n        stack.style.setProperty(\"--px\", nx.toFixed(4));\r\n        stack.style.setProperty(\"--py\", ny.toFixed(4));\r\n      }\r\n    }\r\n  }\r\n  requestAnimationFrame(frame);\r\n\r\n  \/* ==================================================================\r\n     5. Reveal on scroll\r\n     ================================================================== *\/\r\n  document.querySelectorAll(\"[data-stagger]\").forEach((group) => {\r\n    [...group.children].forEach((child, i) => {\r\n      if (!child.style.getPropertyValue(\"--d\")) child.style.setProperty(\"--d\", `${i * 90}ms`);\r\n    });\r\n  });\r\n\r\n  const animatedEls = document.querySelectorAll(\"[data-animate]\");\r\n  if (reduced || !(\"IntersectionObserver\" in window)) {\r\n    animatedEls.forEach((el) => el.classList.add(\"in-view\"));\r\n  } else {\r\n    const io = new IntersectionObserver(\r\n      (entries) => {\r\n        entries.forEach((entry) => {\r\n          if (!entry.isIntersecting) return;\r\n          entry.target.classList.add(\"in-view\");\r\n          io.unobserve(entry.target);\r\n        });\r\n      },\r\n      { threshold: 0.15, rootMargin: \"0px 0px -8% 0px\" }\r\n    );\r\n    animatedEls.forEach((el) => io.observe(el));\r\n  }\r\n\r\n  \/* ==================================================================\r\n     7. Pointer effects \u2014 fine pointers only, never with reduced motion\r\n        Rects are cached on pointerenter; moves only write.\r\n     ================================================================== *\/\r\n  if (finePointer && !reduced) {\r\n    \/* magnetic buttons *\/\r\n    document.querySelectorAll(\"[data-magnetic]\").forEach((btn) => {\r\n      let rect = null;\r\n      btn.addEventListener(\"pointerenter\", () => {\r\n        rect = btn.getBoundingClientRect();\r\n        btn.classList.add(\"is-magnet\");\r\n      });\r\n      btn.addEventListener(\"pointermove\", (e) => {\r\n        if (!rect) return;\r\n        const x = e.clientX - rect.left - rect.width \/ 2;\r\n        const y = e.clientY - rect.top - rect.height \/ 2;\r\n        btn.style.setProperty(\"--tx\", `${(x * 0.18).toFixed(1)}px`);\r\n        btn.style.setProperty(\"--ty\", `${(y * 0.28).toFixed(1)}px`);\r\n      });\r\n      btn.addEventListener(\"pointerleave\", () => {\r\n        rect = null;\r\n        btn.classList.remove(\"is-magnet\");\r\n        btn.style.setProperty(\"--tx\", \"0px\");\r\n        btn.style.setProperty(\"--ty\", \"0px\");\r\n      });\r\n    });\r\n\r\n    \/* service cards: tilt (max 6deg) *\/\r\n    const MAX_TILT = 6;\r\n    document.querySelectorAll(\"[data-tilt]\").forEach((card) => {\r\n      let rect = null;\r\n      card.addEventListener(\"pointerenter\", () => {\r\n        rect = card.getBoundingClientRect();\r\n        card.classList.add(\"is-tilting\");\r\n      });\r\n      card.addEventListener(\"pointermove\", (e) => {\r\n        if (!rect) return;\r\n        const px = clamp01((e.clientX - rect.left) \/ rect.width);\r\n        const py = clamp01((e.clientY - rect.top) \/ rect.height);\r\n        card.style.transform =\r\n          `perspective(1000px) rotateX(${((0.5 - py) * MAX_TILT).toFixed(2)}deg) rotateY(${((px - 0.5) * MAX_TILT).toFixed(2)}deg) translate3d(0, -8px, 0)`;\r\n      });\r\n      card.addEventListener(\"pointerleave\", () => {\r\n        rect = null;\r\n        card.classList.remove(\"is-tilting\");\r\n        card.style.transform = \"\";\r\n      });\r\n    });\r\n\r\n    \/* story stack: pointer parallax (viewport-relative, no layout reads) *\/\r\n    if (stack && storySection) {\r\n      storySection.addEventListener(\"pointermove\", (e) => {\r\n        pointer.tx = e.clientX \/ window.innerWidth - 0.5;\r\n        pointer.ty = e.clientY \/ window.innerHeight - 0.5;\r\n      });\r\n      storySection.addEventListener(\"pointerleave\", () => {\r\n        pointer.tx = 0;\r\n        pointer.ty = 0;\r\n      });\r\n    }\r\n  }\r\n\r\n  \/* ==================================================================\r\n     8. Lead form \u2014 sent by email through FormSubmit (static site, no backend)\r\n     ================================================================== *\/\r\n  const FORM_ENDPOINT = \"https:\/\/formsubmit.co\/ajax\/s.pinna@delegi.it\";\r\n  const leadForm = document.getElementById(\"leadForm\");\r\n  const formNote = document.getElementById(\"formNote\");\r\n\r\n  const setNote = (text, state) => {\r\n    formNote.textContent = text;\r\n    formNote.classList.toggle(\"is-success\", state === \"success\");\r\n    formNote.classList.toggle(\"is-error\", state === \"error\");\r\n  };\r\n\r\n  leadForm.querySelectorAll(\".form-field input\").forEach((input) => {\r\n    const sync = () => input.closest(\".form-field\").classList.toggle(\"is-filled\", input.value !== \"\");\r\n    input.addEventListener(\"input\", sync);\r\n    input.addEventListener(\"blur\", sync);\r\n  });\r\n\r\n  leadForm.addEventListener(\"submit\", async (e) => {\r\n    e.preventDefault();\r\n    if (!leadForm.checkValidity()) {\r\n      leadForm.reportValidity();\r\n      return;\r\n    }\r\n    const btn = leadForm.querySelector('button[type=\"submit\"]');\r\n    if (btn.classList.contains(\"is-loading\")) return;\r\n\r\n    const f = leadForm.elements;\r\n    setNote(\"\", null);\r\n\r\n    \/\/ bots fill the hidden field: pretend it worked, send nothing\r\n    if (f._honey.value) {\r\n      setNote(\"Grazie! Ti contatteremo a breve per la tua analisi gratuita.\", \"success\");\r\n      leadForm.reset();\r\n      return;\r\n    }\r\n\r\n    btn.classList.add(\"is-loading\");\r\n    btn.setAttribute(\"aria-busy\", \"true\");\r\n    try {\r\n      const res = await fetch(FORM_ENDPOINT, {\r\n        method: \"POST\",\r\n        headers: { \"Content-Type\": \"application\/json\", Accept: \"application\/json\" },\r\n        body: JSON.stringify({\r\n          \"Nome e cognome\": f.name.value.trim(),\r\n          Telefono: f.phone.value.trim(),\r\n          Email: f.email.value.trim(),\r\n          Privacy: \"Accettata\",\r\n          _subject: \"Nuova richiesta di analisi gratuita dal sito Delegi\",\r\n          _replyto: f.email.value.trim(),\r\n          _template: \"table\",\r\n          _captcha: \"false\"\r\n        })\r\n      });\r\n      const data = await res.json().catch(() => ({}));\r\n      if (!res.ok || String(data.success) !== \"true\") throw new Error(data.message || res.status);\r\n      setNote(\"Grazie! Ti contatteremo a breve per la tua analisi gratuita.\", \"success\");\r\n      leadForm.reset();\r\n      leadForm.querySelectorAll(\".form-field\").forEach((el) => el.classList.remove(\"is-filled\"));\r\n    } catch (err) {\r\n      setNote(\"Invio non riuscito. Riprova tra poco o scrivici a info@delegi.it.\", \"error\");\r\n    } finally {\r\n      btn.classList.remove(\"is-loading\");\r\n      btn.removeAttribute(\"aria-busy\");\r\n    }\r\n  });\r\n\r\n  \/* ==================================================================\r\n     Testimonials: YouTube click-to-load (no third-party iframe until play)\r\n     ================================================================== *\/\r\n  document.querySelectorAll(\".testimonial-card__media[data-yt]\").forEach((media) => {\r\n    const id = media.dataset.yt;\r\n    const thumb = media.querySelector(\".testimonial-card__thumb\");\r\n    \/\/ sddefault is missing on some videos: YouTube then serves a 120px placeholder\r\n    if (thumb) {\r\n      const fallback = () => {\r\n        if (thumb.dataset.fallback) return;\r\n        thumb.dataset.fallback = \"1\";\r\n        thumb.src = `https:\/\/i.ytimg.com\/vi\/${id}\/hqdefault.jpg`;\r\n      };\r\n      thumb.addEventListener(\"load\", () => { if (thumb.naturalWidth <= 120) fallback(); });\r\n      thumb.addEventListener(\"error\", fallback);\r\n    }\r\n\r\n    const btn = media.querySelector(\".testimonial-card__player\");\r\n    if (btn) btn.addEventListener(\"click\", () => openVideo(id, media.dataset.ratio, media.dataset.title, btn));\r\n  });\r\n\r\n  \/* ==================================================================\r\n     Legal dialogs (privacy \/ cookie policy) \u2014 deep-linkable via #hash\r\n     ================================================================== *\/\r\n  let legalReturn = null;\r\n\r\n  function openLegal(dialog, trigger) {\r\n    document.querySelectorAll(\".legal-modal[open]\").forEach((d) => { if (d !== dialog) d.close(); });\r\n    if (!dialog.open) {\r\n      if (!legalReturn) legalReturn = trigger || null;\r\n      if (lenis) lenis.stop();\r\n      dialog.showModal();\r\n    }\r\n    dialog.querySelector(\".legal-modal__body\").scrollTop = 0;\r\n    history.replaceState(null, \"\", \"#\" + dialog.id);\r\n  }\r\n\r\n  \/\/ idempotent: runs from our own close calls and from the native \"close\" event (Esc key)\r\n  function afterLegalClose() {\r\n    if (document.querySelector(\".legal-modal[open]\")) return; \/\/ switched to the other policy\r\n    if (lenis) lenis.start();\r\n    if (location.hash) history.replaceState(null, \"\", location.pathname + location.search);\r\n    if (legalReturn) legalReturn.focus({ preventScroll: true });\r\n    legalReturn = null;\r\n  }\r\n\r\n  function closeLegal(dialog) {\r\n    if (dialog.open) dialog.close();\r\n    afterLegalClose();\r\n  }\r\n\r\n  document.querySelectorAll(\".legal-modal\").forEach((dialog) => {\r\n    dialog.querySelector(\"[data-legal-close]\").addEventListener(\"click\", () => closeLegal(dialog));\r\n    dialog.addEventListener(\"click\", (e) => { if (e.target === dialog) closeLegal(dialog); });\r\n    dialog.addEventListener(\"close\", afterLegalClose);\r\n    dialog.addEventListener(\"cancel\", (e) => { e.preventDefault(); closeLegal(dialog); }); \/\/ Esc\r\n  });\r\n\r\n  const legalFromHash = location.hash && document.getElementById(location.hash.slice(1));\r\n  if (legalFromHash && legalFromHash.classList.contains(\"legal-modal\")) openLegal(legalFromHash);\r\n\r\n  \/* ==================================================================\r\n     Header navigation: mobile menu + active section highlight\r\n     ================================================================== *\/\r\n  const navToggle = document.getElementById(\"navToggle\");\r\n  const nav = document.getElementById(\"siteNav\");\r\n\r\n  function setMenu(open) {\r\n    header.classList.toggle(\"menu-open\", open);\r\n    navToggle.setAttribute(\"aria-expanded\", String(open));\r\n    navToggle.setAttribute(\"aria-label\", open ? \"Chiudi il menu\" : \"Apri il menu\");\r\n    if (lenis) (open ? lenis.stop() : lenis.start());\r\n  }\r\n\r\n  if (navToggle && nav) {\r\n    navToggle.addEventListener(\"click\", () => setMenu(!header.classList.contains(\"menu-open\")));\r\n    \/\/ capture phase: resume scrolling before the anchor handler asks Lenis to scroll\r\n    nav.addEventListener(\"click\", (e) => { if (e.target.closest(\"a\")) setMenu(false); }, true);\r\n    document.addEventListener(\"keydown\", (e) => {\r\n      if (e.key === \"Escape\" && header.classList.contains(\"menu-open\")) {\r\n        setMenu(false);\r\n        navToggle.focus();\r\n      }\r\n    });\r\n    window.matchMedia(\"(min-width: 861px)\").addEventListener(\"change\", (e) => { if (e.matches) setMenu(false); });\r\n\r\n    const links = [...nav.querySelectorAll(\".nav__link\")];\r\n    const sections = links.map((a) => document.querySelector(a.getAttribute(\"href\"))).filter(Boolean);\r\n    if (\"IntersectionObserver\" in window) {\r\n      const spy = new IntersectionObserver((entries) => {\r\n        entries.forEach((entry) => {\r\n          if (!entry.isIntersecting) return;\r\n          links.forEach((a) => {\r\n            const on = a.getAttribute(\"href\") === \"#\" + entry.target.id;\r\n            a.classList.toggle(\"is-active\", on);\r\n            if (on) a.setAttribute(\"aria-current\", \"true\");\r\n            else a.removeAttribute(\"aria-current\");\r\n          });\r\n        });\r\n      }, { rootMargin: \"-45% 0px -50% 0px\" });\r\n      sections.forEach((s) => spy.observe(s));\r\n      \/\/ back at the top: nothing highlighted\r\n      new IntersectionObserver((entries) => {\r\n        if (entries[0].isIntersecting) links.forEach((a) => { a.classList.remove(\"is-active\"); a.removeAttribute(\"aria-current\"); });\r\n      }, { rootMargin: \"-45% 0px -50% 0px\" }).observe(hero);\r\n    }\r\n  }\r\n\r\n  const yearEl = document.getElementById(\"year\");\r\n  if (yearEl) yearEl.textContent = String(new Date().getFullYear());\r\n\r\n  let modal = null;\r\n  let returnFocus = null;\r\n\r\n  function cleanupVideo() {\r\n    if (!modal) return;\r\n    modal.querySelectorAll(\"iframe\").forEach((f) => f.remove()); \/\/ stops playback\r\n    if (lenis) lenis.start();\r\n    if (returnFocus) {\r\n      returnFocus.focus({ preventScroll: true });\r\n      returnFocus = null;\r\n    }\r\n  }\r\n\r\n  function closeVideo() {\r\n    if (!modal) return;\r\n    if (modal.open) modal.close();\r\n    cleanupVideo();\r\n  }\r\n\r\n  function openVideo(id, ratio, title, trigger) {\r\n    \/\/ YouTube embeds need an HTTP Referer (error 153 otherwise); a page opened\r\n    \/\/ from disk (file:\/\/) has none, so fall back to watching on YouTube.\r\n    if (!\/^https?:$\/.test(location.protocol)) {\r\n      window.open(`https:\/\/youtu.be\/${id}`, \"_blank\", \"noopener\");\r\n      return;\r\n    }\r\n    if (!modal) {\r\n      modal = document.createElement(\"dialog\");\r\n      modal.className = \"video-modal\";\r\n      modal.innerHTML =\r\n        '<button class=\"video-modal__close\" type=\"button\" aria-label=\"Chiudi video\">' +\r\n        '<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"\/><\/svg>' +\r\n        \"<\/button>\";\r\n      \/\/ inside the scoped wrapper when embedded (Elementor build), so its styles apply\r\n      (document.getElementById(\"delegi-lp\") || document.body).appendChild(modal);\r\n      modal.querySelector(\".video-modal__close\").addEventListener(\"click\", closeVideo);\r\n      \/\/ click on the backdrop (outside the dialog box) closes it\r\n      modal.addEventListener(\"click\", (e) => { if (e.target === modal) closeVideo(); });\r\n      modal.addEventListener(\"close\", cleanupVideo);\r\n      modal.addEventListener(\"cancel\", (e) => { e.preventDefault(); closeVideo(); }); \/\/ Esc\r\n    }\r\n    modal.querySelectorAll(\"iframe\").forEach((f) => f.remove());\r\n    const [w, h] = String(ratio || \"16\/9\").split(\"\/\").map(Number);\r\n    modal.style.setProperty(\"--rn\", (w \/ h).toFixed(4));\r\n    const iframe = document.createElement(\"iframe\");\r\n    iframe.className = \"video-modal__frame\";\r\n    iframe.src = `https:\/\/www.youtube-nocookie.com\/embed\/${id}?autoplay=1&rel=0&playsinline=1&origin=${encodeURIComponent(location.origin)}`;\r\n    iframe.referrerPolicy = \"strict-origin-when-cross-origin\";\r\n    iframe.title = title || \"Video testimonianza\";\r\n    iframe.allow = \"autoplay; encrypted-media; picture-in-picture; fullscreen\";\r\n    iframe.allowFullscreen = true;\r\n    modal.appendChild(iframe);\r\n    returnFocus = trigger;\r\n    if (lenis) lenis.stop();\r\n    modal.showModal();\r\n  }\r\n})();\r\n\r\n<\/script>\r\n\t\t\t\t<\/div>\n\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>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Vai al contenuto principale Servizi Testimonianze Contatti Inizia subito Agenzia di comunicazione Vuoi essere primo nella mente dei tuoi potenziali clienti? Rivoluzioniamo la tua immagine digitale. Inizia subito Ti accompagniamo passo passo I nostri servizi sono pensati per aiutare la tua azienda a emergere e posizionarsi nel mercato digitale Branding e immagine coordinata 01 Sito&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-530","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.delegi.it\/index.php\/wp-json\/wp\/v2\/pages\/530","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.delegi.it\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.delegi.it\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.delegi.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.delegi.it\/index.php\/wp-json\/wp\/v2\/comments?post=530"}],"version-history":[{"count":97,"href":"https:\/\/www.delegi.it\/index.php\/wp-json\/wp\/v2\/pages\/530\/revisions"}],"predecessor-version":[{"id":654,"href":"https:\/\/www.delegi.it\/index.php\/wp-json\/wp\/v2\/pages\/530\/revisions\/654"}],"wp:attachment":[{"href":"https:\/\/www.delegi.it\/index.php\/wp-json\/wp\/v2\/media?parent=530"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}