@font-face {
  font-family: "AlteHaasGrotesk";
  src: url("../fonts/AlteHaasGroteskRegular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "AlteHaasGrotesk";
  src: url("../fonts/AlteHaasGroteskBold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* latin */
@font-face {
  font-family: "Montserrat";
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/montserrat_italic_latin.woff2") format("woff2");
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Montserrat";
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/montserrat_italic_latinExt.woff2") format("woff2");
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 100%;
  font-display: swap;
  src: url("../fonts/montserrat_norm_latin.woff2") format("woff2");
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/montserrat_norm_latinExt.woff2") format("woff2");
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  --blue-10: #a8bdd6;
  --blue-20: #507faf;
  --blue-40: #004788;
  --blue-60: #00305b;
  --blue-80: #00182d;

  --light-blue-05: #e7ecf3;
  --light-blue-10: #d3e3ef;
  --light-blue-20: #a8c9e1;
  --light-blue-40: #7aafd3;
  --light-blue-60: #51758c;
  --light-blue-80: #293a46;

  --neutral-0: rgb(255, 255, 255);
  --neutral-5: rgb(250, 250, 250);
  --neutral-10: rgb(245, 245, 245);
  --neutral-20: rgb(238, 238, 238);
  --neutral-30: rgb(224, 224, 224);
  --neutral-40: rgb(189, 189, 189);
  --neutral-50: rgb(158, 158, 158);
  --neutral-60: rgb(117, 117, 117);
  --neutral-70: rgb(97, 97, 97);
  --neutral-80: rgb(66, 66, 66);
  --neutral-90: rgb(33, 33, 33);
  --neutral-95: rgb(20, 20, 20);

  --success-light: #e3f2e0;
  --success-medium: #8dc881;
  --success-dark: #459a33;

  --warning-light: #f8f3d8;
  --warning-medium: #e2ca64;
  --warning-dark: #c9a81c;

  --error-light: #f7e6e1;
  --error-medium: #e29583;
  --error-dark: #b64d34;

  --information-light: #ebf7f6;
  --information-medium: #c0ece8;
  --information-dark: #71c9c1;

  --shadow-light: 0 0 16px rgba(0, 24, 45, 0.16);
  --shadow-medium: 0 0 25px rgba(0, 24, 45, 0.32);
  --shadow-hard: 0 0 32px rgba(0, 24, 45, 0.5);

  --viewSize: 1440;

  --cream-50: #faf8f4;
  --orange-50: #e08a3c;

  /* Scala oro (accento sezioni Direttori) */
  --gold-10: #f6ecc8;
  --gold-20: #e9d491;
  --gold-40: #d4af37;
  --gold-50: #c39a1f;
  --gold-60: #8a6d12;
  --gold-80: #5f4b0d;

  --fontFamilyTitle:
    "AlteHaasGrotesk", "Segoe UI", "Helvetica Neue", Helvetica, Arial,
    sans-serif;
  --fontFamilyMain:
    "Montserrat", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
}

@media screen and (max-width: 992px) {
  :root {
    --viewSize: 760;
  }
}
@media screen and (max-width: 576px) {
  :root {
    --viewSize: 390;
  }
}

* {
  font-family: var(--fontFamilyMain);
}
.fa,
.fas {
  font-family: "Font Awesome 7";
}

.far {
  font-family: "Font Awesome 7 Free";
}

.fab {
  font-family: "Font Awesome 7 Brands";
}

h1 {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 96 / var(--viewSize));
  line-height: calc(100dvw * 128 / var(--viewSize));
}

h2 {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 64 / var(--viewSize));
  line-height: calc(100dvw * 72 / var(--viewSize));
  letter-spacing: -1px;
}
h3 {
  font-family: var(--fontFamilyTitle);
  font-weight: 400;
  font-size: calc(100dvw * 48 / var(--viewSize));
  line-height: calc(100dvw * 56 / var(--viewSize));
  letter-spacing: -1px;
}
h4 {
  font-family: var(--fontFamilyMain);
  font-weight: 600;
  font-size: calc(100dvw * 32 / var(--viewSize));
  line-height: calc(100dvw * 40 / var(--viewSize));
}
h5 {
  font-family: var(--fontFamilyMain);
  font-weight: bold;
  font-style: italic;
  font-size: calc(100dvw * 24 / var(--viewSize));
  line-height: calc(100dvw * 28 / var(--viewSize));
}
h6 {
  font-family: var(--fontFamilyMain);
  font-weight: 600;
  font-size: calc(100dvw * 22 / var(--viewSize));
  line-height: calc(100dvw * 26 / var(--viewSize));
}

/* smallTitle
   La misura è assoluta come quella del titolo che accompagna: se una regola di
   pagina rimpicciolisce solo il titolo grande (succede in diverse media query
   mobile), il "piccolo" finisce per essere più grande del "grande". Il min()
   con 0.68em lo tiene sempre sotto al genitore senza cambiare nulla dove le
   proporzioni erano già corrette. */
h1 > .small-title {
  font-weight: 400;
  font-size: min(calc(100dvw * 64 / var(--viewSize)), 0.68em);
  line-height: 1;
  letter-spacing: -2px;
}
h2 > .small-title {
  font-weight: 400;
  font-size: min(calc(100dvw * 40 / var(--viewSize)), 0.68em);
  line-height: 1;
  letter-spacing: -2px;
}
h3 > .small-title {
  font-weight: 400;
  font-size: min(calc(100dvw * 32 / var(--viewSize)), 0.68em);
  line-height: 1;
  letter-spacing: -2px;
}
h4 > .small-title {
  font-weight: 400;
  font-size: min(calc(100dvw * 20 / var(--viewSize)), 0.68em);
  line-height: 1;
  letter-spacing: -1px;
}

p,
span,
div,
li,
button {
  font-weight: normal;
  font-size: calc(100dvw * 16 / var(--viewSize));
}
label {
  font-weight: 300;
  font-size: calc(100dvw * 16 / var(--viewSize));
}
caption {
  font-weight: 300;
  font-size: calc(100dvw * 14 / var(--viewSize));
}

a {
  color: var(--blue-40);
  font-size: calc(100dvw * 16 / var(--viewSize));
  transition: 0.2s;
}

@media screen and (max-width: 1400px) {
  p,
  span,
  div,
  li,
  button {
    font-weight: normal;
    font-size: calc(100dvw * 24 / var(--viewSize));
  }
  label {
    font-weight: 300;
    font-size: calc(100dvw * 20 / var(--viewSize));
  }
  caption {
    font-weight: 300;
    font-size: calc(100dvw * 18 / var(--viewSize));
  }

  a {
    color: var(--blue-40);
    font-size: calc(100dvw * 24 / var(--viewSize));
    transition: 0.2s;
  }
}

@media screen and (max-width: 992px) {
  h1 {
    font-size: calc(100dvw * 72 / var(--viewSize));
    line-height: calc(100dvw * 88 / var(--viewSize));
  }

  h2 {
    font-size: calc(100dvw * 64 / var(--viewSize));
    line-height: calc(100dvw * 80 / var(--viewSize));
  }
  h3 {
    font-size: calc(100dvw * 44 / var(--viewSize));
    line-height: calc(100dvw * 56 / var(--viewSize));
  }
  h4 {
    font-size: calc(100dvw * 24 / var(--viewSize));
    line-height: calc(100dvw * 32 / var(--viewSize));
  }
  h5 {
    font-size: calc(100dvw * 20 / var(--viewSize));
    line-height: calc(100dvw * 24 / var(--viewSize));
  }
  h6 {
    font-size: calc(100dvw * 18 / var(--viewSize));
    line-height: calc(100dvw * 24 / var(--viewSize));
  }

  p,
  span,
  div,
  li,
  button {
    font-weight: normal;
    font-size: calc(100dvw * 16 / var(--viewSize));
  }
  label {
    font-weight: 300;
    font-size: calc(100dvw * 16 / var(--viewSize));
  }
  caption {
    font-weight: 300;
    font-size: calc(100dvw * 16 / var(--viewSize));
  }

  a {
    color: var(--blue-40);
    font-size: calc(100dvw * 16 / var(--viewSize));
    transition: 0.2s;
  }
}
@media screen and (max-width: 575px) {
  h2 {
    font-size: calc(100dvw * 56 / var(--viewSize));
    line-height: calc(100dvw * 72 / var(--viewSize));
  }
  h3 {
    font-size: calc(100dvw * 32 / var(--viewSize));
    line-height: calc(100dvw * 42 / var(--viewSize));
  }

  h6 {
    font-family: "Inter", Helvetica, sans-serif;
    font-weight: 500;
    font-size: 16px;
    line-height: 20px;
  }

  p,
  span,
  div,
  li,
  button {
    font-weight: normal;
    font-size: 16px;
  }
  label {
    font-weight: 300;
    font-size: 16px;
  }
  caption {
    font-weight: 300;
    font-size: 0.8rem;
  }

  a {
    color: var(--blue-40);
    font-size: 16px;
    transition: 0.2s;
  }
}

/* INITIALIZE */

html {
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  font-family: Helvetica, sans-serif;
  /* 1 */
  line-height: 1.4;
  /* 3 */
  font-size: 1em;
  /* 3 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
  scroll-behavior: smooth;
}

/* Remove default margin */
body {
  margin: 0;
  font-family: "Inter", Helvetica, sans-serif;
}

/* Inheriting box-sizing */
*,
*:before,
*:after {
  -moz-box-sizing: inherit;
  box-sizing: inherit;
}

/* HTML5 display defenitions */
/*
    * Correct `block` display not defined for any HTML5 element in IE 8/9.
    * Correct `block` display not defined for `details` or `summary` in IE 10/11
    * and Firefox.
    * Correct `block` display not defined for `main` in IE 11.
    */
details,
main,
summary {
  display: block;
}

/*
    * 1. Correct `inline-block` display not defined in IE 8/9.
    * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
    */
audio,
canvas,
progress,
video {
  vertical-align: baseline;
}

/*
    * Prevent modern browsers from displaying `audio` without controls.
    * Remove excess height in iOS 5 devices.
    */
audio:not([controls]) {
  display: none;
  height: 0;
}

/*
    * Address `[hidden]` styling not present in IE 8/9/10.
    * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
    */
[hidden],
template {
  display: none;
}

/* Links */

a:active,
a:hover {
  outline: 0;
}

/* Text-level semantics */
/*
    * Address inconsistent styling of `abbr[title]`.
    * 1. Correct styling in Firefox 39 and Opera 12.
    * 2. Correct missing styling in Chrome, Edge, IE, Opera, and Safari.
    */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  text-decoration: underline dotted;
  /* 2 */
}

/* Address inconsistent styling of b and strong. */
b,
strong {
  font-weight: inherit;
  /* 1 */
}

b,
strong {
  font-weight: bolder;
  /* 2 */
}

/* Address styling not present in Safari and Chrome. */
dfn {
  font-style: italic;
}

/* Address inconsistent and variable font size in all browsers. */
small,
.small {
  font-size: calc(100dvw * 14 / var(--viewSize));
}

/*
    * Prevent `sub` and `sup` affecting `line-height` in all browsers.
    */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}

/* Embedded content */
/*
    * Correct overflow not hidden in IE 9/10/11.
    */
svg:not(:root) {
  overflow: hidden;
}

/*
        Grouping content */
/*
    * Address margin not present in IE 8/9 and Safari.
    */
figure {
  margin: 1em 40px;
}
hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */
}
pre {
  overflow: auto;
}

code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */
}

/*  Forms */

button,
input,
optgroup,
select,
textarea {
  font: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
}

/* Address `overflow` set to `hidden` in IE 8/9/10/11. */
button {
  overflow: visible;
}

button,
select {
  text-transform: none;
}

button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */
}

button[disabled],
html input[disabled] {
  cursor: default;
}

/*
    * Remove inner padding and border in Firefox 4+.
    */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/*
    * Restore focus style in Firefox 4+ (unset by a rule above)
    */
button:-moz-focusring,
input:-moz-focusring {
  outline: 1px dotted ButtonText;
}

/*
    * Address Firefox 4+ setting `line-height` on `input` using `!important` in
    * the UA stylesheet.
    */
input {
  line-height: normal;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/*
    * Address `appearance` set to `searchfield` in Safari and Chrome.
    */
input[type="search"] {
  -webkit-appearance: textfield;
}

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
    * Define consistent border, margin, and padding.
    */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */
}

textarea {
  overflow: auto;
}

optgroup {
  font-weight: bold;
}

/* HTML5 Boilerplate optimizations  */

::-moz-selection {
  background: #b3d4fc;
  text-shadow: none;
}
::selection {
  background: #b3d4fc;
  text-shadow: none;
}

/*
    * A better looking default horizontal rule
    */
hr {
  display: block;
  height: 1px;
  border: 0;
  border-top: 1px solid #ccc;
  margin: 1em 0;
  padding: 0;
}

audio,
canvas,
iframe,
img,
svg,
video {
  vertical-align: middle;
}

/*
    * Remove default fieldset styles.
    */
fieldset {
  border: 0;
  margin: 0;
  padding: 0;
}

/*
    * Allow only vertical resizing of textareas.
    */
textarea {
  resize: vertical;
}

/* fine INITIALIZE */

/* regole generali */

.a:hover,
.a:focus,
.a:visited {
  color: var(--blue-80);
  border: none;
  outline: none;
  box-shadow: none;
}
.a:disabled,
.a .disabled {
  color: var(--neutral-40);
  border: none;
  outline: none;
  box-shadow: none;
}
.a:hover:disabled,
.a:hover .disabled {
  color: var(--neutral-40);
  border: none;
  outline: none;
  box-shadow: none;
}

.btn-primary {
  padding: 6px 12px;
  color: var(--neutral-0);
  border-radius: 8px;
  background-color: var(--blue-40);
  text-decoration: none;
  transition: 0.2s;
  font-weight: 400;
}
.btn-primary:hover,
.btn-primary:focus {
  background-color: var(--blue-20);
  border: none;
  outline: none;
  box-shadow: none;
  transform: scale(1.02);
}
.btn-primary:disabled,
.btn-primary .disabled,
.btn-primary:hover:disabled,
.btn-primary:hover .disabled {
  background-color: var(--neutral-20);
  color: var(--neutral-40);
  border: none;
  outline: none;
  box-shadow: none;
}

.btn-secondary {
  padding: 7px 12px 6px 12px;
  color: var(--blue-40);
  border: 1px solid var(--blue-40);
  border-radius: 8px;
  background-color: var(--neutral-5);
  text-decoration: none;
  width: fit-content;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: 0.2s;
}
.btn-secondary:hover,
.btn-secondary:focus {
  color: var(--blue-80);
  border: 1px solid var(--blue-80);
  outline: none;
  box-shadow: none;
  transform: scale(1.02);
}
.btn-secondary:disabled,
.btn-secondary .disabled,
.btn-secondary:hover:disabled,
.btn-secondary:hover .disabled {
  color: var(--neutral-40);
  border: 1px solid var(--neutral-40);
  outline: none;
  box-shadow: none;
}

.btn-trasparent {
  color: var(--neutral-0);
  border: 1px solid var(--neutral-0);
  background: transparent;
  transition: ease-in-out 0.25s;
  color: var(--neutral-0) !important;
}
.btn-trasparent:hover {
  color: var(--blue-68);
  border: 1px solid var(--neutral-0);
  background: var(--neutral-0);
  transform: scale(1.05);
  color: var(--blue-60) !important;
  font-weight: 500 !important;
}
/* Il colore va ripetuto sui figli: i CTA che puntano a un'ancora della pagina
   corrente (o a pagine già viste) matchano .btn-trasparent:visited span, che
   forza il bianco e altrimenti resterebbe attivo anche in hover. */
.btn-trasparent:hover > span,
.btn-trasparent:hover > i {
  color: var(--blue-60) !important;
}
.btn-trasparent:hover > span {
  font-weight: 500 !important;
}

@media screen and (max-width: 992px) {
  .btn-secondary {
    padding: calc(100dvw * 6 / var(--viewSize))
      calc(100dvw * 14 / var(--viewSize)) calc(100dvw * 5 / var(--viewSize))
      calc(100dvw * 14 / var(--viewSize));
  }
  .btn-primary {
    padding: calc(100dvw * 6 / var(--viewSize))
      calc(100dvw * 14 / var(--viewSize)) calc(100dvw * 5 / var(--viewSize))
      calc(100dvw * 14 / var(--viewSize));
  }
}

textarea {
  scrollbar-width: thin; /* Firefox */
  scrollbar-color: var(--blue-20) rgba(0, 0, 0, 0); /* Firefox */
}

/* Chrome, Safari e Edge */
textarea::-webkit-scrollbar {
  width: 10px;
}

textarea::-webkit-scrollbar-track {
  background: none;
}

textarea::-webkit-scrollbar-thumb {
  background: var(--blue-20());
  border-radius: 5px;
  border: none;
}

textarea::-webkit-scrollbar-thumb:hover {
  background: var(--blue-40());
}

textarea:focus-visible {
  box-shadow: 0 0 5px var(--blue-20) !important;
  outline: none !important;
}

input:focus-visible {
  box-shadow: 0 0 5px var(--blue-20) !important;
  outline: none !important;
  border: none !important;
}
select:focus-visible {
  box-shadow: 0 0 5px var(--blue-20) !important;
  outline: none !important;
  border: none !important;
}
.bg-white {
  background: var(--neutral-5) !important;
}
.bg-light-blue-05 {
  background: var(--light-blue-05) !important;
}

/* Utilities */
main {
  min-height: 70dvh;
}

.radius-8 {
  border-radius: calc(100dvw * 8 / var(--viewSize));
}
@media screen and (max-width: 992px) {
  .radius-8 {
    border-radius: calc(100dvw * 8 / var(--viewSize));
  }
}
@media screen and (max-width: 576px) {
  .radius-8 {
    border-radius: calc(100dvw * 8 / var(--viewSize));
  }
  main {
    min-height: 75dvh;
  }
}
.overflow-hidden {
  overflow: hidden;
}

.max-w-fullhd {
  max-width: 1600px;
  /* width: calc(100% - 300px); */
  /* min-width: 1600px; */
}
.min-h-73 {
  min-height: 73dvh;
}
.min-h-100 {
  min-height: calc(100dvh - (100px + 6dvh));
}
.charSpace1 {
  letter-spacing: 1px;
}
.charSpace2 {
  letter-spacing: 2px;
}
.charSpace3 {
  letter-spacing: 3px;
}
.bg-blue-60 {
  background: var(--blue-60);
}
.bg-blue-80 {
  background: var(--blue-80);
}
.bg-primary {
  background: var(--blue-40) !important;
}
.text-primary {
  color: var(--blue-40) !important;
}

.screen-xxl {
  /* max-width: 2560px; */
}
.text-white {
  color: var(--neutral-5) !important;
}

.w-fitCont {
  width: fit-content;
}
.circle-border {
  border-radius: 50%;
  aspect-ratio: 1;
  border: 1px solid var(--neutral-5);
  padding: 0.3em;
}

.list-unstyled {
  list-style: none !important;
  padding: 0 !important;
}

/* full responsive, formula: calc(100dvw * y / var(--viewSize)); dove y = a varivbilae da inserire */

/* HEADER */

#wpadminbar {
  height: 12px;
  opacity: 0;
  transition: 0.3s;
}
#wpadminbar:hover {
  height: 32px;
  opacity: 1;
}

.main-logo {
  position: relative;
  z-index: 999;
}

.main-nav {
  background-color: transparent;
  height: calc(100dvw * 96 / var(--viewSize));
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  padding: calc(100dvw * 16 / var(--viewSize));
  border-radius: 0 0 calc(100dvw * 18 / var(--viewSize))
    calc(100dvw * 18 / var(--viewSize));
  transition: ease-in-out 0.2s;
}

.bg-nav-scroll {
  border-radius: 0 0 calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));
  padding: calc(100dvw * 16 / var(--viewSize))
    calc(100dvw * 20 / var(--viewSize));
  background: rgba(0, 48, 91, 0.55);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
  border-bottom: 1px solid var(--blue-20);
}
.bg-nav-scroll-2 {
  border-radius: 0 0 calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));
  padding: calc(100dvw * 16 / var(--viewSize))
    calc(100dvw * 20 / var(--viewSize));
  background: rgba(0, 48, 91, 0.55);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
  border-bottom: 1px solid var(--blue-20);
}

@media screen and (max-width: 576px) {
  .main-nav {
    height: calc(100dvw * 80 / var(--viewSize));
    padding: calc(100dvw * 14 / var(--viewSize));
    border-radius: 0 0 calc(100dvw * 12 / var(--viewSize))
      calc(100dvw * 12 / var(--viewSize));
  }

  .bg-nav-scroll {
    border-radius: 0 0 calc(100dvw * 20 / var(--viewSize))
      calc(100dvw * 20 / var(--viewSize));
    padding: calc(100dvw * 16 / var(--viewSize))
      calc(100dvw * 12 / var(--viewSize));
  }
}

/* Modale base */
.search-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  justify-content: center;
  align-items: center;

  /* Sfondo con blur e gradiente blu scuro */
  background: linear-gradient(
    180deg,
    rgba(10, 25, 50, 0.85) 0%,
    rgba(10, 25, 50, 0.65) 50%,
    rgba(10, 25, 50, 0.85) 100%
  );
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);

  opacity: 0;
  transition: opacity 0.3s ease;
}

/* Mostra modale */
.search-modal.show {
  display: flex;
}

.search-modal.visible {
  opacity: 1;
}

/* Contenitore centrale: card chiara con accento e ingresso animato */
.search-modal-content {
  background: var(--neutral-0);
  padding: 44px 36px 30px;
  border-radius: 22px;
  border-top: 3px solid var(--blue-40);
  max-width: 560px;
  width: 92%;
  box-shadow: 0 28px 80px rgba(0, 24, 45, 0.45);
  position: relative;
  text-align: center;
  /* Ingresso: sale + leggero scale, guidato da .visible sul parent */
  transform: translateY(26px) scale(0.98);
  transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.search-modal.visible .search-modal-content {
  transform: none;
}

.search-modal-eyebrow {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--blue-40);
  margin-bottom: 6px;
}
.search-modal-title {
  font-size: clamp(1.4rem, 3.2vw, 1.9rem);
  font-weight: 700;
  color: var(--blue-60);
  margin: 0 0 22px;
}

/* Campo ricerca: lente dentro, bottone invio integrato */
.search-modal-form {
  position: relative;
  display: flex;
  align-items: center;
}
.search-modal-icon {
  position: absolute;
  left: 18px;
  color: var(--blue-40);
  opacity: 0.75;
  pointer-events: none;
}
.search-modal-content input[type="search"] {
  width: 100%;
  padding: 16px 64px 16px 48px;
  font-size: 17px;
  border-radius: 999px;
  border: 2px solid var(--blue-10);
  background: var(--blue-05);
  outline: none;
  transition: border-color 0.2s, background 0.2s, box-shadow 0.2s;
}
.search-modal-content input[type="search"]:focus {
  border-color: var(--blue-40);
  background: var(--neutral-0);
  box-shadow: 0 0 0 4px rgba(21, 83, 132, 0.12);
}
.search-modal-submit {
  position: absolute;
  right: 6px;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 50%;
  background: var(--blue-40);
  color: #fff;
  cursor: pointer;
  transition: background 0.2s, transform 0.2s;
}
.search-modal-submit:hover {
  background: var(--blue-60);
  transform: translateX(2px);
}

/* Scorciatoie */
.search-modal-quick {
  margin-top: 24px;
}
.search-modal-quick__label {
  display: block;
  font-size: 0.78rem;
  opacity: 0.55;
  margin-bottom: 10px;
}
.search-modal-quick ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}
.search-modal-quick a {
  display: inline-block;
  padding: 7px 16px;
  border-radius: 999px;
  border: 1px solid var(--blue-20);
  background: var(--blue-05);
  color: var(--blue-60);
  font-size: 0.85rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.search-modal-quick a:hover {
  background: var(--blue-40);
  border-color: var(--blue-40);
  color: #fff;
}

/* Hint ESC (solo desktop) */
.search-modal-esc {
  display: none;
  margin-top: 22px;
  font-size: 0.72rem;
  opacity: 0.45;
}
.search-modal-esc kbd {
  font-size: 0.7rem;
  padding: 2px 6px;
  border: 1px solid var(--neutral-30);
  border-bottom-width: 2px;
  border-radius: 5px;
  background: var(--neutral-5);
}
@media (min-width: 768px) {
  .search-modal-esc {
    display: block;
  }
}

/* Pulsante chiudi: tondo, ruota al passaggio */
.close-btn {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 38px;
  height: 38px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--blue-10);
  border-radius: 50%;
  font-size: 16px;
  color: var(--blue-60);
  cursor: pointer;
  transition: background 0.2s, transform 0.3s, border-color 0.2s;
}
.close-btn:hover {
  background: var(--blue-05);
  border-color: var(--blue-20);
  transform: rotate(90deg);
}

@media (max-width: 576px) {
  .search-modal-content {
    padding: 38px 20px 24px;
  }
}

.logo-navbar {
  fill: var(--neutral-0);
  width: calc(100dvw * 60 / var(--viewSize));
  height: auto;
  transition: ease-in-out 0.3s;
}
.logo-navbar > path {
  fill: var(--neutral-0);
}
.logo-navbar:hover {
  transform: scale(1.04);
}

@media screen and (max-width: 576px) {
  .logo-navbar {
    width: calc(100dvw * 48 / var(--viewSize));
  }
}
.separator-li-nav {
  width: 0;
  height: calc(100dvw * 16 / var(--viewSize));
  border-left: 1px solid var(--blue-20);
}
.nav-link {
  text-decoration: none;
  transition: ease-in-out 0.2s;
  background-color: transparent !important;
  border: none;
  margin: 0;
  padding: 0;
  display: block;
}
.nav-link:hover {
  transform: scale(1.04);
  color: var(--orange-50);
}
.menu-main_menu_it-container {
  width: 100%;
}
.main-menu {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: end;
  gap: 28px;
  list-style: none;
  padding: 0;
}

.main-menu > .menu-item > a,
.main-menu > .menu-item > a > span {
  text-decoration: none;
  text-transform: uppercase;
  color: var(--blue-20);
  font-size: calc(100dvw * 20 / var(--viewSize));
  line-height: calc(100dvw * 20 / var(--viewSize));
  padding: 0;
  margin: 0;
}
.main-menu > .menu-item > a {
  display: flex;
  align-items: center;
  gap: 12px;
}

.main-menu > .menu-item > a > img {
  width: 16px !important;
  height: auto !important;
  padding: 0;
}
#menu-item-165 > a > img {
  width: 24px !important;
}

.cont-btn-main-top-nav {
  display: flex;
  align-items: center;
  justify-content: end;
  list-style: none !important;
  margin: 0;
  padding: 0 0 0 12px;
}
.main-top-nav-item,
.main-top-nav-item > button,
.main-top-nav-item > a {
  border: none;
  color: var(--neutral-0);
  background: transparent;
  transition: ease-in-out 0.3s;
  text-decoration: none !important;
  margin: 0;
  padding: 0;
  font-size: calc(100dvw * 20 / var(--viewSize));
}
.main-top-nav-item > button,
.main-top-nav-item > a {
  padding: 8px 0 8px 24px;
}
/* ═══════════════════════════════════════════════════════════════════
           MODALE FULLSCREEN MENU
        ════════════════════════════════════════════════════════════════════ */
.custom-modal {
  display: none;
  position: fixed;
  inset: 0;
  width: 100dvw;
  height: 100dvh;
  background-color: var(--blue-80);
  opacity: 0;
  transform: translateY(-100%);
  transition:
    transform 0.45s cubic-bezier(0.76, 0, 0.24, 1),
    opacity 0.3s ease;
  z-index: 1032;
  padding: 0;
  overflow: hidden;
}

.custom-modal.show {
  transform: translateY(0);
  display: flex;
}

.custom-modal.show.visible {
  opacity: 1;
}

/* ── Layout colonne ──────────────────────────────────────────────── */
.cont-modal-sez {
  /* min-height: 100%; */
}

.cont-modal-sez.menu-cont {
  padding: calc(100dvw * 40 / var(--viewSize))
    calc(100dvw * 48 / var(--viewSize));
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.cont-modal-sez.cont-prod-modal-menu {
  overflow-y: auto;
  height: 100%;
  max-height: 100%;
  padding: calc(100dvw * 40 / var(--viewSize))
    calc(100dvw * 48 / var(--viewSize));
}

/* ── Voci principali menu ────────────────────────────────────────── */
.modal-menu {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0 !important;
  list-style: none;
  margin: 0;
}

.modal-menu > li {
  width: 100%;
  overflow: hidden;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.modal-menu > li:first-child {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.modal-menu > li > a {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(28px, calc(100dvw * 48 / var(--viewSize)), 72px);
  line-height: 1.1;
  font-weight: 700;
  color: var(--neutral-0);
  text-transform: uppercase;
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: 0.4em;
  padding: 0.35em 0;
  margin: 0;
  /* stato iniziale per animazione stagger */
  opacity: 0;
  transform: translateY(30px);
  transition:
    color 0.25s ease,
    transform 0.25s ease,
    opacity 0.25s ease;
}

.modal-menu > li > a:hover {
  color: var(--blue-20);
}

.modal-menu > li > a:hover::after {
  opacity: 1;
  transform: translateX(0);
}

.modal-menu > li.current_page_item > a {
  color: var(--blue-20);
}

.modal-menu > li.current_page_item > a::after {
  opacity: 1;
  transform: translateX(0);
}

/* ── Animazione stagger: voci entrano in sequenza all'apertura ────── */
.custom-modal.show.visible .modal-menu > li > a {
  opacity: 1;
  transform: translateY(0);
}

.custom-modal.show.visible .modal-menu > li:nth-child(1) > a {
  transition-delay: 0.05s;
}
.custom-modal.show.visible .modal-menu > li:nth-child(2) > a {
  transition-delay: 0.1s;
}
.custom-modal.show.visible .modal-menu > li:nth-child(3) > a {
  transition-delay: 0.15s;
}
.custom-modal.show.visible .modal-menu > li:nth-child(4) > a {
  transition-delay: 0.2s;
}
.custom-modal.show.visible .modal-menu > li:nth-child(5) > a {
  transition-delay: 0.25s;
}
.custom-modal.show.visible .modal-menu > li:nth-child(6) > a {
  transition-delay: 0.3s;
}
.custom-modal.show.visible .modal-menu > li:nth-child(7) > a {
  transition-delay: 0.35s;
}
.custom-modal.show.visible .modal-menu > li:nth-child(8) > a {
  transition-delay: 0.4s;
}
.custom-modal.show.visible .modal-menu > li:nth-child(9) > a {
  transition-delay: 0.45s;
}
.custom-modal.show.visible .modal-menu > li:nth-child(10) > a {
  transition-delay: 0.5s;
}

/* ── Voci con sotto-pagine: layout a riga ─────────────────────────── */
.modal-menu > li.menu-item-has-children {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}

.modal-menu > li.menu-item-has-children > a {
  flex: 1 1 auto;
  min-width: 0;
}

/* ── Bottone toggle (chevron) ─────────────────────────────────────── */
.modal-menu .sub-menu-toggle {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.4em;
  height: 2.4em;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 999px;
  color: var(--neutral-0);
  font-size: clamp(14px, calc(100dvw * 18 / var(--viewSize)), 22px);
  line-height: 1;
  cursor: pointer;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease;
}

.modal-menu .sub-menu-toggle:hover,
.modal-menu .sub-menu-toggle:focus-visible {
  color: var(--neutral-0);
  border-radius: 999px;
}

.modal-menu .sub-menu-toggle i {
  display: inline-block;
  transition: transform 0.35s ease;
}

.modal-menu > li.menu-item-has-children.is-open > .sub-menu-toggle i {
  transform: rotate(180deg);
}

/* ── Sotto-voci (sub-menu): collassate di default ─────────────────── */
.modal-menu .sub-menu {
  flex-basis: 100%;
  list-style: none;
  margin: 0;
  padding: 0 0 0 1.25em;
  display: flex;
  flex-direction: column;
  gap: 0.15em;
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transition:
    max-height 0.4s ease,
    opacity 0.3s ease,
    padding 0.3s ease,
    margin 0.3s ease;
}

.modal-menu > li.menu-item-has-children.is-open > .sub-menu {
  max-height: 80vh;
  opacity: 1;
  margin: 0.5em 0 0.75em;
  padding: 0 0 0.25em 1.25em;
}

.modal-menu .sub-menu li {
  width: 100%;
}

.modal-menu .sub-menu a {
  display: inline-flex;
  align-items: center;
  font-family: var(--fontFamilyText, inherit);
  font-size: clamp(14px, calc(100dvw * 18 / var(--viewSize)), 22px);
  line-height: 1.3;
  font-weight: 500;
  color: var(--neutral-0);
  text-decoration: none;
  padding: 0.25em 0;
  opacity: 0.85;
  transition:
    color 0.2s ease,
    opacity 0.2s ease,
    transform 0.2s ease;
}

.modal-menu .sub-menu a:hover {
  color: var(--light-blue-10);
  opacity: 1;
  transform: translateX(4px);
  border-radius: 999px;
}

.modal-menu .sub-menu .current_page_item > a,
.modal-menu .sub-menu .current-menu-item > a {
  color: var(--light-blue-10);
  opacity: 1;
  border-radius: 999px;
}

/* ── Logo nel modale ─────────────────────────────────────────────── */
.custom-modal .main-logo svg {
  width: calc(100dvw * 56 / var(--viewSize));
  height: auto;
  max-width: 56px;
}

.custom-modal .logo-navbar > path {
  fill: var(--neutral-0);
}

/* ── Wrapper menu con scroll ─────────────────────────────────────── */
.menu-wrapper {
  overflow-y: auto;
  flex: 1 1 auto;
  /* min-height:0 = permette allo scroll interno di attivarsi invece di far
     sforare l'intera colonna quando il contenuto (o un sotto-menu aperto) cresce */
  min-height: 0;
  padding-right: 4px;
  display: flex;
  flex-direction: column;
}

/* Centra il menu verticalmente quando c'è spazio, ma resta scrollabile in
   overflow: i margini auto (a differenza di align-items:center) non tagliano
   la prima voce e lasciano raggiungere l'inizio con lo scroll */
.menu-wrapper > .modal-menu {
  margin-block: auto;
  width: 100%;
}

.cont-modal-sez.menu-cont > .menu-wrapper::-webkit-scrollbar {
  width: 4px;
}
.cont-modal-sez.menu-cont > .menu-wrapper::-webkit-scrollbar-track {
  background: transparent;
}
.cont-modal-sez.menu-cont > .menu-wrapper::-webkit-scrollbar-thumb {
  background: var(--light-blue-60);
  border-radius: 4px;
}

/* ── Footer modale: social + link legali ────────────────────────── */
.modal-menu-footer {
  padding-top: calc(100dvw * 24 / var(--viewSize));
}

.modal-social-link {
  font-size: calc(100dvw * 22 / var(--viewSize));
  color: var(--neutral-0);
  opacity: 0.7;
  text-decoration: none;
  transition: opacity 0.2s ease;
}

.modal-social-link:hover {
  opacity: 1;
}

.modal-menu-secondary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  width: 100%;
  gap: 12px 20px;
  padding: 0 !important;
  list-style: none;
}

.modal-menu-secondary > li > a,
.modal-legal-link {
  font-size: calc(100dvw * 14 / var(--viewSize));
  line-height: 1.4;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.5);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  text-decoration: none;
  transition: color 0.2s ease;
}

button.modal-legal-link {
  background: none;
  border: 0;
  padding: 0;
  font-family: inherit;
  cursor: pointer;
}

.modal-menu-secondary > li > a:hover,
.modal-legal-link:hover {
  color: rgba(255, 255, 255, 0.9);
}

.modal-menu-secondary > li.current_page_item > a {
  color: var(--light-blue-10);
}

/* ── Colonna destra decorativa ───────────────────────────────────── */
.cont-prod-modal-menu {
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 152, 122, 0.4) transparent;
  position: relative;
}

.cont-prod-modal-menu::-webkit-scrollbar {
  width: 4px;
}
.cont-prod-modal-menu::-webkit-scrollbar-track {
  background: transparent;
}
.cont-prod-modal-menu::-webkit-scrollbar-thumb {
  background: rgba(0, 152, 122, 0.4);
  border-radius: 4px;
}

.modal-deco-text {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(28px, calc(100dvw * 52 / var(--viewSize)), 68px);
  font-weight: 800;
  line-height: 1.1;
  color: rgba(255, 255, 255, 0.3);
  text-transform: uppercase;
  text-align: right;
  margin: 0;
  user-select: none;
  pointer-events: none;
}

@media screen and (max-width: 991px) {
  .modal-deco-text {
    font-size: 28px;
  }
}

.modal-deco-text span {
  color: rgba(255, 255, 255, 0.2);
  display: block;
}

/* ── Pulsante chiudi ─────────────────────────────────────────────── */
.btn-close-modal-menu {
  width: 56px;
  aspect-ratio: 1;
  border-radius: 50%;
  border: 1.5px solid rgba(255, 255, 255, 0.25);
  background-color: transparent;
  color: #fff;
  font-size: 18px;
  font-weight: normal;
  text-decoration: none;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
  transition:
    transform 0.2s ease,
    border-color 0.2s ease,
    background-color 0.2s ease;
}

.btn-close-modal-menu:hover {
  transform: scale(1.08) rotate(90deg);
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.5);
}

/* ── WhatsApp floating btn ───────────────────────────────────────── */
.wtzp-chat-btn {
  position: absolute;
  bottom: calc(100dvw * 20 / var(--viewSize));
  right: calc(100dvw * 20 / var(--viewSize));
  z-index: 12;
  width: clamp(40px, calc(100dvw * 48 / var(--viewSize)), 56px);
  aspect-ratio: 1;
  border-radius: 50%;
  background-color: #25d366;
  color: #fff;
  font-size: clamp(18px, calc(100dvw * 24 / var(--viewSize)), 28px);
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  transition: transform 0.2s ease;
}

.wtzp-chat-btn:hover {
  transform: scale(1.08);
}

/* ── Responsive mobile ───────────────────────────────────────────── */
@media screen and (max-width: 991px) {
  .cont-modal-sez.menu-cont {
    padding: 24px 24px 32px;
  }

  .modal-menu > li > a {
    font-size: clamp(24px, 7vw, 36px);
    padding: 0.3em 0;
  }

  .modal-deco-text {
    font-size: clamp(24px, 8vw, 36px);
  }
}

/* HOME */

/* HERO */
.hero {
  position: relative;
  background: var(--blue-80);
}
.cont-hero-video {
  width: 100%;
  height: 100dvh;
  position: relative;
  overflow: hidden;
}
.cont-hero-video > video {
  width: 100%;
  height: 100dvh;
  object-fit: cover;
  object-position: 100% 50%;
}
.cont-hero-video:after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100dvh;
  z-index: 2;
  background: linear-gradient(rgba(39, 53, 66, 0.1), var(--blue-80) 85%);
}
@media screen and (max-width: 575px) {
  .cont-hero-video > video {
    object-position: 87% 50%;
  }
  .cont-hero-video:after {
    background: linear-gradient(
      rgba(39, 53, 66, 0.1) 0% 20%,
      var(--blue-80) 85%
    );
  }
}

.splide__slide.hero-slide {
  width: 100dvw;
  height: 100dvh;
  position: relative;

  img {
    width: 100%;
    height: 100dvh;
    object-fit: cover;
    object-position: center;
  }
}
.hero-text {
  position: absolute;
  bottom: 12dvh;
  left: 0;
  z-index: 3;
}

.main-title > h1,
.main-title > h2 {
  line-height: calc(100dvw * 64 / var(--viewSize));
}

.main-title > h1 > .article,
.main-title > h2 > .article {
  font-family: var(--fontFamilyTitle);
  font-size: calc(100dvw * 52 / var(--viewSize));
  line-height: calc(100dvw * 64 / var(--viewSize));
  font-weight: 400;
  background: linear-gradient(
    var(--neutral-0) 60%,
    rgba(245, 245, 245, 0.6)
  ); /* Gradiente */
  -webkit-background-clip: text; /* Usa il gradiente come sfondo del testo */
  -webkit-text-fill-color: transparent; /* Rende il testo trasparente per mostrare il gradiente */
  display: inline-block;
	align-items: baseline;
    line-height: 1;
}
.main-title > h1 > .title,
.main-title > h2 > .title {
  font-family: var(--fontFamilyTitle);
  font-size: calc(100dvw * 104 / var(--viewSize));
  line-height: calc(100dvw * 112 / var(--viewSize));
  font-weight: 700;
  background: linear-gradient(
    var(--neutral-0) 60%,
    rgba(245, 245, 245, 0.6)
  ); /* Gradiente */
  -webkit-background-clip: text; /* Usa il gradiente come sfondo del testo */
  -webkit-text-fill-color: transparent; /* Rende il testo trasparente per mostrare il gradiente */
  display: inline-block;
	align-items: baseline;
    line-height: 1;
}
.main-title > .subtitle {
  font-family: var(--fontFamilyTitle);
  font-size: calc(100dvw * 40 / var(--viewSize));
  line-height: calc(100dvw * 40 / var(--viewSize));
  font-weight: 400;
  letter-spacing: 1px;
  margin: -12px 0 0 0;
  background: linear-gradient(
    rgba(245, 245, 245, 0.9) 70%,
    rgba(245, 245, 245, 0.2)
  ); /* Gradiente */
  -webkit-background-clip: text; /* Usa il gradiente come sfondo del testo */
  -webkit-text-fill-color: transparent; /* Rende il testo trasparente per mostrare il gradiente */
  display: inline-block;
}

.hero-slide:after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100dvw;
  height: 100dvh;
  z-index: 2;
  background: linear-gradient(rgba(39, 53, 66, 0.1), var(--blue-80) 85%);
}

#splidehero > .splide__pagination {
  bottom: 3dvh;
  justify-content: start;
  padding: 1rem;
  gap: 12px;
}

#splidehero > .splide__pagination > li > .splide__pagination__page {
  background: transparent;
  border: 1px solid var(--neutral-10);
}
#splidehero > .splide__pagination > li > .splide__pagination__page.is-active {
  background: var(--neutral-10);
}

@media screen and (min-width: 992px) {
  #splidehero > .splide__pagination {
    padding: 1rem 1.5rem;
  }
}
@media screen and (min-width: 1400px) {
  #splidehero > .splide__pagination {
    padding: 1rem 3rem;
  }
}

@media screen and (max-width: 576px) {
  .main-title > h1 > .article,
  .main-title > h2 > .article {
    font-size: calc(100dvw * 32 / var(--viewSize));
    line-height: calc(100dvw * 40 / var(--viewSize));
  }
  .main-title > h1 > .title,
  .main-title > h2 > .title {
    font-size: calc(100dvw * 54 / var(--viewSize));
    line-height: calc(100dvw * 64 / var(--viewSize));
  }

  .main-title > .subtitle {
    font-size: calc(100dvw * 28 / var(--viewSize));
    line-height: calc(100dvw * 28 / var(--viewSize));
  }

  /* Hero homepage: "La" e "Filarmonica" attaccate (i text-node di solo
     whitespace non generano item in un flex container) e sottotitolo
     ridotto per stare su una riga. Scoped a .hero per non toccare
     partials/hero-photo.php, che riusa .main-title. */
  .hero .main-title > h1 {
    display: flex;
    flex-wrap: nowrap;
    align-items: baseline;
    gap: 0;
  }
  .hero .main-title > h1 > .title {
    font-size: calc(100dvw * 50 / var(--viewSize));
  }
  .hero .main-title > .subtitle {
    font-size: calc(100dvw * 21 / var(--viewSize));
    line-height: calc(100dvw * 26 / var(--viewSize));
    letter-spacing: 0;
    white-space: nowrap;
  }

  /* .hero-photo eredita anche .hero: con nowrap i titoli lunghi ("La nostra
     Associazione") sforavano la viewport. Qui si lascia andare a capo: le
     coppie corte ("La Scuola di" + "Musica") restano comunque su una riga. */
  .hero-photo .main-title > h1 {
    flex-wrap: wrap;
  }
  .hero-photo .main-title > h1 > .article {
    white-space: nowrap;
  }
}
.cont-hero-fall-down {
  width: 100%;
  height: fit-content;
  display: flex;
  justify-content: center;
  position: absolute;
  bottom: 0;
  left: 0;
  z-index: 100;
  padding-bottom: 40px;
}
.hero-fall-down {
  color: var(--neutral-5) !important;
  line-height: 22px;
  font-size: 22px;
  padding: 1rem;
  width: 48px;
  height: 48px;

  animation: arrowPulse 3s ease-in-out infinite;
  will-change: transform, opacity;
}

@keyframes arrowPulse {
  0% {
    opacity: 0;
    transform: scale(0.8) translateY(0);
  }
  60% {
    opacity: 1;
    transform: scale(1) translateY(12px);
  }
  100% {
    opacity: 0;
    transform: scale(0.8) translateY(14px);
  }
}

.citazione {
  width: 100%;
  background: linear-gradient(169deg, var(--blue-80), var(--blue-40));
  position: relative;
  padding: calc(100dvw * 40 / var(--viewSize)) 20%;
}
.citazione::before {
  content: "";
  width: 100%;
  height: calc(100dvw * 90 / var(--viewSize));
  position: absolute;
  top: -1px;
  left: 0;
  background: linear-gradient(var(--blue-80), rgba(0, 24, 45, 0));
  z-index: 2;
}
.text-cit {
  position: relative;
  z-index: 3;
  color: var(--neutral-5);
  text-align: center;
  font-family: "Noto Serif Display", serif;
  font-style: italic;
  font-weight: 500;
  font-size: calc(100dvw * 26 / var(--viewSize));
  line-height: calc(100dvw * 40 / var(--viewSize));
  background: linear-gradient(
    171deg,
    var(--neutral-5),
    rgba(163, 174, 181, 0.87)
  ); /* Gradiente */
  -webkit-background-clip: text; /* Usa il gradiente come sfondo del testo */
  -webkit-text-fill-color: transparent; /* Rende il testo trasparente per mostrare il gradiente */
  display: inline-block;
}

/* Mobile: la citazione occupa il 95% del viewport (su desktop resta al 60%). */
@media screen and (max-width: 576px) {
  .citazione {
    padding: calc(100dvw * 40 / var(--viewSize)) 2.5dvw;
  }
}

/* SEZIONE 1 LAST EVENT */

.sez-lastEvents {
  background-color: var(--light-blue-05);
  position: relative;
  height: 130dvw; /* 148 1400px, 208 991px, 300 545px.  */
  margin-bottom: calc(75dvw / 32 * 9);
}


@media screen and (min-width: 1402px) and (max-width: 1700px) {
  .sez-lastEvents {
    height: calc(
      130dvw + clamp(0px, calc(1700px - 100dvw), 260px)
    );
  }
}

@media screen and (max-width: 1401px) {
  .sez-lastEvents {
    height: 148dvw;
  }
}

@media screen and (max-width: 991px) {
  .sez-lastEvents {
    height: 184dvw;
  }
}

@media screen and (max-width: 576px) {
  .sez-lastEvents {
    height: calc(100dvw * (16px / 1.1dvw));
    min-height: 264dvw;
    max-height: 332dvw;
  }
}
@media screen and (max-width: 520px) {
  .sez-lastEvents {
    height: calc(100dvw * (16px / 1.1dvw));
  }
}
@media screen and (max-width: 480px) {
  .sez-lastEvents {
    height: calc(80dvw * (16px / 1dvw));
    max-height: 348dvw;
  }
}
@media screen and (max-width: 410px) {
  .sez-lastEvents {
    height: calc(87dvw * (14px / 1dvw));
  }
}

/* Mobile: la sezione torna a flusso normale (altezze fisse in dvw + contenuto
   assoluto erano tarate a mano per ogni viewport). Il video non straborda più
   sulla sezione Formazioni ma resta dentro la sezione a cui appartiene.
   .clefs-watermark è già d-none sotto sm, quindi rendere statico
   .cont-lastEvents non toglie nulla.
   Deve stare dopo i blocchi 576/520/480/410 qui sopra per vincere su height. */
@media screen and (max-width: 576px) {
  .sez-lastEvents {
    height: auto;
    min-height: 0;
    max-height: none;
    margin-bottom: 0;
    padding-bottom: calc(100dvw * 48 / var(--viewSize));
  }
  .cont-lastEvents {
    position: static;
    padding-top: calc(100dvw * 40 / var(--viewSize));
  }
}

.clefs-watermark {
  position: sticky;
  top: 0;
  right: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: end;
  padding: calc(100dvw * 92 / var(--viewSize)) 4dvw 4dvw;
}

.clefs-watermark-main-menu {
  position: absolute;
  bottom: 50%;
  right: -20dvh;
  transform: translateY(60%);
  z-index: -1;
  display: flex;
  flex-direction: column;
  align-items: end;
}

@media screen and (max-width: 991px) {
  .clefs-watermark-main-menu {
    bottom: 50%;
    right: -30dvh;
    transform: translateY(60%);
  }
}

@media screen and (max-width: 767px) {
  .clefs-watermark-main-menu {
    opacity: 0.6;
  }
}

@media screen and (max-width: 565px) {
  .clefs-watermark-main-menu {
    right: -30dvh;
  }
}

.clef {
  width: 60dvw;
  height: auto;
}

.clef.menu {
  width: 120dvh;
  height: auto;
  transform: rotate(-20deg);
}

.cont-lastEvents {
  position: absolute;
  top: calc(100dvw * 40 / var(--viewSize));
  left: 0;
  z-index: 2;
}

.contHeadSez1 {
  padding: calc(100dvw * 40 / var(--viewSize)) 5dvw;
  margin: 0;
  flex-wrap: wrap;
  display: flex;
}
.btn-cta-events {
  transition: ease-in-out 0.3s;
  color: var(--blue-40);
  font-weight: 600;
  span {
    font-weight: 600;
  }
}

.btn-cta-events:hover {
  color: var(--blue-40);
  transform: scale(1.05);
}

@media screen and (max-width: 576px) {
  .cont-hero-video > video {
    object-position: 87% 50%;
  }
  .cont-hero-video:after {
    background: linear-gradient(
      rgba(39, 53, 66, 0.1) 0% 20%,
      var(--blue-80) 85%
    );
  }

  .cont-lastEvents {
    position: relative;
    z-index: 2;
    top: unset;
    left: unset;
  }
  .contHeadSez1 {
    padding: calc(100dvw * 20 / var(--viewSize)) 5dvw;
  }

  .btn-cta-events,
  .btn-cta-events > * {
    font-size: 20px;
  }
}

#splideEvents > .splide__arrows > .splide__arrow {
  top: calc(100% + 40px);
  background-color: transparent;
}
#splideEvents > .splide__arrows > .splide__arrow > svg,
#splideEvents > .splide__arrows > .splide__arrow > svg > path {
  fill: var(--blue-40);
}
#splideEvents > .splide__arrows > .splide__arrow--next {
  right: unset;
  left: calc(5dvw + 48px);
}
#splideEvents > .splide__arrows > .splide__arrow--prev {
  left: 5dvw;
}
.card-event-home {
  padding: 0 5dvw 0 0;
}

.card-event-home > a {
  display: block;
  text-decoration: none;
  width: 100%;
  aspect-ratio: 16/9;
  z-index: 3;
  position: relative;
  border-radius: calc(100dvw * 32 / var(--viewSize));
  box-shadow: 0 0 16px rgba(0, 24, 45, 0.4);
  overflow: hidden;
  transition: ease-in-out 0.3s;
  background: linear-gradient(
    65deg,
    var(--blue-80) 0%,
    var(--light-blue-40) 30%,
    var(--blue-80) 70%
  );
}
.card-event-home > a:hover {
  transform: scale(1.03);
}

.card-event-home > a > img {
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
  object-position: center;
}
.card-event-home > a::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  aspect-ratio: 16/9;
  background: linear-gradient(
    rgba(0, 24, 45, 0.1) 0% 30%,
    var(--blue-80) 85% 100%
  );
  z-index: 2;
}

.card-event-home > a > .cont-titles {
  display: block;
  text-decoration: none;
  width: 100%;
  position: absolute;
  bottom: 24px;
  left: 24px;
  z-index: 3;
  color: var(--neutral-0);
  margin: 0;
}

.card-event-home > a > .label-cta {
  display: block;
  text-decoration: none;
  position: absolute;
  top: 24px;
  right: 24px;
  z-index: 3;
  color: var(--neutral-0);
  margin: 0;
  text-shadow: 0 0 8px rgba(0, 24, 45, 0.5);
}
.card-event-home > a > .date {
  display: flex;
  align-items: center;
  justify-content: end;
  gap: 8px;
  position: absolute;
  text-decoration: none;
  top: 24px;
  left: 24px;
  z-index: 3;
  color: var(--neutral-0);
  text-shadow: 0 0 8px rgba(0, 24, 45, 0.5);
}

@media screen and (max-width: 576px) {
  .card-event-home > a {
    aspect-ratio: 4/3;
    border-radius: 16px;
  }
  .card-event-home > a > img {
    aspect-ratio: 4/3;
  }
  .card-event-home > a::after {
    aspect-ratio: 4/3;
  }
  .card-event-home > a > .cont-titles {
    bottom: 16px;
    left: 16px;
  }
  .card-event-home > a > .label-cta {
    top: 16px;
    right: 16px;
  }
  .card-event-home > a > .date {
    top: 16px;
    left: 16px;
    background-color: var(--blue-20);
    border-radius: 32px;
    padding: 2px 10px;
    text-shadow: unset;
    text-transform: uppercase;
    font-size: 14px;
  }
  .card-event-home > a > .cont-titles > h5 {
    font-size: 18px;
    line-height: 22px;
    letter-spacing: 1px;
    width: calc(100% - 32px);
  }
  .card-event-home > a > .cont-titles > h3 {
    font-size: 36px;
    line-height: 42px;
    width: calc(100% - 32px);
  }
}

/* subSez CITATION */

.sez-citation {
  margin: calc(100dvw * 120 / var(--viewSize)) 5dvw 0;
}
.sez1-cit-home {
  font-style: italic;
  font-weight: 300;
  font-size: calc(100dvw * 52 / var(--viewSize));
  line-height: calc(100dvw * 64 / var(--viewSize));
  font-family: var(--fontFamilyMain);
  letter-spacing: 2px;
  color: var(--blue-40);
  width: 85%;
  min-width: 300;
}
.card-elm {
  color: var(--blue-40);
  position: relative;
  display: block;
  aspect-ratio: 1 !important;
  padding: 16px;
  border-radius: 16px;
  box-shadow: 0px 0px 4px var(--neutral-40);
  background: linear-gradient(
    65deg,
    var(--neutral-10) 0%,
    var(--neutral-0) 30%,
    var(--neutral-10) 70%
  );
}

.card-elm > svg {
  width: 25%;
  aspect-ratio: 1;
  position: absolute;
  top: 16px;
  right: 16px;
}
.card-elm > .label-cta {
  width: 60%;
  position: absolute;
  top: 16px;
  left: 16px;
}
.card-elm > .cont-text {
  width: calc(100% - 32px);
  position: absolute;
  bottom: 16px;
  left: 16px;
}

.card-elm > .cont-text > .number {
  color: var(--neutral-80);
}
.card-elm > .cont-text > p {
  color: var(--neutral-80);
}

@media screen and (max-width: 1401px) {
  .sez-citation {
    margin: calc(100dvw * 68 / var(--viewSize)) 5dvw 0;
  }

  .sez1-cit-home {
    font-size: calc(100dvw * 32 / var(--viewSize));
    line-height: calc(100dvw * 44 / var(--viewSize));
  }
}

@media screen and (max-width: 576px) {
  .sez-citation {
    margin: 60px 0dvw 0;
  }
  .cont-scroll-card {
    overflow-x: auto;
  }
  .sez-citation > .cont-scroll-card > .cont-card {
    padding: 0 5dvw;
    width: fit-content;
  }
  .sez-citation > .cont-scroll-card > .cont-card > .card-elm {
    min-width: 292px;
    width: 75dvw;
    aspect-ratio: 4/3 !important;
  }
  .card-elm > .cont-text > .number {
    color: var(--neutral-80);
    font-size: calc(100dvw * 32 / var(--viewSize));
    line-height: calc(100dvw * 38 / var(--viewSize));
  }

  .sez1-cit-home {
    font-size: 32px;
    line-height: 40px;
    width: 100%;
    padding: 0 5dvw;
  }
}

@media screen and (max-width: 576px) {
  .sez-citation {
    margin: 60px 0dvw 0;
  }
  .cont-scroll-card {
    overflow-x: auto;
  }
  .sez-citation > .cont-scroll-card > .cont-card {
    padding: 0 5dvw;
    width: fit-content;
  }
  .sez-citation > .cont-scroll-card > .cont-card > .card-elm {
    min-width: 292px;
    width: 75dvw;
    aspect-ratio: 4/3 !important;
  }
  .card-elm > .cont-text > .number {
    color: var(--neutral-80);
    font-size: calc(100dvw * 32 / var(--viewSize));
    line-height: calc(100dvw * 38 / var(--viewSize));
  }

  .sez1-cit-home {
    font-size: 32px;
    line-height: 40px;
    width: 100%;
    padding: 0 5dvw;
  }
}
@media screen and (max-width: 480px) {
  .sez-citation > .cont-scroll-card > .cont-card > .card-elm {
    min-width: 292px;
    width: 75dvw;
    aspect-ratio: 8/5 !important;
  }
}

/* VIDEO HOME */
.video-home {
  overflow: hidden;
  width: 75%;
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%) translateY(50%);
  border-radius: calc(100dvw * 32 / var(--viewSize));
  background-color: var(--blue-20);
  box-shadow: var(--shadow-hard);
  margin: 0;
  z-index: 4;
  min-height: calc(65dvw / 16 * 9);
  display: flex;
  align-items: center;
  justify-content: center;
}
.video-home > video {
  width: 100%;
  height: 100%;
}

@media screen and (max-width: 991px) {
  .video-home {
    border-radius: 20px;
  }
}

@media screen and (max-width: 576px) {
  .video-home {
    position: static;
    transform: none;
    width: 90dvw;
    margin: calc(100dvw * 40 / var(--viewSize)) auto 0;
    aspect-ratio: 16 / 9;
    min-height: 0;
  }
  .video-home > video {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
}

/* sezione formazioni */

.cont-carousel-formazioni {
  padding: 0 0 0 calc(100dvw * 16 / var(--viewSize));
  position: relative;
  z-index: 33;
}
.cta {
  background-color: var(--blue-40);
  color: var(--neutral-0);
  padding: calc(100dvw * 6 / var(--viewSize))
    calc(100dvw * 12 / var(--viewSize));
  border-radius: calc(100dvw * 40 / var(--viewSize));
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: calc(100dvw * 8 / var(--viewSize));
  min-width: 120px;
  max-width: 360px;
}
.cont-carousel-formazioni > a.cta {
  position: absolute;
  bottom: calc(100dvw * 20 / var(--viewSize));
  right: calc(100dvw * 16 / var(--viewSize));
  z-index: 3;
}

#formazioni-carousel {
  width: 100%;
  position: relative;
  box-shadow: 0 0 12px rgba(0, 0, 0, 0.4);
  border-radius: calc(100dvw * 20 / var(--viewSize));
}

/* Velo blu solo nell'angolo in basso a destra, per staccare il pulsante
   "Galleria" (bianco, sfondo trasparente) dalle foto chiare. Stessa palette
   del gradiente di .card-articles-home. Sta sopra le slide ma sotto la CTA. */
#formazioni-carousel::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  z-index: 2;
  background: radial-gradient(
    120% 90% at 100% 100%,
    var(--blue-80) 0%,
    rgba(0, 24, 45, 0.55) 35%,
    rgba(0, 24, 45, 0) 70%
  );
}
#formazioni-carousel > .splide__track {
  overflow: hidden;
  width: 100%;
  aspect-ratio: 1;
  border-radius: calc(100dvw * 20 / var(--viewSize));
}

.splide__slide.slide-formazioni {
  width: 100%;
  aspect-ratio: 1;
}
.splide__slide.slide-formazioni > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.cont-card-formazioni {
  gap: calc(100dvw * 16 / var(--viewSize));
}
.card-formazioni {
  width: calc(50% - (100dvw * 8 / var(--viewSize)));
  height: calc(
    ((100dvw - 6rem) / 12 * 5 - (100dvw * 40 / var(--viewSize))) / 2
  );
  border-radius: calc(100dvw * 20 / var(--viewSize));
  /* background: linear-gradient(60deg, var(--light-blue-10), var(--light-blue-20)); */
  background: white;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
  position: relative;
  display: block;
  overflow: hidden;
  transition: ease-in-out 0.3s;
}
.card-formazioni:hover {
  transform: scale(1.03);
}
.cont-text-formazioni {
  position: absolute;
  top: calc(100dvw * 16 / var(--viewSize));
  right: calc(100dvw * 16 / var(--viewSize));
  text-decoration: none;
  color: var(--blue-40);
  width: 60%;
  display: flex;
  flex-direction: column;
  align-items: end;
}
.cont-text-formazioni > .title {
  text-decoration: none;
  color: var(--blue-40);
  text-align: right;
  margin: 0;
}
.text-formazioni {
  font-size: calc(100dvw * 14 / var(--viewSize));
  text-decoration: none;
  color: var(--neutral-60);
  text-align: right;
  width: 80%;
}
.card-formazioni > .action {
  position: absolute;
  bottom: calc(100dvw * 16 / var(--viewSize));
  right: calc(100dvw * 16 / var(--viewSize));
  text-decoration: none;
}

.card-formazioni > img {
  position: absolute;
  top: 16px;
  left: 0;
  height: 100%;
  aspect-ratio: 1;
  fill: black;
  transition: ease-in-out 0.3s;
  opacity: 0.4;
}
.card-formazioni:hover > img {
  transform: scale(1.1);
  opacity: 0.5;
}

@media screen and (max-width: 1199px) {
  .cont-carousel-formazioni {
    padding: 0;
  }
  #formazioni-carousel > .splide__track {
    aspect-ratio: 16/9;
  }

  .splide__slide.slide-formazioni {
    aspect-ratio: 16/9;
  }

  .cont-card-formazioni {
    gap: 24px;
  }

  .card-formazioni {
    width: calc(50% - 12px);
  }
}

@media screen and (max-width: 992px) {
  .card-formazioni {
    height: unset;
    aspect-ratio: 16/9;
  }
}
@media screen and (max-width: 565px) {
  .card-formazioni {
    width: 100%;
  }

  #formazioni-carousel > .splide__track {
    aspect-ratio: 1;
  }

  .splide__slide.slide-formazioni {
    aspect-ratio: 1;
  }
}

/* Su smartphone il titolo "Le Formazioni" non deve staccarsi dall'alto:
   il margine era quello di default dello user agent per h2. */
@media screen and (max-width: 576px) {
  #formazioni h2 {
    margin-top: 0;
  }
}

/* sez scuola */
.cont-mus-orchestra {
  aspect-ratio: 16/9;
}

.cont-mus-orchestra > .musical-notes-orchestra {
  aspect-ratio: 16/9;
}

.orchestra {
  width: 100%;
  margin-top: clamp(60px, calc(100dvw / 8), 100px);
  height: auto;
  position: absolute;
  bottom: -2px;
  left: 0;
}

.sez-scuola {
  background: linear-gradient(
    168deg,
    var(--blue-40) 0% 30%,
    #0079bf,
    var(--blue-40) 67% 100%
  );
  padding-top: calc(100dvw * 20 / var(--viewSize));
  padding-bottom: calc(100dvw * 100 / var(--viewSize));
  display: flex;
  flex-direction: column;
  align-items: center;
}

.cont-scuola-home {
  width: 90dvw;
}

.card-sede-home {
  width: 90dvw;
  aspect-ratio: 3/1;
  border-radius: calc(100dvw * 20 / var(--viewSize));
  overflow: hidden;
  transition: ease-in-out 0.3s;
  position: relative;
}
.card-sede-home > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.card-sede-home > .cont-text {
  width: 42%;
  min-width: 300px;
  max-width: 600px;
  padding: calc(100dvw * 12 / var(--viewSize))
    calc(100dvw * 16 / var(--viewSize));
  border-radius: calc(100dvw * 12 / var(--viewSize));
  background-color: rgba(255, 255, 255, 0.85);
  position: absolute;
  left: calc(100dvw * 20 / var(--viewSize));
  bottom: calc(100dvw * 20 / var(--viewSize));
}
/* Testo sede appena più piccolo delle section-description (16) */
.card-sede-home > .cont-text > p {
  font-size: calc(100dvw * 15 / var(--viewSize));
}

.card-plus {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 40px;
}
.card-plus > .cont-icon {
  position: absolute; /* necessario per il pseudo-elemento */
  top: 0;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  aspect-ratio: 1;
  border-radius: 50%;
  padding: 3px;
  background: #000; /* colore interno del cerchio */
  overflow: hidden; /* taglia l'eventuale bordo extra */
  background: linear-gradient(45deg, #defe8c, #ffbaba, #ff4747);
}

.card-plus > .cont-icon > .rounded-circle {
  width: calc(100% - 2px);
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
.card-plus > .cont-text > h6 {
  height: 72px;
  margin: 16px 0;
}

@media (max-width: 1199px) {
  .card-plus {
    aspect-ratio: unset;
    height: 240px;
  }
}

@media (max-width: 991px) {
  .card-plus {
    height: 300px;
  }
  .card-sede-home {
    aspect-ratio: 16/9;
  }

  .card-sede-home > .cont-text > p {
  -webkit-line-clamp: 3;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
}

@media (max-width: 767px) {
  .card-plus {
    aspect-ratio: 16/9;
    height: auto;
    align-items: center;
  }
  .card-sede-home > .cont-text {
    max-width: unset;
  }
  .card-sede-home {
    aspect-ratio: 4/3;
  }
}

@media (max-width: 575px) {
  .card-sede-home {
    aspect-ratio: 1;
  }
  .card-sede-home > .cont-text > p {
  -webkit-line-clamp: 2;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
}

.sez-didattica-home {
  margin-top: -2px;
  background: linear-gradient(var(--blue-40) 0% 10%, var(--blue-60));
}

.cont-corsi-home {
  width: calc(50% - (100dvw * 16 / var(--viewSize)));
  aspect-ratio: 1;
  display: flex;
  flex-wrap: wrap;
}

.cont-splide-corsi {
  width: 100%;
  aspect-ratio: 3/2;
  padding-bottom: calc(100dvw * 16 / var(--viewSize));
}
.splideCorsi {
  width: 100%;
  height: 100%;
  border-radius: calc(100dvw * 20 / var(--viewSize));
  overflow: hidden;

  .splide__arrows > button {
    transition: 0.2s;
  }

  .splide__track {
    border: 1px solid var(--blue-40);
    width: 100%;
    height: 100%;
  }
}
.splide__slide > .card-corso {
  width: 100%;
  height: 100%;
  background: linear-gradient(200deg, var(--blue-20), var(--neutral-0));
  display: flex;
  flex-wrap: wrap;
  justify-content: "space-between";
  align-items: end;
  gap: calc(100dvw * 16 / var(--viewSize));
  padding: calc(100dvw * 40 / var(--viewSize))
    calc(100dvw * 16 / var(--viewSize)) calc(100dvw * 16 / var(--viewSize));
}
.splide__slide > .card-corso > .cont-img {
  width: 50%;
  height: 100%;
  padding-top: calc(100dvw * 20 / var(--viewSize));
  display: flex;
  align-items: center;
}
.splide__slide > .card-corso > .cont-img > img {
  width: 100%;
  display: block;
}
.splide__slide > .card-corso > .cont-text {
  width: calc(50% - (100dvw * 16 / var(--viewSize)));
  background: var(--neutral-0);
  border-radius: calc(100dvw * 12 / var(--viewSize));
  padding: calc(100dvw * 16 / var(--viewSize));
}

.splide__pagination--ttb {
  right: 8px;
  gap: 6px;
  padding: unset;
  top: unset;
  bottom: 8px;
}

.card-tutti-corsi {
  width: 100%;
  aspect-ratio: 3/1;
  border-radius: calc(100dvw * 20 / var(--viewSize));
  overflow: hidden;
  transition: ease-in-out 0.3s;
  position: relative;
}

.card-tutti-corsi > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.card-tutti-corsi > .cont-text {
  padding: calc(100dvw * 8 / var(--viewSize))
    calc(100dvw * 16 / var(--viewSize));
  border-radius: calc(100dvw * 12 / var(--viewSize));
  background-color: var(--neutral-0);
  position: absolute;
  left: calc(100dvw * 20 / var(--viewSize));
  bottom: calc(100dvw * 20 / var(--viewSize));
  display: flex;
  align-items: center;
}

/* Sostenitori */
section.sostenitori {
  background: var(--blue-40);
  position: relative;
}

.cont-img-sostenitori-home {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.cont-img-sostenitori-home > img {
  object-fit: cover;
  object-position: 100% 0%;
  height: 100%;
  width: 100%;
}

.content-sostenitori {
  padding: calc(100dvw * 60 / var(--viewSize)) 0
    calc(100dvw * 80 / var(--viewSize)) 0;
  position: relative;
  z-index: 3;
  width: 100%;
  background: linear-gradient(var(--blue-60) 0% 15%, rgba(0, 48, 91, 0.5));
}

.splide.sostenitori {
  padding-bottom: calc(100dvw * 40 / var(--viewSize));
}
.splide.sostenitori > .splide__track {
  padding: 20px 0px;
}

/* Safari applica lo stretch del flex e ignora l'aspect-ratio delle slide:
   i loghi diventavano ovali. Centrando gli item l'altezza torna a derivare
   dall'aspect-ratio, e le height esplicite (allineate ai fixedWidth di
   main.js) fanno da rete di sicurezza. */
.splide.sostenitori .splide__list {
  align-items: center;
}
.splide__slide.sostenitori {
  border-radius: 50%;
  aspect-ratio: 1;
  align-self: center;
  flex: 0 0 auto;
  height: 220px;
  background: linear-gradient(var(--neutral-10), white);
  /* Ombra blu scuro dietro al cerchio; in hover passa a blu chiaro. */
  box-shadow: 0 10px 28px rgba(0, 24, 45, 0.38);
  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease;
}
.splide__slide.sostenitori:hover {
  transform: scale(1.02);
  box-shadow: 0 12px 32px rgba(122, 175, 211, 0.75);
}
.splide__slide.sostenitori > .cont-img {
  border-radius: 50%;
  aspect-ratio: 1;
  width: 100%;
  overflow: hidden;
}
.splide__slide.sostenitori > .cont-img > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}

.splide.sostenitori .cont-img {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Il logo riempie tutto il cerchio della card (contain per non deformarlo). */
.splide.sostenitori .sostenitore-logo {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

@media screen and (max-width: 992px) {
  .splide__slide.sostenitori {
    height: 170px;
  }
}

/* Mobile: loghi all'80% della larghezza schermo (fixedWidth: "80vw" in main.js).
   Forma e autoscroll restano invariati, cambia solo la scala. */
@media screen and (max-width: 576px) {
  .splide__slide.sostenitori {
    height: 65vw;
  }
}

.cont-sostienici {
  padding: 0 5dvw calc(100dvw * 40 / var(--viewSize)) 5dvw;
}

.card-sostienici {
  background: rgba(255, 255, 255, 0.82);
}

.card-giornalino-home {
  padding: 0 calc(100dvw * 16 / var(--viewSize)) 0 0;
}

.card-giornalino-home > a {
  display: block;
  text-decoration: none;
  border-radius: calc(100dvw * 24 / var(--viewSize));
  width: 100%;
  aspect-ratio: 309/383;
  z-index: 3;
  position: relative;
  border-radius: calc(100dvw * 16 / var(--viewSize));
  box-shadow: 0 0 16px rgba(0, 24, 45, 0.4);
  overflow: hidden;
  transition: ease-in-out 0.3s;
  background: linear-gradient(
    65deg,
    var(--blue-80) 0%,
    var(--light-blue-40) 30%,
    var(--blue-80) 70%
  );
}
.card-giornalino-home > a:hover {
  transform: scale(1.03);
}

.card-giornalino-home > a > img {
  width: 100%;
  aspect-ratio: 309/383;
  object-fit: cover;
  object-position: center;
}

.card-giornalino-home > a::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  aspect-ratio: 309/383;
  background: linear-gradient(
    var(--blue-80) 0% 15%,
    rgba(0, 24, 45, 0.1) 60% 100%
  );
  z-index: 2;
}
.card-giornalino-home > a > .cont-titles {
  display: block;
  text-decoration: none;
  width: calc(100% - 16px);
  position: absolute;
  top: 52px;
  left: 16px;
  z-index: 3;
  color: var(--neutral-0);
  margin: 0;
}
.card-giornalino-home > a > .cont-titles > h5 {
  font-size: calc(100dvw * 28 / var(--viewSize));
  line-height: calc(100dvw * 32 / var(--viewSize));
}

.card-giornalino-home > a > .cont-titles > .label-cta,
.card-giornalino-home > a > .cont-titles > .label-cta > * {
  text-decoration: none;
  color: var(--neutral-0);
  margin: 0;
  text-shadow: 0 0 4px rgba(0, 24, 45, 0.3);
  font-size: calc(100dvw * 16 / var(--viewSize));
  line-height: calc(100dvw * 18 / var(--viewSize));
}
.card-giornalino-home > a > .num-date {
  display: flex;
  align-items: center;
  justify-content: end;
  font-size: calc(100dvw * 16 / var(--viewSize));
  font-weight: 600;
  gap: 8px;
  letter-spacing: 1px;
  position: absolute;
  text-decoration: none;
  top: 12px;
  right: 12px;
  z-index: 3;
  color: var(--neutral-0);
}

#splideGiornalino > .splide__arrows > .splide__arrow {
  top: calc((100dvw * (-64) / var(--viewSize)) - 0.5rem);
  background-color: transparent;
}
#splideGiornalino > .splide__arrows > .splide__arrow > svg,
#splideGiornalino > .splide__arrows > .splide__arrow > svg > path {
  fill: var(--blue-40);
}
#splideGiornalino > .splide__arrows > .splide__arrow--next {
  right: 5dvw;
  left: unset;
}
#splideGiornalino > .splide__arrows > .splide__arrow--prev {
  right: calc(5dvw + 48px);
  left: unset;
}

.card-articles-home {
  padding: 0 calc(100dvw * 16 / var(--viewSize)) 0 0;
}

.card-articles-home > a {
  display: block;
  text-decoration: none;
  border-radius: calc(100dvw * 24 / var(--viewSize));
  width: 100%;
  aspect-ratio: 1;
  z-index: 3;
  position: relative;
  border-radius: calc(100dvw * 16 / var(--viewSize));
  box-shadow: 0 0 16px rgba(0, 24, 45, 0.4);
  overflow: hidden;
  transition: ease-in-out 0.3s;
  background: linear-gradient(
    65deg,
    var(--blue-80) 0%,
    var(--light-blue-40) 30%,
    var(--blue-80) 70%
  );
}
.card-articles-home > a:hover {
  transform: scale(1.03);
}

.card-articles-home > a > img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  object-position: center;
}

.card-articles-home > a::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  aspect-ratio: 1;
  background: linear-gradient(
    rgba(0, 24, 45, 0.1) 0% 50%,
    var(--blue-80) 90% 100%
  );
  z-index: 2;
}
.card-articles-home > a > .cont-titles {
  display: block;
  text-decoration: none;
  width: calc(100% - 32px);
  position: absolute;
  bottom: 16px;
  left: 16px;
  z-index: 3;
  color: var(--neutral-0);
  margin: 0;
}
.card-articles-home > a > .cont-titles > h5 {
  font-size: calc(100dvw * 22 / var(--viewSize));
  line-height: calc(100dvw * 26 / var(--viewSize));
}

.card-articles-home > a > .cont-titles > .label-cta,
.card-articles-home > a > .cont-titles > .label-cta > * {
  text-decoration: none;
  color: var(--neutral-0);
  margin: 0;
  text-shadow: 0 0 4px rgba(0, 24, 45, 0.3);
  font-size: calc(100dvw * 16 / var(--viewSize));
  line-height: calc(100dvw * 18 / var(--viewSize));
}
.card-articles-home > a > .num-date {
  display: flex;
  align-items: center;
  justify-content: end;
  font-size: calc(100dvw * 16 / var(--viewSize));
  font-weight: 600;
  gap: 8px;
  letter-spacing: 1px;
  position: absolute;
  text-decoration: none;
  top: 12px;
  right: 12px;
  z-index: 3;
  color: var(--neutral-0);
}

#splideArticles > .splide__arrows > .splide__arrow {
  top: calc((100dvw * (-64) / var(--viewSize)) - 0.5rem);
  background-color: transparent;
}
#splideArticles > .splide__arrows > .splide__arrow > svg,
#splideArticles > .splide__arrows > .splide__arrow > svg > path {
  fill: var(--blue-40);
}
#splideArticles > .splide__arrows > .splide__arrow--next {
  right: 5dvw;
  left: unset;
}
#splideArticles > .splide__arrows > .splide__arrow--prev {
  right: calc(5dvw + 48px);
  left: unset;
}

@media (max-width: 575px) {
  #splideArticles > .splide__arrows > .splide__arrow,
  #splideGiornalino > .splide__arrows > .splide__arrow {
    top: -14px;
  }
  #splideArticles > .splide__arrows > .splide__arrow--next,
  #splideGiornalino > .splide__arrows > .splide__arrow--next {
    right: unset;
    left: calc(5dvw + 48px);
  }
  #splideArticles > .splide__arrows > .splide__arrow--prev,
  #splideGiornalino > .splide__arrows > .splide__arrow--prev {
    right: unset;
    left: 5dvw;
  }
}

.card-contatti {
  width: 100%;
  border-radius: calc(100dvw * 48 / var(--viewSize));
  padding: calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 80 / var(--viewSize))
    calc(100dvw * 60 / var(--viewSize))
    calc(100dvw * 80 / var(--viewSize));
  background: linear-gradient(
    65deg,
    rgb(224, 230, 240) 0%,
    var(--neutral-0) 40% 60%,
    rgb(224, 230, 240) 100%
  );
  box-shadow: 0 0 16px 4px rgba(0, 24, 45, 0.2);
}

.btn-special {
  background: linear-gradient(65deg, #11192d 0%, #2e58a8 45% 55%, #11192d 100%);
  display: flex;
  align-items: center;
  padding: calc(100dvw * 12 / var(--viewSize))
    calc(100dvw * 20 / var(--viewSize));
  color: var(--neutral-0);
  transition: ease-in-out 0.3s;
  text-decoration: none;
  font-size: calc(100dvw * 16 / var(--viewSize));
  font-weight: 500;
  min-width: 160px;
}
.btn-special > * {
  color: var(--neutral-0);
  text-decoration: none;
  font-size: calc(100dvw * 16 / var(--viewSize));
  font-weight: 500;
}

/*
 * Font Awesome sceglie il taglio del font (Solid, Regular, Brands) tramite il
 * font-weight: .fa-solid vale 900, .fa-regular e .fa-brands 400. La regola qui
 * sopra colpisce tutti i figli diretti, icona compresa, e la riportava a 500:
 * il glifo veniva cercato nel taglio Regular, dove chevron-right non esiste, e
 * usciva il quadratino. Stessa specificità di .fa-solid, ma custom.css è
 * caricato dopo, quindi vinceva. Rimettiamo il peso che l'icona si aspetta.
 */
.btn-special > .fa-solid,
.btn-special > .fa-regular,
.btn-special > .fa-brands {
  font-weight: var(--fa-style, 900);
}

.btn-special:visited {
  color: var(--neutral-0);
}

.btn-special:hover {
  transform: scale(1.03);
  background: linear-gradient(65deg, #192440 0%, #3864b7 40% 60%, #11192d 100%);
  text-decoration: none;
}
@media (max-width: 991px) {
  .btn-special {
    font-size: calc(100dvw * 14 / var(--viewSize));
  }
  .btn-special > * {
    font-size: calc(100dvw * 14 / var(--viewSize));
  }
}
@media (max-width: 767px) {
  .btn-special {
    height: 44px;
    min-width: unset;
  }
}
.cont-input-email-news-home {
  gap: 12px;
}

.input-email-news-home {
  background: rgba(80, 127, 175, 0.15);
  padding: calc(100dvw * 12 / var(--viewSize))
    calc(100dvw * 20 / var(--viewSize));
  border: none;
  color: var(--neutral-60);
  text-decoration: none;
  font-size: calc(100dvw * 16 / var(--viewSize));
  font-weight: 400;
  min-width: calc(100dvw * 300 / var(--viewSize));
}
.input-email-news-home::placeholder {
  color: var(--neutral-50);
  font-size: calc(100dvw * 16 / var(--viewSize));
}

@media (max-width: 991px) {
  .input-email-news-home {
    min-width: calc(100dvw * 260 / var(--viewSize));
  }
}

@media (max-width: 991px) {
  .card-contatti {
    padding: calc(100dvw * 28 / var(--viewSize));
  }

  .input-email-news-home {
    min-width: calc(100dvw * 200 / var(--viewSize));
    font-size: calc(100dvw * 14 / var(--viewSize));
  }
  .input-email-news-home::placeholder {
    font-size: calc(100dvw * 14 / var(--viewSize));
  }
}
@media (max-width: 767px) {
  .input-email-news-home {
    width: 65%;
    height: 44px;
  }
  .cta-newslett-home {
    width: 30%;
  }
  .cta-contacts-home {
    min-width: unset !important;
    border-radius: 50% !important;
    padding: 0;
    width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
  }
}

@media (max-width: 576px) {
  .card-contatti {
    padding: calc(100dvw * 16 / var(--viewSize))
      calc(100dvw * 16 / var(--viewSize)) calc(100dvw * 28 / var(--viewSize));
    border-radius: calc(100dvw * 24 / var(--viewSize));
  }
  .cont-input-email-news-home {
    gap: 0;
  }
  .input-email-news-home {
    border-radius: 22px 0 0 22px !important;
    min-width: unset;
    width: 70%;
    padding: calc(100dvw * 12 / var(--viewSize));
  }
  .cta-newslett-home {
    border-radius: 0 22px 22px 0 !important;
  }
}

.newsletter-honeypot {
    position: absolute !important;
    left: -10000px !important;
    top: auto !important;

    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

/* Nel flusso sotto il consenso privacy: prima era absolute con un offset
   hardcoded che dipendeva dall'altezza del consenso (a sua volta absolute). */
.newsletter-form-message {
    width: 100%;
    margin: 8px 0 0;

    font-size: 14px;
    line-height: 1.4;
    text-align: right;
}

.newsletter-form-message:empty {
    display: none;
}

.newsletter-form-message.is-success {
    color: #198754;
}

.newsletter-form-message.is-error {
    color: #dc3545;
}

.js-newsletter-form[aria-busy="true"] {
    cursor: progress;
}

.js-newsletter-form button.is-loading {
    opacity: 0.7;
    cursor: wait;
}

@media (max-width: 767.98px) {
    .newsletter-form-message {
        text-align: left;
    }
}


/* footer */
.main-footer {
  width: 100%;
  position: relative;
}
/* .foot-background-img{
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
}
.foot-background-img > img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-fit: left;
} */

.main-footer > .foot-body {
  background: linear-gradient(190deg, var(--blue-60) 0% 40%, var(--blue-80));
  min-height: 300px;
  padding: 0 5dvw;
  position: relative;
  z-index: 3;
}
.foot-main-row {
  padding: calc(100dvw * 60 / var(--viewSize)) 0
    calc(100dvw * 32 / var(--viewSize));
}

.logo-footer {
  fill: var(--neutral-0);
  width: calc(100dvw * 60 / var(--viewSize));
  height: auto;
  transition: ease-in-out 0.3s;
}
.logo-footer > path {
  fill: var(--neutral-0);
}
.logo-footer:hover {
  transform: scale(1.04);
}

.main-title-footer > h3 > .article,
.main-title-footer > h3 > .article {
  font-family: var(--fontFamilyTitle);
  font-size: calc(100dvw * 16 / var(--viewSize));
  line-height: calc(100dvw * 16 / var(--viewSize));
  font-weight: 400;
  color: var(--neutral-0);
}
.main-title-footer > h3 > .title,
.main-title-footer > h3 {
  font-family: var(--fontFamilyTitle);
  font-size: calc(100dvw * 36 / var(--viewSize));
  line-height: calc(100dvw * 36 / var(--viewSize));
  font-weight: 700;
  color: var(--neutral-0);
  margin: -5px 0 0 0;
}
.main-title-footer > .subtitle {
  font-family: var(--fontFamilyTitle);
  font-size: calc(100dvw * 14 / var(--viewSize));
  line-height: calc(100dvw * 16 / var(--viewSize));
  font-weight: 400;
  letter-spacing: 1px;
  margin: 2px 0 0 0;
  color: var(--neutral-0);
}

.foot-address > * {
  text-transform: none !important;
  font-size: calc(100dvw * 16 / var(--viewSize));
  text-decoration: none;
}

.cont-ul-link-foot {
  border-left: 2px solid var(--neutral-75);
  padding-left: calc(100dvw * 20 / var(--viewSize));
}
.link-foot,
.menu-footer .menu-item,
.menu-footer .menu-item > a {
  color: var(--neutral-00);
  font-size: calc(100dvw * 16 / var(--viewSize));
  line-height: calc(100dvw * 16 / var(--viewSize));
  transition: ease-in-out 0.3s;
  text-decoration: none;
  display: block;
  text-transform: uppercase;
}
.link-foot:hover {
  color: var(--neutral-0);
  transform: scale(1.03);
}
.foot-legals {
  width: 100%;
  border-top: 1px solid var(--neutral-0);
}
.separator-li-foot {
  width: 0;
  height: calc(100dvw * 16 / var(--viewSize));
  border-left: 1px solid var(--neutral-0);
}

/* ================================================================
   NUOVE PAGINE — SISTEMA DESIGN ESTESO
   ================================================================ */

/* ----------------------------------------------------------------
   UTILITIES PAGINE INTERNE
   ---------------------------------------------------------------- */
.py-section {
  padding-top: calc(100dvw * 80 / var(--viewSize));
  padding-bottom: calc(100dvw * 80 / var(--viewSize));
}
.pb-section {
  padding-bottom: calc(100dvw * 80 / var(--viewSize));
}
.bg-neutral-10 {
  background-color: var(--neutral-10) !important;
}
.bg-neutral-0 {
  background-color: var(--neutral-0) !important;
}
.rounded-card {
  border-radius: calc(100dvw * 16 / var(--viewSize));
}
@media (max-width: 992px) {
  .py-section {
    padding-top: calc(100dvw * 60 / var(--viewSize));
    padding-bottom: calc(100dvw * 60 / var(--viewSize));
  }
  .pt-0-mob {
    padding-top: 0 !important;
  }
}
@media (max-width: 576px) {
  .py-section {
    padding-top: calc(100dvw * 48 / var(--viewSize));
    padding-bottom: calc(100dvw * 48 / var(--viewSize));
  }
  .pt-0-mob {
    padding-top: 0 !important;
  }
  .rounded-card {
    border-radius: calc(100dvw * 12 / var(--viewSize));
  }
}

/* ----------------------------------------------------------------
   HERO — PAGINE INTERNE (foto, non video)
   ---------------------------------------------------------------- */
.hero-photo {
  width: 100%;
  height: 80dvh;
  min-height: 500px;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  overflow: hidden;
}
.overlay-hero-photo {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 24, 45, 0.25) 0%,
    rgba(0, 24, 45, 0.72) 100%
  );
  z-index: 1;
}
.hero-photo .hero-text {
  position: relative;
  padding-bottom: calc(100dvw * 48 / var(--viewSize));
}

@keyframes bounce-down {
  0%,
  100% {
    transform: translateX(-50%) translateY(0);
  }
  50% {
    transform: translateX(-50%) translateY(8px);
  }
}
@media (max-width: 576px) {
  .hero-photo {
    min-height: 70dvh;
  }
}
.cont-photo {
  position: relative;
}
.cont-photo,
.cont-photo::before {
  pointer-events: none;
}
.hero-photo > .cont-photo > img {
  object-fit: cover;
  object-position: center;
  width: 100%;
  height: 100%;
}
.cont-photo::before {
  content: "";
  position: absolute;
  bottom: -3px;
  width: 100%;
  height: 100%;
  background: linear-gradient(rgba(39, 53, 66, 0.1) 0% 20%, var(--blue-80) 85%);
  z-index: 3;
}

/* ----------------------------------------------------------------
   CITAZIONE
   ---------------------------------------------------------------- */
.sez-citazione {
  background: linear-gradient(135deg, var(--blue-80) 0%, var(--blue-60) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: calc(100dvw * 80 / var(--viewSize))
    calc(100dvw * 80 / var(--viewSize));
}
.citazione-inner {
  max-width: 900px;
  text-align: center;
}
.text-cit {
  font-family: var(--fontFamilyTitle);
  font-weight: 400;
  font-style: italic;
  color: var(--neutral-0);
  font-size: calc(100dvw * 32 / var(--viewSize));
  line-height: calc(100dvw * 44 / var(--viewSize));
  letter-spacing: -0.5px;
}
@media (max-width: 992px) {
  .sez-citazione {
    padding: calc(100dvw * 60 / var(--viewSize))
      calc(100dvw * 32 / var(--viewSize));
  }
  .text-cit {
    font-size: calc(100dvw * 28 / var(--viewSize));
    line-height: calc(100dvw * 40 / var(--viewSize));
  }
}
@media (max-width: 576px) {
  .text-cit {
    font-size: calc(100dvw * 22 / var(--viewSize));
    line-height: calc(100dvw * 32 / var(--viewSize));
  }
}

/* ----------------------------------------------------------------
   SECTION HEADER
   ---------------------------------------------------------------- */
.section-header-row {
  position: relative;
}
.section-header-text {
  max-width: 50dvw;
}
.section-title {
  line-height: 1;
}
.section-title .small-title {
  font-family: var(--fontFamilyTitle);
  font-weight: 400;
  font-size: min(calc(100dvw * 40 / var(--viewSize)), 0.68em);
  letter-spacing: -1px;
  line-height: 1;
}
.section-description {
  color: var(--neutral-70);
  -webkit-line-clamp: 8;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.section-cta-link {
  font-weight: 600;
  color: var(--blue-40);
  text-decoration: none;
  transition: 0.2s;
}
.section-cta-link:hover {
  color: var(--blue-80);
  transform: translateX(4px);
}
.section-deco-logo {
  flex-shrink: 0;
  width: calc(100dvw * 160 / var(--viewSize));
  opacity: 0.2;
}
.cont-svg {
  position: absolute;
  top: -5dvw;
  right: 0;
}
.cont-svg.reverse {
  right: unset;
  left: 0;
}
.cont-svg > svg {
  width: 50dvw;
  height: auto;
  fill: var(--blue-40);
  opacity: 0.6;
}
@media (max-width: 992px) {
  .section-deco-logo {
    display: none;
  }
  .section-description {
    color: var(--neutral-70);
    -webkit-line-clamp: 5; /* numero di righe */
  }
}
@media (max-width: 768px) {
  .section-header-text {
    max-width: unset;
  }
  .section-description {
    -webkit-line-clamp: 4; /* numero di righe */
  }
}

/* ----------------------------------------------------------------
   CARD ARCHIVIO — BASE
   ---------------------------------------------------------------- */
.card-archive {
  position: relative;
  border-radius: calc(100dvw * 16 / var(--viewSize));
  overflow: hidden;
  cursor: pointer;
}
.card-archive-corso {
  aspect-ratio: 1 / 1;
}
.card-archive-docente {
  aspect-ratio: 3 / 2;
}
.card-archive-spazio {
  aspect-ratio: 4 / 3;
}
.card-archive-evento {
  aspect-ratio: 16 / 9;
}
.card-inner {
  width: 100%;
  height: 100%;
  display: block;
}
.card-img-fill {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.card-img-fill.docente {
  object-position:top;
}
.card-inner:hover .card-img-fill {
  transform: scale(1.04);
}
.card-img-placeholder {
  position: absolute;
  inset: 0;
  background: var(--neutral-20);
}
.card-img-placeholder--docente {
  background: linear-gradient(135deg, var(--blue-20), var(--blue-40));
}
.card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 24, 45, 0) 40%,
    rgba(0, 24, 45, 0.82) 100%
  );
  z-index: 1;
}
.card-overlay--evento {
  background: linear-gradient(
    180deg,
    rgba(0, 24, 45, 0.1) 0%,
    rgba(0, 24, 45, 0.85) 100%
  );
}
.card-bottom {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 2;
  padding: calc(100dvw * 16 / var(--viewSize))
    calc(100dvw * 20 / var(--viewSize));
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.card-bottom--docente {
  padding: calc(100dvw * 20 / var(--viewSize));
}
.card-title {
  font-family: var(--fontFamilyMain);
  font-weight: 600;
  color: var(--neutral-0);
  font-size: calc(100dvw * 20 / var(--viewSize));
  line-height: 1.2;
}
.card-subtitle {
  color: var(--neutral-20);
  font-size: calc(100dvw * 14 / var(--viewSize));
}
.card-cta {
  color: var(--neutral-0);
  font-size: calc(100dvw * 14 / var(--viewSize));
  font-weight: 500;
  opacity: 0.85;
  transition: opacity 0.2s;
}
.card-inner:hover .card-cta {
  opacity: 1;
}
.card-label-top {
  position: absolute;
  top: calc(100dvw * 16 / var(--viewSize));
  right: calc(100dvw * 16 / var(--viewSize));
  z-index: 2;
  background: rgba(0, 24, 45, 0.55);
  backdrop-filter: blur(8px);
  color: var(--neutral-0);
  font-size: calc(100dvw * 12 / var(--viewSize));
  font-weight: 600;
  letter-spacing: 1px;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 99px;
}
.card-label {
  display: inline-block;
  background: rgba(0, 24, 45, 0.55);
  backdrop-filter: blur(8px);
  color: var(--neutral-0);
  font-size: calc(100dvw * 12 / var(--viewSize));
  font-weight: 600;
  letter-spacing: 1px;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 99px;
  text-decoration: none;
  transition: background 0.2s ease;
}
.card-label:hover {
  background: rgba(0, 24, 45, 0.75);
  color: var(--neutral-0);
}
.hero-subtitle {
  color: var(--neutral-30);
  font-size: calc(100dvw * 16 / var(--viewSize));
  font-weight: 400;
  opacity: 0.85;
}
.card-badge-data {
  position: absolute;
  top: calc(100dvw * 16 / var(--viewSize));
  left: calc(100dvw * 16 / var(--viewSize));
  z-index: 2;
  background: var(--blue-40);
  color: var(--neutral-0);
  font-size: calc(100dvw * 12 / var(--viewSize));
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 99px;
}
.card-full-link {
  position: absolute;
  inset: 0;
  z-index: 3;
}
@media (max-width: 576px) {
  .card-title {
    font-size: calc(100dvw * 18 / var(--viewSize));
  }
  .card-archive {
    border-radius: calc(100dvw * 12 / var(--viewSize));
  }
}

/* ----------------------------------------------------------------
   GRIGLIA ARCHIVIO
   ---------------------------------------------------------------- */
.archive-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: calc(100dvw * 20 / var(--viewSize));
}
.archive-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: calc(100dvw * 20 / var(--viewSize));
}
@media (max-width: 991px) {
  .archive-grid-3 {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 576px) {
  .archive-grid-3,
  .archive-grid-2 {
    grid-template-columns: 1fr;
  }
}

/* ----------------------------------------------------------------
   ARCHIVE PAGE HEADER
   ---------------------------------------------------------------- */
.archive-page-header {
  padding-top: calc(100dvw * 140 / var(--viewSize));
  padding-bottom: calc(100dvw * 40 / var(--viewSize));
}
.archive-title {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 64 / var(--viewSize));
  line-height: 1;
  letter-spacing: -2px;
  color: var(--blue-80);
}
.archive-title .small-title {
  font-weight: 400;
  font-size: min(calc(100dvw * 40 / var(--viewSize)), 0.68em);
  letter-spacing: -1px;
  display: inline;
  margin-right: 0.15em;
}
.archive-subtitle {
  color: var(--neutral-60);
  max-width: 640px;
  font-size: calc(100dvw * 16 / var(--viewSize));
}
@media (max-width: 992px) {
  .archive-page-header {
    padding-top: calc(100dvw * 120 / var(--viewSize));
  }
  .archive-title {
    font-size: calc(100dvw * 56 / var(--viewSize));
  }
}
@media (max-width: 576px) {
  .archive-page-header {
    padding-top: calc(100dvw * 108 / var(--viewSize));
  }
  .archive-title {
    font-size: calc(100dvw * 48 / var(--viewSize));
  }
}

/* ----------------------------------------------------------------
   ARCHIVE LAYOUT (sidebar + risultati)
   ---------------------------------------------------------------- */
.archive-layout {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: calc(100dvw * 40 / var(--viewSize));
  padding-bottom: calc(100dvw * 80 / var(--viewSize));
}
@media (max-width: 991px) {
  .archive-layout {
    grid-template-columns: 1fr;
  }
}
/* Archivi con filtri in modale (corsi, docenti): nessuna colonna sidebar. */
.archive-layout--no-sidebar {
  grid-template-columns: minmax(0, 1fr);
}

/* ----------------------------------------------------------------
   FILTRI SIDEBAR
   ---------------------------------------------------------------- */
.sidebar-filtri {
  background: var(--neutral-0);
  border-radius: calc(100dvw * 16 / var(--viewSize));
  box-shadow: var(--shadow-light);
  padding: calc(100dvw * 24 / var(--viewSize));
  height: fit-content;
  position: sticky;
  top: calc(100dvw * 110 / var(--viewSize));
}
.filtri-label {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 32 / var(--viewSize));
  color: var(--blue-40);
  letter-spacing: 2px;
  margin: 0;
}
.filtri-list {
  margin-top: calc(100dvw * 16 / var(--viewSize));
}
.filtro-item {
  padding: calc(100dvw * 8 / var(--viewSize)) 0;
  border-bottom: 1px solid var(--neutral-20);
}
.filtro-item:last-child {
  border-bottom: none;
}
.filtro-item label {
  cursor: pointer;
  font-size: calc(100dvw * 14 / var(--viewSize));
  font-weight: 500;
  letter-spacing: 1px;
  color: var(--neutral-80);
  transition: color 0.2s;
}
.filtro-item label:hover {
  color: var(--blue-40);
}
.filtro-item input[type="checkbox"] {
  accent-color: var(--blue-40);
  width: 16px;
  height: 16px;
  cursor: pointer;
  flex-shrink: 0;
}
.filtri-reset {
  font-size: calc(100dvw * 13 / var(--viewSize));
  color: var(--neutral-50);
  text-decoration: underline;
  transition: color 0.2s;
}
.filtri-reset:hover {
  color: var(--blue-40);
}
@media (max-width: 991px) {
  .sidebar-filtri {
    position: static;
    border-radius: calc(100dvw * 12 / var(--viewSize));
    padding: calc(100dvw * 20 / var(--viewSize));
  }
  .filtri-label {
    font-size: calc(100dvw * 28 / var(--viewSize));
  }
}

/* ----------------------------------------------------------------
   SEARCH BAR ARCHIVIO
   ---------------------------------------------------------------- */
.archive-search-bar {
  display: flex;
  gap: calc(100dvw * 12 / var(--viewSize));
  align-items: center;
}
.archive-search-input {
  flex: 1;
  border: 1.5px solid var(--neutral-30);
  border-radius: 99px;
  padding: calc(100dvw * 12 / var(--viewSize))
    calc(100dvw * 24 / var(--viewSize));
  font-size: calc(100dvw * 16 / var(--viewSize));
  color: var(--neutral-80);
  outline: none;
  transition: border-color 0.2s;
  background: var(--neutral-0);
}
.archive-search-input:focus {
  border-color: var(--blue-40);
  box-shadow: 0 0 0 3px rgba(0, 71, 136, 0.12);
}
@media (max-width: 576px) {
  .archive-search-input {
    padding: 10px 16px;
    font-size: 15px;
  }
}

/* --- Riga ricerca: input a pillola + submit tondo + pulsante filtri --------- */
.archive-search-wrap {
  display: flex;
  align-items: center;
  gap: 12px;
}
.archive-search-wrap .archive-search-bar {
  flex: 1 1 auto;
  min-width: 0;
}
.archive-search-field {
  position: relative;
  width: 100%;
}
.archive-search-field .archive-search-input {
  display: block;
  width: 100%;
  min-height: 56px;
  padding: 12px 68px 12px 24px;
  font-size: clamp(15px, 1.1vw, 17px);
}

/* Submit tondo con la lente (sostituisce il vecchio .btn-cerca testuale) */
.archive-search-submit {
  position: absolute;
  top: 50%;
  right: 5px;
  display: inline-flex;
  width: 46px;
  height: 46px;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--blue-40);
  color: var(--neutral-0);
  font-size: 17px;
  cursor: pointer;
  transform: translateY(-50%);
  transition:
    background-color 0.2s ease,
    transform 0.2s ease;
}
.archive-search-submit:hover {
  background: var(--blue-60);
  transform: translateY(-50%) scale(1.05);
}
.archive-search-submit:focus-visible {
  outline: 3px solid rgba(0, 71, 136, 0.22);
  outline-offset: 3px;
}

/* Pulsante che apre la modale filtri */
.archive-filters-toggle {
  position: relative;
  flex: 0 0 auto;
  display: inline-flex;
  width: 56px;
  height: 56px;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 1.5px solid var(--neutral-30);
  border-radius: 50%;
  background: var(--neutral-0);
  color: var(--blue-40);
  font-size: 18px;
  cursor: pointer;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease,
    transform 0.2s ease;
}
.archive-filters-toggle:hover {
  border-color: var(--blue-40);
  background: var(--blue-40);
  color: var(--neutral-0);
  transform: scale(1.05);
}
.archive-filters-toggle:focus-visible {
  outline: 3px solid rgba(0, 71, 136, 0.22);
  outline-offset: 3px;
}
.archive-filters-toggle.is-active {
  border-color: var(--blue-40);
  background: var(--blue-40);
  color: var(--neutral-0);
}
.archive-filters-badge {
  position: absolute;
  top: -2px;
  right: -2px;
  min-width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 6px;
  border: 2px solid var(--neutral-0);
  border-radius: 999px;
  background: var(--blue-80);
  color: var(--neutral-0);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
}
@media (max-width: 576px) {
  .archive-search-field .archive-search-input {
    min-height: 50px;
    padding: 10px 58px 10px 18px;
  }
  .archive-search-submit {
    width: 40px;
    height: 40px;
    font-size: 15px;
  }
  .archive-filters-toggle {
    width: 50px;
    height: 50px;
    font-size: 16px;
  }
}

/* ----------------------------------------------------------------
   MODALE FILTRI ARCHIVIO (bottom sheet)
   Aperta da [data-open-archive-filters]; stato su #archiveFilters.
   z-index 1040: sotto il banner cookie (1050), sopra il resto.
   ---------------------------------------------------------------- */
.archive-filters {
  position: fixed;
  inset: 0;
  z-index: 1040;
  display: none;
}
/* Visibile solo mentre il pannello è aperto o sta chiudendo: nessun flash. */
.archive-filters[data-state="closed"],
.archive-filters[data-state="open"] {
  display: block;
}
.archive-filters__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 24, 45, 0.55);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.archive-filters[data-state="open"] .archive-filters__backdrop {
  opacity: 1;
}
.archive-filters__sheet {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  margin: 0 auto;
  width: min(100%, 560px);
  max-height: min(86dvh, 720px);
  overflow-y: auto;
  background: var(--neutral-0);
  border-top: 3px solid var(--blue-40);
  border-radius: 18px 18px 0 0;
  padding: 14px 22px 24px;
  box-shadow: 0 -20px 64px rgba(0, 24, 45, 0.42);
  transform: translateY(100%);
  transition: transform 0.42s cubic-bezier(0.22, 1, 0.36, 1);
}
.archive-filters[data-state="open"] .archive-filters__sheet {
  transform: translateY(0);
}
.archive-filters__grabber {
  display: block;
  width: 44px;
  height: 4px;
  margin: 0 auto 14px;
  border-radius: 999px;
  background: var(--neutral-30);
}
.archive-filters__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 4px;
}
.archive-filters__title {
  margin: 0;
  color: var(--blue-40);
  font-family: var(--fontFamilyTitle);
  font-size: clamp(24px, 2vw, 32px);
  font-weight: 700;
  line-height: 1;
  letter-spacing: 1px;
}
.archive-filters__close {
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 50%;
  background: var(--neutral-10);
  color: var(--blue-40);
  font-size: 1.05rem;
  cursor: pointer;
  transition: background 0.2s ease;
}
.archive-filters__close:hover {
  background: var(--neutral-20);
}
.archive-filters__list {
  margin: 16px 0 0;
}
.archive-filters__item {
  border-bottom: 1px solid var(--neutral-20);
}
.archive-filters__item:last-child {
  border-bottom: none;
}
.archive-filters__option {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 0;
  cursor: pointer;
  color: var(--neutral-80);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 1px;
  transition: color 0.2s;
}
.archive-filters__option:hover {
  color: var(--blue-40);
}
.archive-filters__option input[type="checkbox"] {
  accent-color: var(--blue-40);
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  cursor: pointer;
}
.archive-filters__actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 22px;
}
.archive-filters__reset {
  color: var(--neutral-50);
  font-size: 14px;
  text-decoration: underline;
  transition: color 0.2s;
}
.archive-filters__reset:hover {
  color: var(--blue-40);
}
.archive-filters__apply {
  flex: 1 1 auto;
  min-height: 48px;
  max-width: 260px;
  margin-left: auto;
  border: 0;
  border-radius: 999px;
  background: var(--blue-40);
  color: var(--neutral-0);
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  transition:
    background-color 0.2s ease,
    transform 0.2s ease;
}
.archive-filters__apply:hover {
  background: var(--blue-60);
  transform: translateY(-1px);
}

/* Da tablet in su il pannello diventa un drawer laterale: entra da sinistra
   e resta ancorato a sinistra (il bottom sheet resta il pattern mobile). */
@media (min-width: 768px) {
  .archive-filters__sheet {
    top: 0;
    right: auto;
    bottom: 0;
    margin: 0;
    width: min(92vw, 400px);
    max-height: none;
    border-top: 0;
    border-right: 3px solid var(--blue-40);
    border-radius: 0 18px 18px 0;
    padding: 28px 26px 24px;
    box-shadow: 20px 0 64px rgba(0, 24, 45, 0.42);
    transform: translateX(-100%);
    transition: transform 0.42s cubic-bezier(0.22, 1, 0.36, 1);
  }
  .archive-filters[data-state="open"] .archive-filters__sheet {
    transform: translateX(0);
  }
  .archive-filters__grabber {
    display: none;
  }
  /* Drawer a tutta altezza: le azioni restano ancorate in fondo. */
  .archive-filters__sheet {
    display: flex;
    flex-direction: column;
  }
  .archive-filters__form {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
  }
  .archive-filters__list {
    flex: 1 1 auto;
    overflow-y: auto;
  }
  .archive-filters__actions {
    flex-wrap: wrap;
    padding-top: 18px;
    border-top: 1px solid var(--neutral-20);
  }
}

@media (prefers-reduced-motion: reduce) {
  .archive-filters__sheet {
    transition: transform 0.01s linear;
  }
}

/* ----------------------------------------------------------------
   CARD INFO BORDERED
   ---------------------------------------------------------------- */
.card-info-bordered {
  border: 1.5px solid var(--blue-40);
  border-radius: calc(100dvw * 16 / var(--viewSize));
  padding: calc(100dvw * 24 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));
  display: flex;
  flex-direction: column;
  gap: calc(100dvw * 12 / var(--viewSize));
  min-width: 200px;
  flex: 1;
  background: var(--neutral-0);
  transition:
    box-shadow 0.2s,
    transform 0.2s;
}
.card-info-bordered:hover {
  box-shadow: var(--shadow-medium);
  transform: translateY(-2px);
}
.card-info-cta {
  font-weight: 600;
  color: var(--blue-40);
  text-decoration: none;
  font-size: calc(100dvw * 14 / var(--viewSize));
  transition: color 0.2s;
}
.card-info-cta:hover {
  color: var(--blue-80);
}
.card-info-icon {
  font-size: calc(100dvw * 28 / var(--viewSize));
  color: var(--blue-40);
}
.card-info-title {
  font-weight: 700;
  font-size: calc(100dvw * 18 / var(--viewSize));
  color: var(--blue-80);
  text-transform: uppercase;
  letter-spacing: 1px;
  line-height: 1.2;
  margin: 0;
}
.info-cards-row {
  flex-wrap: wrap;
}
@media (max-width: 576px) {
  .card-info-bordered {
    min-width: 100%;
  }
}

/* ----------------------------------------------------------------
   CTA ISCRIVITI
   ---------------------------------------------------------------- */
.cta-title {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 56 / var(--viewSize));
  line-height: 1.1;
  letter-spacing: -2px;
  color: var(--blue-80);
  max-width: 700px;
  margin: 0 auto;
}
.cta-description {
  font-size: calc(100dvw * 18 / var(--viewSize));
  color: var(--neutral-60);
  max-width: 560px;
}
/* Scuola: testo CTA appena più piccolo delle section-description (16) */
.cta-description--scuola {
  font-size: calc(100dvw * 15 / var(--viewSize));
}
.cta-btn-main {
  font-weight: 600;
  font-size: calc(100dvw * 18 / var(--viewSize));
}
@media (max-width: 992px) {
  .cta-title {
    font-size: calc(100dvw * 44 / var(--viewSize));
  }
}
@media (max-width: 576px) {
  .cta-title {
    font-size: calc(100dvw * 36 / var(--viewSize));
    letter-spacing: -1px;
  }
}

/* ----------------------------------------------------------------
   SEZIONE CONTATTI (senza form)
   ---------------------------------------------------------------- */
.contatti-intro {
  color: var(--neutral-60);
  max-width: 560px;
}
.contatti-panel {
  background: var(--neutral-0);
  border-radius: calc(100dvw * 16 / var(--viewSize));
  box-shadow: var(--shadow-light);
  padding: calc(100dvw * 32 / var(--viewSize))
    calc(100dvw * 40 / var(--viewSize));
  display: flex;
  flex-direction: column;
  gap: calc(100dvw * 20 / var(--viewSize));
  max-width: 560px;
}
.contatti-item {
  display: flex;
  align-items: center;
  gap: calc(100dvw * 16 / var(--viewSize));
}
.contatti-item a {
  color: var(--neutral-80);
  font-size: calc(100dvw * 16 / var(--viewSize));
  text-decoration: none;
  transition: color 0.2s;
}
.contatti-item a:hover {
  color: var(--blue-40);
}
.contatti-icon {
  width: calc(100dvw * 40 / var(--viewSize));
  height: calc(100dvw * 40 / var(--viewSize));
  background: var(--blue-40);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--neutral-0);
  font-size: calc(100dvw * 16 / var(--viewSize));
  flex-shrink: 0;
}
.contatti-icon--instagram {
  background: linear-gradient(
    45deg,
    #f09433,
    #e6683c,
    #dc2743,
    #cc2366,
    #bc1888
  );
}
.contatti-icon--facebook {
  background: #1877f2;
}
@media (max-width: 576px) {
  .contatti-panel {
    padding: 24px 20px;
    border-radius: 12px;
  }
  .contatti-icon {
    width: 36px;
    height: 36px;
  }
}

/* ----------------------------------------------------------------
   CARICHE GRID
   ---------------------------------------------------------------- */
.cariche-groups .cariche-group + .cariche-group {
  margin-top: calc(100dvw * 48 / var(--viewSize));
}
.cariche-group-title {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(1.3rem, 2.5vw, 1.8rem);
  font-weight: 700;
  color: var(--blue-80, var(--blue-50));
  padding-bottom: 12px;
  border-bottom: 2px solid var(--neutral-20);
  position: relative;
}
.cariche-group-title::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 56px;
  height: 2px;
  background: var(--blue-20, var(--blue-40));
}
.cariche-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: calc(100dvw * 16 / var(--viewSize));
  padding-top: calc(100dvw * 16 / var(--viewSize));
}
.card-carica {
  border: 1.5px solid var(--neutral-30);
  border-radius: calc(100dvw * 12 / var(--viewSize));
  padding: calc(100dvw * 16 / var(--viewSize))
    calc(100dvw * 20 / var(--viewSize));
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: var(--neutral-0);
  transition:
    transform 0.25s ease,
    box-shadow 0.25s ease,
    border-color 0.25s ease;
}
.card-carica:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(0, 24, 45, 0.08);
  border-color: var(--blue-30, var(--blue-40));
}
.carica-ruolo {
  font-size: calc(100dvw * 13 / var(--viewSize));
  font-weight: 600;
  color: var(--blue-40);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.carica-nome {
  font-size: calc(100dvw * 15 / var(--viewSize));
  font-weight: 500;
  color: var(--neutral-80);
}
@media (max-width: 992px) {
  .cariche-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 576px) {
  .cariche-grid {
    grid-template-columns: 1fr;
  }
  .cariche-group-title {
    font-size: 1.2rem;
  }
}

/* ----------------------------------------------------------------
   VIDEO EMBED
   ---------------------------------------------------------------- */
.video-embed-wrap {
  padding-top: 0;
}
.video-embed-card {
  border-radius: calc(100dvw * 24 / var(--viewSize));
  overflow: hidden;
  box-shadow: var(--shadow-medium);
  background: var(--neutral-10);
}
.video-responsive-wrapper {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
}
.video-responsive-wrapper iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.video-embed-card video {
  display: block;
  max-height: 80dvh;
  object-fit: cover;
}
@media (max-width: 576px) {
  .video-embed-card {
    border-radius: calc(100dvw * 12 / var(--viewSize));
  }
}

/* ----------------------------------------------------------------
   SINGLE CPT
   ---------------------------------------------------------------- */
.single-cpt-hero {
  height: 65dvh;
  min-height: 400px;
  background-size: cover;
  background-position: center top;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.single-cpt-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 24, 45, 0.1) 0%,
    rgba(0, 24, 45, 0.75) 100%
  );
}
.single-cpt-hero-content {
  position: relative;
  z-index: 2;
  padding-bottom: calc(100dvw * 56 / var(--viewSize));
  color: var(--neutral-0);
}
.single-breadcrumb a {
  font-size: calc(100dvw * 14 / var(--viewSize));
  opacity: 0.85;
  transition: opacity 0.2s;
}
.single-breadcrumb a:hover {
  opacity: 1;
}
.single-strumento {
  font-size: calc(100dvw * 18 / var(--viewSize));
  font-weight: 500;
  opacity: 0.85;
  letter-spacing: 1px;
}
.single-cpt-body {
  padding-top: calc(100dvw * 64 / var(--viewSize));
  padding-bottom: calc(100dvw * 64 / var(--viewSize));
}
.single-cpt-content {
  line-height: 1.7;
  color: var(--neutral-70);
  font-size: calc(100dvw * 17 / var(--viewSize));
}
.single-info-card {
  background: var(--neutral-10);
  padding: calc(100dvw * 28 / var(--viewSize));
  border-radius: calc(100dvw * 16 / var(--viewSize));
}
.single-info-title {
  font-size: calc(100dvw * 22 / var(--viewSize));
  color: var(--blue-80);
}
.single-info-list {
  border-top: 1px solid var(--neutral-30);
}
.single-info-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: calc(100dvw * 12 / var(--viewSize)) 0;
  border-bottom: 1px solid var(--neutral-20);
  gap: 16px;
}
.info-label {
  color: var(--neutral-60);
  font-size: calc(100dvw * 14 / var(--viewSize));
  font-weight: 500;
}
.info-value {
  font-weight: 600;
  color: var(--neutral-80);
  font-size: calc(100dvw * 15 / var(--viewSize));
}
.single-docenti-box {
  background: var(--neutral-0);
  border: 1.5px solid var(--neutral-20);
  padding: calc(100dvw * 24 / var(--viewSize));
  border-radius: calc(100dvw * 16 / var(--viewSize));
}
.single-docenti-title {
  font-size: calc(100dvw * 18 / var(--viewSize));
  color: var(--blue-80);
}
.docente-mini-img {
  width: calc(100dvw * 48 / var(--viewSize));
  height: calc(100dvw * 48 / var(--viewSize));
  object-fit: cover;
  flex-shrink: 0;
}
.docente-mini strong {
  color: var(--neutral-80);
  font-size: calc(100dvw * 15 / var(--viewSize));
}
.docente-mini small {
  color: var(--neutral-50);
  font-size: calc(100dvw * 13 / var(--viewSize));
}
@media (max-width: 576px) {
  .single-cpt-hero {
    height: 55dvh;
  }
  .single-info-card {
    padding: 20px;
    border-radius: 12px;
  }
}

/* ----------------------------------------------------------------
   PAGINA SCUOLA — SEZIONI SPECIFICHE
   ---------------------------------------------------------------- */

.sez-offerta-scuola {
  overflow-y: hidden;
}
.spazi-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: calc(100dvw * 20 / var(--viewSize));
}
.figure-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: calc(100dvw * 20 / var(--viewSize));
}
.cont-img.marnati {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 20px;
  box-shadow: 0 0 16px #00305b99;
  overflow: hidden;
  background-color: var(--light-blue-20);
}
.cont-img.marnati > img,
.cont-img.resp-scuola > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.marnati-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: calc(100dvw * 20 / var(--viewSize));
}
.card-marnati {
  aspect-ratio: 3 / 2;
  cursor: pointer;
}
.card-marnati .card-img-fill {
  transition: transform 0.4s ease;
}
.card-marnati:hover .card-img-fill {
  transform: scale(1.04);
}
.info-blockquote {
  font-family: var(--fontFamilyTitle);
  font-weight: 400;
  font-style: italic;
  font-size: calc(100dvw * 32 / var(--viewSize));
  line-height: 1.3;
  color: var(--blue-80);
  letter-spacing: -0.5px;
  border: none;
  padding: 0;
  margin: 0;
}

.cont-img.resp-scuola {
  width: 90%;
  aspect-ratio: 1;
  border-radius: 50%;
  box-shadow: 0 0 16px #00305b99;
  overflow: hidden;
  background-color: var(--light-blue-20);
}
.cont-contatti-scuola {
  display: flex;
  background-color: var(--light-blue-05);
  max-width: 90%;
  border-radius: 32px;
  box-shadow: 0 0 24px #00305b99;
  padding: calc(100dvw * 32 / var(--viewSize))
    calc(100dvw * 62 / var(--viewSize));
}


@media (max-width: 992px) {
  .spazi-grid,
  .figure-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .info-blockquote {
    font-size: calc(100dvw * 26 / var(--viewSize));
  }
  .chiave-violino-deco {
    display: none;
  }
    .cont-img.marnati {
    aspect-ratio: 1;
  }
}
@media (max-width: 767px) {
  .cont-contatti-scuola {
    padding: 24px 16px;
    margin-bottom: 32px;
  }
  
}
@media (max-width: 576px) {
  .spazi-grid,
  .figure-grid {
    grid-template-columns: 1fr;
  }
  .marnati-grid {
    grid-template-columns: 1fr;
  }
    .cont-img.marnati {
    margin-top: 40px;
  }
}

/* ----------------------------------------------------------------
   MODULISTICA
   ---------------------------------------------------------------- */
.modulistica-list {
  padding-top: calc(100dvw * 16 / var(--viewSize));
}
.modulistica-item {
  display: flex;
  align-items: center;
  gap: calc(100dvw * 20 / var(--viewSize));
  padding: calc(100dvw * 16 / var(--viewSize)) 0;
  border-bottom: 1px solid var(--neutral-20);
}
.file-icon {
  font-size: calc(100dvw * 24 / var(--viewSize));
  color: var(--blue-40);
  flex-shrink: 0;
}
.file-nome {
  flex: 1;
  font-weight: 500;
  color: var(--neutral-80);
}
.file-download {
  color: var(--blue-40);
  font-weight: 600;
  font-size: calc(100dvw * 14 / var(--viewSize));
  text-decoration: none;
  transition:
    color 0.2s,
    transform 0.2s;
  white-space: nowrap;
}
.file-download:hover {
  color: var(--blue-80);
  transform: translateX(2px);
}

/* ----------------------------------------------------------------
   INNER PAGE (generico)
   ---------------------------------------------------------------- */
.inner-page .archive-page-header {
  padding-bottom: calc(100dvw * 24 / var(--viewSize));
}

/* ----------------------------------------------------------------
   PAGINATION
   ---------------------------------------------------------------- */
.archive-pagination .nav-links {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.archive-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1.5px solid var(--neutral-30);
  color: var(--neutral-70);
  text-decoration: none;
  font-weight: 600;
  transition: 0.2s;
}
.archive-pagination .page-numbers.current,
.archive-pagination .page-numbers:hover {
  background: var(--blue-40);
  border-color: var(--blue-40);
  color: var(--neutral-0);
}
.archive-pagination .page-numbers.prev,
.archive-pagination .page-numbers.next {
  width: auto;
  padding: 0 16px;
  border-radius: 99px;
}

/* =========================================================
   PAGINE FORMAZIONI
   ========================================================= */
.formazione-page .sez-storia {
  background: var(--neutral-0);
}
.formazione-page .storia-inner {
  max-width: var(--max-w);
  margin: 0 auto;
}
.formazione-page .sez-gallery-form {
  overflow: hidden;
}
.formazione-page .formazione-gallery-img {
  width: 100%;
  height: 420px;
  object-fit: cover;
  border-radius: 16px;
}
@media (max-width: 767px) {
  .formazione-page .formazione-gallery-img {
    height: 260px;
  }
}

/* Direttore card (dentro formazione-page) */
.sez-direttore .direttore-card {
  display: flex;
  gap: 40px;
  align-items: flex-start;
  background: var(--neutral-0);
  padding: 40px;
}
.sez-direttore .direttore-foto {
  width: 220px;
  height: 280px;
  object-fit: cover;
  border-radius: 12px;
  flex-shrink: 0;
}
.sez-direttore .direttore-info {
  flex: 1;
}
.sez-direttore .direttore-info h3 {
  font-size: clamp(1.4rem, 2.5vw, 2rem);
}
.sez-direttore .direttore-anni {
  color: var(--blue-40);
  font-weight: 600;
  font-size: 0.95rem;
  margin-top: 4px;
}
@media (max-width: 767px) {
  .sez-direttore .direttore-card {
    flex-direction: column;
    padding: 24px;
    gap: 24px;
  }
  .sez-direttore .direttore-foto {
    width: 100%;
    height: 240px;
  }
}

/* Events carousel inside formation pages */
.sez-eventi-form .splide__slide {
  padding-right: 8px;
}

/* =========================================================
   FORMAZIONI LISTING — RIGHE ALTERNATE
   ========================================================= */
.formazione-row {
  overflow: hidden;
}
.formazione-row--even {
  background: var(--neutral-10);
}
.formazione-row__inner {
  max-width: var(--max-w, 1440px);
  margin: 0 auto;
}
.formazione-row__img-wrap {
  overflow: hidden;
  border-radius: calc(100dvw * 16 / var(--viewSize));
}
.formazione-row__img {
  width: 100%;
  height: calc(100dvw * 400 / var(--viewSize));
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}
.formazione-row:hover .formazione-row__img {
  transform: scale(1.04);
}
.formazione-row__label {
  font-size: calc(100dvw * 13 / var(--viewSize));
  font-weight: 600;
  color: var(--blue-40);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  display: block;
}
.formazione-row__title {
  line-height: 1;
}
.formazione-row__desc {
  font-size: calc(100dvw * 16 / var(--viewSize));
  color: var(--neutral-60);
  line-height: 1.75;
  max-width: 520px;
}
.formazione-row--even .formazione-row__desc {
  margin-left: auto;
  margin-right: 0;
}
@media (max-width: 991px) {
  .formazione-row__img {
    height: 300px;
  }
  .formazione-row--even .formazione-row__desc {
    margin-left: 0;
  }
}
@media (max-width: 576px) {
  .formazione-row__img {
    height: 220px;
  }
  .formazione-row__img-wrap {
    border-radius: 12px;
  }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — DESCRIZIONE CENTRATA
   ========================================================= */
.sez-descrizione-form {
  background: var(--neutral-0);
}
.descrizione-form-inner {
  max-width: 860px;
  margin: 0 auto;
}
.descrizione-form-text {
  text-align: justify;
  font-size: calc(100dvw * 17 / var(--viewSize));
  line-height: 1.85;
  color: var(--neutral-70);
}
.descrizione-form-text p:last-child {
  margin-bottom: 0;
}
@media (max-width: 576px) {
  .descrizione-form-text {
    font-size: 1rem;
    line-height: 1.7;
  }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — COMPONENTI GRID
   ========================================================= */
.componenti-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: calc(100dvw * 32 / var(--viewSize));
}
.componente-card {
  text-align: center;
  transition: transform 0.3s ease;
}
.componente-card:hover {
  transform: translateY(-4px);
}
.componente-foto-wrap {
  width: 100%;
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  box-shadow: var(--shadow-light);
}
.componente-foto {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.componente-nome {
  font-size: calc(100dvw * 15 / var(--viewSize));
  font-weight: 600;
  color: var(--neutral-80);
}
.componente-ruolo {
  font-size: calc(100dvw * 13 / var(--viewSize));
  color: var(--blue-40);
  font-weight: 500;
  display: block;
}
@media (max-width: 991px) {
  .componenti-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
  }
}
@media (max-width: 576px) {
  .componenti-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }
  .componente-nome {
    font-size: 0.9rem;
  }
  .componente-ruolo {
    font-size: 0.8rem;
  }
}

/* =========================================================
   FILTRI PILL — ARCHIVE EVENTI
   ========================================================= */
.pill-filter {
  display: inline-flex;
  align-items: center;
  padding: 8px 20px;
  border-radius: 99px;
  border: 1.5px solid var(--neutral-30);
  color: var(--neutral-70);
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  transition: 0.2s;
}
.pill-filter:hover,
.pill-filter.active {
  background: var(--blue-40);
  border-color: var(--blue-40);
  color: var(--neutral-0);
}
.pill-badge {
  display: inline-flex;
  align-items: center;
  padding: 4px 14px;
  border-radius: 99px;
  background: var(--neutral-10);
  color: var(--blue-60);
  font-size: 0.8rem;
  font-weight: 600;
}

/* =========================================================
   SINGLE EVENTO
   ========================================================= */
.single-evento .single-evento-dettagli .single-info-card {
  position: sticky;
  top: 90px;
}
.gallery-img-full {
  width: 100%;
  height: 460px;
  object-fit: cover;
  border-radius: 16px;
}
@media (max-width: 767px) {
  .gallery-img-full {
    height: 240px;
  }
}
.sez-cta-archivio {
  border-top: 1px solid var(--neutral-20);
}

/* =========================================================
   STORIA TIMELINE
   ========================================================= */
.storia-timeline {
  max-width: 900px;
  margin: 0 auto;
}
.timeline-item {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 0 40px;
  margin-bottom: 0;
  position: relative;
}
.timeline-year-col {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  padding-top: 4px;
}
.timeline-year {
  font-family: "AlteHaasGrotesk", sans-serif;
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  font-weight: 700;
  color: var(--blue-40);
  line-height: 1;
  white-space: nowrap;
}
.timeline-line {
  flex: 1;
  width: 2px;
  background: var(--neutral-20);
  margin-top: 12px;
  margin-right: -1px;
  position: relative;
}
.timeline-line::before {
  content: "";
  position: absolute;
  top: 0;
  right: -5px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--blue-40);
  transform: translateY(-50%);
}
.timeline-content-col {
  padding-bottom: 48px;
  border-left: 2px solid var(--neutral-20);
  padding-left: 40px;
}
.timeline-titolo {
  font-size: clamp(1.1rem, 2vw, 1.4rem);
  margin-top: 0;
  margin-bottom: 8px;
}
.timeline-testo p {
  color: var(--neutral-60);
  line-height: 1.7;
}
.timeline-img {
  max-width: 100%;
  border-radius: 12px;
}
@media (max-width: 576px) {
  .timeline-item {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .timeline-year-col {
    align-items: flex-start;
    flex-direction: row;
    gap: 16px;
  }
  .timeline-line {
    display: none;
  }
  .timeline-content-col {
    border-left: none;
    padding-left: 0;
  }
}


/* =========================================================
   ARCHIVE DIRETTORI — CARD 3:4
   ========================================================= */

.direttori-archive {
  background: var(--neutral-0);
  overflow-x: clip;
}

.direttori-archive-breadcrumb {
  background: var(--neutral-0);
}

.direttori-archive-header {
  padding-bottom: calc(100dvw * 52 / var(--viewSize));
}

.direttori-archive-header .archive-title {
  color: var(--blue-80);
}

.direttori-archive-header .small-title {
  display: block;
  color: var(--blue-40);
}

/* Griglia */
.direttori-grid {
  display: grid;
  grid-template-columns:
    repeat(
      auto-fill,
      minmax(min(100%, 250px), 1fr)
    );

  gap:
    clamp(28px, 4vw, 56px)
    clamp(22px, 3vw, 40px);

  align-items: start;
}

/* Card */
.direttore-card {
  min-width: 0;
}

.direttore-card__link {
  position: relative;

  display: block;
  width: 100%;
  aspect-ratio: 3 / 4;

  overflow: hidden;

  border-radius:
    calc(100dvw * 22 / var(--viewSize));

  background:
    linear-gradient(
      145deg,
      var(--blue-60),
      var(--blue-80)
    );

  box-shadow:
    0 0 16px rgba(0, 24, 45, 0.22);

  color: var(--neutral-0);
  text-decoration: none;

  transform: translateZ(0) scale(1);

  transition:
    transform 0.38s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.38s ease;
}

.direttore-card__link:visited {
  color: var(--neutral-0);
}

/* Immagine */
.direttore-card__media {
  position: absolute;
  inset: 0;
  z-index: 1;

  display: block;
  width: 100%;
  height: 100%;
}

.direttore-card__image {
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;
  object-position: center;

  /*
   * Non viene trasformata in bianco e nero.
   * Viene soltanto leggermente desaturata.
   */
  filter:
    saturate(0.68)
    contrast(0.98)
    brightness(0.96);

  transform: scale(1);

  transition:
    filter 0.5s ease,
    transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Fallback senza immagine */
.direttore-card__placeholder {
  display: flex;
  align-items: center;
  justify-content: center;

  width: 100%;
  height: 100%;

  background:
    radial-gradient(
      circle at 30% 20%,
      rgba(168, 201, 225, 0.35),
      transparent 36%
    ),
    linear-gradient(
      145deg,
      var(--blue-40),
      var(--blue-80)
    );

  color: rgba(255, 255, 255, 0.42);
}

.direttore-card__placeholder i {
  font-size: clamp(4rem, 9vw, 8rem);
}

/* Overlay, simile alle card articoli homepage */
.direttore-card__overlay {
  position: absolute;
  inset: 0;
  z-index: 2;

  background:
    linear-gradient(
      180deg,
      rgba(0, 24, 45, 0.04) 0%,
      rgba(0, 24, 45, 0.05) 42%,
      rgba(0, 24, 45, 0.82) 82%,
      var(--blue-80) 100%
    );

  pointer-events: none;
}

/* Nome */
.direttore-card__caption {
  position: absolute;
  left: clamp(18px, 2vw, 28px);
  right: clamp(18px, 2vw, 28px);
  bottom: clamp(20px, 2.4vw, 32px);
  z-index: 3;

  display: block;
}

.direttore-card__name {
  display: block;

  color: var(--neutral-0);

  font-family: var(--fontFamilyMain);
  font-size: clamp(1.35rem, 2.1vw, 2rem);
  font-weight: 700;
  font-style: italic;
  line-height: 1.15;

  text-shadow:
    0 2px 14px rgba(0, 24, 45, 0.55);

  text-wrap: balance;
}

/* Badge in alto a destra */
.direttore-card__badge {
  position: absolute;
  top: clamp(14px, 1.6vw, 22px);
  right: clamp(14px, 1.6vw, 22px);
  z-index: 4;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  padding: 7px 14px;

  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: 999px;

  background: rgba(0, 71, 136, 0.8);

  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);

  color: var(--neutral-0);

  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1;

  text-transform: uppercase;
  letter-spacing: 0.08em;

  box-shadow:
    0 4px 18px rgba(0, 24, 45, 0.28);
}

/* Hover */
.direttore-card__link:hover {
  color: var(--neutral-0);

  transform: scale(1.025);

  box-shadow:
    0 0 16px rgba(122, 175, 211, 0.36),
    0 0 42px rgba(122, 175, 211, 0.5),
    0 24px 55px rgba(0, 24, 45, 0.2);
}

.direttore-card__link:hover .direttore-card__image {
  filter:
    saturate(1)
    contrast(1)
    brightness(1);

  transform: scale(1.045);
}

/* Tastiera */
.direttore-card__link:focus-visible {
  outline: 3px solid var(--light-blue-40);
  outline-offset: 6px;
}

/* Desktop grande */
@media (min-width: 1400px) {
  .direttori-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Tablet */
@media (max-width: 991.98px) {
  .direttori-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 32px 24px;
  }

  .direttori-archive-header {
    padding-bottom: 42px;
  }
}

/* Tablet piccolo */
@media (max-width: 767.98px) {
  .direttori-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px 18px;
  }

  .direttore-card__name {
    font-size: clamp(1.15rem, 4vw, 1.5rem);
  }
}

/* Mobile */
@media (max-width: 575.98px) {
  .direttori-grid {
    grid-template-columns: 1fr;
    max-width: 390px;
    margin-inline: auto;
    gap: 32px;
  }

  .direttore-card__link {
    border-radius: 20px;
  }

  .direttori-archive-header {
    padding-bottom: 34px;
  }
}

/* Dispositivi senza hover */
@media (hover: none) {
  .direttore-card__link:hover {
    transform: none;

    box-shadow:
      0 0 16px rgba(0, 24, 45, 0.22);
  }

  .direttore-card__link:hover .direttore-card__image {
    filter:
      saturate(0.68)
      contrast(0.98)
      brightness(0.96);

    transform: none;
  }
}

/* Movimento ridotto */
@media (prefers-reduced-motion: reduce) {
  .direttore-card__link,
  .direttore-card__image {
    transition: none;
  }

  .direttore-card__link:hover {
    transform: none;
  }
}


/* =========================================================
   ARCHIVE SOSTENITORI
   ========================================================= */

body.post-type-archive-sostenitore .main-nav {
  border-radius:
    0 0
    calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));

  padding:
    calc(100dvw * 16 / var(--viewSize))
    calc(100dvw * 20 / var(--viewSize));

  background: rgba(0, 48, 91, 0.72);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);

  border-bottom: 1px solid var(--blue-20);
}

.sostenitori-archive {
  background: var(--neutral-0);
  overflow-x: clip;
}

.sostenitori-archive-breadcrumb {
  background: var(--neutral-0);
}

.sostenitori-archive-breadcrumb .breadcrumb-item,
.sostenitori-archive-breadcrumb .breadcrumb-item a,
.sostenitori-archive-breadcrumb .breadcrumb-sep {
  color: var(--blue-80);
}

.sostenitori-archive-breadcrumb .breadcrumb-item.active {
  color: var(--blue-20);
}

.sostenitori-archive-header {
  padding-top: calc(100dvw * 20 / var(--viewSize));
  padding-bottom: calc(100dvw * 56 / var(--viewSize));
}

.sostenitori-archive-eyebrow {
  display: block;
  margin-bottom: 12px;

  color: var(--blue-40);
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.4;
  text-transform: uppercase;
  letter-spacing: 0.14em;
}

.sostenitori-archive-header .archive-title {
  color: var(--blue-80);
}

.sostenitori-archive-header .archive-title .small-title {
  display: block;
  color: var(--blue-40);
}

.sostenitori-archive-intro {
  max-width: 760px;
  margin: 24px 0 0;
  color: var(--neutral-60);
  line-height: 1.75;
}

.sostenitori-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr));
  gap: clamp(32px, 5vw, 72px) clamp(24px, 4vw, 56px);
  align-items: start;
}

.sostenitore-card {
  width: 100%;
  text-align: center;
}

.sostenitore-card-link {
  display: flex;
  flex-direction: column;
  align-items: center;

  width: 100%;
  color: var(--blue-80);
  text-decoration: none;

  border-radius: 20px;

  transition:
    color 0.3s ease,
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.sostenitore-card-link:hover {
  color: var(--blue-40);
  transform: translateY(-6px);
}

.sostenitore-logo-circle {
  position: relative;
  display: block;

  width: 90%;
  max-width: 330px;
  aspect-ratio: 1;

  margin-inline: auto;
  overflow: hidden;
  border-radius: 50%;

  background: var(--neutral-10);

  box-shadow:
    0 0 8px rgba(0, 24, 45, 0.3),
    0 18px 45px rgba(0, 24, 45, 0.08);

  transition:
    width 0.45s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.35s ease;
}

.sostenitore-logo-circle img,
.sostenitore-logo-fallback {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 50%;
}

.sostenitore-logo-circle img {
  object-fit: cover;
  object-position: center;
}

.sostenitore-card-link:hover .sostenitore-logo-circle {
  width: 100%;
  box-shadow:
    0 0 8px rgba(0, 24, 45, 0.3),
    0 24px 56px rgba(0, 24, 45, 0.18);
}

/* fallback stile homepage */
.sostenitore-logo-fallback {
  position: relative;
  overflow: hidden;

  background:
    radial-gradient(circle at 28% 22%, rgba(168, 201, 225, 0.32), transparent 34%),
    radial-gradient(circle at 78% 78%, rgba(168, 201, 225, 0.18), transparent 36%),
    linear-gradient(145deg, #0c3e69 0%, #155384 55%, #1b689f 100%);
}

.sost-clef {
  position: absolute;
  width: 46%;
  height: auto;
  left: 50%;
  top: 50%;
  transform-origin: center;
}

.sost-clef-1 {
  transform: translate(-62%, -50%) rotate(-6deg);
  opacity: .42;
}

.sost-clef-2 {
  transform: translate(-35%, -44%) rotate(4deg);
  opacity: .88;
}

.sostenitore-card-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  margin-top: 22px;
}

.sostenitore-nome {
  display: block;
  margin: 0;
  padding-inline: 8px;

  color: inherit;
  font-family: var(--fontFamilyTitle);
  font-size: clamp(1.1rem, 2vw, 1.45rem);
  font-weight: 700;
  line-height: 1.2;
  text-wrap: balance;
}

.sostenitore-name-line {
  display: block;
  width: 0;
  height: 2px;
  margin-top: 12px;

  background: var(--blue-40);
  border-radius: 999px;
  opacity: 0;

  transition:
    width 0.4s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.25s ease;
}

.sostenitore-card-link:hover .sostenitore-name-line,
.sostenitore-card-link:focus-visible .sostenitore-name-line {
  width: 56px;
  opacity: 1;
}

.sostenitore-card-link:focus-visible {
  outline: 3px solid var(--light-blue-40);
  outline-offset: 10px;
}

.sostenitori-empty {
  color: var(--neutral-60);
}

@media (max-width: 991.98px) {
  .sostenitori-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 48px 28px;
  }
}

@media (max-width: 767.98px) {
  .sostenitori-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 44px 24px;
  }

  .sostenitore-logo-circle {
    width: 92%;
  }
}

@media (max-width: 575.98px) {
  body.post-type-archive-sostenitore .main-nav {
    border-radius:
      0 0
      calc(100dvw * 20 / var(--viewSize))
      calc(100dvw * 20 / var(--viewSize));

    padding:
      calc(100dvw * 16 / var(--viewSize))
      calc(100dvw * 12 / var(--viewSize));
  }

  .sostenitori-archive-header {
    padding-top: 20px;
    padding-bottom: 40px;
  }

  .sostenitori-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 38px 16px;
  }

  .sostenitore-card-body {
    margin-top: 16px;
  }

  .sostenitore-nome {
    padding-inline: 2px;
    font-size: 1rem;
  }
}

@media (max-width: 380px) {
  .sostenitori-grid {
    grid-template-columns: 1fr;
    max-width: 280px;
    margin-inline: auto;
  }
}

@media (hover: none) {
  .sostenitore-card-link:hover {
    transform: none;
  }

  .sostenitore-card-link:hover .sostenitore-logo-circle {
    width: 90%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sostenitore-card-link,
  .sostenitore-logo-circle,
  .sostenitore-name-line {
    transition: none;
  }

  .sostenitore-card-link:hover {
    transform: none;
  }
}

/* =========================================================
   BILANCIO
   ========================================================= */
.bilancio-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.bilancio-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 24px 0;
  border-bottom: 1px solid var(--neutral-20);
  flex-wrap: wrap;
}
.bilancio-anno {
  display: flex;
  align-items: baseline;
  gap: 16px;
}
.anno-number {
  font-family: "AlteHaasGrotesk", sans-serif;
  font-size: clamp(1.4rem, 3vw, 2rem);
  font-weight: 700;
  color: var(--blue-40);
}
.anno-desc {
  font-size: 0.875rem;
  color: var(--neutral-60);
}
.bilancio-badge-arrivo {
  display: inline-flex;
  align-items: center;
  font-size: 0.85rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--blue-40);
  background: var(--blue-10, var(--neutral-10));
  border: 1px solid var(--neutral-20);
  border-radius: 999px;
  padding: 8px 16px;
}
@media (max-width: 575px) {
  .bilancio-item {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    padding: 20px 0;
  }
  .bilancio-anno {
    flex-wrap: wrap;
    gap: 8px;
  }
}

/* =========================================================
   SINGLE SOSTENITORE
   ========================================================= */

.single-sostenitore-page {
  background: var(--neutral-0);
  overflow-x: clip;
}

/*
 * Navbar colorata sin dal primo caricamento.
 *
 * WordPress aggiunge automaticamente la classe
 * "single-sostenitore" al body del singolo CPT.
 *
 * In questo modo non c'è il piccolo flash trasparente che
 * si avrebbe aggiungendo la classe tramite DOMContentLoaded.
 */
body.single-sostenitore .main-nav {
  border-radius:
    0 0
    calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));

  padding:
    calc(100dvw * 16 / var(--viewSize))
    calc(100dvw * 20 / var(--viewSize));

  background: rgba(0, 48, 91, 0.78);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);

  border-bottom: 1px solid var(--blue-20);
}

/* Breadcrumb sotto la navbar */
.sostenitore-breadcrumb {
  position: relative;
  z-index: 2;
  padding-top:
    calc(
      (100dvw * 96 / var(--viewSize))
      + 28px
    );
  padding-bottom: 24px;
  background: var(--neutral-0);
  border-bottom: 1px solid var(--neutral-20);
}

/*
 * Nel CSS generale .single-cpt-content ha anche min-height: 50dvh.
 * Qui la annulliamo, altrimenti la pagina dello sponsor crea
 * un grande spazio vuoto.
 */
.single-sostenitore-page .single-cpt-content {
  min-height: 0;
}

/* Titolo */
.sostenitore-title {
  max-width: 900px;
  color: var(--blue-80);
  font-size: clamp(2.8rem, 6vw, 5.8rem);
  line-height: 0.98;
  letter-spacing: -0.035em;
}

/* Metadati */
.sostenitore-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 24px;
  margin-top: 18px;
}

.sostenitore-meta p {
  margin: 0;
}

.single-sostenitore-page .sostenitore-tipo {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--blue-40);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

.single-sostenitore-page .sostenitore-anno {
  font-size: 0.9rem;
  color: var(--neutral-50);
}

.sostenitore-content {
  max-width: 780px;
}

/* =========================================================
   CARD LOGO CON TILT
   ========================================================= */

.sostenitore-logo-stage {
  width: 100%;
  perspective: 1100px;
  transform-style: preserve-3d;
}

.sostenitore-logo-card {
  position: relative;
  width: 100%;

  /*
   * Nessuna altezza o aspect-ratio fissi:
   * la card segue le proporzioni reali del logo.
   */

  display: flex;
  align-items: center;
  justify-content: center;

  background:
    linear-gradient(
      145deg,
      var(--neutral-0),
      var(--neutral-10)
    );

  border: 1px solid rgba(0, 48, 91, 0.08);
  border-radius: calc(100dvw * 20 / var(--viewSize));

  box-shadow: 0 0 12px rgba(0, 24, 45, 1);

  transform:
    rotateX(0deg)
    rotateY(0deg)
    translateY(0)
    scale(1);

  transform-style: preserve-3d;
  will-change: transform;

  transition:
    box-shadow 0.3s ease,
    transform 0.08s linear;

  cursor: pointer;
}
.sostenitore-logo-card > a {
  border-radius: 8px;
  overflow: hidden;
}

.sostenitore-logo-card.is-resetting {
  transition:
    transform 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.3s ease;
}

.sostenitore-logo-card:hover {
  box-shadow:
    0 0px 45px rgb(0, 78, 146);
}

.sostenitore-logo-card a {
  display: block;
  width: 100%;
  transform: translateZ(28px);
}

.sostenitore-logo-card img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;

  /*
   * Mantiene sempre visibile tutto il logo senza tagliarlo.
   */
  object-fit: contain;
  object-position: center;

  transform: translateZ(28px);

  user-select: none;
  -webkit-user-drag: none;
}

.sostenitore-logo-card a img {
  transform: none;
}

.sostenitore-logo-card a:focus-visible {
  outline: 3px solid var(--light-blue-40);
  outline-offset: 8px;
  border-radius: 8px;
}

/* Pulsante sito */
.sostenitore-site-button {
  display: inline-flex;
  align-items: center;
  padding: 12px 22px;
  border-radius: 999px;
}

/* =========================================================
   CITAZIONE / BREVE DESCRIZIONE
   ========================================================= */

.sostenitore-quote {
  position: relative;
  overflow: hidden;

  padding:
    calc(100dvw * 80 / var(--viewSize))
    0;

  background:
    linear-gradient(
      155deg,
      var(--blue-80) 0%,
      var(--blue-60) 52%,
      var(--blue-40) 100%
    );
}

.sostenitore-quote::before {
  content: "“";
  position: absolute;
  top: -32px;
  left: 5vw;

  font-family: var(--fontFamilyTitle);
  font-size: clamp(12rem, 24vw, 26rem);
  line-height: 1;

  color: rgba(255, 255, 255, 0.1);

  pointer-events: none;
}

.sostenitore-quote::after {
  content: "";
  position: absolute;
  inset: 0;

  background:
    radial-gradient(
      circle at 80% 20%,
      rgba(168, 201, 225, 0.15),
      transparent 42%
    );

  pointer-events: none;
}

.sostenitore-quote__inner {
  position: relative;
  z-index: 2;
  max-width: 950px;
}

.sostenitore-quote__label {
  display: inline-block;
  margin-bottom: 20px;

  color: var(--light-blue-20);
  font-size: 0.76rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.14em;
}

.sostenitore-quote__text {
  margin: 0;

  color: var(--neutral-0);
  font-size: clamp(1.45rem, 3vw, 2.65rem);
  line-height: 1.45;
  font-weight: 400;
  font-style: italic;

  text-wrap: balance;
}

.sostenitore-quote__text p {
  margin: 0;
  color: inherit;
  font: inherit;
}

/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 991.98px) {
  .sostenitore-main {
    padding-top: 48px;
  }

  .sostenitore-logo-stage {
    max-width: 720px;
    margin-inline: auto;
  }

  .sostenitore-title {
    font-size: clamp(2.8rem, 10vw, 5rem);
  }
}

@media (max-width: 576px) {
  body.single-sostenitore .main-nav {
    border-radius:
      0 0
      calc(100dvw * 20 / var(--viewSize))
      calc(100dvw * 20 / var(--viewSize));

    padding:
      calc(100dvw * 16 / var(--viewSize))
      calc(100dvw * 12 / var(--viewSize));
  }

  .sostenitore-breadcrumb {
    padding-top:
      calc(
        (100dvw * 80 / var(--viewSize))
        + 24px
      );
    padding-bottom: 18px;
  }

  .sostenitore-logo-card {
    padding: 20px;
    border-radius: 14px;
  }

  .sostenitore-meta {
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
  }

  .sostenitore-quote {
    padding: 64px 0;
  }

  .sostenitore-quote__text {
    font-size: 1.55rem;
    line-height: 1.45;
  }
}

/* Accessibilità */
@media (prefers-reduced-motion: reduce) {
  .sostenitore-logo-card,
  .sostenitore-logo-card.is-resetting {
    transition: none;
    transform: none !important;
  }
}


/* =========================================================
   ARCHIVIO BLOG — CARD ARTICOLO
   ========================================================= */

.blog-archive .card-articolo {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-width: 0;
  overflow: hidden;

  border: 1px solid rgba(0, 48, 91, 0.08);
  border-radius: calc(100dvw * 16 / var(--viewSize));

  background: var(--neutral-0);

  /*
   * Ombra visibile fin da subito.
   */
  box-shadow:
    0 8px 24px rgba(0, 24, 45, 0.12),
    0 2px 8px rgba(0, 24, 45, 0.06);

  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease,
    border-color 0.3s ease;
}

.blog-archive .card-articolo:hover,
.blog-archive .card-articolo:focus-within {
  transform: translateY(-6px);

  border-color: rgba(0, 71, 136, 0.3);

  /*
   * Ombra più grande e chiaramente blu.
   */
  box-shadow:
    0 22px 52px rgba(0, 71, 136, 0.3),
    0 8px 20px rgba(0, 48, 91, 0.18);
}

/* Immagine */
.blog-archive .card-articolo-img {
  display: block;
  flex-shrink: 0;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--light-blue-05);
}

.blog-archive .card-articolo-img img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;

  transition: transform 0.45s ease;
}

.blog-archive .card-articolo:hover .card-articolo-img img,
.blog-archive .card-articolo:focus-within .card-articolo-img img {
  transform: scale(1.055);
}

/* Placeholder immagine */
.blog-archive .card-articolo-img--placeholder {
  color: var(--blue-20);
  text-decoration: none;

  background:
    radial-gradient(
      circle at top right,
      rgba(168, 201, 225, 0.8),
      transparent 45%
    ),
    linear-gradient(
      135deg,
      var(--light-blue-05),
      var(--neutral-0)
    );
}

.blog-archive .card-articolo-img--placeholder i {
  font-size: clamp(2rem, 4vw, 3.5rem);
  opacity: 0.65;
}

/* Corpo */
.blog-archive .card-articolo-body {
  display: flex;
  flex: 1;
  flex-direction: column;
  min-width: 0;
  padding: 24px;
}

/* Riga categoria + data */
.blog-archive .card-articolo-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 16px;
}

.blog-archive .card-data {
  color: var(--blue-40);
  font-size: 0.75rem;
  line-height: 1.3;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;

  transition: color 0.2s ease;
}

.blog-archive a.card-data:hover {
  color: var(--blue-80);
}

.blog-archive .post-meta-date {
  color: var(--neutral-50);
  font-size: 0.78rem;
  line-height: 1.3;
}

/* Titolo */
.blog-archive .card-articolo-title {
  margin: 12px 0 8px;

  font-family: var(--fontFamilyMain);
  font-size: clamp(1.05rem, 1.5vw, 1.25rem);
  line-height: 1.35;
  font-weight: 650;
  letter-spacing: 0;
}

.blog-archive .card-articolo-title a {
  color: var(--blue-80);
  text-decoration: none;
}

.blog-archive .card-articolo-title a:hover,
.blog-archive .card-articolo-title a:focus-visible {
  color: var(--blue-40);
}

/* Estratto */
.blog-archive .card-articolo-excerpt {
  display: -webkit-box;
  overflow: hidden;
  margin: 0;

  color: var(--neutral-60);
  font-size: 0.875rem;
  line-height: 1.65;

  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
}

/* Footer card */
.blog-archive .card-articolo-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  margin-top: auto;
  padding-top: 22px;
}

.blog-archive .card-articolo-footer .section-cta-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.blog-archive .card-articolo-footer .section-cta-link i {
  transition: transform 0.25s ease;
}

.blog-archive .card-articolo-footer .section-cta-link:hover i {
  transform: translateX(5px);
}

/* Mobile */
@media screen and (max-width: 575px) {
  .blog-archive .card-articolo {
    border-radius: 14px;
  }

  .blog-archive .card-articolo-body {
    padding: 20px;
  }

  .blog-archive .card-articolo-meta {
    align-items: flex-start;
    flex-direction: column;
    gap: 5px;
  }

  .blog-archive .card-articolo-excerpt {
    -webkit-line-clamp: 3;
  }
}

/*
 * Su dispositivi senza hover evitiamo movimenti inutili,
 * mantenendo però l’ombra iniziale.
 */
@media (hover: none) {
  .blog-archive .card-articolo:hover {
    transform: none;
  }
}


/* CARD STAMPA */
.stampa-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 32px;
}
.card-stampa {
  background: var(--neutral-0);
  box-shadow: 0 0 8px rgba(0,0,0, .2);
  border-radius: 16px;
  overflow: hidden;
}
.card-stampa-cover-wrap {
  aspect-ratio: 4/5;
  overflow: hidden;
}
.card-stampa-cover {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.card-stampa:hover .card-stampa-cover {
  transform: scale(1.04);
}
.card-stampa-body {
  padding: 20px;
}
.stampa-anno {
  font-size: 0.875rem;
  color: var(--neutral-50);
  margin: 4px 0 0;
}

/* PRESS KIT */
.press-kit-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.press-kit-item {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 24px 32px;
  border-radius: 0;
  border-bottom: 1px solid var(--neutral-20);
  background: var(--neutral-0);
}
.press-kit-item:first-child {
  border-radius: 16px 16px 0 0;
}
.press-kit-item:last-child {
  border-radius: 0 0 16px 16px;
  border-bottom: none;
}
.press-kit-icon {
  font-size: 1.6rem;
  color: var(--blue-40);
  width: 48px;
  flex-shrink: 0;
  text-align: center;
}
.press-kit-info h4 {
  font-size: 1rem;
  margin-bottom: 2px;
}
.press-kit-info p {
  font-size: 0.875rem;
  color: var(--neutral-60);
  margin: 0;
}
@media (max-width: 576px) {
  .press-kit-item {
    flex-wrap: wrap;
    padding: 20px;
  }
  .press-kit-item .btn {
    width: 100%;
  }
}

/* PRESS KIT CTA BOX */
.press-kit-cta {
  background: var(--neutral-10);
  padding: 40px 48px;
}
@media (max-width: 576px) {
  .press-kit-cta {
    padding: 24px;
  }
  .press-kit-cta .btn {
    width: 100%;
    text-align: center;
  }
}

/* =========================================================
   SEDE — MAPPA
   ========================================================= */
.sede-mappa iframe {
  width: 100%;
  height: 480px;
  border: none;
  display: block;
}
@media (max-width: 767px) {
  .sede-mappa iframe {
    height: 320px;
  }
}

/* =========================================================
   LEGAL PAGE
   ========================================================= */
.legal-content {
  color: var(--neutral-70);
  line-height: 1.8;
}
.legal-content h2,
.legal-content h3 {
  color: var(--blue-60);
  margin-top: 2rem;
}
.legal-content a {
  color: var(--blue-40);
}

/* =========================================================
   NOVITÀ — SPLIDE ARTICOLI / STAMPA (guarded carousels)
   ========================================================= */
#splideNovitaArticoli .splide__slide,
#splideNovitaStampa .splide__slide {
  padding-right: 8px;
}

/* =========================================================
   SINGLE DIRETTORE — GALLERY
   ========================================================= */
#singleDirettoreGallery .splide__slide img {
  width: 100%;
  height: 380px;
  object-fit: cover;
  border-radius: 12px;
}

/* =========================================================
   SINGLE EVENTO — GALLERY
   ========================================================= */
#singleEventoGallery .splide__slide img {
  width: 100%;
  height: 420px;
  object-fit: cover;
  border-radius: 12px;
}

/* =========================================================
   SEDE GALLERY
   ========================================================= */
#singleSpazioSede .splide__slide img {
  width: 100%;
  height: 440px;
  object-fit: cover;
  border-radius: 12px;
}

/* =========================================================
   SINGLE BLOG POST
   ========================================================= */

/* ---------------------------------------------------------
   Hero
   --------------------------------------------------------- */

main.single-post .single-post-hero {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: flex-end;
  width: 100%;
  min-height: clamp(460px, 55vw, 680px);
  overflow: hidden;
  background-color: var(--blue-60);
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

main.single-post .single-post-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(
    180deg,
    rgba(0, 24, 45, 0.12) 0%,
    rgba(0, 24, 45, 0.3) 45%,
    rgba(0, 24, 45, 0.96) 100%
  );
}

main.single-post .single-post-hero-content {
  position: relative;
  z-index: 2;
  width: 100%;
  padding-top: clamp(140px, 18vw, 240px);
  padding-bottom: clamp(36px, 5vw, 72px);
}

main.single-post .article-hero-shell {
  width: 100%;
}

main.single-post .single-post-title {
  max-width: 1200px;
  margin: 0;
  font-family: var(--fontFamilyTitle);
  font-size: clamp(2.75rem, 6vw, 5.75rem);
  line-height: 1.02;
  font-weight: 700;
  letter-spacing: -0.025em;
  color: var(--neutral-0);
  overflow-wrap: anywhere;
  background: linear-gradient(
    var(--neutral-0) 60%,
    rgba(245, 245, 245, 0.72)
  );
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* ---------------------------------------------------------
   Breadcrumb nella hero
   --------------------------------------------------------- */

main.single-post .article-hero-breadcrumb {
  width: 100%;
  margin-top: clamp(20px, 3vw, 36px);
  padding-top: clamp(14px, 2vw, 22px);
  border-top: 1px solid rgba(255, 255, 255, 0.25);
}

main.single-post .article-hero-breadcrumb .breadcrumb-nav {
  position: static;
  inset: auto;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
}

main.single-post .article-hero-breadcrumb .breadcrumb-wrap {
  width: 100%;
  margin: 0;
  padding: 0;
}

main.single-post .article-hero-breadcrumb .breadcrumb-list {
  width: 100%;
}

main.single-post .article-hero-breadcrumb .breadcrumb-item,
main.single-post .article-hero-breadcrumb .breadcrumb-item a,
main.single-post .article-hero-breadcrumb .breadcrumb-sep {
  color: var(--neutral-0);
}

main.single-post .article-hero-breadcrumb .breadcrumb-item a:hover {
  color: var(--light-blue-20);
}

main.single-post .article-hero-breadcrumb .breadcrumb-item.active {
  color: rgba(255, 255, 255, 0.72);
}

/* ---------------------------------------------------------
   Layout principale
   --------------------------------------------------------- */

.article-main-section {
  padding-top: clamp(64px, 8vw, 120px);
  padding-bottom: clamp(64px, 8vw, 120px);
  background: var(--neutral-0);
}

.article-layout {
  display: grid;
  grid-template-columns: minmax(220px, 270px) minmax(0, 840px);
  justify-content: center;
  align-items: start;
  gap: clamp(48px, 7vw, 112px);
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
}

.article-sidebar,
.article-content-column {
  min-width: 0;
}

/* ---------------------------------------------------------
   Sidebar
   --------------------------------------------------------- */

/* Sidebar sticky desktop */
.article-sidebar {
  position: sticky;
  top: 120px;
  align-self: start;
  height: fit-content;
}

body.admin-bar .article-sidebar {
  top: 152px;
}

.article-sidebar-inner {
  position: static;
}

.article-sidebar-block + .article-sidebar-block {
  margin-top: 30px;
  padding-top: 30px;
  border-top: 1px solid var(--neutral-20);
}

.article-sidebar-meta {
  display: grid;
  gap: 24px;
}

.article-meta-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 7px;
}

.article-meta-label,
.article-sidebar-title {
  display: block;
  margin-bottom: 12px;
  color: var(--neutral-50);
  font-size: 0.72rem;
  line-height: 1.3;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.article-meta-item .article-meta-label {
  margin-bottom: 0;
}

.article-meta-value {
  color: var(--blue-80);
  font-size: 0.95rem;
  line-height: 1.45;
  font-weight: 600;
}

.article-sidebar .post-reading-time {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--blue-80);
  font-size: 0.95rem;
}

.article-sidebar .post-reading-time i {
  color: var(--blue-40);
}

.article-sidebar .pill-filter {
  max-width: 100%;
  white-space: normal;
}

.article-sidebar .post-tags {
  margin: 0;
  padding: 0;
  border: 0;
}

.article-sidebar .share-buttons {
  align-items: center;
}

.article-sidebar .share-btn {
  flex: 0 0 auto;
}

/* ---------------------------------------------------------
   Pulsanti condivisione
   --------------------------------------------------------- */

.share-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--neutral-30);
  border-radius: 50%;
  background: var(--neutral-0);
  color: var(--blue-40);
  text-decoration: none;
  cursor: pointer;
  transition:
    color 0.2s ease,
    background-color 0.2s ease,
    border-color 0.2s ease,
    transform 0.2s ease;
}

.share-btn:hover,
.share-btn:focus-visible {
  color: var(--neutral-0);
  background: var(--blue-40);
  border-color: var(--blue-40);
  transform: translateY(-2px);
}

.share-btn.copied {
  color: var(--neutral-0);
  background: var(--success-dark);
  border-color: var(--success-dark);
}

/* ---------------------------------------------------------
   Contenuto articolo
   --------------------------------------------------------- */

.article-content-column .article-content {
  min-height: 0;
  color: var(--neutral-70);
  font-size: clamp(1rem, 1.2vw, 1.125rem);
  line-height: 1.85;
}

.article-content-column .article-content > *:first-child {
  margin-top: 0;
}

.article-content-column .article-content > *:last-child {
  margin-bottom: 0;
}

.article-content-column .article-content h2,
.article-content-column .article-content h3,
.article-content-column .article-content h4 {
  color: var(--blue-60);
}

.article-content-column .article-content h2 {
  margin-top: 2.6em;
  margin-bottom: 0.7em;
}

.article-content-column .article-content h3,
.article-content-column .article-content h4 {
  margin-top: 2em;
  margin-bottom: 0.65em;
}

.article-content-column .article-content p {
  margin-top: 0;
  margin-bottom: 1.4em;
}

.article-content-column .article-content img {
  display: block;
  max-width: 100%;
  height: auto;
  margin: 2em 0;
  border-radius: 12px;
}

.article-content-column .article-content figure {
  max-width: 100%;
  margin: 2em 0;
}

.article-content-column .article-content figure img {
  margin: 0;
}

.article-content-column .article-content blockquote {
  margin: 2.5em 0;
  padding: 0.4em 0 0.4em 1.5em;
  border-left: 3px solid var(--blue-40);
  color: var(--blue-60);
  font-style: italic;
}

.article-content-column .article-content iframe,
.article-content-column .article-content video {
  max-width: 100%;
}

.article-content-column .article-content table {
  display: block;
  max-width: 100%;
  overflow-x: auto;
}

.article-page-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 40px;
}

/* ---------------------------------------------------------
   Navigazione articoli
   --------------------------------------------------------- */

.article-pagination-section {
  padding-top: clamp(32px, 5vw, 64px);
  padding-bottom: clamp(32px, 5vw, 64px);
  border-top: 1px solid var(--neutral-20);
  border-bottom: 1px solid var(--neutral-20);
  background: var(--neutral-5);
}

.article-post-navigation {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(16px, 3vw, 32px);
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
}

.article-post-navigation .nav-prev,
.article-post-navigation .nav-next {
  width: 100%;
  max-width: none;
}

.article-post-navigation .nav-next {
  text-align: right;
}

.article-nav-link {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 118px;
  padding: 22px 24px;
  border: 1px solid var(--neutral-20);
  border-radius: 14px;
  background: var(--neutral-0);
  color: var(--blue-80);
  text-decoration: none;
  transition:
    transform 0.25s ease,
    border-color 0.25s ease,
    box-shadow 0.25s ease;
}

.article-post-navigation .nav-next .article-nav-link {
  align-items: flex-end;
}

.article-nav-link:hover {
  transform: translateY(-4px);
  border-color: var(--blue-20);
  box-shadow: 0 12px 32px rgba(0, 24, 45, 0.08);
}

.article-post-navigation .nav-dir {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 7px;
  color: var(--blue-40);
  font-size: 0.75rem;
  line-height: 1.3;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.article-post-navigation .nav-post-title {
  display: block;
  color: var(--blue-80);
  font-size: clamp(0.95rem, 1.4vw, 1.15rem);
  line-height: 1.4;
  font-weight: 600;
}

/* ---------------------------------------------------------
   Newsletter condivisa
   --------------------------------------------------------- */

.single-post .contact-newsletter-section {
  padding-top: clamp(64px, 8vw, 120px);
  margin-bottom: 0;
}


/* Il form è d-flex: senza wrap consenso e messaggio finirebbero in riga con
   input e bottone. Era il motivo per cui stavano in position:absolute. */
.cont-input-email-news-home {
    position: relative;
    flex-wrap: wrap;
}

.newsletter-privacy-consent {
    width: 100%;
    margin: 10px 0 0;

    font-size: 12px;
    line-height: 1.45;
}

.newsletter-privacy-consent label {
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
    gap: 8px;

    margin: 0;
    text-align: left;
    cursor: pointer;
}

.newsletter-privacy-consent input[type="checkbox"] {
    width: 14px;
    height: 14px;
    /* allinea la checkbox alla prima riga di testo, non al centro del blocco */
    margin: 2px 0 0;
    flex: 0 0 14px;
}

.newsletter-privacy-consent a, .newsletter-privacy-consent span {
     font-size: 12px;
}

@media (max-width: 767.98px) {
    .newsletter-privacy-consent label {
        justify-content: flex-start;
    }
}

/* ---------------------------------------------------------
   Tablet
   --------------------------------------------------------- */

@media screen and (max-width: 991px) {
  main.single-post .single-post-hero {
    min-height: 500px;
  }

  main.single-post .single-post-title {
    font-size: clamp(2.5rem, 8vw, 4.5rem);
  }

  .article-layout {
    grid-template-columns: minmax(0, 840px);
    gap: 48px;
  }

  .article-sidebar {
    position: static;
    top: auto;
    height: auto;
  }

  .article-sidebar-inner {
    position: static;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px;
    padding: 28px;
    border: 1px solid var(--neutral-20);
    border-radius: 16px;
    background: var(--neutral-5);
  }

  .article-sidebar-block + .article-sidebar-block {
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
  }

  .article-sidebar-block--meta {
    grid-column: 1 / -1;
    padding-bottom: 28px;
    border-bottom: 1px solid var(--neutral-20);
  }

  .article-sidebar-meta {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
  }

  .article-post-navigation .nav-post-title {
    display: none;
  }

  .article-nav-link {
    min-height: 78px;
  }

  .article-post-navigation .nav-dir {
    margin-bottom: 0;
  }
}

/* ---------------------------------------------------------
   Mobile
   --------------------------------------------------------- */

@media screen and (max-width: 575px) {
  main.single-post .single-post-hero {
    min-height: 410px;
  }

  main.single-post .single-post-hero-content {
    padding-top: 130px;
    padding-bottom: 30px;
  }

  main.single-post .single-post-title {
    font-size: clamp(2.15rem, 11vw, 3.15rem);
    line-height: 1.05;
  }

  main.single-post .article-hero-breadcrumb {
    margin-top: 20px;
    padding-top: 14px;
  }

  .article-main-section {
    padding-top: 48px;
    padding-bottom: 56px;
  }

  .article-layout {
    gap: 38px;
  }

  .article-sidebar-inner {
    display: block;
    padding: 22px 18px;
  }

  .article-sidebar-meta {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .article-sidebar-block--meta {
    padding-bottom: 24px;
  }

  .article-sidebar-block + .article-sidebar-block {
    margin-top: 24px;
    padding-top: 24px;
    border-top: 1px solid var(--neutral-20);
  }

  .share-btn {
    width: 38px;
    height: 38px;
    font-size: 0.9rem;
  }

  .article-post-navigation {
    gap: 10px;
  }

  .article-nav-link {
    min-height: 72px;
    padding: 16px 12px;
  }

  .article-post-navigation .nav-dir {
    gap: 5px;
    font-size: 0.65rem;
    letter-spacing: 0.025em;
  }
}

/* =========================================================
   ARCHIVE BLOG — categorie/tag
   ========================================================= */
.blog-archive .card-articolo-img a img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.text-inherit {
  color: inherit;
}

/* =========================================================
   404 PAGE
   ========================================================= */
.error-404-page {
  min-height: 80vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.error-404-number {
  font-family: "AlteHaasGrotesk", sans-serif;
  font-size: clamp(5rem, 15vw, 10rem);
  font-weight: 700;
  color: var(--blue-40);
  line-height: 1;
  display: block;
  opacity: 0.15;
}
.error-404-desc {
  color: var(--neutral-60);
  line-height: 1.7;
  font-size: 1.05rem;
}
.error-404-links h4 {
  font-size: 1rem;
  color: var(--neutral-60);
  font-weight: 500;
}

/* =========================================================
   SOSTENITORE SINGLE — logo
   ========================================================= */
.sostenitore-single-logo {
  background: var(--neutral-10);
  border-radius: 16px;
  padding: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 200px;
}
.sostenitore-single-logo img {
  max-height: 120px;
  max-width: 280px;
  object-fit: contain;
}

/* =========================================================
   SEARCH RESULTS
   ========================================================= */
.search-results-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.search-result-item {
  display: flex;
  gap: 32px;
  align-items: flex-start;
  padding: 32px 0;
  border-bottom: 1px solid var(--neutral-20);
}
.search-result-item:last-child {
  border-bottom: none;
}
.search-result-thumb {
  width: 100%;
  aspect-ratio: 3 / 2;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: calc(100dvw * 16 / var(--viewSize));
  background: var(--neutral-10);
}

.search-result-thumb img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  object-position: center;
}

/* Placeholder quando la miniatura non esiste */
.search-result-thumb--placeholder {
  position: relative;
  padding: calc(100dvw * 24 / var(--viewSize));
  background: linear-gradient(
    145deg,
    var(--light-blue-05),
    var(--neutral-0)
  );
}

.search-placeholder-clefs {
  position: relative;
  width: 82%;
  height: 82%;
  color: var(--blue-40);
}

.search-placeholder-clef {
  position: absolute;
  width: 90%;
  height: auto;
  left: 50%;
  top: 50%;
  pointer-events: none;
}

.search-placeholder-clef--primary {
  opacity: 0.4;
  transform: translate(-56%, -64%) rotate(-8deg);
}

.search-placeholder-clef--secondary {
  opacity: 0.18;
  transform: translate(-39%, -26%) rotate(-8deg);
}

.search-result-thumb:hover .search-placeholder-clef--primary {
  transform: translate(-56%, -64%) rotate(-8deg) scale(1.04);
}

.search-placeholder-clef--primary {
  transition: transform 0.3s ease;
}

@media (max-width: 767px) {
  .search-result-thumb {
    border-radius: 12px;
  }

  .search-result-thumb--placeholder {
    min-height: 190px;
    padding: 20px;
  }
}
.search-result-body {
  flex: 1;
  min-width: 0;
}
.search-result-title {
  font-size: clamp(1rem, 1.5vw, 1.25rem);
  margin: 4px 0 8px;
  line-height: 1.35;
}
.search-result-title a {
  color: var(--blue-60);
}
.search-result-title a:hover {
  color: var(--blue-40);
}
.search-result-excerpt {
  font-size: 0.875rem;
  color: var(--neutral-60);
  line-height: 1.6;
  margin: 0;
}
@media (max-width: 576px) {
  .search-result-item {
    flex-direction: column;
    gap: 16px;
  }
  .search-result-thumb {
    width: 100%;
    height: 180px;
  }
}

/* ============================================================
   TIMELINE ORIZZONTALE (partial: timeline.php)
   ============================================================ */
.sez-timeline {
  overflow: hidden;
  position: relative;
}
.sez-timeline .timeline-description {
  color: var(--neutral-70);
  font-size: 1rem;
  line-height: 1.6;
}

.timeline-wrapper {
  position: relative;
}

.timeline-track {
  /* Scostamento verticale degli item sopra/sotto la linea. overflow-x:auto
     forza overflow-y a hidden, quindi il padding non può essere inferiore
     allo scostamento: la card più alta verrebbe tagliata in fondo. */
  --tl-offset: 110px;

  position: relative;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-behavior: smooth;
  padding: var(--tl-offset) 0;
  cursor: grab;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
.timeline-track.is-grabbing {
  cursor: grabbing;
}
.timeline-track::-webkit-scrollbar {
  display: none;
}

.timeline-line {
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(
    to right,
    transparent 0,
    var(--blue-10) 40px,
    var(--blue-20) 50%,
    var(--blue-10) calc(100% - 40px),
    transparent 100%
  );
  transform: translateY(-50%);
  pointer-events: none;
  z-index: 1;
}

.timeline-list {
  list-style: none;
  margin: 0;
  padding: 0 40px;
  display: flex;
  align-items: center;
  gap: 56px;
  min-width: max-content;
  position: relative;
  z-index: 2;
}

.timeline-item {
  position: relative;
  width: 280px;
  flex: 0 0 280px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.timeline-item--top {
  flex-direction: column-reverse;
  transform: translateY(calc(var(--tl-offset) * -1));
}
.timeline-item--bottom {
  flex-direction: column;
  transform: translateY(var(--tl-offset));
}

.timeline-dot {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--blue-40);
  border: 4px solid var(--neutral-0);
  box-shadow:
    0 0 0 2px var(--blue-20),
    var(--shadow-light);
  position: relative;
  z-index: 3;
  transition:
    transform 0.25s ease,
    background 0.25s ease;
}
.timeline-item:hover .timeline-dot {
  transform: scale(1.2);
  background: var(--blue-60);
}

/* Connettore verticale tra linea e card */
.timeline-item::before {
  content: "";
  position: absolute;
  left: 50%;
  width: 2px;
  height: 60px;
  background: var(--blue-10);
  transform: translateX(-50%);
  z-index: 1;
}
.timeline-item--top::before {
  bottom: 0;
}
.timeline-item--bottom::before {
  top: 0;
}

.timeline-card {
  background: var(--neutral-0);
  border-radius: 18px;
  box-shadow: var(--shadow-light);
  padding: 0;
  overflow: hidden;
  width: 100%;
  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease;
  border: 1px solid var(--neutral-20);
}
.timeline-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-medium);
}

.timeline-card-img {
  width: 100%;
  height: 140px;
  overflow: hidden;
  background: var(--neutral-10);
}
.timeline-card-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.timeline-card-body {
  padding: 20px 22px 22px;
}

.timeline-year {
  display: inline-block;
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: 1.75rem;
  line-height: 1;
  color: var(--blue-40);
  letter-spacing: -0.5px;
}

.timeline-title {
  font-family: var(--fontFamilyMain);
  font-weight: 600;
  font-size: 1.05rem;
  line-height: 1.3;
  color: var(--neutral-90);
}

.timeline-text {
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--neutral-70);
}

/* Controlli frecce */
.timeline-btn {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1.5px solid var(--blue-20);
  background: var(--neutral-0);
  color: var(--blue-40);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.25s ease;
  font-size: 0.95rem;
}
.timeline-btn:hover {
  background: var(--blue-40);
  color: var(--neutral-0);
  border-color: var(--blue-40);
  transform: scale(1.05);
}
.timeline-btn:active {
  transform: scale(0.96);
}

/* Responsive */
@media (max-width: 768px) {
  .timeline-track {
    --tl-offset: 90px;
  }
  .timeline-list {
    gap: 36px;
    padding: 0 24px;
  }
  .timeline-item {
    width: 240px;
    flex: 0 0 240px;
  }
  .timeline-item::before {
    height: 48px;
  }
  .timeline-card-img {
    height: 110px;
  }
  .timeline-year {
    font-size: 1.4rem;
  }
}

@media (max-width: 480px) {
  .timeline-track {
    --tl-offset: 80px;
  }
  .timeline-list {
    gap: 24px;
  }
  .timeline-item {
    width: 210px;
    flex: 0 0 210px;
  }
}

/* ============================================================
   PAGINA CONTATTI (layout classico info + mappa)
   ============================================================ */
.sez-contatti-classic .contatti-card {
  background: var(--neutral-0);
  padding: 32px;
  box-shadow: var(--shadow-light);
  border: 1px solid var(--neutral-20);
  display: flex;
  flex-direction: column;
}

.sez-contatti-classic .contatti-card h3 {
  color: var(--blue-40);
}

.contatti-list {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.contatti-item-classic {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}

.contatti-icon-round {
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--blue-40);
  color: var(--neutral-0);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  box-shadow: var(--shadow-light);
}
.contatti-icon-round--wa {
  background: #25d366;
}

.contatti-content {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.contatti-label {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--neutral-60);
  font-weight: 600;
}
.contatti-value {
  font-size: 1rem;
  line-height: 1.45;
  color: var(--neutral-90);
  font-weight: 500;
  word-break: break-word;
}
a.contatti-value:hover {
  color: var(--blue-40);
}

.contatti-social {
  border-top: 1px solid var(--neutral-20);
}

.contatti-social-btn {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--neutral-10);
  color: var(--blue-40);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.25s ease;
  text-decoration: none;
  font-size: 0.95rem;
}
.contatti-social-btn:hover {
  background: var(--blue-40);
  color: var(--neutral-0);
  transform: translateY(-2px);
}

.contatti-mappa {
  min-height: 460px;
  overflow: hidden;
  position: relative;
  background: var(--neutral-10);
  box-shadow: var(--shadow-light);
  border: 1px solid var(--neutral-20);
}
.contatti-mappa iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

@media (max-width: 991px) {
  .sez-contatti-classic .contatti-card {
    padding: 24px;
  }
  .contatti-mappa {
    min-height: 360px;
  }
}

/* ============================================================
   SCUOLA — Percorsi Didattici & Strumenti Fallback
   ============================================================ */

.percorsi-fallback {
  padding-bottom: calc(var(--section-py, 4rem) * 0.5);
}

/* Percorso Cards */
.percorso-card {
  background: var(--neutral-0);
  border: 1px solid var(--neutral-20);
  transition:
    transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1),
    box-shadow 0.35s ease,
    border-color 0.35s ease;
}
.percorso-card:hover {
  box-shadow: 0 16px 40px rgba(0, 24, 45, 0.1);
  transform: translateY(-6px);
  border-color: var(--blue-30, var(--blue-40));
}
.percorso-card .percorso-icon {
  transition:
    transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1),
    background-color 0.3s ease;
}
.percorso-card:hover .percorso-icon {
  transform: scale(1.12) rotate(5deg);
}
.percorso-featured.percorso-card:hover {
  box-shadow: 0 16px 40px rgba(0, 24, 45, 0.2);
}
.percorso-featured {
  background: var(--blue-40);
  border-color: var(--blue-40);
  color: var(--neutral-0);
}
.percorso-featured .small-title {
  opacity: 0.75;
}
.percorso-featured p,
.percorso-featured .percorso-details {
  color: rgba(255, 255, 255, 0.88);
}
.percorso-icon {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--blue-10);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  color: var(--blue-40);
}
.percorso-featured .percorso-icon {
  background: rgba(255, 255, 255, 0.2);
  color: var(--neutral-0);
}
.percorso-details {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: 0.875rem;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.percorso-details li {
  display: flex;
  align-items: flex-start;
  gap: 2px;
}
.percorso-details .fa-check {
  color: var(--blue-40);
  margin-top: 3px;
  flex-shrink: 0;
}
.percorso-featured .percorso-details .fa-check {
  color: var(--neutral-0);
  opacity: 0.85;
}

/* Strumenti Grid */
.strumenti-title {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  line-height: 1.1;
}
.strumenti-card {
  background: var(--neutral-0);
  border: 1px solid var(--neutral-20);
  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease,
    border-color 0.3s ease;
}
.strumenti-card:hover {
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.1);
  transform: translateY(-4px);
  border-color: var(--blue-20, var(--blue-30));
}
.strumenti-card:hover .strumenti-cat {
  color: var(--blue-20, var(--blue-50));
}
.strumenti-cat {
  font-family: var(--fontFamilyTitle);
  font-size: 0.9rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--blue-40);
  margin: 0 0 0.5rem;
  display: flex;
  align-items: center;
  transition: color 0.3s ease;
}
.strumenti-cat i {
  font-size: 0.85rem;
  transition: transform 0.3s ease;
}
.strumenti-card:hover .strumenti-cat i {
  transform: scale(1.15);
}
.strumenti-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.strumenti-list li {
  font-size: 0.8rem;
  color: var(--neutral-60);
  padding-left: 0.85rem;
  position: relative;
}
.strumenti-list li::before {
  content: "·";
  position: absolute;
  left: 0;
  color: var(--blue-30, var(--blue-40));
  font-size: 1.1rem;
  line-height: 1;
}

@media (max-width: 575px) {
  .percorso-card {
    padding: 1.5rem !important;
  }
  .strumenti-card {
    padding: 1rem !important;
  }
}

/* =========================================================
   MIGLIORIE GLOBALI — UI & Animazioni
   ========================================================= */

/* ── Page transition fade-in ─────────────────────────────── */
main.inner-page,
main.scuola-page,
main.formazioni-page,
main.associazione-page,
main.contatti-page,
main.stampa-page,
main.novita-page,
main.single-post,
main.error-404-page,
main.search-results-page {
  animation: pageEnter 0.6s ease-out both;
}
@keyframes pageEnter {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ── Scroll-to-top button ────────────────────────────────── */
.scroll-to-top {
  position: fixed;
  bottom: 32px;
  right: 32px;
  z-index: 1020;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: none;
  background: var(--blue-60);
  color: #fff;
  font-size: 1.1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px) scale(0.9);
  transition:
    opacity 0.35s ease,
    transform 0.35s ease,
    visibility 0.35s ease,
    background-color 0.2s ease,
    box-shadow 0.2s ease;
  box-shadow: 0 0 24px rgba(170, 215, 255, 0.2);
}
.scroll-to-top.visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
}
.scroll-to-top:hover {
  background: var(--blue-20);
  transform: translateY(-3px) scale(1.05);
  box-shadow: 0 8px 24px rgba(0, 152, 122, 0.35);
}
.scroll-to-top:active {
  transform: translateY(0) scale(0.97);
}

/* ── Breadcrumb ──────────────────────────────────────────── */

.breadcrumb-list {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.breadcrumb-list li {
  font-size: calc(100dvw * 13 / var(--viewSize));
  font-weight: 500;
  color: var(--neutral-50);
  letter-spacing: 0.03em;
}
.breadcrumb-list li a {
  color: var(--neutral-10);
  text-decoration: none;
  transition: color 0.2s ease;
}
.breadcrumb-list li a:hover {
  color: var(--blue-20);
}
/* Home breadcrumb: icona a bordi + area cliccabile ampia (dimensione icona invariata) */
.breadcrumb-home {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 10px;
  margin: -8px 0 -8px -6px;
  line-height: 1;
  border-radius: 8px;
}
.breadcrumb-home .breadcrumb-home-icon {
  display: block;
}
.breadcrumb-list li.active {
  color: var(--light-blue-20);
  font-weight: 600;
}
.breadcrumb-separator {
  color: var(--neutral-40);
  font-size: 0.7em;
}

.breadcrumb-dark {
  .breadcrumb-list li,
  .breadcrumb-list li a {
    color: var(--blue-80);
  }
  .breadcrumb-separator {
    color: var(--neutral-80);
    font-size: 0.7em;
  }
  .breadcrumb-list li.active > span {
    color: var(--blue-20);
    font-weight: 500;
  }
}

/* ── Enhanced card hover effects ─────────────────────────── */
.card-articolo,
.card-stampa,
.card-archive,
.card-info-bordered,
.search-result-item {
  transition:
    transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1),
    box-shadow 0.35s ease;
}
.card-articolo:hover,
.card-stampa:hover,
.card-archive:hover {
  transform: translateY(-6px);
  box-shadow: 0 0px 8px rgba(0, 24, 45, 0.30);
}
.card-info-bordered:hover {
  transform: translateY(-4px);
  box-shadow: 0 0px 8px rgba(0, 24, 45, 0.30);
}

/* ── Image hover zoom effect ─────────────────────────────── */
.card-articolo-img,
.card-stampa-cover-wrap,
.card-archive .card-img-placeholder,
.formazione-row__img-wrap {
  overflow: hidden;
}
.card-articolo-img img,
.card-stampa-cover,
.card-archive .card-img-placeholder img,
.formazione-row__img-wrap img {
  transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.card-articolo:hover .card-articolo-img img,
.card-stampa:hover .card-stampa-cover,
.card-archive:hover .card-img-placeholder img,
.formazione-row:hover .formazione-row__img-wrap img {
  transform: scale(1.06);
}

/* ── Section reveal animation (replaces some AOS) ────────── */
.reveal-up {
  opacity: 0;
  transform: translateY(40px);
  transition:
    opacity 0.7s ease-out,
    transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal-up.revealed {
  opacity: 1;
  transform: translateY(0);
}

/* ── Smooth link underline animation ─────────────────────── */
.section-cta-link,
.file-download {
  position: relative;
  overflow: hidden;
}
.section-cta-link::after,
.file-download::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1.5px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.3s cubic-bezier(0.65, 0, 0.35, 1);
}
.section-cta-link:hover::after,
.file-download:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}

/* ── Pill filter enhanced ────────────────────────────────── */
.pill-filter {
  transition:
    background 0.25s ease,
    color 0.25s ease,
    transform 0.2s ease,
    box-shadow 0.2s ease;
}
.pill-filter:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 24, 45, 0.1);
}
.pill-filter.active {
  transform: translateY(0);
}

/* ── Button hover pulse ──────────────────────────────────── */
.btn-primary {
  transition:
    background-color 0.25s ease,
    transform 0.2s ease,
    box-shadow 0.25s ease;
}
.btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(0, 71, 136, 0.3);
}
.btn-primary:active {
  transform: translateY(0);
}
.btn-outline-primary {
  transition:
    all 0.25s ease,
    transform 0.2s ease;
}
.btn-outline-primary:hover {
  transform: translateY(-2px);
}

/* ── Counters section (animated numbers) ─────────────────── */
.counters-section {
  background: var(--blue-80);
  position: relative;
  overflow: hidden;
}
.counters-section::before {
  content: "";
  position: absolute;
  top: -50%;
  right: -20%;
  width: 60%;
  height: 200%;
  background: radial-gradient(
    ellipse,
    rgba(0, 152, 122, 0.08) 0%,
    transparent 70%
  );
  pointer-events: none;
}
.counter-item {
  text-align: center;
  padding: calc(100dvw * 32 / var(--viewSize));
}
.counter-number {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(2.5rem, calc(100dvw * 64 / var(--viewSize)), 5rem);
  font-weight: 800;
  color: var(--neutral-0);
  line-height: 1;
  display: block;
}
.counter-suffix {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(1.5rem, calc(100dvw * 36 / var(--viewSize)), 3rem);
  font-weight: 800;
  color: var(--blue-20);
}
.counter-label {
  display: block;
  margin-top: 8px;
  font-size: calc(100dvw * 14 / var(--viewSize));
  font-weight: 500;
  color: var(--neutral-30);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* ── Contact form section ────────────────────────────────── */
.contatti-form-card {
  background: var(--neutral-10);
  border-radius: calc(100dvw * 16 / var(--viewSize));
  padding: calc(100dvw * 40 / var(--viewSize));
}
.contatti-form-card .form-control {
  border: 1.5px solid var(--neutral-30);
  border-radius: 8px;
  padding: 12px 16px;
  font-size: 0.95rem;
  transition:
    border-color 0.25s ease,
    box-shadow 0.25s ease;
  background: var(--neutral-0);
}
.contatti-form-card .form-control:focus {
  border-color: var(--blue-20);
  box-shadow: 0 0 0 3px rgba(0, 152, 122, 0.12);
  outline: none;
}
.contatti-form-card textarea.form-control {
  min-height: 140px;
  resize: vertical;
}
.contatti-form-card label {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--neutral-70);
  margin-bottom: 4px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* ── Unisciti a Noi — page components ────────────────────── */
.unisciti-hero {
  background: linear-gradient(135deg, var(--blue-80) 0%, var(--blue-60) 100%);
  position: relative;
  overflow: hidden;
  min-height: 400px;
  display: flex;
  align-items: center;
}
.unisciti-hero::before {
  content: "";
  position: absolute;
  top: -30%;
  right: -15%;
  width: 50%;
  height: 160%;
  background: radial-gradient(
    ellipse,
    rgba(0, 152, 122, 0.12) 0%,
    transparent 65%
  );
  pointer-events: none;
  animation: heroGlow 6s ease-in-out infinite alternate;
}
@keyframes heroGlow {
  from {
    transform: translate(0, 0) scale(1);
    opacity: 0.6;
  }
  to {
    transform: translate(-5%, 5%) scale(1.1);
    opacity: 1;
  }
}
.unisciti-hero-content {
  position: relative;
  z-index: 2;
  color: var(--neutral-0);
}
.reason-card {
  background: var(--neutral-0);
  border-radius: calc(100dvw * 16 / var(--viewSize));
  padding: calc(100dvw * 32 / var(--viewSize));
  text-align: center;
  transition:
    transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1),
    box-shadow 0.35s ease;
  border: 1px solid var(--neutral-20);
}
.reason-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 20px 40px rgba(0, 24, 45, 0.1);
  border-color: var(--blue-20);
}
.reason-icon {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: linear-gradient(
    135deg,
    rgba(0, 152, 122, 0.1) 0%,
    rgba(0, 71, 136, 0.1) 100%
  );
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 16px;
  font-size: 1.5rem;
  color: var(--blue-20);
  transition:
    transform 0.3s ease,
    background 0.3s ease;
}
.reason-card:hover .reason-icon {
  transform: scale(1.1) rotate(5deg);
  background: linear-gradient(
    135deg,
    rgba(0, 152, 122, 0.2) 0%,
    rgba(0, 71, 136, 0.2) 100%
  );
}
.reason-card h4 {
  font-size: calc(100dvw * 18 / var(--viewSize));
  font-weight: 700;
  color: var(--blue-80);
  margin-bottom: 8px;
}
.reason-card p {
  font-size: 0.9rem;
  color: var(--neutral-60);
  line-height: 1.6;
  margin: 0;
}

/* ── Percorso iscrizione cards ───────────────────────────── */
.percorso-iscr-card {
  background: var(--neutral-0);
  border: 2px solid var(--neutral-20);
  border-radius: calc(100dvw * 20 / var(--viewSize));
  padding: calc(100dvw * 36 / var(--viewSize));
  text-align: center;
  transition: all 0.35s ease;
  position: relative;
  overflow: hidden;
}
.percorso-iscr-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--blue-20), var(--blue-40));
  transform: scaleX(0);
  transition: transform 0.35s ease;
}
.percorso-iscr-card:hover {
  border-color: var(--blue-20);
  transform: translateY(-6px);
  box-shadow: 0 20px 40px rgba(0, 24, 45, 0.08);
}
.percorso-iscr-card:hover::before {
  transform: scaleX(1);
}
.percorso-iscr-icon {
  font-size: 2.5rem;
  color: var(--blue-40);
  margin-bottom: 16px;
  display: block;
  transition: transform 0.3s ease;
}
.percorso-iscr-card:hover .percorso-iscr-icon {
  transform: scale(1.15);
}

/* ── FAQ Accordion ───────────────────────────────────────── */
.faq-item {
  border: 1px solid var(--neutral-20);
  border-radius: 12px;
  overflow: hidden;
  transition:
    border-color 0.25s ease,
    box-shadow 0.25s ease;
}
.faq-item + .faq-item {
  margin-top: 12px;
}
.faq-item.open {
  border-color: var(--blue-20);
  box-shadow: 0 4px 16px rgba(0, 152, 122, 0.08);
}
.faq-question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  padding: 18px 20px;
  background: transparent;
  border: none;
  cursor: pointer;
  font-size: 1rem;
  font-weight: 600;
  color: var(--neutral-80);
  text-align: left;
  transition: color 0.2s ease;
}
.faq-question:hover {
  color: var(--blue-20);
}
.faq-question .faq-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--neutral-10);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  color: var(--neutral-60);
  transition:
    transform 0.35s ease,
    background 0.25s ease,
    color 0.25s ease;
}
.faq-item.open .faq-question .faq-icon {
  transform: rotate(180deg);
  background: var(--blue-20);
  color: #fff;
}
.faq-answer {
  max-height: 0;
  overflow: hidden;
  transition:
    max-height 0.4s cubic-bezier(0.16, 1, 0.3, 1),
    padding 0.3s ease;
  padding: 0 20px;
}
.faq-item.open .faq-answer {
  max-height: 300px;
  padding: 0 20px 20px;
}
.faq-answer p {
  font-size: 0.95rem;
  color: var(--neutral-60);
  line-height: 1.7;
  margin: 0;
}

/* ── Testimonial card ────────────────────────────────────── */
.testimonial-card {
  background: var(--neutral-10);
  border-radius: calc(100dvw * 16 / var(--viewSize));
  padding: calc(100dvw * 32 / var(--viewSize));
  position: relative;
}
.testimonial-card::before {
  content: "\201C";
  position: absolute;
  top: 16px;
  left: 24px;
  font-family: var(--fontFamilyTitle);
  font-size: 4rem;
  color: var(--blue-20);
  opacity: 0.2;
  line-height: 1;
}
.testimonial-text {
  font-size: 1.05rem;
  font-style: italic;
  color: var(--neutral-70);
  line-height: 1.7;
  margin-bottom: 16px;
}
.testimonial-author {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--neutral-80);
}
.testimonial-role {
  font-size: 0.8rem;
  color: var(--neutral-50);
}

/* ── 404 page enhanced ───────────────────────────────────── */
.error-404-page .error-404-body {
  min-height: 70vh;
  display: flex;
  align-items: center;
}
.error-404-number {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(5rem, 15vw, 10rem);
  font-weight: 700;
  color: var(--blue-40);
  line-height: 1;
  display: block;
  opacity: 0.15;
  animation: float404 3s ease-in-out infinite;
}
@keyframes float404 {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-12px);
  }
}
.error-404-musical {
  font-size: clamp(3rem, 8vw, 6rem);
  opacity: 0.08;
  color: var(--blue-40);
  letter-spacing: 12px;
  user-select: none;
  animation: notesScroll 15s linear infinite;
}
@keyframes notesScroll {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-50%);
  }
}

/* ── Search results enhanced ─────────────────────────────── */
.search-result-item {
  border-bottom: 1px solid var(--neutral-20);
  padding-bottom: 24px;
  margin-bottom: 24px;
}
.search-result-item:hover {
  transform: translateX(4px);
  box-shadow: none;
}
.search-filter-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 24px;
}

/* ── Stampa card 3D flip hover ───────────────────────────── */
.card-stampa {
  transition:
    transform 0.4s ease,
    box-shadow 0.4s ease;
}
.card-stampa:hover {
  transform: translateY(-6px) rotateY(-3deg);
  box-shadow: 0 0 16px rgb(0, 35, 65, .5);
}

/* ── Event card enhancements ─────────────────────────────── */
.evento-countdown {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--blue-20);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.evento-past {
  position: relative;
}
.evento-past::after {
  content: "Concluso";
  position: absolute;
  top: 12px;
  right: 12px;
  background: rgba(0, 0, 0, 0.6);
  color: #fff;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 4px 10px;
  border-radius: 99px;
  z-index: 3;
}
.evento-past .card-img-placeholder img {
  filter: grayscale(0.5);
  transition: filter 0.3s ease;
}
.evento-past:hover .card-img-placeholder img {
  filter: grayscale(0);
}

/* ── Footer social hover ─────────────────────────────────── */
.main-footer a.text-white {
  transition:
    color 0.2s ease,
    transform 0.2s ease;
  display: inline-block;
}
.main-footer a.text-white:hover {
  color: var(--blue-20) !important;
  transform: translateY(-2px);
}
.main-footer .link-foot {
  position: relative;
}
.main-footer .link-foot::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--blue-20);
  transition: width 0.3s ease;
}
.main-footer .link-foot:hover::after {
  width: 100%;
}

/* ── Smooth focus styles ─────────────────────────────────── */
a:focus-visible,
button:focus-visible,
.form-control:focus-visible {
  outline: 2px solid var(--blue-50);
  outline-offset: 2px;
}

/* ── Page transition overlay ────────────────────────────────── */
.page-transition-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: var(--blue-80);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease;
}
.page-transition-overlay.active {
  opacity: 1;
  pointer-events: all;
}

/* ── Share section (single post) ───────────────────────────── */
.share-label {
  font-size: 0.85rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--neutral-60);
}
.share-btn {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 1.5px solid var(--neutral-25, var(--neutral-30));
  background: transparent;
  color: var(--neutral-60);
  font-size: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.25s ease;
}
.share-btn:hover {
  border-color: var(--blue-20);
  color: var(--blue-20);
  transform: translateY(-3px);
  box-shadow: 0 4px 12px rgba(0, 152, 122, 0.15);
}
.share-btn.copied {
  border-color: var(--blue-20);
  background: var(--blue-20);
  color: #fff;
}

/* ── Newsletter CTA ────────────────────────────────────────── */
.newsletter-cta-card {
  background: linear-gradient(135deg, var(--blue-80) 0%, var(--blue-60) 100%);
  border-radius: calc(100dvw * 20 / var(--viewSize));
  padding: calc(100dvw * 48 / var(--viewSize));
  display: flex;
  align-items: center;
  gap: calc(100dvw * 48 / var(--viewSize));
  color: var(--neutral-0);
  position: relative;
  overflow: hidden;
}
.newsletter-cta-card::before {
  content: "";
  position: absolute;
  top: -50%;
  right: -10%;
  width: 40%;
  height: 200%;
  background: radial-gradient(
    ellipse,
    rgba(0, 152, 122, 0.15) 0%,
    transparent 70%
  );
  pointer-events: none;
}
.newsletter-cta-content {
  flex: 1;
  position: relative;
  z-index: 1;
}
.newsletter-cta-content .small-title {
  color: var(--blue-20);
}
.newsletter-cta-content h3 {
  color: var(--neutral-0);
}
.newsletter-cta-form {
  flex: 1;
  position: relative;
  z-index: 1;
}
.newsletter-cta-form .form-control {
  background: rgba(255, 255, 255, 0.12);
  border: 1.5px solid rgba(255, 255, 255, 0.2);
  color: var(--neutral-0);
  border-radius: 8px;
  padding: 12px 16px;
}
.newsletter-cta-form .form-control::placeholder {
  color: rgba(255, 255, 255, 0.5);
}
.newsletter-cta-form .form-control:focus {
  border-color: var(--blue-20);
  box-shadow: 0 0 0 3px rgba(0, 152, 122, 0.2);
  outline: none;
  background: rgba(255, 255, 255, 0.18);
}
.newsletter-cta-form .btn-primary {
  background: var(--blue-20);
  border-color: var(--blue-20);
}
.newsletter-cta-form .btn-primary:hover {
  background: #00b38f;
  border-color: #00b38f;
}

/* ── Musical notes floating (404) ──────────────────────────── */
.musical-notes-404 {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}
.note-float {
  position: absolute;
  bottom: -16px;
  left: var(--x, 50%);
  font-size: clamp(2rem, 6vw, 5rem);
  color: var(--blue-40);
  opacity: 0;
  animation: noteRise 8s ease-in-out infinite;
  animation-delay: var(--delay, 0s);
}
@keyframes noteRise {
  0% {
    opacity: 0;
    transform: translateY(0) rotate(0deg);
  }
  15% {
    opacity: 0.44;
  }
  50% {
    opacity: 0.28;
    transform: translateY(clamp(-700px, -80dvh, -350px)) rotate(25deg);
  }
  85% {
    opacity: 0.16;
  }
  100% {
    opacity: 0;
    transform: translateY(clamp(-1200px, -110dvh, -1600px)) rotate(45deg);
  }
}
.error-404-page {
  position: relative;
  overflow: hidden;
}
.error-404-body {
  position: relative;
  z-index: 1;
}

/* ── Contact form floating labels ──────────────────────────── */
.form-floating-group {
  position: relative;
}
.form-floating-group .form-control,
.form-floating-group select.form-control {
  border: 1.5px solid var(--neutral-30);
  border-radius: 12px;
  padding: 16px 16px 8px;
  font-size: 0.95rem;
  transition:
    border-color 0.25s ease,
    box-shadow 0.25s ease;
  background: var(--neutral-0);
  width: 100%;
}
.form-floating-group label {
  position: absolute;
  top: 4px;
  left: 16px;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--neutral-50);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  pointer-events: none;
  transition: all 0.2s ease;
}
.form-floating-group .form-control:focus {
  border-color: var(--blue-40);
  box-shadow: 0 0 0 4px rgba(0, 71, 136, 0.1);
  outline: none;
}
.form-floating-group textarea.form-control {
  min-height: 140px;
  resize: vertical;
}
/*
 * Il testo dell'option lo centra il browser dentro il content box, e non
 * segue il padding asimmetrico che negli input tiene il testo sotto la
 * label: senza appearance:none finisce addosso a "Oggetto *". Azzerare
 * l'aspetto nativo ci restituisce il controllo della scatola e toglie la
 * freccia di sistema, che era l'altra cosa fuori tono.
 */
.form-floating-group select.form-control {
  appearance: none;
  -webkit-appearance: none;
  min-height: 56px;
  padding: 24px 44px 8px 16px;
  line-height: 1.3;
  color: var(--neutral-80);
  cursor: pointer;
  background-color: var(--neutral-0);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23004788' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  background-size: 14px;
}
/* Finché è selezionato il primo option (disabled, value vuoto) il campo
   required è :invalid: lo teniamo grigio come un placeholder, così una
   scelta vera si distingue a colpo d'occhio. */
.form-floating-group select.form-control:invalid {
  color: var(--neutral-60);
}
.form-floating-group .form-control:hover {
  border-color: rgba(0, 71, 136, 0.32);
}
.contact-form .btn-primary {
  padding: 14px 32px;
  font-size: 1rem;
  font-weight: 600;
  border-radius: 10px;
}

/* ── Raggiungerci cards ────────────────────────────────────── */
.raggiungerci-card {
  background: var(--neutral-0);
  border: 1px solid var(--neutral-20);
  border-radius: calc(100dvw * 16 / var(--viewSize));
  padding: calc(100dvw * 32 / var(--viewSize));
  transition:
    transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1),
    box-shadow 0.35s ease,
    border-color 0.25s ease;
}
.raggiungerci-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 16px 40px rgba(0, 24, 45, 0.1);
  border-color: var(--blue-20);
}
.raggiungerci-icon {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: linear-gradient(
    135deg,
    rgba(0, 152, 122, 0.1),
    rgba(0, 71, 136, 0.1)
  );
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  color: var(--blue-20);
  margin: 0 auto 16px;
  transition:
    transform 0.3s ease,
    background 0.3s ease;
}
.raggiungerci-card:hover .raggiungerci-icon {
  transform: scale(1.1) rotate(-5deg);
  background: linear-gradient(
    135deg,
    rgba(0, 152, 122, 0.2),
    rgba(0, 71, 136, 0.2)
  );
}
.raggiungerci-card h4 {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--blue-80);
  margin-bottom: 8px;
}
.raggiungerci-card p {
  font-size: 0.9rem;
  color: var(--neutral-60);
  line-height: 1.6;
  margin: 0;
}

/* ── Breadcrumb nav (updated) ──────────────────────────────── */
.breadcrumb-nav {
  padding: calc(100dvw * 12 / var(--viewSize)) 0;
  max-width: 100%;
}
.breadcrumb-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: calc(100dvw * 12 / var(--viewSize));
  font-weight: 500;
  color: var(--neutral-10);
}
.breadcrumb-item a {
  color: var(--neutral-10);
  text-decoration: none;
  transition: color 0.2s ease;
}
.breadcrumb-item a:hover {
  color: var(--blue-20);
}
.breadcrumb-item.active {
  color: var(--light-blue-40);
  font-weight: 600;
}
.breadcrumb-item.active span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: inline-block;
}
.breadcrumb-sep {
  color: var(--neutral-40);
  font-size: 0.75em;
  margin-left: 2px;
}
/* Breadcrumb on dark hero pages */
.single-cpt .breadcrumb-nav {
  position: absolute;
  top: calc(100dvw * 96 / var(--viewSize));
  left: 0;
  right: 0;
  z-index: 5;
  margin-top: 0;
}

.single-cpt .breadcrumb-item,
.single-cpt .breadcrumb-item a,
.single-cpt .breadcrumb-sep {
  color: var(--neutral-0);
}

.single-cpt .breadcrumb-item a:hover {
  color: var(--neutral-0);
}

.single-cpt .breadcrumb-item.active {
  color: rgba(255, 255, 255, 0.85);
}

/* ── Reading time ──────────────────────────────────────────── */
.post-reading-time {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.85rem;
  color: var(--neutral-50);
}

/* ── Responsive extras ─────────────────────────────────────── */
@media (max-width: 576px) {
  .scroll-to-top {
    bottom: 20px;
    right: 20px;
    width: 42px;
    height: 42px;
    font-size: 1rem;
  }
  .breadcrumb-nav {
    margin-top: calc(100dvw * 80 / var(--viewSize));
  }
  .counter-number {
    font-size: clamp(2rem, 10vw, 3rem);
  }
  .newsletter-cta-card {
    flex-direction: column;
    padding: 32px 24px;
    gap: 24px;
  }
  .share-btn {
    width: 38px;
    height: 38px;
    font-size: 0.9rem;
  }
  .raggiungerci-card {
    padding: 24px;
  }
}
@media (max-width: 991px) {
  .newsletter-cta-card {
    flex-direction: column;
    gap: 24px;
  }
}

/* ── Stampa year heading ───────────────────────────────────── */
.stampa-year-heading {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(1.5rem, 3vw, 2.2rem);
  font-weight: 800;
  color: var(--blue-80);
  margin-bottom: 20px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--neutral-20);
  position: relative;
}
.stampa-year-heading::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 60px;
  height: 2px;
  background: var(--blue-20);
}

/* ── Maestro / Responsabile badge (formazioni) ────────────── */
.sez-maestro-formazione {
  /* spacing handled by classes */
}
.maestro-badge {
  background: var(--neutral-10);
  border: 1px solid var(--neutral-20);
  border-radius: 999px;
  transition:
    border-color 0.25s ease,
    box-shadow 0.25s ease,
    transform 0.25s ease;
}
.maestro-badge:hover {
  border-color: var(--blue-30, var(--blue-40));
  box-shadow: 0 6px 20px rgba(0, 24, 45, 0.08);
  transform: translateY(-2px);
}
.maestro-icon {
  color: var(--blue-40);
  font-size: 1.4rem;
}
.maestro-label {
  font-size: calc(100dvw * 13 / var(--viewSize));
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--blue-40);
}
.maestro-name {
  font-size: calc(100dvw * 17 / var(--viewSize));
  font-weight: 600;
  color: var(--neutral-80);
  transition:
    color 0.2s ease,
    gap 0.2s ease;
  display: inline-flex;
  align-items: center;
}
.maestro-name i {
  font-size: 0.75em;
  opacity: 0;
  transform: translateX(-6px);
  transition:
    opacity 0.25s ease,
    transform 0.25s ease;
}
.maestro-badge:hover .maestro-name {
  color: var(--blue-20, var(--blue-50));
}
.maestro-badge:hover .maestro-name i {
  opacity: 1;
  transform: translateX(0);
}
@media (max-width: 575px) {
  .maestro-badge {
    border-radius: 16px;
    padding: 14px 16px !important;
  }
  .maestro-label {
    font-size: 0.75rem;
  }
  .maestro-name {
    font-size: 1rem;
  }
}

/* ── Single Direttore (redesign) ──────────────────────────── */
.single-direttore-intro .direttore-foto-wrap {
  aspect-ratio: 3 / 4;
  background: var(--neutral-10);
  position: relative;
}
.single-direttore-intro .direttore-foto {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.single-direttore-intro .direttore-foto-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 4rem;
  color: var(--blue-20, var(--neutral-30));
  background: var(--neutral-10);
}
.single-direttore .direttore-nome {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(1.8rem, 4vw, 2.8rem);
  line-height: 1.1;
  color: var(--blue-80);
  font-weight: 700;
}
.single-direttore .direttore-anni-badge {
  font-size: calc(100dvw * 16 / var(--viewSize));
  color: var(--blue-40);
  font-weight: 500;
}
.single-direttore .badge-in-corso {
  display: inline-block;
  background: var(--blue-20, var(--blue-40));
  color: var(--neutral-0);
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 3px 10px;
  border-radius: 999px;
}
.single-direttore .direttore-bio {
  font-size: calc(100dvw * 16 / var(--viewSize));
  line-height: 1.65;
  color: var(--neutral-80);
}
.single-direttore .direttore-bio p + p {
  margin-top: 1rem;
}
@media (max-width: 991px) {
  .single-direttore-intro .direttore-foto-wrap {
    aspect-ratio: 4 / 5;
    max-width: 360px;
    margin-left: auto;
    margin-right: auto;
  }
}
@media (max-width: 575px) {
  .single-direttore-intro .direttore-foto-wrap {
    aspect-ratio: 1 / 1;
    max-width: 280px;
  }
  .single-direttore .direttore-anni-badge {
    font-size: 0.95rem;
  }
}

/* ── Unisciti page ─────────────────────────────────────────── */
.unisciti-page .percorso-iscr-card h3 {
  font-family: var(--fontFamilyTitle);
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--blue-80);
  margin-bottom: 8px;
}
.unisciti-page .btn-outline-light {
  border-color: rgba(255, 255, 255, 0.4);
  color: var(--neutral-0);
}
.unisciti-page .btn-outline-light:hover {
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.7);
  color: var(--neutral-0);
}

/* ==========================================================
   RESPONSIVE AUDIT — TABLET / MOBILE FIXES
   ========================================================== */

/* Tablet (≤ 991px) */
@media (max-width: 991px) {
  .archive-page-header h1.archive-title {
    font-size: clamp(2.2rem, 6vw, 3rem);
  }
  .timeline-card {
    max-width: 280px;
  }
  .counter-number {
    font-size: clamp(2rem, 8vw, 3rem) !important;
  }
  .archive-grid-3 {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  .single-direttore-intro .row {
    --bs-gutter-y: 24px;
  }
}

/* Mobile (≤ 767px) */
@media (max-width: 767px) {
  .archive-grid-3 {
    grid-template-columns: 1fr !important;
  }
  .py-section {
    padding-top: 3rem;
    padding-bottom: 3rem;
  }
  .filtri-pills {
    overflow-x: auto;
    flex-wrap: nowrap !important;
    padding-bottom: 8px;
    -webkit-overflow-scrolling: touch;
  }
  .filtri-pills .pill-filter {
    flex-shrink: 0;
  }
  .pagination-wrap {
    flex-wrap: wrap;
  }
  .timeline-card {
    max-width: 240px;
  }
  .stampa-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }
  .componenti-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}

/* Small mobile (≤ 575px) */
@media (max-width: 575px) {
  .archive-page-header h1.archive-title {
    font-size: clamp(2rem, 9vw, 2.6rem);
    line-height: 1.1;
  }
  .small-title {
    font-size: 0.85rem;
  }
  .stampa-grid {
    grid-template-columns: 1fr;
  }
  .componenti-grid {
    grid-template-columns: 1fr !important;
    max-width: 320px;
    margin-left: auto;
    margin-right: auto;
  }
  .counter-item {
    padding: 8px;
  }
  .counter-label {
    font-size: 0.85rem;
  }
  .timeline-card {
    max-width: 220px;
    font-size: 0.9rem;
  }
  .file-download {
    font-size: 0.9rem;
  }
  .cta-btn-main {
    width: 100%;
    justify-content: center !important;
    padding: 14px 20px !important;
  }
  /* Newsletter / contact form */
  .newsletter-cta-card,
  .contact-section {
    padding: 24px !important;
  }
  /* Breadcrumb scroll */
  .breadcrumb-wrap nav {
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
  }
}

/* Touch devices: rimuove hover translateY se non c'è hover reale */
@media (hover: none) {
  .strumenti-card:hover,
  .percorso-card:hover,
  .card-carica:hover,
  .maestro-badge:hover {
    transform: none;
  }
}

/* =========================================================
   SINGLE DOCENTE — dettaglio docente (no hero immagine)
   ========================================================= */

/* Navbar non trasparente sin dall'inizio (come .bg-nav-scroll, indipendente
   dallo scroll perché lo sfondo pagina è bianco). */
body.single-docente .main-nav {
  border-radius: 0 0 calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));
  background: rgba(0, 48, 91, 0.55);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
  border-bottom: 1px solid var(--blue-20);
}

/* Breadcrumb: in flusso (non più absolute sull'hero) e leggibile su bianco.
   padding-top per liberare la navbar fixed. */
.single-docente-breadcrumb {
  padding-top: calc(100dvw * 128 / var(--viewSize));
}
main.single-docente-page .breadcrumb-nav {
  position: static;
  margin: 0;
}
main.single-docente-page .breadcrumb-item,
main.single-docente-page .breadcrumb-item a,
main.single-docente-page .breadcrumb-sep {
  color: var(--blue-80);
}
main.single-docente-page .breadcrumb-item a:hover {
  color: var(--blue-40);
}
main.single-docente-page .breadcrumb-item.active {
  color: var(--blue-20);
}

/* Header docente */
.single-docente-header {
  padding-top: calc(100dvw * 12 / var(--viewSize));
  padding-bottom: calc(100dvw * 16 / var(--viewSize));
}
.single-docente-header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: calc(100dvw * 32 / var(--viewSize));
}

/* Nome docente: titolo blu con gradiente (tecnica background-clip già usata) */
.single-docente-name {
  font-family: var(--fontFamilyTitle);
  font-size: calc(100dvw * 96 / var(--viewSize));
  line-height: 1.05;
  font-weight: 700;
  background: linear-gradient(
    120deg,
    var(--blue-80) 0%,
    var(--blue-40) 55%,
    var(--blue-20) 100%
  );
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  display: inline-block;
}

/* Ruolo (es. "Insegnante di oboe"): blu, poco più grande */
.single-docente-ruolo {
  margin-top: calc(100dvw * 8 / var(--viewSize)) !important;
  font-size: calc(100dvw * 32 / var(--viewSize));
  font-weight: 500;
  letter-spacing: 0.5px;
  color: var(--blue-40);
}

/* Su smartphone 96 unità sfora la riga anche con un nome solo: ridotto. */
@media (max-width: 575.98px) {
  .single-docente-name {
    font-size: calc(100dvw * 48 / var(--viewSize));
    line-height: 1.08;
  }
  .single-docente-ruolo {
    font-size: calc(100dvw * 22 / var(--viewSize));
  }
}

/* Sezione intro: testo centrato tra header e corpo */
.single-docente-intro {
  padding-top: calc(100dvw * 40 / var(--viewSize));
  padding-bottom: calc(100dvw * 24 / var(--viewSize));
}
.single-docente-intro-inner {
  max-width: calc(100dvw * 820 / var(--viewSize));
  margin: 0 auto;
  text-align: center;
}
.single-docente-intro-title {
  color: var(--blue-60);
}
.single-docente-intro-text {
  margin-top: calc(100dvw * 12 / var(--viewSize));
  color: var(--neutral-70);
  line-height: 1.7;
}

/* Avatar circolare del docente — occupa il 45% dello spazio (desktop) */
.single-docente-avatar {
  flex: 0 0 45%;
  width: 45%;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  overflow: hidden;
  border: 3px solid var(--neutral-0);
  box-shadow: 0 10px 30px rgba(0, 24, 45, 0.15);
}
.single-docente-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Card contatti: sticky su desktop + glass blu scuro (come navbar ma più scuro) */
.single-docente-contact {
  background: linear-gradient(30deg, var(--blue-80), var(--blue-20));
  border: 1px solid var(--blue-20);
  color: var(--neutral-0);
  transition:
    transform 0.35s ease,
    box-shadow 0.35s ease;
}
/* Hover: la card si inclina (tilt 3D via transform) */
.single-docente-contact:hover {
  transform: perspective(900px) rotateX(4deg) rotateY(-5deg) translateY(-4px);
  box-shadow: 0 22px 45px rgba(0, 24, 45, 0.28);
}
.single-docente-contact h4,
.single-docente-contact p {
  color: var(--neutral-0);
}
.single-docente-contact .contatti-icon {
  color: var(--light-blue-40);
}
.single-docente-contact a:not(.btn-primary) {
  color: var(--light-blue-20);
}
.single-docente-contact a:not(.btn-primary):hover {
  color: var(--neutral-0);
}
@media (min-width: 992px) {
  .single-docente-contact {
    position: sticky;
    top: calc(100dvw * 120 / var(--viewSize));
  }
}

/* Mobile: immagine 90% centrata sopra, sezione nome/titolo sotto */
@media (max-width: 992px) {
  .single-docente-header-inner {
    flex-direction: column-reverse;
    align-items: stretch;
    gap: calc(100dvw * 24 / var(--viewSize));
  }
  .single-docente-avatar {
    flex: none;
    width: 90%;
    margin: 0 auto;
  }
}

/* =========================================================
   SINGLE CORSO
   ========================================================= */

/* Hero: immagine strumento (cover) + overlay gradiente blu scuro orizzontale.
   ::before va da blu-80 100% (sinistra) a blu-80 0% opacità (destra). */
/* ── Hero corso: copy + card 3D strumento (tilt/zoom/audio) ─────────────── */
.corso-hero {
  position: relative;
  min-height: 92dvh;
  display: flex;
  align-items: center;
  overflow: hidden;
  color: var(--neutral-0);
  background:
    radial-gradient(58% 80% at 82% 18%, rgba(21, 83, 132, 0.55) 0%, rgba(21, 83, 132, 0) 100%),
    radial-gradient(45% 60% at 12% 92%, rgba(21, 83, 132, 0.35) 0%, rgba(21, 83, 132, 0) 100%),
    linear-gradient(160deg, #06253f 0%, var(--blue-80) 55%, #041a2e 100%);
}
/* Nome strumento in outline: marquee orizzontale infinito, in basso.
   Il track contiene il "run" ripetuto 2×: -50% scorre senza stacchi. */
.corso-hero__ghost {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 3%;
  z-index: 0;
  overflow: hidden;
  user-select: none;
  pointer-events: none;
}
.corso-hero__ghost-track {
  display: inline-flex;
  white-space: nowrap;
  will-change: transform;
  animation: corsoGhostScroll 22s linear infinite;
}
.corso-hero__ghost-track span {
  display: inline-block;
  padding-right: 0.28em;
  font-size: clamp(4.5rem, 15vw, 13rem);
  font-weight: 800;
  line-height: 0.9;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: transparent;
  -webkit-text-stroke: 2px rgba(255, 255, 255, 0.2);
  font-family: Verdana, Tahoma, sans-serif
}
@keyframes corsoGhostScroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
.corso-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
  align-items: center;
  gap: clamp(24px, 4vw, 64px);
  padding-top: calc(100dvw * 120 / var(--viewSize));
  padding-bottom: calc(100dvw * 56 / var(--viewSize));
}
.corso-hero__back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: rgba(255, 255, 255, 0.72);
  font-size: 0.85rem;
  text-decoration: none;
  margin-bottom: 22px;
  transition: color 0.2s, gap 0.2s;
}
.corso-hero__back:hover {
  color: #fff;
  gap: 12px;
}
.corso-hero__eyebrow {
  display: block;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--blue-20);
  margin-bottom: 10px;
}
.corso-hero__title {
  font-size: clamp(2.4rem, 5.4vw, 4.2rem);
  font-weight: 800;
  line-height: 1.04;
}
.corso-hero__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 26px 0 0;
  padding: 0;
}
.corso-hero__meta li {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  background: rgba(255, 255, 255, 0.07);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  font-size: 0.85rem;
}
.corso-hero__meta li i {
  opacity: 0.65;
  font-size: 0.75rem;
}
.corso-hero__cta {
  display: inline-block;
  margin-top: 28px;
  padding: 14px 36px;
}
.corso-hero__hint {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-top: 30px;
  margin-left: 18px;
  font-size: 0.78rem;
  color: rgba(255, 255, 255, 0.5);
}
.corso-hero__hint i {
  animation: corsoHintWave 2.4s ease-in-out infinite;
}
@keyframes corsoHintWave {
  0%, 100% { transform: rotate(0deg); }
  40% { transform: rotate(-16deg) translateX(-2px); }
  60% { transform: rotate(10deg) translateX(2px); }
}

/* Stage: prospettiva per il tilt 3D */
.corso-hero__stage {
  perspective: 1100px;
}
.corso-tilt {
  position: relative;
}
/* Card strumento: arrotondata, senza ombra né bordi (richiesta).
   L'ombra compare solo con zoom > 100% (.is-zoomed). */
.corso-tilt__card {
  position: relative;
  /* visible: lo strumento (object-fit:contain) non viene mai tagliato da
     tilt/zoom/pop 3D; lo sfondo resta comunque arrotondato (border-radius). */
  overflow: visible;
  border-radius: 32px;
  background: linear-gradient(150deg, rgba(255, 255, 255, 0.10) 0%, rgba(255, 255, 255, 0.04) 100%);
  height: min(58dvh, 560px);
  padding: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  transform-style: preserve-3d;
  will-change: transform;
  touch-action: none; /* pinch gestita da JS (initCorsoHero) */
  cursor: grab;
  transition: box-shadow 0.3s;
}
.corso-tilt__card.is-resetting {
  transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.3s;
}
.corso-tilt__card.is-zoomed {
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
}
.corso-tilt__img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  transform: scale(1);
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: transform;
  user-select: none;
  -webkit-user-drag: none;
  /* Leggero rilievo rispetto alla card: accentua l'effetto 3D del tilt */
  translate: 0 0 46px;
}
.corso-tilt__placeholder {
  font-size: 6rem;
  color: rgba(255, 255, 255, 0.25);
}

/* Note musicali che escono dalla card quando parte l'audio */
.corso-tilt__notes {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 3;
}
.corso-note {
  position: absolute;
  top: 50%;
  left: 50%;
  font-size: 1.3rem;
  color: rgba(255, 255, 255, 0.85);
  text-shadow: 0 2px 10px rgba(0, 24, 45, 0.5);
  animation: corsoNoteFly 1.7s ease-out forwards;
}
@keyframes corsoNoteFly {
  0% {
    transform: translate(-50%, -50%) scale(0.5) rotate(0deg);
    opacity: 0;
  }
  12% {
    opacity: 1;
  }
  100% {
    transform: translate(calc(-50% + var(--nx)), calc(-50% + var(--ny))) scale(1.15) rotate(var(--nr));
    opacity: 0;
  }
}

/* Controlli zoom: pill in basso a destra della card */
.corso-tilt__zoom {
  position: absolute;
  right: 14px;
  bottom: 14px;
  z-index: 4;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px;
  border-radius: 999px;
  background: rgba(4, 26, 46, 0.72);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.corso-tilt__zoom button {
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #fff;
  font-size: 0.8rem;
  cursor: pointer;
  transition: background 0.2s;
}
.corso-tilt__zoom button:hover {
  background: rgba(255, 255, 255, 0.14);
}
.corso-tilt__zoom button:disabled {
  opacity: 0.35;
  cursor: default;
}
.corso-tilt__zoom span {
  min-width: 46px;
  text-align: center;
  font-size: 0.75rem;
  font-weight: 700;
  color: #fff;
  font-variant-numeric: tabular-nums;
}

/* Mobile: colonna singola, card sotto il testo */
@media (max-width: 991.98px) {
  .corso-hero {
    min-height: auto;
  }
  .corso-hero__inner {
    grid-template-columns: 1fr;
    padding-top: calc(100dvw * 128 / var(--viewSize));
  }
  .corso-hero__ghost-track span {
    font-size: clamp(3rem, 20vw, 6rem);
  }
  .corso-tilt__card {
    height: min(46dvh, 420px);
  }
  .corso-hero__hint {
    display: none;
  }
}

/* Tasto pausa audio: compare in basso a sx quando l'audio suona.
   Bordo bianco circolare, icona pausa centrata. */
.corso-tilt__pause {
  position: absolute;
  left: 14px;
  bottom: 14px;
  z-index: 4;
  width: 44px;
  height: 44px;
  display: none;
  align-items: center;
  justify-content: center;
  border: 2px solid #fff;
  border-radius: 50%;
  background: rgba(4, 26, 46, 0.55);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  color: #fff;
  font-size: 0.85rem;
  cursor: pointer;
  transition: background 0.2s, transform 0.2s;
}
.corso-tilt__pause.is-visible {
  display: flex;
}
.corso-tilt__pause:hover {
  background: rgba(4, 26, 46, 0.82);
  transform: scale(1.06);
}

/* Schede laterali sticky su desktop (entrambe le card come blocco unico) */
@media (min-width: 992px) {
  .single-corso-aside {
    position: sticky;
    top: calc(100dvw * 120 / var(--viewSize));
  }
}

/* No scroll orizzontale su mobile/tablet: i margini negativi di .row.g-5
   (-24px) sforano il padding px-3 (16px) del container. overflow-x:clip
   taglia il bleed senza creare scroll container (sticky è solo ≥992px). */
@media (max-width: 991.98px) {
  main.single-corso-page {
    overflow-x: clip;
  }
}

/* Card "Dettagli del corso": gradiente blu scuro→medio, testo bianco,
   meno padding verticale, scritte più grandi */
.single-corso-page .single-info-card {
  background: linear-gradient(160deg, var(--blue-80), var(--blue-40));
  color: var(--neutral-0);
  padding-top: calc(100dvw * 12 / var(--viewSize));
  padding-bottom: calc(100dvw * 20 / var(--viewSize));
  transition:
    transform 0.35s ease,
    box-shadow 0.35s ease;
}
/* Hover: la card si inclina (come card contatti docente) */
.single-corso-page .single-info-card:hover {
  transform: perspective(900px) rotateX(4deg) rotateY(-5deg) translateY(-4px);
  box-shadow: 0 22px 45px rgba(0, 24, 45, 0.28);
}
.single-corso-page .single-info-title {
  margin-top: 0;
  color: var(--neutral-0);
  font-size: calc(100dvw * 28 / var(--viewSize));
}
.single-corso-page .single-info-list {
  border-top-color: rgba(255, 255, 255, 0.25);
}
.single-corso-page .single-info-item {
  border-bottom-color: rgba(255, 255, 255, 0.18);
}
.single-corso-page .info-label {
  color: rgba(255, 255, 255, 0.85);
  font-size: calc(100dvw * 16 / var(--viewSize));
}
.single-corso-page .info-value {
  color: var(--neutral-0);
  font-size: calc(100dvw * 17 / var(--viewSize));
}

/* Card "Insegnanti": tutte le scritte più grandi (proporzionate, min 14px) */
.single-corso-page .single-docenti-title {
  font-size: calc(100dvw * 22 / var(--viewSize));
}
.single-corso-page .docente-mini strong {
  font-size: calc(100dvw * 17 / var(--viewSize));
}
.single-corso-page .docente-mini small {
  font-size: max(14px, calc(100dvw * 15 / var(--viewSize)));
}
.single-corso-page .docente-mini-img {
  width: calc(100dvw * 56 / var(--viewSize));
  height: calc(100dvw * 56 / var(--viewSize));
}

/* Navbar non trasparente sin dall'inizio (come pagina docente) */
body.single-corso .main-nav {
  border-radius: 0 0 calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));
  background: rgba(0, 48, 91, 0.55);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
  border-bottom: 1px solid var(--blue-20);
}

/* Breadcrumb fuori dalla hero: in flusso, testo blu scuro su bianco */
main.single-corso-page .breadcrumb-nav {
  position: static;
  margin: 0;
  padding-top: calc(100dvw * 24 / var(--viewSize));
}
main.single-corso-page .breadcrumb-item,
main.single-corso-page .breadcrumb-item a,
main.single-corso-page .breadcrumb-sep {
  color: var(--blue-80);
}
main.single-corso-page .breadcrumb-item a:hover {
  color: var(--blue-40);
}
main.single-corso-page .breadcrumb-item.active {
  color: var(--blue-20);
}

/* =========================================================
   STATO :visited — niente colore "già visitato" (viola) nel sito
   :where() mantiene specificità bassa: non tocca i link con colore proprio,
   copre solo quelli che userebbero il default del browser.

   Nota: nelle regole :visited il browser accetta solo colori assoluti. Un
   `color: inherit` (c'era in style.css) viene scartato e si ricade sul viola
   dello user agent — è così che i pulsanti si coloravano dopo la visita.
   Qui sotto solo valori espliciti.
   ========================================================= */
a:where(:visited) {
  color: var(--blue-40);
}
.btn-primary:visited,
.btn-primary:visited span {
  color: var(--neutral-5);
}
/* Pulsanti con testo bianco su fondo pieno/trasparente: il colore non deve
   cambiare una volta visitata la pagina di destinazione. */
.formazione-panel__btn:visited,
.formazione-panel__btn:visited span,
.btn-trasparent:visited,
.btn-trasparent:visited span,
.cta-btn-main:visited,
.cta-btn-main:visited span {
  color: var(--neutral-0);
}

/* =========================================================
   ARCHIVI Corsi / Docenti — navbar piena + breadcrumb su bianco
   ========================================================= */

/* Navbar non trasparente sin dall'inizio */
body.post-type-archive-corso .main-nav,
body.post-type-archive-docente .main-nav,
body.post-type-archive-sostenitore .main-nav,
body.post-type-archive-direttore .main-nav,
body.post-type-archive-evento .main-nav,
body.post-type-archive-edizione_stampa .main-nav,
body.single-edizione_stampa .main-nav,
body.category .main-nav,
body.tag .main-nav,
body.author .main-nav,
body.error404 .main-nav,
body.search .main-nav,
body.date .main-nav {
  border-radius: 0 0 calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));
  background: rgba(0, 48, 91, 0.55);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
  border-bottom: 1px solid var(--blue-20);
}

/* Breadcrumb: sotto la navbar, testo scuro leggibile su bianco.
   padding-top per liberare la navbar fixed (header ora parte più in alto). */
.archive-breadcrumb {
  padding-top: calc(100dvw * 128 / var(--viewSize));
  padding-bottom: calc(100dvw * 8 / var(--viewSize));
}
.archive-breadcrumb .breadcrumb-item,
.archive-breadcrumb .breadcrumb-item a,
.archive-breadcrumb .breadcrumb-sep {
  color: var(--blue-80);
}
.archive-breadcrumb .breadcrumb-item a:hover {
  color: var(--blue-40);
}
.archive-breadcrumb .breadcrumb-item.active {
  color: var(--blue-20);
}
/* Header archivio: niente doppio spazio, la clearance è nel breadcrumb */
body.post-type-archive-corso .archive-page-header,
body.post-type-archive-docente .archive-page-header,
body.post-type-archive-sostenitore .archive-page-header,
body.post-type-archive-direttore .archive-page-header,
body.post-type-archive-evento .archive-page-header,
body.post-type-archive-edizione_stampa .archive-page-header,
body.post-type-archive-faq .archive-page-header,
body.category .archive-page-header,
body.tag .archive-page-header,
body.author .archive-page-header,
body.error404 .main-nav,
body.search .main-nav,
body.date .archive-page-header {
  padding-top: calc(100dvw * 16 / var(--viewSize));
}

/* =========================================================
   PAGINA LA SEDE
   ========================================================= */

/* Hero: immagine cover + testo centrato + gradiente verticale
   (scuro 0→10%, trasparente 10→60%, scuro 60→100%). */
.sede-hero {
  position: relative;
  min-height: 80dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: var(--blue-80);
}
.sede-hero-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
.sede-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(
    180deg,
    var(--blue-80) 0%,
    rgba(0, 24, 45, 0) 10%,
    rgba(0, 24, 45, 0) 60%,
    var(--blue-80) 100%
  );
}
.sede-hero-content {
  position: relative;
  z-index: 2;
  max-width: calc(100dvw * 900 / var(--viewSize));
  /* Ombra diffusa: il testo resta leggibile anche sulle zone chiare della foto. */
  text-shadow: 0 0 8px rgba(0, 0, 0, 0.3);
}
.sede-hero-title {
  font-family: var(--fontFamilyTitle);
  /* Il titolo sta su una riga sola: il cap in vw è la larghezza massima
     sostenibile dalla stringa più lunga prima di sforare la viewport. */
  font-size: min(calc(100dvw * 88 / var(--viewSize)), 7.4vw);
  line-height: 1.02;
  font-weight: 700;
  white-space: nowrap;
}
/* Occhiello sulla stessa riga del titolo, attaccato: stesso schema dei titoli
   di sezione (<span class="small-title">Gli</span>Spazi della sede). */
.sede-hero-title .sede-hero-occhiello {
  display: inline;
  font-size: 0.62em;
  font-weight: 400;
  letter-spacing: 0;
}
.sede-hero-breadcrumb {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 3;
  padding-bottom: calc(100dvw * 20 / var(--viewSize));
}

/* Carosello storia: immagini cliccabili → lightbox */
.sede-storia-carousel .gallery-img-full {
  height: calc(100dvw * 320 / var(--viewSize));
  object-fit: cover;
  border-radius: calc(100dvw * 12 / var(--viewSize));
  cursor: zoom-in;
}

/* Lightbox immagini */
.sede-lightbox {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 4vmin;
  background: rgba(0, 24, 45, 0.9);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.sede-lightbox.is-open {
  display: flex;
}
.sede-lightbox-full {
  max-width: 92vw;
  max-height: 88vh;
  border-radius: 8px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
}
.sede-lightbox-close {
  position: absolute;
  top: 4vmin;
  right: 4vmin;
  width: 48px;
  height: 48px;
  border: none;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.2s ease;
}
.sede-lightbox-close:hover {
  background: rgba(255, 255, 255, 0.25);
}

@media (max-width: 992px) {
  .sede-hero {
    min-height: 70dvh;
  }
  .sede-storia-carousel .gallery-img-full {
    height: calc(100dvw * 260 / var(--viewSize));
  }
}

/* Stanze della sede: salone full 3/1 + griglia 16/9 a 2 colonne, gap 16px */
.sede-stanze {
  display: flex;
  flex-direction: column;
  gap: 16px;
  overflow-x: clip;
}
.sede-stanze-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}
.sede-card {
  position: relative;
  display: block;
  min-width: 0;
  overflow: hidden;
  border-radius: calc(100dvw * 16 / var(--viewSize));
  text-decoration: none;
  background: var(--blue-80);
}
.sede-card-wide {
  width: 100%;
  aspect-ratio: 3 / 1;
}
.sede-stanze-grid .sede-card {
  aspect-ratio: 16 / 9;
}
.sede-card-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease;
}
.sede-card:hover .sede-card-img {
  transform: scale(1.05);
}
.sede-card-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(
    0deg,
    rgba(0, 24, 45, 0.85) 0%,
    rgba(0, 24, 45, 0.15) 55%,
    rgba(0, 24, 45, 0) 100%
  );
}
.sede-card-body {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  padding: calc(100dvw * 24 / var(--viewSize));
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.sede-card-label {
  color: var(--light-blue-40);
  font-size: calc(100dvw * 13 / var(--viewSize));
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.sede-card-title {
  color: var(--neutral-0);
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  line-height: 1.05;
  font-size: calc(100dvw * 30 / var(--viewSize));
}
.sede-card-wide .sede-card-title {
  font-size: calc(100dvw * 44 / var(--viewSize));
}
.sede-card-cta {
  color: var(--light-blue-20);
  font-size: calc(100dvw * 15 / var(--viewSize));
  transition: color 0.2s ease;
}
.sede-card:hover .sede-card-cta {
  color: var(--neutral-0);
}
@media (max-width: 768px) {
  .sede-card-wide {
    aspect-ratio: 16 / 9;
  }
  .sede-stanze-grid {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   TEMPLATE CARICHE AMMINISTRATIVE — navbar piena + breadcrumb su bianco
   ========================================================= */

/* Navbar non trasparente sin dall'inizio (come altre pagine) */
body.page-template-default .main-nav,
body.page-template-page-cariche .main-nav,
body.page-template-page-bilancio .main-nav,
body.page-template-page-convenzione .main-nav,
body.page-template-page-modulistica .main-nav,
body.page-template-page-premio-marnati .main-nav {
  border-radius: 0 0 calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));
  background: rgba(0, 48, 91, 0.55);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
  border-bottom: 1px solid var(--blue-20);
}

/* Header: niente doppio spazio, la clearance è nel breadcrumb */
body.page-template-default .archive-page-header,
body.page-template-page-cariche .archive-page-header,
body.page-template-page-bilancio .archive-page-header,
body.page-template-page-convenzione .archive-page-header,
body.page-template-page-modulistica .archive-page-header,
body.page-template-page-premio-marnati .archive-page-header {
  padding-top: calc(100dvw * 16 / var(--viewSize));
}

/* =========================================================
   TEMPLATE STANZA SEDE (aule / stanze)
   ========================================================= */

/* Navbar non trasparente sin dall'inizio (come altre pagine) */
body.page-template-page-stanza-sede .main-nav {
  border-radius: 0 0 calc(100dvw * 28 / var(--viewSize))
    calc(100dvw * 28 / var(--viewSize));
  background: rgba(0, 48, 91, 0.55);
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
  border-bottom: 1px solid var(--blue-20);
}

/* Header: titolo + descrizione (larghezza parziale via col Bootstrap) */
.stanza-header {
  padding-top: calc(100dvw * 12 / var(--viewSize));
  padding-bottom: calc(100dvw * 8 / var(--viewSize));
}
.stanza-desc {
  color: var(--neutral-70);
  line-height: 1.7;
  font-size: calc(100dvw * 17 / var(--viewSize));
}

/* Carosello immagini: una alla volta, angoli arrotondati */
.stanza-splide .stanza-slide-img {
  width: 100%;
  height: calc(100dvw * 480 / var(--viewSize));
  object-fit: cover;
  border-radius: calc(100dvw * 20 / var(--viewSize));
}
.stanza-splide .splide__slide {
  border-radius: calc(100dvw * 20 / var(--viewSize));
  overflow: hidden;
}

/* Link alla sede */
.stanza-sede-link {
  color: var(--blue-40);
  font-weight: 500;
  transition: color 0.2s ease;
}
.stanza-sede-link:hover {
  color: var(--blue-60);
}

@media (max-width: 992px) {
  .stanza-splide .stanza-slide-img {
    height: calc(100dvw * 320 / var(--viewSize));
  }
}

/* ================================================================
   PAGINA ASSOCIAZIONE — Direttori / Sostenitori chiaro / Galleria
   ================================================================ */

/* --- Sezione Direttori: split moderno, pannello blu + silhouette animata --- */
.direttori-assoc {
  position: relative;
  overflow: hidden;
  padding: 0;
}
.direttori-assoc .direttori-inner {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  align-items: stretch;
  min-height: clamp(440px, 62vh, 680px);
}
.direttori-assoc .direttori-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  z-index: 2;
  padding: calc(100dvw * 80 / var(--viewSize)) calc(100dvw * 56 / var(--viewSize));
  padding-left: calc(100dvw * 48 / var(--viewSize));
}
.direttori-eyebrow {
  position: relative;
  width: fit-content;
  font-weight: 600;
  font-size: calc(100dvw * 14 / var(--viewSize));
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--blue-40);
  padding-bottom: calc(100dvw * 8 / var(--viewSize));
  margin-bottom: calc(100dvw * 12 / var(--viewSize));
}
.direttori-eyebrow::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  height: 3px;
  width: calc(100dvw * 52 / var(--viewSize));
  background: var(--orange-50);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.6s 0.3s ease;
}
.direttori-assoc.is-in .direttori-eyebrow::after {
  transform: scaleX(1);
}
.direttori-assoc .direttori-tit {
  margin: 0;
}
.direttori-lede {
  margin-top: calc(100dvw * 16 / var(--viewSize));
  max-width: 42ch;
}
.direttori-stat {
  display: flex;
  align-items: center;
  gap: calc(100dvw * 12 / var(--viewSize));
  margin-top: calc(100dvw * 24 / var(--viewSize));
}
.direttori-num {
  font-weight: 700;
  font-size: calc(100dvw * 56 / var(--viewSize));
  line-height: 1;
  color: var(--blue-40);
  font-variant-numeric: tabular-nums;
}
.direttori-unit {
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: calc(100dvw * 13 / var(--viewSize));
  line-height: 1.25;
  color: var(--neutral-60);
}
.direttori-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: fit-content;
  margin-top: calc(100dvw * 26 / var(--viewSize));
  padding: calc(100dvw * 13 / var(--viewSize)) calc(100dvw * 26 / var(--viewSize));
  border-radius: 100px;
  background: var(--blue-60);
  color: #fff;
  font-weight: 600;
  text-decoration: none;
  transition: transform 0.25s, background 0.25s, box-shadow 0.25s;
}
.direttori-cta:hover {
  background: var(--blue-40);
  color: #fff;
  transform: translateY(-2px);
  box-shadow: var(--shadow-medium);
}
.direttori-cta i {
  transition: transform 0.25s;
}
.direttori-cta:hover i {
  transform: translateX(5px);
}
.direttori-stage {
  position: relative;
  overflow: hidden;
  background: radial-gradient(120% 90% at 78% 42%, #0a5aa0 0%, var(--blue-60) 52%, var(--blue-80) 100%);
  border-radius: calc(100dvw * 40 / var(--viewSize)) 0 0 calc(100dvw * 40 / var(--viewSize));
}
.direttori-arc {
  position: absolute;
  left: 26%;
  top: 46%;
  width: calc(100dvw * 30 / var(--viewSize));
  aspect-ratio: 1 / 1;
  border: 2px solid rgba(168, 201, 225, 0.6);
  border-radius: 50%;
  transform: translate(-50%, -50%) scale(0.3);
  animation: dirPulse 2.8s ease-out infinite;
}
.direttori-arc:nth-child(2) {
  animation-delay: 0.9s;
}
.direttori-arc:nth-child(3) {
  animation-delay: 1.8s;
}
.direttori-note {
  position: absolute;
  color: rgba(168, 201, 225, 0.85);
  font-size: calc(100dvw * 18 / var(--viewSize));
  animation: dirFloat 4.6s ease-in-out infinite;
}
.direttori-note.n1 {
  left: 30%;
  bottom: 26%;
}
.direttori-note.n2 {
  left: 40%;
  bottom: 20%;
  font-size: calc(100dvw * 14 / var(--viewSize));
  animation-delay: 1.6s;
}
.direttori-note.n3 {
  left: 22%;
  bottom: 32%;
  animation-delay: 3s;
}
.direttori-sway {
  position: absolute;
  inset: 0;
  transform-origin: 100% 100%;
  animation: dirSway 5.4s ease-in-out 0.6s infinite;
  will-change: transform;
}
.direttori-shape {
  position: absolute;
  right: 0;
  bottom: 0;
  height: 98%;
  aspect-ratio: 1 / 1;
  background: linear-gradient(158deg, #eaf1f8 0%, #a8c9e1 52%, #6fa6cd 100%);
  transform: scaleX(-1) translateY(var(--dir-par, 0px));
  -webkit-mask: url("/wp-content/uploads/2025/12/shape_orchestra_fiati.webp") no-repeat right bottom / contain;
  mask: url("/wp-content/uploads/2025/12/shape_orchestra_fiati.webp") no-repeat right bottom / contain;
}
@keyframes dirPulse {
  0% {
    transform: translate(-50%, -50%) scale(0.3);
    opacity: 0.75;
  }
  70% {
    opacity: 0.14;
  }
  100% {
    transform: translate(-50%, -50%) scale(3.6);
    opacity: 0;
  }
}
@keyframes dirSway {
  0%,
  100% {
    transform: rotate(0deg);
  }
  50% {
    transform: rotate(-1.1deg);
  }
}
@keyframes dirFloat {
  0% {
    transform: translateY(0);
    opacity: 0;
  }
  20% {
    opacity: 1;
  }
  100% {
    transform: translateY(calc(100dvw * -46 / var(--viewSize)));
    opacity: 0;
  }
}
@media (max-width: 992px) {
  .direttori-assoc .direttori-inner {
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .direttori-assoc .direttori-stage {
    order: -1;
    min-height: calc(100dvw * 300 / var(--viewSize));
    border-radius: 0;
  }
  .direttori-assoc .direttori-copy {
    align-items: flex-start;
    padding: calc(100dvw * 60 / var(--viewSize)) calc(100dvw * 24 / var(--viewSize));
  }
}
@media (prefers-reduced-motion: reduce) {
  .direttori-arc,
  .direttori-sway {
    animation: none;
  }
  .direttori-arc {
    opacity: 0.25;
  }
  .direttori-note {
    display: none;
  }
  .direttori-eyebrow::after {
    transition: none;
  }
}

/* --- Sostenitori: variante sfondo chiaro --- */
section.sostenitori.sostenitori-light {
  background: var(--neutral-10);
}
.sostenitori-light .cont-img-sostenitori-home {
  display: none;
}
.sostenitori-light .content-sostenitori {
  background: transparent;
}
.sostenitori-light .content-sostenitori .text-white {
  color: var(--blue-60) !important;
}
.sostenitori-light .content-sostenitori .text-white-50 {
  color: var(--neutral-70) !important;
}
.sostenitori-light .card-sostienici {
  background: var(--neutral-0);
  box-shadow: var(--shadow-light);
}

/* --- Galleria (splide una foto alla volta) --- */
.splide.galleria-assoc {
  border-radius: calc(100dvw * 24 / var(--viewSize));
  overflow: hidden;
  box-shadow: var(--shadow-light);
}
.splide.galleria-assoc .splide__slide img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}
.splide.galleria-assoc .splide__pagination {
  bottom: calc(100dvw * 12 / var(--viewSize));
}
.splide.galleria-assoc .splide__pagination__page.is-active {
  background: var(--neutral-0);
}
@media (max-width: 576px) {
  .splide.galleria-assoc {
    border-radius: calc(100dvw * 12 / var(--viewSize));
  }
}

/* =========================================================
   FORMAZIONI — TEMI ACCENT (per formazione)
   ========================================================= */
.theme-orchestra {
  --f-accent: var(--blue-40);
  --f-accent-dark: var(--blue-60);
  --f-accent-soft: #e7ecf3;
}
.theme-parata {
  --f-accent: #507faf;
  --f-accent-dark: #3c6690;
  --f-accent-soft: #eef4f9;
}
.theme-bigband {
  --f-accent: var(--orange-50);
  --f-accent-dark: #b96e28;
  --f-accent-soft: #fbf1e6;
}
.theme-junior {
  --f-accent: #2f9c90;
  --f-accent-dark: #23786f;
  --f-accent-soft: #eaf6f4;
}

/* =========================================================
   FORMAZIONI — EQUALIZER BARS (motivo musicale animato)
   ========================================================= */
.eq-bars {
  display: inline-flex;
  align-items: flex-end;
  gap: 3px;
  height: 20px;
}
.eq-bars span {
  width: 3px;
  border-radius: 2px;
  background: var(--f-accent, var(--blue-40));
  animation: eqBounce 1.1s ease-in-out infinite;
}
.eq-bars span:nth-child(1) { height: 40%; animation-delay: 0s; }
.eq-bars span:nth-child(2) { height: 80%; animation-delay: 0.15s; }
.eq-bars span:nth-child(3) { height: 55%; animation-delay: 0.3s; }
.eq-bars span:nth-child(4) { height: 95%; animation-delay: 0.45s; }
.eq-bars span:nth-child(5) { height: 60%; animation-delay: 0.6s; }
@keyframes eqBounce {
  0%, 100% { transform: scaleY(0.5); }
  50% { transform: scaleY(1.15); }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — HERO CINEMATICO
   ========================================================= */
.hero-formazione {
  position: relative;
  width: 100%;
  height: 92dvh;
  min-height: 560px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  overflow: hidden;
}
.hero-formazione__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.hero-formazione__bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  animation: kenBurns 18s ease-in-out infinite alternate;
  will-change: transform;
}
@keyframes kenBurns {
  from { transform: scale(1); }
  to { transform: scale(1.08); }
}
.hero-formazione__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    rgba(39, 53, 66, 0.15) 0% 20%,
    var(--blue-80) 92%
  );
  pointer-events: none;
}
.hero-formazione__content {
  position: relative;
  z-index: 3;
  padding-bottom: calc(100dvw * 120 / var(--viewSize));
}
.hero-formazione__kicker {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 8px;
}
.hero-formazione__num {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 28 / var(--viewSize));
  line-height: 1;
  color: transparent;
  -webkit-text-stroke: 1.5px rgba(255, 255, 255, 0.85);
}
.hero-formazione__label {
  font-size: calc(100dvw * 13 / var(--viewSize));
  font-weight: 600;
  color: rgba(255, 255, 255, 0.85);
  text-transform: uppercase;
  letter-spacing: 0.18em;
}
.hero-formazione .eq-bars span {
  background: rgba(255, 255, 255, 0.9);
}
.hero-formazione__title > .article {
  font-family: var(--fontFamilyTitle);
  font-size: calc(100dvw * 52 / var(--viewSize));
  line-height: calc(100dvw * 64 / var(--viewSize));
  font-weight: 400;
  background: linear-gradient(var(--neutral-0) 60%, rgba(245, 245, 245, 0.6));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  display: inline-block;
  margin-right: 12px;
}
.hero-formazione__title > .title {
  font-family: var(--fontFamilyTitle);
  font-size: calc(100dvw * 104 / var(--viewSize));
  line-height: calc(100dvw * 112 / var(--viewSize));
  font-weight: 700;
  background: linear-gradient(var(--neutral-0) 60%, rgba(245, 245, 245, 0.6));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  display: inline-block;
}
.hero-formazione__tagline {
  max-width: 620px;
  color: rgba(255, 255, 255, 0.85);
  font-size: calc(100dvw * 18 / var(--viewSize));
  line-height: 1.6;
  margin: 12px 0 0;
}
.hero-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 20px 0 0;
}
.hero-chips .chip {
  padding: 6px 18px;
  border-radius: 99px;
  border: 1px solid rgba(255, 255, 255, 0.35);
  color: var(--neutral-0);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  background: rgba(255, 255, 255, 0.08);
}
.hero-formazione__footer {
  z-index: 4;
}
@media (max-width: 576px) {
  .hero-formazione {
    height: 88dvh;
    min-height: 520px;
  }
  .hero-formazione__content {
    padding-bottom: calc(100dvw * 140 / var(--viewSize));
  }
  .hero-formazione__title > .article {
    font-size: calc(100dvw * 32 / var(--viewSize));
    line-height: calc(100dvw * 40 / var(--viewSize));
  }
  .hero-formazione__title > .title {
    font-size: calc(100dvw * 54 / var(--viewSize));
    line-height: calc(100dvw * 64 / var(--viewSize));
  }
  .hero-formazione__tagline {
    font-size: 0.95rem;
  }
  .hero-formazione__num {
    font-size: 1.4rem;
  }
  .hero-formazione__label {
    font-size: 0.7rem;
  }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — MARQUEE REPERTORIO
   ========================================================= */
.formazione-marquee {
  background: var(--f-accent, var(--blue-40));
  overflow: hidden;
  padding: 18px 0;
}
.marquee-track {
  display: flex;
  width: max-content;
  animation: marqueeScroll 28s linear infinite;
  will-change: transform;
}
.marquee-group {
  display: flex;
  align-items: center;
  gap: 40px;
  padding-right: 40px;
}
.marquee-word {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 22 / var(--viewSize));
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--neutral-0);
  white-space: nowrap;
}
.marquee-note {
  color: rgba(255, 255, 255, 0.5);
  font-size: 0.9rem;
}
@keyframes marqueeScroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
@media (max-width: 576px) {
  .marquee-word {
    font-size: 1rem;
  }
  .marquee-group {
    gap: 24px;
    padding-right: 24px;
  }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — INTRO + STATISTICHE
   ========================================================= */
.formazione-intro__inner {
  max-width: 1440px;
  margin: 0 auto;
}
.formazione-intro__sticky {
  position: sticky;
  top: 120px;
}
.formazione-intro .formazione-row__label {
  color: var(--f-accent, var(--blue-40));
}
.formazione-stats {
  display: flex;
  flex-wrap: wrap;
  gap: calc(100dvw * 48 / var(--viewSize));
}
.formazione-stat {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-left: 20px;
  border-left: 3px solid var(--f-accent, var(--blue-40));
}
.formazione-stat__num {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 48 / var(--viewSize));
  line-height: 1.1;
  color: var(--f-accent, var(--blue-40));
}
.formazione-stat__label {
  font-size: calc(100dvw * 13 / var(--viewSize));
  font-weight: 600;
  color: var(--neutral-60);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}
@media (max-width: 991px) {
  .formazione-intro__sticky {
    position: static;
  }
  .formazione-stats {
    gap: 32px;
  }
  .formazione-stat__num {
    font-size: 2rem;
  }
  .formazione-stat__label {
    font-size: 0.72rem;
  }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — REPERTORIO CARDS
   ========================================================= */
.formazione-repertorio {
  background: var(--f-accent-soft, var(--neutral-10));
}
.formazione-repertorio .formazione-row__label {
  color: var(--f-accent, var(--blue-40));
}
.repertorio-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: calc(100dvw * 24 / var(--viewSize));
  max-width: 1440px;
  margin: 0 auto;
}
.repertorio-card {
  position: relative;
  background: var(--neutral-0);
  border: 1px solid var(--neutral-20);
  border-radius: 16px;
  padding: 32px 28px;
  overflow: hidden;
  transition:
    transform 0.35s cubic-bezier(0.16, 1, 0.3, 1),
    box-shadow 0.35s ease,
    border-color 0.35s ease;
}
.repertorio-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: var(--f-accent, var(--blue-40));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.35s cubic-bezier(0.65, 0, 0.35, 1);
}
.repertorio-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 16px 40px rgba(0, 24, 45, 0.12);
  border-color: transparent;
}
.repertorio-card:hover::before {
  transform: scaleX(1);
}
.repertorio-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  background: var(--f-accent-soft, var(--neutral-10));
  color: var(--f-accent, var(--blue-40));
  font-size: 1.3rem;
  margin-bottom: 20px;
  transition: transform 0.35s ease, background 0.35s ease, color 0.35s ease;
}
.repertorio-card:hover .repertorio-card__icon {
  background: var(--f-accent, var(--blue-40));
  color: var(--neutral-0);
  transform: rotate(-6deg) scale(1.08);
}
.repertorio-card__title {
  font-size: calc(100dvw * 20 / var(--viewSize));
  line-height: 1.3;
  font-weight: 600;
  margin-bottom: 10px;
}
.repertorio-card__text {
  font-size: calc(100dvw * 15 / var(--viewSize));
  color: var(--neutral-60);
  line-height: 1.7;
}
@media (max-width: 1199px) {
  .repertorio-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
  }
  .repertorio-card__title {
    font-size: 1.1rem;
  }
  .repertorio-card__text {
    font-size: 0.9rem;
  }
}
@media (max-width: 576px) {
  .repertorio-grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .repertorio-card {
    padding: 24px 20px;
  }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — GALLERY + EVENTI
   ========================================================= */
.formazione-gallery__img {
  width: 100%;
  height: calc(100dvw * 420 / var(--viewSize));
  object-fit: cover;
  border-radius: 16px;
  display: block;
}
@media (max-width: 991px) {
  .formazione-gallery__img {
    height: 320px;
  }
}
@media (max-width: 576px) {
  .formazione-gallery__img {
    height: 240px;
    border-radius: 12px;
  }
}
.formazione-eventi .section-cta-link {
  color: var(--f-accent, var(--blue-40));
}
.evento-form-card__img-wrap {
  position: relative;
  aspect-ratio: 3 / 2;
  border-radius: 16px;
  overflow: hidden;
}
.evento-form-card__img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.evento-form-card:hover .evento-form-card__img-wrap img {
  transform: scale(1.06);
}
.evento-form-card__date {
  position: absolute;
  top: 14px;
  left: 14px;
  padding: 5px 14px;
  border-radius: 99px;
  background: var(--f-accent, var(--blue-40));
  color: var(--neutral-0);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.evento-form-card__body {
  padding-top: 16px;
}
.evento-form-card__luogo {
  display: block;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--f-accent, var(--blue-40));
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-bottom: 4px;
}
.evento-form-card__title {
  font-size: calc(100dvw * 20 / var(--viewSize));
  line-height: 1.3;
  font-weight: 600;
  color: var(--neutral-90);
  transition: color 0.25s ease;
}
.evento-form-card:hover .evento-form-card__title {
  color: var(--f-accent, var(--blue-40));
}
@media (max-width: 576px) {
  .evento-form-card__title {
    font-size: 1.05rem;
  }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — NAV PREV/NEXT
   ========================================================= */
.formazione-nav {
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.formazione-nav__item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 280px;
  overflow: hidden;
  text-decoration: none;
}
.formazione-nav__bg {
  position: absolute;
  inset: 0;
}
.formazione-nav__bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.formazione-nav__item::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(rgba(0, 24, 45, 0.55), rgba(0, 24, 45, 0.75));
  transition: background 0.4s ease;
}
.formazione-nav__item:hover::after {
  background: linear-gradient(rgba(0, 24, 45, 0.35), rgba(0, 24, 45, 0.6));
}
.formazione-nav__item:hover .formazione-nav__bg img {
  transform: scale(1.06);
}
.formazione-nav__content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  text-align: center;
  padding: 40px 24px;
}
.formazione-nav__dir {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 0.8rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.75);
  text-transform: uppercase;
  letter-spacing: 0.15em;
}
.formazione-nav__dir i {
  transition: transform 0.3s ease;
}
.formazione-nav__item:hover .formazione-nav__dir i.fa-arrow-right {
  transform: translateX(5px);
}
.formazione-nav__item:hover .formazione-nav__dir i.fa-arrow-left {
  transform: translateX(-5px);
}
.formazione-nav__title {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 40 / var(--viewSize));
  line-height: 1.1;
  color: var(--neutral-0);
}
@media (max-width: 767px) {
  .formazione-nav {
    grid-template-columns: 1fr;
  }
  .formazione-nav__item {
    min-height: 200px;
  }
  .formazione-nav__title {
    font-size: 1.6rem;
  }
}

/* =========================================================
   FORMAZIONI LISTA — INTRO + DECK STICKY
   ========================================================= */
.formazioni-intro__text {
  max-width: 640px;
  color: var(--neutral-60);
  line-height: 1.75;
}
.formazioni-deck {
  position: relative;
}
.formazione-panel {
  position: sticky;
  top: 80px;
  min-height: calc(100dvh - 80px);
  display: flex;
  align-items: center;
  overflow: hidden;
  border-radius: 28px 28px 0 0;
  box-shadow: 0 -16px 48px rgba(0, 24, 45, 0.14);
  background:
    radial-gradient(
      1100px 600px at 85% 15%,
      var(--f-accent-soft, var(--neutral-10)),
      transparent 65%
    ),
    var(--neutral-0);
}
.formazione-panel__inner {
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
  padding: calc(100dvw * 48 / var(--viewSize)) 1rem;
  position: relative;
  z-index: 2;
}
@media (min-width: 992px) {
  .formazione-panel__inner {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
}
@media (min-width: 1200px) {
  /* Spazio extra a sinistra per il rail di navigazione */
  .formazione-panel__inner {
    padding-left: 120px;
    padding-right: 3rem;
  }
}
.formazione-panel__watermark {
  position: absolute;
  top: 0;
  right: -1%;
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 280 / var(--viewSize));
  line-height: 0.9;
  color: transparent;
  -webkit-text-stroke: 2px var(--f-accent, var(--blue-40));
  opacity: 0.1;
  pointer-events: none;
  user-select: none;
  z-index: 1;
}
.formazione-panel__kicker {
  display: flex;
  align-items: center;
  gap: 14px;
}
.formazione-panel__num {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 24 / var(--viewSize));
  line-height: 1;
  color: transparent;
  -webkit-text-stroke: 1.5px var(--f-accent, var(--blue-40));
}
.formazione-panel__kicker .formazione-row__label {
  color: var(--f-accent, var(--blue-40));
}
.formazione-panel__title {
  line-height: 1;
  color: var(--neutral-95);
}
.panel-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.panel-chips .chip {
  padding: 5px 16px;
  border-radius: 99px;
  background: var(--f-accent-soft, var(--neutral-10));
  color: var(--f-accent-dark, var(--blue-60));
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.03em;
}
.formazione-panel__desc {
  max-width: 520px;
  color: var(--neutral-60);
  line-height: 1.75;
  font-size: calc(100dvw * 16 / var(--viewSize));
}
.formazione-panel__btn {
  background: var(--f-accent, var(--blue-40));
  color: var(--neutral-0);
  font-weight: 600;
  border: none;
  transition:
    background 0.3s ease,
    transform 0.3s ease,
    box-shadow 0.3s ease;
}
.formazione-panel__btn:hover {
  background: var(--f-accent-dark, var(--blue-60));
  color: var(--neutral-0);
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(0, 24, 45, 0.22);
}
.formazione-panel__btn i {
  transition: transform 0.3s ease;
}
.formazione-panel__btn:hover i {
  transform: translateX(4px);
}
.formazione-panel__img-wrap {
  position: relative;
  border-radius: 20px;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  box-shadow: var(--shadow-light);
}
.formazione-panel__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.formazione-panel__img-wrap:hover .formazione-panel__img {
  transform: scale(1.05);
}
.formazione-panel__img-badge {
  position: absolute;
  bottom: 20px;
  left: 20px;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--f-accent, var(--blue-40));
  color: var(--neutral-0);
  font-size: 1.1rem;
  box-shadow: 0 8px 20px rgba(0, 24, 45, 0.25);
  transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.formazione-panel__img-wrap:hover .formazione-panel__img-badge {
  transform: rotate(-12deg) scale(1.12);
}

/* Rail dots (desktop) */
.deck-nav {
  position: sticky;
  top: 45dvh;
  z-index: 20;
  height: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
  width: fit-content;
  padding-left: 28px;
}
.deck-nav__dot {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}
.deck-nav__num {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 2px solid var(--neutral-40);
  background: var(--neutral-0);
  color: var(--neutral-60);
  font-size: 0.7rem;
  font-weight: 700;
  transition: all 0.3s ease;
}
.deck-nav__label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--neutral-80);
  background: var(--neutral-0);
  padding: 4px 12px;
  border-radius: 99px;
  box-shadow: var(--shadow-light);
  opacity: 0;
  transform: translateX(-8px);
  transition: opacity 0.3s ease, transform 0.3s ease;
  white-space: nowrap;
  pointer-events: none;
}
.deck-nav__dot:hover .deck-nav__label {
  opacity: 1;
  transform: translateX(0);
}
.deck-nav__dot.is-active .deck-nav__num {
  border-color: var(--f-accent, var(--blue-40));
  background: var(--f-accent, var(--blue-40));
  color: var(--neutral-0);
  transform: scale(1.1);
}
@media (max-width: 1199px) {
  .deck-nav {
    display: none;
  }
}

/* Deck responsive: sotto i 992px MANTIENE l'effetto deck (sovrapposizione).
   position:sticky rende il pannello il contenitore del .formazione-panel__watermark
   (absolute) → il numero gigante viene ri-clippato dall'overflow:hidden del pannello:
   niente scroll orizzontale e niente numeri sovrapposti fra pannelli. */
@media (max-width: 991px) {
  .formazione-panel {
    position: sticky;
    top: 72px;
    min-height: calc(100dvh - 72px);
    border-radius: 24px 24px 0 0;
    box-shadow: 0 -12px 36px rgba(0, 24, 45, 0.14);
  }
  .formazione-panel__inner {
    padding-top: calc(100dvw * 60 / var(--viewSize));
    padding-bottom: calc(100dvw * 60 / var(--viewSize));
  }
  .formazione-panel__watermark {
    font-size: calc(100dvw * 200 / var(--viewSize));
    right: -4%;
  }
  .formazione-panel__num {
    font-size: 1.3rem;
  }
  .formazione-panel__desc {
    font-size: 0.95rem;
  }
  .formazione-panel__img-wrap {
    aspect-ratio: 3 / 2;
  }
}
@media (max-width: 576px) {
  .formazione-panel__watermark {
    font-size: calc(100dvw * 160 / var(--viewSize));
  }
  .formazione-panel__btn {
    width: 100%;
    justify-content: center;
  }
  .formazione-panel__img-badge {
    width: 44px;
    height: 44px;
    bottom: 14px;
    left: 14px;
    font-size: 0.9rem;
  }
}

/* =========================================================
   FORMAZIONI — REDUCED MOTION
   ========================================================= */
@media (prefers-reduced-motion: reduce) {
  .hero-formazione__bg img,
  .marquee-track,
  .eq-bars span {
    animation: none;
  }
  .repertorio-card,
  .formazione-panel__img,
  .formazione-panel__img-badge,
  .formazione-nav__bg img {
    transition: none;
  }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — NUMERI (banda scura con contatori)
   ========================================================= */
.sez-numeri-form {
  position: relative;
  background:
    radial-gradient(
      900px 500px at 15% 0%,
      rgba(80, 127, 175, 0.35),
      transparent 65%
    ),
    radial-gradient(
      700px 400px at 90% 100%,
      rgba(0, 71, 136, 0.5),
      transparent 60%
    ),
    var(--blue-80);
  overflow: hidden;
}
.sez-numeri-form .formazione-row__label {
  color: var(--light-blue-40);
}
.sez-numeri-form .section-title,
.sez-numeri-form h2 {
  color: var(--neutral-0);
}
.numeri-form-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: calc(100dvw * 32 / var(--viewSize));
  max-width: 1100px;
  margin: 0 auto;
}
.numeri-form-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  text-align: center;
  padding: calc(100dvw * 32 / var(--viewSize)) 16px;
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(4px);
  transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1),
    background 0.35s ease;
}
.numeri-form-item:hover {
  transform: translateY(-6px);
  background: rgba(255, 255, 255, 0.09);
}
.numeri-form-item__num {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 64 / var(--viewSize));
  line-height: 1.05;
  color: var(--neutral-0);
}
.numeri-form-item__label {
  font-size: calc(100dvw * 13 / var(--viewSize));
  font-weight: 600;
  color: var(--light-blue-20);
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
@media (max-width: 991px) {
  .numeri-form-grid {
    gap: 20px;
  }
  .numeri-form-item__num {
    font-size: 2.6rem;
  }
  .numeri-form-item__label {
    font-size: 0.72rem;
  }
}
@media (max-width: 576px) {
  .numeri-form-grid {
    grid-template-columns: 1fr;
    gap: 14px;
  }
  .numeri-form-item {
    padding: 24px 16px;
  }
  .numeri-form-item__num {
    font-size: 2.4rem;
  }
}

/* =========================================================
   FORMAZIONE DETTAGLIO — PLAYLIST (4 ascolti)
   ========================================================= */
.playlist-form__intro {
  max-width: 560px;
  color: var(--neutral-60);
  line-height: 1.75;
}
.playlist-form {
  max-width: 900px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.playlist-track {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 16px 22px;
  border-radius: 16px;
  background: var(--neutral-0);
  border: 1px solid var(--neutral-20);
  transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1),
    box-shadow 0.35s ease,
    border-color 0.35s ease;
}
.playlist-track:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(0, 24, 45, 0.1);
  border-color: transparent;
}
.playlist-track.is-playing {
  border-color: var(--blue-40);
  box-shadow: 0 12px 32px rgba(0, 71, 136, 0.16);
}
.playlist-track__btn {
  flex: 0 0 auto;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--light-blue-05);
  color: var(--blue-40);
  font-size: 0.95rem;
  cursor: pointer;
  transition: background 0.3s ease, color 0.3s ease, transform 0.3s ease;
}
.playlist-track__btn:hover,
.playlist-track.is-playing .playlist-track__btn {
  background: var(--blue-40);
  color: var(--neutral-0);
  transform: scale(1.08);
}
.playlist-track__num {
  flex: 0 0 auto;
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: 1rem;
  color: transparent;
  -webkit-text-stroke: 1px var(--blue-20);
}
.playlist-track__info {
  min-width: 0;
  flex: 0 1 auto;
}
.playlist-track__title {
  font-size: calc(100dvw * 18 / var(--viewSize));
  font-weight: 600;
  color: var(--neutral-90);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.playlist-track__author {
  display: block;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--neutral-60);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-top: 2px;
}
.playlist-track__eq {
  flex: 0 0 auto;
  opacity: 0;
  transition: opacity 0.3s ease;
}
.playlist-track__eq span {
  background: var(--blue-40);
  animation-play-state: paused;
}
.playlist-track.is-playing .playlist-track__eq {
  opacity: 1;
}
.playlist-track.is-playing .playlist-track__eq span {
  animation-play-state: running;
}
.playlist-track__progress {
  flex: 1 1 auto;
  height: 6px;
  border-radius: 99px;
  background: var(--neutral-20);
  overflow: hidden;
  cursor: pointer;
}
.playlist-track__progress-bar {
  display: block;
  width: 0%;
  height: 100%;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--blue-20), var(--blue-40));
  transition: width 0.15s linear;
}
.playlist-track__time {
  flex: 0 0 auto;
  min-width: 44px;
  text-align: right;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--neutral-60);
  font-variant-numeric: tabular-nums;
}
@media (max-width: 767px) {
  .playlist-track {
    flex-wrap: wrap;
    gap: 12px;
    padding: 14px 16px;
  }
  .playlist-track__num {
    display: none;
  }
  .playlist-track__info {
    flex: 1 1 0;
  }
  .playlist-track__title {
    font-size: 1rem;
  }
  .playlist-track__progress {
    flex: 1 1 100%;
    order: 5;
  }
  .playlist-track__time {
    order: 6;
    flex: 0 0 auto;
    margin-left: auto;
  }
}

/* =========================================================
   SOSTENITORI — VERSIONE MINIMAL (strip loghi)
   ========================================================= */
.sostenitori-min__text {
  max-width: 620px;
  color: var(--neutral-60);
  line-height: 1.75;
}
.sez-sostenitori-min .splide.sostenitori {
  padding-bottom: 0;
}
.sez-sostenitori-min .splide__slide.sostenitori {
  background: var(--neutral-0);
  border: 1px solid var(--neutral-20);
}
.sez-sostenitori-min .splide__slide.sostenitori:hover {
  box-shadow: 0 12px 32px rgba(0, 24, 45, 0.12);
}
.sez-sostenitori-min .section-cta-link {
  color: var(--blue-40);
  font-weight: 600;
  text-decoration: none;
}
.sez-sostenitori-min .section-cta-link i {
  transition: transform 0.3s ease;
}
.sez-sostenitori-min .section-cta-link:hover i {
  transform: translateX(4px);
}

/* Reduced motion per le nuove sezioni formazione */
@media (prefers-reduced-motion: reduce) {
  .numeri-form-item,
  .playlist-track,
  .playlist-track__btn,
  .playlist-track__progress-bar {
    transition: none;
  }
}

/* ── Modale contatto (form) ──────────────────────────────────── */
.contact-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  justify-content: center;
  align-items: flex-start;
  padding: 24px 16px;
  overflow-y: auto;
  background: linear-gradient(
    180deg,
    rgba(10, 25, 50, 0.85) 0%,
    rgba(10, 25, 50, 0.65) 50%,
    rgba(10, 25, 50, 0.85) 100%
  );
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.contact-modal.show {
  display: flex;
}
.contact-modal.visible {
  opacity: 1;
}
.contact-modal-content {
  background: #fff;
  border-radius: 16px;
  padding: 40px 32px;
  max-width: 720px;
  width: 100%;
  margin: auto;
  position: relative;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}
.contact-modal-close {
  position: absolute;
  top: 14px;
  right: 16px;
  background: transparent;
  border: none;
  font-size: 30px;
  line-height: 1;
  cursor: pointer;
  color: var(--neutral-60);
  transition: color 0.2s ease;
}
.contact-modal-close:hover {
  color: var(--blue-40);
}
@media (max-width: 576px) {
  .contact-modal-content {
    padding: 32px 20px;
  }
}

/* ── FAQ archive (/faq/) + filtro tag ────────────────────── */
.archive-layout--single {
  display: block;
}
.faq-archive-page .archive-results {
  max-width: 820px;
  margin: 0 auto;
}
.faq-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 32px;
}
.faq-filter-chip {
  padding: 8px 18px;
  border: 1px solid var(--neutral-20);
  border-radius: 999px;
  background: transparent;
  cursor: pointer;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--neutral-60);
  transition:
    color 0.2s ease,
    background 0.2s ease,
    border-color 0.2s ease;
}
.faq-filter-chip:hover {
  color: var(--blue-20);
  border-color: var(--blue-20);
}
.faq-filter-chip.is-active {
  background: var(--blue-20);
  border-color: var(--blue-20);
  color: #fff;
}
.faq-item.is-hidden {
  display: none;
}

/* ── FAQ: batch "Mostra altre" + "Vedi tutte" ────────────── */
.faq-item.is-more {
  display: none;
}
.faq-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-top: 28px;
}
.faq-show-more {
  padding: 10px 24px;
  border: 1px solid var(--blue-20);
  border-radius: 999px;
  background: transparent;
  color: var(--blue-20);
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition:
    background 0.2s ease,
    color 0.2s ease;
}
.faq-show-more:hover {
  background: var(--blue-20);
  color: #fff;
}
.faq-see-all {
  padding: 10px 24px;
  border-radius: 999px;
  background: var(--blue-20);
  color: #fff;
  font-size: 0.9rem;
  font-weight: 600;
  text-decoration: none;
  transition: opacity 0.2s ease;
}
.faq-see-all:hover {
  opacity: 0.9;
  color: #fff;
}

/* =========================================================
   DIRETTORI — ARCHIVIO VETRINA + SINGLE (redesign)
   ========================================================= */

/* Badge "In carica" (versione globale, prima era scoped .single-direttore) */
.badge-in-corso {
  display: inline-block;
  background: var(--blue-20, var(--blue-40));
  color: var(--neutral-0);
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 3px 10px;
  border-radius: 999px;
}

/* Eyebrow condiviso */
.dirs-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-weight: 600;
  font-size: calc(100dvw * 13 / var(--viewSize));
  color: var(--gold-60);
  margin-bottom: calc(100dvw * 10 / var(--viewSize));
}
.dirs-eyebrow::before {
  content: "";
  width: calc(100dvw * 38 / var(--viewSize));
  height: 2px;
  background: var(--gold-50);
}
.dirs-eyebrow-light {
  color: var(--gold-20);
}
.dirs-eyebrow-light::before {
  background: var(--gold-40);
}

/* ── HERO ARCHIVIO ─────────────────────────────────────── */
.dirs-hero {
  position: relative;
  background: var(--blue-80);
  color: var(--neutral-0);
  overflow: hidden;
}
.dirs-hero-bc {
  position: relative;
  z-index: 3;
  padding-top: calc(100dvw * 96 / var(--viewSize));
}
.dirs-hero .breadcrumb-item,
.dirs-hero .breadcrumb-item a,
.dirs-hero .breadcrumb-sep {
  color: var(--light-blue-20);
}
.dirs-hero .breadcrumb-item a:hover {
  color: var(--neutral-0);
}
.dirs-hero-inner {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  align-items: stretch;
  min-height: calc(100dvh - 100dvw * 150 / var(--viewSize));
}
.dirs-hero-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  padding-top: calc(100dvw * 40 / var(--viewSize));
  padding-bottom: calc(100dvw * 56 / var(--viewSize));
  position: relative;
  z-index: 2;
}
.dirs-hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-weight: 600;
  font-size: calc(100dvw * 13 / var(--viewSize));
  color: var(--gold-40);
  animation: dirsRise 0.7s 0.1s ease-out both;
}
.dirs-hero-eyebrow::before {
  content: "";
  width: calc(100dvw * 38 / var(--viewSize));
  height: 2px;
  background: var(--gold-40);
}
.dirs-hero-title {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 76 / var(--viewSize));
  line-height: 1.02;
  letter-spacing: -2px;
  color: var(--neutral-0);
  margin-top: calc(100dvw * 14 / var(--viewSize));
  animation: dirsRise 0.7s 0.22s ease-out both;
}
.dirs-hero-title .small-title {
  display: block;
  font-weight: 400;
  font-size: calc(100dvw * 40 / var(--viewSize));
  line-height: 1.1;
  letter-spacing: -1px;
  color: var(--light-blue-20);
}
.dirs-hero-lede {
  margin-top: calc(100dvw * 20 / var(--viewSize));
  max-width: 48ch;
  color: var(--light-blue-10);
  font-size: calc(100dvw * 17 / var(--viewSize));
  line-height: 1.65;
  animation: dirsRise 0.7s 0.34s ease-out both;
}
.dirs-hero-stats {
  display: flex;
  flex-wrap: wrap;
  gap: calc(100dvw * 48 / var(--viewSize));
  margin-top: calc(100dvw * 34 / var(--viewSize));
  animation: dirsRise 0.7s 0.46s ease-out both;
}
.dirs-hero-stat {
  display: flex;
  align-items: center;
  gap: calc(100dvw * 12 / var(--viewSize));
}
.dirs-hero-num {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 56 / var(--viewSize));
  line-height: 1;
  color: var(--gold-40);
  font-variant-numeric: tabular-nums;
}
.dirs-hero-unit {
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: calc(100dvw * 12 / var(--viewSize));
  line-height: 1.3;
  color: var(--light-blue-20);
}
.dirs-hero-scroll {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: calc(100dvw * 46 / var(--viewSize));
  height: calc(100dvw * 46 / var(--viewSize));
  min-width: 38px;
  min-height: 38px;
  border-radius: 50%;
  border: 1.5px solid rgba(168, 201, 225, 0.55);
  color: var(--neutral-0);
  margin-top: calc(100dvw * 40 / var(--viewSize));
  text-decoration: none;
  animation:
    dirsRise 0.7s 0.58s ease-out both,
    dirsBounce 2.4s 1.6s ease-in-out infinite;
  transition: background 0.25s, border-color 0.25s;
}
.dirs-hero-scroll:hover {
  background: rgba(255, 255, 255, 0.12);
  border-color: var(--neutral-0);
  color: var(--neutral-0);
}
.dirs-hero-stage {
  position: relative;
  overflow: hidden;
  background: radial-gradient(120% 90% at 78% 42%, #0a5aa0 0%, var(--blue-60) 52%, var(--blue-80) 100%);
  border-radius: calc(100dvw * 40 / var(--viewSize)) 0 0 0;
  animation: dirsFadeIn 0.9s 0.2s ease-out both;
}
@keyframes dirsRise {
  from {
    opacity: 0;
    transform: translateY(26px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes dirsFadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes dirsBounce {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(6px);
  }
}
@media (max-width: 992px) {
  .dirs-hero-inner {
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .dirs-hero-stage {
    min-height: calc(100dvw * 300 / var(--viewSize));
    border-radius: calc(100dvw * 32 / var(--viewSize)) calc(100dvw * 32 / var(--viewSize)) 0 0;
    margin-top: calc(100dvw * 16 / var(--viewSize));
  }
  .dirs-hero-title {
    font-size: calc(100dvw * 58 / var(--viewSize));
  }
}

/* ── LA FIGURA DEL DIRETTORE ───────────────────────────── */
.dirs-figura {
  background: var(--cream-50);
}
.dirs-figura-inner {
  max-width: 900px;
  margin: 0 auto;
  text-align: center;
}
.dirs-figura-inner .dirs-eyebrow {
  justify-content: center;
}
.dirs-figura-inner .dirs-eyebrow::before {
  display: none;
}
.dirs-figura-text {
  margin-top: calc(100dvw * 24 / var(--viewSize));
  color: var(--neutral-70);
  font-size: calc(100dvw * 18 / var(--viewSize));
  line-height: 1.75;
}
.dirs-figura-text p + p {
  margin-top: calc(100dvw * 18 / var(--viewSize));
}

/* ── ELENCO PRIMI 5 ────────────────────────────────────── */
.dirs-elenco {
  background: var(--cream-50);
}
.dirs-rows {
  border-top: 1px solid var(--neutral-20);
}
.dir-row {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: calc(100dvw * 28 / var(--viewSize));
  padding: calc(100dvw * 30 / var(--viewSize)) calc(100dvw * 12 / var(--viewSize));
  border-bottom: 1px solid var(--neutral-20);
  text-decoration: none;
  transition: background 0.3s ease;
}
.dir-row:hover {
  background: var(--neutral-0);
}
.dir-row-num {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 42 / var(--viewSize));
  line-height: 1;
  color: transparent;
  -webkit-text-stroke: 1.5px var(--light-blue-40);
  min-width: calc(100dvw * 72 / var(--viewSize));
  transition: -webkit-text-stroke-color 0.3s, color 0.3s;
}
.dir-row:hover .dir-row-num {
  color: var(--gold-50);
  -webkit-text-stroke-color: var(--gold-50);
}
.dir-row.is-current .dir-row-num {
  color: var(--gold-50);
  -webkit-text-stroke-color: var(--gold-50);
}
.dir-row-main {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}
.dir-row-name {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 34 / var(--viewSize));
  line-height: 1.1;
  letter-spacing: -1px;
  color: var(--blue-80);
  transition: color 0.3s, transform 0.3s;
}
.dir-row:hover .dir-row-name {
  color: var(--blue-40);
  transform: translateX(6px);
}
.dir-row-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  font-size: calc(100dvw * 14 / var(--viewSize));
  color: var(--neutral-60);
}
.dir-row-anni {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-weight: 500;
  color: var(--blue-40);
}
.dir-row-photo {
  position: absolute;
  right: calc(100dvw * 130 / var(--viewSize));
  top: 50%;
  width: calc(100dvw * 190 / var(--viewSize));
  aspect-ratio: 3 / 2;
  border-radius: 14px;
  background-size: cover;
  background-position: center;
  box-shadow: var(--shadow-medium);
  pointer-events: none;
  opacity: 0;
  transform: translateY(-50%) rotate(5deg) scale(0.88);
  transition: opacity 0.35s ease, transform 0.35s ease;
  z-index: 2;
}
.dir-row:hover .dir-row-photo {
  opacity: 1;
  transform: translateY(-50%) rotate(-3deg) scale(1);
}
.dir-row-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: calc(100dvw * 48 / var(--viewSize));
  height: calc(100dvw * 48 / var(--viewSize));
  min-width: 40px;
  min-height: 40px;
  border-radius: 50%;
  border: 1.5px solid var(--light-blue-40);
  color: var(--blue-40);
  transition: background 0.3s, color 0.3s, transform 0.3s, border-color 0.3s;
}
.dir-row:hover .dir-row-arrow {
  background: var(--blue-60);
  border-color: var(--blue-60);
  color: var(--neutral-0);
  transform: translateX(4px);
}
.dirs-elenco-cta {
  margin-top: calc(100dvw * 44 / var(--viewSize));
}
.dirs-elenco-cta .direttori-cta {
  margin-top: 0;
}
.dirs-elenco-cta-note {
  margin-top: 10px;
  font-size: calc(100dvw * 13 / var(--viewSize));
  color: var(--neutral-60);
}
@media (max-width: 992px) {
  .dir-row-photo {
    display: none;
  }
}
@media (max-width: 576px) {
  .dir-row {
    grid-template-columns: auto 1fr;
    gap: 16px;
  }
  .dir-row-arrow {
    display: none;
  }
  .dir-row-num {
    min-width: 48px;
    font-size: calc(100dvw * 30 / var(--viewSize));
  }
  .dir-row-name {
    font-size: calc(100dvw * 24 / var(--viewSize));
  }
}

/* ── COMMISSIONE ARTISTICA ─────────────────────────────── */
.dirs-commissione {
  position: relative;
  background:
    radial-gradient(90% 120% at 85% 10%, rgba(10, 90, 160, 0.55) 0%, transparent 55%),
    linear-gradient(160deg, var(--blue-60) 0%, var(--blue-80) 80%);
  color: var(--neutral-0);
  overflow: hidden;
}
.dirs-commissione-inner {
  max-width: 980px;
  margin: 0 auto;
  text-align: center;
}
.dirs-commissione-inner .dirs-eyebrow {
  justify-content: center;
}
.dirs-commissione-inner .dirs-eyebrow::before {
  display: none;
}
.dirs-commissione-inner h2 .small-title {
  color: var(--light-blue-20);
}
.dirs-commissione-text {
  margin: calc(100dvw * 24 / var(--viewSize)) auto 0;
  max-width: 62ch;
  color: var(--light-blue-10);
  font-size: calc(100dvw * 17 / var(--viewSize));
  line-height: 1.75;
}
.dirs-commissione-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: calc(100dvw * 20 / var(--viewSize));
  margin-top: calc(100dvw * 44 / var(--viewSize));
}
.dirs-commissione-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 18px;
  padding: calc(100dvw * 26 / var(--viewSize)) calc(100dvw * 16 / var(--viewSize));
  transition: transform 0.3s, background 0.3s;
}
.dirs-commissione-card:hover {
  transform: translateY(-4px);
  background: rgba(255, 255, 255, 0.1);
}
.dirs-commissione-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: calc(100dvw * 64 / var(--viewSize));
  height: calc(100dvw * 64 / var(--viewSize));
  min-width: 52px;
  min-height: 52px;
  border-radius: 50%;
  background: linear-gradient(158deg, #eaf1f8 0%, #a8c9e1 52%, #6fa6cd 100%);
  color: var(--blue-80);
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 20 / var(--viewSize));
  margin-bottom: 10px;
}
.dirs-commissione-nome {
  font-weight: 600;
  color: var(--neutral-0);
}
.dirs-commissione-ruolo {
  font-size: calc(100dvw * 12 / var(--viewSize));
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--light-blue-20);
}

/* ── VISTA TUTTI I DIRETTORI ───────────────────────────── */
.dirs-tutti-sub {
  color: var(--neutral-60);
  font-size: calc(100dvw * 15 / var(--viewSize));
  margin-top: 6px;
}
.direttore-card-archivio {
  position: relative;
}
.direttore-img-shape {
  display: block;
  width: 100%;
  height: 100%;
  position: relative;
  background: radial-gradient(120% 90% at 70% 40%, #0a5aa0 0%, var(--blue-60) 55%, var(--blue-80) 100%);
}
.direttore-img-shape::after {
  content: "";
  margin-left: 0;
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  width: 100%;
  height: 100%;
  background: linear-gradient(158deg, #eaf1f8 0%, #a8c9e1 52%, #6fa6cd 100%);
  -webkit-mask: url("/wp-content/uploads/2025/12/shape_orchestra_fiati.webp") no-repeat center bottom / contain;
  mask: url("/wp-content/uploads/2025/12/shape_orchestra_fiati.webp") no-repeat center bottom / contain;
}

/* ── SINGLE DIRETTORE — HERO ───────────────────────────── */
.sd-hero {
  position: relative;
  background: var(--cream-50);
  overflow: hidden;
  /* Primo elemento della pagina: libera la navbar fixed. */
  padding-top: calc(100dvw * 120 / var(--viewSize));
}
.sd-hero::before {
  content: "";
  position: absolute;
  top: -20%;
  right: -10%;
  width: 55%;
  aspect-ratio: 1 / 1;
  background: radial-gradient(closest-side, var(--light-blue-05) 0%, transparent 100%);
  pointer-events: none;
}
/* Breadcrumb collocata dopo l'hero, subito sopra la sezione "La storia".
   Non serve clearance per la navbar (è a metà pagina): solo spaziatura e
   testo scuro leggibile su sfondo chiaro. */
.sd-breadcrumb {
  padding-top: calc(100dvw * 24 / var(--viewSize));
  padding-bottom: calc(100dvw * 4 / var(--viewSize));
}
.sd-breadcrumb .breadcrumb-item,
.sd-breadcrumb .breadcrumb-item a,
.sd-breadcrumb .breadcrumb-sep {
  color: var(--blue-80);
}
.sd-breadcrumb .breadcrumb-item a:hover {
  color: var(--blue-40);
}
.sd-breadcrumb .breadcrumb-item.active {
  color: var(--blue-20);
}
.sd-hero-inner {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  align-items: end;
  gap: calc(100dvw * 40 / var(--viewSize));
}
.sd-hero-copy {
  padding-top: calc(100dvw * 30 / var(--viewSize));
  padding-bottom: calc(100dvw * 70 / var(--viewSize));
}
.sd-hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-weight: 600;
  font-size: calc(100dvw * 13 / var(--viewSize));
  color: var(--gold-60);
  animation: dirsRise 0.7s 0.1s ease-out both;
}
.sd-hero-eyebrow::before {
  content: "";
  width: calc(100dvw * 38 / var(--viewSize));
  height: 2px;
  background: var(--gold-50);
}
.sd-hero-name {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 68 / var(--viewSize));
  line-height: 1.02;
  letter-spacing: -2px;
  color: var(--blue-80);
  margin-top: calc(100dvw * 12 / var(--viewSize));
  animation: dirsRise 0.7s 0.22s ease-out both;
}
.sd-date-range {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: calc(100dvw * 26 / var(--viewSize));
  margin-top: calc(100dvw * 28 / var(--viewSize));
  animation: dirsRise 0.7s 0.34s ease-out both;
}
.sd-date {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.sd-date-label {
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 600;
  font-size: calc(100dvw * 12 / var(--viewSize));
  color: var(--neutral-60);
}
.sd-date-year {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 44 / var(--viewSize));
  line-height: 1;
  color: var(--blue-40);
  font-variant-numeric: tabular-nums;
}
.sd-date-year.is-oggi {
  color: var(--gold-50);
}
.sd-date-sep {
  width: calc(100dvw * 52 / var(--viewSize));
  height: 2px;
  background: var(--neutral-30);
  margin-bottom: calc(100dvw * 14 / var(--viewSize));
}
.sd-badge {
  margin-bottom: calc(100dvw * 10 / var(--viewSize));
}
.sd-hero-formazioni {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: calc(100dvw * 22 / var(--viewSize));
  animation: dirsRise 0.7s 0.46s ease-out both;
}
.sd-hero-formazioni .pill-badge {
  background: var(--neutral-0);
  box-shadow: var(--shadow-light);
}
.sd-hero-scroll {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: calc(100dvw * 46 / var(--viewSize));
  height: calc(100dvw * 46 / var(--viewSize));
  min-width: 38px;
  min-height: 38px;
  border-radius: 50%;
  border: 1.5px solid var(--light-blue-40);
  color: var(--blue-40);
  margin-top: calc(100dvw * 36 / var(--viewSize));
  text-decoration: none;
  animation:
    dirsRise 0.7s 0.58s ease-out both,
    dirsBounce 2.4s 1.6s ease-in-out infinite;
  transition: background 0.25s, color 0.25s;
}
.sd-hero-scroll:hover {
  background: var(--blue-60);
  border-color: var(--blue-60);
  color: var(--neutral-0);
}

/* Figura: cerchio con gradiente + PNG che esce dal cerchio */
.sd-hero-figure-wrap {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  /* aria sotto la figura: l'anello tratteggiato (bottom -5%) resta nel hero */
  padding-bottom: calc(100dvw * 36 / var(--viewSize));
}
.sd-figure {
  position: relative;
  width: min(calc(100dvw * 430 / var(--viewSize)), 86%);
  /* 100 = diametro cerchio, +18 di aria sopra per la testa che "esce" */
  aspect-ratio: 100 / 118;
  animation: dirsFadeIn 0.8s 0.25s ease-out both;
}
.sd-figure-circle {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  background: radial-gradient(120% 90% at 70% 35%, #0a5aa0 0%, var(--blue-60) 52%, var(--blue-80) 100%);
  box-shadow: var(--shadow-medium);
  animation: sdCircleIn 0.9s 0.3s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.sd-figure-ring {
  position: absolute;
  left: -5%;
  bottom: -5%;
  width: 110%;
  aspect-ratio: 1 / 1;
  border: 1.5px dashed var(--light-blue-40);
  border-radius: 50%;
  opacity: 0.6;
  animation:
    dirsFadeIn 1s 0.6s ease-out both,
    sdSpin 60s linear infinite;
}
.sd-figure-dot {
  position: absolute;
  top: 18%;
  right: 2%;
  width: calc(100dvw * 16 / var(--viewSize));
  height: calc(100dvw * 16 / var(--viewSize));
  min-width: 10px;
  min-height: 10px;
  border-radius: 50%;
  background: var(--gold-40);
  animation:
    dirsFadeIn 0.6s 0.9s ease-out both,
    dirsBounce 3.2s 1s ease-in-out infinite;
}
.sd-figure-note {
  position: absolute;
  color: var(--light-blue-40);
  font-size: calc(100dvw * 18 / var(--viewSize));
  opacity: 0;
  animation: dirFloat 4.6s 1.2s ease-in-out infinite;
}
.sd-figure-note.n1 {
  left: 4%;
  bottom: 30%;
}
.sd-figure-note.n2 {
  right: 8%;
  bottom: 22%;
  font-size: calc(100dvw * 14 / var(--viewSize));
  animation-delay: 2.8s;
}
/* Il PNG viene "ritagliato" dall'unione di due maschere:
   - cerchio in basso (coincide col cerchio disegnato)
   - rettangolo in alto fino al centro del cerchio (lascia uscire la testa)
   Rapporti calcolati sull'aspect-ratio 100/118 del wrapper. */
.sd-figure-img {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  width: 88%;
  height: auto;
  max-height: 100%;
  object-fit: contain;
  object-position: bottom center;
  z-index: 1;
  -webkit-mask-image:
    radial-gradient(closest-side circle at center, #000 99%, transparent 100%),
    linear-gradient(#000, #000);
  mask-image:
    radial-gradient(closest-side circle at center, #000 99%, transparent 100%),
    linear-gradient(#000, #000);
  -webkit-mask-size:
    113.6% 84.75%,
    100% 57.6%;
  mask-size:
    113.6% 84.75%,
    100% 57.6%;
  -webkit-mask-position:
    center bottom,
    center top;
  mask-position:
    center bottom,
    center top;
  -webkit-mask-repeat: no-repeat, no-repeat;
  mask-repeat: no-repeat, no-repeat;
  animation: sdImgRise 0.9s 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.sd-figure-photo {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  background-size: cover;
  background-position: center;
  z-index: 1;
  animation: sdCircleIn 0.9s 0.4s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.sd-figure-shape {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  overflow: hidden;
  z-index: 1;
}
.sd-figure-shape::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  width: 88%;
  height: 90%;
  background: linear-gradient(158deg, #eaf1f8 0%, #a8c9e1 52%, #6fa6cd 100%);
  -webkit-mask: url("/wp-content/uploads/2025/12/shape_orchestra_fiati.webp") no-repeat center bottom / contain;
  mask: url("/wp-content/uploads/2025/12/shape_orchestra_fiati.webp") no-repeat center bottom / contain;
}
@keyframes sdCircleIn {
  from {
    opacity: 0;
    transform: scale(0.75);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes sdImgRise {
  from {
    opacity: 0;
    transform: translateX(-50%) translateY(7%);
  }
  to {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }
}
@keyframes sdSpin {
  to {
    transform: rotate(360deg);
  }
}
@media (max-width: 992px) {
  .sd-hero-inner {
    grid-template-columns: 1fr;
    align-items: start;
  }
  .sd-hero-copy {
    padding-bottom: calc(100dvw * 20 / var(--viewSize));
  }
  .sd-hero-figure-wrap {
    justify-content: center;
    padding-bottom: calc(100dvw * 28 / var(--viewSize));
  }
  .sd-figure {
    width: min(calc(100dvw * 340 / var(--viewSize)), 320px);
  }
  .sd-hero-name {
    font-size: calc(100dvw * 52 / var(--viewSize));
  }
  .sd-date-year {
    font-size: calc(100dvw * 36 / var(--viewSize));
  }
}

/* =========================================================
   SINGLE DIRETTORE — ALTRI DIRETTORI
   Card quadrate con silhouette
   ========================================================= */

.dir-mini-card {
  position: relative;

  display: block;
  width: 100%;
  aspect-ratio: 1;

  overflow: hidden;
  border-radius: 20px;

  background:
    radial-gradient(
      110% 90% at 72% 30%,
      #0a5fa9 0%,
      var(--blue-60) 52%,
      var(--blue-80) 100%
    );

  color: var(--neutral-0);
  text-decoration: none;

  box-shadow:
    0 0 14px rgba(0, 24, 45, 0.22);

  transform: translateZ(0);

  transition:
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.35s ease;
}

.dir-mini-card:visited {
  color: var(--neutral-0);
}

.dir-mini-card:hover {
  color: var(--neutral-0);

  transform: translateY(-5px) scale(1.02);

  box-shadow:
    0 0 18px rgba(122, 175, 211, 0.42),
    0 0 44px rgba(122, 175, 211, 0.38),
    0 22px 44px rgba(0, 24, 45, 0.2);
}

/* Periodo in alto a destra */
.dir-mini-anni {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 5;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  max-width: calc(100% - 28px);
  padding: 7px 12px;

  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 999px;

  background: rgba(0, 24, 45, 0.68);

  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);

  color: var(--neutral-0);

  font-size: 0.7rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.03em;

  white-space: nowrap;

  box-shadow: 0 4px 16px rgba(0, 24, 45, 0.24);
}

.dir-mini-card.is-current .dir-mini-anni {
  background: rgba(0, 71, 136, 0.9);
  border-color: rgba(168, 201, 225, 0.68);
}

/* Silhouette sempre presente */
.dir-mini-shape {
  position: absolute;
  left: 50%;
  bottom: -5%;
  z-index: 1;

  display: block;

  width: 100%;
  height: 100%;

  background:
    linear-gradient(
      158deg,
      #edf4fa 0%,
      #a8c9e1 50%,
      #6fa6cd 100%
    );

  transform: translateX(-50%);
  transform-origin: center bottom;

  -webkit-mask:
    url("/wp-content/uploads/2025/12/shape_orchestra_fiati.webp")
    no-repeat
    center bottom / contain;

  mask:
    url("/wp-content/uploads/2025/12/shape_orchestra_fiati.webp")
    no-repeat
    center bottom / contain;

  transition:
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    filter 0.35s ease;
}

.dir-mini-card:hover .dir-mini-shape {
  transform:
    translateX(-50%)
    translateY(-5px)
    scale(1.035);

  filter: brightness(1.06);
}

/* Gradiente inferiore */
.dir-mini-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;

  background:
    linear-gradient(
      180deg,
      rgba(0, 24, 45, 0.02) 0%,
      rgba(0, 24, 45, 0.04) 44%,
      rgba(0, 24, 45, 0.58) 74%,
      rgba(0, 24, 45, 0.95) 100%
    );

  pointer-events: none;
}

/* Nome dentro l’immagine */
.dir-mini-content {
  position: absolute;
  right: 20px;
  bottom: 20px;
  left: 20px;
  z-index: 4;

  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
}

.dir-mini-nome {
  display: block;

  color: var(--neutral-0);

  font-family: var(--fontFamilyTitle);
  font-size: clamp(1.25rem, 2vw, 1.7rem);
  font-weight: 700;
  line-height: 1.08;

  text-shadow:
    0 2px 12px rgba(0, 24, 45, 0.7);

  text-wrap: balance;
}

.dir-mini-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;

  color: rgba(255, 255, 255, 0.82);

  font-size: 0.78rem;
  font-weight: 600;
  line-height: 1;

  transition:
    gap 0.25s ease,
    color 0.25s ease;
}

.dir-mini-card:hover .dir-mini-cta {
  gap: 12px;
  color: var(--neutral-0);
}

/* Accessibilità da tastiera */
.dir-mini-card:focus-visible {
  outline: 3px solid var(--light-blue-40);
  outline-offset: 6px;
}

/* Mobile */
@media (max-width: 575.98px) {
  .dir-mini-card {
    border-radius: 18px;
  }

  .dir-mini-anni {
    top: 12px;
    right: 12px;

    padding: 6px 10px;
    font-size: 0.66rem;
  }

  .dir-mini-content {
    right: 16px;
    bottom: 16px;
    left: 16px;
  }

  .dir-mini-nome {
    font-size: 1.25rem;
  }

  .dir-mini-shape {
    bottom: -21%;
    width: 124%;
    height: 124%;
  }
}

/* Dispositivi senza vero hover */
@media (hover: none) {
  .dir-mini-card:hover {
    transform: none;

    box-shadow:
      0 0 14px rgba(0, 24, 45, 0.22);
  }

  .dir-mini-card:hover .dir-mini-shape {
    transform: translateX(-50%);
    filter: none;
  }
}

/* Movimento ridotto */
@media (prefers-reduced-motion: reduce) {
  .dir-mini-card,
  .dir-mini-shape,
  .dir-mini-cta {
    transition: none;
  }

  .dir-mini-card:hover {
    transform: none;
  }
}

/* ── REDUCED MOTION ────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .dirs-hero-eyebrow,
  .dirs-hero-title,
  .dirs-hero-lede,
  .dirs-hero-stats,
  .dirs-hero-scroll,
  .dirs-hero-stage,
  .sd-hero-eyebrow,
  .sd-hero-name,
  .sd-date-range,
  .sd-hero-formazioni,
  .sd-hero-scroll,
  .sd-figure,
  .sd-figure-circle,
  .sd-figure-ring,
  .sd-figure-dot,
  .sd-figure-img,
  .sd-figure-photo {
    animation: none;
  }
  .sd-figure-note {
    display: none;
  }
}

/* ============================================================
   RITOCCHI RESPONSIVE — Scuola / Il nostro mondo
   ============================================================ */

/* --- Mobile (<=575px) --- */
@media (max-width: 575.98px) {

  /* Hero pagine interne: pulsanti affiancati e più stretti (Scuola, Unisciti, ...) */
  .hero-photo .hero-text .d-flex.gap-4 {
    flex-wrap: nowrap !important;
    gap: .5rem !important;
  }
  .hero-photo .hero-text a.btn-trasparent {
    flex: 0 0 auto;
    min-width: 0;
    padding-left: 1rem !important;
    padding-right: 1rem !important;
    gap: .5rem !important;
  }

  /* Hero pagine interne: la breadcrumb è ancorata al fondo (blocco .position-absolute
     bottom-0), quindi resta incollata ai pulsanti CTA. Alza i pulsanti per staccarli. */
  .hero-photo .hero-text {
    padding-bottom: calc(100dvw * 96 / var(--viewSize));
  }
  /* Il margin-top mobile globale della breadcrumb qui non serve: il blocco è
     bottom-anchored, il margine gonfia solo la sua altezza sopra i pulsanti. */
  .hero-photo .breadcrumb-nav {
    margin-top: 0;
  }

  /* Freccia "scorri giù": sotto sm la breadcrumb è col-12, quindi la freccia
     finisce da sola sulla riga successiva e resta a sinistra. Centrala. */
  .hero-photo .hero-fall-down,
  .hero-formazione__footer .hero-fall-down {
    margin-inline: auto;
  }

  /* Scuola: "Ultimi eventi" a filo schermo come "Corsi" */
  .sez-eventi-scuola #splideEventiScuola {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  /* Il nostro mondo: "Esplora l'Associazione" titolo più piccolo (no overflow) */
  .sez-links-assoc .section-title {
    font-size: calc(100dvw * 36 / var(--viewSize));
    line-height: 1;
  }
  .sez-links-assoc .section-title .small-title {
    font-size: calc(100dvw * 28 / var(--viewSize));
    line-height: 1;
  }

  /* Il nostro mondo: dimezza lo spazio sopra/sotto le card della timeline Storia */
  .associazione-page .sez-timeline .timeline-track {
    --tl-offset: 45px;
  }
  .associazione-page .sez-timeline .timeline-item::before {
    height: 24px;
  }
}

/* --- Il nostro mondo: sezione intro #sezioni-assoc, no scroll orizzontale ---
   La .row.g-5 ha margini negativi (-1.5rem) > del padding px-3 (1rem) del <section>,
   quindi sfora la viewport. Sotto lg le colonne sono impilate (col-12): azzerare il
   gutter orizzontale elimina il margine negativo senza effetti visivi. */
@media (max-width: 991.98px) {
  .associazione-page #sezioni-assoc .row {
    --bs-gutter-x: 0;
  }
}

/* --- Tablet/Mobile (<=767px): card "Vuoi diventare sostenitore" a tutta larghezza
   (Il nostro mondo, Formazioni, Stampa e ovunque compaia il partial) --- */
@media (max-width: 767.98px) {
  .cont-sostienici .card-sostienici {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
  }
}

/* card-info-bordered: intera card cliccabile via .stretched-link */
.card-info-bordered {
  position: relative;
}

/* ============================================================
   GALLERIA — archivio (lista album per anno) + dettaglio album
   ============================================================ */

/* Chip filtro per tag (stessa estetica dei chip FAQ) */
.gallery-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 32px;
}
.gallery-filter-chip {
  padding: 8px 18px;
  border: 1px solid var(--neutral-20);
  border-radius: 999px;
  background: transparent;
  cursor: pointer;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--neutral-60);
  transition:
    color 0.2s ease,
    background 0.2s ease,
    border-color 0.2s ease;
}
.gallery-filter-chip:hover {
  color: var(--blue-20);
  border-color: var(--blue-20);
}
.gallery-filter-chip.is-active {
  background: var(--blue-20);
  border-color: var(--blue-20);
  color: #fff;
}

/* Sezione anno */
.gallery-year {
  margin-bottom: 48px;
}
.gallery-year.is-paged-out {
  display: none;
}
.gallery-year-head {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin-bottom: 18px;
}
.gallery-year-title {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 48 / var(--viewSize));
  line-height: 1;
  letter-spacing: -1px;
  color: var(--blue-80);
  margin: 0;
}
.gallery-year-count {
  color: var(--neutral-60);
  font-weight: 600;
  font-size: 0.9rem;
}

/* Card album (slide del carosello anno) */
.gallery-year-splide .splide__slide {
  height: auto;
}
.gallery-album-card {
  display: block;
  text-decoration: none;
  height: 100%;
  border-radius: calc(100dvw * 16 / var(--viewSize));
  overflow: hidden;
  background: var(--neutral-0);
  box-shadow: var(--shadow-light);
  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease;
}
.gallery-album-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-medium);
}
.gallery-album-cover {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--neutral-10);
}
.gallery-album-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}
.gallery-album-card:hover .gallery-album-cover img {
  transform: scale(1.05);
}
.gallery-album-count {
  position: absolute;
  bottom: 10px;
  right: 10px;
  background: rgba(0, 24, 45, 0.72);
  color: #fff;
  font-size: 0.8rem;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.gallery-album-body {
  padding: 16px 18px 18px;
}
.gallery-album-title {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: calc(100dvw * 22 / var(--viewSize));
  line-height: 1.2;
  letter-spacing: -0.5px;
  color: var(--blue-80);
  margin: 0;
}

/* Pager 4-anni */
.gallery-pager {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}
.gallery-pager button {
  min-width: 42px;
  height: 42px;
  padding: 0 12px;
  border-radius: 999px;
  border: 1px solid var(--neutral-20);
  background: transparent;
  color: var(--neutral-70);
  font-weight: 600;
  cursor: pointer;
  transition:
    color 0.2s ease,
    background 0.2s ease,
    border-color 0.2s ease;
}
.gallery-pager button:hover:not(:disabled) {
  border-color: var(--blue-20);
  color: var(--blue-20);
}
.gallery-pager button.is-active {
  background: var(--blue-20);
  border-color: var(--blue-20);
  color: #fff;
}
.gallery-pager button:disabled {
  opacity: 0.4;
  cursor: default;
}
.gallery-empty {
  color: var(--neutral-60);
  padding: 24px 0;
}

/* Dettaglio album: griglia foto */
.gallery-detail-header {
  max-width: 820px;
}
.gallery-detail-desc {
  color: var(--neutral-70);
  line-height: 1.65;
}
.gallery-detail-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}
.gallery-detail-tag {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--blue-40);
  background: var(--blue-05, rgba(0, 90, 170, 0.08));
  border: 1px solid var(--neutral-20);
  border-radius: 999px;
  padding: 4px 12px;
}
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}
.gallery-grid-item {
  display: block;
  position: relative;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  border-radius: 10px;
  background: var(--neutral-10);
  cursor: zoom-in;
}
.gallery-grid-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}
.gallery-grid-item:hover img {
  transform: scale(1.06);
}
@media (max-width: 991.98px) {
  .gallery-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 575.98px) {
  .gallery-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
  }
}

/* Lightbox navigabile (griglia dettaglio) */
.gallery-lightbox {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(0, 24, 45, 0.95);
}
.gallery-lightbox.is-open {
  display: flex;
}
.gallery-lightbox-img {
  max-width: 90vw;
  max-height: 82vh;
  object-fit: contain;
  border-radius: 6px;
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.55);
  user-select: none;
}
.gallery-lightbox-caption {
  position: absolute;
  bottom: 22px;
  left: 0;
  right: 0;
  text-align: center;
  color: #fff;
  font-size: 0.95rem;
  padding: 0 20px;
  opacity: 0.9;
  pointer-events: none;
}
.gallery-lightbox-close,
.gallery-lightbox-nav {
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
  cursor: pointer;
  transition: background 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}
.gallery-lightbox-close:hover,
.gallery-lightbox-nav:hover {
  background: rgba(255, 255, 255, 0.26);
}
.gallery-lightbox-close {
  position: absolute;
  top: 18px;
  right: 22px;
  width: 48px;
  height: 48px;
  font-size: 1.5rem;
}
.gallery-lightbox-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 52px;
  height: 52px;
  font-size: 1.35rem;
}
.gallery-lightbox-prev {
  left: 18px;
}
.gallery-lightbox-next {
  right: 18px;
}
body.gallery-lightbox-open {
  overflow: hidden;
}
@media (max-width: 575.98px) {
  .gallery-lightbox-nav {
    width: 42px;
    height: 42px;
  }
  .gallery-lightbox-prev {
    left: 6px;
  }
  .gallery-lightbox-next {
    right: 6px;
  }
}

/* ============================================================
   RITOCCHI RESPONSIVE — sotto-pagine "Il nostro mondo"
   ============================================================ */

/* Titolo h3 "Organigramma" (pagina Cariche) allineato al resto del sito */
.cariche-organigramma-title {
  color: var(--blue-80);
  letter-spacing: -1px;
}

/* Mobile: spazio navbar ↔ breadcrumb non eccessivo.
   .archive-breadcrumb ha già la clearance della navbar fixed nel suo padding-top,
   quindi il margin-top globale di .breadcrumb-nav (≤576) raddoppiava lo spazio. */
@media (max-width: 575.98px) {
  .archive-breadcrumb {
    padding-top: calc(100dvw * 92 / var(--viewSize));
    padding-bottom: 0;
  }
  .archive-breadcrumb .breadcrumb-nav {
    margin-top: 0;
  }
}

/* =========================================================
   ARCHIVIO ARTICOLI
   ========================================================= */

.articoli-archive-page {
  --articles-radius: clamp(16px, 1.4vw, 24px);
  --articles-gap: clamp(20px, 2.5vw, 32px);
  --articles-border: rgba(0, 71, 136, 0.16);
  --articles-shadow: 0 12px 32px rgba(0, 24, 45, 0.08);
  --articles-shadow-hover: 0 22px 48px rgba(0, 24, 45, 0.22);

  background: var(--neutral-0);
}


/* =========================================================
   CONTENUTO DOPO LA HERO
   ========================================================= */

.articoli-archive-page .articoli-archive-content {
  padding-top: clamp(20px, 3vw, 42px);
}

.articoli-archive-page .archive-breadcrumb {
  margin-bottom: clamp(20px, 3vw, 36px);
}


/* =========================================================
   LAYOUT: SIDEBAR + RISULTATI
   ========================================================= */

.articoli-archive-page .archive-layout {
  display: grid;
  grid-template-columns: minmax(240px, 280px) minmax(0, 1fr);
  gap: clamp(32px, 4vw, 64px);
  align-items: start;

  padding-top: 0;
  padding-bottom: clamp(64px, 8vw, 110px);
}

.articoli-archive-page .archive-results {
  min-width: 0;
}


/* =========================================================
   SIDEBAR FILTRI
   ========================================================= */

.articoli-archive-page .archive-sidebar {
  position: sticky;
  top: clamp(90px, 8vw, 120px);
}

.articoli-archive-page .archive-filter-form {
  width: 100%;
  padding: clamp(18px, 1.6vw, 24px);

  border: 1px solid var(--articles-border);
  border-radius: var(--articles-radius);

  background: var(--neutral-0);
  box-shadow: var(--articles-shadow);
}

.articoli-archive-page .archive-filter-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;

  margin-bottom: clamp(18px, 2vw, 26px);
}

.articoli-archive-page .archive-filter-title {
  margin: 0;

  color: var(--blue-40);

  font-family: var(--fontFamilyTitle);
  font-size: clamp(26px, 2.1vw, 34px);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.04em;
}

.articoli-archive-page .archive-filter-reset {
  flex: 0 0 auto;

  margin-top: 4px;

  color: var(--blue-40);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
}

.articoli-archive-page .archive-filter-reset:hover {
  color: var(--blue-80);
  text-decoration: underline;
}

.articoli-archive-page .archive-filter-group {
  margin-bottom: 18px;
}

.articoli-archive-page .archive-filter-label {
  display: block;

  margin-bottom: 7px;

  color: var(--blue-40);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.3;
}

.articoli-archive-page .archive-filter-form .form-select,
.articoli-archive-page .archive-filter-form .form-control {
  display: block;
  width: 100%;
  min-height: 48px;

  padding: 10px 14px;

  border: 1px solid var(--articles-border);
  border-radius: 12px;

  background-color: var(--neutral-0);
  color: var(--neutral-80);

  font-size: 15px;
  line-height: 1.3;

  transition:
    border-color 0.2s ease,
    box-shadow 0.2s ease,
    background-color 0.2s ease;
}

.articoli-archive-page .archive-filter-form .form-select:hover,
.articoli-archive-page .archive-filter-form .form-control:hover {
  border-color: rgba(0, 71, 136, 0.32);
}

.articoli-archive-page .archive-filter-form .form-select:focus,
.articoli-archive-page .archive-filter-form .form-control:focus,
.articoli-archive-page .archive-filter-form .form-select:focus-visible,
.articoli-archive-page .archive-filter-form .form-control:focus-visible {
  border: 1px solid var(--blue-40) !important;
  outline: none !important;

  box-shadow:
    0 0 0 4px rgba(0, 71, 136, 0.1) !important;
}

.articoli-archive-page .archive-filter-submit {
  display: flex;
  width: 100%;
  min-height: 48px;

  align-items: center;
  justify-content: center;

  padding: 10px 18px;

  border: 0;
  border-radius: 12px;

  background: var(--blue-40);
  color: var(--neutral-0);

  font-size: 15px;
  font-weight: 600;
  text-align: center;

  transition:
    background-color 0.2s ease,
    transform 0.2s ease;
}

.articoli-archive-page .archive-filter-submit:hover {
  background: var(--blue-60);
  transform: translateY(-1px);
}


/* =========================================================
   RICERCA
   Larga quanto la colonna delle card
   ========================================================= */

.articoli-archive-page .articoli-search-bar {
  display: block;
  width: 100%;

  margin: 0 0 clamp(24px, 3vw, 38px);
}

.articoli-archive-page .archive-search-field {
  position: relative;
  width: 100%;
}

.articoli-archive-page .archive-search-input {
  display: block;
  width: 100%;
  min-height: 64px;

  padding: 14px 76px 14px 24px;

  border: 1px solid var(--articles-border);
  border-radius: 999px;

  background: var(--neutral-0);
  color: var(--blue-80);

  font-size: clamp(16px, 1.2vw, 18px);
  line-height: 1.3;

  outline: none;
  box-shadow: 0 10px 28px rgba(0, 24, 45, 0.06);

  transition:
    border-color 0.2s ease,
    box-shadow 0.2s ease;
}

.articoli-archive-page .archive-search-input::placeholder {
  color: var(--neutral-50);
}

.articoli-archive-page .archive-search-input:focus,
.articoli-archive-page .archive-search-input:focus-visible {
  border: 1px solid var(--blue-40) !important;
  outline: none !important;

  box-shadow:
    0 0 0 4px rgba(0, 71, 136, 0.1),
    0 14px 36px rgba(0, 24, 45, 0.1) !important;
}

.articoli-archive-page .archive-search-submit {
  position: absolute;
  top: 50%;
  right: 6px;

  display: inline-flex;
  width: 52px;
  height: 52px;

  align-items: center;
  justify-content: center;

  padding: 0;

  border: 0;
  border-radius: 50%;

  background: var(--blue-40);
  color: var(--neutral-0);

  font-size: 19px;

  transform: translateY(-50%);

  transition:
    background-color 0.2s ease,
    transform 0.2s ease;
}

.articoli-archive-page .archive-search-submit:hover {
  background: var(--blue-60);
  transform: translateY(-50%) scale(1.04);
}

.articoli-archive-page .archive-search-submit:focus-visible {
  outline: 3px solid rgba(0, 71, 136, 0.22);
  outline-offset: 3px;
}

/* Risultati ricerca */
.search-results-list {
  display: flex;
  flex-direction: column;
  gap: calc(100dvw * 24 / var(--viewSize));
}

.search-result-item {
  display: grid;
  grid-template-columns: minmax(220px, 320px) 1fr;
  gap: calc(100dvw * 28 / var(--viewSize));
  align-items: stretch;
  padding-bottom: calc(100dvw * 24 / var(--viewSize));
  border-bottom: 1px solid var(--neutral-20);
}

.search-result-thumb {
  width: 100%;
  aspect-ratio: 3 / 2;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: calc(100dvw * 16 / var(--viewSize));
  background: var(--neutral-10);
}

.search-result-thumb img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  object-position: center;
}

.search-result-body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
}

.search-result-title {
  margin: calc(100dvw * 8 / var(--viewSize)) 0;
  font-size: calc(100dvw * 32 / var(--viewSize));
  line-height: 1.15;
}

.search-result-title a {
  color: var(--blue-80);
}

.search-result-title a:hover {
  color: var(--blue-40);
}

.search-result-excerpt {
  color: var(--neutral-60);
  margin: 0;
}

@media (max-width: 767px) {
  .search-result-item {
    grid-template-columns: 1fr;
  }

  .search-result-thumb {
    max-height: 320px;
  }

  .search-result-title {
    font-size: calc(100dvw * 28 / var(--viewSize));
  }
}


/* =========================================================
   FILTRI ATTIVI
   ========================================================= */

.articoli-archive-page .archive-active-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;

  margin: -10px 0 clamp(24px, 3vw, 36px);
}

.articoli-archive-page .archive-active-filters-label {
  margin-right: 2px;

  color: var(--blue-40);
  font-size: 14px;
  font-weight: 600;
}

.articoli-archive-page .archive-filter-chip {
  display: inline-flex;
  min-height: 34px;

  align-items: center;

  padding: 6px 12px;

  border: 1px solid rgba(0, 71, 136, 0.08);
  border-radius: 999px;

  background: rgba(0, 71, 136, 0.08);
  color: var(--blue-40);

  font-size: 13px;
  line-height: 1.2;
}

.articoli-archive-page .archive-filter-clear-all {
  color: var(--blue-40);
  font-size: 13px;
  font-weight: 600;
}

.articoli-archive-page .archive-filter-clear-all:hover {
  color: var(--blue-80);
}


/* =========================================================
   GRIGLIA
   ========================================================= */

.articoli-archive-page .articoli-grid,
.articoli-archive-page .archive-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--articles-gap);
}


/* =========================================================
   CARD ARTICOLO
   ========================================================= */

.articoli-archive-page .card-articolo-grid {
  min-width: 0;
  aspect-ratio: 1;
}

.articoli-archive-page .card-articolo-grid__link {
  position: relative;
  isolation: isolate;

  display: block;
  width: 100%;
  height: 100%;

  overflow: hidden;

  border-radius: var(--articles-radius);

  background: var(--blue-80);
  color: var(--neutral-0);
  text-decoration: none;

  box-shadow: var(--articles-shadow);

  transform: translateZ(0);

  transition:
    transform 0.35s ease,
    box-shadow 0.35s ease;
}

.articoli-archive-page .card-articolo-grid__link:hover,
.articoli-archive-page .card-articolo-grid__link:focus-visible {
  color: var(--neutral-0);

  transform: translateY(-5px);
  box-shadow: var(--articles-shadow-hover);
}

.articoli-archive-page .card-articolo-grid__link:focus-visible {
  outline: 3px solid var(--light-blue-40);
  outline-offset: 4px;
}


/* Gradiente base */

.articoli-archive-page .card-articolo-grid__link::before {
  content: "";

  position: absolute;
  inset: 0;
  z-index: 1;

  background: linear-gradient(
    180deg,
    rgba(0, 24, 45, 0.04) 10%,
    rgba(0, 24, 45, 0.12) 42%,
    rgba(0, 24, 45, 0.94) 100%
  );

  pointer-events: none;
}


/* Gradiente blu scuro in hover */

.articoli-archive-page .card-articolo-grid__link::after {
  content: "";

  position: absolute;
  inset: 0;
  z-index: 2;

  background: linear-gradient(
    155deg,
    rgba(0, 24, 45, 0.72) 0%,
    rgba(0, 48, 91, 0.94) 58%,
    rgba(0, 24, 45, 0.98) 100%
  );

  opacity: 0;
  pointer-events: none;

  transition: opacity 0.4s ease;
}

.articoli-archive-page .card-articolo-grid__link:hover::after,
.articoli-archive-page .card-articolo-grid__link:focus-visible::after {
  opacity: 1;
}


/* Immagine */

.articoli-archive-page .card-articolo-grid__image {
  position: absolute;
  inset: 0;
  z-index: 0;

  display: block;
  width: 100%;
  height: 100%;

  object-fit: cover;
  object-position: center;

  transition:
    transform 0.6s cubic-bezier(0.22, 1, 0.36, 1),
    filter 0.4s ease;
}

.articoli-archive-page
  .card-articolo-grid__link:hover
  .card-articolo-grid__image,
.articoli-archive-page
  .card-articolo-grid__link:focus-visible
  .card-articolo-grid__image {
  transform: scale(1.07);
  filter: saturate(0.82) brightness(0.78);
}


/* Categoria e data */

.articoli-archive-page .card-articolo-grid__meta {
  position: absolute;
  top: clamp(12px, 1.3vw, 18px);
  right: clamp(12px, 1.3vw, 18px);
  left: clamp(12px, 1.3vw, 18px);
  z-index: 4;

  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;

  pointer-events: none;
}

.articoli-archive-page .card-articolo-grid__category,
.articoli-archive-page .card-articolo-grid__date {
  display: inline-flex;
  min-height: 30px;

  align-items: center;

  padding: 5px 10px;

  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 999px;

  background: rgba(0, 24, 45, 0.5);
  color: var(--neutral-0);

  font-size: clamp(11px, 0.8vw, 13px);
  line-height: 1.1;

  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.articoli-archive-page .card-articolo-grid__category {
  overflow: hidden;
  max-width: 62%;

  font-weight: 600;
  letter-spacing: 0.04em;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}

.articoli-archive-page .card-articolo-grid__date {
  flex: 0 0 auto;
}


/* Contenuto inferiore */

.articoli-archive-page .card-articolo-grid__content {
  position: absolute;
  right: clamp(16px, 1.7vw, 24px);
  bottom: clamp(16px, 1.7vw, 24px);
  left: clamp(16px, 1.7vw, 24px);
  z-index: 4;

  color: var(--neutral-0);
}

.articoli-archive-page .card-articolo-grid__title {
  display: -webkit-box;
  overflow: hidden;

  margin: 0;

  color: var(--neutral-0);

  font-family: var(--fontFamilyMain);
  font-size: clamp(20px, 1.6vw, 27px);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.025em;

  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}


/* Testo nascosto prima dell’hover */

.articoli-archive-page .card-articolo-grid__reveal {
  max-height: 0;
  overflow: hidden;

  margin-top: 0;

  opacity: 0;
  transform: translateY(18px);

  transition:
    max-height 0.45s ease,
    margin-top 0.4s ease,
    opacity 0.3s ease,
    transform 0.4s ease;
}

.articoli-archive-page
  .card-articolo-grid__link:hover
  .card-articolo-grid__reveal,
.articoli-archive-page
  .card-articolo-grid__link:focus-visible
  .card-articolo-grid__reveal {
  max-height: 190px;

  margin-top: 12px;

  opacity: 1;
  transform: translateY(0);
}

.articoli-archive-page .card-articolo-grid__excerpt {
  display: -webkit-box;
  overflow: hidden;

  margin: 0 0 14px;

  color: rgba(255, 255, 255, 0.86);

  font-size: clamp(13px, 1vw, 15px);
  line-height: 1.45;

  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
}

.articoli-archive-page .card-articolo-grid__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;

  color: var(--neutral-0);

  font-size: clamp(13px, 1vw, 15px);
  font-weight: 600;
}

.articoli-archive-page .card-articolo-grid__cta i {
  transition: transform 0.25s ease;
}

.articoli-archive-page
  .card-articolo-grid__link:hover
  .card-articolo-grid__cta
  i,
.articoli-archive-page
  .card-articolo-grid__link:focus-visible
  .card-articolo-grid__cta
  i {
  transform: translateX(5px);
}


/* =========================================================
   PAGINAZIONE
   ========================================================= */

.articoli-archive-page .archive-pagination .nav-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.articoli-archive-page .archive-pagination .page-numbers {
  display: inline-flex;
  min-width: 42px;
  min-height: 42px;

  align-items: center;
  justify-content: center;

  padding: 8px 12px;

  border: 1px solid var(--articles-border);
  border-radius: 999px;

  background: var(--neutral-0);
  color: var(--blue-40);

  font-size: 14px;
  font-weight: 600;
  text-decoration: none;

  transition:
    background-color 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease;
}

.articoli-archive-page .archive-pagination a.page-numbers:hover,
.articoli-archive-page .archive-pagination .page-numbers.current {
  border-color: var(--blue-40);

  background: var(--blue-40);
  color: var(--neutral-0);
}


/* =========================================================
   TABLET
   ========================================================= */

@media (max-width: 991.98px) {
  .articoli-archive-page .archive-layout {
    grid-template-columns: 1fr;
    gap: 30px;
  }

  .articoli-archive-page .archive-sidebar {
    position: static;
  }

  .articoli-archive-page .archive-filter-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
  }

  .articoli-archive-page .archive-filter-heading {
    grid-column: 1 / -1;
    margin-bottom: 2px;
  }

  .articoli-archive-page .archive-filter-group {
    margin-bottom: 0;
  }

  .articoli-archive-page .archive-filter-submit {
    align-self: end;
  }

  .articoli-archive-page .articoli-grid,
  .articoli-archive-page .archive-grid-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .articoli-archive-page .card-articolo-grid__date {
    display: none;
  }
}


/* =========================================================
   DISPOSITIVI TOUCH
   Mostra subito testo e CTA
   ========================================================= */

@media (hover: none) {
  .articoli-archive-page .card-articolo-grid__link::after {
    opacity: 0.72;
  }

  .articoli-archive-page .card-articolo-grid__image {
    filter: brightness(0.82);
  }

  .articoli-archive-page .card-articolo-grid__reveal {
    max-height: 170px;

    margin-top: 10px;

    opacity: 1;
    transform: none;
  }

  .articoli-archive-page .card-articolo-grid__excerpt {
    -webkit-line-clamp: 3;
  }
}


/* =========================================================
   SMARTPHONE
   ========================================================= */

@media (max-width: 575.98px) {
  .articoli-archive-page .articoli-archive-content {
    padding-top: 16px;
  }

  .articoli-archive-page .archive-breadcrumb {
    margin-bottom: 20px;
  }

  .articoli-archive-page .archive-layout {
    gap: 24px;
    padding-bottom: 64px;
  }

  .articoli-archive-page .archive-filter-form {
    grid-template-columns: 1fr;

    padding: 18px;

    border-radius: 16px;
  }

  .articoli-archive-page .archive-filter-heading {
    margin-bottom: 4px;
  }

  .articoli-archive-page .archive-filter-title {
    font-size: 27px;
  }

  .articoli-archive-page .archive-search-input {
    min-height: 56px;

    padding-right: 66px;
    padding-left: 18px;

    font-size: 16px;
  }

  .articoli-archive-page .archive-search-submit {
    right: 5px;

    width: 46px;
    height: 46px;

    font-size: 17px;
  }

  .articoli-archive-page .archive-active-filters {
    align-items: flex-start;
    margin-top: -4px;
  }

  .articoli-archive-page .articoli-grid,
  .articoli-archive-page .archive-grid-2 {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .articoli-archive-page .card-articolo-grid__title {
    font-size: 22px;
  }

  .articoli-archive-page .card-articolo-grid__date {
    display: none;
  }

  .articoli-archive-page .card-articolo-grid__excerpt {
    font-size: 14px;
    -webkit-line-clamp: 3;
  }

  .articoli-archive-page .archive-pagination .prev,
  .articoli-archive-page .archive-pagination .next {
    width: 100%;
  }
}


/* =========================================================
   ACCESSIBILITÀ: RIDUZIONE ANIMAZIONI
   ========================================================= */

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

  .articoli-archive-page .card-articolo-grid__reveal {
    max-height: 190px;
    margin-top: 12px;
    opacity: 1;
    transform: none;
  }
}

/* ============================================================
   PAGINA LA SEDE — fix mobile (hero + titoli che sforano)
   ============================================================ */
/* "Come raggiungerci": la .row.g-5 ha margini negativi (-1.5rem) > del padding
   px-3 (1rem) della sezione e sfora la viewport. Sotto lg le colonne sono
   impilate: azzerare il gutter orizzontale non cambia la resa. */
@media (max-width: 991.98px) {
  .sede-page .row {
    --bs-gutter-x: 0;
  }
}

@media (max-width: 767.98px) {
  /* Titoli di sezione (es. "Raggiungerci", parola lunga non spezzabile) */
  .sede-page section h2 {
    font-size: clamp(1.9rem, 7.5vw, 2.6rem);
    overflow-wrap: anywhere;
  }
}

/* ============================================================
   MODALE 5×1000 (a livello body)
   z-index 1030: sopra il contenuto pagina e la navbar (999),
   sotto il menu aperto (.custom-modal = 1032) ed eventuale cookie banner.
   ============================================================ */
/* Widget defilato: nessuna maschera, card in basso a sinistra (desktop),
   bottom-sheet su mobile. Stato open/min gestito via [data-state]. */
.cxm-widget {
  position: fixed;
  z-index: 1030;
  inset: 0 auto auto 0;
  width: 0;
  height: 0;
  pointer-events: none;
}
.cxm-card {
  position: fixed;
  right: 16px;
  left: auto;
  bottom: 16px;
  z-index: 1030;
  width: min(33vw, 430px);
  max-width: calc(100vw - 32px);
  max-height: min(74vh, 640px);
  overflow-y: auto;
  pointer-events: auto;
  background: var(--neutral-0);
  border-radius: 18px;
  border-top: 1px solid var(--blue-40);
  padding: 30px 24px 24px;
  box-shadow: 0 20px 64px rgba(0, 24, 45, 0.42);
  text-align: center;
  /* Punto di partenza "nascosto": in basso e trasparente. In variabile così i
     bottom-sheet mobile cambiano solo il punto di partenza dell'animazione. */
  --cxm-hidden: translateY(calc(100% + 28px));
  /* Default fuori dal render finché un evento non lo apre. Serve display:none
     (non visibility) per evitare il FOUC: main.js è deferred, senza questo il
     popup lampeggerebbe aperto a ogni load prima che il JS lo minimizzi. */
  display: none;
  transform: var(--cxm-hidden);
  opacity: 0;
  transition:
    transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.35s ease,
    display 0.45s allow-discrete;
}
/* Apertura: reso renderizzabile e animato verso l'alto con opacity 0→100.
   @starting-style fornisce il primo fotogramma così l'animazione parte anche
   uscendo da display:none (display:none → pochi ms → animazione). */
.cxm-widget[data-state="open"] .cxm-card {
  display: block;
  transform: none;
  opacity: 1;
}
@starting-style {
  .cxm-widget[data-state="open"] .cxm-card {
    transform: var(--cxm-hidden);
    opacity: 0;
  }
}
/* Tab ridotto: attaccato al bordo sinistro, in basso */
.cxm-tab {
  position: fixed;
  left: 0;
  bottom: 0;
  z-index: 1030;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  pointer-events: auto;
  background: var(--blue-40);
  color: #fff;
  border: 0;
  border-radius: 0 14px 0 0;
  padding: 10px 18px 12px;
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.02em;
  cursor: pointer;
  box-shadow: 0 -6px 22px rgba(0, 24, 45, 0.28);
  transform: translateY(115%);
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.cxm-tab:hover {
  background: var(--blue-60);
}
.cxm-widget[data-state="min"] .cxm-tab {
  transform: none;
}

/* Bottom-sheet su mobile: sempre dal basso, larghezza piena */
@media (max-width: 767.98px) {
  .cxm-card {
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-width: 100%;
    border-radius: 18px 18px 0 0;
    --cxm-hidden: translateY(100%);
  }
}
/* Portrait: al massimo metà altezza */
@media (max-width: 767.98px) and (orientation: portrait) {
  .cxm-card {
    max-height: 50dvh;
  }
}
/* Landscape "telefono" (anche >768 di larghezza ma poco alto): tutta l'altezza */
@media (orientation: landscape) and (max-height: 540px) {
  .cxm-card {
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-width: 100%;
    height: 100dvh;
    max-height: 100dvh;
    border-radius: 0;
    --cxm-hidden: translateY(100%);
  }
}
.cxm-min {
  position: absolute;
  top: 10px;
  right: 12px;
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 50%;
  background: var(--neutral-10);
  color: var(--blue-40);
  font-size: 1rem;
  line-height: 1;
  cursor: pointer;
  transition: background 0.2s ease;
}
.cxm-min:hover {
  background: var(--neutral-20);
}
.cxm-title {
  font-family: var(--fontFamilyTitle);
  color: var(--blue-80);
  margin: 14px 0 8px;
  font-size: 1.6rem;
  line-height: 1.12;
}
.cxm-text {
  color: var(--neutral-70);
  font-size: 0.95rem;
  line-height: 1.55;
  margin: 0 0 18px;
}
.cxm-data {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 0 0 20px;
}
.cxm-row {
  display: flex;
  flex-direction: column;
  gap: 4px;
  text-align: left;
}
.cxm-row__label {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--neutral-50);
  font-weight: 700;
}
.cxm-copy {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  border: 1px dashed var(--blue-20);
  background: var(--neutral-5);
  border-radius: 10px;
  padding: 10px 14px;
  cursor: pointer;
  text-align: left;
  transition:
    border-color 0.2s ease,
    background 0.2s ease;
}
.cxm-copy:hover {
  border-color: var(--blue-40);
  background: var(--neutral-10);
}
.cxm-copy__val {
  font-weight: 700;
  color: var(--blue-80);
  font-size: 1rem;
  word-break: break-all;
}
.cxm-copy i {
  color: var(--blue-40);
  flex: 0 0 auto;
}
.cxm-copy__done {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--blue-40);
  color: #fff;
  font-weight: 700;
  border-radius: 9px;
  opacity: 0;
  transform: scale(0.97);
  transition:
    opacity 0.2s ease,
    transform 0.2s ease;
  pointer-events: none;
}
.cxm-copy.is-copied .cxm-copy__done {
  opacity: 1;
  transform: none;
}
.cxm-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--blue-40);
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  padding: 12px 22px;
  border-radius: 999px;
  transition:
    background 0.2s ease,
    transform 0.2s ease;
}
.cxm-cta:hover {
  background: var(--blue-60);
  color: #fff;
  transform: translateY(-2px);
}
@media (max-width: 575.98px) {
  .cxm-card {
    padding: 26px 18px 22px;
  }
  .cxm-title {
    font-size: 1.35rem;
  }
}

/* ============================================================
   BANNER CONSENSO COOKIE (GDPR / ePrivacy) — a livello body.
   z-index 1050: sopra il menu aperto (.custom-modal = 1032) e il
   widget 5×1000 (1030). Deve poter comparire su qualsiasi pagina.
   Stato guidato da [data-state="banner|prefs|hidden"] su #cookieConsent.
   ============================================================ */
.ck-consent {
  position: fixed;
  inset: 0;
  z-index: 1050;
  pointer-events: none;
  /* Default `display: none`: se la scelta è già stata fatta il banner non entra
     mai nel render tree, quindi niente lampo al primo paint. Lo stato viene
     alzato da js/main.js solo quando serve chiedere il consenso. */
  display: none;
}
.ck-consent[data-state="closed"],
.ck-consent[data-state="banner"],
.ck-consent[data-state="prefs"] {
  display: block;
}
.ck-consent[data-state="hidden"] {
  display: none;
  pointer-events: none;
}

/* Sfondo scuro: presente solo nella vista preferenze (banner = non bloccante) */
.ck-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 24, 45, 0.55);
  opacity: 0;
  visibility: hidden;
  transition:
    opacity 0.3s ease,
    visibility 0.3s ease;
}
.ck-consent[data-state="prefs"] .ck-backdrop {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

/* ── Livello 1: banner sintetico (barra in basso) ── */
.ck-banner {
  position: fixed;
  left: 16px;
  right: 16px;
  bottom: 16px;
  margin: 0 auto;
  max-width: 960px;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
  pointer-events: auto;
  background: var(--neutral-0);
  border-top: 3px solid var(--blue-40);
  border-radius: 18px;
  padding: 22px 26px;
  box-shadow: 0 20px 64px rgba(0, 24, 45, 0.42);
  transform: translateY(calc(100% + 32px));
  opacity: 0;
  visibility: hidden;
  transition:
    transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.35s ease,
    visibility 0.45s;
}
.ck-consent[data-state="banner"] .ck-banner {
  transform: none;
  opacity: 1;
  visibility: visible;
}
.ck-banner__body {
  flex: 1 1 420px;
  min-width: 0;
}

/* ── Livello 2: pannello preferenze (dialog centrato) ── */
.ck-prefs {
  position: fixed;
  left: 50%;
  top: 50%;
  z-index: 2;
  width: min(92vw, 560px);
  max-height: min(88vh, 720px);
  overflow-y: auto;
  pointer-events: auto;
  background: var(--neutral-0);
  border-radius: 18px;
  border-top: 3px solid var(--blue-40);
  padding: 28px 28px 24px;
  box-shadow: 0 20px 64px rgba(0, 24, 45, 0.42);
  transform: translate(-50%, -46%) scale(0.98);
  opacity: 0;
  visibility: hidden;
  transition:
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.3s ease,
    visibility 0.35s;
}
.ck-consent[data-state="prefs"] .ck-prefs {
  transform: translate(-50%, -50%) scale(1);
  opacity: 1;
  visibility: visible;
}

/* Tipografia in linea con il sito */
.ck-title {
  font-family: var(--fontFamilyTitle);
  color: var(--blue-80);
  margin: 0 0 8px;
  font-size: 1.5rem;
  line-height: 1.14;
}
.ck-text {
  color: var(--neutral-70);
  font-size: 0.92rem;
  line-height: 1.6;
  margin: 0;
}
.ck-link {
  color: var(--blue-40);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.ck-link:hover {
  color: var(--blue-60);
}

/* Azioni */
.ck-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.ck-banner .ck-actions {
  flex: 0 0 auto;
}
.ck-actions--prefs {
  justify-content: flex-end;
  margin-top: 22px;
}
.ck-btn {
  font-family: var(--fontFamilyMain);
  font-weight: 700;
  font-size: 0.9rem;
  line-height: 1;
  border-radius: 999px;
  padding: 12px 22px;
  cursor: pointer;
  border: 1px solid transparent;
  transition:
    background 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease,
    transform 0.2s ease;
}
.ck-btn--primary {
  background: var(--blue-40);
  color: #fff;
}
.ck-btn--primary:hover {
  background: var(--blue-60);
  transform: translateY(-2px);
}
.ck-btn--outline {
  background: transparent;
  color: var(--blue-40);
  border-color: var(--blue-40);
}
.ck-btn--outline:hover {
  background: var(--blue-40);
  color: #fff;
}
.ck-btn--ghost {
  background: transparent;
  color: var(--neutral-70);
  border-color: transparent;
  text-decoration: underline;
  text-underline-offset: 3px;
  padding-left: 8px;
  padding-right: 8px;
}
.ck-btn--ghost:hover {
  color: var(--blue-40);
}

/* Header pannello */
.ck-prefs__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 4px;
}
.ck-close {
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 50%;
  background: var(--neutral-10);
  color: var(--blue-40);
  font-size: 1.05rem;
  cursor: pointer;
  transition: background 0.2s ease;
}
.ck-close:hover {
  background: var(--neutral-20);
}

/* Categorie */
.ck-cats {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 20px 0 0;
}
.ck-cat {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 16px;
  border: 1px solid var(--neutral-20);
  border-radius: 12px;
  background: var(--neutral-5);
}
.ck-cat__info {
  min-width: 0;
}
.ck-cat__title {
  display: block;
  font-weight: 700;
  color: var(--blue-80);
  font-size: 0.98rem;
  margin-bottom: 3px;
}
.ck-cat__desc {
  display: block;
  color: var(--neutral-60);
  font-size: 0.82rem;
  line-height: 1.5;
}

/* Switch */
.ck-switch {
  position: relative;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  margin-top: 2px;
  cursor: pointer;
}
.ck-switch input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.ck-switch__track {
  display: block;
  width: 46px;
  height: 26px;
  border-radius: 999px;
  background: var(--neutral-40);
  transition: background 0.2s ease;
}
.ck-switch__track::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 3px rgba(0, 24, 45, 0.3);
  transition: transform 0.2s ease;
}
.ck-switch input:checked + .ck-switch__track {
  background: var(--blue-40);
}
.ck-switch input:checked + .ck-switch__track::after {
  transform: translateX(20px);
}
.ck-switch input:focus-visible + .ck-switch__track {
  outline: 2px solid var(--blue-20);
  outline-offset: 2px;
}
.ck-switch.is-locked {
  cursor: not-allowed;
}
.ck-switch.is-locked .ck-switch__track {
  background: var(--blue-20);
  opacity: 0.7;
}

/* Mobile: banner e pannello a tutta larghezza dal basso */
@media (max-width: 767.98px) {
  .ck-banner {
    left: 0;
    right: 0;
    bottom: 0;
    border-radius: 18px 18px 0 0;
    padding: 20px 18px 22px;
    gap: 16px;
  }
  .ck-actions {
    width: 100%;
  }
  .ck-actions .ck-btn {
    flex: 1 1 auto;
    text-align: center;
  }
  .ck-btn--ghost {
    flex-basis: 100%;
    order: 3;
  }
  .ck-prefs {
    left: 0;
    right: 0;
    top: auto;
    bottom: 0;
    transform: translateY(100%);
    width: 100%;
    max-width: 100%;
    max-height: 88dvh;
    border-radius: 18px 18px 0 0;
    padding: 24px 18px 22px;
  }
  .ck-consent[data-state="prefs"] .ck-prefs {
    transform: translateY(0);
  }
  .ck-actions--prefs {
    justify-content: stretch;
  }
  .ck-title {
    font-size: 1.3rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ck-banner,
  .ck-prefs,
  .ck-backdrop {
    transition:
      opacity 0.2s ease,
      visibility 0.2s ease;
  }
  .ck-consent[data-state="banner"] .ck-banner,
  .ck-consent[data-state="prefs"] .ck-prefs {
    transition:
      opacity 0.2s ease,
      visibility 0.2s ease,
      transform 0s;
  }
}

/* ============================================================
   PAGINA PIANI DI PAGAMENTO
   Hero riusa .single-cpt-hero (immagine + gradiente blu, senza CTA).
   ============================================================ */

/* Fondo blu di base: senza immagine il gradiente resta leggibile invece di
   schiarirsi sul bianco della pagina. Con l'immagine viene coperto. */
.piani-hero {
  background-color: var(--blue-60);
}
/* Titolo fluido: con la misura globale dell'h1 "Pagamento" sforava su mobile.
   Lo .small-title si adegua da solo (è legato al genitore con min(…, 0.68em)). */
.piani-hero .single-cpt-hero-content h1 {
  font-size: clamp(2.1rem, 6vw, 4.4rem);
  line-height: 1.05;
}

/* Breadcrumb: qui sta subito sotto la hero, quindi non serve il grande
   padding-top di .archive-breadcrumb (pensato per le pagine senza hero). */
.piani-page .archive-breadcrumb {
  padding-top: clamp(14px, 1.6vw, 26px);
  padding-bottom: 0;
  margin-bottom: 0;
}
.piani-page .archive-breadcrumb .breadcrumb-nav {
  margin-top: 0;
  padding-top: 0;
  padding-bottom: 0;
}

.piani-intro__text {
  max-width: 820px;
  color: var(--neutral-70);
  font-size: clamp(16px, 1.3vw, 19px);
  line-height: 1.75;
}

/* Link "Spese detraibili": centrato, blu, sottolineato.
   La sottolineatura sta solo sul testo: sull'intero link prenderebbe anche
   la freccetta. */
.piani-detrazioni-link {
  color: var(--blue-40);
  font-size: clamp(15px, 1.15vw, 17px);
  font-weight: 600;
  text-decoration: none;
  transition:
    color 0.2s ease,
    gap 0.2s ease;
}
.piani-detrazioni-link span {
  text-decoration: underline;
  text-underline-offset: 4px;
}
.piani-detrazioni-link:hover {
  color: var(--blue-60);
  gap: 12px;
}
.piani-detrazioni-link i {
  font-size: 0.85em;
  text-decoration: none;
}

/* --- Griglia delle due card --- */
.piani-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(24px, 3vw, 40px);
  max-width: 1040px;
  align-items: stretch;
}
/* Con una sola card attiva non deve occupare tutta la larghezza. */
.piani-grid--single {
  grid-template-columns: minmax(0, 1fr);
  max-width: 560px;
}
.piano-card-wrap {
  display: flex;
}
@media (max-width: 767.98px) {
  .piani-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Bordo animato in hover: l'angolo della conic-gradient viene animato, così
   il riflesso chiaro gira lungo tutto il perimetro. @property serve perché
   un custom property di tipo <angle> è interpolabile solo se registrato. */
@property --piano-angle {
  syntax: "<angle>";
  initial-value: 0deg;
  inherits: false;
}

.piano-card {
  display: flex;
  width: 100%;
  flex-direction: column;
  padding: clamp(26px, 2.6vw, 40px);
  border: 2px solid var(--blue-40);
  border-radius: 22px;
  background: var(--neutral-0);
  box-shadow: 0 18px 44px rgba(0, 24, 45, 0.16);
  transition:
    transform 0.3s ease,
    box-shadow 0.3s ease,
    background-color 0.3s ease;
}

/* Hover: più grande, ombra più profonda, fondo azzurrino e bordo "riflesso".
   Il bordo diventa trasparente e il gradiente viene dipinto in border-box,
   mentre il colore di fondo resta in padding-box. */
.piano-card:hover,
.piano-card:focus-within {
  transform: scale(1.03);
  box-shadow: 0 30px 70px rgba(0, 24, 45, 0.26);
  border-color: transparent;
  background:
    linear-gradient(var(--light-blue-05), var(--light-blue-05)) padding-box,
    conic-gradient(
        from var(--piano-angle),
        var(--blue-60) 0deg,
        var(--blue-40) 60deg,
        var(--light-blue-05) 110deg,
        #ffffff 130deg,
        var(--light-blue-05) 150deg,
        var(--blue-40) 200deg,
        var(--blue-60) 300deg,
        var(--blue-60) 360deg
      )
      border-box;
  animation: pianoBorderSpin 3.2s linear infinite;
}

@keyframes pianoBorderSpin {
  to {
    --piano-angle: 360deg;
  }
}

.piano-card__title {
  font-family: var(--fontFamilyTitle);
  font-weight: 700;
  font-size: clamp(26px, 2.4vw, 36px);
  line-height: 1.1;
  letter-spacing: -0.5px;
  color: var(--blue-40);
}
/* Asterisco: grande e appoggiato in alto, non centrato sulla riga. */
.piano-card__star {
  display: inline-block;
  margin-left: 4px;
  color: var(--blue-20);
  font-size: 1.15em;
  font-weight: 400;
  line-height: 1;
  vertical-align: super;
}

.piano-card__desc {
  color: var(--neutral-70);
  font-size: clamp(15px, 1.1vw, 16px);
  line-height: 1.7;
}

.piano-card__list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.piano-card__list li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  color: var(--neutral-80);
  font-size: clamp(15px, 1.1vw, 16px);
  line-height: 1.55;
}
.piano-card__list li i {
  flex: 0 0 auto;
  margin-top: 4px;
  color: var(--blue-40);
  font-size: 0.9em;
}

/* Lo spazio libero si accumula sotto la lista: i pulsanti restano allineati
   in fondo, ma il margine della utility (mt-3) sul pulsante resta valido. */
.piano-card__list {
  margin-bottom: auto;
}
.piano-card__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  align-self: flex-start;
  padding: 14px 30px;
  border: 0;
  border-radius: 999px;
  background: var(--blue-40);
  color: var(--neutral-0);
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  transition:
    background-color 0.2s ease,
    transform 0.2s ease;
}
.piano-card__cta:hover {
  background: var(--blue-60);
  transform: translateY(-2px);
}
.piano-card__cta:focus-visible {
  outline: 3px solid rgba(0, 71, 136, 0.25);
  outline-offset: 3px;
}
.piano-card__cta i {
  font-size: 0.85em;
}

/* --- Card MusichEmozioni: larga quanto la griglia, bassa --- */
.piani-extra-wrap {
  max-width: 1040px;
}
.piano-extra {
  display: flex;
  align-items: center;
  gap: clamp(16px, 2vw, 24px);
  padding: clamp(18px, 1.8vw, 24px) clamp(20px, 2.2vw, 30px);
  border: 2px solid var(--blue-40);
  border-radius: 18px;
  background: var(--neutral-0);
  box-shadow: 0 14px 34px rgba(0, 24, 45, 0.12);
}
.piano-extra__icon {
  flex: 0 0 auto;
  display: inline-flex;
  width: 46px;
  height: 46px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--light-blue-05);
  color: var(--blue-40);
  font-size: 18px;
}
.piano-extra__body {
  min-width: 0;
}
.piano-extra__title {
  color: var(--blue-40);
  font-family: var(--fontFamilyTitle);
  font-size: clamp(19px, 1.5vw, 23px);
  font-weight: 700;
  line-height: 1.2;
}
.piano-extra__text {
  margin-top: 4px !important;
  color: var(--neutral-70);
  font-size: clamp(14px, 1.05vw, 16px);
  line-height: 1.6;
}
@media (max-width: 575.98px) {
  .piano-extra {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }
}

/* --- Nota con asterisco sotto le card --- */
.piani-nota-famiglia {
  position: relative;
  max-width: 1040px;
  padding: 18px 22px 18px 48px;
  border-radius: 14px;
  background: var(--light-blue-05);
  color: var(--blue-80);
  font-size: clamp(14px, 1.05vw, 16px);
  line-height: 1.65;
}
.piani-nota-famiglia__star {
  position: absolute;
  top: 12px;
  left: 22px;
  color: var(--blue-40);
  font-size: 30px;
  line-height: 1;
}

/* --- Sezione corsi ---
   Il partial section-header nasconde l'SVG decorativo sotto md: finché si
   vede la sezione resta trasparente, sotto md prende il fondo grigio. */
.piani-corsi {
  background: transparent;
}
@media (max-width: 767.98px) {
  .piani-corsi {
    background: var(--neutral-10);
  }
}

/* --- Mobile --- */
@media (max-width: 575.98px) {
  /* Hero: "I nostri" su una riga e il titolo sotto. */
  .piani-hero .single-cpt-hero-content h1 > .small-title {
    display: block;
  }
  /* Breadcrumb: vicina alla hero sopra, staccata dal contenuto sotto. */
  .piani-page .archive-breadcrumb {
    padding-top: 14px;
  }
  .piani-page .piani-intro {
    padding-top: 30px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .piano-card {
    transition: box-shadow 0.2s ease;
  }
  .piano-card:hover,
  .piano-card:focus-within {
    transform: none;
    animation: none;
  }
}

/* Card "Dettagli del corso": rimando ai piani di pagamento. */
.single-info-piani-link {
  padding: 14px 18px;
  border: 1px solid var(--blue-20);
  border-radius: 12px;
  background: var(--light-blue-05);
  color: var(--blue-40);
  font-size: 15px;
  font-weight: 600;
  transition:
    background-color 0.25s ease,
    border-color 0.25s ease,
    color 0.25s ease,
    transform 0.2s ease,
    box-shadow 0.25s ease;
}
/* Hover allineato a .btn-primary (es. "Contattaci" nel dettaglio docente):
   blu chiaro, testo bianco, lieve sollevamento. */
.single-info-piani-link:hover {
  background: var(--blue-20);
  border-color: var(--blue-20);
  color: var(--neutral-0);
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(0, 71, 136, 0.3);
}
.single-info-piani-link:active {
  transform: translateY(0);
}
.single-info-piani-link i:last-child {
  font-size: 0.8em;
}

/* ============================================================
   FIX SCROLL ORIZZONTALE MOBILE
   ============================================================ */

/* --- Dettaglio Docente: la .row.g-5 di .single-cpt-body ha margini negativi
   (-1.5rem) > del padding px-3 (1rem) del contenitore, quindi sfora la viewport.
   Sotto lg le colonne sono impilate (col-12): azzerare il gutter orizzontale
   elimina il margine negativo senza effetti visivi.
   Stesso trattamento di #sezioni-assoc (vedi sopra). --- */
@media (max-width: 991.98px) {
  .single-docente-page .row {
    --bs-gutter-x: 0;
  }
}

/* --- AOS fade-left / fade-right: contenimento dello stato pre-animazione ---
   Prima che AOS faccia partire l'animazione l'elemento è a translate3d(±100px,0,0)
   e sporge oltre il bordo della viewport, generando la scrollbar orizzontale.
   Il contenimento sta sulle sezioni che ospitano elementi AOS a filo viewport
   (come consiglia la doc di AOS) e non sul body, così gli sticky del sito
   continuano a funzionare.
   overflow-x: clip e non hidden: hidden creerebbe uno scroll container e
   spezzerebbe position: sticky nei discendenti (es. .formazione-intro__sticky);
   clip non crea scroll container e lascia overflow-y: visible. */
main section:has([data-aos^="fade-left"], [data-aos^="fade-right"]),
main > div:has([data-aos^="fade-left"], [data-aos^="fade-right"]) {
  overflow-x: clip;
}

/* ============================================================
   ARTICOLI — filtri in drawer da sinistra (sotto lg)
   Il pulsante sta a sinistra della barra di ricerca; la sidebar
   è la stessa del desktop, riposizionata come pannello fisso.
   Comportamento: js/main.js → initArticoliFilters.
   ============================================================ */

.articoli-filters-toggle,
.articoli-filters-close,
.articoli-filters-backdrop {
  display: none;
}

/* main.inner-page ha `animation: pageEnter ... both`: la transform residua
   resta dichiarata anche a animazione finita, quindi il <main> fa da
   contenitore per i position: fixed e da stacking context. Il drawer
   risulterebbe ancorato alla pagina invece che alla viewport (fuori vista se
   si è scrollato) e sotto la navbar. Da aperto la transform va azzerata. */
body.articoli-filters-open main.inner-page {
  animation: none;
  transform: none;
}

@media (max-width: 991.98px) {
  .articoli-filters-toggle {
    display: inline-flex;
  }

  /* La barra di ricerca resta a fianco del pulsante: il margine passa
     al wrapper, altrimenti i due elementi si disallineano. */
  .articoli-archive-page .articoli-search-wrap {
    align-items: center;
    margin: 0 0 clamp(24px, 3vw, 38px);
  }
  .articoli-archive-page .articoli-search-wrap .articoli-search-bar {
    flex: 1 1 auto;
    min-width: 0;
    margin-bottom: 0;
  }

  /* Sidebar → drawer fuori schermo a sinistra.
     Selettore sull'id e non su .articoli-archive-page: da aperto il pannello
     viene spostato in <body> (il <main> ha una transform, che lo renderebbe
     il contenitore del position: fixed e lo terrebbe sotto la navbar).
     visibility evita che i campi restino raggiungibili col tab da chiuso. */
  #articoliFilters {
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    z-index: 1041;
    width: min(88vw, 380px);
    padding: 56px 18px 32px;
    overflow-y: auto;
    background: var(--neutral-0);
    box-shadow: 24px 0 64px rgba(0, 24, 45, 0.42);
    transform: translateX(-100%);
    visibility: hidden;
    transition:
      transform 0.42s cubic-bezier(0.22, 1, 0.36, 1),
      visibility 0s linear 0.42s;
  }
  #articoliFilters.is-open {
    transform: translateX(0);
    visibility: visible;
    transition:
      transform 0.42s cubic-bezier(0.22, 1, 0.36, 1),
      visibility 0s;
  }

  /* Dentro il drawer il form torna a colonna singola e senza card:
     la cornice è il pannello stesso. */
  #articoliFilters .archive-filter-form {
    display: block;
    padding: 0;
    border: 0;
    box-shadow: none;
    background: transparent;
  }
  #articoliFilters .archive-filter-group {
    margin-bottom: 16px;
  }

  .articoli-filters-backdrop {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 1040;
    background: rgba(0, 24, 45, 0.55);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
  }
  .articoli-filters-backdrop.is-open {
    opacity: 1;
    pointer-events: auto;
  }

  .articoli-filters-close {
    display: inline-flex;
    position: absolute;
    top: 12px;
    right: 12px;
    width: 38px;
    height: 38px;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid var(--neutral-20);
    border-radius: 50%;
    background: var(--neutral-0);
    color: var(--blue-40);
    font-size: 16px;
    cursor: pointer;
    transition:
      background-color 0.2s ease,
      color 0.2s ease;
  }
  .articoli-filters-close:hover {
    background: var(--blue-40);
    color: var(--neutral-0);
  }
}

/* ============================================================
   PREMIO CARLO MARNATI
   Intestazione con ritratto circolare + albo dei vincitori
   (CPT marnati_edizione, senza pagine proprie).
   ============================================================ */

/* Copertina: immagine in evidenza della pagina, sopra il titolo. */
.marnati-cover {
  margin-bottom: clamp(20px, 3vw, 34px);
}
.marnati-cover__img {
  display: block;
  width: 100%;
  aspect-ratio: 21 / 9;
  object-fit: cover;
}

/* Titolo a sinistra, ritratto a destra. Il testo non supera i 640px
   (.archive-subtitle ha max-width 640px): oltre resterebbe un vuoto fra
   paragrafo e ritratto. */
.marnati-intro {
  display: flex;
  align-items: center;
  gap: clamp(24px, 4vw, 56px);
}
.marnati-intro__text {
  flex: 0 1 640px;
  min-width: 0;
}
.marnati-ritratto {
  flex: 0 0 30%;
  width: 30%;
  max-width: 100%;
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  background: var(--neutral-0);
  box-shadow: 0 18px 48px rgba(0, 24, 45, 0.28);
}
.marnati-ritratto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* Senza foto: le due chiavi sfalsate del segnaposto ricerca
   (partials/placeholder-clefs.php). */
.marnati-ritratto--placeholder {
  display: grid;
  place-items: center;
  background: linear-gradient(140deg, var(--light-blue-05), var(--neutral-0));
}

.df-bg{
  background: linear-gradient(35deg, var(--blue-40)0% 10%, var(--light-blue-10) , var(--blue-40)90% 100%) !important;
}

/* Albo: un blocco per anno, come l'archivio Stampa. */
.marnati-year-heading {
  font-family: var(--fontFamilyTitle);
  font-size: clamp(1.5rem, 3vw, 2.2rem);
  font-weight: 800;
  color: var(--blue-80);
  margin-bottom: 24px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--neutral-20);
  position: relative;
}
.marnati-year-heading::after {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 60px;
  height: 2px;
  background: var(--blue-20);
}
.marnati-winners-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: clamp(20px, 3vw, 40px);
}
.marnati-winner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  text-align: center;
}
.marnati-winner__avatar {
  display: block;
  width: min(100%, 160px);
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  background: var(--neutral-0);
  box-shadow: 0 10px 28px rgba(0, 24, 45, 0.22);
}
.marnati-winner__avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* Senza foto: logo della Filarmonica dentro al cerchio. */
.marnati-winner__avatar--placeholder {
  display: grid;
  place-items: center;
  background: var(--light-blue-05);
}
.marnati-winner__avatar .logo-filarmonica {
  width: 56%;
  height: auto;
  fill: var(--blue-40);
}
.marnati-winner__name {
  font-weight: 600;
  color: var(--blue-80);
  line-height: 1.25;
}

@media (max-width: 767.98px) {
  /* Ritratto sopra il testo e più contenuto: a colonna singola occuperebbe
     tutta la larghezza. */
  /* In colonna il ritratto va sotto al testo. */
  .marnati-intro {
    flex-direction: column;
    align-items: flex-start;
    gap: 24px;
  }
  .marnati-intro__text {
    flex: 0 0 auto;
    width: 100%;
  }
  .marnati-ritratto {
    flex: 0 0 auto;
    width: min(58vw, 240px);
    align-self: center;
  }
  .marnati-cover__img {
    aspect-ratio: 16 / 9;
  }
  .marnati-winners-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Stanza sede: immagine in evidenza a tutta larghezza, 16/9. */
.stanza-cover {
  margin-top: clamp(20px, 3vw, 34px);
}
.stanza-cover-img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* ============================================================
   DETTAGLIO INFORMATORE (single-stampa) — fix mobile
   ============================================================ */
@media (max-width: 991.98px) {
  /* .row.g-5 con margini negativi (-1.5rem) > del padding px-3 (1rem):
     sotto lg le colonne sono impilate, il gutter orizzontale non serve. */
  .single-stampa .row {
    --bs-gutter-x: 0;
  }
}

@media (max-width: 767.98px) {
  /* Il titolo eredita l'h1 globale (96 fluid): su smartphone sfora. */
  .single-stampa h1 {
    font-size: clamp(1.9rem, 8.5vw, 2.8rem);
    line-height: 1.1;
    overflow-wrap: anywhere;
  }
}

/* ============================================================
   FLUENT FORMS — skin Filarmonica
   ============================================================

   I moduli di contatto girano su Fluent Forms (vedi
   filarmonica_render_ff_form() in functions.php). Il plugin porta il suo
   markup e la sua skin: queste regole lo riportano all'aspetto di
   .form-floating-group (righe ~9157), che sostituisce.

   Ogni selettore è ancorato a `.ff-fil .fluentform` — specificità 0,3,0 o
   più. Il plugin scrive al massimo `.fluentform …` e `.ff-default …`
   (0,2,0), quindi qui vinciamo sempre, anche nel caso limite in cui il suo
   foglio venisse stampato dopo custom.css. Il wrapper .ff-fil lo mette
   filarmonica_render_ff_form().

   Nota: queste classi NON sono in scripts/critical-classes.txt e non serve
   che ci entrino — il modulo della pagina Contatti sta sotto la piega e
   quello della modale è nascosto al caricamento.
   ============================================================ */

.ff-fil .fluentform {
  font-family: var(--fontFamilyMain);
}

/* Colonne: le celle hanno già flex-basis inline, serve solo la gronda. */
.ff-fil .fluentform .ff-t-container {
  gap: 16px;
}
.ff-fil .fluentform .ff-t-cell {
  padding: 0;
}

/* Impilamento su mobile.
   Fluent Forms lo prevede, ma con una classe .mobile che aggiunge via JS
   fluentform-advanced.js — script che qui non carichiamo. Senza questa
   regola Nome/Cognome ed Email/Telefono restano affiancati al 50% anche su
   smartphone, mentre il form che stiamo sostituendo era col-12 col-md-6.
   Si agisce sul container e non sulle celle perché il flex-basis:50% è
   inline, e da foglio di stile lo si batterebbe solo con !important. */
@media (max-width: 767.98px) {
  .ff-fil .fluentform .ff-t-container {
    display: block;
  }
  .ff-fil .fluentform .ff-t-cell + .ff-t-cell {
    margin-top: 16px;
  }
}

/* ── Gruppo campo = ex .form-floating-group ────────────────── */
.ff-fil .fluentform .ff-el-group {
  position: relative;
  margin-bottom: 16px;
}

/* Label flottante: Fluent Forms stampa il div della label PRIMA del
   contenuto, quindi basta toglierlo dal flusso e ancorarlo al gruppo.

   Il secondo selettore non è ridondante. Il plugin ha
   `.fluentform .ff-el-group.ff-el-form-top .ff-el-input--label{display:block}`,
   che è 0,4,0 esattamente come il primo selettore qui sotto: a parità di
   specificità decide l'ordine dei fogli, e ci basterebbe che Fluent Forms
   accodasse il proprio CSS a metà body (cosa che fa da sé quando il modulo
   non è nel post_content) per ritrovarsi le label impilate sopra i campi.
   Aggiungendo .ff-el-form-top saliamo a 0,5,0 e vinciamo comunque, anche
   se un domani il priming in functions.php smettesse di funzionare. */
.ff-fil .fluentform .ff-el-group.ff-el-form-top > .ff-el-input--label,
.ff-fil .fluentform .ff-el-group > .ff-el-input--label {
  position: absolute;
  top: 4px;
  left: 16px;
  z-index: 2;
  width: auto;
  margin: 0;
  padding: 0;
  pointer-events: none;
}
.ff-fil .fluentform .ff-el-group.ff-el-form-top > .ff-el-input--label label,
.ff-fil .fluentform .ff-el-group > .ff-el-input--label label {
  margin: 0;
  color: var(--neutral-50);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.2;
  text-transform: uppercase;
}
/* L'asterisco dei campi obbligatori lo genera il plugin in ::after, rosso.
   Lo riportiamo al grigio della label, com'era il " *" scritto a mano. */
.ff-fil .fluentform .ff-el-group > .ff-el-input--label.ff-el-is-required label::after,
.ff-fil .fluentform .ff-el-group > .ff-el-input--label.ff-el-is-required label::before {
  color: var(--neutral-50);
}

/* ── Controlli ─────────────────────────────────────────────── */
.ff-fil .fluentform .ff-el-group .ff-el-form-control {
  width: 100%;
  padding: 24px 16px 8px;
  border: 1.5px solid var(--neutral-30);
  border-radius: 12px;
  background: var(--neutral-0);
  color: var(--neutral-80);
  font-family: inherit;
  font-size: 0.95rem;
  line-height: 1.5;
  transition:
    border-color 0.25s ease,
    box-shadow 0.25s ease;
}
.ff-fil .fluentform .ff-el-group .ff-el-form-control:hover {
  border-color: rgba(0, 71, 136, 0.32);
}
.ff-fil .fluentform .ff-el-group .ff-el-form-control:focus {
  border-color: var(--blue-40);
  box-shadow: 0 0 0 4px rgba(0, 71, 136, 0.1);
  outline: none;
}
.ff-fil .fluentform .ff-el-group .ff-el-form-control::placeholder {
  color: var(--neutral-50);
  opacity: 1;
}

.ff-fil .fluentform .ff-el-group textarea.ff-el-form-control {
  min-height: 140px;
  resize: vertical;
}

/* Select: stessa logica del vecchio .form-floating-group select. Il testo
   dell'option lo centra il browser nel content box e non segue il padding
   asimmetrico che tiene il testo sotto la label: senza appearance:none
   finisce addosso a "Oggetto". Azzerarne l'aspetto nativo ci ridà il
   controllo della scatola e toglie la freccia di sistema. */
.ff-fil .fluentform .ff-el-group select.ff-el-form-control {
  appearance: none;
  -webkit-appearance: none;
  height: auto;
  min-height: 56px;
  padding: 24px 44px 8px 16px;
  line-height: 1.3;
  cursor: pointer;
  background-color: var(--neutral-0);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23004788' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");
  background-position: right 16px center;
  background-repeat: no-repeat;
  background-size: 14px;
}
/* Finché è selezionato il placeholder (value vuoto) il campo required è
   :invalid: lo teniamo grigio, così una scelta vera si distingue. */
.ff-fil .fluentform .ff-el-group select.ff-el-form-control:invalid {
  color: var(--neutral-60);
}

/* ── Checkbox privacy ──────────────────────────────────────────
   Sui gruppi con una checkbox la label flottante qui sopra non va
   applicata: finirebbe sovrapposta al testo della checkbox stessa.

   Tre agganci in ordine di robustezza decrescente, di proposito ridondanti:
   1. .ff_gdpr_field  — la mette Fluent Forms da sé sul campo GDPR Agreement,
      non serve configurare niente;
   2. .ff-fil-check   — la Container Class da impostare nell'editor del
      modulo, utile se un domani si usa una checkbox normale al posto del
      campo GDPR;
   3. :has()          — rete di sicurezza per qualsiasi altro gruppo che
      contenga una checkbox. Sui browser che non lo supportano la regola
      viene semplicemente ignorata, e restano le prime due. */
.ff-fil .fluentform .ff-el-group.ff-fil-check,
.ff-fil .fluentform .ff-el-group.ff_gdpr_field {
  margin-bottom: 8px;
}
.ff-fil .fluentform .ff-el-group.ff-fil-check > .ff-el-input--label,
.ff-fil .fluentform .ff-el-group.ff_gdpr_field > .ff-el-input--label {
  position: static;
  display: none;
}
.ff-fil .fluentform .ff-el-group:has(.ff-el-form-check) > .ff-el-input--label {
  position: static;
  display: none;
}
.ff-fil .fluentform .ff-el-form-check {
  margin-bottom: 0;
}
.ff-fil .fluentform .ff-el-form-check label.ff-el-form-check-label {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 0;
  color: var(--neutral-60);
  cursor: pointer;
  font-size: 0.85rem;
  line-height: 1.45;
}
.ff-fil .fluentform .ff-el-form-check .ff-el-form-check-input {
  position: static;
  top: auto;
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  margin-top: 3px;
  accent-color: var(--blue-40);
}
.ff-fil .fluentform .ff-el-form-check-label a {
  color: inherit;
  text-decoration: underline;
}

/* ── Bottone invio ─────────────────────────────────────────────
   Ridefinito da zero: .ff-btn-submit non è un .btn di Bootstrap e non
   eredita niente da .btn-primary. */
.ff-fil .fluentform .ff_submit_btn_wrapper {
  margin-top: 24px;
  margin-bottom: 0;
}
.ff-fil .fluentform .ff-btn-submit.ff_btn_style {
  width: 100%;
  padding: 14px 32px;
  border: 1.5px solid var(--blue-40);
  border-radius: 10px;
  background: var(--blue-40);
  color: var(--neutral-0);
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.2;
}
.ff-fil .fluentform .ff-btn-submit.ff_btn_style:hover,
.ff-fil .fluentform .ff-btn-submit.ff_btn_style:focus {
  border-color: #003a6d;
  background: #003a6d;
  color: var(--neutral-0);
  opacity: 1;
}
.ff-fil .fluentform .ff-btn-submit.ff_btn_style:focus-visible {
  outline: 2px solid var(--blue-40);
  outline-offset: 3px;
}
@media (min-width: 768px) {
  .ff-fil .fluentform .ff-btn-submit.ff_btn_style {
    width: auto;
  }
}

/* ── Errori ────────────────────────────────────────────────── */
.ff-fil .fluentform .ff-el-is-error .ff-el-form-control {
  border-color: var(--error-dark);
}
.ff-fil .fluentform .ff-el-is-error .ff-el-form-control:focus {
  border-color: var(--error-dark);
  box-shadow: 0 0 0 4px rgba(182, 77, 52, 0.12);
}
.ff-fil .fluentform .error.text-danger {
  margin-top: 6px;
  color: var(--error-dark);
  font-size: 0.78rem;
  font-weight: 500;
}

/* ── Messaggio di conferma ─────────────────────────────────────
   Il plugin lo inserisce DOPO il </form>, dentro .fluentform: da qui i due
   selettori, per coprire entrambe le posizioni possibili. */
.ff-fil .ff-message-success,
.ff-fil .fluentform .ff-message-success {
  margin-top: 0;
  padding: 20px 24px;
  border: 1.5px solid var(--success-dark);
  border-radius: 12px;
  background: rgba(69, 154, 51, 0.08);
  box-shadow: none;
  color: var(--success-dark);
  font-size: 0.95rem;
  line-height: 1.5;
}

/* ── Honeypot ──────────────────────────────────────────────────
   Regola difensiva: il plugin lo nasconde con !important, ma il nostro
   position:relative sul gruppo non deve poterlo scoprire nemmeno se un
   domani quelle dichiarazioni cambiassero. Un honeypot visibile significa
   TUTTI gli invii classificati come spam. */
.ff-fil .fluentform .ff-el-group.ff-hpsf-container {
  display: none !important;
  position: absolute !important;
}

/* ── Dentro la modale ──────────────────────────────────────── */
.contact-modal-content .ff-fil .fluentform .ff-el-group:last-of-type {
  margin-bottom: 16px;
}

.ff-fil .fluentform .ff-el-form-check .ff-el-form-check-input{
  margin-top: 0 !important;
}
.fluentform .ff-el-tc label.ff_tc_label>span.ff_tc_checkbox{
  padding-top: 0 !important;
  margin-bottom: 3px
}

/* Ripiego mostrato se il plugin è disattivo o l'ID non è configurato
   (partials/contact-form-fallback.php). */
.contact-form-fallback {
  padding: 32px 24px;
  border: 1.5px solid var(--neutral-30);
  border-radius: 12px;
  background: var(--neutral-0);
  color: var(--neutral-70);
}
.contact-form-fallback a {
  color: var(--blue-40);
  font-weight: 600;
}

@media (max-width: 768px) {
    .nobr-mobile br {
        display: none;
    }
}