.elementor-1074 .elementor-element.elementor-element-a09a4c1{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-theme-builder-content-area{height:400px;}.elementor-location-header:before, .elementor-location-footer:before{content:"";display:table;clear:both;}/* Start custom CSS for container, class: .elementor-element-a09a4c1 *//* ============================================================
   PALAZZO ADDA — Landing
   Sistema visivo derivato dal Brand Book ufficiale (cod. 222)
   Cream #F2F0E9 · Slate #404547 · Azure #63A3AD · Gold · Grey #D6D6D6
   Display: Ellery · Body: Kigelia LGC (Adobe Fonts)
   ============================================================ */

  :root {
    --cream: #F2F0E9;
    --cream-2: #ECE9DF;
    --cream-3: #E4E0D3;
    --slate: #404547;
    --slate-2: #363B3D;
    --slate-3: #2B2F30;
    --ink: #23282A;
    --grey: #D6D6D6;
    --grey-line: #cfccc1;
    --azure: #63A3AD;
    --gold-1: #E6CE95;
    --gold-2: #C2A05E;
    --gold-3: #A87E3F;
    --gold: #B8935A;

    /* accent is tweakable (gold | azure) */
    --accent: var(--gold-2);
    --accent-soft: rgba(194, 160, 94, .16);
    --accent-grad: linear-gradient(100deg, var(--gold-1), var(--gold-2) 45%, var(--gold-3));

    --hero-dark: 0.34;
    /* tweakable hero overlay */
    --pattern-opacity: 1;
    /* tweakable texture */

    --maxw: 1280px;
    --gutter: clamp(20px, 5vw, 84px);

    --serif: ellery, sans-serif;
    --sans: kigelia-lgc, sans-serif;

    --ease: cubic-bezier(.22, .61, .36, 1);
  }

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

  html {
    scroll-behavior: smooth
  }

  @media (prefers-reduced-motion:reduce) {
    html {
      scroll-behavior: auto
    }
  }

  body {
    margin: 0;
    background: var(--cream);
    color: var(--slate);
    font-family: var(--sans);
    font-size: 17px;
    line-height: 1.65;
    font-weight: 300;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overflow-x: hidden;
  }

  img {
    display: block;
    max-width: 100%
  }

  a {
    color: inherit;
    text-decoration: none
  }

  a:focus,
  a:active,
  a:visited {
    color: inherit !important;
    outline: none !important;
    text-decoration: none !important
  }

  /* Fix hover rosa del kit Elementor (senza !important: gli hover voluti restano) */
  a:hover {
    color: inherit
  }

  button {
    font-family: inherit;
    cursor: pointer
  }

  /* === Niente evidenziazione "rosa" di Elementor su click / tap / focus =======
   Elementor (o il browser) colora gli elementi cliccati. Togliamo tap-highlight,
   outline da mouse, eventuale box-shadow/colore di stato e impostiamo la
   selezione testo sull'oro del brand. Il focus da TASTIERA resta visibile
   (:focus-visible) per accessibilità. */
  a,
  button,
  .btn,
  [role="button"],
  input,
  select,
  textarea,
  label,
  summary,
  [tabindex] {
    -webkit-tap-highlight-color: transparent !important;
  }

  a:focus:not(:focus-visible),
  button:focus:not(:focus-visible),
  .btn:focus:not(:focus-visible),
  [role="button"]:focus:not(:focus-visible),
  input:focus:not(:focus-visible),
  select:focus:not(:focus-visible),
  textarea:focus:not(:focus-visible),
  a:active,
  button:active,
  .btn:active,
  [role="button"]:active {
    outline: none !important;
    box-shadow: none !important;
  }

  /* Lo sfondo "rosa" che il tema applica su button:hover/focus si infila nei bottoni
     "nudi" (es. le tab degli appartamenti) che non impostano un proprio sfondo.
     Lo azzeriamo. I bottoni "pieni" (.expand, .apt__tab.active, .apt__view button.on,
     .mpoi, .video-cta…) hanno specificità maggiore e mantengono il loro sfondo;
     i CTA .btn sono <a>, quindi non toccati. */
  button:hover,
  button:focus,
  button:focus-visible,
  [role="button"]:hover,
  [role="button"]:focus {
    background-color: transparent;
  }

  .apt__tab.active,
  .apt__tab.active:hover {
    background-color: var(--accent);
    color: #fff;
    border-color: var(--accent);
  }

  ::selection {
    background: rgba(194, 160, 94, .25)
  }

  ::-moz-selection {
    background: rgba(194, 160, 94, .25)
  }

  /* ---------- type ---------- */
  h1,
  h2,
  h3 {
    font-family: var(--serif);
    font-weight: 500;
    margin: 0;
    color: var(--ink);
    letter-spacing: .005em
  }

  .display {
    font-family: var(--serif);
    font-weight: 500;
    line-height: 1.02;
    letter-spacing: .01em;
  }

  .eyebrow {
    font-family: var(--sans);
    font-weight: 700;
    font-size: .72rem;
    letter-spacing: .28em;
    text-transform: uppercase;
    color: var(--accent);
    display: inline-flex;
    align-items: center;
    gap: .85em;
  }

  .eyebrow::before {
    content: "";
    width: 34px;
    height: 1px;
    background: var(--accent);
    display: inline-block;
    opacity: .8;
  }

  .eyebrow.center::after {
    content: "";
    width: 34px;
    height: 1px;
    background: var(--accent);
    display: inline-block;
    opacity: .8;
  }

  .lead {
    font-size: 1.125rem;
    line-height: 1.7;
    color: var(--slate);
    font-weight: 400
  }

  .muted {
    color: #6c7174
  }

  /* Paragrafi-introduzione sezioni: misura uniforme ~18px.
     Contesto/Progetto (.split__body p), Appartamenti (.apt-head p), Mutuo (.mutuo__body p)
     e — via .lead qui sopra — Capitolato/Amenities. I testi nei box restano invariati. */
  .split__body p,
  .apt-head p,
  .mutuo__body p {
    font-size: 1.125rem;
    line-height: 1.7
  }

  em.serif {
    font-family: var(--serif);
    font-style: italic;
    font-weight: 500
  }

  /* ---------- layout ---------- */
  .wrap {
    max-width: var(--maxw);
    margin: 0 auto;
    padding-inline: var(--gutter)
  }

  section {
    position: relative
  }

  .section {
    padding-block: clamp(72px, 11vh, 140px)
  }

  .section-sm {
    padding-block: clamp(54px, 8vh, 96px)
  }

  .dark {
    background: var(--slate);
    color: #d9dad8
  }

  .dark h1,
  .dark h2,
  .dark h3 {
    color: #fff
  }

  .dark .lead {
    color: #cfd2d1
  }

  .dark .muted {
    color: #9aa0a1
  }

  .tone {
    background: var(--cream-2)
  }

  .rule-gold {
    height: 1px;
    width: 100%;
    background: linear-gradient(90deg, transparent, var(--accent), transparent);
    opacity: .55
  }

  /* facade triangular texture (brand pattern) */
  .pattern {
    --p: 18px;
    background-image:
      linear-gradient(135deg, rgba(255, 255, 255, .05) 25%, transparent 25%),
      linear-gradient(225deg, rgba(0, 0, 0, .10) 25%, transparent 25%),
      linear-gradient(45deg, rgba(0, 0, 0, .10) 25%, transparent 25%),
      linear-gradient(315deg, rgba(255, 255, 255, .05) 25%, transparent 25%);
    background-size: var(--p) var(--p);
    background-position: calc(var(--p)/2) 0, calc(var(--p)/2) 0, 0 0, 0 0;
    opacity: var(--pattern-opacity);
  }

  /* ---------- buttons ---------- */
  .btn {
    display: inline-flex;
    align-items: center;
    gap: .7em;
    font-family: var(--sans);
    font-weight: 700;
    font-size: .74rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    padding: 1.05em 1.9em;
    border: 1px solid var(--accent);
    color: var(--ink);
    background: transparent;
    border-radius: 0;
    transition: all .45s var(--ease);
    position: relative;
  }

  .btn .arr {
    transition: transform .45s var(--ease)
  }

  .btn:hover {
    background: var(--accent);
    color: #fff;
    border-color: var(--accent)
  }

  .btn:hover .arr {
    transform: translateX(4px)
  }

  .btn-solid {
    background: var(--accent);
    color: #fff
  }

  .btn-solid:hover {
    background: var(--ink);
    border-color: var(--ink)
  }

  .btn-hero {
    background: var(--accent-grad);
    color: var(--ink);
    border-color: transparent;
    box-shadow: 0 10px 30px -12px rgba(168, 126, 63, .6)
  }

  .btn-hero:hover {
    background: var(--accent-grad);
    color: var(--ink);
    filter: brightness(1.06)
  }

  .dark .btn {
    color: #fff;
    border-color: var(--accent)
  }

  .dark .btn:hover {
    background: var(--accent);
    color: #fff
  }

  .btn-ghost {
    border-color: rgba(255, 255, 255, .4)
  }

  .link-more {
    display: inline-flex;
    align-items: center;
    gap: .6em;
    font-weight: 700;
    font-size: .74rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--accent);
    padding-bottom: .35em;
    border-bottom: 1px solid transparent;
    transition: .4s var(--ease);
    width: max-content;
  }

  .link-more:hover {
    border-color: var(--accent);
    gap: .95em
  }

  /* =========================================================
   HEADER
   ========================================================= */
  .header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 60;
    transition: background .5s var(--ease), box-shadow .5s var(--ease);
  }

  /* sfondo header full-width, ma contenuto del menu allineato alla stessa
   colonna centrata da --maxw del resto della pagina (come .wrap) */
  .header__inner {
    max-width: var(--maxw);
    margin: 0 auto;
    width: 100%;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px var(--gutter);
    /* solo lo shrink verticale in scroll va animato: il gutter orizzontale
     resta istantaneo, così è sempre allineato a .wrap anche durante un resize */
    transition: padding-top .5s var(--ease), padding-bottom .5s var(--ease);
  }

  .header__brand {
    display: flex;
    align-items: center;
    gap: 13px
  }

  .header__brand .mono {
    width: 34px;
    height: 34px;
    transition: .4s
  }

  .header__brand .wm {
    height: 17px;
    transition: opacity .4s
  }

  .header__brand .wm.neg {
    position: absolute;
    opacity: 1
  }

  .header__brand .wm.pos {
    opacity: 0
  }

  .header__wmwrap {
    position: relative;
    display: flex;
    align-items: center;
    height: 18px
  }

  /* nav centrata sul viewport (non nello spazio tra logo e CTA): la stacchiamo
     dal flusso flex e la posizioniamo al centro di .header__inner, che è già
     centrato a --maxw. Logo a sinistra e CTA a destra restano con space-between. */
  .header nav {
    display: flex;
    gap: 30px;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%)
  }

  .header nav a {
    font-size: .76rem;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .82);
    position: relative;
    padding: 6px 0;
    transition: color .35s;
  }

  .header nav a::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    height: 1px;
    width: 0;
    background: var(--accent);
    transition: width .4s var(--ease);
  }

  .header nav a:hover {
    color: #fff
  }

  .header nav a.active {
    color: #fff
  }

  .header nav a.active::after {
    width: 100%
  }

  .header__cta {
    display: flex;
    align-items: center;
    gap: 18px
  }

  .header .btn {
    padding: .85em 1.5em;
    font-size: .68rem
  }

  .header .btn-ghost {
    color: #fff
  }

  /* scrolled state — sfondo nero, testo chiaro */
  .header.scrolled {
    background: rgba(12, 13, 14, .94);
    backdrop-filter: blur(14px);
    box-shadow: 0 1px 0 rgba(255, 255, 255, .06), 0 10px 30px -18px rgba(0, 0, 0, .6)
  }

  .header.scrolled .header__inner {
    padding-top: 13px;
    padding-bottom: 13px
  }

  .header.scrolled nav a {
    color: rgba(255, 255, 255, .75)
  }

  .header.scrolled nav a:hover,
  .header.scrolled nav a.active {
    color: #fff
  }

  .header.scrolled .btn {
    color: #fff;
    border-color: var(--accent)
  }

  .header.scrolled .btn-ghost {
    color: #fff;
    border-color: rgba(255, 255, 255, .4)
  }

  .header.scrolled .btn:hover {
    background: var(--accent);
    border-color: var(--accent)
  }

  /* nav links SEMPRE bianchi: override del reset globale `a:focus/active/visited{color:inherit!important}`
   che altrimenti, al click/focus, li fa ereditare lo slate scuro del body */
  .header nav a:link,
  .header nav a:visited,
  .header nav a:focus,
  .header nav a:active {
    color: rgba(255, 255, 255, .82) !important
  }

  .header nav a:hover,
  .header nav a.active {
    color: #fff !important
  }

  .header.scrolled nav a:link,
  .header.scrolled nav a:visited,
  .header.scrolled nav a:focus,
  .header.scrolled nav a:active {
    color: rgba(255, 255, 255, .75) !important
  }

  .header.scrolled nav a:hover,
  .header.scrolled nav a.active {
    color: #fff !important
  }

  .header__cta a:link,
  .header__cta a:visited,
  .header__cta a:focus,
  .header__cta a:active {
    color: #fff !important
  }

  .burger {
    display: none;
    flex-direction: column;
    gap: 5px;
    background: none;
    border: 0;
    padding: 6px
  }

  .burger span {
    width: 24px;
    height: 1.5px;
    background: #fff;
    transition: .3s
  }

  .header.scrolled .burger span {
    background: #fff
  }

  /* =========================================================
   HERO
   ========================================================= */
  .hero {
    min-height: 100svh;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: #fff;
    overflow: hidden;
  }

  .hero__bg {
    position: absolute;
    inset: 0;
    z-index: 0
  }

  .hero__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 38%;
    animation: kenburns-hero 22s var(--ease) infinite alternate
  }

  @keyframes kenburns-hero {
    from {
      transform: scale(1)
    }

    to {
      transform: scale(1.06)
    }
  }

  @media (prefers-reduced-motion:reduce) {
    .hero__bg img {
      animation: none
    }
  }

  .hero__bg::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
      linear-gradient(180deg, rgba(20, 28, 38, .5) 0%, rgba(20, 28, 38, 0) 26%),
      linear-gradient(0deg, rgba(15, 22, 30, .62) 0%, rgba(15, 22, 30, 0) 42%),
      rgba(18, 26, 34, var(--hero-dark));
  }

  .hero__inner {
    position: relative;
    z-index: 2;
    padding: 0 var(--gutter);
    max-width: 1040px;
    width: 100%
  }

  .hero__mono {
    width: 74px;
    height: 74px;
    margin: 0 auto 22px;
    filter: drop-shadow(0 4px 24px rgba(0, 0, 0, .3))
  }

  .hero h1 {
    color: #fff;
    font-weight: 600;
    font-size: clamp(2.3rem, 4.7vw, 4.4rem);
    line-height: 1.06;
    letter-spacing: .015em;
    text-transform: uppercase;
    text-shadow: 0 2px 40px rgba(0, 0, 0, .35);
  }

  .hero h1 .l {
    display: block
  }

  .hero h1 .accentword {
    text-transform: none;
    font-style: italic;
    font-weight: 500;
    display: inline-block;
    color: var(--gold-1)
  }

  /* ===== IMAGE PLACEHOLDERS (awaiting client image links) ===== */
  .imgph {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    width: 100%;
    min-height: 140px;
    background: repeating-linear-gradient(135deg, #e9e5d9, #e9e5d9 16px, #e1ddce 16px, #e1ddce 32px);
    border: 1px dashed rgba(194, 160, 94, .55);
    overflow: hidden
  }

  .imgph .lbl {
    font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    font-size: .72rem;
    line-height: 1.5;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: #7c7155;
    background: rgba(242, 240, 233, .82);
    padding: .55em .85em;
    max-width: 86%;
    border: 1px solid rgba(194, 160, 94, .4)
  }

  .imgph--fill {
    height: 100%;
    min-height: 0
  }

  .imgph--dark {
    background: repeating-linear-gradient(135deg, #3b4042, #3b4042 16px, #343a3c 16px, #343a3c 32px);
    border-color: rgba(230, 206, 149, .3)
  }

  .imgph--dark .lbl {
    color: #cdbf9c;
    background: rgba(43, 47, 48, .72);
    border-color: rgba(230, 206, 149, .28)
  }

  .imgph--logo {
    min-height: 130px;
    background: #fff;
    border: 1px solid var(--grey-line)
  }

  .imgph--logo .lbl {
    font-family: var(--serif);
    font-size: 1.05rem;
    letter-spacing: .03em;
    text-transform: none;
    color: #9aa0a1;
    background: transparent;
    border: 0;
    padding: 0
  }

  .hero__bg .imgph {
    position: absolute;
    inset: 0;
    height: 100%
  }

  .context-collage .imgph {
    height: 100%
  }

  .split__media .imgph {
    height: auto
  }

  .amen .imgph {
    position: absolute;
    inset: 0;
    height: 100%
  }

  .mutuo__media {
    position: relative
  }

  .mutuo__media .imgph {
    height: 100%
  }

  /* appartamenti placeholders */
  .apt__stage .apt__ph {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: 520px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: repeating-linear-gradient(135deg, #34393b, #34393b 18px, #2e3335 18px, #2e3335 36px);
    opacity: 0;
    transition: opacity .7s var(--ease)
  }

  .apt__stage .apt__ph .lbl {
    font-family: ui-monospace, Menlo, monospace;
    font-size: .74rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #cdbf9c;
    background: rgba(20, 24, 26, .55);
    padding: .6em 1em;
    border: 1px solid rgba(230, 206, 149, .3)
  }

  .apt__stage .apt__ph.on {
    opacity: 1;
    position: relative
  }

  .apt__stage.planview .apt__ph[data-view="plan"] {
    background: #f4f2ec
  }

  .apt__stage.planview .apt__ph[data-view="plan"] .lbl {
    color: #8b8f8f;
    background: #fff;
    border-color: var(--grey-line)
  }

  /* capitolato logo wall */
  .logowall {
    margin-top: 54px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
    border: 1px solid var(--grey-line)
  }

  .logobox {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 34px 28px;
    min-height: 120px;
    border-right: 1px solid var(--grey-line);
    border-bottom: 1px solid var(--grey-line)
  }

  .logobox:nth-child(4n) {
    border-right: 0
  }

  .logobox:nth-last-child(-n+3) {
    border-bottom: 0
  }

  .logobox img {
    max-height: 62px;
    max-width: 180px;
    width: auto;
    object-fit: contain;
    filter: grayscale(.3);
    opacity: .88;
    transition: .4s var(--ease)
  }

  .logobox:hover img {
    filter: none;
    opacity: 1
  }

  /* =========================================================
   VIDEO SECTION
   ========================================================= */
  .video-section {
    position: relative;
    width: 100%;
    background: var(--slate)
  }

  .video-wrap {
    position: relative;
    width: 100%;
    aspect-ratio: 16/9;
    overflow: hidden;
    max-height: 90vh
  }

  .video-main {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block
  }

  .video-main:not([src=""]):not(:empty)~.video-placeholder {
    display: none
  }

  .video-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 18px;
    background: repeating-linear-gradient(135deg, #2b2f31, #2b2f31 18px, #252829 18px, #252829 36px)
  }

  .video-placeholder svg {
    width: 80px;
    height: 80px;
    opacity: .7
  }

  .video-placeholder span {
    font-family: var(--sans);
    font-size: .68rem;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .35)
  }

  /* ---- video: CTA overlay "Guarda il video" ---- */
  .video-cta {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    z-index: 4;
    display: inline-flex;
    align-items: center;
    gap: 16px;
    padding: 12px 28px 12px 12px;
    background: rgba(20, 24, 26, .38);
    backdrop-filter: blur(8px);
    border: 1px solid rgba(255, 255, 255, .55);
    color: #fff;
    cursor: pointer;
    transition: background .4s var(--ease), border-color .4s var(--ease);
  }

  .video-cta:hover {
    background: rgba(20, 24, 26, .58);
    border-color: #fff
  }

  .video-cta__play {
    position: relative;
    width: 54px;
    height: 54px;
    border-radius: 50%;
    flex: none;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--accent);
    color: #fff;
    transition: .4s var(--ease);
  }

  .video-cta:hover .video-cta__play {
    background: #fff;
    color: var(--accent)
  }

  .video-cta__play svg {
    width: 24px;
    height: 24px;
    margin-left: 3px
  }

  .video-cta__play::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid var(--accent);
    animation: videoPulse 2.4s var(--ease) infinite
  }

  .video-cta:hover .video-cta__play::after {
    border-color: #fff
  }

  @keyframes videoPulse {
    0% {
      transform: scale(1);
      opacity: .7
    }

    70% {
      transform: scale(1.65);
      opacity: 0
    }

    100% {
      opacity: 0
    }
  }

  .video-cta__label {
    font-family: var(--sans);
    font-weight: 700;
    font-size: .78rem;
    letter-spacing: .2em;
    text-transform: uppercase;
    white-space: nowrap
  }

  @media (prefers-reduced-motion:reduce) {
    .video-cta__play::after {
      animation: none
    }
  }

  @media (max-width:560px) {
    .video-cta {
      padding: 10px 20px 10px 10px;
      gap: 12px
    }

    .video-cta__play {
      width: 46px;
      height: 46px
    }

    .video-cta__label {
      font-size: .68rem;
      letter-spacing: .16em
    }
  }

  /* ---- popup video (versione completa con audio) ---- */
  .vmodal {
    position: fixed;
    inset: 0;
    z-index: 130;
    background: rgba(8, 10, 12, .94);
    backdrop-filter: blur(6px);
    display: none;
    align-items: center;
    justify-content: center;
    padding: clamp(14px, 4vw, 48px);
    opacity: 0;
    transition: opacity .4s var(--ease);
  }

  .vmodal.show {
    display: flex;
    opacity: 1
  }

  .vmodal__frame {
    position: relative;
    width: min(1120px, 100%);
    aspect-ratio: 16/9;
    max-height: 86vh;
    background: #000;
    box-shadow: 0 40px 110px rgba(0, 0, 0, .65)
  }

  .vmodal__video {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: contain;
    background: #000
  }

  .vmodal__close {
    position: absolute;
    top: clamp(12px, 3vw, 26px);
    right: clamp(14px, 3vw, 32px);
    z-index: 2;
    width: 50px;
    height: 50px;
    background: none;
    border: 0;
    color: #fff;
    font-size: 1.9rem;
    line-height: 1;
    cursor: pointer;
    transition: color .3s
  }

  .vmodal__close:hover {
    color: var(--accent)
  }

  @media (max-width:900px) {
    .logowall {
      grid-template-columns: repeat(3, 1fr)
    }

    .logobox:nth-child(4n) {
      border-right: 1px solid var(--grey-line)
    }

    .logobox:nth-child(3n) {
      border-right: 0
    }
  }

  @media (max-width:760px) {
    .collage-last {
      display: none
    }
  }

  @media (max-width:760px) {
    .mutuo {
      grid-template-columns: 1fr
    }

    .mutuo__media {
      order: 2
    }

    .mutuo__body {
      order: 1
    }
  }

  @media (max-width:760px) {
    .split.rev .split__media.tall {
      display: none
    }
  }

  @media (max-width:560px) {
    .logowall {
      grid-template-columns: repeat(2, 1fr)
    }

    .logobox:nth-child(3n) {
      border-right: 1px solid var(--grey-line)
    }

    .logobox:nth-child(2n) {
      border-right: 0
    }
  }

  /* ===== LA POSIZIONE — figma map image + circles ===== */
  /* ===== FIGMA MAP (mappa-posizione) ===== */
  .mapf {
    position: relative;
    width: 100%;
    aspect-ratio: 595/710;
    overflow: hidden
  }

  .mapf__mask {
    position: absolute;
    inset: 0;
    border-radius: 30px;
    overflow: hidden;
    background: #d9d9d9
  }

  .mapf__img-bg {
    position: absolute;
    left: -65.07%;
    top: -17.16%;
    width: 235.63%;
    height: 122.44%;
    background: url("https://palazzoadda.it/wp-content/uploads/sites/14/2026/06/mappa-figma.png") center/cover no-repeat
  }

  .mapf__img-tag {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    border-radius: inherit
  }

  .mapf__ellipses {
    position: absolute;
    left: 13.18%;
    top: 19.15%;
    width: 43.62%;
    height: 67.45%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-start;
    padding: 1%
  }

  .mapf__ell {
    width: 20.9%;
    aspect-ratio: 1;
    border-radius: 50%;
    background: rgb(242, 240, 233);
    box-shadow: inset 0 0 0 1px rgb(199, 169, 93);
    opacity: .9;
    flex-shrink: 0
  }

  .mapf__pa-pin {
    position: absolute;
    left: 61.57%;
    top: 61.46%;
    width: min(13.88%, 83px);
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    filter: drop-shadow(0 4px 16px rgba(0, 0, 0, .45))
  }

  .mapf__pa-circle {
    width: 100%;
    aspect-ratio: 1;
    border-radius: 50%;
    background: rgb(64, 69, 71);
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center
  }

  .mapf__pa-circle img {
    width: 81%;
    height: 81%;
    object-fit: contain
  }

  .mapf__pa-tri {
    width: min(3.08%, 18px);
    height: auto;
    flex-shrink: 0
  }

  .mapf__ext {
    position: absolute;
    left: 84.37%;
    top: 91.5%;
    width: min(9.11%, 55px);
    transform: translate(-50%, -50%) rotate(54deg);
    display: flex;
    flex-direction: column;
    align-items: center;
    filter: drop-shadow(0 2px 8px rgba(0, 0, 0, .3))
  }

  .mapf__ext-outer {
    width: 100%;
    aspect-ratio: 1;
    border-radius: 50%;
    background: rgb(242, 240, 233);
    box-shadow: inset 0 0 0 1px rgb(199, 169, 93);
    opacity: .9;
    position: relative
  }

  .mapf__ext-inner {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 63%;
    aspect-ratio: 1;
    border-radius: 50%;
    background: rgb(199, 169, 93)
  }

  /* Override old mapframe styles that might conflict */
  .posizione__map .mapframe--img {
    aspect-ratio: unset;
    border: none;
    background: transparent;
    border-radius: 0;
    overflow: visible
  }

  .mapframe--img .mapimg {
    display: none
  }

  .mpoi {
    position: absolute;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--gold-2);
    box-shadow: 0 0 0 4px rgba(194, 160, 94, .28), 0 3px 12px rgba(0, 0, 0, .38);
    transform: translate(-50%, -50%);
    border: 2px solid rgba(255, 255, 255, .9);
    padding: 0;
    cursor: grab;
    transition: box-shadow .35s var(--ease), width .35s, height .35s;
    z-index: 2
  }

  .mpoi.dragging {
    cursor: grabbing;
    box-shadow: 0 0 0 7px rgba(194, 160, 94, .32), 0 8px 24px rgba(0, 0, 0, .48);
    width: 34px;
    height: 34px;
    z-index: 10
  }

  .mpoi:hover,
  .mpoi.active {
    background: var(--gold-1);
    box-shadow: 0 0 0 7px rgba(194, 160, 94, .32), 0 6px 20px rgba(0, 0, 0, .4);
    width: 34px;
    height: 34px;
    z-index: 25
  }

  .pin-pa-btn {
    position: absolute;
    background: none;
    border: 0;
    padding: 0;
    cursor: grab;
    transform: translate(-50%, -100%);
    z-index: 5;
    transition: filter .3s
  }

  .pin-pa-btn img {
    width: 56px;
    height: auto;
    display: block;
    filter: drop-shadow(0 4px 12px rgba(0, 0, 0, .45))
  }

  .pin-pa-btn:hover img {
    filter: drop-shadow(0 6px 18px rgba(0, 0, 0, .55)) brightness(1.05)
  }

  .pin-pa-btn.dragging {
    cursor: grabbing
  }

  .mpoi--arrow {
    border-color: var(--gold-2);
    color: var(--gold-1);
    display: flex;
    align-items: center;
    justify-content: center
  }

  .mpoi--arrow:hover,
  .mpoi--arrow.active {
    background: var(--slate-2)
  }

  .mpoi__arrow {
    width: 14px;
    height: 14px;
    flex: none
  }

  .mpoi--linate {
    overflow: visible
  }

  .mpoi__ext-arrow {
    position: absolute;
    width: 18px;
    height: 18px;
    color: var(--slate);
    transform: rotate(135deg);
    top: calc(50% + 10px);
    left: calc(50% + 10px);
    pointer-events: none
  }

  .mpoi__lbl {
    position: absolute;
    left: 50%;
    bottom: calc(100% + 10px);
    transform: translateX(-50%);
    white-space: nowrap;
    font-family: var(--sans);
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--ink);
    background: #fff;
    padding: .45em .8em;
    border-bottom: 2px solid var(--gold-2);
    opacity: 0;
    transition: .3s var(--ease);
    pointer-events: none;
    box-shadow: 0 4px 20px rgba(0, 0, 0, .22);
    z-index: 30
  }

  .mpoi:hover .mpoi__lbl,
  .mpoi.active .mpoi__lbl {
    opacity: 1;
    z-index: 30
  }

  .mpoi--edge .mpoi__lbl {
    left: auto;
    right: -4px;
    transform: none
  }

  .map-origin-ring {
    position: absolute;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    border: 2px solid var(--gold-2);
    box-shadow: 0 0 0 8px rgba(194, 160, 94, .18);
    animation: mapring 2.8s var(--ease) infinite;
    z-index: 1;
    pointer-events: none
  }

  .map-origin-ring::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: var(--gold-2);
    border: 2.5px solid #fff;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .35)
  }

  @keyframes mapring {
    0% {
      transform: translate(-50%, -50%) scale(.65);
      opacity: .9
    }

    70% {
      transform: translate(-50%, -50%) scale(1.9);
      opacity: 0
    }

    100% {
      opacity: 0
    }
  }

  @media (prefers-reduced-motion:reduce) {
    .map-origin-ring {
      animation: none
    }
  }

  @media (max-width:900px) {
    .logowall {
      grid-template-columns: repeat(3, 1fr)
    }
  }

  @media (max-width:560px) {
    .logowall {
      grid-template-columns: repeat(2, 1fr)
    }

    .apt__stage .apt__ph {
      min-height: 340px
    }
  }

  .hero__cta {
    margin-top: 32px
  }

  .hero__cta .btn {
    padding: 1.1em 2.1em;
    font-size: .76rem
  }

  .hero__sub {
    margin: 34px auto 0;
    max-width: 620px;
    font-size: 1.12rem;
    line-height: 1.72;
    color: rgba(255, 255, 255, .9);
    font-weight: 400;
    text-shadow: 0 1px 18px rgba(0, 0, 0, .4);
  }

  .hero__loc {
    margin-top: 24px;
    display: inline-flex;
    align-items: center;
    gap: 11px;
    font-size: .74rem;
    font-weight: 700;
    letter-spacing: .24em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .85);
  }

  .hero__loc .dot {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--accent)
  }

  .hero__scroll {
    position: absolute;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    font-size: .62rem;
    letter-spacing: .26em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .7);
  }

  .hero__scroll .line {
    width: 1px;
    height: 46px;
    background: linear-gradient(180deg, var(--accent), transparent);
    animation: scrolldrop 2.4s var(--ease) infinite
  }

  @keyframes scrolldrop {
    0% {
      transform: scaleY(.2);
      transform-origin: top;
      opacity: 0
    }

    40% {
      opacity: 1
    }

    100% {
      transform: scaleY(1);
      transform-origin: top;
      opacity: 0
    }
  }

  /* =========================================================
   MANIFESTO / VANTAGGI
   ========================================================= */
  .manifesto {
    text-align: center;
    max-width: 880px;
    margin: 0 auto
  }

  .manifesto h2 {
    font-size: clamp(2rem, 4.2vw, 3.4rem);
    line-height: 1.08;
    margin-top: 20px;
    text-wrap: balance
  }

  .pillars {
    margin-top: 64px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
    border-top: 1px solid var(--grey-line);
  }

  .pillar {
    padding: 40px 28px 8px;
    text-align: left;
    border-right: 1px solid var(--grey-line);
    position: relative;
  }

  .pillar:last-child {
    border-right: 0
  }

  .pillar .num {
    font-family: var(--serif);
    font-size: 1.05rem;
    color: var(--accent);
    font-style: italic
  }

  .pillar h3 {
    font-size: 1.42rem;
    line-height: 1.18;
    margin: 16px 0 0;
    font-weight: 600
  }

  .pillar p {
    font-size: .96rem;
    color: #6c7174;
    margin: 12px 0 0
  }

  /* =========================================================
   GENERIC SPLIT (image + text)
   ========================================================= */
  .split {
    display: grid;
    grid-template-columns: 1.05fr .95fr;
    gap: clamp(34px, 5vw, 82px);
    align-items: center
  }

  .split.rev {
    direction: rtl
  }

  .split.rev>* {
    direction: ltr
  }

  .split__media {
    position: relative;
    overflow: hidden
  }

  .split__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    aspect-ratio: 4/5;
    transition: transform 1.4s var(--ease)
  }

  .split__media:hover img {
    transform: scale(1.04)
  }

  .split__media.tall img {
    aspect-ratio: 3/4
  }

  .split__media .tag {
    position: absolute;
    left: 0;
    bottom: 0;
    background: var(--accent);
    color: #fff;
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    padding: .8em 1.3em;
  }

  .split__body h2 {
    font-size: clamp(1.9rem, 3.6vw, 3rem);
    line-height: 1.1;
    margin: 18px 0 0;
    text-wrap: balance
  }

  .split__body p {
    margin: 22px 0 0
  }

  .split__body .actions {
    margin-top: 34px;
    display: flex;
    gap: 18px;
    flex-wrap: wrap;
    align-items: center
  }

  /* =========================================================
   CONTESTO (home) — allinea tipografia/spazi al resto delle sezioni.
   .ctx-lead/.ctx-figure non condividono lo schema .split, quindi
   qui replichiamo la stessa scala di h2 e paragrafo introduttivo.
   ========================================================= */
  .ctx-lead h2 {
    font-size: clamp(1.9rem, 3.6vw, 3rem);
    line-height: 1.1;
    margin: 18px 0 0;
    text-wrap: balance
  }

  .ctx-lead p {
    font-size: 1.125rem;
    line-height: 1.7;
    margin: 22px 0 0
  }

  /* Enfasi nel copy: peso 400 su corpo 300 (come online, non il bold pieno 700) */
  .ctx-lead p b,
  .ctx-lead p strong,
  .split__body p b,
  .split__body p strong {
    font-weight: 400
  }

  /* stat row */
  .stats {
    display: flex;
    gap: 46px;
    margin-top: 38px;
    flex-wrap: wrap
  }

  .stat .n {
    font-family: var(--serif);
    font-size: 2.5rem;
    line-height: 1;
    color: var(--ink);
    font-weight: 600
  }

  .dark .stat .n {
    color: #fff
  }

  .stat .l {
    font-size: .72rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: #6c7174;
    margin-top: 8px
  }

  .dark .stat .l {
    color: #9aa0a1
  }

  /* =========================================================
   CONTESTO — collage
   ========================================================= */
  .context-collage {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: repeat(2, 1fr);
    gap: 14px;
    height: 560px
  }

  .context-collage img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    aspect-ratio: auto
  }

  .context-collage .big {
    grid-row: span 2
  }

  .chips {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 30px
  }

  .chip {
    font-size: .74rem;
    letter-spacing: .04em;
    color: var(--slate);
    border: 1px solid var(--grey-line);
    padding: .6em 1.1em;
    border-radius: 40px;
    background: rgba(255, 255, 255, .5);
  }

  .dark .chip {
    color: #d9dad8;
    border-color: rgba(255, 255, 255, .2);
    background: rgba(255, 255, 255, .04)
  }

  /* =========================================================
   APPARTAMENTI — interactive gallery
   ========================================================= */
  .apt-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 30px;
    flex-wrap: wrap
  }

  .apt-head h2 {
    font-size: clamp(1.9rem, 3.6vw, 3rem);
    line-height: 1.1;
    margin-top: 18px;
    max-width: 18ch;
    text-wrap: balance
  }

  .apt-head p {
    max-width: 38ch;
    margin: 0
  }

  .apt {
    margin-top: 54px;
    display: grid;
    grid-template-columns: 1fr 360px;
    gap: 0;
    border: 1px solid var(--grey-line);
    background: #fff
  }

  .apt__stage {
    position: relative;
    overflow: hidden;
    background: var(--slate-3)
  }

  .apt__stage img {
    width: 100%;
    height: 100%;
    min-height: 520px;
    object-fit: cover;
    opacity: 0;
    transition: opacity .8s var(--ease);
    position: absolute;
    inset: 0
  }

  .apt__stage img.on {
    opacity: 1;
    position: relative
  }

  .apt__stage .code {
    position: absolute;
    top: 22px;
    left: 22px;
    z-index: 3;
    font-family: var(--serif);
    font-size: 1.1rem;
    letter-spacing: .1em;
    color: #fff;
    background: rgba(20, 26, 30, .45);
    backdrop-filter: blur(6px);
    padding: .4em .9em;
    border: 1px solid rgba(255, 255, 255, .25);
  }

  .apt__stage .expand {
    position: absolute;
    bottom: 22px;
    right: 22px;
    z-index: 3;
    width: 46px;
    height: 46px;
    border: 1px solid rgba(255, 255, 255, .4);
    background: rgba(20, 26, 30, .35);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(6px);
    transition: .4s;
  }

  .apt__stage .expand:hover {
    background: var(--accent);
    border-color: var(--accent)
  }

  .apt__side {
    padding: 38px 34px;
    display: flex;
    flex-direction: column
  }

  .apt__line {
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--accent)
  }

  .apt__title {
    font-family: var(--serif);
    font-size: 1.8rem;
    line-height: 1.12;
    margin: 14px 0 0;
    color: var(--ink);
    font-weight: 600
  }

  .apt__desc {
    font-size: .97rem;
    color: #6c7174;
    margin: 16px 0 0
  }

  .apt__feat {
    margin: 24px 0 0;
    list-style: none;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px
  }

  .apt__feat li {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    font-size: .92rem;
    color: var(--slate)
  }

  .apt__feat li::before {
    content: "";
    width: 6px;
    height: 6px;
    margin-top: 8px;
    background: var(--accent);
    transform: rotate(45deg);
    flex: none
  }

  .apt__tabs {
    margin-top: auto;
    padding-top: 30px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px
  }

  .apt__tab {
    border: 1px solid var(--grey-line);
    background: transparent;
    padding: .85em 0;
    font-weight: 700;
    font-size: .82rem;
    letter-spacing: .08em;
    color: var(--slate);
    transition: .35s var(--ease);
  }

  .apt__tab:hover {
    border-color: var(--accent);
    color: var(--ink)
  }

  .apt__tab.active {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff
  }

  /* =========================================================
   MATERIALI — capitolato
   ========================================================= */
  .materiali {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1px;
    background: var(--grey-line);
    border: 1px solid var(--grey-line);
    margin-top: 54px
  }

  .mat {
    background: var(--cream);
    padding: 34px 26px;
    transition: background .4s
  }

  .mat:hover {
    background: #fff
  }

  .mat .b {
    font-family: var(--serif);
    font-size: 1.5rem;
    color: var(--ink);
    font-weight: 600
  }

  .mat .t {
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--accent);
    margin-top: 4px
  }

  .mat p {
    font-size: .9rem;
    color: #6c7174;
    margin: 16px 0 0
  }

  .brandstrip {
    margin-top: 30px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px 30px;
    align-items: center;
    justify-content: center;
    opacity: .85
  }

  .brandstrip span {
    font-family: var(--serif);
    font-size: 1.05rem;
    letter-spacing: .04em;
    color: #8b8f8f
  }

  .brandstrip span+span::before {
    content: "·";
    margin-right: 30px;
    color: var(--accent)
  }

  /* =========================================================
   AMENITIES
   ========================================================= */
  .amen-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-top: 54px
  }

  .amen {
    position: relative;
    overflow: hidden;
    min-height: 330px;
    display: flex;
    align-items: flex-end
  }

  .amen img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.3s var(--ease)
  }

  .amen:hover img {
    transform: scale(1.06)
  }

  .amen::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(0deg, rgba(18, 24, 28, .82) 0%, rgba(18, 24, 28, .05) 60%)
  }

  .amen__c {
    position: relative;
    z-index: 2;
    padding: 30px
  }

  .amen__c h3 {
    color: #fff;
    font-size: 1.5rem;
    font-weight: 600
  }

  .amen__c p {
    color: rgba(255, 255, 255, .82);
    font-size: .92rem;
    margin: 8px 0 0
  }

  .amen__c .k {
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--accent)
  }

  .amen.wide {
    grid-column: span 2
  }

  .amen--fade .amen__img2 {
    opacity: 0;
    animation: amenCross 11s ease-in-out infinite
  }

  @keyframes amenCross {
    0%, 42% {
      opacity: 0
    }

    50%, 92% {
      opacity: 1
    }

    100% {
      opacity: 0
    }
  }

  .amen-extra {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0;
    margin-top: 16px;
    border: 1px solid rgba(255, 255, 255, .14);
    max-width: var(--maxw);
    margin-inline: auto;
    padding-inline: var(--gutter)
  }

  .amen-extra .x {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 32px 30px;
    border-right: 1px solid rgba(255, 255, 255, .14);
    border-bottom: 1px solid rgba(255, 255, 255, .14)
  }

  .amen-extra .x:nth-child(3n) {
    border-right: 0
  }

  .amen-extra .x:nth-last-child(-n+3) {
    border-bottom: 0
  }

  .amen-extra .x .ic {
    width: 46px;
    height: 46px;
    flex: none;
    border: 1px solid rgba(255, 255, 255, .22);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--accent)
  }

  .amen-extra .x h4 {
    margin: 0;
    font-family: var(--serif);
    font-size: 1.18rem;
    color: #fff;
    font-weight: 600
  }

  .amen-extra .x p {
    margin: 5px 0 0;
    font-size: .88rem;
    color: #9aa0a1
  }

  /* =========================================================
   MUTUO / VANTAGGI
   ========================================================= */
  .mutuo {
    display: grid;
    grid-template-columns: .9fr 1.1fr;
    gap: clamp(40px, 6vw, 90px);
    align-items: center
  }

  .mutuo__panel {
    background: var(--slate);
    color: #fff;
    padding: clamp(38px, 5vw, 60px);
    position: relative;
    overflow: hidden
  }

  .mutuo__panel .pattern {
    position: absolute;
    inset: 0;
    mix-blend-mode: overlay;
    pointer-events: none
  }

  .mutuo__panel h3 {
    color: #fff;
    font-size: clamp(1.7rem, 3vw, 2.4rem);
    position: relative
  }

  .mbenefit {
    list-style: none;
    padding: 0;
    margin: 26px 0 0;
    display: flex;
    flex-direction: column;
    gap: 0;
    position: relative
  }

  .mbenefit li {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: center;
    padding: 15px 0;
    border-bottom: 1px solid rgba(255, 255, 255, .13);
    font-size: .96rem
  }

  .mbenefit li span:last-child {
    font-family: var(--serif);
    color: var(--gold-1);
    font-size: 1.15rem;
    white-space: nowrap;
    font-weight: 600
  }

  .mutuo__body h2 {
    font-size: clamp(1.9rem, 3.6vw, 3rem);
    line-height: 1.1;
    margin-top: 18px
  }

  .partner-logos {
    display: flex;
    gap: 26px;
    align-items: center;
    margin-top: 26px;
    flex-wrap: wrap
  }

  .partner-logos .pl {
    font-family: var(--serif);
    font-size: 1.2rem;
    color: var(--ink);
    font-weight: 600;
    letter-spacing: .02em
  }

  .partner-logos .pl small {
    display: block;
    font-family: var(--sans);
    font-size: .62rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: #8b8f8f;
    font-weight: 700;
    margin-top: 2px
  }

  .disclaimer {
    font-size: .72rem;
    line-height: 1.6;
    color: #9398a8;
    margin-top: 22px;
    max-width: 62ch
  }

  .dark .disclaimer {
    color: #7d8385
  }

  /* =========================================================
   CONTATTI / FORM
   ========================================================= */
  .contatti {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(40px, 6vw, 96px)
  }

  .contatti__intro h2 {
    font-size: clamp(2rem, 4vw, 3.2rem);
    line-height: 1.08;
    margin-top: 18px;
    text-wrap: balance
  }

  .contact-list {
    margin-top: 38px;
    display: flex;
    flex-direction: column;
    gap: 24px
  }

  .contact-list .ci {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    padding-top: 22px;
    border-top: 1px solid var(--grey-line)
  }

  .contact-list .ci h4 {
    margin: 0;
    font-size: .72rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: #8b8f8f;
    font-weight: 700
  }

  .contact-list .ci p {
    margin: 5px 0 0;
    font-size: 1.02rem;
    color: var(--ink)
  }

  .form {
    background: #fff;
    border: 1px solid var(--grey-line);
    padding: clamp(30px, 4vw, 46px)
  }

  .form h3 {
    font-size: 1.5rem;
    font-weight: 600;
    margin-bottom: 6px
  }

  .form .sub {
    font-size: .94rem;
    color: #6c7174;
    margin-bottom: 26px
  }

  .field {
    margin-bottom: 20px;
    position: relative
  }

  .field label {
    display: block;
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: #7c8183;
    margin-bottom: 9px
  }

  .field input,
  .field select,
  .field textarea {
    width: 100%;
    border: 0;
    border-bottom: 1.5px solid var(--grey-line);
    background: transparent;
    padding: 10px 2px;
    font-family: var(--sans);
    font-size: 1rem;
    color: var(--ink);
    transition: border-color .3s;
  }

  .field input:focus,
  .field select:focus,
  .field textarea:focus {
    outline: none;
    border-color: var(--accent)
  }

  .field textarea {
    resize: vertical;
    min-height: 76px
  }

  .field.invalid input,
  .field.invalid select,
  .field.invalid textarea {
    border-color: #c0563f
  }

  .field .err {
    display: none;
    color: #c0563f;
    font-size: .74rem;
    margin-top: 7px
  }

  .field.invalid .err {
    display: block
  }

  .row2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px
  }

  .check {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    font-size: .82rem;
    color: #6c7174;
    margin: 6px 0 24px;
    line-height: 1.5
  }

  .check input {
    width: 18px;
    height: 18px;
    flex: none;
    margin-top: 2px;
    accent-color: var(--accent)
  }

  .form .btn-solid {
    width: 100%;
    justify-content: center
  }

  .form__ok {
    display: none;
    text-align: center;
    padding: 30px 0
  }

  .form__ok.show {
    display: block
  }

  .form__ok .mk {
    width: 58px;
    height: 58px;
    border-radius: 50%;
    border: 1.5px solid var(--accent);
    color: var(--accent);
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 20px;
    font-size: 1.5rem
  }

  .form.sent .form__inner {
    display: none
  }

  /* form dark variant (contatti) */
  .form--dark {
    background: var(--slate-3);
    border: none;
    padding: clamp(36px, 4vw, 54px);
    position: relative;
    overflow: hidden
  }

  .form__bg-logo {
    position: absolute;
    right: -60px;
    bottom: -60px;
    width: 340px;
    opacity: .07;
    pointer-events: none;
    user-select: none
  }

  .form__bg-logo img {
    width: 100%
  }

  .form--dark h3 {
    font-family: var(--serif);
    font-size: clamp(1.5rem, 2.4vw, 2rem);
    color: #fff;
    font-weight: 600;
    line-height: 1.15;
    margin-bottom: 28px
  }

  .form--dark .field label {
    color: #7c8183
  }

  .form--dark .field input,
  .form--dark .field select,
  .form--dark .field textarea {
    color: #fff;
    border-bottom-color: rgba(255, 255, 255, .2);
    background: transparent
  }

  .form--dark .field input::placeholder {
    color: rgba(255, 255, 255, .3)
  }

  .form--dark .field input:focus,
  .form--dark .field select:focus,
  .form--dark .field textarea:focus {
    border-color: var(--accent)
  }

  .check--dark {
    color: rgba(255, 255, 255, .65)
  }

  .check--dark a {
    color: var(--gold-1);
    text-decoration: underline;
    text-underline-offset: 3px
  }

  .check--dark .req {
    color: var(--gold-1)
  }

  .form__required {
    font-size: .72rem;
    color: #6c7174;
    margin: 4px 0 20px
  }

  .btn-form {
    width: 100%;
    justify-content: center;
    background: var(--accent);
    color: #fff;
    border-color: var(--accent);
    font-size: .76rem;
    letter-spacing: .18em
  }

  .btn-form:hover {
    background: var(--ink);
    border-color: var(--ink);
    color: #fff
  }

  .form--dark .form__ok {
    background: transparent
  }

  .form--dark .form__ok h3 {
    color: #fff
  }

  .form--dark .mk {
    border-color: var(--gold-1);
    color: var(--gold-1)
  }

  /* =========================================================
   FOOTER — ricostruito
   ========================================================= */
  .footer {
    background: var(--slate-3);
    color: #a9adad
  }

  .footer__inner {
    padding-block: clamp(56px, 8vh, 96px) 36px
  }

  .footer__brand-row {
    display: flex;
    align-items: center;
    gap: 40px;
    flex-wrap: wrap;
    padding-block: 0 40px
  }

  .footer__logo {
    height: 52px;
    width: auto
  }

  .footer__tagline {
    font-family: var(--serif);
    font-size: 1.15rem;
    color: #cfd2d1;
    margin: 0;
    line-height: 1.55;
    font-style: italic
  }

  .footer__rule {
    padding-block: 0
  }

  .footer__partners {
    display: grid;
    grid-template-columns: 1fr auto 1fr auto 1fr;
    gap: 0;
    align-items: center;
    padding-block: 48px
  }

  .footer__partner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 18px;
    text-align: center
  }

  .footer__partner-label {
    font-size: .62rem;
    letter-spacing: .24em;
    text-transform: uppercase;
    color: #6c7174;
    font-weight: 700;
    font-family: var(--sans)
  }

  .footer__partner img {
    max-height: 48px;
    max-width: 200px;
    width: auto;
    object-fit: contain;
    filter: brightness(0) invert(1);
    opacity: .9;
    transition: .4s
  }

  .footer__partner:hover img {
    opacity: 1
  }

  .footer__partner-div {
    width: 1px;
    height: 60px;
    background: rgba(255, 255, 255, .14);
    margin-inline: 40px
  }

  .footer__legal {
    padding-block: 32px 0;
    display: flex;
    flex-direction: column;
    gap: 14px
  }

  .footer__legal p {
    font-size: .78rem;
    color: #6c7174;
    line-height: 1.75;
    margin: 0
  }

  .footer__links {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap
  }

  .footer__links a {
    color: #6c7174;
    transition: color .3s
  }

  .footer__links a:hover {
    color: var(--accent)
  }

  .footer__links span {
    color: #404547
  }

  @media (max-width:900px) {
    .footer__partners {
      grid-template-columns: 1fr;
      gap: 36px
    }

    .footer__partner-div {
      width: 100%;
      height: 1px;
      margin: 0
    }
  }

  @media (max-width:560px) {
    .footer__brand-row {
      flex-direction: column;
      align-items: flex-start;
      gap: 16px
    }

    .footer__logo {
      height: 44px
    }
  }

  /* =========================================================
   LIGHTBOX
   ========================================================= */
  .lightbox {
    position: fixed;
    inset: 0;
    z-index: 120;
    background: rgba(15, 19, 22, .92);
    display: none;
    align-items: center;
    justify-content: center;
    padding: 40px;
    opacity: 0;
    transition: opacity .4s
  }

  .lightbox.show {
    display: flex;
    opacity: 1
  }

  .lightbox img {
    max-width: 92vw;
    max-height: 88vh;
    object-fit: contain;
    box-shadow: 0 30px 80px rgba(0, 0, 0, .5)
  }

  .lightbox__close {
    position: absolute;
    top: 26px;
    right: 30px;
    color: #fff;
    font-size: 1.6rem;
    background: none;
    border: 0;
    width: 48px;
    height: 48px
  }

  .lightbox__cap {
    position: absolute;
    bottom: 30px;
    left: 0;
    right: 0;
    text-align: center;
    color: #fff;
    font-family: var(--serif);
    font-size: 1.1rem;
    letter-spacing: .08em
  }

  /* =========================================================
   REVEAL ANIM
   ========================================================= */
  .reveal {
    opacity: 0;
    transform: translateY(26px);
    transition: opacity 1s var(--ease), transform 1s var(--ease)
  }

  .reveal.in {
    opacity: 1;
    transform: none
  }

  .reveal.d1 {
    transition-delay: .1s
  }

  .reveal.d2 {
    transition-delay: .2s
  }

  .reveal.d3 {
    transition-delay: .3s
  }

  .reveal.d4 {
    transition-delay: .4s
  }

  @media (prefers-reduced-motion:reduce) {
    .reveal {
      opacity: 1;
      transform: none;
      transition: none
    }

    .hero__scroll .line {
      animation: none
    }
  }

  /* =========================================================
   GALLERIA CONTESTO (filmstrip)
   ========================================================= */
  #contesto.section {
    padding-bottom: clamp(40px, 6vh, 64px)
  }

  .ctxgal-sec {
    padding-top: 0
  }

  .ctxgal__head {
    display: flex;
    justify-content: flex-end;
    align-items: flex-end;
    gap: 24px;
    flex-wrap: wrap;
    margin-bottom: 30px
  }

  .ctxgal__title {
    font-size: clamp(1.5rem, 2.6vw, 2.1rem);
    margin-top: 12px;
    font-weight: 600
  }

  .ctxgal__nav {
    display: flex;
    align-items: center;
    gap: 18px
  }

  .ctxgal__count {
    font-family: var(--serif);
    font-size: 1.2rem;
    color: var(--slate);
    letter-spacing: .06em;
    min-width: 88px;
    text-align: center
  }

  .ctxgal__count b {
    color: var(--accent);
    font-weight: 600
  }

  .ctxgal__count i {
    font-style: normal;
    color: #9aa0a1
  }

  .ctxgal__btn {
    width: 52px;
    height: 52px;
    flex: none;
    border: 1px solid var(--grey-line);
    background: transparent;
    color: var(--ink);
    font-size: 1.15rem;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: .35s var(--ease)
  }

  .ctxgal__btn:hover {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff
  }

  .ctxgal__btn[disabled] {
    opacity: .28;
    pointer-events: none
  }

  .ctxgal__viewport {
    overflow: hidden;
    width: 100%
  }

  .ctxgal__track {
    display: flex;
    gap: 16px;
    padding-inline: var(--gutter);
    will-change: transform;
    transition: transform .72s cubic-bezier(.36, .07, .19, .97)
  }

  .ctxgal__slide {
    flex: none;
    height: clamp(280px, 46vh, 460px);
    background: repeating-linear-gradient(135deg, #e9e5d9, #e9e5d9 16px, #e1ddce 16px, #e1ddce 32px);
    overflow: hidden
  }

  .ctxgal__slide img {
    height: 100%;
    width: auto;
    display: block;
    object-fit: cover;
    transition: transform 7s ease-in-out, opacity .5s ease
  }

  .ctxgal__slide.active img {
    animation: kenburns 8s ease-in-out infinite alternate
  }

  @keyframes kenburns {
    0% {
      transform: scale(1) translate(0, 0)
    }

    50% {
      transform: scale(1.06) translate(-1%, -0.5%)
    }

    100% {
      transform: scale(1.04) translate(1%, 0.5%)
    }
  }

  .ctxgal {
    position: relative
  }

  .ctxgal__progress {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 2px;
    background: rgba(194, 160, 94, .18);
    overflow: hidden;
    pointer-events: none
  }

  .ctxgal__progress-fill {
    height: 100%;
    width: 0%;
    background: var(--gold-2);
    will-change: width
  }

  @media (prefers-reduced-motion:reduce) {
    .ctxgal__track {
      transition: none
    }

    .ctxgal__slide img {
      transition: none
    }

    .ctxgal__slide.active img {
      animation: none
    }

    .ctxgal__progress-fill {
      transition: none !important
    }
  }

  @media (max-width:560px) {
    .ctxgal__slide {
      height: clamp(220px, 40vh, 320px)
    }

    .ctxgal__btn {
      width: 46px;
      height: 46px
    }
  }

  /* =========================================================
   MOBILE MENU
   ========================================================= */
  .mobile-menu {
    position: fixed;
    inset: 0;
    z-index: 80;
    background: var(--slate);
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0;
    transform: translateY(-100%);
    transition: transform .55s var(--ease);
    visibility: hidden
  }

  .mobile-menu.open {
    transform: none;
    visibility: visible
  }

  .mobile-menu a:not(.btn) {
    font-family: var(--serif);
    font-size: 1.35rem;
    color: rgba(255, 255, 255, .82);
    padding: 14px 0;
    letter-spacing: .04em;
    border-bottom: 1px solid rgba(255, 255, 255, .1);
    width: 220px;
    text-align: center;
    transition: color .3s
  }

  .mobile-menu a:not(.btn):last-of-type {
    border-bottom: 0
  }

  .mobile-menu a:not(.btn):hover {
    color: var(--gold-1)
  }

  .mobile-menu .mclose {
    position: absolute;
    top: 24px;
    right: 26px;
    font-size: 1.4rem;
    background: none;
    border: 0;
    color: rgba(255, 255, 255, .6);
    transition: color .3s;
    cursor: pointer
  }

  .mobile-menu .mclose:hover {
    color: #fff
  }

  .mobile-menu .btn {
    margin-top: 32px;
    font-size: .72rem;
    padding: .85em 2em;
    letter-spacing: .18em
  }

  /* =========================================================
   TWEAKS PANEL (vanilla, host-protocol)
   ========================================================= */
  #tweaks {
    position: fixed;
    top: 18px;
    right: 18px;
    z-index: 200;
    width: 300px;
    max-width: calc(100vw - 36px);
    background: #fff;
    border: 1px solid var(--grey-line);
    box-shadow: 0 24px 60px rgba(30, 30, 30, .22);
    font-family: var(--sans);
    color: var(--ink);
    display: none;
    overflow: hidden
  }

  #tweaks.show {
    display: block
  }

  #tweaks .tk-h {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 16px;
    border-bottom: 1px solid var(--grey-line);
    cursor: grab
  }

  #tweaks .tk-h b {
    font-size: .78rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    font-weight: 700
  }

  #tweaks .tk-h button {
    background: none;
    border: 0;
    font-size: 1.1rem;
    color: #999;
    line-height: 1
  }

  #tweaks .tk-body {
    padding: 8px 16px 18px
  }

  #tweaks .tk-sec {
    font-size: .64rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: #9aa0a1;
    font-weight: 700;
    margin: 16px 0 10px
  }

  #tweaks .tk-row {
    margin-bottom: 14px
  }

  #tweaks .tk-row>label {
    display: block;
    font-size: .74rem;
    color: #555;
    margin-bottom: 8px;
    font-weight: 600
  }

  #tweaks .seg {
    display: flex;
    border: 1px solid var(--grey-line)
  }

  #tweaks .seg button {
    flex: 1;
    background: #fff;
    border: 0;
    padding: .6em 0;
    font-size: .74rem;
    font-weight: 700;
    color: #777;
    border-right: 1px solid var(--grey-line)
  }

  #tweaks .seg button:last-child {
    border-right: 0
  }

  #tweaks .seg button.on {
    background: var(--accent);
    color: #fff
  }

  #tweaks .swatches {
    display: flex;
    gap: 8px
  }

  #tweaks .swatches button {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    border: 2px solid transparent;
    cursor: pointer
  }

  #tweaks .swatches button.on {
    border-color: var(--ink)
  }

  #tweaks input[type=range] {
    width: 100%;
    accent-color: var(--accent)
  }

  /* =========================================================
   GALLERY STRIP — full-bleed filmstrip
   ========================================================= */
  .gallery-strip {
    position: relative;
    background: var(--cream-2, #ECE9DF);
    overflow: hidden;
    user-select: none
  }

  .gallery-strip__track-wrap {
    overflow: hidden;
    cursor: grab
  }

  .gallery-strip__track-wrap:active {
    cursor: grabbing
  }

  .gallery-strip__track {
    display: flex;
    transition: transform .8s cubic-bezier(.25, .46, .45, .94);
    will-change: transform
  }

  .gallery-strip__slide {
    flex: 0 0 70vw;
    max-width: 1100px;
    min-width: 280px;
    margin: 0;
    padding: 0;
    position: relative;
    overflow: hidden
  }

  .gallery-strip__slide img {
    width: 100%;
    height: 75vh;
    min-height: 380px;
    object-fit: cover;
    display: block;
    transition: transform 8s ease;
    transform: scale(1)
  }

  .gallery-strip__slide.active img {
    transform: scale(1.06)
  }

  .gallery-strip__slide figcaption {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: clamp(20px, 3vw, 40px);
    background: linear-gradient(0deg, rgba(20, 26, 30, .85) 0%, transparent 100%);
    transform: translateY(0)
  }

  .gallery-strip__slide figcaption span {
    font-family: var(--serif);
    font-size: clamp(1rem, 1.6vw, 1.4rem);
    color: #fff;
    letter-spacing: .06em;
    font-weight: 500;
    display: inline-block;
    opacity: 0;
    transform: translateY(12px);
    transition: opacity .6s .2s, transform .6s .2s
  }

  .gallery-strip__slide.active figcaption span {
    opacity: 1;
    transform: none
  }

  /* centering handled via JS offset */
  /* side slides: scale down slightly */
  .gallery-strip__slide:not(.active) {
    transform: scale(.96);
    transition: transform .8s cubic-bezier(.25, .46, .45, .94)
  }

  .gallery-strip__slide.active {
    transform: scale(1)
  }

  /* UI bar */
  .gallery-strip__ui {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
    padding: 22px 0 20px;
    background: var(--cream-2, #ECE9DF)
  }

  .gallery-strip__btn {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    border: 1px solid rgba(35, 40, 42, .2);
    background: transparent;
    color: var(--slate);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: .35s var(--ease);
    flex-shrink: 0
  }

  .gallery-strip__btn svg {
    width: 20px;
    height: 20px
  }

  .gallery-strip__btn:hover {
    border-color: var(--gold-3);
    color: var(--gold-3)
  }

  .gallery-strip__dots {
    display: flex;
    gap: 8px;
    align-items: center
  }

  .gallery-strip__dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(35, 40, 42, .22);
    border: 0;
    padding: 0;
    cursor: pointer;
    transition: .35s var(--ease);
    flex-shrink: 0
  }

  .gallery-strip__dot.on {
    background: var(--gold-2);
    width: 24px;
    border-radius: 3px
  }

  .gallery-strip__track-wrap::before,
  .gallery-strip__track-wrap::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: clamp(40px, 8vw, 120px);
    z-index: 4;
    pointer-events: none
  }

  .gallery-strip__track-wrap::before {
    left: 0;
    background: linear-gradient(90deg, #ECE9DF 0%, transparent 100%)
  }

  .gallery-strip__track-wrap::after {
    right: 0;
    background: linear-gradient(270deg, #ECE9DF 0%, transparent 100%)
  }

  .gallery-strip__counter {
    position: absolute;
    top: 22px;
    right: clamp(20px, 4vw, 60px);
    font-family: var(--serif);
    font-size: 1.05rem;
    color: rgba(35, 40, 42, .5);
    letter-spacing: .08em;
    pointer-events: none
  }

  @media (max-width:700px) {
    .gallery-strip__slide {
      flex: 0 0 88vw
    }

    .gallery-strip__track::before,
    .gallery-strip__track::after {
      flex: 0 0 6vw;
      min-width: 6vw
    }

    .gallery-strip__slide img {
      height: 60vw;
      min-height: 260px
    }
  }

  .priceband {
    background: var(--slate);
    color: #fff;
    position: relative
  }

  .priceband .wrap {
    position: relative;
    padding-top: clamp(48px, 7vh, 80px);
    padding-bottom: 0
  }

  .priceband__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    max-width: 1112px;
    margin: 0 auto;
    border: 1px solid rgba(255, 255, 255, .18)
  }

  .priceband__cell {
    padding: 30px 24px;
    text-align: center;
    border-right: 1px solid rgba(255, 255, 255, .18)
  }

  .priceband__cell:last-child {
    border-right: 0
  }

  .priceband__cell .lab {
    font-size: .7rem;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .55);
    font-weight: 700
  }

  .priceband__cell .val {
    font-family: var(--serif);
    font-size: clamp(2.1rem, 3.6vw, 2.9rem);
    color: #fff;
    font-weight: 600;
    margin-top: 14px;
    line-height: 1
  }

  .priceband__cell .val .u {
    font-size: .5em;
    color: rgba(255, 255, 255, .55);
    letter-spacing: .02em
  }

  .priceband__cta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px 18px;
    flex-wrap: wrap;
    max-width: 1112px;
    margin: 26px auto 0;
    padding-bottom: clamp(48px, 7vh, 80px);
    color: rgba(255, 255, 255, .7);
    font-size: 1rem;
    line-height: 1.6
  }

  .priceband__cta a {
    color: #fff;
    font-weight: 700;
    border-bottom: 1px solid rgba(255, 255, 255, .4);
    transition: .3s var(--ease);
    white-space: nowrap
  }

  .priceband__cta a:hover {
    border-color: #fff
  }

  /* CTA priceband come bottone pieno: annulla l'underline/colore del link inline */
  .priceband__cta a.btn {
    border: 1px solid var(--accent);
    color: #fff
  }

  .priceband__cta a.btn:hover {
    border-color: var(--ink)
  }

  /* =========================================================
   LA POSIZIONE
   ========================================================= */
  .posizione {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(40px, 6vw, 80px);
    align-items: start
  }

  .posizione__intro h2 {
    font-size: clamp(1.9rem, 3.6vw, 3rem);
    line-height: 1.1;
    margin-top: 18px;
    text-wrap: balance
  }

  .posizione__origin {
    margin-top: 30px;
    border-left: 2px solid var(--accent);
    padding-left: 20px
  }

  .posizione__origin b {
    display: block;
    font-family: var(--serif);
    font-size: 1.7rem;
    color: var(--ink);
    font-weight: 600;
    line-height: 1.1
  }

  .posizione__origin span {
    font-size: .72rem;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--accent);
    font-weight: 700
  }

  .timeline {
    list-style: none;
    margin: 38px 0 0;
    padding: 0
  }

  .timeline li {
    display: flex;
    align-items: center;
    gap: 24px;
    padding: 18px 0;
    border-bottom: 1px solid var(--grey-line)
  }

  .timeline li:first-child {
    border-top: 1px solid var(--grey-line)
  }

  .timeline .time {
    font-family: var(--serif);
    font-size: 1.8rem;
    color: var(--accent);
    font-weight: 600;
    min-width: 58px;
    line-height: 1
  }

  .timeline .place {
    flex: 1
  }

  .timeline .place b {
    display: block;
    font-size: 1.05rem;
    color: var(--ink);
    font-weight: 600;
    line-height: 1.25
  }

  .timeline .mode {
    font-size: .7rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: #8b8f8f;
    font-weight: 700;
    white-space: nowrap
  }

  /* map */
  .posizione__map {
    position: sticky;
    top: 96px;
    align-self: start
  }

  .mapframe {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--grey-line);
    background: var(--cream-3);
    box-shadow: 0 30px 70px -40px rgba(40, 40, 40, .45);
    aspect-ratio: 3/4
  }

  .brandmap {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block
  }

  .brandmap .poi circle {
    transition: r .35s var(--ease), fill .35s
  }

  .brandmap .poi.active circle {
    r: 12;
    fill: var(--gold-3)
  }

  .brandmap .map-origin .pulse {
    transform-origin: 330px 430px;
    animation: mappulse 2.8s var(--ease) infinite
  }

  @keyframes mappulse {
    0% {
      transform: scale(.7);
      opacity: .9
    }

    70% {
      transform: scale(2.1);
      opacity: 0
    }

    100% {
      opacity: 0
    }
  }

  @media (prefers-reduced-motion:reduce) {
    .brandmap .map-origin .pulse {
      animation: none
    }
  }

  .mapframe__labels {
    position: absolute;
    inset: 0;
    pointer-events: none
  }

  .mapframe__labels .ml {
    position: absolute;
    font-family: var(--sans);
    font-size: .64rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--slate);
    background: rgba(242, 240, 233, .82);
    padding: .25em .5em;
    white-space: nowrap;
    transform: translate(-50%, -130%);
    transition: .35s var(--ease);
    border-bottom: 1.5px solid transparent
  }

  .mapframe__labels .ml.active {
    color: var(--ink);
    background: #fff;
    border-color: var(--accent)
  }

  .mapframe__pin {
    position: absolute;
    top: 18px;
    left: 18px;
    display: flex;
    align-items: center;
    gap: 11px;
    background: rgba(255, 255, 255, .94);
    backdrop-filter: blur(4px);
    padding: 11px 16px 11px 13px;
    box-shadow: 0 8px 24px -10px rgba(0, 0, 0, .35);
    border-left: 3px solid var(--accent)
  }

  .mapframe__pin .dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--accent);
    box-shadow: 0 0 0 4px var(--accent-soft);
    flex: none
  }

  .mapframe__pin b {
    display: block;
    font-family: var(--serif);
    font-size: 1.05rem;
    color: var(--ink);
    font-weight: 600;
    line-height: 1.1
  }

  .mapframe__pin small {
    font-size: .64rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: #8b8f8f;
    font-weight: 700
  }

  .mapframe__open {
    position: absolute;
    bottom: 18px;
    right: 18px;
    background: var(--ink);
    color: #fff;
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    padding: .7em 1.1em;
    transition: .3s var(--ease)
  }

  .mapframe__open:hover {
    background: var(--accent)
  }

  .timeline li {
    cursor: default;
    transition: padding-left .3s var(--ease)
  }

  .timeline li.active {
    padding-left: 8px
  }

  .timeline li.active .time {
    color: var(--gold-3)
  }

  /* =========================================================
   APPARTAMENTI — meta, view toggle, planimetria
   ========================================================= */
  .apt__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px 14px;
    margin: 16px 0 2px
  }

  .apt__meta .m {
    font-size: .82rem;
    color: var(--slate);
    font-weight: 700;
    letter-spacing: .02em
  }

  .apt__meta .m.dim {
    color: #8b8f8f;
    font-weight: 600
  }

  .apt__price {
    font-family: var(--serif);
    font-size: 1.7rem;
    color: var(--accent);
    font-weight: 600;
    margin-top: 6px;
    line-height: 1
  }

  .apt__view {
    position: absolute;
    top: 18px;
    right: 18px;
    z-index: 4;
    display: flex;
    border: 1px solid rgba(255, 255, 255, .32);
    background: rgba(20, 26, 30, .42);
    backdrop-filter: blur(6px)
  }

  .apt__stage.planview .apt__view {
    border-color: var(--grey-line);
    background: rgba(255, 255, 255, .7)
  }

  .apt__view button {
    background: none;
    border: 0;
    color: rgba(255, 255, 255, .72);
    padding: .55em 1.05em;
    font-size: .64rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    transition: .3s
  }

  .apt__stage.planview .apt__view button {
    color: #8b8f8f
  }

  .apt__view button.on {
    background: var(--accent);
    color: #fff
  }

  .apt__stage.planview {
    background: #ffffff !important
  }

  .apt__stage img[data-view="plan"] {
    object-fit: contain;
    padding: 24px;
    background: #ffffff !important
  }

  .apt__stage img[data-view="plan"].on {
    position: relative
  }

  /* =========================================================
   CAPITOLATO — editorial finish gallery
   ========================================================= */
  .cap-gallery {
    margin-top: 54px;
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    grid-template-rows: repeat(2, 1fr);
    gap: 14px;
    height: 660px
  }

  .cap-fig {
    position: relative;
    overflow: hidden;
    background: var(--slate-3)
  }

  .cap-fig.feature {
    grid-row: span 2
  }

  .cap-fig img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.4s var(--ease)
  }

  .cap-fig:hover img {
    transform: scale(1.05)
  }

  .cap-fig::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(0deg, rgba(18, 22, 24, .74) 0%, rgba(18, 22, 24, .04) 55%);
    opacity: .92;
    transition: opacity .5s
  }

  .cap-fig:hover::after {
    opacity: 1
  }

  .cap-fig__c {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    padding: 26px 28px
  }

  .cap-fig__c .k {
    font-size: .64rem;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--gold-1)
  }

  .cap-fig__c h4 {
    font-family: var(--serif);
    font-size: 1.45rem;
    color: #fff;
    font-weight: 600;
    margin: 7px 0 0;
    line-height: 1.12
  }

  .cap-fig__c p {
    font-size: .86rem;
    color: rgba(255, 255, 255, .82);
    margin: 7px 0 0;
    max-width: 42ch;
    line-height: 1.55
  }

  .cap-fig .zoom {
    position: absolute;
    top: 18px;
    right: 18px;
    z-index: 3;
    width: 40px;
    height: 40px;
    border: 1px solid rgba(255, 255, 255, .4);
    background: rgba(20, 26, 30, .32);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(6px);
    transition: .4s;
    opacity: 0
  }

  .cap-fig:hover .zoom {
    opacity: 1
  }

  .cap-fig .zoom:hover {
    background: var(--accent);
    border-color: var(--accent)
  }

  /* =========================================================
   CAPITOLATO — elevated editorial
   ========================================================= */
  .capitolato__top {
    display: grid;
    grid-template-columns: 1.05fr .95fr;
    gap: clamp(36px, 5vw, 80px);
    align-items: center
  }

  .capitolato__intro h2 {
    font-size: clamp(2rem, 4vw, 3.2rem);
    line-height: 1.08;
    margin-top: 18px;
    text-wrap: balance
  }

  .capitolato__intro p {
    margin: 22px auto 0;
    max-width: 46ch
  }

  .matlist {
    margin: 36px 0 0;
    list-style: none;
    padding: 0
  }

  .matlist li {
    display: flex;
    align-items: baseline;
    gap: 18px;
    padding: 18px 0;
    border-top: 1px solid var(--grey-line)
  }

  .matlist li:last-child {
    border-bottom: 1px solid var(--grey-line)
  }

  .matlist .mname {
    font-family: var(--serif);
    font-size: 1.5rem;
    color: var(--ink);
    font-weight: 600;
    min-width: 168px;
    line-height: 1.05
  }

  .matlist .mname small {
    display: block;
    font-family: var(--sans);
    font-size: .62rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--accent);
    font-weight: 700;
    margin-top: 5px
  }

  .matlist .mdesc {
    font-size: .95rem;
    color: #6c7174;
    flex: 1
  }

  .capitolato__media {
    position: relative;
    overflow: hidden;
    align-self: stretch;
    min-height: 480px
  }

  .capitolato__media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.5s var(--ease)
  }

  .capitolato__media:hover img {
    transform: scale(1.05)
  }

  .capitolato__media .tag {
    position: absolute;
    left: 0;
    bottom: 0;
    background: var(--accent);
    color: #fff;
    font-size: .64rem;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    padding: .85em 1.3em
  }

  .capitolato__media .zoom {
    position: absolute;
    top: 18px;
    right: 18px;
    width: 44px;
    height: 44px;
    border: 1px solid rgba(255, 255, 255, .42);
    background: rgba(20, 26, 30, .32);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    backdrop-filter: blur(6px);
    transition: .4s
  }

  .capitolato__media .zoom:hover {
    background: var(--accent);
    border-color: var(--accent)
  }

  .capitolato__strip {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-top: 14px
  }

  .capitolato__strip figure {
    position: relative;
    overflow: hidden;
    margin: 0;
    height: 200px
  }

  .capitolato__strip img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.4s var(--ease)
  }

  .capitolato__strip figure:hover img {
    transform: scale(1.06)
  }

  .suppliers-head {
    margin-top: clamp(48px, 7vh, 80px);
    text-align: center
  }

  .suppliers-head span {
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .24em;
    text-transform: uppercase;
    color: var(--accent)
  }

  /* =========================================================
   SUPPLIERS LOGO WALL
   ========================================================= */
  .suppliers {
    margin-top: 54px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
    background: transparent;
    border: 0
  }

  .suppliers .sup {
    background: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 38px 28px;
    min-height: 150px
  }

  .suppliers .sup img {
    max-height: 58px;
    max-width: 170px;
    width: auto;
    object-fit: contain;
    filter: grayscale(1);
    opacity: .6;
    transition: .45s var(--ease)
  }

  .suppliers .sup:hover img {
    filter: none;
    opacity: 1;
    transform: scale(1.04)
  }

  /* =========================================================
   MORTGAGE PANEL (elegant ledger)
   ========================================================= */
  .mortgage {
    background: var(--slate);
    color: #fff;
    padding: clamp(36px, 4vw, 54px);
    position: relative;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .08)
  }

  .mortgage__head {
    position: relative
  }

  .mortgage__tag {
    font-size: .66rem;
    letter-spacing: .24em;
    text-transform: uppercase;
    color: var(--gold-1);
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 11px
  }

  .mortgage__tag::before {
    content: "";
    width: 26px;
    height: 1px;
    background: var(--gold-1)
  }

  .mortgage h3 {
    font-family: var(--serif);
    font-size: clamp(1.6rem, 2.7vw, 2.2rem);
    color: #fff;
    margin: 14px 0 0;
    font-weight: 600;
    line-height: 1.08
  }

  .ledger {
    position: relative;
    margin: 28px 0 0;
    list-style: none;
    padding: 0
  }

  .ledger li {
    display: flex;
    align-items: baseline;
    gap: 14px;
    padding: 14px 0
  }

  .ledger li+li {
    border-top: 1px solid rgba(255, 255, 255, .1)
  }

  .ledger .lab2 {
    font-size: .96rem;
    color: #cfd2d1
  }

  .ledger .dots {
    flex: 1;
    border-bottom: 1px dotted rgba(255, 255, 255, .28);
    transform: translateY(-5px)
  }

  .ledger .v2 {
    font-family: var(--serif);
    font-size: 1.18rem;
    color: var(--gold-1);
    font-weight: 600;
    white-space: nowrap
  }

  .mortgage__foot {
    position: relative;
    margin-top: 30px;
    padding-top: 26px;
    border-top: 1px solid rgba(255, 255, 255, .12);
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    justify-content: flex-start
  }

  .mutuo__partners {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 26px
  }

  .mutuo__partners .plogo {
    border: 1px solid var(--grey-line);
    background: #fff
  }

  .mutuo__partners .plogo:hover {
    border-color: var(--accent);
    background: var(--cream)
  }

  .mutuo__partners .plogo__name {
    color: var(--ink)
  }

  .mutuo__partners .plogo__name b {
    color: var(--accent)
  }

  .mutuo__partners .plogo small {
    color: #8b8f8f
  }

  .plogo {
    border: 1px solid rgba(230, 206, 149, .32);
    background: rgba(255, 255, 255, .03);
    padding: 16px 20px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    transition: .4s var(--ease);
    align-items: flex-start;
    text-align: left
  }

  .plogo:hover {
    border-color: var(--gold-1);
    background: rgba(230, 206, 149, .06)
  }

  .plogo__name {
    font-family: var(--serif);
    font-size: 1.3rem;
    color: #fff;
    font-weight: 500;
    line-height: 1;
    letter-spacing: .01em
  }

  .plogo__name b {
    color: var(--gold-1);
    font-weight: 600;
    margin-left: .28em
  }

  .plogo small {
    font-family: var(--sans);
    font-size: .6rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--gold-2);
    font-weight: 700
  }

  .mortgage__foot .pp {
    font-family: var(--serif);
    font-size: 1.05rem;
    color: #fff;
    font-weight: 600
  }

  .mortgage__foot .pp small {
    display: block;
    font-family: var(--sans);
    font-size: .6rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--gold-2);
    font-weight: 700;
    margin-top: 3px
  }

  /* =========================================================
   LA FIRMA
   ========================================================= */
  .firma {
    background: var(--cream);
    position: relative;
    overflow: hidden
  }

  .firma__sketch {
    position: absolute;
    right: -6%;
    top: 50%;
    transform: translateY(-50%);
    width: min(58%, 720px);
    height: auto;
    opacity: .10;
    pointer-events: none;
    mix-blend-mode: multiply
  }

  .firma__grid {
    position: relative;
    display: grid;
    grid-template-columns: 1.15fr .85fr;
    gap: clamp(40px, 6vw, 90px);
    align-items: center
  }

  .firma__quote {
    font-family: var(--serif);
    font-style: italic;
    font-weight: 500;
    font-size: clamp(1.7rem, 3.4vw, 2.9rem);
    line-height: 1.18;
    color: var(--ink);
    margin: 22px 0 0;
    text-wrap: balance
  }

  .firma__vis {
    margin-top: 26px;
    max-width: 50ch;
    color: var(--slate)
  }

  .firma__credit {
    margin-top: 34px;
    padding-top: 22px;
    border-top: 1px solid var(--grey-line)
  }

  .firma__studio {
    display: block;
    font-family: var(--serif);
    font-size: 1.4rem;
    color: var(--ink);
    font-weight: 600
  }

  .firma__role {
    font-size: .72rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--accent);
    font-weight: 700;
    margin-top: 6px;
    display: block
  }

  .firma__portrait {
    position: relative
  }

  .firma__portrait image-slot {
    border: 1px solid var(--grey-line)
  }

  .firma__caption {
    display: block;
    margin-top: 14px;
    font-size: .7rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: #8b8f8f;
    font-weight: 700;
    text-align: center
  }

  /* =========================================================
   MOMENTO CINEMATOGRAFICO
   ========================================================= */
  .cinematic {
    position: relative;
    height: 100svh;
    min-height: 520px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: hidden
  }

  .cinematic__bg {
    position: absolute;
    inset: 0
  }

  .cinematic__bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 55%;
    animation: kenburns-slow 26s var(--ease) infinite alternate
  }

  .cinematic::after {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(20, 26, 30, .46)
  }

  .cinematic__line {
    position: relative;
    z-index: 2;
    color: #fff;
    font-family: var(--serif);
    font-weight: 500;
    font-size: clamp(1.8rem, 4vw, 3.4rem);
    line-height: 1.18;
    letter-spacing: .01em;
    text-shadow: 0 2px 40px rgba(0, 0, 0, .4);
    padding: 0 var(--gutter);
    text-wrap: balance
  }

  @keyframes kenburns-slow {
    from {
      transform: scale(1)
    }

    to {
      transform: scale(1.08)
    }
  }

  @media (prefers-reduced-motion:reduce) {
    .cinematic__bg img {
      animation: none
    }
  }

  /* =========================================================
   CAPITOLATO — racconto di materia
   ========================================================= */
  .materia {
    margin-top: clamp(40px, 6vh, 72px)
  }

  .materia__row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
    gap: 0
  }

  .materia__row.rev .materia__media {
    order: 2
  }

  .materia__media {
    position: relative;
    overflow: hidden;
    aspect-ratio: 16/11;
    background: var(--cream-3)
  }

  .materia__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.6s var(--ease);
    cursor: zoom-in
  }

  .materia__row:hover .materia__media img {
    transform: scale(1.05)
  }

  .materia__txt {
    padding: clamp(30px, 5vw, 72px)
  }

  .materia__n {
    font-size: .7rem;
    letter-spacing: .24em;
    text-transform: uppercase;
    color: var(--accent);
    font-weight: 700
  }

  .materia__txt h3 {
    font-family: var(--serif);
    font-size: clamp(1.7rem, 3vw, 2.5rem);
    color: var(--ink);
    font-weight: 600;
    margin: 16px 0 0;
    line-height: 1.08
  }

  .materia__txt p {
    margin: 18px 0 0;
    max-width: 44ch;
    color: var(--slate)
  }

  .materia__brand {
    display: inline-block;
    margin-top: 24px;
    font-size: .74rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: #8b8f8f;
    font-weight: 700;
    padding-top: 14px;
    border-top: 1px solid var(--grey-line)
  }

  .materia__credits {
    text-align: center;
    max-width: 64ch;
    margin: clamp(40px, 6vh, 72px) auto 0;
    font-size: .92rem;
    color: #8b8f8f;
    line-height: 1.7
  }

  .materia__credits b {
    color: var(--slate);
    font-weight: 600
  }

  /* apt evocative tabs */
  .apt__tab {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    line-height: 1.1
  }

  .apt__tab-name {
    font-family: var(--serif);
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: .01em
  }

  .apt__tab-code {
    font-family: var(--sans);
    font-size: .62rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    font-weight: 700;
    opacity: .6
  }

  /* amenity stroke icons */
  .amen-extra .x .ic svg {
    width: 24px;
    height: 24px;
    display: block
  }

  /* contatti dark adjustments */
  #contatti.dark .contact-list .ci {
    border-top-color: rgba(255, 255, 255, .14)
  }

  #contatti.dark .contact-list .ci h4 {
    color: #9aa0a1
  }

  #contatti.dark .contact-list .ci p {
    color: #fff
  }

  #contatti.dark .eyebrow {
    color: var(--accent)
  }

  /* =========================================================
   RESPONSIVE
   ========================================================= */
  @media (max-width:1080px) {
    .pillars {
      grid-template-columns: repeat(2, 1fr)
    }

    .pillar:nth-child(2) {
      border-right: 0
    }

    .pillar {
      border-bottom: 1px solid var(--grey-line)
    }

    .materiali {
      grid-template-columns: repeat(2, 1fr)
    }

    .footer__top {
      grid-template-columns: 1fr 1fr
    }

    .suppliers {
      grid-template-columns: repeat(4, 1fr)
    }

    .cap-gallery {
      height: auto;
      grid-template-columns: 1fr 1fr;
      grid-template-rows: auto
    }

    .cap-fig {
      min-height: 280px
    }

    .cap-fig.feature {
      grid-row: auto;
      grid-column: span 2;
      min-height: 360px
    }
  }

  @media (max-width:900px) {
    .header nav {
      display: none
    }

    .header__cta .btn {
      display: none
    }

    .burger {
      display: flex
    }

    .split,
    .mutuo,
    .contatti {
      grid-template-columns: 1fr
    }

    .split.rev {
      direction: ltr
    }

    .apt {
      grid-template-columns: 1fr
    }

    .capitolato__top {
      grid-template-columns: 1fr;
      gap: 34px
    }

    .capitolato__media {
      min-height: 340px
    }

    .matlist .mname {
      min-width: 140px
    }

    .apt__stage img,
    .apt__stage .apt__ph {
      min-height: 340px
    }

    .context-collage {
      height: auto;
      grid-template-rows: auto
    }

    .context-collage .big {
      grid-row: auto
    }

    .context-collage img,
    .context-collage .imgph {
      height: 240px
    }

    .amen-grid {
      grid-template-columns: 1fr 1fr
    }

    .amen.wide {
      grid-column: span 2
    }

    .amen-extra {
      grid-template-columns: 1fr
    }

    .amen-extra .x {
      border-right: 0;
      border-bottom: 1px solid rgba(255, 255, 255, .14)
    }

    .amen-extra .x:last-child {
      border-bottom: 0
    }

    .posizione {
      grid-template-columns: 1fr;
      gap: 34px
    }

    .posizione__map {
      position: static;
      top: auto
    }

    .mapframe {
      aspect-ratio: 4/3
    }

    .firma__grid {
      grid-template-columns: 1fr;
      gap: 30px
    }

    .firma__sketch {
      opacity: .06
    }

    .materia__row {
      grid-template-columns: 1fr
    }

    .materia__row.rev .materia__media {
      order: 0
    }
  }

  @media (max-width:560px) {
    body {
      font-size: 16px
    }

    .pillars {
      grid-template-columns: 1fr
    }

    .pillar {
      border-right: 0
    }

    .amen-grid {
      grid-template-columns: 1fr
    }

    .amen.wide {
      grid-column: auto
    }

    .row2 {
      grid-template-columns: 1fr
    }

    .footer__top {
      grid-template-columns: 1fr
    }

    .stats {
      gap: 28px
    }

    .apt__tabs {
      grid-template-columns: repeat(3, 1fr);
      gap: 6px
    }

    .priceband__grid {
      grid-template-columns: 1fr
    }

    .priceband__cell {
      padding: 22px 20px;
      border-right: 0;
      border-bottom: 1px solid rgba(255, 255, 255, .18)
    }

    .priceband__cell:last-child {
      border-bottom: 0
    }

    .timeline .time {
      font-size: 1.5rem;
      min-width: 48px
    }
  }

  /* ---- sub-page compact hero (pagine interne) ---- */
  .hero.hero--sub {
    min-height: 100svh
  }

  .hero.hero--sub .hero__inner {
    max-width: 960px
  }

  .hero.hero--sub h1 {
    font-size: clamp(2rem, 4.2vw, 3.6rem);
    text-transform: none;
    font-weight: 600
  }

  .hero--sub .eyebrow.center {
    color: var(--gold-1);
    justify-content: center;
    margin-bottom: 6px
  }

  .hero--sub .eyebrow.center::before,
  .hero--sub .eyebrow.center::after {
    background: var(--gold-1);
    opacity: .85
  }

  @media (max-width:640px) {
    .hero.hero--sub {
      min-height: 100svh
    }
  }/* End custom CSS */