
    /* ===== stili aggiuntivi SOLO per il mockup autoportante ===== */

    /* reset base */
    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
    body { overflow-x: hidden; }

    /* ---- HEADER ---- */
    .pm-header {
      position: fixed;
      top: 0; left: 0; right: 0;
      z-index: 1000;
      transition: background-color .35s cubic-bezier(.16,1,.3,1),
                  box-shadow .35s cubic-bezier(.16,1,.3,1),
                  padding .35s cubic-bezier(.16,1,.3,1);
      padding: 18px 0;
      background-color: transparent;
    }
    .pm-header.is-solid {
      background-color: var(--brown-900);
      box-shadow: 0 2px 24px rgba(0,0,0,.3);
      padding: 10px 0;
    }
    .pm-header__inner {
      max-width: var(--container-max);
      margin-inline: auto;
      padding-inline: var(--gutter);
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
    }
    .pm-header__logo {
      display: flex;
      align-items: center;
      gap: 10px;
      text-decoration: none;
    }
    .pm-header__logo-text {
      font-family: var(--font-serif);
      font-size: 1.1rem;
      font-weight: 600;
      color: var(--white);
      letter-spacing: .04em;
      line-height: 1.15;
    }
    .pm-header__logo-stars {
      font-size: .6rem;
      letter-spacing: .25em;
      color: var(--gold-400);
      display: block;
    }
    .pm-header__nav {
      display: flex;
      align-items: center;
      gap: 4px;
      list-style: none;
    }
    .pm-header__nav a {
      font-family: var(--font-body);
      font-size: .75rem;
      font-weight: 700;
      letter-spacing: .1em;
      text-transform: uppercase;
      color: rgba(255,255,255,.88);
      padding: 6px 10px;
      border-radius: 3px;
      text-decoration: none;
      transition: color .2s, background-color .2s;
    }
    .pm-header__nav a:hover {
      color: var(--gold-400);
      background-color: rgba(255,255,255,.07);
    }
    .pm-header__right {
      display: flex;
      align-items: center;
      gap: 16px;
    }
    .pm-header__tel {
      font-size: .78rem;
      font-weight: 700;
      color: var(--gold-300);
      text-decoration: none;
      white-space: nowrap;
      transition: color .2s;
    }
    .pm-header__tel:hover { color: var(--white); }
    /* ---- SWITCH LINGUA — ben visibile sopra l'hero ---- */
    .pm-lang {
      display: flex;
      gap: 5px;
      padding: 3px;
      background-color: rgba(27,22,16,.32);
      border: 1px solid rgba(255,255,255,.30);
      border-radius: 5px;
      backdrop-filter: blur(2px);
    }
    .pm-lang a {
      font-size: .82rem;
      font-weight: 700;
      letter-spacing: .05em;
      padding: 5px 10px;
      border-radius: 3px;
      color: #ffffff;
      text-decoration: none;
      transition: color .18s, background-color .18s;
      line-height: 1;
      display: inline-flex;
      align-items: center;
    }
    .pm-lang a:hover {
      background-color: rgba(255,255,255,.16);
      color: var(--gold-300);
    }
    .pm-lang a.active {
      background-color: var(--gold-400);
      color: var(--brown-900);
    }

    /* hamburger mobile */
    .pm-hamburger {
      display: none;
      flex-direction: column;
      gap: 5px;
      cursor: pointer;
      padding: 8px;
      background: none;
      border: none;
      min-height: 44px;
      min-width: 44px;
      align-items: center;
      justify-content: center;
    }
    .pm-hamburger span {
      display: block;
      width: 22px;
      height: 2px;
      background: var(--white);
      border-radius: 2px;
    }

    /* ---- HERO ---- */
    .pm-hero {
      position: relative;
      min-height: 92vh;
      display: flex;
      align-items: flex-end;
      overflow: hidden;
      background-color: var(--brown-900);
    }
    .pm-hero__bg {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center 30%;
      transform-origin: center top;
      will-change: transform;
    }
    .pm-hero__overlay {
      position: absolute;
      inset: 0;
      background: linear-gradient(
        to top,
        rgba(27,22,16,.90) 0%,
        rgba(27,22,16,.48) 45%,
        rgba(27,22,16,.12) 100%
      );
      z-index: 1;
    }
    .pm-hero__content {
      position: relative;
      z-index: 2;
      max-width: var(--container-max);
      margin-inline: auto;
      padding: 0 var(--gutter) 80px;
      width: 100%;
    }
    .pm-hero__eyebrow {
      font-family: var(--font-body);
      font-size: .72rem;
      font-weight: 700;
      letter-spacing: .22em;
      text-transform: uppercase;
      color: var(--gold-400);
      margin-bottom: 1rem;
      display: block;
    }
    .pm-hero__title {
      font-family: var(--font-serif);
      font-size: clamp(2.4rem, 5.5vw, 5rem);
      font-weight: 600;
      color: var(--white);
      line-height: 1.2;
      max-width: 14em;
      margin-bottom: 1rem;
      /* sicurezza overflow mobile */
      word-break: break-word;
      overflow-wrap: break-word;
    }
    .pm-hero__sub {
      font-size: 1.05rem;
      color: rgba(255,255,255,.78);
      max-width: 52ch;
      margin-bottom: 2.2rem;
      line-height: 1.65;
    }
    .pm-hero__cta {
      display: flex;
      gap: 14px;
      flex-wrap: wrap;
    }
    /* scroll indicator */
    .pm-hero__scroll {
      position: absolute;
      bottom: 28px;
      right: 40px;
      z-index: 3;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 6px;
      opacity: .5;
    }
    .pm-hero__scroll span {
      font-size: .6rem;
      letter-spacing: .2em;
      text-transform: uppercase;
      color: var(--white);
      writing-mode: vertical-rl;
    }
    .pm-hero__scroll-line {
      width: 1px;
      height: 48px;
      background: linear-gradient(to bottom, transparent, var(--gold-400));
      animation: scrollLine 1.8s ease-in-out infinite;
    }
    @keyframes scrollLine {
      0%   { opacity: 0; transform: scaleY(0); transform-origin: top; }
      50%  { opacity: 1; transform: scaleY(1); }
      100% { opacity: 0; transform: scaleY(1); transform-origin: bottom; }
    }

    /* ---- SEZIONE INTRO ---- */
    .pm-intro {
      background-color: var(--cream-50);
      padding: 96px 0;
    }
    .pm-intro-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 72px;
      align-items: center;
    }
    .pm-intro-grid__text .pm-divider { margin-bottom: 1.5rem; }
    .pm-intro-grid__img {
      position: relative;
      overflow: hidden;
      border-radius: 2px;
      box-shadow: 0 24px 64px rgba(27,22,16,.16);
    }
    .pm-intro-grid__img img {
      width: 100%;
      height: 460px;
      object-fit: cover;
      display: block;
      transition: transform .7s cubic-bezier(.16,1,.3,1);
    }
    .pm-intro-grid__img:hover img { transform: scale(1.04); }
    /* cornice decorativa */
    .pm-intro-grid__img::after {
      content: "";
      position: absolute;
      bottom: -14px;
      right: -14px;
      width: 55%;
      height: 55%;
      border: 2px solid var(--gold-400);
      border-radius: 2px;
      pointer-events: none;
    }
    .pm-features {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 14px;
      margin-top: 1.6rem;
    }
    .pm-feature {
      display: flex;
      align-items: flex-start;
      gap: 10px;
      font-size: .88rem;
      color: var(--brown-600);
    }
    .pm-feature__icon {
      color: var(--gold-500);
      font-size: 1.1rem;
      flex-shrink: 0;
      margin-top: 1px;
    }

    /* ---- SEZIONE ALLOGGI ---- */
    .pm-alloggi {
      background-color: var(--cream-100);
      padding: 96px 0;
    }
    .pm-cards {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 28px;
      margin-top: 3rem;
    }
    .pm-card {
      background: var(--white);
      border-radius: 4px;
      overflow: hidden;
      box-shadow: 0 4px 24px rgba(27,22,16,.09);
      display: flex;
      flex-direction: column;
      /* solo CSS hover — blocco GSAP rimosso (P1-3) */
      transition: transform .4s cubic-bezier(.16,1,.3,1),
                  box-shadow .4s cubic-bezier(.16,1,.3,1);
    }
    .pm-card:hover {
      transform: translateY(-6px) scale(1.01);
      box-shadow: 0 20px 52px rgba(27,22,16,.18);
    }
    .pm-card__img-wrap {
      position: relative;
      overflow: hidden;
      flex-shrink: 0;
    }
    .pm-card__img-wrap img {
      width: 100%;
      height: 244px;
      object-fit: cover;
      display: block;
      transition: transform .55s cubic-bezier(.16,1,.3,1);
    }
    .pm-card:hover .pm-card__img-wrap img { transform: scale(1.07); }
    .pm-card__img-wrap::after {
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(to bottom, transparent 40%, rgba(27,22,16,.5) 100%);
      pointer-events: none;
      transition: opacity .4s;
    }
    .pm-card:hover .pm-card__img-wrap::after { opacity: .72; }
    /* badge mq: sfondo oro, testo scuro per contrasto AA (P0-4) */
    .pm-card__badge {
      position: absolute;
      top: 16px; left: 16px;
      z-index: 2;
      background: var(--gold-500);
      color: var(--brown-900);
      font-size: .65rem;
      font-weight: 700;
      letter-spacing: .13em;
      text-transform: uppercase;
      padding: 5px 10px;
      border-radius: 2px;
    }
    /* badge "NUOVO": marrone scuro, testo bianco (ratio ~9:1) */
    .pm-card__badge--new {
      background: var(--brown-700);
      color: var(--white);
    }
    .pm-card__body {
      padding: 24px 24px 28px;
      flex: 1;
      display: flex;
      flex-direction: column;
    }
    .pm-card__location {
      font-size: .68rem;
      font-weight: 700;
      letter-spacing: .14em;
      text-transform: uppercase;
      color: var(--gold-500);
      margin-bottom: .5rem;
    }
    .pm-card__title {
      font-family: var(--font-serif);
      font-size: 1.35rem;
      font-weight: 600;
      color: var(--brown-900);
      line-height: 1.18;
      margin-bottom: .35rem;
    }
    /* P1-7: tagline su crema → --brown-600 non --brown-500 */
    .pm-card__tagline {
      font-style: italic;
      font-family: var(--font-serif);
      color: var(--brown-600);
      font-size: .98rem;
      margin-bottom: .9rem;
    }
    .pm-card__desc {
      font-size: .875rem;
      color: var(--brown-600);
      line-height: 1.65;
      flex: 1;
      margin-bottom: 1.4rem;
    }
    .pm-card__footer {
      margin-top: auto;
    }

    /* ---- BOX DISPONIBILITA ---- */
    .pm-availability {
      background-color: var(--gold-500);
      padding: 72px 0;
      text-align: center;
    }
    /* P0-4: testi scuri su oro per contrasto AA */
    .pm-availability__eyebrow {
      font-size: .72rem;
      font-weight: 700;
      letter-spacing: .22em;
      text-transform: uppercase;
      color: #3a2f22;
      margin-bottom: .8rem;
      display: block;
    }
    .pm-availability__heading {
      font-family: var(--font-serif);
      font-size: clamp(1.7rem, 3vw, 2.4rem);
      font-weight: 600;
      color: var(--brown-900);
      margin-bottom: .6rem;
    }
    .pm-availability__sub {
      font-size: .95rem;
      color: #2a2118;
      max-width: 52ch;
      margin: 0 auto 2.2rem;
      line-height: 1.7;
    }
    .pm-availability__cta {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      font-family: var(--font-body);
      font-size: .78rem;
      font-weight: 700;
      letter-spacing: .14em;
      text-transform: uppercase;
      padding: 15px 34px;
      border: 2px solid rgba(27,22,16,.35);
      border-radius: 3px;
      color: var(--brown-900);
      text-decoration: none;
      cursor: pointer;
      transition: background-color .25s, border-color .25s, transform .2s cubic-bezier(.175,.885,.32,1.275);
      background: transparent;
      min-height: 44px;
    }
    .pm-availability__cta:hover {
      background-color: rgba(27,22,16,.1);
      border-color: var(--brown-900);
      transform: translateY(-2px);
    }

    /* ---- DOVE SIAMO ---- */
    .pm-location {
      background-color: var(--cream-50);
      padding: 96px 0;
    }
    .pm-location-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 56px;
      align-items: start;
      margin-top: 3rem;
    }
    .pm-map-embed {
      border-radius: 4px;
      overflow: hidden;
      box-shadow: 0 8px 36px rgba(27,22,16,.12);
    }
    .pm-map-embed iframe {
      width: 100%;
      height: 380px;
      border: none;
      display: block;
    }
    .pm-location-info h3 {
      font-size: 1.2rem;
      margin-bottom: 1.2rem;
    }
    .pm-location-items {
      list-style: none;
      padding: 0;
      margin: 0 0 2rem;
    }
    .pm-location-items li {
      display: flex;
      gap: 13px;
      padding: 10px 0;
      border-bottom: 1px solid rgba(27,22,16,.07);
      font-size: .9rem;
      color: var(--brown-600);
      line-height: 1.5;
    }
    .pm-location-items li:last-child { border: none; }
    .pm-location-items__icon {
      color: var(--gold-500);
      flex-shrink: 0;
      font-size: 1rem;
      margin-top: 2px;
    }

    /* ---- FOOTER ---- */
    .pm-footer {
      background-color: var(--brown-900);
      color: rgba(255,255,255,.65);
      padding: 72px 0 32px;
    }
    .pm-footer__grid {
      display: grid;
      grid-template-columns: 2fr 1.2fr 1.2fr 1.4fr;
      gap: 44px;
      padding-bottom: 48px;
      border-bottom: 1px solid rgba(255,255,255,.07);
      margin-bottom: 28px;
    }
    .pm-footer__brand-name {
      font-family: var(--font-serif);
      font-size: 1.1rem;
      font-weight: 600;
      color: var(--white);
      margin-bottom: .35rem;
    }
    .pm-footer__stars { color: var(--gold-400); letter-spacing: .1em; font-size: .75rem; margin-bottom: .9rem; }
    .pm-footer__brand p {
      font-size: .83rem;
      max-width: 34ch;
      line-height: 1.65;
      color: rgba(255,255,255,.48);
    }
    .pm-footer__col-title {
      font-family: var(--font-body);
      font-size: .68rem;
      font-weight: 700;
      letter-spacing: .18em;
      text-transform: uppercase;
      color: var(--gold-400);
      margin-bottom: 1.2rem;
      display: block;
    }
    .pm-footer__col ul { list-style: none; padding: 0; margin: 0; }
    .pm-footer__col li { margin-bottom: .45rem; }
    .pm-footer__col a {
      font-size: .83rem;
      color: rgba(255,255,255,.55);
      text-decoration: none;
      transition: color .18s;
    }
    .pm-footer__col a:hover { color: var(--gold-400); }
    .pm-footer__contact-row {
      display: flex;
      gap: 10px;
      font-size: .83rem;
      color: rgba(255,255,255,.55);
      margin-bottom: .55rem;
      line-height: 1.45;
    }
    .pm-footer__contact-icon { color: var(--gold-400); flex-shrink: 0; margin-top: 2px; }
    .pm-footer__place-label {
      display: block;
      font-size: .68rem;
      font-weight: 700;
      letter-spacing: .12em;
      text-transform: uppercase;
      color: var(--gold-300);
      margin-bottom: .15rem;
    }
    /* riga icone social */
    .pm-footer__social {
      display: flex;
      align-items: center;
      gap: 12px;
      margin-top: 1.3rem;
    }
    .pm-footer__social a {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 40px;
      height: 40px;
      border: 1px solid rgba(255,255,255,.22);
      border-radius: 50%;
      color: var(--gold-400);
      transition: color .2s, border-color .2s, background-color .2s, transform .2s;
    }
    .pm-footer__social a:hover {
      color: var(--brown-900);
      background-color: var(--gold-400);
      border-color: var(--gold-400);
      transform: translateY(-2px);
    }
    .pm-footer__social svg { width: 18px; height: 18px; display: block; }
    .pm-footer__bottom {
      display: flex;
      justify-content: space-between;
      align-items: center;
      flex-wrap: wrap;
      gap: 12px;
    }
    .pm-footer__copy { font-size: .73rem; color: rgba(255,255,255,.35); max-width: 60ch; line-height: 1.5; }
    /* riga link legali */
    .pm-footer__legal {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 10px;
      font-size: .73rem;
    }
    .pm-footer__legal a {
      color: rgba(255,255,255,.6);
      text-decoration: none;
      transition: color .18s;
      cursor: pointer;
    }
    .pm-footer__legal a:hover { color: var(--gold-400); text-decoration: underline; }
    .pm-footer__legal span { color: rgba(255,255,255,.28); }

    /* fallback pre-JS: se GSAP non ha ancora animato, il titolo è leggibile */
    .pm-hero__title .pm-word span {
      animation: pm-word-reveal 0.65s cubic-bezier(.16,1,.3,1) both;
    }
    @keyframes pm-word-reveal {
      from { transform: translateY(110%); }
      to   { transform: translateY(0); }
    }
    /* quando GSAP prende il controllo usa inline style, l'animation viene sovrascritta */

    /* ---- RESPONSIVE ---- */
    @media (max-width: 960px) {
      .pm-intro-grid { grid-template-columns: 1fr; gap: 40px; }
      .pm-intro-grid__img::after { display: none; }
      .pm-intro-grid__img img { height: 360px; }
      .pm-cards { grid-template-columns: 1fr 1fr; }
      .pm-location-grid { grid-template-columns: 1fr; }
      .pm-footer__grid { grid-template-columns: 1fr 1fr; }
    }
    @media (max-width: 680px) {
      .pm-header__nav { display: none; }
      .pm-hamburger { display: flex; }
      .pm-header__tel { display: none; } /* il tel è nel pannello mobile */
      .pm-cards { grid-template-columns: 1fr; }
      .pm-features { grid-template-columns: 1fr; }
      .pm-footer__grid { grid-template-columns: 1fr; gap: 28px; }
      .pm-hero__scroll { display: none; }
      /* hero title mobile: clamp aggressivo per non uscire dallo schermo */
      .pm-hero__title {
        font-size: clamp(1.9rem, 8vw, 2.6rem);
        max-width: 100%;
        word-break: break-word;
      }
    }
    @media (prefers-reduced-motion: reduce) {
      * { animation: none !important; transition: none !important; }
      [data-aos] { opacity: 1 !important; transform: none !important; }
    }
  