/* ===== CROCE VIOLA E.R. ===== */

:root {
  --navy:        #0d1526;
  --navy-mid:    #162038;
  --navy-light:  #1f2d4a;
  --violet:      #6d28d9;
  --violet-pale: #ede9fe;
  --violet-soft: rgba(109,40,217,0.09);
  --white:       #ffffff;
  --cream:       #f8f7f4;
  --sand:        #f0ede8;
  --muted:       #5a6478;
  --text:        #0d1526;
  --border:      rgba(13,21,38,0.08);
  --border-mid:  rgba(13,21,38,0.14);

  --font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --font-body:    'Outfit', system-ui, -apple-system, sans-serif;

  --radius:      5px;
  --radius-md:   12px;
  --radius-lg:   20px;
  --radius-full: 9999px;

  --ease-out:    cubic-bezier(0.22, 1, 0.36, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --t-fast:  0.18s;
  --t-med:   0.38s;
  --t-slow:  0.7s;

  --nav-h:     72px;
  --topbar-h:  40px;

  --shadow:    0 2px 12px rgba(13,21,38,0.08);
  --shadow-md: 0 8px 32px rgba(13,21,38,0.12);
  --shadow-lg: 0 24px 64px rgba(13,21,38,0.16);

  /* Font size scale — aumentato rispetto alla versione precedente */
  --fs-xs:   0.8rem;    /* 12.8px */
  --fs-sm:   0.9rem;    /* 14.4px */
  --fs-base: 1.05rem;   /* 16.8px */
  --fs-md:   1.15rem;   /* 18.4px */
  --fs-lg:   1.25rem;   /* 20px */
}

/* ── Loader Ferrari-style ── */
#page-loader {
  position: fixed; inset: 0; z-index: 99999;
  background: var(--navy);
  display: flex; align-items: center; justify-content: center;
  flex-direction: column; gap: 28px;
  transition: opacity 0.6s var(--ease-out), visibility 0.6s;
}
#page-loader.loaded {
  opacity: 0; visibility: hidden; pointer-events: none;
}
#page-loader .loader-logo {
  width: clamp(90px, 18vw, 140px);
  height: clamp(90px, 18vw, 140px);
  animation: loader-enter 0.7s var(--ease-out) both;
}
#page-loader .loader-bar-wrap {
  width: clamp(120px, 28vw, 200px);
  height: 2px;
  background: rgba(255,255,255,0.1);
  border-radius: 2px;
  overflow: hidden;
  animation: loader-enter 0.7s var(--ease-out) 0.15s both;
}
#page-loader .loader-bar {
  height: 100%;
  background: linear-gradient(90deg, var(--violet), #a78bfa);
  border-radius: 2px;
  animation: loader-fill 1.2s var(--ease-out) 0.2s both;
}
@keyframes loader-enter {
  from { opacity:0; transform:translateY(10px); }
  to   { opacity:1; transform:translateY(0); }
}
@keyframes loader-fill {
  from { width: 0%; }
  to   { width: 100%; }
}

/* ── Animazioni generali ── */
@keyframes hero-enter {
  from { opacity:0; transform:translateY(18px); }
  to   { opacity:1; transform:translateY(0); }
}
@keyframes pulse-dot {
  0%,100% { opacity:1; }
  50%     { opacity:0.4; }
}
@keyframes spin { to { transform:rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
  #page-loader { display: none !important; }
  .hero-reveal { opacity:1 !important; transform:none !important; }
  .reveal      { opacity:1 !important; transform:none !important; }
}

/* ── Reset ── */
*, *::before, *::after { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:smooth; font-size:17px; -webkit-text-size-adjust:100%; }
body {
  font-family: var(--font-body);
  font-size: var(--fs-base);
  line-height: 1.7;
  color: var(--text);
  background: var(--cream);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { max-width:100%; height:auto; display:block; }
a   { text-decoration:none; color:inherit; }
ul  { list-style:none; }
button { font-family:inherit; cursor:pointer; }
::selection { background:var(--violet-pale); color:var(--navy); }
:focus-visible { outline:2px solid var(--violet); outline-offset:3px; }

.skip-link {
  position:absolute; top:-100px; left:16px; z-index:10000;
  padding:12px 20px; background:var(--navy); color:var(--white);
  font-size:var(--fs-sm); font-weight:600; border-radius:var(--radius-md);
  transition:top .2s;
}
.skip-link:focus { top:14px; }

/* ── Layout ── */
.container { width:100%; max-width:1200px; margin:0 auto; padding:0 clamp(18px,5vw,48px); }
.section    { padding:clamp(80px,11vw,120px) 0; }
.section--alt  { background:var(--white); }
.section--sand { background:var(--sand); }

/* ── Tipografia ── */
.label {
  display:inline-block;
  font-size:11px; font-weight:700;
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--violet); margin-bottom:16px;
}
.label--light { color:rgba(255,255,255,0.5); }

.display {
  font-family:var(--font-display);
  font-size:clamp(2.2rem, 5vw, 3.8rem);
  font-weight:500; line-height:1.08;
  color:var(--navy); letter-spacing:-.025em;
}
.display em       { font-style:italic; color:var(--violet); font-weight:450; }
.display--lg      { font-size:clamp(2.8rem, 6.5vw, 5rem); }
.display--sm      { font-size:clamp(1.7rem, 3vw, 2.4rem); }
.display--light   { color:var(--white); }
.display--light em{ color:#c4b5fd; }

.prose      { font-size:var(--fs-md); line-height:1.8; color:var(--muted); max-width:540px; }
.prose--light { color:rgba(255,255,255,0.6); }

/* Alias compatibilità con pagine interne */
.eyebrow       { display:inline-block; font-size:11px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--violet); margin-bottom:16px; }
.eyebrow--light{ color:rgba(255,255,255,0.5); }
.display-title { font-family:var(--font-display); font-size:clamp(2.2rem,5vw,3.8rem); font-weight:500; line-height:1.08; color:var(--navy); letter-spacing:-.025em; }
.display-title em { font-style:italic; color:var(--violet); font-weight:450; }
.display-title--light { color:var(--white); }
.display-title--light em { color:#c4b5fd; }
.body-text       { font-size:var(--fs-md); line-height:1.8; color:var(--muted); max-width:540px; }
.body-text--light{ color:rgba(255,255,255,0.6); }

/* ── Bottoni ── */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:15px 32px;
  font-family:var(--font-body); font-size:var(--fs-sm); font-weight:600;
  letter-spacing:.06em; text-transform:uppercase;
  border-radius:var(--radius-full); border:1.5px solid transparent;
  cursor:pointer; white-space:nowrap;
  transition:transform var(--t-fast) var(--ease-out), background var(--t-fast),
    border-color var(--t-fast), color var(--t-fast), box-shadow var(--t-fast);
}
.btn svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
.btn:hover  { transform:translateY(-1px); }
.btn:active { transform:translateY(0); }

.btn-primary {
  background:var(--violet); color:var(--white);
  box-shadow:0 1px 4px rgba(109,40,217,.3), 0 4px 18px rgba(109,40,217,.18);
}
.btn-primary:hover { background:#5b21b6; box-shadow:0 2px 8px rgba(109,40,217,.35), 0 10px 32px rgba(109,40,217,.22); }
.btn-secondary { background:var(--navy); color:var(--white); }
.btn-secondary:hover { background:var(--navy-mid); }
.btn-outline { background:transparent; color:var(--violet); border-color:rgba(109,40,217,.3); }
.btn-outline:hover { background:var(--violet); color:var(--white); border-color:var(--violet); }
.btn-outline-dark { background:transparent; color:var(--navy); border-color:var(--border-mid); }
.btn-outline-dark:hover { background:var(--navy); color:var(--white); }
.btn-outline-light { background:rgba(255,255,255,.08); color:var(--white); border-color:rgba(255,255,255,.22); backdrop-filter:blur(6px); }
.btn-outline-light:hover { background:rgba(255,255,255,.16); border-color:rgba(255,255,255,.42); }
.btn-ghost { background:transparent; color:var(--muted); border-color:transparent; }
.btn-ghost:hover { background:rgba(13,21,38,.05); color:var(--text); }
.btn-ghost-light {
  background:transparent; color:rgba(255,255,255,.82);
  border:1.5px solid rgba(255,255,255,.18); border-radius:var(--radius-full);
  padding:11px 24px; font-size:var(--fs-xs); font-weight:600;
  letter-spacing:.08em; text-transform:uppercase;
  transition:background var(--t-fast), border-color var(--t-fast);
}
.btn-ghost-light:hover { background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.36); }
.btn-sm { padding:11px 22px; font-size:var(--fs-xs); }
.btn-lg { padding:18px 40px; font-size:var(--fs-base); }

/* ── Topbar ── */
.header-top { background:var(--navy); height:var(--topbar-h); display:flex; align-items:center; }
.header-top__inner { display:flex; align-items:center; gap:28px; }
.header-top__item { display:flex; align-items:center; gap:8px; font-size:var(--fs-xs); font-weight:500; color:rgba(255,255,255,.55); }
.header-top__item svg { width:13px; height:13px; fill:none; stroke:currentColor; stroke-width:2; opacity:.55; }
.header-top__item a { color:rgba(255,255,255,.8); transition:color var(--t-fast); }
.header-top__item a:hover { color:var(--white); }
.header-top__item--badge { margin-left:auto; }
.badge-live { display:inline-block; width:7px; height:7px; background:#34d399; border-radius:50%; margin-right:5px; animation:pulse-dot 2.4s ease-in-out infinite; }

/* ── Nav ── */
.nav {
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(16px) saturate(1.3);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);
  border-bottom:1px solid var(--border);
  transition:box-shadow var(--t-med);
}
.nav.scrolled { box-shadow:var(--shadow); }
.nav__inner { display:flex; align-items:center; justify-content:space-between; height:var(--nav-h); }
.nav__logo { display:flex; align-items:center; gap:14px; flex-shrink:0; }
.nav__logo-emblem {
  width:44px; height:44px; background:var(--navy); border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  transition:transform var(--t-med) var(--ease-spring);
}
.nav__logo-emblem img { width:100%; height:100%; object-fit:cover; border-radius:50%; }
.nav__logo:hover .nav__logo-emblem { transform:rotate(-8deg) scale(1.06); }
.nav__logo-name { font-family:var(--font-display); font-size:1.12rem; font-weight:500; color:var(--navy); display:block; letter-spacing:-.01em; }
.nav__logo-tagline { font-size:var(--fs-xs); font-weight:600; letter-spacing:.1em; color:var(--muted); display:block; text-transform:uppercase; }
.nav__links { display:flex; align-items:center; gap:2px; }
.nav__links a { display:block; padding:10px 18px; font-size:var(--fs-sm); font-weight:500; color:var(--muted); border-radius:var(--radius-full); transition:color var(--t-fast),background var(--t-fast); }
.nav__links a:hover, .nav__links a.active { color:var(--navy); background:rgba(109,40,217,.07); }
.nav__cta { display:flex; align-items:center; gap:10px; }
.nav__burger { display:none; flex-direction:column; gap:6px; background:none; border:none; padding:8px; }
.nav__burger span { display:block; width:24px; height:2px; background:var(--navy); border-radius:2px; transition:var(--t-fast); }

/* Mobile nav */
.nav__mobile { position:fixed; inset:0; background:var(--navy); z-index:200; display:flex; flex-direction:column; }
.nav__mobile[hidden] { display:none; }
.nav__mobile-inner { padding:88px 40px 52px; display:flex; flex-direction:column; }
.nav__mobile-inner a {
  display:block; padding:20px 0;
  font-family:var(--font-display);
  font-size:clamp(1.8rem,6vw,2.6rem); font-weight:400;
  color:rgba(255,255,255,.6);
  border-bottom:1px solid rgba(255,255,255,.07);
  transition:color var(--t-fast), padding-left var(--t-fast);
}
.nav__mobile-inner a:hover, .nav__mobile-inner a.active { color:var(--white); padding-left:8px; }
.nav__mobile-contact { margin-top:40px; }
.nav__mobile-close { position:absolute; top:22px; right:24px; background:none; border:none; color:rgba(255,255,255,.38); font-size:34px; line-height:1; padding:8px; transition:color var(--t-fast),transform var(--t-fast); }
.nav__mobile-close:hover { color:var(--white); transform:rotate(90deg); }

/* ── Hero ── */
.hero {
  background:var(--navy); position:relative; overflow:hidden;
  min-height:min(90vh,900px); display:flex; align-items:center;
}
.hero::before {
  content:''; position:absolute; inset:0;
  background:
    radial-gradient(ellipse 60% 70% at 78% 55%,rgba(109,40,217,.18) 0%,transparent 60%),
    radial-gradient(ellipse 40% 50% at 15% 75%,rgba(109,40,217,.1) 0%,transparent 55%);
  pointer-events:none;
}
.hero::after {
  content:''; position:absolute; inset:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M0 40L40 0' stroke='rgba(255,255,255,0.025)' stroke-width='1'/%3E%3C/svg%3E");
  pointer-events:none;
}
.hero__inner {
  position:relative; z-index:2;
  display:grid; grid-template-columns:1.2fr 0.8fr;
  gap:clamp(48px,6vw,100px); align-items:center;
  padding:clamp(80px,11vw,130px) 0;
}
.hero__content { max-width:600px; }
.hero-reveal { opacity:0; animation:hero-enter .8s var(--ease-out) forwards; animation-delay:var(--d,0ms); }

.hero__kicker { display:flex; align-items:center; gap:12px; margin-bottom:26px; }
.hero__kicker-line { width:32px; height:1px; background:rgba(196,181,253,.45); }
.hero__kicker-text { font-size:11.5px; font-weight:600; letter-spacing:.18em; text-transform:uppercase; color:rgba(255,255,255,.4); }

.hero__title {
  font-family:var(--font-display);
  font-size:clamp(3rem, 6vw, 5.2rem);
  font-weight:500; line-height:1.04; color:var(--white);
  letter-spacing:-.03em; margin-bottom:26px;
}
.hero__title em { font-style:italic; color:#c4b5fd; font-weight:450; }
.hero__sub { font-size:var(--fs-md); line-height:1.8; color:rgba(255,255,255,.54); margin-bottom:42px; max-width:500px; }
.hero__actions { display:flex; gap:14px; flex-wrap:wrap; }

/* Pannello laterale hero */
.hero__panel {
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1);
  border-radius:var(--radius-lg); padding:36px 30px; backdrop-filter:blur(14px);
}
.hero__panel-status { display:flex; align-items:center; gap:10px; padding-bottom:22px; border-bottom:1px solid rgba(255,255,255,.07); margin-bottom:24px; font-size:12px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:#34d399; }
.hero__stats { display:flex; flex-direction:column; gap:16px; margin-bottom:28px; }
.hero__stat { display:grid; grid-template-columns:60px 1px 1fr; gap:16px; align-items:center; }
.hero__stat-val { font-family:var(--font-display); font-size:1.85rem; font-weight:500; color:var(--white); line-height:1; text-align:right; }
.hero__stat-val small { font-size:.82rem; font-family:var(--font-body); font-weight:600; opacity:.65; }
.hero__stat-divider { width:1px; height:32px; background:rgba(255,255,255,.1); }
.hero__stat-lbl { font-size:var(--fs-sm); line-height:1.45; color:rgba(255,255,255,.42); }
.hero__cta-note { font-size:var(--fs-xs); line-height:1.65; color:rgba(255,255,255,.3); padding-top:20px; border-top:1px solid rgba(255,255,255,.07); }

/* ── Stats bar ── */
.stats-bar { background:var(--white); border-bottom:1px solid var(--border); }
.stats-bar__inner { display:grid; grid-template-columns:repeat(3,1fr); }
.stat-item { padding:30px 36px; border-right:1px solid var(--border); }
.stat-item:last-child { border-right:none; }
.stat-item__n { font-family:var(--font-display); font-size:2.6rem; font-weight:500; color:var(--navy); line-height:1; margin-bottom:5px; }
.stat-item__n em { font-style:normal; color:var(--violet); }
.stat-item__l { font-size:var(--fs-sm); color:var(--muted); font-weight:500; }

/* ── Servizi ── */
.services-head { display:grid; grid-template-columns:1fr 1fr; gap:clamp(32px,5vw,80px); align-items:end; margin-bottom:56px; }
.svc-stream { border:1px solid var(--border-mid); border-radius:var(--radius-lg); overflow:hidden; background:var(--white); box-shadow:var(--shadow); }
.svc-row {
  display:grid; grid-template-columns:44px 50px 1fr 36px;
  gap:clamp(14px,2.5vw,32px); align-items:center;
  padding:clamp(24px,3vw,34px) clamp(22px,3vw,36px);
  border-bottom:1px solid var(--border); color:inherit; position:relative;
  transition:background var(--t-fast), padding-left var(--t-med) var(--ease-out);
}
.svc-row:last-child { border-bottom:none; }
.svc-row::before { content:''; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--violet); transform:scaleY(0); transform-origin:center; transition:transform var(--t-med) var(--ease-out); }
.svc-row:hover { background:rgba(109,40,217,.03); padding-left:calc(clamp(22px,3vw,36px) + 10px); }
.svc-row:hover::before { transform:scaleY(1); }
.svc-row__num { font-family:var(--font-display); font-style:italic; font-size:var(--fs-base); color:rgba(109,40,217,.3); }
.svc-row__icon { width:48px; height:48px; border-radius:var(--radius-md); background:var(--violet-soft); display:flex; align-items:center; justify-content:center; transition:background var(--t-fast); }
.svc-row__icon svg { width:22px; height:22px; fill:none; stroke:var(--violet); stroke-width:1.7; transition:stroke var(--t-fast); }
.svc-row:hover .svc-row__icon { background:var(--violet); }
.svc-row:hover .svc-row__icon svg { stroke:var(--white); }
.svc-row__main { display:flex; flex-direction:column; gap:5px; }
.svc-row__title { font-family:var(--font-display); font-size:clamp(1.12rem,2vw,1.4rem); font-weight:500; color:var(--navy); }
.svc-row__desc { font-size:var(--fs-sm); line-height:1.6; color:var(--muted); }
.svc-row__go { color:var(--violet); opacity:.2; display:flex; align-items:center; transition:opacity var(--t-fast),transform var(--t-fast) var(--ease-out); }
.svc-row__go svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:2; }
.svc-row:hover .svc-row__go { opacity:1; transform:translateX(4px); }

/* ── About home ── */
.about-grid { display:grid; grid-template-columns:1fr 1fr; gap:clamp(52px,7vw,110px); align-items:center; }
.about-img { aspect-ratio:3/4; background:linear-gradient(160deg,var(--navy-mid),var(--navy-light)); border-radius:var(--radius-lg); display:flex; align-items:center; justify-content:center; color:rgba(255,255,255,.18); box-shadow:var(--shadow-lg); position:relative; overflow:hidden; }
.about-img::before { content:''; position:absolute; inset:0; background:linear-gradient(135deg,rgba(109,40,217,.14) 0%,transparent 60%); }
.about-img__placeholder { text-align:center; position:relative; z-index:1; }
.about-img__placeholder svg { width:72px; height:72px; margin:0 auto 14px; fill:none; stroke:currentColor; stroke-width:1; }
.about-img__placeholder p { font-size:var(--fs-xs); letter-spacing:.14em; text-transform:uppercase; }
.checklist { margin-top:28px; display:flex; flex-direction:column; gap:16px; }
.checklist li { display:flex; align-items:flex-start; gap:14px; font-size:var(--fs-base); line-height:1.65; color:var(--muted); }
.checklist-icon { width:22px; height:22px; background:var(--violet-soft); border-radius:50%; display:flex; align-items:center; justify-content:center; flex-shrink:0; margin-top:4px; }
.checklist-icon svg { width:11px; height:11px; fill:none; stroke:var(--violet); stroke-width:3; stroke-linecap:round; }

/* ── About page ── */
.about-visual { position:relative; }
.about-visual--glow .about-img-wrap { box-shadow:0 0 0 1px rgba(109,40,217,.12), 0 32px 64px rgba(13,21,38,.14); }
.about-img-wrap { aspect-ratio:3/4; background:linear-gradient(160deg,var(--navy-mid),var(--navy)); border-radius:var(--radius-lg); overflow:hidden; position:relative; display:flex; align-items:center; justify-content:center; }
.about-img-placeholder { text-align:center; color:rgba(255,255,255,.2); }
.about-img-placeholder svg { width:80px; height:80px; margin:0 auto 16px; fill:none; stroke:currentColor; stroke-width:1.2; }
.about-floating-stat { position:absolute; bottom:-12px; right:-12px; padding:18px 22px; border-radius:var(--radius-md); background:var(--violet); color:var(--white); text-align:center; box-shadow:0 12px 32px rgba(109,40,217,.4); border:2px solid var(--white); }
.about-floating-stat__n { font-family:var(--font-display); font-size:2rem; font-weight:500; line-height:1; display:block; }
.about-floating-stat__n small { font-size:.9rem; font-family:var(--font-body); font-weight:600; opacity:.9; }
.about-floating-stat__t { font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; opacity:.82; display:block; margin-top:5px; }
.about-content { padding:12px 0; }

/* ── Come funziona (homepage) ── */
.process-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(20px,3vw,40px); margin-top:56px; }
.process-step { padding:34px 30px; background:var(--white); border:1px solid var(--border-mid); border-radius:var(--radius-lg); transition:box-shadow var(--t-med),transform var(--t-med) var(--ease-out); }
.process-step:hover { box-shadow:var(--shadow-md); transform:translateY(-4px); }
.process-step__n { font-family:var(--font-display); font-size:3.4rem; font-weight:400; color:var(--violet-pale); line-height:1; margin-bottom:18px; border-bottom:1px solid var(--border); padding-bottom:18px; }
.process-step__title { font-family:var(--font-display); font-size:1.3rem; font-weight:500; color:var(--navy); margin-bottom:10px; }
.process-step__text { font-size:var(--fs-base); line-height:1.75; color:var(--muted); }

/* ── Come funziona (pagine interne - rail style) ── */
.section--process .process-rail { position:relative; max-width:740px; margin:0 auto; padding-left:8px; }
.section--process .process-rail::before { content:''; position:absolute; left:27px; top:48px; bottom:48px; width:2px; border-radius:2px; background:linear-gradient(180deg,var(--violet-soft),rgba(109,40,217,.35),var(--violet-soft)); }
.process-node { display:grid; grid-template-columns:60px 1fr; gap:clamp(22px,4vw,44px); padding:36px 0; position:relative; align-items:start; }
.process-node__mark { width:60px; height:60px; border-radius:50%; border:2px solid var(--violet); background:var(--white); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-size:1.15rem; font-weight:500; color:var(--violet); z-index:1; box-shadow:0 4px 16px var(--violet-soft); transition:transform var(--t-med) var(--ease-spring),background var(--t-fast),color var(--t-fast); }
.process-node:hover .process-node__mark { background:var(--violet); color:var(--white); transform:scale(1.08); }
.process-node__title { font-family:var(--font-display); font-size:1.4rem; font-weight:500; color:var(--navy); margin-bottom:10px; }
.process-node__text { font-size:var(--fs-base); line-height:1.78; color:var(--muted); }

/* ── CTA ── */
.cta-banner { background:var(--navy); padding:clamp(72px,11vw,110px) 0; position:relative; overflow:hidden; }
.cta-banner::before { content:''; position:absolute; inset:0; background:radial-gradient(ellipse 65% 75% at 100% 50%,rgba(109,40,217,.2) 0%,transparent 55%); pointer-events:none; }
.cta-banner__inner { position:relative; z-index:1; display:grid; grid-template-columns:1fr auto; gap:52px; align-items:center; }
.cta-banner__actions { display:flex; gap:14px; flex-wrap:wrap; align-items:center; flex-shrink:0; }
.cta-tel { display:block; font-family:var(--font-display); font-size:clamp(1.7rem,3.5vw,2.8rem); font-weight:500; color:var(--white); letter-spacing:-.02em; margin-top:10px; transition:color var(--t-fast); }
.cta-tel:hover { color:#c4b5fd; }

/* ── Page hero (pagine interne) ── */
.page-hero { background:var(--navy); padding:calc(var(--topbar-h) + var(--nav-h) + 72px) 0 80px; margin-top:calc(-1*(var(--topbar-h) + var(--nav-h))); position:relative; overflow:hidden; }
.page-hero::before { content:''; position:absolute; inset:0; background:radial-gradient(ellipse at 25% 30%,rgba(109,40,217,.2) 0%,transparent 50%); pointer-events:none; }
.page-hero__texture { position:absolute; inset:0; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M0 40L40 0' stroke='rgba(255,255,255,0.025)' stroke-width='1'/%3E%3C/svg%3E"); }
.page-hero__inner { position:relative; z-index:2; max-width:700px; }
.breadcrumb { display:flex; align-items:center; gap:9px; margin-bottom:24px; }
.breadcrumb a, .breadcrumb span { font-size:var(--fs-xs); font-weight:600; letter-spacing:.1em; color:rgba(255,255,255,.3); text-transform:uppercase; }
.breadcrumb a:hover { color:rgba(255,255,255,.7); }
.breadcrumb__sep { color:rgba(255,255,255,.14); }

/* ── Servizi page ── */
.service-full { padding:clamp(60px,9vw,100px) 0; border-bottom:1px solid var(--border); }
.service-full:last-child { border-bottom:none; }
.service-full__grid { display:grid; grid-template-columns:1fr 1fr; gap:clamp(44px,7vw,96px); align-items:center; }
.service-full__grid--rev { direction:rtl; }
.service-full__grid--rev > * { direction:ltr; }
.service-full__num { font-family:var(--font-display); font-style:italic; font-size:clamp(4.5rem,10vw,7rem); font-weight:400; color:var(--violet-pale); line-height:1; margin-bottom:-4px; }
.service-full__visual { background:var(--sand); border:1px solid var(--border-mid); border-radius:var(--radius-lg); aspect-ratio:4/3; display:flex; align-items:center; justify-content:center; overflow:hidden; transition:transform var(--t-slow) var(--ease-out),box-shadow var(--t-slow); }
.service-full:hover .service-full__visual { transform:translateY(-5px); box-shadow:var(--shadow-md); }
.service-full__visual svg { width:44%; fill:none; stroke:rgba(109,40,217,.25); stroke-width:1.5; }
.service-detail-list { margin:28px 0; display:flex; flex-wrap:wrap; gap:10px; }
.service-detail { display:inline-flex; align-items:center; gap:8px; padding:9px 14px 9px 12px; font-size:var(--fs-sm); color:var(--muted); border-left:3px solid var(--violet); background:var(--violet-soft); border-radius:0 var(--radius) var(--radius) 0; }
.service-detail svg { width:14px; height:14px; fill:none; stroke:var(--violet); stroke-width:2.5; flex-shrink:0; }

/* ── Valori ── */
.val-strip { border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
.val-item { display:grid; grid-template-columns:58px 1fr; gap:28px; align-items:start; padding:38px 0; border-bottom:1px solid var(--border); transition:padding-left var(--t-med) var(--ease-out); }
.val-item:last-child { border-bottom:none; }
.val-item:hover { padding-left:12px; }
.val-item__glyph { width:54px; height:54px; border-radius:var(--radius-md); background:var(--violet-soft); display:flex; align-items:center; justify-content:center; transition:background var(--t-fast),transform var(--t-fast) var(--ease-spring); }
.val-item:hover .val-item__glyph { background:var(--violet); transform:rotate(-6deg); }
.val-item__glyph svg { width:24px; height:24px; fill:none; stroke:var(--violet); stroke-width:1.7; }
.val-item:hover .val-item__glyph svg { stroke:var(--white); }
.val-item__title { font-family:var(--font-display); font-size:1.35rem; font-weight:500; color:var(--navy); margin-bottom:8px; }
.val-item__text { font-size:var(--fs-base); line-height:1.75; color:var(--muted); }

/* ── Contatti ── */
.contact-grid { display:grid; grid-template-columns:1fr 1.4fr; gap:clamp(44px,6vw,88px); align-items:start; }
.contact-info-cards { margin-top:30px; display:flex; flex-direction:column; }
.info-card { display:grid; grid-template-columns:48px 1fr; gap:18px; padding:22px 0; border-bottom:1px solid var(--border); transition:padding-left var(--t-fast); }
.info-card:first-child { padding-top:0; }
.info-card:hover { padding-left:7px; }
.info-card__icon { width:48px; height:48px; border-radius:var(--radius-md); background:var(--violet-soft); display:flex; align-items:center; justify-content:center; }
.info-card__icon svg { width:20px; height:20px; fill:none; stroke:var(--violet); stroke-width:2; }
.info-card__label { font-size:var(--fs-xs); font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--violet); margin-bottom:4px; }
.info-card__value { font-size:var(--fs-base); font-weight:600; color:var(--text); }
.info-card__sub { font-size:var(--fs-xs); color:var(--muted); margin-top:4px; }
.urgency-box { margin-top:28px; padding:22px 24px; border-radius:var(--radius-md); background:var(--navy); color:var(--white); border:1px solid rgba(255,255,255,.06); }
.urgency-box__head { display:flex; align-items:center; gap:10px; margin-bottom:9px; }
.urgency-box__head span:last-child { font-size:var(--fs-xs); font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#6ee7b7; }
.urgency-box p { font-size:var(--fs-sm); color:rgba(255,255,255,.62); line-height:1.7; }
.urgency-box strong { color:var(--white); }

.contact-form-wrap { background:var(--white); border:1px solid var(--border-mid); border-radius:var(--radius-lg); padding:clamp(28px,4vw,48px); box-shadow:var(--shadow); }
.form-title { font-family:var(--font-display); font-size:1.8rem; font-weight:500; color:var(--navy); margin-bottom:8px; }
.form-sub { font-size:var(--fs-sm); color:var(--muted); margin-bottom:28px; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form-group { margin-bottom:18px; }
.form-label { display:block; font-size:var(--fs-xs); font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin-bottom:8px; }
.form-input, .form-select, .form-textarea { width:100%; padding:14px 17px; font-family:var(--font-body); font-size:var(--fs-base); color:var(--text); background:var(--cream); border:1.5px solid var(--border-mid); border-radius:var(--radius-md); outline:none; transition:border-color var(--t-fast),box-shadow var(--t-fast),background var(--t-fast); }
.form-input:focus, .form-select:focus, .form-textarea:focus { border-color:var(--violet); background:var(--white); box-shadow:0 0 0 3px var(--violet-soft); }
.form-textarea { resize:vertical; min-height:120px; }
.form-select { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235a6478' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 15px center; padding-right:42px; cursor:pointer; -webkit-appearance:none; appearance:none; }
.form-privacy { display:flex; align-items:flex-start; gap:13px; margin:22px 0; font-size:var(--fs-sm); color:var(--muted); line-height:1.6; }
.form-privacy a { color:var(--violet); text-decoration:underline; }
.form-privacy input { margin-top:4px; accent-color:var(--violet); flex-shrink:0; width:16px; height:16px; }
.form-submit { width:100%; justify-content:center; }

/* ── Footer ── */
.site-footer { background:var(--navy); color:var(--white); padding:80px 0 0; }
.footer__grid { display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:52px; padding-bottom:56px; border-bottom:1px solid rgba(255,255,255,.06); }
.footer__logo { display:flex; align-items:center; gap:14px; margin-bottom:20px; }
.footer__logo-emblem { width:44px; height:44px; background:rgba(109,40,217,.28); border-radius:50%; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.footer__logo-emblem img { width:100%; height:100%; object-fit:cover; border-radius:50%; }
.footer__logo-name { font-family:var(--font-display); font-size:1.1rem; font-weight:500; display:block; }
.footer__logo-sub { font-size:var(--fs-xs); letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.28); }
.footer__desc { font-size:var(--fs-sm); line-height:1.8; color:rgba(255,255,255,.4); margin-bottom:14px; }
.footer__piva { font-size:var(--fs-xs); color:rgba(255,255,255,.2); }
.footer__col-title { font-size:var(--fs-xs); font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:rgba(255,255,255,.28); margin-bottom:18px; }
.footer__col ul { display:flex; flex-direction:column; gap:12px; }
.footer__col ul a { font-size:var(--fs-sm); color:rgba(255,255,255,.44); transition:color var(--t-fast); }
.footer__col ul a:hover { color:var(--white); }
.footer__contact-list { display:flex; flex-direction:column; gap:14px; }
.footer__contact-list li { display:flex; align-items:flex-start; gap:10px; font-size:var(--fs-sm); color:rgba(255,255,255,.44); }
.footer__contact-list svg { width:14px; height:14px; fill:none; stroke:rgba(255,255,255,.24); stroke-width:2; flex-shrink:0; margin-top:3px; }
.footer__contact-list a { color:rgba(255,255,255,.6); transition:color var(--t-fast); }
.footer__contact-list a:hover { color:var(--white); }
.footer__bottom { padding:24px 0; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:14px; }
.footer__bottom p { font-size:var(--fs-xs); color:rgba(255,255,255,.22); }
.footer__legal { display:flex; gap:22px; }
.footer__legal a { font-size:var(--fs-xs); color:rgba(255,255,255,.22); transition:color var(--t-fast); }
.footer__legal a:hover { color:rgba(255,255,255,.6); }

/* ── Cookie bar ── */
.cookie-bar { position:fixed; bottom:22px; left:22px; max-width:420px; background:var(--navy); border:1px solid rgba(255,255,255,.1); border-radius:var(--radius-md); padding:22px 24px; box-shadow:0 16px 50px rgba(0,0,0,.3); z-index:9999; animation:hero-enter .5s var(--ease-out) both; }
.cookie-bar[hidden] { display:none; }
.cookie-bar__inner p { font-size:var(--fs-sm); line-height:1.68; color:rgba(255,255,255,.55); margin-bottom:16px; }
.cookie-bar__inner a { color:#c4b5fd; text-decoration:underline; }
.cookie-bar__actions { display:flex; gap:10px; flex-wrap:wrap; }

/* ── Legal ── */
.legal-wrap { max-width:760px; margin:0 auto; padding:72px 28px; }
.legal-wrap h2 { font-family:var(--font-display); font-size:1.6rem; font-weight:500; color:var(--navy); margin:48px 0 14px; }
.legal-wrap h3 { font-family:var(--font-display); font-size:1.15rem; font-weight:500; color:var(--navy); margin:26px 0 10px; }
.legal-wrap p { font-size:var(--fs-base); line-height:1.88; color:var(--muted); margin-bottom:14px; }
.legal-wrap ul { list-style:disc; padding-left:22px; margin-bottom:14px; }
.legal-wrap li { font-size:var(--fs-base); line-height:1.82; color:var(--muted); margin-bottom:6px; }
.legal-wrap a { color:var(--violet); text-decoration:underline; }
.legal-wrap strong { color:var(--text); font-weight:600; }

/* ── Reveal ── */
.reveal { opacity:0; transform:translateY(28px); transition:opacity .7s var(--ease-out),transform .7s var(--ease-out); transition-delay:calc(var(--pi,0) * .07s); }
.svc-stream .reveal { transition-delay:var(--st,0s); }
.reveal.in { opacity:1; transform:translateY(0); }

/* ══════════════════════════════
   RESPONSIVE
══════════════════════════════ */

/* Tablet landscape */
@media (max-width: 1100px) {
  .hero__inner { grid-template-columns:1fr 0.75fr; gap:48px; }
  .services-head { grid-template-columns:1fr; gap:28px; }
  .svc-row { grid-template-columns:42px 46px 1fr 32px; }
  .footer__grid { grid-template-columns:1fr 1fr; gap:40px; }
  .contact-grid { grid-template-columns:1fr; gap:52px; }
  .cta-banner__inner { grid-template-columns:1fr; gap:36px; }
  .cta-banner__actions { flex-direction:row; }
}

/* Tablet portrait */
@media (max-width: 900px) {
  html { font-size:16px; }
  .hero__inner { grid-template-columns:1fr; }
  .hero__panel { display:none; }
  .hero__title { font-size:clamp(2.6rem,7vw,3.8rem); }
  .about-grid { grid-template-columns:1fr; gap:48px; }
  .about-img { max-width:460px; aspect-ratio:4/3; margin:0 auto; }
  .about-visual { max-width:460px; }
  .service-full__grid { grid-template-columns:1fr; gap:36px; }
  .service-full__grid--rev { direction:ltr; }
  .process-grid { grid-template-columns:1fr 1fr; gap:16px; }
  .stats-bar__inner { grid-template-columns:repeat(3,1fr); }
  .footer__grid { grid-template-columns:1fr 1fr; }
}

/* Mobile */
@media (max-width: 640px) {
  html { font-size:15.5px; }
  .section { padding:56px 0; }
  .header-top { display:none; }
  .nav__links, .nav__cta { display:none; }
  .nav__burger { display:flex; }
  .nav__inner { height:64px; }

  /* Hero mobile */
  .hero { min-height:auto; }
  .hero__inner { padding:64px 0 56px; }
  .hero__title { font-size:clamp(2.2rem,9vw,3rem); }
  .hero__sub { font-size:var(--fs-base); }
  .hero__actions { flex-direction:column; gap:12px; }
  .hero__actions .btn { width:100%; justify-content:center; }

  /* Stats bar mobile */
  .stats-bar__inner { grid-template-columns:1fr; }
  .stat-item { border-right:none; border-bottom:1px solid var(--border); padding:22px 24px; }
  .stat-item:last-child { border-bottom:none; }

  /* Servizi mobile */
  .services-head { gap:20px; }
  .svc-row { grid-template-columns:1fr 30px; padding:22px 18px; padding-right:14px; gap:14px; }
  .svc-row__num, .svc-row__icon { display:none; }
  .svc-row:hover { padding-left:24px; }

  /* About mobile */
  .about-img { max-width:100%; aspect-ratio:3/2; }
  .about-visual { max-width:100%; }
  .about-floating-stat { right:8px; bottom:-8px; }

  /* Process mobile */
  .process-grid { grid-template-columns:1fr; gap:14px; }
  .process-step { padding:26px 22px; }

  /* CTA mobile */
  .cta-banner__inner { grid-template-columns:1fr; gap:28px; }
  .cta-banner__actions { flex-direction:column; gap:12px; }
  .cta-banner__actions .btn { width:100%; justify-content:center; }

  /* Servizi page mobile */
  .service-full { padding:48px 0; }
  .service-full__num { font-size:3.5rem; }

  /* Valori mobile */
  .val-item { grid-template-columns:48px 1fr; gap:18px; padding:28px 0; }

  /* Contatti mobile */
  .form-row { grid-template-columns:1fr; }
  .contact-form-wrap { padding:24px 20px; }
  .contact-grid { gap:40px; }

  /* Footer mobile */
  .footer__grid { grid-template-columns:1fr; gap:36px; }
  .footer__bottom { flex-direction:column; text-align:center; }
  .footer__legal { justify-content:center; }

  /* Process rail (pagine interne) mobile */
  .section--process .process-rail::before { display:none; }
  .process-node { grid-template-columns:1fr; gap:16px; padding:28px 0; }
}

/* Extra small */
@media (max-width: 380px) {
  html { font-size:15px; }
  .hero__title { font-size:2rem; }
  .container { padding:0 16px; }
}
