/* ==========================================================================
   Vector Wealth Management – site 
   Palette (Linee guida): bianco #fff · blu chiaro #80a1c5 · blu intermedio #284164
   blu scuro #101b28 · grigio #363636 · rosso #c63633 — font Lato
   ========================================================================== */

/* ---------- Fonts (self-hosted Lato, see docs: put the woff2 files in /assets/fonts/) ---------- */
@font-face { font-family: "Lato"; font-style: normal; font-weight: 300; font-display: swap;
  src: local("Lato Light"), local("Lato-Light"), url("/assets/fonts/lato-300.woff2") format("woff2"); }
@font-face { font-family: "Lato"; font-style: normal; font-weight: 400; font-display: swap;
  src: local("Lato Regular"), local("Lato-Regular"), url("/assets/fonts/lato-400.woff2") format("woff2"); }
@font-face { font-family: "Lato"; font-style: normal; font-weight: 700; font-display: swap;
  src: local("Lato Bold"), local("Lato-Bold"), url("/assets/fonts/lato-700.woff2") format("woff2"); }

/* ---------- Tokens ---------- */
:root {
  --white: #fff;
  --blue-light: #80a1c5;
  --blue-mid: #284164;
  --blue-dark: #101b28;
  --grey: #363636;
  --red: #c63633;

  --bg: var(--blue-dark);
  --surface: #182638;          /* cards on the dark background */
  --text: #c9d4e0;             /* 11:1 on --bg */
  --text-muted: #9fb1c5;       /* 7.5:1 on --bg */
  --heading: var(--blue-light);/* 6.4:1 on --bg */
  --line: rgb(128 161 197 / 0.28);
  --header-bg: #efefef;
  --footer-text: #c3d2e3;      /* 6.6:1 on --blue-mid */
  --focus: #9ec0e6;

  --font: "Lato", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  --max: 1350px;               /* content width (header, footer, text) */
  --max-wide: 1920px;          /* news and team rows */
  --gutter: clamp(1rem, 4vw, 2.5rem);
  --header-h: 4.5rem;
  --section: clamp(3rem, 7vw, 6rem);
  --ease: cubic-bezier(.2, .7, .2, 1);

  /* Engine standard blocks (docs/BLOCKS.md) */
  --c-accent: var(--blue-light);
  --c-on-accent: var(--blue-dark);
  --c-border: var(--line);
  --c-text-muted: var(--text-muted);
  --c-radius: 0;
  --c-gap: clamp(1.5rem, 4vw, 4rem);
  --c-cta-bg: var(--surface);
  --c-cta-text: var(--white);
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + 1rem); }
body {
  margin: 0; min-height: 100vh; display: flex; flex-direction: column;
  background: var(--bg); color: var(--text);
  font: 400 1rem/1.65 var(--font); text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased;
}
main { flex: 1; overflow-x: clip; } /* full-bleed bands (calc(50% - 50vw)) include the scrollbar in 100vw: no sideways scroll */
img, svg, video { max-width: 100%; }
img { height: auto; }
h1, h2, h3, h4 { margin: 0 0 0.6em; color: var(--heading); font-weight: 700; line-height: 1.2; }
h1 { font-size: clamp(2rem, 4vw, 2.75rem); }
h2 { font-size: clamp(1.5rem, 2.6vw, 2.5rem); }
h3 { font-size: 1.25rem; }
p, ul, ol, blockquote, figure, table { margin: 0 0 1em; }
a { color: var(--blue-light); text-underline-offset: 0.18em; }
a:hover { color: var(--white); }
strong, b { font-weight: 700; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
::selection { background: var(--blue-light); color: var(--blue-dark); }

.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;
}
.skip-link {
  position: absolute; left: 1rem; top: -4rem; z-index: 100; padding: 0.75rem 1.25rem;
  background: var(--white); color: var(--blue-dark); font-weight: 700; transition: top 0.2s;
}
.skip-link:focus { top: 1rem; }

/* ---------- Layout ---------- */
.container { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }
.container-wide { width: min(100% - 2 * var(--gutter), var(--max-wide)); margin-inline: auto; }
.container--text { max-width: 60rem; }
.section { padding-block: var(--section); }
.section--tight { padding-top: 0; }
.section-title, .section-head h2 { font-size: clamp(1.6rem, 2.4vw, 2rem); }
.section-head { margin-bottom: 1.75rem; }
.section-head > :last-child { margin-bottom: 0; }
.section-head--center, .team-strip .section-title { text-align: center; }
.section-head--center h2 { color: var(--white); margin-bottom: 0.2em; }
.section-head--center p { color: var(--blue-light); font-weight: 700; }
.more-link { margin: 2.5rem 0 0; text-align: center; }
.more-link a { color: var(--text-muted); text-decoration: none; font-weight: 300; letter-spacing: 0.04em; }
.more-link a::before { content: "– "; }
.more-link a::after { content: " –"; }
.more-link a:hover { color: var(--white); }

/* Blocks areas (<!-- BLOCKS:MAIN /-->): every block gets vertical rhythm; full-bleed blocks touch each other. */
.blocks--page > .block { width: min(100% - 2 * var(--gutter), var(--max)); margin: var(--section) auto; }
.blocks--page > .block--banner, .blocks--page > .block--cta { width: 100%; }
.blocks--page > .block + .block { margin-top: 0; }
.blocks--page > .block--banner + .block, .blocks--page > .block--cta + .block { margin-top: var(--section); }
.blocks--page:not(:has(.block)) { display: none; }
.blocks > .block + .block { margin-top: clamp(2.5rem, 5vw, 4.5rem); }

/* ---------- Buttons ---------- */
.btn, .c-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  min-height: 2.75rem; padding: 0.55rem 1.6rem; border: 2px solid var(--blue-light); border-radius: 0;
  background: var(--blue-light); color: var(--blue-dark);
  font: 700 0.9375rem/1.2 var(--font); letter-spacing: 0.04em; text-transform: uppercase; text-decoration: none;
  cursor: pointer; transition: background-color 0.2s, color 0.2s, border-color 0.2s;
}
.btn:hover, .c-btn:hover { background: var(--white); border-color: var(--white); color: var(--blue-dark); }
.c-btn { background: transparent; color: var(--white); border-color: currentColor; }
.c-btn--primary { background: var(--blue-light); border-color: var(--blue-light); color: var(--blue-dark); }
.btn--small { min-height: 2.25rem; padding: 0.35rem 1rem; font-size: 0.8125rem; }
.btn--light { background: var(--white); border-color: var(--white); }

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 50; background: var(--header-bg); color: var(--blue-mid);
  box-shadow: 0 1px 0 rgb(0 0 0 / 0.06);
}
.site-header__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; min-height: var(--header-h); gap: 0 1.5rem; }
.brand { display: inline-flex; padding-block: 0.75rem; }
.brand img { display: block; width: 338px; max-width: 100%; height: auto; }
.site-nav { display: flex; align-items: center; gap: 0.25rem 1.25rem; font-size: 0.875rem; }
/* Search (magnifier, popup of the engine: <!-- SEARCH:BUTTON /-->): last item of the menu, inside the mobile menu too */
.site-nav { margin-left: auto; }
.site-header .search-button { color: var(--blue-mid); }
.site-header .search-button:hover, .site-header .search-button:focus-visible { background: rgb(40 65 100 / 0.1); }
.search-dialog { background: var(--surface); color: var(--text); border: 1px solid var(--line); }
.search-dialog .search__input { color: var(--white); border-color: var(--blue-light); }
.search-dialog .search__link { color: var(--blue-light); }
.search-dialog .search__link:hover { color: var(--white); }
.search-dialog__close { color: var(--blue-light); }
.site-nav a { color: var(--blue-mid); text-decoration: none; }

.nav { list-style: none; margin: 0; padding: 0; }
.nav--main { display: flex; flex-wrap: wrap; align-items: center; gap: 0 1.35rem; }
.nav--main .nav__item { position: relative; }
.nav--main .nav__link { display: inline-flex; align-items: center; min-height: 2.75rem; position: relative; font-weight: 400; }
.nav--main .nav__link::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0.55rem; height: 2px;
  background: var(--red); transform: scaleX(0); transform-origin: left; transition: transform 0.25s var(--ease);
}
.nav--main .nav__link:hover::after, .nav--main .is-current::after, .nav--main .is-active > .nav__link::after { transform: scaleX(1); }
.nav--main .is-current, .nav--main .is-active > .nav__link { font-weight: 700; }
.nav__link--label { cursor: default; }
.nav__sub {
  list-style: none; margin: 0; padding: 0.5rem 0; position: absolute; top: 100%; left: -1rem; min-width: 14rem; z-index: 5;
  background: var(--header-bg); box-shadow: 0 10px 24px rgb(0 0 0 / 0.18);
  opacity: 0; visibility: hidden; translate: 0 0.4rem; transition: opacity 0.2s, translate 0.2s, visibility 0.2s;
}
.nav__sub .nav__link { display: flex; min-height: 2.5rem; padding: 0 1rem; }
.nav__sub .nav__link::after { display: none; }
.nav__item--has-children:hover > .nav__sub, .nav__item--has-children:focus-within > .nav__sub { opacity: 1; visibility: visible; translate: 0 0; }

.lang-switch { display: flex; list-style: none; margin: 0; padding: 0 0 0 1.25rem; border-left: 1px solid var(--blue-mid); gap: 0.85rem; }
.lang-switch__link { display: inline-flex; align-items: center; min-height: 2.75rem; font-size: 0.8125rem; font-weight: 400; }
.lang-switch__link.is-current { font-weight: 700; }
.lang-switch__link:hover { color: var(--red); }

.nav-toggle { display: none; }
@media (max-width: 71.99rem) {
  .js .nav-toggle {
    display: grid; place-items: center; width: 2.75rem; height: 2.75rem; margin-right: -0.5rem;
    border: 0; background: transparent; cursor: pointer;
  }
  .nav-toggle__bar, .nav-toggle__bar::before, .nav-toggle__bar::after {
    content: ""; display: block; position: relative; width: 1.5rem; height: 2px; background: var(--blue-mid);
    transition: transform 0.25s var(--ease), background-color 0.2s;
  }
  .nav-toggle__bar::before { position: absolute; top: -7px; }
  .nav-toggle__bar::after { position: absolute; top: 7px; }
  .nav-toggle[aria-expanded="true"] .nav-toggle__bar { background: transparent; }
  .nav-toggle[aria-expanded="true"] .nav-toggle__bar::before { transform: translateY(7px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] .nav-toggle__bar::after { transform: translateY(-7px) rotate(-45deg); }

  .brand img { width: clamp(170px, 55vw, 260px); } /* logo and menu button on one line down to 320px */
  .site-nav { width: 100%; flex-direction: column; align-items: stretch; padding-bottom: 1rem; font-size: 1rem; }
  .site-header .search-button { align-self: flex-start; width: 2.75rem; height: 2.75rem; margin: 0.25rem 0 0 -0.65rem; }
  .js .site-nav { display: none; }
  .js .site-nav.is-open { display: flex; }
  .nav--main { flex-direction: column; align-items: stretch; }
  .nav--main .nav__link { width: 100%; border-bottom: 1px solid rgb(40 65 100 / 0.12); }
  .nav--main .nav__link::after { bottom: 0; width: 3rem; }
  .nav__sub { position: static; opacity: 1; visibility: visible; translate: none; box-shadow: none; padding: 0 0 0 1rem; }
  .lang-switch { border-left: 0; padding: 0.5rem 0 0; }
}

/* ---------- Hero (block "hero") ---------- */
.hero {
  position: relative; isolation: isolate; display: flex; align-items: center; overflow: hidden;
  min-height: clamp(24rem, 62vh, 44rem); color: var(--white); background: var(--blue-dark);
}
.hero--full { min-height: max(28rem, calc(100svh - var(--header-h))); }
.hero__media { position: absolute; inset: 0; z-index: -1; }
.hero__media::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(90deg, rgb(16 27 40 / 0.55) 0%, rgb(16 27 40 / 0.2) 55%, rgb(16 27 40 / 0) 80%);
}
.hero__img, .slider__item { transition: opacity 1.4s ease; }
.hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.slider__item:not(.is-active) { opacity: 0; }
.hero__inner { padding-block: 4rem; padding-left: clamp(0rem, 6vw, 6.5rem); }
.hero__kicker { margin: 0 0 0.35rem; font-size: clamp(1.15rem, 2vw, 1.75rem); font-weight: 300; }
.hero__title {
  margin: 0; color: var(--white); white-space: pre-line;
  font-size: clamp(2rem, 4.2vw, 3.4rem); line-height: 1.05; font-weight: 400; text-transform: uppercase;
  text-shadow: 0 1px 18px rgb(0 0 0 / 0.25);
}
.hero__text { margin: 2.25rem 0 0; white-space: pre-line; text-transform: uppercase; font-size: clamp(0.95rem, 1.3vw, 1.15rem); line-height: 1.35; }
.hero__text::first-line { font-weight: 700; }
.hero__actions { margin: 2rem 0 0; }
.hero--thin .hero__title { font-weight: 300; letter-spacing: 0.32em; line-height: 1.5; font-size: clamp(1.8rem, 3.6vw, 3rem); }
.hero--thin .hero__media::after { background: none; }
@media (prefers-reduced-motion: no-preference) {
  .hero__img.is-active { animation: hero-zoom 16s ease-out both; }
  .hero__inner > * { animation: rise 1s var(--ease) both; }
  .hero__inner > :nth-child(2) { animation-delay: 0.12s; }
  .hero__inner > :nth-child(3) { animation-delay: 0.24s; }
  .hero__inner > :nth-child(4) { animation-delay: 0.36s; }
}
@keyframes hero-zoom { from { transform: scale(1.08); } to { transform: scale(1); } }
@keyframes rise { from { opacity: 0; transform: translateY(1.25rem); } }
.slider-pause {
  position: absolute; right: var(--gutter); bottom: 1.25rem; z-index: 2; display: grid; place-items: center;
  width: 2.75rem; height: 2.75rem; border: 1px solid rgb(255 255 255 / 0.6); border-radius: 50%;
  background: rgb(16 27 40 / 0.35); color: var(--white); cursor: pointer;
}
.slider-pause:hover { background: rgb(16 27 40 / 0.7); }
.slider-pause::before { content: ""; width: 0.7rem; height: 0.8rem; border-inline: 3px solid currentColor; }
.slider-pause[aria-pressed="true"]::before { width: 0; height: 0; border-style: solid; border-width: 0.45rem 0 0.45rem 0.75rem; border-color: transparent currentColor; translate: 0.1rem 0; }
.c-split__media .slider-pause { bottom: 0.75rem; right: 0.75rem; }

/* ---------- Intro: title + text on two columns (regions PAGE:INTRO-*) ---------- */
.intro { max-width: 70rem; margin-inline: auto; }
.intro__title h2 { margin-bottom: 1.25rem; }
@media (min-width: 48rem) {
  .intro__text { column-count: 2; column-gap: clamp(2rem, 6vw, 5.5rem); }
  .intro__text > * { break-inside: avoid; }
}
.intro + .block, .intro + .features { margin-top: clamp(3rem, 6vw, 5rem); }

/* ---------- Features (block "features") ---------- */
.features__title {
  max-width: 62rem; margin: 0 auto clamp(2.5rem, 5vw, 4rem); text-align: center; white-space: pre-line;
  color: var(--white); font-size: clamp(1.1rem, 1.7vw, 1.4rem); line-height: 1.45;
}
.features__list { list-style: none; margin: 0 auto; padding: 0; display: grid; gap: clamp(2rem, 4vw, 3.5rem) clamp(1.5rem, 4vw, 4rem); }
.feature { position: relative; margin: 0; }
.feature__icon { display: block; color: var(--blue-light); }
img.feature__icon { object-fit: contain; } /* SVG of Media → Icone, as they are (the animated ones loop every 7 s) */
/* "Icone grandi con link": only the shape of the SVG, coloured by the site (white, light blue on hover). */
.feature__icon--mask {
  background-color: currentColor;
  -webkit-mask: var(--icon) center / contain no-repeat; mask: var(--icon) center / contain no-repeat;
}
.feature__title { margin: 0; white-space: pre-line; }
.feature__link { color: inherit; text-decoration: none; }
.feature__link::after { content: ""; position: absolute; inset: -0.75rem; }
.feature__link:focus-visible { outline: none; }
.feature:has(.feature__link:focus-visible) { outline: 3px solid var(--focus); outline-offset: 0.75rem; }

.features--icons .features__list, .features--links .features__list { max-width: 68rem; text-align: center; }
@media (min-width: 40rem) {
  .features--cols-2 .features__list { grid-template-columns: repeat(2, 1fr); max-width: 60rem; }
  .features--cols-3 .features__list { grid-template-columns: repeat(3, 1fr); }
  .features--cols-4 .features__list { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 64rem) { .features--cols-4 .features__list { grid-template-columns: repeat(4, 1fr); } }

.features--icons .feature__icon { 
  width: clamp(3rem, 7vw, 4.75rem);
  height: clamp(3rem, 7vw, 4.75rem);
  margin: 0 auto 1.75rem; 
}
.features--icons .feature__title { color: var(--text); font-size: 1rem; font-weight: 400; line-height: 1.45; }
.features--icons .feature__text { margin-top: 0.5rem; font-size: 0.9375rem; color: var(--text-muted); }
.features--links .feature__icon {
  width: clamp(4rem, 7vw, 7.25rem);
  height: clamp(4rem, 7vw, 7.25rem);
  margin: 0 auto 2.75rem;
  color: var(--white);
  transition: transform 0.35s var(--ease), color 0.25s;
}
.features--links .feature__title { color: var(--white); font-size: 0.9375rem; letter-spacing: 0.06em; text-transform: uppercase; }
.features--links .feature:hover .feature__icon { transform: translateY(-6px); color: var(--blue-light); }
.features--links .feature:hover .feature__title { color: var(--blue-light); }

.features--rows .features__list { max-width: 72rem; grid-template-columns: 1fr; gap: clamp(2.5rem, 5vw, 4rem); }
.features--rows .feature { display: grid; gap: 1rem; align-items: center; }
.features--rows .feature__icon { width: 3.5rem; height: 3.5rem; }
.features--rows .feature__title { font-size: clamp(1.35rem, 2.2vw, 1.75rem); margin-bottom: 0.75rem; }
@media (min-width: 48rem) {
  .features--rows .feature { grid-template-columns: 7rem 1fr; gap: 2rem; }
  .features--rows .feature__icon { width: 4.25rem; height: 4.25rem; justify-self: center; }
}

/* ---------- Banner (block "banner") ---------- */
.banner {
  position: relative; isolation: isolate; overflow: hidden; display: grid; place-items: center;
  min-height: clamp(14rem, 30vw, 36rem); padding-block: 3rem; text-align: center; color: var(--white); background: var(--blue-dark);
}
.banner__img { position: absolute; inset: -8% 0; z-index: -1; width: 100%; height: 116%; object-fit: cover; will-change: transform; }
/* Animated beam (assets/js/beam.js): the canvas fades in over the static image once ready. */
.banner--beam .banner__img { inset: 0; height: 100%; object-position: center bottom; will-change: auto; } /* same crop as the canvas */
.beam-layer { position: absolute; inset: 0; z-index: -1; overflow: hidden; pointer-events: none; }
.beam-layer__canvas { display: block; width: 100%; height: 100%; opacity: 0; transition: opacity 0.6s var(--ease); }
.beam-layer.is-ready .beam-layer__canvas { opacity: 1; }
/* Bands with the wave as CSS background (team profiles, quotes on a band): site.js adds a .beam-layer inside. */
.profile__joined, .quote--band { position: relative; isolation: isolate; overflow: hidden; }
.banner__inner > :last-child { margin-bottom: 0; }
.banner__title { margin: 0; color: var(--white); white-space: pre-line; text-shadow: 0 2px 22px rgb(16 27 40 / 0.9); }
.banner--headline .banner__title { font-size: clamp(1.75rem, 3.4vw, 2.9rem); font-weight: 300; letter-spacing: 0.01em; }
.banner--quote .banner__title { font-size: clamp(1.05rem, 1.75vw, 1.45rem); font-weight: 700; line-height: 1.55; }
.banner__text { margin: 1rem auto 0; max-width: 50rem; }
.banner__link { margin: 0.75rem 0 0; }
.banner__link a { color: var(--white); text-decoration: none; font-size: 0.9375rem; }
.banner__link a::before { content: "> "; }
.banner__link a:hover { color: var(--blue-light); text-decoration: underline; }

/* ---------- Split: image + text (site override of "split") ---------- */
.c-split { gap: clamp(2rem, 5vw, 5rem); margin: 0; }
.c-split__media[data-slider] { display: grid; position: relative; }
.c-split__media .slider__item { grid-area: 1 / 1; width: 100%; aspect-ratio: 1200 / 860; object-fit: cover; }
.c-split__text h2 { font-size: clamp(1.5rem, 2.4vw, 1.9rem); }
.c-split__text { font-size: 0.9375rem; }
@media (min-width: 48rem) { .c-split { grid-template-columns: 1fr 1fr; } }

/* ---------- Text on columns (block "text-columns") ---------- */
.text-cols { max-width: 72rem; margin-inline: auto; }
.text-cols__title { display: flex; align-items: center; gap: 0.9rem; font-size: clamp(1.5rem, 2.4vw, 1.9rem); }
.text-cols__icon { width: auto; height: 1.6rem; flex: none; box-shadow: 0 0 0 1px rgb(255 255 255 / 0.08); }
@media (min-width: 48rem) {
  .text-cols--2 .text-cols__body { column-count: 2; column-gap: clamp(2rem, 6vw, 5rem); }
  .text-cols--2 .text-cols__body > * { break-inside: avoid; }
}
.text-cols__actions { margin: 1.5rem 0 0; text-align: right; }
.text-cols__actions--left { text-align: left; }
.text-cols__actions--center { text-align: center; }
/* "Apre il modulo": the contact form right after stays closed until the button opens it (site.js; without JS it is visible). */
.js .block:has([data-opens-form]) + .block--form:not(.is-open) { display: none; }
.block:has([data-opens-form]) + .block--form { scroll-margin-top: 6rem; }

/* ---------- Stats (block "stats") ---------- */
.stats__list {
  list-style: none; margin: 0; padding: clamp(1.5rem, 3vw, 2.5rem) 0; display: grid; gap: 1.5rem;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); border-block: 1px solid var(--line); text-align: center;
}
.stats__list strong { display: block; color: var(--blue-light); font-size: clamp(2rem, 4vw, 3rem); font-weight: 300; line-height: 1.1; }
.stats__list span { color: var(--text-muted); text-transform: uppercase; font-size: 0.8125rem; letter-spacing: 0.08em; }

/* ---------- Engine standard blocks: tuning on the dark theme ---------- */
.c-block-title { font-size: clamp(1.5rem, 2.4vw, 1.9rem); }
.c-accordion__title { color: var(--white); }
.c-accordion__title:hover { color: var(--blue-light); }
.c-tabs__tab { color: var(--text-muted); }
.c-tabs__tab[aria-selected="true"] { color: var(--white); }
.c-cta { padding-block: clamp(2.5rem, 5vw, 4rem); border-top: 1px solid var(--line); }
.c-cta__inner { width: min(100% - 2 * var(--gutter), var(--max)); }
.c-cta__text h2 { font-size: clamp(1.4rem, 2.4vw, 1.9rem); }
.c-cta .c-btn--primary { background: var(--blue-light); border-color: var(--blue-light); color: var(--blue-dark); }
.c-cta .c-btn--primary:hover { background: var(--white); border-color: var(--white); }
.c-media figcaption { color: var(--text-muted); }
.c-video { background: var(--surface); }
main > .c-cta, .block--cta .c-cta { margin-top: 0; }

/* ---------- Gallery (engine markup) ---------- */
.gallery { display: grid; gap: 0.75rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.gallery__item { margin: 0; }
.gallery__link { display: block; overflow: hidden; }
.gallery__img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform 0.5s var(--ease); }
.gallery__link:hover .gallery__img { transform: scale(1.04); }
.gallery__caption { margin-top: 0.4rem; font-size: 0.875rem; color: var(--text-muted); }
.lightbox__btn { background: rgb(128 161 197 / 0.25); }

/* ---------- Rich text ---------- */
.prose > :last-child { margin-bottom: 0; }
.prose h2 { margin-top: 1.6em; }
.prose h3 { margin-top: 1.4em; color: var(--white); }
.prose h4 { margin-top: 1.2em; color: var(--white); font-size: 1.05rem; }
.prose > h2:first-child, .prose > h3:first-child { margin-top: 0; }
.prose ul, .prose ol { padding-left: 1.25em; }
.prose li + li { margin-top: 0.35em; }
.prose ul li::marker { color: var(--blue-light); }
.prose img { display: block; }
.prose figure img { width: 100%; }
.prose figcaption { margin-top: 0.4em; font-size: 0.875rem; color: var(--text-muted); }
.prose table { width: 100%; border-collapse: collapse; font-size: 0.9375rem; }
.prose th, .prose td { padding: 0.6rem 0.75rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.prose th { color: var(--white); }
.prose blockquote, .quote { margin: 1.5em 0; padding: 0.25em 0 0.25em 1.25em; border-left: 3px solid var(--red); color: var(--white); font-size: 1.1rem; }
.quote footer { margin-top: 0.5em; font-size: 0.875rem; color: var(--text-muted); }
.quote--band, .prose blockquote.quote--band {
  margin: clamp(2.5rem, 6vw, 5rem) calc(50% - 50vw); padding: clamp(4rem, 9vw, 8rem) var(--gutter); border: 0;
  background: var(--blue-dark) url("/assets/img/band-wave.jpg") center bottom / cover no-repeat; text-align: center;
  font-size: clamp(1.1rem, 2vw, 1.6rem); font-weight: 700;
}
.quote--band p { max-width: 60rem; margin-inline: auto; text-shadow: 0 2px 18px rgb(16 27 40 / 0.9); }
.cols { display: grid; gap: 1.5rem clamp(2rem, 5vw, 4rem); }
@media (min-width: 48rem) { .cols--2 { grid-template-columns: repeat(2, 1fr); } .cols--3 { grid-template-columns: repeat(3, 1fr); } }
.cols > div > :last-child { margin-bottom: 0; }

/* ---------- Page header (legal pages, components) ---------- */
.page-header { padding-block: clamp(3rem, 6vw, 5rem) 1.5rem; border-bottom: 1px solid var(--line); margin-bottom: clamp(2rem, 5vw, 3.5rem); }
.page-header h1 { margin-bottom: 0.3em; }
.page-header p { max-width: 50rem; color: var(--text-muted); }
.page-title { font-size: clamp(1.8rem, 3vw, 2.4rem); margin-bottom: 1.5em; }

/* ---------- News (engine markup) ---------- */
.news-list { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(1.25rem, 2vw, 2rem); grid-template-columns: repeat(auto-fill, minmax(min(100%, 16.5rem), 1fr)); }
/* Latest and related news: the columns fill the row (auto-fit), but a card never grows past 24rem, so one to three
   news keep about the size they have in a full row of four instead of stretching over the whole row. */
.news-list--latest, .news-list--related { grid-template-columns: repeat(auto-fit, minmax(min(100%, 16.5rem), 1fr)); }
.news-list--latest > .news-card, .news-list--related > .news-card { max-width: 24rem; }
.news-card { display: flex; background: var(--surface); box-shadow: 4px 6px 14px rgb(0 0 0 / 0.45); transition: transform 0.3s var(--ease), box-shadow 0.3s; }
.news-card:hover { transform: translateY(-4px); box-shadow: 6px 12px 24px rgb(0 0 0 / 0.5); }
.news-card__link { display: flex; flex-direction: column; width: 100%; padding-bottom: 1.4rem; color: var(--text); text-decoration: none; }
.news-card__img { order: -1; display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--blue-mid); margin-bottom: 1rem; }
.news-card__date { padding-inline: 1rem; font-size: 0.75rem; color: var(--text-muted); }
.news-card__title { margin: 0.5rem 0 0.6rem; padding-inline: 1rem; color: var(--white); font-size: 1.125rem; line-height: 1.25; }
.news-card__excerpt { margin: 0; padding-inline: 1rem; font-size: 0.8125rem; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; overflow: hidden; }
.news-card__link:hover .news-card__title { color: var(--blue-light); }
.news-card__link:focus-visible { outline-offset: -3px; }
.news-empty { color: var(--text-muted); }
.pager { display: flex; justify-content: center; gap: 1rem; margin-top: 3rem; }
.pager a { display: inline-flex; align-items: center; min-height: 2.5rem; padding: 0.3rem 1rem; border: 1px solid var(--blue-light); color: var(--blue-light); text-decoration: none; font-size: 0.875rem; }
.pager a:hover { background: var(--blue-light); color: var(--blue-dark); }
.pager { flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.pager .pager__page, .pager .pager__page.is-current { min-width: 2.5rem; justify-content: center; padding-inline: 0.5rem; }
.pager__page.is-current { display: inline-flex; align-items: center; min-height: 2.5rem; background: var(--blue-light); color: var(--blue-dark); font-size: 0.875rem; font-weight: 700; }
.pager__gap { color: var(--text-muted); }

/* News categories (filters of the design: All · Market Mirror · Future Mirror · Swiss Mirror · News) */
.news-filter { margin: 0 0 2rem; }
.news-filter__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; }
.news-filter__link {
  display: inline-flex; align-items: center; min-height: 2.25rem; padding: 0.2rem 0.6rem; border: 1px solid var(--blue-light);
  color: var(--blue-light); text-decoration: none; font-size: 0.875rem; font-weight: 700;
}
.news-filter__link:hover, .news-filter__link.is-current { background: var(--blue-light); color: var(--blue-dark); }
.article__category { color: var(--blue-light); }

/* Site search (marker SEARCH, in the newsletter page) */
.search__label { color: var(--blue-light); font-weight: 700; }
.search__input { min-height: 2.75rem; padding: 0.55rem 0.9rem; border: 1px solid var(--blue-mid); border-radius: 0; background: transparent; color: var(--white); font-size: 0.9375rem; }
.search__input::placeholder { color: #8397ad; opacity: 1; }
.search__input:focus-visible { border-color: var(--blue-light); outline: 2px solid var(--blue-light); outline-offset: 0; }
.search__status { color: var(--text-muted); }
.search__results:empty { display: none; }
.search__results { max-height: 28rem; overflow-y: auto; padding: 0 1rem; background: var(--surface); box-shadow: 4px 6px 14px rgb(0 0 0 / 0.45); }
.search__result { border-top-color: var(--line); }
.search__result:first-child { border-top: 0; }
.search__link { color: var(--white); text-decoration: none; }
.search__link:hover { color: var(--blue-light); }
.search__kind { color: var(--text-muted); }
.search__snippet { color: var(--text); }
.search__snippet mark { background: rgb(128 161 197 / 0.35); color: var(--white); }
.related { margin-top: var(--section); }
.related__title { color: var(--blue-light); font-size: clamp(1.25rem, 2vw, 1.6rem); margin-bottom: 1.5rem; }
.home-news .section-head h2 { color: var(--blue-light); }
/* One column per category: 4 per row, 2 below 900px, 1 below 450px */
.home-news .blocks--news { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2.5rem clamp(1.25rem, 2vw, 2rem); }
@media (max-width: 56.24rem) { .home-news .blocks--news { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 28.1rem) { .home-news .blocks--news { grid-template-columns: 1fr; } }
.home-news .block--news .news-card { height: 385px; }
@media (max-width: 28.1rem) { .home-news .block--news .news-card { height: auto; max-width: none; } }
.home-news .block--news .news-card .news-card__excerpt {
 overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  line-clamp: 4;
  -webkit-box-orient: vertical;
}

/* Home: one "news" block per category (area BLOCKS:NEWS) */
.blocks--news { display: grid; gap: clamp(2.5rem, 5vw, 4rem); }
.blocks--news > .block, .blocks--news > .block + .block { margin: 0; } /* spacing = grid gap */
.blocks--news > .block:has(.news-empty) { display: none; } /* category without published news */
.c-news__title { margin: 0 0 1.25rem; padding-bottom: 0.6rem; border-bottom: 1px solid var(--line); color: var(--white); font-size: clamp(1.15rem, 1.6vw, 1.35rem); letter-spacing: 0.02em; }
.c-news__more { margin: 1.25rem 0 0; text-align: right; }
.c-news__more a { color: var(--text-muted); text-decoration: none; font-size: 0.875rem; font-weight: 300; letter-spacing: 0.04em; }
.c-news__more a::after { content: " →"; }
.c-news__more a:hover { color: var(--white); }

.article { max-width: 52rem; margin-inline: auto; }
.article__header { margin-bottom: 2rem; }
.article__meta { font-size: 0.875rem; color: var(--text-muted); }
.article__title { color: var(--white); font-size: clamp(1.8rem, 3.6vw, 2.6rem); }
/* The excerpt is shown on the cards only: in the imported newsletters it repeats the opening lines of the text. */
.article__excerpt { display: none; }
.article__cover { display: block; width: 100%; margin-bottom: 2.5rem; }
.back-link { display: inline-block; margin-top: 2.5rem; color: var(--text-muted); text-decoration: none; font-size: 0.9375rem; }
.back-link:hover { color: var(--white); }

/* ---------- Team (engine markup) ---------- */
.team-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(2rem, 4vw, 3.5rem) clamp(1.25rem, 3vw, 2.5rem); grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr)); }
.team-card { text-align: center; }
.team-card__link { display: block; color: var(--text); text-decoration: none; }
.team-card__photo { display: block; width: 100%; aspect-ratio: 600 / 780; object-fit: cover; object-position: top; border-bottom: 1px solid var(--blue-mid); transition: border-color 0.25s, filter 0.3s; }
.team-card__link:hover .team-card__photo, .team-card__link:focus-visible .team-card__photo { border-bottom: 1px solid var(--red); box-shadow: 0 2px 0 var(--red); filter: brightness(1.1); }
.team-card__name { margin: 0.9rem 0 0.1rem; color: var(--white); font-size: 1.125rem; font-weight: 400; }
.team-card__role { margin: 0; font-size: 0.8125rem; color: var(--text-muted); }
.team-card__more { display: block; margin-top: 0.15rem; font-size: 0.6875rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--blue-light); }
.team-card__more::before { content: "- "; }
.team-card__more::after { content: " -"; }
.team-empty { color: var(--text-muted); }

/* Horizontal carousel (TEAM:LIST in [data-carousel]): scrollable without JS, arrows with JS. */
.carousel { position: relative; }
.carousel .team-grid {
  grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: max(12rem, calc((100% - 4 * 2rem) / 5));
  gap: 2rem; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; overscroll-behavior-x: contain; padding-bottom: 0.75rem;
  scrollbar-color: var(--blue-mid) transparent;
}
.carousel .team-card { scroll-snap-align: start; }
.js .carousel.is-enhanced .team-grid { scrollbar-width: none; }
.js .carousel.is-enhanced .team-grid::-webkit-scrollbar { display: none; }
.carousel__btn {
  position: absolute; top: 40%; z-index: 2; display: grid; place-items: center; width: 2.75rem; height: 2.75rem;
  border: 0; background: transparent; color: var(--white); cursor: pointer; translate: 0 -50%;
}
.carousel__btn::before { content: ""; width: 1.1rem; height: 1.1rem; border-left: 2px solid currentColor; border-bottom: 2px solid currentColor; rotate: 45deg; translate: 0.2rem 0; }
.carousel__btn--next::before { rotate: -135deg; translate: -0.2rem 0; }
/* Outside the list, but never past the edge of the window (50% − 50vw = distance from the carousel to the edge; +1rem
   leaves room for the vertical scrollbar, which 100vw includes): otherwise the page scrolls sideways. */
.carousel__btn--prev { left: max(-0.5rem, calc(50% - 50vw + 1rem)); }
.carousel__btn--next { right: max(-0.5rem, calc(50% - 50vw + 1rem)); }
.carousel__btn:hover { color: var(--blue-light); }
.carousel__btn[disabled] { opacity: 0.25; cursor: default; }
@media (min-width: 80rem) {
  .carousel__btn--prev { left: max(-3.25rem, calc(50% - 50vw + 1rem)); }
  .carousel__btn--next { right: max(-3.25rem, calc(50% - 50vw + 1rem)); }
}
@media (max-width: 47.99rem) { .carousel__btn { display: none; } }
.team-strip .container-wide, .home-news .container-wide { max-width: 1500px; }

/* Profile page */
.profile { display: grid; gap: 1.5rem clamp(2rem, 6vw, 6rem); max-width: 72rem; margin-inline: auto; }
.profile__photo { display: block; width: 100%; max-width: 26rem; border-bottom: 1px solid var(--blue-mid); }
.profile__name { margin: 0; font-size: clamp(1.6rem, 2.6vw, 2rem); }
.profile__role { margin: 0 0 1.25rem; color: var(--white); font-size: clamp(1.25rem, 2vw, 1.6rem); font-weight: 700; line-height: 1.25; }
/* Structured fields (admin → Team): highlights, phone, links beside the photo; biography in two columns; "joined" band */
.profile__highlights { list-style: none; margin: 0 0 1.25rem; padding: 0; font-size: 1.2rem; }
.profile__highlights li::before { content: "- "; }
.profile__highlights li + li { margin-top: 1em; }
.profile__phone { margin: 0 0 1rem; font-size: 0.9375rem; }
.profile__phone a { color: inherit; text-decoration: none; }
.profile__phone a:hover { text-decoration: underline; }
.profile__links { list-style: none; display: flex; gap: 0.75rem; margin: 0 0 1rem; padding: 0; }
.profile__links a {
  display: block; width: 2.4rem; height: 2.4rem; font-size: 0; color: transparent;
  background: center / contain no-repeat url("/media/icone/link.svg");
  transition: transform 0.2s;
}
.profile__links a[href*="linkedin"] { background-image: url("/media/icone/linkedin.svg"); }
.profile__links a[href^="mailto:"] { background-image: url("/media/icone/mail.svg"); }
.profile__links a:hover { transform: scale(1.08); }
.profile__bio > :last-child { margin-bottom: 0; }
.profile__bio p { break-inside: avoid; }
.profile__joined {
  margin: clamp(2.5rem, 6vw, 5rem) calc(50% - 50vw) 0; padding: clamp(4rem, 9vw, 8rem) var(--gutter); border: 0;
  background: var(--blue-dark) url("/assets/img/band-wave.jpg") center bottom / cover no-repeat; color: var(--white); text-align: center;
  font-size: clamp(1.1rem, 2vw, 1.6rem); font-weight: 700;
}
.profile__joined p { max-width: 60rem; margin: 0 auto; text-shadow: 0 2px 18px rgb(16 27 40 / 0.9); }
@media (min-width: 48rem) {
  .profile { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; }
  .profile__body { display: contents; }
  .profile__photo { grid-column: 1; grid-row: 1 / span 6; justify-self: end; align-self: end; }
  .profile__body > * { grid-column: 2; }
  .profile__name { align-self: end; margin-top: 3rem; }
  .profile__bio, .profile__joined, .profile .back-link { grid-column: 1 / -1; }
  .profile__bio { margin-top: 2.5rem; columns: 2; column-gap: clamp(2rem, 5vw, 4rem); }
  .profile .back-link { justify-self: start; }
}

/* Team section: hero only on the list, "other members" only on profiles (needs :has, graceful otherwise). */
.dynamic--team .page-title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.dynamic--team:has(.profile) .dynamic__hero { display: none; }
.dynamic--team:not(:has(.profile)) .dynamic__more { display: none; }
.dynamic--team:has(.profile) .dynamic__more { padding-top: 0; }

/* ---------- Newsletter (block "newsletter") ---------- */
.newsletter__form { position: relative; }
.newsletter__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.newsletter__status { display: none; margin: 1rem 0 0; padding: 0.75rem 1rem; border-left: 3px solid var(--blue-light); background: rgb(128 161 197 / 0.12); color: var(--white); }
.newsletter__status--error, .newsletter__status--fail { border-left-color: var(--red); }
.newsletter__status:target, .newsletter__status.is-visible { display: block; }
.field { margin: 0; }
.field__label { display: block; margin-bottom: 0.35rem; }
.field__input {
  width: 100%; min-height: 2.75rem; padding: 0.55rem 0.9rem; border: 1px solid var(--blue-mid); border-radius: 0;
  background: transparent; color: var(--white); font: inherit; font-size: 0.9375rem;
}
.field__input::placeholder { color: #8397ad; opacity: 1; }
.field__input:focus { border-color: var(--blue-light); outline: 2px solid var(--blue-light); outline-offset: 0; }
.check { display: flex; align-items: flex-start; gap: 0.6rem; margin: 1.1rem 0 0; font-size: 0.875rem; }
.check input { flex: none; appearance: none; width: 1.05rem; height: 1.05rem; margin: 0.15rem 0 0; border: 0; background: var(--blue-light); cursor: pointer; display: grid; place-content: center; }
.check input::before { content: ""; width: 0.55rem; height: 0.3rem; border-left: 2px solid var(--blue-dark); border-bottom: 2px solid var(--blue-dark); rotate: -45deg; translate: 0 -1px; opacity: 0; }
.check input:checked::before { opacity: 1; }
.check input:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.check a { white-space: nowrap; }

.newsletter--full { max-width: var(--max); margin-inline: auto; }
.newsletter--full .newsletter__title { text-align: center; color: var(--white); text-transform: uppercase; font-size: clamp(1.25rem, 2vw, 1.6rem); margin-bottom: 1.5rem; }
.newsletter--full .newsletter__text { text-align: center; color: var(--text-muted); margin: -0.75rem auto 2rem; max-width: 46rem; }
.newsletter__fields { display: grid; gap: 1rem clamp(1.25rem, 3vw, 1.5rem); }
.newsletter--full .field__label { color: var(--blue-light); font-size: clamp(1.3rem, 2.2vw, 1.75rem); font-weight: 700; }
.newsletter__actions { margin: 1rem 0 0; text-align: right; }
.newsletter__actions .btn { min-width: 12rem; }
@media (min-width: 48rem) {
  .newsletter__fields { grid-template-columns: 1fr 1fr; grid-template-rows: auto auto; grid-auto-flow: column; }
  .newsletter--full .check { margin-top: 1.75rem; }
  .newsletter--full .newsletter__actions { margin-top: -2.9rem; }
}

.newsletter--compact .newsletter__title { font-size: 0.9375rem; color: var(--blue-light); margin-bottom: 0.6rem; }
.newsletter--compact .newsletter__text { font-size: 0.875rem; }
.field--inline { display: flex; gap: 0.6rem; }
.newsletter--compact .field__input { min-height: 2.25rem; padding: 0.3rem 0.7rem; border: 0; background: #efefef; color: var(--blue-dark); font-size: 0.875rem; }
.newsletter--compact .field__input::placeholder { color: #5a6573; }
.newsletter--compact .check { font-size: 0.8125rem; margin-top: 0.6rem; }
.newsletter--compact .check input { background: #efefef; }

/* ---------- Contact form (engine block "form", docs/BLOCKS.md): same look as the newsletter fields ---------- */
.c-form { max-width: var(--max); margin-inline: auto; }
.c-form__text { color: var(--text-muted); max-width: 46rem; }
.c-form__fields { gap: 0 clamp(1.25rem, 3vw, 1.5rem); }
.c-form__field { gap: 0; margin-bottom: 1rem; }
.c-form__label { margin-bottom: 0.35rem; color: var(--blue-light); font-size: clamp(1.3rem, 2.2vw, 1.75rem); font-weight: 700; line-height: 1.3; }
.c-form__req { color: var(--text-muted); font-weight: 400; }
.c-form__input {
  min-height: 2.75rem; padding: 0.55rem 0.9rem; border: 1px solid var(--blue-mid); border-radius: 0;
  background: transparent; color: var(--white); font-size: 0.9375rem;
}
select.c-form__input { background: var(--bg); }
textarea.c-form__input { min-height: 10rem; }
.c-form__input::placeholder { color: #8397ad; opacity: 1; }
.c-form__input:focus-visible { border-color: var(--blue-light); outline: 2px solid var(--blue-light); }
.c-form [aria-invalid="true"] { border-color: var(--red); }
.c-form__check { gap: 0.6rem; margin: 1.1rem 0 0; font-size: 0.875rem; }
.c-form__check input {
  appearance: none; width: 1.05rem; height: 1.05rem; margin: 0.15rem 0 0; border: 0; background: var(--blue-light);
  cursor: pointer; display: grid; place-content: center;
}
.c-form__check input::before {
  content: ""; width: 0.55rem; height: 0.3rem; border-left: 2px solid var(--blue-dark); border-bottom: 2px solid var(--blue-dark);
  rotate: -45deg; translate: 0 -1px; opacity: 0;
}
.c-form__check input:checked::before { opacity: 1; }
.c-form__check input:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.c-form__check a { white-space: nowrap; }
.c-form__actions { margin: 1.5rem 0 0; text-align: right; }
.c-form__actions .c-btn { min-width: 12rem; border-radius: 0; background: var(--blue-light); border-color: var(--blue-light); color: var(--blue-dark); text-transform: uppercase; }
.c-form__status { border-left-color: var(--blue-light); background: rgb(128 161 197 / 0.12); color: var(--white); }
.c-form__status--error, .c-form__status--fail { border-left-color: var(--red); }

/* ---------- Contact page ---------- */
.contact { display: grid; gap: clamp(1.5rem, 3vw, 2rem); }
@media (min-width: 56rem) { .contact { grid-template-columns: 1fr 1fr; } }
.contact__map, .contact__card { background: var(--blue-mid); min-height: 18rem; }
.contact__map { position: relative; display: grid; place-content: center; justify-items: center; gap: 1rem; overflow: hidden; }
.contact__map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; filter: saturate(0.6); }
.contact__card { padding: clamp(2rem, 5vw, 3rem) clamp(1.5rem, 5vw, 3.5rem); color: var(--white); }
.contact__card h2 { font-size: clamp(1.6rem, 2.4vw, 2rem); }
.contact__card a { color: var(--white); text-decoration: none; }
.contact__social { margin-top: 1.5rem; }

/* ---------- Footer ---------- */
.site-footer { background: var(--blue-mid); color: var(--footer-text); font-size: 0.8125rem; }
.site-footer a { color: var(--footer-text); text-decoration: none; }
.site-footer a:hover { color: var(--white); }
.site-footer__inner {
  display: grid; gap: 2rem clamp(2rem, 6vw, 5rem); padding-block: clamp(2.5rem, 5vw, 3.5rem);
  max-width: 72rem; grid-template-areas: "brand" "nav" "contact" "newsletter";
}
.site-footer__brand { grid-area: brand; display: flex; flex-direction: column; align-items: flex-start; gap: 1.25rem; }
.site-footer__brand img:first-child { display: block; width: 183px; }
.site-footer__flag { margin-left: 82px; }
.site-footer__nav { grid-area: nav; align-self: center; }
.site-footer__contact { grid-area: contact; }
.site-footer__contact p { margin-bottom: 0.75rem; }
.site-footer__newsletter { grid-area: newsletter; }
.nav--footer { display: flex; flex-wrap: wrap; gap: 0 clamp(1rem, 2vw, 1.75rem); }
.nav--footer .nav__link { display: inline-flex; align-items: center; min-height: 2.5rem; text-decoration: none; text-transform: uppercase; font-weight: 700; font-size: 0.75rem; letter-spacing: 0.03em; }
.nav--footer .is-current { color: var(--white); }
@media (min-width: 52rem) {
  .site-footer__inner { grid-template-columns: auto 1fr; grid-template-areas: "brand nav" "contact newsletter"; }
  .site-footer__nav { justify-self: end; }
  .site-footer__newsletter { justify-self: end; width: min(100%, 24rem); }
}

/* Social menu: icon menu (site.json "iconMenus"), icons chosen in the admin (Media → Icone); the label stays for screen readers */
.nav--social { display: flex; gap: 0.6rem; }
.nav--social .nav__link { display: block; width: 1.9rem; height: 1.9rem; transition: transform 0.2s; }
.nav--social .nav__icon { display: block; width: 100%; height: 100%; object-fit: contain; }
.nav--social .nav__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.nav--social .nav__link:hover { transform: scale(1.1); }
.contact__social .nav--social .nav__link { width: 2.2rem; height: 2.2rem; }

.site-footer__legal { background: var(--grey); color: #e0e0e0; font-size: 0.75rem; }
.site-footer__legal-inner { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0 0.75rem; min-height: 2.75rem; }
.site-footer__legal p { margin: 0; }
.site-footer__legal a { color: #e0e0e0; text-decoration: none; }
.site-footer__legal a:hover { color: var(--white); text-decoration: underline; }
.nav--legal { display: flex; }
.nav--legal .nav__item + .nav__item::before { content: "|"; margin-inline: 0.5rem; color: #9a9a9a; }
.nav--legal .nav__link { display: inline-flex; min-height: 2.75rem; align-items: center; }
.site-footer__legal p::after { content: "–"; margin-left: 0.75rem; color: #9a9a9a; }

/* ---------- 404 ---------- */
.not-found, .error-page { text-align: center; }
.not-found .container { max-width: 40rem; }
.error-page { max-width: 40rem; margin-inline: auto; }
.not-found__code, .error-page__code { margin: 0; font-size: clamp(5rem, 16vw, 9rem); font-weight: 300; letter-spacing: 0.2em; color: var(--blue-mid); line-height: 1; }

/* ---------- Reveal on scroll (enabled by site.js only: content is visible without JS) ---------- */
@media (prefers-reduced-motion: no-preference) {
  .reveal-ready [data-reveal] { opacity: 0; transform: translateY(1.5rem); transition: opacity 0.9s var(--ease), transform 0.9s var(--ease); }
  .reveal-ready [data-reveal].is-visible { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

/* ---------- Print ---------- */
@media print {
  .site-header, .site-footer, .nav-toggle, .hero__media, .banner__img, .newsletter, .carousel__btn, .slider-pause { display: none !important; }
  body { background: #fff; color: #000; }
  .hero, .banner { min-height: 0; color: #000; }
  .hero__title, .banner__title, h1, h2, h3 { color: #000 !important; text-shadow: none; }
}

/* ---------- Share links (templates/share.html: <!-- SHARE /-->, block "Condividi") ---------- */
.share { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 1.25rem; margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.share__title { margin: 0; font-size: 0.875rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--heading); }
.share__list { display: flex; flex-wrap: wrap; gap: 0.6rem; margin: 0; padding: 0; list-style: none; }
.share__link { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border: 1px solid var(--blue-light); border-radius: 50%; color: var(--blue-light); transition: background-color 0.2s, color 0.2s; }
.share__link svg { width: 1.25rem; height: 1.25rem; }
.share__link:hover, .share__link:focus-visible { background: var(--blue-light); color: var(--blue-dark); }
.block--share .share { margin-top: 0; }
