/* Base — Warm editorial typography + reset */
*,*::before,*::after{box-sizing:border-box}
html{
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:clip; /* rete di sicurezza: niente scroll laterale su mobile */
}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:var(--fs-base);
  font-weight:400;
  line-height:var(--lh-body);
  letter-spacing:var(--tr-normal);
  overflow-x:hidden;
}
img,svg,video{display:block;max-width:100%;height:auto}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
a{color:inherit;text-decoration:none;transition:color var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease)}
ul,ol{margin:0;padding:0;list-style:none}

h1,h2,h3,h4,h5,h6{
  margin:0;
  font-family:var(--font-display);
  font-weight:400;
  line-height:var(--lh-heading);
  letter-spacing:var(--tr-tight);
  color:var(--ink);
}

/* Editorial display */
.display{
  font-family:var(--font-display);
  font-weight:400;
  letter-spacing:var(--tr-tight);
  line-height:var(--lh-display);
  color:var(--ink);
}
.display em{
  font-style:italic;
  font-weight:400;
  color:inherit;
  background:none;
  -webkit-text-fill-color:currentColor;
}
.display--xl{font-size:var(--fs-4xl)}
.display--lg{font-size:var(--fs-3xl)}
.display--md{font-size:var(--fs-2xl)}

.eyebrow{
  display:inline-flex;align-items:center;gap:.6rem;
  font-family:var(--font-sans);
  font-size:var(--fs-xs);
  letter-spacing:var(--tr-eye);
  text-transform:uppercase;
  color:var(--muted);
  font-weight:500;
}

.lead{
  font-size:var(--fs-md);
  line-height:1.55;
  color:var(--ink-soft);
  font-weight:400;
  letter-spacing:var(--tr-normal);
  max-width:42rem;
}

.container{
  max-width:var(--container);
  margin:0 auto;
  padding:0 var(--sp-3);
}
.container--narrow{max-width:var(--container-narrow)}
@media (min-width:768px){.container{padding:0 var(--sp-4)}}

.section{padding:var(--section-y) 0}
/* Skip rendering off-screen sections — riduce lavoro layout/paint a riposo */
section.section{content-visibility:auto;contain-intrinsic-size:1px 800px}
section#chi-siamo,section#servizi,section#risorse,section.hero{content-visibility:visible}
.section--tight{padding:calc(var(--section-y) * .55) 0}
.section--dark{background:var(--navy);color:var(--bg);--accent:#A9BCD9;--accent-hover:#C4D0E5;--line:rgba(241,241,238,.18);--line-soft:rgba(241,241,238,.1);--line-strong:rgba(241,241,238,.35);--ink:var(--bg);--ink-soft:rgba(241,241,238,.85);--muted:rgba(241,241,238,.6)}
.section--dark h1,.section--dark h2,.section--dark h3,.section--dark h4,.section--dark h5{color:var(--bg)}
.section--dark .eyebrow{color:rgba(247,245,240,.6)}
.section--dark .lead{color:rgba(247,245,240,.82)}
.section--dark .display{color:var(--bg)}
.section--dark .display em{color:var(--bg)}
.section--soft{background:var(--soft)}

.text-center{text-align:center}
.mx-auto{margin-left:auto;margin-right:auto}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:999;
  background:var(--ink);color:var(--bg);
  padding:.75rem 1.25rem;font-size:.85rem;
  border-radius:var(--radius);
  letter-spacing:var(--tr-wide);text-transform:uppercase;
}
.skip-link:focus{left:1rem;top:1rem}

:focus-visible{outline:1.5px solid var(--accent);outline-offset:3px;border-radius:2px}

::selection{background:var(--accent);color:var(--bg)}

.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.divider{height:1px;background:var(--line);border:0;margin:0}

/* Reveal — faster, subtler */
.rv{
  opacity:0;
  transform:translateY(12px);
  transition:opacity .5s var(--ease-out),transform .5s var(--ease-out);
}
.rv.in{opacity:1;transform:none}
.rv-1{transition-delay:.08s}.rv-2{transition-delay:.16s}.rv-3{transition-delay:.24s}

@media (prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  *{animation-duration:.001ms!important;transition-duration:.001ms!important}
}
