/* ===============================
   0. Font
================================ */

@font-face{
  font-family: "Bitter";
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: url("./assets/fonts/bitter-latin.woff2") format("woff2");
}

@font-face{
  font-family: "Work Sans";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("./assets/fonts/work-sans-latin.woff2") format("woff2");
}

/* Font di ripiego (meno CLS) */
@font-face{
  font-family: "Work Sans Fallback";
  src: local("Arial");
  size-adjust: 113.1%;
  ascent-override: 82.2%;
  descent-override: 21.5%;
  line-gap-override: 0%;
}

@font-face{
  font-family: "Bitter Fallback";
  src: local("Georgia");
  size-adjust: 102.8%;
  ascent-override: 90.9%;
  descent-override: 25.8%;
  line-gap-override: 0%;
}

/* ===============================
   1. Variabili e base
================================ */

:root{
  --bg:#0C0F14;
  --ink:#F1ECE0;
  --muted: rgba(241,236,224,.64);
  --line: rgba(241,236,224,.12);
  --surface: rgba(241,236,224,.045);
  --surface-hover: rgba(241,236,224,.07);
  --accent:#1a6ca7;
  --accent-bright:#139cbf;
  --accent-ink:#F1ECE0;
  --accent-line: rgba(51,214,255,.32);
  --accent-wash: rgba(51,214,255,.12);
  --accent-gradient: linear-gradient(180deg, var(--accent-wash), rgba(241,236,224,.02));
  --success:#8FAE5D;
  --error:#D2543A;
  --radius:12px;
  --radius-sm:9px;
  --font-display:"Bitter", "Bitter Fallback", Georgia, "Times New Roman", serif;
  --font-body:"Work Sans", "Work Sans Fallback", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
}

/* ===============================
   2. Layout generale
================================ */

html, body{
  overflow-x: hidden;
}

html{
  overflow-y: scroll;
  scroll-behavior: auto !important;
  scrollbar-gutter: stable;
}

*{
  box-sizing:border-box;
  -webkit-tap-highlight-color: transparent;
  overflow-anchor: none;
}

:focus:not(:focus-visible){
  outline: none;
}

body::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: radial-gradient(1000px 680px at 82% -10%, rgba(196,137,90,.09), transparent 60%),
  var(--bg);
  z-index: -1;
  pointer-events: none;
  transform: translateZ(0);
}

body {
  margin: 0;
  background-color: var(--bg);
  color: var(--ink);
  font-family: var(--font-body);
  overflow-x: hidden;
  min-height: 100vh;
  scrollbar-width: none;
}

body::-webkit-scrollbar{ width: 0; height: 0; }

h1, h2, h3{
  font-family: var(--font-display);
  letter-spacing: -0.01em;
}

.navLinks a{
  font-family: var(--font-body);
  letter-spacing: 0;
}

a, p, li, button, input, textarea, label {
  font-family: inherit;
}

h1{
  font-size: clamp(34px, 4.6vw, 50px);
  line-height: 1.08;
  margin: 10px 0;
  font-weight: 700;
}

h2{
  font-size: clamp(25px, 3.2vw, 34px);
  margin: 0 0 8px;
  font-weight: 700;
}

h3{
  margin: 0 0 10px;
  font-weight: 600;
}

a, .expressCta{color:inherit;}
.container{
  width:min(1100px, 92%);
  margin:0 auto;
}
.section{padding:40px 0;}
main section[id]{ scroll-margin-top: 100px; }
.section.alt{ border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.section.project{ border-top:1px solid var(--line);}

.sectionHead{margin-bottom:22px;}

.lead{font-size: clamp(16px, 2.1vw, 18px); color:var(--muted); max-width: 56ch; line-height: 1.6;}
.muted{color:var(--muted); margin: 10px 0;}
.tiny{font-size:13px;}

/* ===============================
   3. Navbar
================================ */

.nav.nav--hidden{
  transform: translateY(-120%);
}

.nav{
    display: flex;
    align-items: center;
    justify-content: center;
    padding:0 20px 25px;
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 999;
    transform: translateY(0);
    transition: transform .30s ease-in-out;
}

.nav-wrap{
  width: min(1100px, 92%);
  background: rgba(12, 15, 20, .78);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  padding: 0 32px;
  border: 1px solid var(--line);
  border-top: 0;
  border-bottom-left-radius: 18px;
  border-bottom-right-radius: 18px;
  box-shadow: 0 10px 30px rgba(0,0,0,.28);
  max-height: 56px;
}
.nav-row{
  width: 100%;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.navLinks{
    display: flex;
    gap:22px;
    align-items: center;
}
.navLinks a{
  color: var(--muted);
  text-decoration: none;
  transition: color .2s ease;
  font-style: normal;
  padding: 4px 2px;
  height: auto;
  display: flex;
  align-items: center;
  font-weight: 600;
  font-size: 15px;
  position: relative;
  white-space: nowrap;
}

.navLinks a::after{
  content: "";
  position: absolute;
  left: 50%;
  right: 50%;
  bottom: -2px;
  height: 1px;
  background: var(--accent-bright);
  transition: left .25s ease, right .25s ease;
}

.navLinks a:hover{
  color: var(--ink);
}

.navLinks a:hover::after,
.navLinks a[aria-current="page"]::after{
  left: 2px;
  right: 2px;
}

.navLinks a[aria-current="page"],
.mobile-link[aria-current="page"]{
  color: var(--ink);
}

/* CTA piena nel menu: stesso aspetto di .btn, senza la sottolineatura dei link */
.navLinks a.navCta{
  padding: 8px 14px;
  color: var(--accent-ink);
  font-size: 14px;
  white-space: nowrap;
}
.navLinks a.navCta::after{ content: none; }
.navLinks a.navCta:hover{ color: var(--accent-ink); }

.mobile-menu a.mobileCta{
  margin-top: 4px;
  text-align: center;
  background: var(--accent);
  border-bottom-color: var(--accent);
  color: var(--accent-ink);
}

.bar1, .bar2, .bar3 {
  width: 32px;
  height: 3px;
  background-color: var(--ink);
  margin: 6px 0;
  transition: 0.4s;
  border-radius: 2px;
}

.change .bar1 {
  transform: translate(0, 9px) rotate(-45deg);
}

.change .bar2 {opacity: 0;}

.change .bar3 {
  transform: translate(0, -9px) rotate(45deg);
}

/* === dropdown sotto la nav === */
.mobile-menu{
  position: static;
  width: 100%;
  display: flex;
  justify-content: center;

  max-height: 0;
  opacity: 0;
  overflow: hidden;
  pointer-events: none;

  transition: max-height .30s ease, opacity .18s ease, transform .18s ease;
}

/* pannello del dropdown */
.mobile-menu__panel{
  width: 100%;
  padding: 10px 0 14px;
  border-radius: 0 0 16px 16px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
}

/* stato aperto */
.menu-open .mobile-menu{
  max-height: 560px;
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.menu-open .mobile-menu__panel{
  opacity: 1;
}

.menu-open .nav-wrap{
  max-height: 640px;
  padding-bottom: 10px;
}

/* link nel dropdown */
.mobile-menu a {
  text-decoration: none;
  padding: 12px 14px;
  border-radius: var(--radius-sm);
  color: var(--ink);
  font-weight: 600;
  background: var(--surface);
  border-bottom: 2px solid var(--accent-line);
}

.mobile-menu a:active{
  transform: scale(.98);
  -webkit-tap-highlight-color: transparent;
}

.nav-toggle{
    width: 44px;
    height: 44px;
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    background: var(--surface);
    display: none;
}

.brand-wrap{
    height: 50px;
    width: 150px;
    display: flex;
    align-items: center;
}

.brand-wrap img{
    max-height: 100%;
    max-width: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
    object-position: center;
}

.brandDesk{ display:block; }
.brandMobile{ display:none; }

.whatsappFloat{
  position: fixed;
  right: 20px;
  bottom: 20px;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--accent);
  color: var(--accent-ink);
  box-shadow: 0 10px 25px rgba(0,0,0,.4);
  z-index: 900;
  text-decoration: none;
  transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease, background .18s ease;
}

/* privacy dentro il modal */
.embedded .nav,
.embedded .whatsappFloat,
.embedded .siteNotice,
.embedded .footer{
  display: none !important;
}

.embedded .legal{
  padding-top: 24px;
}

.embedded::-webkit-scrollbar{
  display: none;
}

.whatsappFloat.hide{
  opacity: 0;
  pointer-events: none;
  transform: scale(.8);
}

.whatsappFloat:hover{
  transform: translateY(-2px) scale(1.04);
  filter: brightness(1.15);
  box-shadow: 0 14px 32px rgba(0,0,0,.4);
}

@media (max-width: 640px){
  .whatsappFloat{ right:14px; bottom:14px; width:50px; height:50px; }
}

.siteNotice{
  position: fixed;
  left: 20px;
  right: 20px;
  bottom: 20px;
  max-width: 480px;
  margin: 0 auto;
  background: #12151B;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 18px 20px;
  box-shadow: 0 20px 50px rgba(0,0,0,.45);
  z-index: 950;
  transform: translateY(140%);
  opacity: 0;
  transition: transform .3s ease, opacity .3s ease;
  pointer-events: none;
}

.siteNotice.show{
  transform: translateY(0);
  opacity: 1;
  pointer-events: auto;
}

/* Rifiuta e Accetta con lo stesso peso visivo */
.siteNotice__actions .btn{ flex: 1 1 0; }

.siteNotice p{
  margin: 0 0 14px;
  font-size: 13.5px;
  color: var(--muted);
  line-height: 1.5;
}

.siteNotice__actions{
  display: flex;
  gap: 10px;
}

.siteNotice__actions .btn{
  flex: 1;
}

@media (max-width: 640px){
  .siteNotice{ left:12px; right:12px; bottom: 80px; padding:16px; }
}

.no-transition, .no-transition *{
  transition: none !important;
}

/* ===============================
   4. Hero
================================ */

.badge{
  display:inline-flex;
  align-items: center;
  padding: 0;
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 500;
  color: var(--accent-bright);
  font-size:17px;
}

.badge-container{
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 16px;
}

.grid{display:grid; gap:16px;
    grid-template-columns: repeat(3,1fr);
    margin-top: 18px;}

.grid2{display:grid; gap:16px;
    margin-top: 18px;}

.btn{
  display:inline-flex; align-items:center; justify-content:center;
  padding:12px 18px;
  border-radius: var(--radius-sm);
  border:1px solid var(--accent);
  background: var(--accent);
  text-decoration:none;
  font-weight:600;
  color: var(--accent-ink);
  transition: transform .18s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease;
}

/* i <button class="btn"> hanno lo stesso testo dei link .btn */
button.btn{
  font-family: inherit;
  font-size: 1rem;
  line-height: inherit;
  cursor: pointer;
}

.btn.ghost,
.expressCta{
  background: transparent;
  border-color: var(--line);
  color: var(--ink);
}

.btn.small{padding:7px 8px; border-radius:8px; font-size:14px;}
.btn.small:hover{
    transform: translateY(-1px);
}
.btn:active{transform: scale(.98);}

.hero{padding:86px 0 56px;}

.heroGrid{
  display:grid;
  grid-template-columns: 1fr;
  gap:18px;
  align-items:stretch;
}

.hero .trustGrid{
  grid-template-columns: repeat(3, 1fr);
}

.heroCta {
  margin-top: 22px;
  display: flex;
  gap: 10px;
}

.heroCta .btn {
  min-height: 46px;
  padding-inline: 18px;
}

.heroCta a:hover{
    transform: translateY(-1px);
}

@media (max-width: 860px) {
  .hero {
    padding: 104px 0 42px;
  }

  .heroGrid {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .hero .trustGrid {
    grid-template-columns: 1fr;
    margin-right: 0;
  }

  .heroCta {
    flex-direction: column;
    gap: 10px;
  }

  .heroCta .btn {
    width: 100%;
  }
}

.trustList{list-style:none; padding:0; margin:14px 0 0; display:grid; gap:8px; color:var(--muted);}

.trustGrid{
  display:grid;
  margin: 20px 0;
  margin-right: 30px;
  gap:10px;
}

/* testo nascosto prima dello scroll, per l'animazione word-fade */
.word-fade {
  display: inline-block;
  opacity: 0;
  transform: translateY(6px);
  filter: blur(8px);
  transition: opacity 0.5s ease, transform 0.5s ease, filter 0.5s ease;
  transition-delay: var(--word-delay, 0ms);
  margin: 0 2px;
}

.word-fade.start-animation {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

/* testo dei paragrafi con animazione typewriter */
p.typewriter-text,
p.typewriter-text .word-fade,
p.typewriter-text strong {
    color: var(--muted) !important;
}

strong.typewriter-text,
h2.typewriter-text {
    color: var(--ink) !important;
}

/* evita che parole lunghe rompano il layout */
.typewriter-text {
    overflow-wrap: break-word;
    word-break: break-word;
}

.trust-item{
  padding:16px 0 0;
  border-top: 1px solid var(--line);
}

.trustIcon{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  margin-bottom: 10px;
  border: 1px solid var(--accent-line);
  border-radius: 8px;
  background: var(--accent-wash);
  color: var(--accent-bright);
}

.trustIcon svg{ width: 17px; height: 17px; }

/* solo il titolo diretto della card, non i grassetti dentro i paragrafi */
.trust-item > strong{
  display: block;
  font-weight:600;
  color:var(--ink);
  margin-bottom: 6px;
}

.hero .trust-item p {
  font-size: 13.5px;
  line-height: 1.45;
  margin: 0;
}

.hero .trust-item > strong {
  font-size: 14.5px;
  line-height: 1.25;
}

/* ===============================
   5. Componenti condivisi
================================ */

.projectCard,
.stepCard,
.packCard{
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: var(--radius);
  transition: transform .2s ease, border-color .2s ease, background .2s ease;
}

.stepCard:hover{
  transform: translateY(-2px);
  border-color: var(--accent-line);
  background: var(--surface-hover);
}

.Contactcard,
.FaqContainer{
  border: 1px solid var(--line);
  background: rgba(241,236,224,.028);
  border-radius: 8px;
}

.noteBox p{ max-width: 72ch; }

.noteBox{
  margin-top: 20px;
  border: 0;
  border-left: 2px solid var(--accent-line);
  background: none;
  border-radius: 0;
  padding-left: 18px;
}

/* ===============================
   6. Progetti
================================ */

.projectCard{
  cursor: pointer;
  position: relative;
  height: 100% !important;
}

.projectCard.featured{
  background: linear-gradient(180deg, var(--accent-wash), rgba(241, 236, 224, .02));
  box-shadow: 0 30px 70px rgba(0, 0, 0, .35);
  border: 1px solid var(--accent-bright);
}

.projectCard.featured:hover{
  transform: translateY(-12px);
  background: linear-gradient(180deg, var(--accent-wash), rgba(241, 236, 224, .02));
  box-shadow: 0 30px 70px rgba(0, 0, 0, .35);
  border: 1px solid var(--accent-bright);
}

.projectCard:hover{
  transform: translateY(-2px);
  border-color: var(--accent-line);
  background: var(--surface-hover);
}

.projectCard:focus-visible{
  outline: 2px solid var(--accent-bright);
  outline-offset: 4px;
  border-radius: var(--radius);
}

#progetti .container > .muted {
  max-width: 62ch;
  line-height: 1.65;
}

#projectsGrid {
  align-items: stretch;
}

.projectCard {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-height: 100%;
}

.projectWrap {
  display: flex;
  flex-direction: column;
  flex: 1;
  height: auto;
  min-height: 250px;
  padding: 18px;
}

.projectTop {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
}

.projectTop h3 {
  font-size: 21px;
  line-height: 1.1;
  margin: 0;
}

.projectWrap > .muted {
  margin: 0 0 20px;
  line-height: 1.6;
  font-size: 14.5px;
}

/* nel flusso, spinto in fondo alla card: non copre mai la descrizione */
.projectOpen{
  color:var(--ink);
  margin-top: auto;
  align-self: flex-start;
}

/* il link si estende su tutta la card: clic ovunque apre la demo */
.projectOpen::after{
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
}

.projectCard:hover .projectOpen{
  border-color: var(--accent-line);
}

/* niente transform/filter sul bottone (hover e pressione): farebbero da
   riferimento al ::after, che si ridurrebbe al solo bottone e il clic
   sulla card andrebbe perso */
.projectCard .projectOpen:hover,
.projectCard .projectOpen:active{
  transform: none;
  filter: none;
}

.imgThumb{
    height: 140px;
    width: 100%;
    object-fit: cover;
    object-position: center;
}
.pill{
  max-width: 100%;
  padding: 5px 10px;
  border: 1px solid var(--accent-line);
  border-radius: 999px;
  background: var(--accent-wash);
  color: var(--ink);
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1;
}

.projectPills{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.packagePill{
  color: var(--accent-bright);
  border-color: var(--accent-line);
  background: transparent;
}

.ghostPill{opacity:.8;}
.btn.small{margin-bottom:3px;}

.projectImg {
  height: 190px;
  background-size: cover;
  background-position: center;
  border-bottom: 1px solid var(--line);
  position: relative;
  filter: grayscale(55%) contrast(1.02);
  transition: filter .5s ease;
}

.projectImg picture,
.projectImg img{
  display: block;
  width: 100%;
  height: 100%;
}

.projectImg img{
  object-fit: cover;
  object-position: center;
}

/* immagine con il nome a sinistra: se viene tagliata, si taglia la parte destra */
.projectImg img.imgLeft{ object-position: left center; }

.projectCard:hover .projectImg{
  filter: grayscale(0%) contrast(1.04);
}

/* screenshot da smartphone sovrapposto all'immagine desktop */
.projectImg img.projectPhone{
  position: absolute;
  right: 14px;
  bottom: 12px;
  z-index: 1;
  width: auto;
  height: calc(100% - 24px);
  aspect-ratio: 390 / 844;
  object-fit: cover;
  object-position: top;
  border: 3px solid #1b1f26;
  border-radius: 12px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, .55);
}

.projectIncludes{
  margin: 0 0 20px;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--muted);
}

.projectIncludes strong{
  color: var(--ink);
  font-weight: 600;
}

.projectImg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 45%, rgba(12,15,20,.4));
  pointer-events: none;
}

/* ===============================
   7. Metodo
================================ */

#metodo .sectionHead .muted {
  max-width: 58ch;
  line-height: 1.65;
}

.stepsGrid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-top: 24px;
  counter-reset: step;
}

.stepCard {
  width: auto;
  height: auto;
  min-height: 210px;
  padding: 20px;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
  counter-increment: step;
}

.stepCard::before{
  content: counter(step, decimal-leading-zero);
  position: absolute;
  top: -10px;
  right: 5px;
  font-family: var(--font-display);
  font-size: 68px;
  font-weight: 700;
  line-height: 1;
  color: var(--accent-line);
  pointer-events: none;
  z-index: 0;
}

.stepCard h3,
.stepCard p {
  position: relative;
  z-index: 1;
}

.stepCard h3 {
  display: inline-block;
  font-size: 18px;
  line-height: 1.25;
  margin-bottom: 12px;
  max-width: 80%;
}

.stepCard h3::after{
  content: "";
  position: absolute;
  left: 50%;
  right: 50%;
  bottom: -2px;
  height: 1px;
  background: var(--accent-bright);
  transition: left .25s ease, right .25s ease;
}

.stepCard:hover h3::after{
  left: 2px;
  right: 2px;
}

.stepCard p {
  margin: 0;
  line-height: 1.58;
  font-size: 14.5px;
}

.infoBlock {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
}

.infoBlock h3 {
  font-size: 18px;
  margin-bottom: 10px;
}

.infoBlock .miniList {
  margin: 0;
  padding-left: 20px;
  display: grid;
  gap: 8px;
  line-height: 1.55;
}

/* ===============================
   8. Chi sono
================================ */

#chi-sono .container{
  display: flex;
  justify-content: center;
}

.aboutProfile{
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 18px 0 22px;
}

.aboutPhoto{
  width: 96px;
  height: 96px;
  min-width: 96px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center;
  border: 3px solid transparent;
  background: linear-gradient(var(--bg), var(--bg)) padding-box,
              linear-gradient(135deg, var(--accent), var(--accent-bright)) border-box;
}

.aboutName{
  display: block;
  font-family: var(--font-display);
  font-size: 18px;
  color: var(--ink);
}

.aboutRole{
  display: block;
  font-size: 13.5px;
  margin-top: 2px;
}

#chi-sono .trustGrid {
  display: grid;
  gap: 14px;
  margin: 22px 0 0;
}

#chi-sono .trust-item {
  padding: 20px;
  border: 1px solid var(--line);
  border-top: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
}

#chi-sono .trust-item:last-of-type{
  border-color: var(--accent-line);
  background: var(--accent-gradient);
}

#chi-sono .trust-item > strong {
  display: block;
  margin-bottom: 10px;
  font-size: 17px;
  line-height: 1.25;
  color: var(--ink);
}

/* grassetti nel testo: restano in riga, con lo stesso colore di prima */
#chi-sono .trust-item p strong {
  font-weight: 600;
  color: var(--ink);
}

#chi-sono .trust-item h2 {
  margin: 0 0 10px;
  font-family: var(--font-body);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: 0;
  color: var(--ink);
}

#chi-sono .trust-item p {
  margin: 0;
  line-height: 1.7;
  font-size: 15.5px;
}

#chi-sono p.typewriter-text strong {
  display: inline;
  margin: 0;
  font-size: inherit;
  line-height: inherit;
  color: var(--ink) !important;
  font-weight: 700;
}

@media (max-width: 640px) {
  #chi-sono .trust-item {
    padding: 18px;
  }

  #chi-sono .trust-item p {
    font-size: 15px;
  }
}

/* ===============================
   9. Contatti e FAQ
================================ */

.contact-main-wrapper {
  display: grid;
  gap: 24px;
}

.contactTitle {
  max-width: 760px;
}

.contactTitle strong {
  display: block;
  margin-top: 8px;
  font-family: var(--font-display);
  font-size: clamp(18px, 2.4vw, 24px);
  line-height: 1.3;
  color: var(--ink);
  font-weight: 600;
}

.contactTitle p {
  max-width: 62ch;
  line-height: 1.65;
}

.contactButton-wrap {
  display: flex;
  padding: 14px 0 0;
  gap: 18px;
  flex-wrap: wrap;
}

.offerNote{
  margin: 10px 0 0 0 !important;
  display: inline-flex;
  align-items: center;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid var(--accent-line);
  background: var(--accent-wash);
  color: var(--accent-bright);
  font-size: 13px;
  font-weight: 600;
}

.offertNote-wrap{
  display: flex;
  flex-direction: column;
  width: fit-content;
  gap: 10px;
}

.trustNote{
  margin: 0 0 8px 0 !important;
  padding: 8px 14px;
}

.trustNote-form{
  padding: 8px 14px; border: 1px solid var(--line); width: fit-content; border-radius: 999px; margin-top: 8px;
}

.quickWin {
  margin-top: 18px;
  padding: 14px 16px;
  border: 1px dashed var(--line);
  border-radius: var(--radius);
  background: rgba(241,236,224,.02);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}

.quickWin p {
  margin: 0;
  flex: 1 1 260px;
}

.formNote{
  margin-top: 12px;
}

.contactGrid{
  display:grid;
  grid-template-columns: 1.2fr 1.2fr;
  gap:18px;
  align-items:stretch;
}
.contactButtons{display:flex; gap:10px; flex-wrap:wrap; margin:14px 0; row-gap: 12px;}
.Contactcard form {
  display: grid;
  gap: 10px;
}

.Contactcard label {
  margin-top: 4px;
}

.Contactcard input:not([type="checkbox"]),
.Contactcard textarea,
.customSelectBtn {
  min-height: 46px;
}

#message {
  min-height: 130px;
}

.miniList{color:var(--muted); margin:10px 0 0; padding-left:18px;}

label{
    display: block;
    margin: 10px 0 6px;
    color: var(--muted);
}

input, textarea{
    width: 100%;
    background-color: rgba(241,236,224,.03);
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
    padding: 11px 12px;
    color: var(--ink);
    outline: none;
    font-family: var(--font-body);
    font-weight: 400;
    font-style: normal;
}

.consentLabel{
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 14px 0 4px;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.5;
}

.consentLabel{
  perspective: 400px;
}

.consentLabel input[type="checkbox"]{
  appearance: none;
  -webkit-appearance: none;
  width: 20px;
  height: 20px !important;
  min-width: 20px;
  margin-top: 2px;
  padding: 0 4px;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: rgba(241,236,224,.03);
  position: relative;
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease;
  transform-style: preserve-3d;
}

.consentLabel input[type="checkbox"]:hover{
  border-color: var(--accent-line);
}

.consentLabel input[type="checkbox"]:checked{
  background: var(--accent);
  border-color: var(--accent);
}

.consentLabel input[type="checkbox"]:checked::after{
  content: "✓";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  line-height: 1;
  font-weight: 700;
  color: var(--accent-ink);
  animation: checkboxFlip360 .5s ease;
}

@keyframes checkboxFlip360{
  0%{ transform: scale(1); }
  50%{ transform: scale(1.3); }
  100%{ transform: scale(1); }

}



.consentLabel input[type="checkbox"]:focus-visible{
  outline: 2px solid var(--accent-bright);
  outline-offset: 2px;
}

.consentLabel a{
  color: var(--accent-bright);
  font-weight: 600;
}

/* ===== Custom Select ===== */
.customSelectBtn{
  width:100%;
  background: rgba(241,236,224,.03);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 11px 44px 11px 12px;
  color: var(--ink);
  text-align:left;
  cursor:pointer;
  font-family: var(--font-body);
  position: relative;
  transition: border-color .2s ease, box-shadow .2s ease, transform .18s ease;
}

.customSelectBtn:hover{
  transform: translateY(-1px);
}

.customSelectArrow{
  position:absolute;
  right:12px;
  top:50%;
  width:14px;
  height:14px;
  transform: translateY(-50%) rotate(90deg);
  transform-origin:center;
  transition: transform .22s ease, background-color .2s ease;
  background-color: var(--accent);
  mask: url("./assets/arrow-right.svg") center/14px 14px no-repeat;
  -webkit-mask: url("./assets/arrow-right.svg") center/14px 14px no-repeat;
}

.select-open .customSelectArrow,
.customSelectBtn:hover .customSelectArrow{
  background-color: var(--accent-bright);
}

.select-open .customSelectArrow{
  transform: translateY(-50%) rotate(-90deg);
}

.customSelectList{
  position:absolute;
  left:0;
  right:0;
  bottom: calc(100% + 8px);
  margin:0;
  padding:10px;
  list-style:none;

  background: #12151B;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: 0 18px 45px rgba(0,0,0,.55);

  opacity:0;
  transform: translateY(6px);
  pointer-events:none;
  transition: opacity .18s ease, transform .18s ease;
  z-index: 9999;
}

.select-open + .customSelectList{
  opacity:1;
  transform: translateY(0);
  pointer-events:auto;
}

.customSelectList .optionList{
  padding: 12px 12px;
  margin: 10px 0;
  border-radius: 10px;
  cursor:pointer;
  color: var(--ink);
  border: 1px solid var(--line);
  background: rgba(241,236,224,.02);
  transition: transform .12s ease, border-color .12s ease, color .12s ease;
}

.customSelectList .optionList:first-child{
  margin-bottom:0;
}

.customSelectList .optionList:last-child{
  margin-top:0;
}

.customSelectList .optionList:hover{
  background: rgba(241,236,224,.05);
  border-color: var(--accent-line);
  transform: translateY(-1px);
  color:var(--accent-bright);
}

.select-wrap{ position: relative; }

.altro{
  display:none !important;
}

textarea{
    min-height: 120px;
    resize: vertical;
}

.divider{
    height: 1px;
    background: var(--line);
    margin:16px 0;
}

.formMessage {
  margin: 4px 0 0;
  font-size: 14px;
  line-height: 1.45;
}
.formMessage.success{
    color: var(--success);
}

.formMessage.error{
    color: var(--error);
}

.hp{
    display: none;
}

.status {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    margin-top: 10px;
}

#sendBtn{
    text-decoration: none;
    cursor: pointer;
    color: var(--accent-ink);
    padding: 11px 14px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--accent);
    background: var(--accent);
    transition: transform .18s ease, background .18s ease, border-color .18s ease;
    font-family: var(--font-body);
    font-size: 1rem;
    font-weight: 600;
    font-style: normal;
    width: 100%;
    min-height: 46px;
}

#sendBtn:hover{
    transform: translateY(-1px);
    filter: brightness(1.15);
    border-color: var(--accent-bright);
}

#sendBtn:disabled{
    opacity: .5;
    cursor: not-allowed;
}

.spinner {
    position: absolute;
    left: 50%;
    top: 50%;
    margin: -9px 0 0 -9px;
    width: 18px;
    height: 18px;
    border: 3px solid rgba(24,16,9,.25);
    border-top-color: var(--accent-ink);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    display: none;
}

@keyframes spin {
    to { transform: rotate(360deg);}
}

.contact-grid-bottom {
  display: grid;
  grid-template-columns: minmax(0, .95fr) minmax(360px, 1.05fr);
  gap: 18px;
  align-items: start;
  width: 100%;
  margin-top: 20px;
}

.FAQ-wrap strong{
  margin-bottom: 15px;
}

.faqQ{
  display: block;
  width: 100%;
  text-align: left;
  background: transparent;
  border: none;
  color: var(--ink);
  font-family: var(--font-body);
  font-weight: 400;
  font-style: normal;
  cursor: pointer;
}

.Contactcard {
    width: 100%;
}

/* FAQ */
.faq{ display:grid; gap:14px; }

.faqItem {
  border-radius: var(--radius-sm);
  border: 1px solid var(--line);
  background: rgba(241,236,224,.024);
}

.faqQ {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 15px;
  font-weight: 600;
  font-size: 14.5px;
  line-height: 1.35;
}

.faqQ span:last-child{
  color: var(--accent);
  transition: transform .22s ease;
  flex-shrink: 0;
}

.faqItem.open .faqQ span:last-child{
  transform: rotate(180deg);
}

.faqA{
  max-height:0;
  overflow:hidden;
  transition: max-height 0.22s ease, padding 0.22s ease;
  padding: 0 14px;
}
.faqItem.open .faqA{
  max-height: 220px;
  padding: 0 14px 14px;
}

.faqItem.open{
  border-color: var(--accent-line);
}

.faqA-inner p {
  line-height: 1.6;
  font-size: 14.5px;
}

.FaqContainer,
.Contactcard {
  padding: 20px;
  height: 100%;
  width: 100%;
}

.FaqHead {
  margin-bottom: 16px;
}

.FaqHead h2 {
  font-size: 26px;
}

@media (max-width: 860px) {
  .contact-grid-bottom {
    grid-template-columns: 1fr;
  }

  .contactButton-wrap {
    flex-direction: column;
  }

  .contactButton-wrap .btn, .FaqContainer {
    width: 100%;
  }

}

/* ===============================
   10. Pacchetti
================================ */

#pacchetti .container > .muted {
  max-width: 62ch;
  line-height: 1.65;
}

.pacchettiNote{
  margin-top: 18px;
  max-width: 62ch;
  line-height: 1.55;
}

#packagesGrid {
  align-items: stretch;
}

.packCard {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 22px;
  min-height: 100%;
}

.packCard:hover{
  transform: translateY(-2px);
  border-color: var(--accent-line);
  background: var(--surface-hover);
}

.packCard h3 {
  font-size: 22px;
  margin-bottom: 0;
}

.price {
  margin: 0;
  font-family: var(--font-display);
  font-size: 32px;
  line-height: 1;
  font-weight: 700;
  color: var(--accent-bright);
}

.packCard > .muted {
  margin: 0;
  line-height: 1.55;
  font-size: 14.5px;
}

.canoneNote {
  margin: -6px 0 0;
  padding: 8px 10px;
  border-radius: 8px;
  background: rgba(241,236,224,.03);
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 12.5px;
  line-height: 1.5;
}

.packExample {
  margin: -6px 0 0;
  font-size: 13px;
  font-style: italic;
}

.packCard .list,
.expressOffer .list {
  display: grid;
  gap: 10px;
  padding: 0;
  margin: 4px 0 6px;
  list-style: none;
}

.packCard .list li,
.expressOffer .list li {
  position: relative;
  padding-left: 18px;
  color: rgba(241, 236, 224, .8);
  font-size: 14.5px;
  line-height: 1.45;
}

.packCard .list li::before,
.expressOffer .list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .65em;
  width: 5px;
  height: 5px;
  border-radius: 999px;
  background: var(--accent);
}

.packCard .btn {
  width: 100%;
  margin-top: auto;
  min-height: 44px;
}

.packCard.featured,
.packCard.featured:hover {
  border-color: var(--accent-bright);
  background: var(--accent-gradient);
  box-shadow: 0 30px 70px rgba(0,0,0,.35);
}

@media (min-width: 861px){
  .packCard.featured{ transform: translateY(-10px); }
  .projectCard.featured{transform: translateY(-10px);}
  .packCard.featured:hover{ transform: translateY(-12px); }
}

.packCard.featured::before {
  content: "Consigliato";
  position: absolute;
  top: 14px;
  right: 14px;
  padding: 6px 9px;
  border-radius: 999px;
  border: 1px solid var(--accent-line);
  background: var(--accent-wash);
  color: var(--accent-bright);
  font-size: 12px;
  font-weight: 700;
}

.expressOffer {
  margin-top: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 22px;
  min-height: 100%;
  border: 1px solid var(--accent-line);
  background: var(--accent-gradient);
  border-radius: var(--radius);
  justify-content: center;
}

.expressOffer__body {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.expressOffer__body h3 {
  font-size: 22px;
  margin-bottom: 0;
}

.expressOffer__badge-new {
  position: absolute;
  top: 14px;
  right: 14px;
  padding: 6px 9px;
  border-radius: 999px;
  border: 1px solid var(--accent-line);
  background: var(--bg);
  color: var(--accent-bright);
  font-size: 12px;
  font-weight: 700;
}

@media (min-width: 620px) {
  .expressOffer {
    flex-direction: row;
    align-items: flex-start;
    gap: 24px;
  }
}

/* ===============================
   11. Footer
================================ */

.footer{padding-bottom:20px;border-top:1px solid var(--line);}
.footerInner{display:grid;align-items:center;}

.footer-wrap{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  margin-top:20px;
}

.footer-wrap a,
.contactButtons-footer a{
  background: rgba(241,236,224,.025);
  color: var(--ink);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 10px 20px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--line);
  width: 160px;
  transition: transform .16s ease, border-color .16s ease, background .16s ease;
}

.footer-wrap a:hover,
.contactButtons-footer a:hover{
  transform: translateY(-2px);
  border-color: var(--accent-line);
  background: rgba(241,236,224,.05);
}

.brand-footer{
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 24px;
}

.brand-footer p{
  margin: 0;
}

.brandImg-footer{
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 20px 0;
}

.brandWrap-Footer{
  display: flex;
  justify-content: center;
}

.brandImg-footer img{
  max-width: 200px;
  height: auto;
}

.nav-footer{
  padding-bottom:20px;
}

.nav-footer a{
  display: flex;
  justify-content: center;
  text-decoration: none;
}

.contactButtons-footer{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 160px));
  justify-content: center;
  gap:16px 26px;
  margin: 20px 0;
}

.footer-wrap strong{
  justify-content: center;
  display: flex;
  font-family: var(--font-display);
}

.nav-toogle-footer{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  margin: 20px 0;
  justify-items: center
}

.container-toggle {
  display: none;
  cursor: pointer;
}

/* ===============================
   12. Animazioni / reveal
================================ */

@media (max-width: 860px){
  /* logo testuale anche da telefono: la sola "F" non si riconosceva */
  .brand-wrap{ width: 130px; height: 44px; flex: 0 1 auto; min-width: 0; }
  .nav-wrap{padding: 0 20px;}
}

@media (max-width: 860px){
  .navLinks{ display:none !important; }

  .nav-toggle{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    background: transparent;
    border:none;
  }

  .container-toggle{display: inline-block;}

}

.js .Reveal {
  opacity: 0;
  transform: translate3d(0, 10px, 0);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
  backface-visibility: hidden; /* evita ricalcoli durante lo scroll */
}

.js .Reveal.show {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.js .RevealChild {
  opacity: 0;
  transform: translateY(10px);
  transition: opacity .5s ease, transform .5s ease;
  transition-delay: var(--reveal-delay, 0ms);
}

.js .RevealChild.showChild {
  opacity: 1;
  transform: translateY(0);
}

.Reveal, .RevealChild{
  overflow-anchor: none;
}

/* NAV reveal in sequenza */
.js .navLinks a{
  opacity: 0;
  transform: translateY(-8px);
  transition: opacity .45s ease, transform .45s ease, color .2s ease;
  transition-delay: var(--reveal-delay, 0ms);
}

/* quando il JS aggiunge showChild al singolo link */
.js .navLinks a.showChild{
  opacity: 1;
  transform: translateY(0);
}

/* Overlay (sfondo scuro) */
.overlay{
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.6);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .2s ease, visibility .2s ease;
  z-index: 9998;
  backdrop-filter: blur(2px);
}

.overlay.show{
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

/* Modal wrapper */
.modal{
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .2s ease, visibility .2s ease;
  z-index: 9999;
  backdrop-filter: blur(4px);
}

.modal.show{
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

/* Box */
.modalBox{
  position: relative;
  width: min(680px, 92vw);
  max-height: min(78vh, 640px);
  overflow: auto;
  border-radius: var(--radius);
  border: 1px solid var(--accent-line);
  background: #0F1217;
  box-shadow: 0 30px 80px rgba(0,0,0,.55);
  padding: 5px 5px 3px;
  transform: translateY(10px);
  transition: transform .25s ease;
  z-index: 20;
}

.modal.show .modalBox{
  transform: translateY(0);
}

/* Close button */
.modalClose{
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  border:1px solid var(--accent-line);
  border-radius: 100vw;
  background: rgba(13, 13, 13, 0.5);
  color: var(--muted);
  font-size: 1rem;
  transition: all 0.2s ease-in-out;
}

.modalClose:hover{
  transform: translateY(-1px);
  color: var(--ink);
  border-color: var(--accent-bright);
}

.modalAction{
  display: flex;
  gap:10px;
  justify-content: flex-end;
  margin-top: 14px;
}

#modalOk{
  color:var(--ink)
}

.no-scroll {
  overflow: hidden;
}

.modalPopup, .contatti-popup{
  display:inline-flex; align-items:center; justify-content:center;
  padding:12px 16px;
  border-radius: var(--radius-sm);
  border:1px solid var(--accent);
  background: var(--accent);
  text-decoration:none;
  font-weight:600;
  cursor: pointer;
  z-index: 10000 !important;
  color:var(--accent-ink);
  transition: transform .2s ease, background .2s ease;
}

.modalPopup:hover, .contatti-popup:hover{
    transform: translateY(-1px);
    filter: brightness(1.15);
}

.overlay[hidden],
.modal[hidden]{
  display: none !important;
}

/* ===============================
   13. Responsive
================================ */

@media (max-width: 860px) {

  .packCard {
    padding: 20px;
  }

  .price {
    font-size: 30px;
  }
}

@media (min-width: 700px) and (max-width: 1020px) {
  #projectsGrid,
  #packagesGrid,
  .stepsGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .heroGrid,
  .contact-grid-bottom {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 699px) {
  .container {
    width: min(100% - 28px, 1100px);
  }

  .section {
    padding: 42px 0;
  }

  h1 {
    font-size: 36px;
    line-height: 1.08;
  }

  h2 {
    font-size: 27px;
  }

  #projectsGrid,
  #packagesGrid,
  .stepsGrid,
  .contact-grid-bottom,
  .grid {
    grid-template-columns: 1fr;
  }

  .heroCta,
  .contactButton-wrap,
  .contactButtons-footer {
    grid-template-columns: 1fr;
  }

  .heroCta .btn,
  .contactButton-wrap .btn,
  .contactButtons-footer a,
  .FaqContainer {
    width: 100%;
  }

  .stepCard,
  .faqItem {
    width: 100%;
  }

  .stepCard {
    min-height: auto;
  }

  .footer-wrap {
  grid-template-columns: 1fr;
  gap: 26px;
  text-align: center;
}

.nav-footer,
.other-info {
  width: 100%;
}

.nav-toogle-footer {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  justify-items: stretch;
}

.footer-wrap a,
.contactButtons-footer a {
  width: 100%;
  justify-content: center;
}

.contactButtons-footer {
  grid-template-columns: 1fr;
  gap: 16px;
}

.brand-footer {
  flex-direction: column;
  justify-content: center;
  text-align: center;
}

.brandImg-footer img {
  width: 160px;
  height: auto;
}
}

/* Card hover dopo il reveal */
.projectCard.showChild:hover,
.stepCard.showChild:hover,
.packCard.showChild:hover{
  transform: translateY(-2px);
  border-color: var(--accent-line);
  background: var(--surface-hover);
}

.btn:hover,
.btn.showChild:hover,
.btn.RevealChild.showChild:hover,
.status:hover {
  transform: translateY(-2px);
  border-color: var(--accent-bright);
  filter: brightness(1.15);
}

.btn.ghost:hover,
.btn.ghost.showChild:hover,
.btn.ghost.RevealChild.showChild:hover,
.expressCta:hover,
.expressCta.showChild:hover,
.expressCta.RevealChild.showChild:hover {
  background: rgba(241,236,224,.045);
  border-color: var(--accent-line);
  color: var(--ink);
}

.stepCard.showChild,
.projectCard.showChild,
.packCard.showChild {
  transition-delay: 0ms !important;
}

.stepCard,
.stepCard.showChild {
  transition: transform .16s ease, border-color .16s ease, background .16s ease !important;
}

input,
textarea,
.customSelectBtn {
  background: rgba(241,236,224,.035);
  transition: border-color .18s ease, background .18s ease;
  font-family: inherit;
}

input:focus,
textarea:focus,
.customSelectBtn:focus,
.customSelectBtn.select-open {
  border: 1px solid var(--accent-line);
  background: rgba(241,236,224,.05);
}

/* ===============================
   14. Pagina legale (privacy)
================================ */

.legal{
  padding-top: 130px;
}

.legalContent{
  max-width: 720px;
}

.legalContent h1{
  margin-bottom: 4px;
}

.legalContent h2{
  margin-top: 28px;
  font-size: 19px;
}

.legalContent p{
  color: var(--muted);
  line-height: 1.7;
  margin: 8px 0 0;
}

.legalContent a{
  color: var(--accent-bright);
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    transition-delay: 0ms !important;
  }
}

/* ===============================
   15. Pagina 404
================================ */

.error404-hero{
  padding-top: 104px;
}

.errorPage .error404-heading{
  font-size: clamp(25px, 3.2vw, 34px);
  margin: 0 0 8px;
  color: var(--accent-bright);
}

.errorPage p{
  font-size: 16px;
  font-weight: 400;
  margin-top: 8px;
}

.errorPage .heroCta{
  margin-top: 26px;
}

.errorPage .error404-title{
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(3.2rem, 15vw, 10rem);
  margin: 16px 0;
  line-height: 1;
  background: linear-gradient(
      to right,
      #073B5C 15%,
      #0A80D7 35%,
      #33D6FF 55%,
      #0A80D7 75%,
      #073B5C 90%
  );
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  background-size: 400% auto;
  animation: textShine 6s ease-in-out infinite alternate;
}

@keyframes textShine {
    0% {
        background-position: 0% 50%;
    }
    100% {
        background-position: 100% 50%;
    }
}

/* ===============================
   Stati di caricamento
================================ */

.loadState{
  grid-column: 1 / -1;
  margin: 0;
  padding: 28px 0;
  text-align: center;
}

.loadError{
  grid-column: 1 / -1;
  padding: 20px;
  border: 1px solid rgba(210,84,58,.4);
  border-radius: var(--radius);
  background: rgba(210,84,58,.08);
}

.loadError p{
  margin: 0 0 14px;
  color: var(--ink);
}

.loadError__actions{
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

/* Contatti nel footer */
.footerNap{
  font-style: normal;
  margin: 0;
  line-height: 1.6;
}

.footerNap a,
.other-info .footerNap a{
  display: inline;
  width: auto;
  min-height: 0;
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  color: inherit;
  font: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.footerNap a{
  white-space: nowrap;
}

.siteNotice p a{
  color: var(--ink);
}

/* Hero */
.js .hero.Reveal,
.js .hero .RevealChild,
.js #chi-sono.Reveal,
.js #chi-sono .RevealChild{
  opacity: 1;
  transform: none;
  transition: none;
}

.hero .heroGrid,
#chi-sono > .container{
  animation: heroIn .6s ease-out both;
}

@keyframes heroIn{
  from{ transform: translateY(12px); }
  to{ transform: none; }
}

@media (prefers-reduced-motion: reduce){
  .hero .heroGrid,
  #chi-sono > .container{ animation: none; }
}

/* spazio per il bottone WhatsApp su mobile */
@media (max-width: 640px){
  .footer{ padding-bottom: 84px; }
}

/* ===============================
   15. Pagine di contenuto (siti-web-lodi, quanto-costa-un-sito-web, lavori)
================================ */

.pageTop{ padding-top: 120px; }

.prose{ max-width: 68ch; }

.prose p,
.prose li,
.infoCard p{
  color: var(--muted);
  line-height: 1.7;
  font-size: 15.5px;
}

.prose ul{ padding-left: 18px; margin: 10px 0 0; }
.prose li + li{ margin-top: 6px; }

.prose a,
.infoCard a,
.faqStatic a,
.pageLinks a{
  color: var(--accent-bright);
}

.prose strong{ color: var(--ink); }

.cardGrid{
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  margin-top: 18px;
}

.cardGrid .packCard .btn{ margin-top: auto; }

.infoCard{
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: var(--radius);
  padding: 20px;
  transition: transform .2s ease, border-color .2s ease, background .2s ease;
}

.infoCard:hover{
  transform: translateY(-2px);
  border-color: var(--accent-line);
  background: var(--surface-hover);
}

.packCard .payNote{ margin-top: auto; }

.infoCard h3{ font-size: 19px; }
.infoCard p{ margin: 0; }
.infoCard p + p{ margin-top: 10px; }

.pageLinks{
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin: 14px 0 0;
  padding: 0;
  list-style: none;
}

.faqStatic{ display: grid; gap: 14px; margin-top: 18px; max-width: 820px; }

.faqStatic details{
  border-radius: var(--radius-sm);
  border: 1px solid var(--line);
  background: rgba(241,236,224,.024);
}

.faqStatic details[open]{ border-color: var(--accent-line); }

.faqStatic summary{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 15px;
  font-weight: 600;
  font-size: 14.5px;
  line-height: 1.35;
  cursor: pointer;
  list-style: none;
}

.faqStatic summary::-webkit-details-marker{ display: none; }

.faqStatic summary::after{
  content: "+";
  color: var(--accent-bright);
  flex-shrink: 0;
}

.faqStatic details[open] summary::after{ content: "-"; }

.faqStatic summary:focus-visible{
  outline: 2px solid var(--accent-bright);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.faqStatic details p{
  margin: 0;
  padding: 0 15px 15px;
  color: var(--muted);
  line-height: 1.6;
  font-size: 14.5px;
}

.todo{
  padding: 0 4px;
  border-radius: 4px;
  background: rgba(229,107,81,.16);
  color: #E56B51;
  font-weight: 600;
}



@media (max-width: 699px){
  .pageTop{ padding-top: 100px; }
}

.pageTop .heroCta,
.prose .heroCta,
#demo .heroCta{ flex-wrap: wrap; }

.projectTop .projectTitle{
  font-size: 21px;
  line-height: 1.1;
  margin: 0;
  font-weight: 700;
}

/* /lavori/: titoli di sezione "Lavori reali" e "Demo" */
.sectionTitle{ margin-top: 32px; }
.demoIntro{ margin-top: 56px; }

/* tablet: la card reale larga come quelle delle demo (2 colonne) */
@media (min-width: 700px) and (max-width: 1020px){
  .realGrid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* home: carosello lavori reali + demo (scroll-snap, frecce e pallini da script.js) */
.carouselHead{
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
}

.carouselNav{ display: flex; gap: 10px; flex-shrink: 0; margin-bottom: 8px; }
.carouselNav[hidden], .carouselDots[hidden]{ display: none; }

.carouselBtn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface);
  color: var(--ink);
  cursor: pointer;
  transition: border-color .2s ease, background .2s ease, opacity .2s ease;
}

.carouselBtn:hover:not(:disabled) svg{
  transform: scale(1.2);
  stroke: var(--accent-bright);
}

.carouselBtn:hover:not(:disabled){ border-color: var(--accent-line); background: var(--surface-hover); }
.carouselBtn:disabled{ opacity: .35; cursor: default; }
.carouselBtn svg{ display: block; width: 24px; height: 24px; flex-shrink: 0; transition: transform .2s ease, stroke .2s ease; }
.carouselBtn:focus-visible,
.projectTrack:focus-visible{ outline: 2px solid var(--accent-bright); outline-offset: 4px; }

.projectTrack{
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: calc((100% - 32px) / 3);
  gap: 16px;
  margin-top: 18px;
  padding: 14px 0 6px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
  scrollbar-width: none;
}

.projectTrack::-webkit-scrollbar{ display: none; }
.projectTrack > .projectCard{ scroll-snap-align: start; }

.carouselDots{ display: flex; justify-content: center; gap: 4px; margin-top: 10px; }

.carouselDots button{
  width: 24px;
  height: 24px;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}

.carouselDots button::before{
  content: "";
  display: block;
  width: 8px;
  height: 8px;
  margin: auto;
  border-radius: 999px;
  background: var(--line);
  transition: background .2s ease, transform .2s ease;
}

.carouselDots button[aria-current="true"]::before{ background: var(--accent-bright); transform: scale(1.25); }
.carouselDots button:focus-visible{ outline: 2px solid var(--accent-bright); border-radius: 999px; }

@media (max-width: 1020px){
  .projectTrack{ grid-auto-columns: calc((100% - 16px) / 2); }
}

@media (max-width: 699px){
  .projectTrack{ grid-auto-columns: 86%; }
}

@media (prefers-reduced-motion: reduce){
  .carouselBtn, .carouselBtn svg, .carouselDots button::before{ transition: none; }
}

.visually-hidden{
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.container.prose{ max-width: none; }
.container.prose > *{ max-width: 68ch; }

.prose a.btn{ color: var(--accent-ink); text-decoration: none; }
.prose a.btn.ghost{ color: var(--ink); }

.legalContent ul{ margin: 8px 0 0; padding-left: 18px; color: var(--muted); line-height: 1.7; }
.legalContent strong{ color: var(--ink); }

/* Accessibilità: salto al contenuto e focus da tastiera sui campi */
.skipLink{
  position: absolute;
  left: 12px;
  top: -80px;
  z-index: 10000;
  padding: 10px 16px;
  border-radius: var(--radius-sm);
  background: var(--ink);
  color: var(--bg);
  font-weight: 600;
  text-decoration: none;
}
.skipLink:focus{ top: 12px; }
main:focus{ outline: none; }

input:focus-visible,
textarea:focus-visible,
.customSelectBtn:focus-visible{
  outline: 2px solid var(--accent-bright);
  outline-offset: 2px;
}

/* navLinks stretto: 5 voci + CTA su una riga tra 861 e 1060 px */
@media (min-width: 861px) and (max-width: 1060px){
  .navLinks{ gap: 8px; }
  .navLinks a{ font-size: 14px; }
  .navLinks a.navCta{ padding: 8px 10px; }
  .brand-wrap{ flex-shrink: 0; width: 120px; margin-right: 10px; }
}

/* ===============================
   Hero con foto, fatti verificabili, form
================================ */
@media (min-width: 861px){
  .heroGrid{
    grid-template-columns: minmax(0, 1fr) minmax(240px, 340px);
    gap: 48px;
    align-items: center;
  }
}

.heroFacts{
  list-style: none;
  padding: 0;
  margin: 22px 0 0;
  display: grid;
  gap: 10px;
  color: var(--ink);
  font-size: 15.5px;
  line-height: 1.45;
}

.heroFacts li{
  position: relative;
  padding-left: 28px;
}

.heroFacts li::before{
  content: "";
  position: absolute;
  left: 2px;
  top: .35em;
  width: 14px;
  height: 8px;
  border-left: 2px solid var(--accent);
  border-bottom: 2px solid var(--accent);
  transform: rotate(-45deg);
}

.heroPhoto{
  margin: 0;
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--line);
  box-shadow: 0 24px 60px rgba(0,0,0,.35);
}

.heroPhoto img{
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  object-fit: cover;
}

.heroPhoto figcaption{
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 12px;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  background: rgba(12,15,20,.82);
  backdrop-filter: blur(6px);
  display: grid;
  gap: 2px;
  font-size: 13.5px;
  color: var(--muted);
}

.heroPhoto figcaption strong{
  color: var(--ink);
  font-family: var(--font-display);
  font-size: 16px;
}

/* da telefono la foto diventa una riga piccola sopra il titolo: il bottone resta in vista */
@media (max-width: 860px){
  .heroPhoto{
    order: -1;
    display: flex;
    align-items: center;
    gap: 12px;
    border: 0;
    box-shadow: none;
    overflow: visible;
    border-radius: 0;
  }
  .heroPhoto img{
    width: 56px;
    height: 56px;
    border-radius: 50%;
    object-position: center 20%;
    border: 2px solid var(--accent-line);
  }
  .heroPhoto figcaption{
    position: static;
    padding: 0;
    background: none;
    backdrop-filter: none;
  }
  .heroGrid{ gap: 14px; }
}

.contactLead{ display: block; margin: 6px 0 8px; color: var(--ink); }

.formTitle{
  font-size: 20px;
  margin: 0 0 14px;
}

/* sotto i 1020px il form viene prima delle FAQ */
@media (max-width: 1020px){
  .contact-grid-bottom .Contactcard{ order: -1; }
}

@media (min-width: 641px){
  .siteNotice{ margin: 0; right: auto; }
}

/* ===============================
   Ritmo delle sezioni: frase isolata, metodo come elenco, footer leggero
================================ */
.bigLine{
  padding: 72px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.bigLine__text{
  font-family: var(--font-display);
  font-size: clamp(30px, 5vw, 52px);
  line-height: 1.1;
  color: var(--ink);
  margin: 0 0 14px;
  max-width: 18ch;
}
.bigLine__sub{ max-width: 60ch; margin: 0; }

/* "Come lavoro" in home: un elenco numerato, non una griglia di card */
#metodo .stepsGrid{
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 48px;
}
#metodo .stepCard{
  background: none;
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0;
  box-shadow: none;
  min-height: auto;
  padding: 18px 0 22px 56px;
  overflow: visible;
}
#metodo .stepCard::before{
  top: 16px;
  left: 0;
  right: auto;
  font-size: 30px;
  color: var(--accent);
  opacity: .9;
}
#metodo .stepCard h3{ max-width: none; margin-bottom: 6px; }
#metodo .stepCard h3::after{ display: none; }
@media (max-width: 699px){
  #metodo .stepsGrid{ grid-template-columns: 1fr; }
}

.contactButtons-footer{
  display: flex !important;
  flex-wrap: wrap;
  gap: 8px 18px;
}
.contactButtons-footer .footerLink{
  width: auto !important;
  color: var(--ink);
  text-decoration: underline;
  text-decoration-color: var(--accent-line);
  text-underline-offset: 4px;
  min-height: 32px;
  display: inline-flex;
  align-items: center;
}
.contactButtons-footer .footerLink:hover{ color: var(--accent-bright); }

/* pagine di settore */
.plainList{ list-style: none; padding: 0; margin: 18px 0 0; display: grid; gap: 14px; }
.plainList li{ padding-left: 22px; position: relative; line-height: 1.6; }
.plainList li::before{ content: ""; position: absolute; left: 0; top: .7em; width: 10px; height: 2px; background: var(--accent); }
.demoAside{
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 28px;
  align-items: center;
}
.demoAside img{ width: 100%; height: auto; border-radius: var(--radius); border: 1px solid var(--line); display: block; }
@media (max-width: 860px){ .demoAside{ grid-template-columns: 1fr; } }

/* footer leggero: link semplici, non bottoni */
.footer .footer-wrap a,
.footer .contactButtons-footer a{
  background: none;
  border: 0;
  border-radius: 0;
  padding: 4px 0;
  width: auto !important;
  justify-content: flex-start;
  color: var(--muted);
  text-decoration: none;
  min-height: 32px;
}
.footer .footer-wrap a:hover,
.footer .contactButtons-footer a:hover{
  transform: none;
  background: none;
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 4px;
}
.footer .footer-wrap strong{ justify-content: flex-start; }
.footer .nav-toogle-footer{
  grid-template-columns: repeat(2, max-content);
  gap: 2px 32px;
  justify-items: start;
  justify-content: start;
}
.footer .contactButtons-footer{
  display: grid !important;
  grid-template-columns: max-content;
  justify-content: start;
  gap: 2px;
}
.footer .footer-wrap{ gap: 24px; }

/* frase isolata con lo screenshot della demo su WhatsApp */
.bigLine__grid{
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
  gap: 40px;
  align-items: center;
}
.waProof{ margin: 0; }
.waProof img{
  display: block;
  width: 100%;
  max-width: 460px;
  height: auto;
  border-radius: 14px;
  box-shadow: 0 18px 40px rgba(0,0,0,.35);
}
.waProof figcaption{ margin-top: 10px; max-width: 46ch; }
@media (max-width: 860px){
  .bigLine__grid{ grid-template-columns: 1fr; gap: 24px; }
}

/* fascia a tutta larghezza con la foto al lavoro */
.workBand{
  position: relative;
  min-height: clamp(320px, 52vw, 560px);
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.workBand picture,
.workBand img{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 80%;
}
.workBand::after{
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(12,15,20,0) 25%, rgba(12,15,20,.92) 100%);
}
.workBand__text{
  position: relative;
  z-index: 1;
  width: 100%;
  padding: 0 0 40px;
}
.workBand__line{
  font-family: var(--font-display);
  font-size: clamp(26px, 4vw, 44px);
  line-height: 1.12;
  color: var(--ink);
  margin: 0 0 10px;
  max-width: 20ch;
}
.workBand__sub{
  margin: 0;
  max-width: 56ch;
  color: rgba(241,236,224,.85);
}

/* ===============================
   Footer (nuovo): 4 colonne, riga finale
================================ */
.footer{ padding: 56px 0 24px; }
.siteFoot{
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) repeat(2, minmax(0, .8fr)) minmax(0, 1.1fr);
  gap: 40px;
  align-items: start;
}
.siteFoot__logo{ display: inline-block; }
.siteFoot__logo img{ width: 180px; height: auto; display: block; }
.siteFoot__text{ color: var(--muted); margin: 14px 0 18px; max-width: 34ch; line-height: 1.6; font-size: 15px; }
.siteFoot__cta{ min-height: 44px; }
.siteFoot__title{
  margin: 6px 0 12px;
  font-size: 12.5px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--accent-bright);
  font-weight: 600;
}
.siteFoot ul{ list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.siteFoot ul a,
.siteFoot__bottom a{
  color: var(--muted);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  transition: color .16s ease;
}
.siteFoot ul a:hover,
.siteFoot__bottom a:hover{ color: var(--ink); }
.siteFoot ul a:focus-visible,
.siteFoot__bottom a:focus-visible,
.siteFoot__social a:focus-visible{ outline: 2px solid var(--accent-bright); outline-offset: 3px; border-radius: 4px; }
.footerNap{ font-style: normal; }
.siteFoot__social{ display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.siteFoot__social a{
  color: var(--ink);
  text-decoration: none;
  font-size: 14px;
  padding: 8px 14px;
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 999px;
  transition: border-color .16s ease, background .16s ease;
}
.siteFoot__social a:hover{ border-color: var(--accent-line); background: rgba(241,236,224,.04); }
.siteFoot__bottom{
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 24px;
  margin-top: 40px;
  padding-top: 20px;
  border-top: 1px solid var(--line);
  font-size: 14px;
  color: var(--muted);
}
.siteFoot__bottom p{ margin: 0; }
.siteFoot__bottom p:last-child{ display: flex; gap: 20px; flex-wrap: wrap; }

@media (max-width: 1020px){
  .siteFoot{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .siteFoot__brand{ grid-column: 1 / -1; }
}
@media (max-width: 560px){
  .footer{ padding-top: 44px; }
  .siteFoot{ gap: 28px 20px; }
  .siteFoot__col:last-child{ grid-column: 1 / -1; }
  .siteFoot__cta{ width: 100%; }
  .siteFoot__bottom{ flex-direction: column; align-items: flex-start; }
}
@media (max-width: 640px){
  .footer{ padding-bottom: 96px; }
}

/* banner cookie: bottoni comodi da toccare */
@media (max-width: 860px){
  .siteNotice__actions .btn{ min-height: 44px; }
}

/* siti-web-lodi: "Cosa è incluso" in 3 colonne x 2 righe */
#cosa-include .cardGrid{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 900px){ #cosa-include .cardGrid{ grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px){ #cosa-include .cardGrid{ grid-template-columns: 1fr; } }

/* footer su telefono: più compatto e ordinato */
@media (max-width: 560px){
  .footer{ padding-top: 36px; }
  .siteFoot{ gap: 22px 16px; }
  .siteFoot__logo img{ width: 150px; }
  .siteFoot__text{ margin: 10px 0 14px; font-size: 14px; }
  .siteFoot__title{ margin: 0 0 4px; }
  .siteFoot ul{ gap: 0; }
  .siteFoot nav ul a{ min-height: 34px; font-size: 15px; }
  .footerNap ul{ grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .footerNap li:nth-child(n+3){ grid-column: 1 / -1; }
  .footerNap ul a{
    width: 100%;
    min-height: 44px;
    justify-content: center;
    text-align: center;
    padding: 8px 12px;
    border: 1px solid var(--line);
    border-radius: 12px;
    color: var(--ink);
    font-size: 14px;
  }
  .siteFoot__social{ margin-top: 8px; }
  .siteFoot__social a{ flex: 1 1 0; justify-content: center; min-height: 44px; border-radius: 12px; }
  .siteFoot__bottom{
    margin-top: 24px;
    padding-top: 16px;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 4px;
    font-size: 13px;
  }
  .siteFoot__bottom p:last-child{ justify-content: center; }
}
