/* ── SELF-HOSTED FONTS ── */
/* ISTRUZIONI: scarica i woff2 da gwfh.mranftl.com e mettili in /fonts/ */
@font-face {
  font-family: 'Marcellus';
  src: url('../fonts/marcellus-regular.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../fonts/plus-jakarta-sans-300.woff2') format('woff2');
  font-weight: 300; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../fonts/plus-jakarta-sans-400.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../fonts/plus-jakarta-sans-500.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../fonts/plus-jakarta-sans-600.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  src: url('../fonts/plus-jakarta-sans-700.woff2') format('woff2');
  font-weight: 700; font-style: normal; font-display: swap;
}

/* ── SCREEN READER ONLY ── */
.sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    html { scroll-behavior: smooth; }

    :root {
      --bg-light:   #F0FAFA;
      --bg-mid:     #E0F4F4;
      --teal-light: #5BBFBF;
      --teal-main:  #2A9D9D;
      --teal-dark:  #1A7070;
      --teal-deep:  #0D4D4D;
      --teal-footer:#071E1E;
      --accent:     #F4A261;
      --f-display:  'Marcellus', serif;
      --f-body:     'Plus Jakarta Sans', sans-serif;
    }

    body { font-family: var(--f-body); background: var(--bg-light); color: var(--teal-deep); overflow-x: hidden; line-height: 1.6; }
    h1, h2, h3, h4 { font-family: var(--f-display); font-weight: 400; line-height: 1.2; }
    a { text-decoration: none; }
    img { display: block; max-width: 100%; }

    body::before {
      content: ''; position: fixed; inset: 0; pointer-events: none; z-index: 1000; opacity: 0.18;
      background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
      will-change: auto;
      transform: translateZ(0);
    }

    .container { max-width: 1152px; margin: 0 auto; padding: 0 24px; }
    .blob { position: absolute; border-radius: 50%; filter: blur(90px); pointer-events: none; }
    .dots { background-image: radial-gradient(circle, rgba(42,157,157,0.18) 1.5px, transparent 1.5px); background-size: 18px 18px; }
    .wave { display: block; width: 100%; overflow: hidden; line-height: 0; }
    .wave svg { display: block; width: 100%; }

    /* LABEL */
    .label {
      display: inline-flex; align-items: center; gap: 10px;
      font-family: var(--f-body); font-size: 0.82rem; font-weight: 600;
      letter-spacing: 0.14em; text-transform: uppercase;
      color: var(--teal-main); margin-bottom: 14px;
    }
    .label::before { content: ''; display: block; width: 28px; height: 2px; background: var(--teal-main); border-radius: 2px; }
    .label-light { color: var(--teal-light); }
    .label-light::before { background: var(--teal-light); }

    /* HEADINGS */
    .sec-h { font-family: var(--f-display); color: var(--teal-deep); font-size: clamp(2rem, 4vw, 3rem); margin-bottom: 14px; }
    .sec-sub { color: #2a6b6b; font-size: 0.97rem; max-width: 520px; margin: 0 auto; line-height: 1.75; }
    .sec-intro { margin-bottom: 60px; text-align: center; }

    /* BUTTONS */
    .btn {
      display: inline-flex; align-items: center; gap: 8px;
      padding: 14px 30px; border-radius: 100px; border: none; cursor: pointer;
      font-family: var(--f-body); font-weight: 600; font-size: 1.2rem;
      transition: background .25s, transform .25s, box-shadow .25s;
    }
    .btn-p { background: var(--teal-main); color: white; }
    .btn-p:hover { background: var(--teal-dark); transform: translateY(-2px); box-shadow: 0 8px 28px rgba(42,157,157,.32); }
    .btn-o { background: transparent; border: 2px solid var(--teal-main); color: var(--teal-main); }
    .btn-o:hover { background: var(--teal-main); color: white; transform: translateY(-2px); }
    .btn-wa { background: #25D366; color: white; padding: 18px 40px; font-size: 1.05rem; font-weight: 700; }
    .btn-wa:hover { transform: translateY(-3px); box-shadow: 0 12px 36px rgba(37,211,102,.4); }

    /* TAGS */
    .tag { display: inline-block; background: var(--bg-mid); color: var(--teal-dark); font-size: 0.82rem; font-weight: 600; padding: 7px 16px; border-radius: 100px; }

    /* ── NAVBAR ── */
    #nav { position: fixed; top: 0; left: 0; right: 0; z-index: 50; background: transparent; transition: background .35s, box-shadow .35s; }
    #nav.scrolled { background: rgba(240,250,250,.96); backdrop-filter: blur(14px); box-shadow: 0 2px 24px rgba(42,157,157,.1); }
    .nav-in { max-width: 1152px; margin: 0 auto; padding: 16px 24px; display: flex; align-items: center; justify-content: space-between; }
    .nav-logo { font-family: var(--f-display); color: var(--teal-deep); font-size: 1.15rem; letter-spacing: .02em; transition: color .2s; }
    .nav-logo:hover { color: var(--teal-main); }
    .nav-links { display: flex; align-items: center; gap: 28px; list-style: none; }
    .nav-links a {
      font-size: 1rem; font-weight: 600; color: var(--teal-dark); opacity: .85;
      transition: color .2s, opacity .2s;
      position: relative; padding-bottom: 3px;
    }
    .nav-links a::after {
      content: ''; position: absolute; left: 0; bottom: 0;
      width: 100%; height: 2px;
      background: var(--teal-main);
      transform: scaleY(0);
      transform-origin: bottom center;
      transition: transform .25s ease;
      border-radius: 2px;
    }
    .nav-links a:hover { color: var(--teal-main); opacity: 1; }
    .nav-links a:hover::after { transform: scaleY(1); }

    /* ── HERO ── */
    #hero { position: relative; overflow: hidden; background: radial-gradient(ellipse at 72% 38%, #C2E8E8 0%, #D8F2F2 30%, #EDF8F8 60%, #F0FAFA 100%); min-height: auto; padding-top: 88px; display: flex; align-items: center; }
    .hero-in { max-width: 1152px; margin: 0 auto; padding: 40px 24px 90px; display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
    .hero-h1 { font-family: var(--f-display); font-size: clamp(2.4rem,5vw,3.6rem); color: var(--teal-deep); line-height: 1.15; margin-bottom: 24px; }
    .hero-h1 span { color: var(--teal-main); }
    .hero-p { color: var(--teal-dark); font-size: 1.05rem; line-height: 1.75; max-width: 440px; margin-bottom: 36px; }
    .hero-ctas { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 40px; }
    .hero-trust { display: flex; flex-wrap: wrap; gap: 20px; }
    .trust-item-sm { display: flex; align-items: center; gap: 8px; font-size: .85rem; color: var(--teal-dark); font-weight: 500; opacity: .8; }
    .trust-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--teal-main); flex-shrink: 0; }
    .hero-photo-wrap { position: relative; }
    .hero-photo { position: relative; z-index: 1; border-radius: 28px; overflow: hidden; height: 560px; background: linear-gradient(145deg,#B8E8E8 0%,#7DD4D4 60%,#5BBFBF 100%); }
    .photo-inner { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 32px; }
    .photo-avatar { width: 88px; height: 88px; border-radius: 50%; background: rgba(255,255,255,.25); display: flex; align-items: center; justify-content: center; margin-bottom: 16px; }
    .photo-lbl { font-family: var(--f-display); color: white; font-size: 1.1rem; margin-bottom: 6px; }
    .photo-sub { color: rgba(255,255,255,.6); font-size: .8rem; }
    .hero-blob-br { position: absolute; bottom: -20px; right: -20px; width: 140px; height: 140px; border-radius: 50%; background: var(--teal-main); opacity: .12; filter: blur(20px); }
    .hero-blob-tl { position: absolute; top: -16px; left: -16px; width: 100px; height: 100px; border-radius: 50%; background: var(--teal-light); opacity: .15; filter: blur(16px); }
    .hero-wave { position: absolute; bottom: 0; left: 0; right: 0; z-index: 2; }


    /* ── HEADLINE REVEAL ── */
    /* fade-in up uniforme per h1 e tutti gli elementi hero */
    .hero-h1   { opacity: 0; animation: fade-up 0.7s cubic-bezier(0.16,1,0.3,1) 0.1s forwards; }
    .hero-p    { opacity: 0; animation: fade-up 0.7s cubic-bezier(0.16,1,0.3,1) 0.3s forwards; }
    .hero-ctas { opacity: 0; animation: fade-up 0.7s cubic-bezier(0.16,1,0.3,1) 0.5s forwards; }
    .hero-trust{ opacity: 0; animation: fade-up 0.7s cubic-bezier(0.16,1,0.3,1) 0.65s forwards; }
    @keyframes fade-up {
      from { opacity: 0; transform: translateY(20px); }
      to   { opacity: 1; transform: translateY(0); }
    }
    /* la foto sale da destra */
    .hero-photo-wrap {
      opacity: 0;
      animation: slide-left 0.9s cubic-bezier(0.16,1,0.3,1) 0.4s forwards;
    }
    @keyframes slide-left {
      from { opacity: 0; transform: translateX(40px); }
      to   { opacity: 1; transform: translateX(0); }
    }

    /* ── TRUST BAR ── */
    #tbar { background: var(--teal-dark); }
    .tbar-in { max-width: 1000px; margin: 0 auto; padding: 28px 24px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; }
    .tbar-item { text-align: center; flex: 1; min-width: 80px; }
    .tbar-num { font-family: var(--f-display); font-size: 2rem; color: white; display: block; }
    .tbar-desc { font-size: .78rem; font-weight: 500; color: #cdf0f0; margin-top: 4px; display: block; }
    .tbar-div { width: 1px; height: 44px; background: rgba(255,255,255,.2); flex-shrink: 0; }

    /* ── CHI SONO ── */
    #chi-sono { background: var(--bg-light); padding: 96px 0; position: relative; overflow: hidden; }
    .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
    .cs-photo { border-radius: 28px; overflow: hidden; height: 500px; background: linear-gradient(145deg,#B8E8E8 0%,#7DD4D4 100%); position: relative; }
    .cs-border { position: absolute; bottom: -16px; right: -16px; width: 100%; height: 100%; border: 2px solid rgba(42,157,157,.2); border-radius: 28px; z-index: -1; }
    .cs-dots { position: absolute; top: -24px; left: -24px; width: 120px; height: 120px; border-radius: 16px; z-index: -1; opacity: .6; }
    .cs-body { color: var(--teal-dark); line-height: 1.8; font-size: .97rem; }
    .cs-body p + p { margin-top: 16px; }
    .tags-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 32px; }

    /* ── SERVIZI ── */
    #servizi { background: var(--bg-mid); padding: 80px 0; position: relative; overflow: hidden; }
    .area { margin-bottom: 48px; }
    .area-h { font-family: var(--f-display); color: var(--teal-main); font-size: 1.4rem; margin-bottom: 20px; display: flex; align-items: center; gap: 12px; }
    .area-line { width: 32px; height: 2px; background: var(--teal-main); border-radius: 2px; flex-shrink: 0; }
    .grid3 { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; }
    .sc { background: white; border: 1.5px solid rgba(42,157,157,.12); border-radius: 18px; padding: 28px 24px; transition: transform .3s, box-shadow .3s, border-color .3s; }
    .sc:hover { transform: translateY(-5px); box-shadow: 0 16px 48px rgba(42,157,157,.12); border-color: rgba(42,157,157,.35); }
    .sc-icon { width: 48px; height: 48px; border-radius: 12px; background: linear-gradient(135deg,#E0F4F4,#B8E8E8); display: flex; align-items: center; justify-content: center; font-size: 1.4rem; margin-bottom: 16px; }
    .sc h4 { font-family: var(--f-display); color: var(--teal-deep); font-size: 1.3rem; margin-bottom: 8px; }
    .sc p { color: var(--teal-dark); font-size: .87rem; line-height: 1.7; opacity: .85; }

    /* ── PROBLEMATICHE ── */
    #prob { background: var(--bg-light); padding: 80px 0; position: relative; overflow: hidden; }
    /* .pc-wrap gestisce reveal (opacity + translateY), .pc gestisce hover — due layer separati */
    .pc-wrap { display: block; }
    .pc { border-radius: 20px; overflow: hidden; background: white; border: 1.5px solid rgba(42,157,157,.1); transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s, border-color .35s; }
    .pc:hover { transform: translateY(-12px); box-shadow: 0 28px 60px rgba(42,157,157,.18); border-color: rgba(42,157,157,.3); }
    .pc-thumb { height: 200px; overflow: hidden; position: relative; }
    .pc-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s cubic-bezier(.16,1,.3,1); }
    .pc:hover .pc-thumb img { transform: scale(1.05); }
    .pc-body { padding: 24px; }
    .pc-body h3 { font-family: var(--f-display); color: var(--teal-deep); font-size: 1.3rem; margin-bottom: 8px; line-height: 1.35; }
    .pc-body p { color: var(--teal-dark); font-size: .87rem; line-height: 1.7; opacity: .85; }

    /* ── NUMERI ── */
    #numeri { background: var(--teal-dark); padding: 80px 0; position: relative; overflow: hidden; }
    .ctr-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 32px; text-align: center; }
    .ctr-n { font-family: var(--f-display); font-size: clamp(2.6rem,5vw,4rem); color: white; display: block; line-height: 1; }
    .ctr-plus { font-family: var(--f-display); color: white; font-size: 1.5rem; }
    .ctr-desc { color: rgba(255,255,255,.5); font-size: .82rem; font-weight: 500; margin-top: 8px; display: block; }

    /* ── RECENSIONI ── */
    #rec { background: var(--bg-light); padding: 80px 0; }
    .rev-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; align-items: start; }
    .rv { background: white; border-radius: 20px; padding: 28px; border: 1.5px solid rgba(42,157,157,.12); position: relative; transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s, border-color .35s; }
    .rv:hover { transform: translateY(-5px); border-color: transparent; box-shadow: 0 20px 52px rgba(42,157,157,.14), 0 0 0 1.5px var(--teal-main), 0 0 18px 2px rgba(91,191,191,.45), 0 0 40px 4px rgba(42,157,157,.25); }
    .rv-stars { color: var(--accent); font-size: .9rem; margin-bottom: 14px; }
    .rv-text { color: var(--teal-dark); font-size: .9rem; line-height: 1.75; margin-bottom: 20px; opacity: .85; font-style: italic; }
    .rv-auth { display: flex; align-items: center; gap: 12px; }
    .rv-av { width: 40px; height: 40px; border-radius: 50%; background: var(--bg-mid); color: var(--teal-main); display: flex; align-items: center; justify-content: center; font-family: var(--f-display); font-size: 1rem; flex-shrink: 0; }
    .rv-name { font-weight: 600; color: var(--teal-deep); font-size: .88rem; }
    .rv-where { color: var(--teal-dark); font-size: .75rem; opacity: .5; margin-top: 2px; }
    .rv-col { display: flex; flex-direction: column; gap: 24px; }
    .gbadge { display: inline-flex; align-items: center; gap: 12px; background: white; border: 1.5px solid rgba(42,157,157,.15); border-radius: 100px; padding: 12px 24px; box-shadow: 0 4px 16px rgba(42,157,157,.08); margin-top: 40px; transition: box-shadow .2s, transform .2s; }
    .gbadge:hover { transform: translateY(-2px); box-shadow: 0 8px 28px rgba(42,157,157,.16); }

    /* ── GALLERIA ── */
    #gall { background: var(--bg-mid); padding: 64px 0; }
    .gal-grid { display: grid; grid-template-columns: repeat(3,1fr); grid-template-rows: 240px 200px; gap: 12px; }
    .g1{grid-column:1;grid-row:1;} .g2{grid-column:2/4;grid-row:1;} .g3{grid-column:1/3;grid-row:2;} .g4{grid-column:3;grid-row:2;}
    .gi { border-radius: 16px; overflow: hidden; background: linear-gradient(135deg,#B8E8E8,#7DD4D4); }
    .gi img { width:100%;height:100%;object-fit:cover;transition:transform .5s; }
    .gi:hover img { transform: scale(1.04); }
    .gph { width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--f-body);font-weight:600;color:var(--teal-dark);font-size:.8rem;letter-spacing:.04em;text-align:center;padding:16px;opacity:.65; }

    /* ── FAQ ── */
    #faq { background: var(--bg-light); padding: 80px 0; }
    .faq-wrap { max-width: 720px; margin: 0 auto; }
    .faq-item { border-bottom: 1.5px solid rgba(42,157,157,.15); }
    .faq-q { width:100%;display:flex;justify-content:space-between;align-items:center;padding:20px 0;text-align:left;background:none;border:none;cursor:pointer;font-family:var(--f-body);font-size:1rem;font-weight:600;color:var(--teal-deep);gap:16px;transition:color .2s; }
    .faq-q:hover { color: var(--teal-main); }
    .faq-ic { flex-shrink:0;width:26px;height:26px;border:2px solid var(--teal-main);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .3s;color:var(--teal-main);font-size:.9rem; }
    .faq-item.open .faq-ic { background:var(--teal-main);color:white;transform:rotate(45deg); }
    .faq-a { max-height:0;overflow:hidden;transition:max-height .4s ease,padding .3s;font-size:.95rem;color:var(--teal-dark);line-height:1.75;opacity:.85; }
    .faq-item.open .faq-a { max-height:400px;padding-bottom:20px; }

    /* ── CONTATTI ── */
    #cont { background: var(--teal-deep); padding: 80px 0; position: relative; overflow: hidden; }
    .cont-h { font-family: var(--f-display); color: white; font-size: clamp(2rem,4vw,3rem); margin-bottom: 12px; }
    .cont-sub { color: #7ab8b8; font-size: .9rem; }
    .cont-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; margin-top: 56px; }
    .sede { background:rgba(255,255,255,.06);border:1.5px solid rgba(91,191,191,.2);border-radius:24px;padding:36px;backdrop-filter:blur(8px); }
    .sede-n { font-family:var(--f-display);color:white;font-size:1.6rem;margin-bottom:24px; }
    .sede-rows { display:flex;flex-direction:column;gap:16px; }
    .sede-row { display:flex;align-items:flex-start;gap:12px; }
    .sede-ic { color:var(--teal-light);flex-shrink:0;margin-top:2px; }
    .sede-tm { color:white;font-weight:600;font-size:.95rem; }
    .sede-ts { color:rgba(255,255,255,.45);font-size:.82rem; }
    .sede-th { color:rgba(255,255,255,.55);font-size:.87rem;line-height:1.5; }
    .sede-link { display:inline-flex;align-items:center;gap:8px;border:1.5px solid rgba(91,191,191,.4);color:var(--teal-light);padding:11px 24px;border-radius:100px;font-family:var(--f-body);font-weight:600;font-size:.88rem;margin-top:28px;transition:background .2s; }
    .sede-link:hover { background:rgba(91,191,191,.15); }
    .wa-block { text-align:center;margin-top:56px; }
    .wa-note { color:#FFFFFF;font-size:.85rem;margin-bottom:16px; }

    /* ── FORM CONTATTI ── */
    .form-block { margin-top: 56px; }
    .form-card { background: rgba(255,255,255,.06); border: 1.5px solid rgba(91,191,191,.2); border-radius: 24px; padding: 40px; backdrop-filter: blur(8px); }
    .form-title { font-family: var(--f-display); color: white; font-size: 1.5rem; margin-bottom: 8px; }
    .form-sub { color: rgba(255,255,255,.45); font-size: .88rem; margin-bottom: 32px; }
    .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
    .form-group { display: flex; flex-direction: column; gap: 6px; }
    .form-group label { font-size: .78rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--teal-light); }
    .form-group input, .form-group select, .form-group textarea {
      background: rgba(255,255,255,.08); border: 1.5px solid rgba(91,191,191,.25);
      border-radius: 12px; padding: 13px 16px;
      font-family: var(--f-body); font-size: .92rem; color: white;
      transition: border-color .2s, background .2s; outline: none; width: 100%;
    }
    .form-group input::placeholder, .form-group textarea::placeholder { color: rgba(255,255,255,0.55); }
    .form-group input:focus, .form-group select:focus, .form-group textarea:focus { border-color: var(--teal-light); background: rgba(255,255,255,.12); }
    .form-group select { cursor: pointer; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235BBFBF' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 40px; }
    .form-group select option { background: #0D4D4D; color: white; }
    .form-group textarea { resize: vertical; min-height: 110px; }
    .form-full { grid-column: 1 / -1; }
    .form-privacy { font-size: .78rem; color: #7ab8b8; margin-bottom: 24px; line-height: 1.6; }
    .form-privacy a { color: var(--teal-light); }
    .btn-submit { width: 100%; justify-content: center; background: var(--teal-main); color: white; border: none; padding: 16px; font-size: 1rem; font-weight: 700; border-radius: 12px; cursor: pointer; transition: background .25s, transform .25s; font-family: var(--f-body); }
    .btn-submit:hover { background: var(--teal-dark); transform: translateY(-2px); }
    .form-success { display: none; text-align: center; padding: 32px; }
    .form-success-icon { font-size: 3rem; margin-bottom: 12px; }
    .form-success h3 { font-family: var(--f-display); color: white; font-size: 1.4rem; margin-bottom: 8px; }
    .form-success p { color: rgba(255,255,255,.5); font-size: .9rem; }
    @media(max-width:600px){ .form-grid { grid-template-columns: 1fr; } }

    /* ── BORDER BEAM ── */
    .border-beam-wrap {
      position: relative;
      border-radius: 24px;
    }
    /* variante per hero photo — border-radius più grande */
    .border-beam-wrap.beam-hero { border-radius: 28px; }
    .border-beam-wrap.beam-hero::before,
    .border-beam-wrap.beam-hero::after { border-radius: 29.5px; }
    .border-beam-wrap::before {
      content: '';
      position: absolute;
      inset: -1.5px;
      border-radius: 25px;
      padding: 1.5px;
      background: conic-gradient(
        from var(--beam-angle, 0deg),
        transparent 0deg,
        transparent 60deg,
        rgba(91,191,191,0.9) 120deg,
        white 180deg,
        rgba(91,191,191,0.9) 240deg,
        transparent 300deg,
        transparent 360deg
      );
      -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
      mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
      -webkit-mask-composite: xor;
      mask-composite: exclude;
      animation: beam-spin 4s linear infinite;
      pointer-events: none;
    }
    /* secondo beam sfasato per effetto doppio */
    .border-beam-wrap::after {
      content: '';
      position: absolute;
      inset: -1.5px;
      border-radius: 25px;
      padding: 1.5px;
      background: conic-gradient(
        from var(--beam-angle-2, 180deg),
        transparent 0deg,
        transparent 60deg,
        rgba(42,157,157,0.5) 120deg,
        rgba(255,255,255,0.4) 180deg,
        rgba(42,157,157,0.5) 240deg,
        transparent 300deg,
        transparent 360deg
      );
      -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
      mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
      -webkit-mask-composite: xor;
      mask-composite: exclude;
      animation: beam-spin 4s linear infinite;
      animation-delay: -2s;
      pointer-events: none;
    }
    @property --beam-angle {
      syntax: '<angle>';
      initial-value: 0deg;
      inherits: false;
    }
    @keyframes beam-spin {
      from { --beam-angle: 0deg; }
      to   { --beam-angle: 360deg; }
    }

    /* Rispetta preferenze di riduzione del movimento */
    @media (prefers-reduced-motion: reduce) {
      .blob-morph { animation: none; }
      .border-beam-wrap::before,
      .border-beam-wrap::after { animation: none; }
      .hero-h1, .hero-p, .hero-ctas, .hero-trust, .hero-photo-wrap { animation: none; opacity: 1; transform: none; }
    }

    /* ── FOOTER ── */
    footer { background: var(--teal-footer); padding: 48px 0; }
    .foot-in { max-width:1152px;margin:0 auto;padding:0 24px; }
    .foot-top { display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:32px;margin-bottom:40px; }
    .foot-logo { font-family:var(--f-display);color:white;font-size:1.1rem;margin-bottom:6px; }
    .foot-tag { color:#7ab8b8;font-size:.82rem; }
    .foot-links { display:flex;flex-direction:column;gap:8px; }
    .foot-links a { color:#7ab8b8;font-size:.85rem;transition:color .2s; }
    .foot-links a:hover { color:rgba(255,255,255,.7); }
    .foot-data { color:#7ab8b8;font-size:.82rem;line-height:1.9; }
    .foot-bot { border-top:1px solid rgba(255,255,255,.06);padding-top:24px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px; }
    .foot-copy { color:#5a8080;font-size:.75rem; }
    .foot-leg { display:flex;gap:24px; }
    .foot-leg a { color:#5a8080;font-size:.75rem;transition:color .2s; }
    .foot-leg a:hover { color:rgba(255,255,255,.5); }

    /* ── WA FLOAT ── */
    .wa-float { position:fixed;bottom:24px;right:24px;z-index:999;background:#25D366;color:white;border-radius:50%;width:58px;height:58px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(37,211,102,.4);transition:transform .25s,box-shadow .25s; }
    .wa-float:hover { transform:scale(1.1);box-shadow:0 8px 32px rgba(37,211,102,.5); }

    /* ── REVEAL ── */
    .reveal { opacity:0;transform:translateY(28px);transition:opacity .7s ease,transform .7s ease; }
    .reveal.visible { opacity:1;transform:translateY(0); }
    .d1{transition-delay:.1s;} .d2{transition-delay:.2s;} .d3{transition-delay:.3s;}

    /* ── RESPONSIVE ── */
    @media(max-width:900px){
      .hero-in,.grid2,.cont-grid{grid-template-columns:1fr;gap:40px;}
      .hero-photo{height:360px;}
      .grid3,.rev-grid{grid-template-columns:1fr 1fr;}
      .ctr-grid{grid-template-columns:1fr 1fr;}
      .gal-grid{grid-template-columns:1fr 1fr;grid-template-rows:160px 160px;}
      .g1{grid-column:1;grid-row:1;}.g2{grid-column:2;grid-row:1;}.g3{grid-column:1/3;grid-row:2;}.g4{display:none;}
      .tbar-div{display:none;}
      .nav-links{display:none;}
      .foot-top{flex-direction:column;}
    }
    @media(max-width:600px){
      .grid3,.rev-grid{grid-template-columns:1fr;}
      .hero-h1{font-size:2.1rem;}
    }