:root {
      --black: #1d1d1b;
      --text: #1d1d1b;
      --muted: #6f6f69;
      --line: rgba(29,29,27,.13);
      --soft-line: rgba(29,29,27,.08);
      --gold: #b99769;
      --gold-soft: #eadbc7;
      --cream: #ffffff;
      --warm: #faf8f4;
      --max: 1320px;
      --wide: 1500px;
      --space: clamp(68px, 8vw, 126px);
      --section-padding-block: clamp(56px, 7vw, 104px);
      --size-mapbox-pin: 40px;
      --taille-texte : 16px;
    }

    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; }
    body {
      margin: 0;
      color: var(--text);
      background: var(--cream);
      font-family: Inter, Arial, sans-serif;
      line-height: 1.55;
      text-rendering: optimizeLegibility;
    }

    img { max-width: 100%; display: block; }
    a { color: inherit; text-decoration: none; }
    p { margin: 0; }
    h1, h2, h3, h4 {
      margin: 0;
      font-family: Georgia, 'Times New Roman', serif;
      font-weight: 400;
      color: var(--black);
      line-height: 1.05;
    }
    h1 { font-size: clamp(54px, 6vw, 70px); letter-spacing: -.035em; }
    h2 { font-size: clamp(40px, 4.4vw, 58px); letter-spacing: -.035em; }
    h3 { font-size: clamp(26px, 2.4vw, 38px); letter-spacing: -.02em; }

    .eyebrow {
      color: var(--gold);
      font-size: 12px;
      letter-spacing: .22em;
      text-transform: uppercase;
      font-weight: 700;
      margin-bottom: 18px;
    }

    .site-header {
      position: sticky;
      top: 0;
      z-index: 50;
      min-height: 98px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 10px clamp(24px, 4vw, 58px);
      background: var(--gold);
      backdrop-filter: blur(12px);
      border-bottom: 1px solid rgba(255,255,255,.28);
      box-shadow: 0 8px 20px rgba(29,29,27,.09);
    }

    .brand {
      display: inline-flex;
      align-items: center;
      flex: 0 0 auto;
      line-height: 0;
    }

    nav {
      display: flex;
      align-items: center;
      gap: clamp(18px, 3vw, 44px);
      font-size: 13px;
      letter-spacing: .02em;
    }
    nav a { color: rgba(255,255,255,.82); font-weight: 700; transition: color .2s ease; }
    nav a:hover { color: #fff; }

    .nav-cta {
      min-height: 44px;
      border: 1px solid rgba(255,255,255,.55);
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 0 22px;
      font-weight: 800;
      color: #fff;
      background: transparent;
    }

    .mobile-menu-toggle {
      display: none;
    }

    .section {
      width: min(var(--max), calc(100vw - 48px));
      margin: 0 auto;
    }
    .section-wide {
      width: min(var(--wide), calc(100vw - 24px));
      margin: 0 auto;
    }
    .section-space { height: var(--space); }

    /* Espacement vertical commun a toutes les sections de la landing, hors hero. */
    #top > section:not(.hero) {
      padding-top: var(--section-padding-block);
      padding-bottom: var(--section-padding-block);
    }

    .btn {
      min-height: 52px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 0 28px;
      border: 1px solid var(--black);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: .08em;
      text-transform: uppercase;
      transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
    }
    .btn:hover { transform: translateY(-1px); box-shadow: 0 14px 26px rgba(0,0,0,.08); }
    .btn.primary { background: var(--gold); color: #fff; border-color: var(--gold); }
    .btn.secondary { background: #fff; color: var(--black); border-color: rgba(29,29,27,.26); }

    /* HERO */
    .hero {
      width: 100%;
      border-bottom: 1px solid var(--soft-line);
      background: #fff;
    }
    .hero-grid {
      display: grid;
      grid-template-columns: minmax(420px, 44vw) 1fr;
      min-height: calc(100vh - 82px);
    }
    .hero-main-img {
      min-height: 720px;
      background: url('../images/hero-entrance.jpg') center / cover no-repeat;
      border-right: 1px solid var(--soft-line);
    }
    .hero-editorial {
      display: grid;
      grid-template-rows: 42% 58%;
      min-width: 0;
    }
    .hero-strip {
      display: grid;
      grid-template-columns: .8fr 1.1fr 1fr;
      gap: 12px;
      padding: 0 0 12px 12px;
      min-height: 330px;
      overflow: hidden;
    }
    .hero-strip .img {
      background-size: cover;
      background-position: center;
    }
    .hero-strip .img:nth-child(1) { background-image: url('../images/tower.jpg'); }
    .hero-strip .img:nth-child(2) { background-image: url('../images/hero-molard.jpg'); }
    .hero-strip .img:nth-child(3) { background-image: url('../images/hero-passage-retouche.png'); background-position: center; }

    .hero-copy {
      padding: clamp(46px, 5vw, 74px) clamp(42px, 5vw, 86px) 54px;
      display: flex;
      flex-direction: column;
      justify-content: center;
      background: linear-gradient(180deg, #fff 0%, #fbfaf7 100%);
    }
    .hero-copy .kicker {
      color: var(--muted);
      font-size: 26px;
      letter-spacing: .35em;
      text-transform: uppercase;
      font-weight: 700;
      margin-bottom: 18px;
    }
    .hero-copy h1 {
      margin-bottom: 14px;
      font-size: 34px;
    }
    .hero-copy .lead {
      font-family: Georgia, 'Times New Roman', serif;
      font-size: 28px;
      line-height: 1.18;
      margin-bottom: 22px;
      color: rgba(29,29,27,.88);
    }
    .hero-copy .body {
      max-width: 650px;
      color: rgba(29,29,27,.74);
      font-size: 16px;
      line-height: 1.75;
    }
    .hero-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 18px;
      margin-top: 34px;
    }
    .hero-tags {
      display: flex;
      gap: 12px;
      flex-wrap: wrap;
      margin-top: 26px;
    }
    .hero-tag {
      display: inline-flex;
      align-items: center;
      gap: 9px;
      min-height: 38px;
      padding: 0 16px;
      border: 1px solid var(--soft-line);
      background: rgba(255,255,255,.72);
      color: rgba(29,29,27,.72);
      font-size: 12px;
    }
    .hero-tag svg { width: 15px; height: 15px; stroke: var(--gold); }

    /* INTRO COLUMNS */
    .intro-grid {
      display: grid;
      grid-template-columns: .9fr 1.35fr;
      gap: clamp(54px, 7vw, 112px);
      align-items: start;
      padding: clamp(56px, 7vw, 96px) 0;
      /*border-top: 1px solid var(--soft-line);
      border-bottom: 1px solid var(--soft-line);*/
    }
    .intro-grid p {
      max-width: 720px;
      font-size: var(--taille-texte, 16px);
      line-height: 1.85;
      color: rgba(29,29,27,.76);
    }

    /* ATOUTS */
    .advantages {
      background: linear-gradient(180deg, #fff 0%, #fbfaf7 100%);
      padding: clamp(62px, 7vw, 104px) 0;
      /*border-top: 1px solid var(--soft-line);
      border-bottom: 1px solid var(--soft-line);*/
    }
    .advantages-layout {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: clamp(42px, 6vw, 82px);
      align-items: start;
    }
    .advantages-copy p {
      margin-top: 26px;
      max-width: 500px;
      font-size: var(--taille-texte, 16px);
      line-height: 1.85;
      color: rgba(29,29,27,.76);
    }
    .small-rule {
      width: 58px;
      height: 1px;
      background: var(--gold);
      margin-top: 34px;
    }
    .advantage-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 18px;
    }
    .adv-card {
      width: 100%;
      min-height: 260px;
      padding: 38px 34px;
      background: rgba(255,255,255,.72);
      border: 1px solid rgba(185,151,105,.28);
      box-shadow: 0 18px 46px rgba(0,0,0,.035);
      transition: transform .2s ease, box-shadow .2s ease;
    }
    .adv-card:hover {
      transform: translateY(-2px);
      box-shadow: 0 22px 52px rgba(0,0,0,.055);
    }
    .adv-card svg {
      width: 64px;
      height: 64px;
      stroke: var(--gold);
      fill: none;
      stroke-width: 1.35;
      display: block;
      margin: 0 auto 28px !important;
      opacity: 0;
      transform: translateY(16px) scale(.86);
      transform-origin: center;
    }

    .adv-card.is-visible svg {
      animation: advantage-icon-in .75s cubic-bezier(.2,.75,.25,1) var(--adv-delay, 0ms) both;
    }

    @keyframes advantage-icon-in {
      0% {
        opacity: 0;
        transform: translateY(16px) scale(.86);
      }
      65% {
        opacity: 1;
        transform: translateY(-3px) scale(1.04);
      }
      100% {
        opacity: 1;
        transform: translateY(0) scale(1);
      }
    }

    @media (prefers-reduced-motion: reduce) {
      .adv-card svg {
        opacity: 1;
        transform: none;
      }

      .adv-card.is-visible svg {
        animation: none;
      }
    }

    main h2 {
      opacity: 0;
      transform: translateY(22px);
    }

    main h2.is-visible {
      animation: section-title-in .8s cubic-bezier(.2,.75,.25,1) both;
    }

    @keyframes section-title-in {
      from {
        opacity: 0;
        transform: translateY(22px);
      }
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }

    @media (prefers-reduced-motion: reduce) {
      main h2 {
        opacity: 1;
        transform: none;
      }

      main h2.is-visible {
        animation: none;
      }
    }
    .adv-card h3 {
      font-size: 28px;
      margin-bottom: 12px;
    }
    .adv-card .mini-rule {
      width: 26px;
      height: 1px;
      background: var(--gold);
      margin: 0 0 18px;
    }
    .adv-card p {
      color: rgba(29,29,27,.72);
      line-height: 1.68;
      font-size: 14.5px;
    }

    /* USAGES */
    .usage-layout {
      display: grid;
      grid-template-columns: .32fr .68fr;
      gap: clamp(42px, 6vw, 80px);
      align-items: start;
    }
    .usage-copy {
      position: sticky;
      top: 116px;
    }
    .usage-copy p {
      margin-top: 28px;
      max-width: 410px;
      color: rgba(29,29,27,.76);
      line-height: 1.82;
      font-size: 16px;
    }
    .usage-list {
      display: grid;
      gap: 18px;
    }
    .usage-item {
      display: grid;
      grid-template-columns: 1fr .95fr;
      background: #fff;
      border: 1px solid var(--soft-line);
      box-shadow: 0 18px 46px rgba(0,0,0,.035);
      min-height: 310px;
    }
    .usage-visual {
      min-height: 310px;
      background-size: cover;
      background-position: center;
    }
    .usage-visual.team { background-image: url('../images/work-team-stage.jpg'); }
    .usage-visual.meet { background-image: url('../images/meeting-stage.jpg'); }
    .usage-visual.identity { background-image: url('../images/identity-stage.jpg'); }

    .usage-info {
      padding: 36px 38px;
      display: flex;
      flex-direction: column;
      justify-content: center;
    }
    .usage-number {
      color: var(--gold);
      font-family: Georgia, 'Times New Roman', serif;
      font-size: 30px;
      margin-bottom: 12px;
    }
    .usage-info h3 {
      font-size: clamp(28px, 2.8vw, 40px);
      margin-bottom: 16px;
    }
    .usage-info p {
      color: rgba(29,29,27,.72);
      line-height: 1.7;
    }
    .ideal {
      margin-top: 20px;
      padding-top: 18px;
      /*border-top: 1px solid var(--soft-line);*/
      font-size: 14px;
      color: rgba(29,29,27,.74);
    }
    .usage-thumbs {
      margin-top: 24px;
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 12px;
    }
    .usage-thumbs div {
      height: 88px;
      background-size: cover;
      background-position: center;
      border: 1px solid var(--soft-line);
    }

    /* GALLERY */
    .gallery-section {
      /*border-top: 1px solid var(--soft-line);
      border-bottom: 1px solid var(--soft-line);*/
      padding: clamp(58px, 7vw, 88px) 0;
    }
    .gallery-layout {
      display: grid;
      grid-template-columns: .32fr .68fr;
      gap: clamp(42px, 6vw, 80px);
      align-items: start;
    }
    .gallery-copy p {
      margin-top: 26px;
      color: rgba(29,29,27,.76);
      line-height: 1.82;
      max-width: 420px;
    }
    .gallery-grid {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 12px;
    }
    .gallery-card {
      display: grid;
      gap: 9px;
    }
    .gallery-img {
      aspect-ratio: 1.65 / 1;
      background-size: cover;
      background-position: center;
      border: 1px solid var(--soft-line);
    }
    .gallery-card span {
      font-family: Georgia, 'Times New Roman', serif;
      text-align: center;
      font-size: 15px;
      color: rgba(29,29,27,.86);
    }

    /* AVAILABILITY */
    .availability-layout {
      display: grid;
      grid-template-columns: .28fr .72fr;
      gap: clamp(36px, 5vw, 78px);
      align-items: start;
    }
    .availability-copy p {
      margin-top: 24px;
      max-width: 420px;
      color: rgba(29,29,27,.76);
      line-height: 1.82;
    }
    .availability-table {
      overflow-x: auto;
      border: 1px solid var(--soft-line);
      background: #fff;
      box-shadow: 0 18px 48px rgba(0,0,0,.035);
    }
    table {
      width: 100%;
      border-collapse: collapse;
      font-size: 14px;
    }
    th, td {
      padding: 17px 14px;
      border-bottom: 1px solid var(--soft-line);
      border-right: 1px solid var(--soft-line);
      text-align: left;
      vertical-align: top;
    }
    th:last-child, td:last-child { border-right: 0; }
    tr:last-child td { border-bottom: 0; }
    th {
      color: rgba(29,29,27,.6);
      font-size: 11px;
      letter-spacing: .09em;
      text-transform: uppercase;
      font-weight: 700;
      background: #fbfaf7;
    }
    td {
      color: rgba(29,29,27,.82);
      line-height: 1.45;
    }
    .doc-link {
      color: var(--black);
      font-weight: 700;
      font-size: 12px;
      letter-spacing: .08em;
      text-transform: uppercase;
      border-bottom: 1px solid rgba(29,29,27,.3);
      margin-right: 10px;
      white-space: nowrap;
    }

    .schema-map-wrap {
      position: relative;
      width: 100%;
    }

    .schema-map-wrap img,
    .schema-map-image {
      width: 100%;
      height: auto;
      display: block;
    }

    area[data-zone] {
      cursor: pointer;
    }

    .schema-map-image.is-map-targeted {
      cursor: pointer;
    }

    .schema-map-overlay {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      pointer-events: auto;
    }

    .schema-map-overlay polygon {
      fill: rgba(239, 225, 206, .62);
      opacity: 0;
      cursor: pointer;
      pointer-events: all;
      transition: opacity .18s ease;
    }

    .schema-map-overlay polygon.is-active {
      opacity: 1;
    }

    .availability-table-commerciale tr.is-zone-highlighted td,
    .availability-table-commerciale tr.is-zone-highlighted th {
      background: #efe1ce;
      color: rgba(29,29,27,.9);
    }

    .availability-table-commerciale tr.is-zone-highlighted .doc-link {
      color: var(--black);
    }

    .photo-gallery-section {
      background: #faf8f4;
    }

    .photo-gallery-section h2 {
      margin-bottom: 28px;
    }

    .photo-gallery-grid {
      display: grid;
      grid-template-columns: repeat(5, minmax(0, 1fr));
      gap: 12px;
    }
    .photo-gallery-grid:not(.is-expanded) .photo-gallery-item:nth-child(n + 6) {
      display: none;
    }

    .photo-gallery-item {
      margin: 0;
      overflow: hidden;
      border: 1px solid var(--soft-line);
      background: #fff;
    }

    .photo-gallery-item img {
      display: block;
      width: 100%;
      aspect-ratio: 1.5 / 1;
      object-fit: cover;
      transition: transform .35s ease;
    }

    .photo-gallery-item:hover img {
      transform: scale(1.035);
    }

    .photo-gallery-actions {
      display: flex;
      justify-content: center;
      margin-top: 28px;
    }

    .photo-gallery-more[hidden] {
      display: none;
    }

    .photo-gallery-trigger {
      display: block;
      width: 100%;
      padding: 0;
      border: 0;
      background: transparent;
      cursor: zoom-in;
    }

    .photo-lightbox {
      position: fixed;
      inset: 0;
      z-index: 300;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      background: rgba(29, 29, 27, .84);
    }

    .photo-lightbox[hidden] {
      display: none;
    }

    body.photo-lightbox-open {
      overflow: hidden;
    }

    .photo-lightbox-backdrop {
      position: absolute;
      inset: 0;
    }

    .photo-lightbox-dialog {
      position: relative;
      z-index: 1;
      max-width: min(94vw, 1600px);
      max-height: 94vh;
      padding: clamp(14px, 2vw, 30px);
      background: #fff;
      box-shadow: 0 24px 80px rgba(0, 0, 0, .28);
    }

    .photo-lightbox-image {
      display: block;
      width: auto;
      max-width: min(88vw, 1500px);
      max-height: calc(94vh - 60px);
      object-fit: contain;
    }

    .photo-lightbox-close {
      position: absolute;
      top: 4px;
      right: 4px;
      z-index: 2;
      display: grid;
      width: 42px;
      height: 42px;
      padding: 0;
      place-items: center;
      border: 1px solid rgba(29, 29, 27, .18);
      background: #fff;
      color: var(--black);
      font-size: 28px;
      font-weight: 300;
      line-height: 1;
      cursor: pointer;
    }

    .photo-lightbox-close:hover {
      background: var(--black);
      color: #fff;
    }
    .photo-lightbox-nav {
      position: fixed;
      top: 50%;
      z-index: 2;
      display: grid;
      width: 52px;
      height: 52px;
      padding: 0;
      place-items: center;
      border: 1px solid rgba(255, 255, 255, .5);
      border-radius: 50%;
      background: rgba(255, 255, 255, .92);
      color: var(--black);
      font-size: 28px;
      line-height: 1;
      cursor: pointer;
      transform: translateY(-50%);
      transition: background .2s ease, color .2s ease, transform .2s ease;
    }

    .photo-lightbox-prev {
      left: clamp(12px, 2.5vw, 40px);
    }

    .photo-lightbox-next {
      right: clamp(12px, 2.5vw, 40px);
    }

    .photo-lightbox-nav:hover,
    .photo-lightbox-nav:focus-visible {
      background: var(--black);
      color: #fff;
      transform: translateY(-50%) scale(1.06);
    }

    @media (max-width: 620px) {
      .photo-lightbox {
        padding: 12px;
      }

      .photo-lightbox-dialog {
        max-width: 96vw;
        max-height: 92vh;
        padding: 12px;
      }

      .photo-lightbox-image {
        max-width: calc(96vw - 24px);
        max-height: calc(92vh - 36px);
      }
    }

    @media (max-width: 980px) {
      .photo-gallery-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }
      .photo-gallery-grid:not(.is-expanded) .photo-gallery-item:nth-child(n + 4) {
        display: none;
      }

    }

    @media (max-width: 620px) {
      .photo-gallery-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
      }
      .photo-gallery-grid:not(.is-expanded) .photo-gallery-item:nth-child(n + 3) {
        display: none;
      }

      .photo-lightbox-nav {
        width: 44px;
        height: 44px;
        font-size: 24px;
      }


      .photo-gallery-actions {
        margin-top: 22px;
      }
    }

    /* VISIT */
    .visit {
      background: linear-gradient(180deg, #fff 0%, #fbfaf7 100%);
      padding: clamp(58px, 7vw, 98px) 0;
      /*border-top: 1px solid var(--soft-line);*/
    }
    .visit-layout {
      display: grid;
      grid-template-columns: .42fr .58fr;
      gap: clamp(42px, 6vw, 80px);
      align-items: start;
    }
    .visit-copy p {
      margin-top: 24px;
      max-width: 560px;
      color: rgba(29,29,27,.76);
      line-height: 1.82;
    }
    .visit-actions { margin-top: 30px; }
    .broker-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 24px;
    }
    .broker-card {
      background: #fff;
      border: 1px solid rgba(185,151,105,.24);
      box-shadow: 0 18px 46px rgba(0,0,0,.035);
      padding: 38px 34px;
      min-height: 260px;
    }
    .broker-logo {
      height: 74px;
      display: flex;
      align-items: center;
      justify-content: center;
      margin-bottom: 24px;
      padding-bottom: 20px;
      border-bottom: 1px solid var(--soft-line);
    }
    .broker-logo img {
      max-height: 58px;
      max-width: 260px;
      object-fit: contain;
    }
    .broker-photo {
      width: 112px;
      height: 112px;
      margin: 0 auto 24px;
      overflow: hidden;
      border: 1px solid rgba(185,151,105,.3);
      border-radius: 50%;
      background: #f5f3ef;
      box-shadow: 0 12px 28px rgba(29,29,27,.08);
    }
    .broker-photo img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center top;
    }
    .broker-name {
      font-family: Georgia, 'Times New Roman', serif;
      font-size: 23px;
      margin-bottom: 16px;
    }
    .broker-line {
      display: grid;
      grid-template-columns: 20px 1fr;
      gap: 10px;
      color: rgba(29,29,27,.74);
      margin-top: 9px;
      font-size: 14px;
    }
    .broker-line svg { width: 15px; height: 15px; stroke: var(--gold); }

    footer {
      min-height: 58px;
      /*border-top: 1px solid var(--soft-line);*/
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 24px;
      padding: 18px clamp(24px, 4vw, 58px);
      color: rgba(29,29,27,.6);
      font-size: 12px;
    }

    .footer-menu-items {
      display: flex;
      align-items: center;
      gap: 18px;
      margin: 0;
      padding: 0;
      list-style: none;
    }

    .footer-menu a {
      color: rgba(29,29,27,.6);
      transition: color .2s ease;
    }

    .footer-menu a:hover {
      color: var(--black);
    }

    @media (max-width: 1120px) {
      .hero-grid,
      .advantages-layout,
      .usage-layout,
      .gallery-layout,
      .availability-layout,
      .visit-layout {
        grid-template-columns: 1fr;
      }
      .hero-main-img { min-height: 520px; border-right: 0; }
      .hero-editorial { grid-template-rows: auto auto; }
      .hero-strip { min-height: 260px; padding-left: 0; }
      .usage-copy { position: static; }
      .advantage-grid { grid-template-columns: repeat(2, 1fr); }
      .gallery-grid { grid-template-columns: repeat(2, 1fr); }
    }

    @media (max-width: 760px) {
      .site-header {
        position: sticky;
        min-height: 82px;
        padding-top: 0;
        padding-bottom: 0;
      }

      .mobile-menu-toggle {
        width: 44px;
        height: 44px;
        display: inline-flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 5px;
        margin-left: auto;
        padding: 0;
        border: 1px solid rgba(255,255,255,.55);
        background: transparent;
        cursor: pointer;
      }

      .mobile-menu-toggle span {
        width: 20px;
        height: 1px;
        background: #fff;
        transition: transform .2s ease, opacity .2s ease;
      }

      .mobile-menu-toggle[aria-expanded="true"] span:nth-child(1) {
        transform: translateY(6px) rotate(45deg);
      }

      .mobile-menu-toggle[aria-expanded="true"] span:nth-child(2) {
        opacity: 0;
      }

      .mobile-menu-toggle[aria-expanded="true"] span:nth-child(3) {
        transform: translateY(-6px) rotate(-45deg);
      }

      .site-header .primary-navigation {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        display: none;
        align-items: stretch;
        gap: 0;
        padding: 12px 24px 24px;
        background: var(--gold);
        border-bottom: 1px solid rgba(255,255,255,.28);
        box-shadow: 0 18px 36px rgba(0,0,0,.08);
      }

      .site-header .primary-navigation.is-open {
        display: flex;
        flex-direction: column;
      }

      .site-header .primary-navigation a {
        padding: 14px 0;
        border-bottom: 1px solid rgba(255,255,255,.24);
        font-size: 15px;
      }

      .site-header .primary-navigation .nav-cta {
        margin-top: 16px;
        padding: 0 18px;
        border: 1px solid rgba(255,255,255,.55);
      }

      .brand { font-size: 24px; }
      .hero-strip { grid-template-columns: 1fr; }
      .hero-strip .img { min-height: 220px; }
      .hero-copy { padding: 44px 24px; }
      h1 { font-size: 50px; }
      h2 { font-size: 38px; }
      .intro-grid,
      .usage-item,
      .visit-layout {
        grid-template-columns: 1fr;
      }
      .advantage-grid,
      .gallery-grid,
      .broker-grid {
        grid-template-columns: 1fr;
      }
      footer { flex-direction: column; align-items: flex-start; }
    }
  
    .intro-grid p + p {
      margin-top: 24px;
    }

    .intro-grid p {
      font-size: var(--taille-texte, 16px);
      line-height: 1.9;
    }
    #disponibilites .availability-description p {
      font-size: var(--taille-texte, 16px);
      line-height: 1.9;
      color: rgba(29,29,27,.76);
    }

    #disponibilites .availability-description p + p {
      margin-top: 24px;
    }
    #disponibilites .availability-parking-note {
      margin-top: 24px;
      font-size: var(--taille-texte, 16px);
      line-height: 1.9;
      color: rgba(29,29,27,.76);
    }

  
    .advantages-copy p {
      font-size: var(--taille-texte, 16px);
      line-height: 1.9;
    }

    .advantages-copy p + p {
      margin-top: 24px;
    }

  
    .availability-layout-schema {
      display: grid;
      grid-template-columns: minmax(360px, 44%) minmax(520px, 56%);
      gap: clamp(30px, 4vw, 60px);
      align-items: start;
    }

    .availability-layout-schema .availability-copy h2 {
      margin-bottom: 26px;
    }

    .schema-card {
      background: #fff;
      border: 1px solid var(--soft-line);
      box-shadow: 0 18px 48px rgba(0,0,0,.035);
      padding: 26px;
    }

    .schema-card img {
      width: 100%;
      height: auto;
      object-fit: contain;
    }

    .availability-table-commerciale {
      box-shadow: none;
      border: 1px solid rgba(29,29,27,.14);
      overflow: hidden;
    }

    .availability-table-commerciale table {
      font-size: 14px;
    }

    .availability-table-commerciale td,
    .availability-table-commerciale th {
      padding: 14px 12px;
      border-right: 1px solid rgba(29,29,27,.14);
      border-bottom: 0;
      background: #fff;
      color: rgba(29,29,27,.82);
      font-weight: 400;
    }

    .availability-table-commerciale .availability-column-headings th {
      border-bottom: 1px solid rgba(29,29,27,.14);
      background: #fbfaf7;
      color: rgba(29,29,27,.6);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: .09em;
      text-transform: uppercase;
    }

    .availability-table-commerciale td:last-child,
    .availability-table-commerciale th:last-child {
      border-right: 0;
    }

    .availability-table-commerciale .group-label {
      width: 112px;
      min-width: 112px;
      text-align: center;
      vertical-align: top;
      font-size: 12px;
      letter-spacing: .08em;
      line-height: 1.4;
      text-transform: uppercase;
      color: var(--black);
      background: #f5f5f3;
      font-weight: 700;
    }

    .availability-table-commerciale tbody tr.group-start:not(:first-child) td,
    .availability-table-commerciale tbody tr.group-start:not(:first-child) th {
      border-top: 1px solid rgba(111,86,52,.55);
    }

    .availability-table-commerciale .doc-link {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      font-size: 13px;
      font-weight: 400;
      letter-spacing: 0;
      text-transform: none;
      border-bottom: 0;
    }

    .availability-table-commerciale .plan-link-icon {
      display: inline-grid;
      width: 19px;
      height: 22px;
      flex: 0 0 22px;
      place-items: center;
      border: 1px solid currentColor;
      transition: background-color .2s ease, color .2s ease;
    }

    .availability-table-commerciale .plan-link-icon svg {
      width: 13px;
      height: 13px;
      fill: none;
      stroke: currentColor;
      stroke-width: 1.5;
      stroke-linecap: square;
      stroke-linejoin: miter;
    }

    .availability-table-commerciale .doc-link:hover .plan-link-icon,
    .availability-table-commerciale .doc-link:focus-visible .plan-link-icon {
      background: var(--black);
      color: #fff;
    }

    @media (max-width: 1100px) {
      .availability-layout-schema {
        grid-template-columns: 1fr;
      }
    }

  
    .availability-layout-schema {
      display: grid;
      grid-template-columns: minmax(360px, 42%) minmax(520px, 58%);
      gap: clamp(30px, 4vw, 60px);
      align-items: start;
      padding-top: clamp(68px, 8vw, 118px);
    }

    .availability-left {
      display: flex;
      flex-direction: column;
      gap: 24px;
    }

    .availability-copy-left {
      margin-bottom: 0;
    }

    .availability-copy-left h2 {
      margin-bottom: 24px;
    }

    .availability-copy-left p {
      font-size: 16px;
      line-height: 1.85;
      color: rgba(29,29,27,.76);
      max-width: 560px;
    }

    .availability-copy-left p + p {
      margin-top: 18px;
    }

    .availability-actions {
      margin-top: 24px;
    }

    .availability-actions .btn {
      min-height: 50px;
      padding: 0 26px;
    }

    .schema-card {
      background: #fff;
      border: 1px solid var(--soft-line);
      box-shadow: 0 18px 48px rgba(0,0,0,.035);
      padding: 26px;
    }

    .schema-card img {
      width: 100%;
      height: auto;
      object-fit: contain;
    }

    @media (max-width: 1100px) {
      .availability-layout-schema {
        grid-template-columns: 1fr;
      }
    }

  
    .plan-modal {
      position: fixed;
      inset: 0;
      z-index: 200;
      display: none;
      align-items: center;
      justify-content: center;
      padding: 24px;
    }

    .plan-modal.is-open {
      display: flex;
    }

    .plan-modal-backdrop {
      position: absolute;
      inset: 0;
      background: rgba(29,29,27,.42);
      backdrop-filter: blur(6px);
    }

    .plan-modal-dialog {
      position: relative;
      width: min(620px, 100%);
      background: #fff;
      border: 1px solid rgba(29,29,27,.12);
      box-shadow: 0 28px 80px rgba(0,0,0,.18);
      padding: clamp(28px, 4vw, 46px);
    }

    .plan-modal-close {
      position: absolute;
      top: 16px;
      right: 18px;
      width: 34px;
      height: 34px;
      border: 0;
      background: transparent;
      color: var(--black);
      font-size: 28px;
      line-height: 1;
      cursor: pointer;
    }

    .plan-modal-content h2 {
      margin-bottom: 18px;
    }

    .plan-modal-intro {
      color: rgba(29,29,27,.72);
      font-size: 16px;
      line-height: 1.75;
      margin-bottom: 26px;
      max-width: 500px;
    }

    .plan-form {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 16px;
    }

    .plan-form label {
      display: grid;
      gap: 8px;
      color: rgba(29,29,27,.68);
      font-size: 12px;
      letter-spacing: .08em;
      text-transform: uppercase;
      font-weight: 700;
    }

    .plan-form input {
      min-height: 48px;
      border: 1px solid rgba(29,29,27,.16);
      background: #fff;
      padding: 0 14px;
      font: inherit;
      color: var(--text);
      outline: none;
    }

    .plan-form input:focus {
      border-color: rgba(29,29,27,.38);
      box-shadow: 0 0 0 3px rgba(29,29,27,.04);
    }

    .plan-form button {
      grid-column: 1 / -1;
      width: fit-content;
      margin-top: 10px;
    }

    .plan-success {
      margin-top: 26px;
      padding-top: 24px;
      border-top: 1px solid rgba(29,29,27,.1);
    }

    .plan-success p {
      margin-bottom: 18px;
      color: rgba(29,29,27,.76);
      line-height: 1.7;
    }

    body.modal-open {
      overflow: hidden;
    }

    .acf-edit-hint {
      position: relative !important;
      outline: 2px dashed rgba(185, 151, 105, .95);
      outline-offset: 5px;
    }

    .acf-edit-hint::before {
      content: attr(data-acf-field);
      position: absolute;
      left: -2px;
      top: -28px;
      z-index: 80;
      display: inline-flex;
      align-items: center;
      min-height: 22px;
      max-width: min(360px, calc(100vw - 32px));
      padding: 0 8px;
      background: #b99769;
      color: #fff;
      font-family: Arial, sans-serif;
      font-size: 11px;
      font-weight: 700;
      line-height: 1.2;
      letter-spacing: 0;
      white-space: nowrap;
      box-shadow: 0 8px 18px rgba(0,0,0,.14);
      pointer-events: none;
    }

    span.acf-edit-hint,
    a.acf-edit-hint,
    h1.acf-edit-hint,
    h2.acf-edit-hint,
    p.acf-edit-hint {
      display: inline-block;
    }

    .site-header .acf-edit-hint::before,
    .hero-strip .acf-edit-hint::before,
    .hero-main-img.acf-edit-hint::before {
      top: 8px;
      left: 8px;
    }

    @media (max-width: 620px) {
      .plan-form {
        grid-template-columns: 1fr;
      }

      .plan-modal-dialog {
        padding: 28px 22px;
      }
    }

  
    .visit-modal {
      position: fixed;
      inset: 0;
      z-index: 210;
      display: none;
      align-items: center;
      justify-content: center;
      padding: 24px;
    }

    .visit-modal.is-open {
      display: flex;
    }

    .visit-modal-backdrop {
      position: absolute;
      inset: 0;
      background: rgba(29,29,27,.42);
      backdrop-filter: blur(6px);
    }

    .visit-modal-dialog {
      position: relative;
      width: min(680px, 100%);
      background: #fff;
      border: 1px solid rgba(29,29,27,.12);
      box-shadow: 0 28px 80px rgba(0,0,0,.18);
      padding: clamp(28px, 4vw, 46px);
    }

    .visit-modal-close {
      position: absolute;
      top: 16px;
      right: 18px;
      width: 34px;
      height: 34px;
      border: 0;
      background: transparent;
      color: var(--black);
      font-size: 28px;
      line-height: 1;
      cursor: pointer;
    }

    .visit-modal-content h2 {
      margin-bottom: 18px;
    }

    .visit-modal-intro {
      color: rgba(29,29,27,.72);
      font-size: 16px;
      line-height: 1.75;
      margin-bottom: 26px;
      max-width: 560px;
    }

    .visit-form {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 16px;
    }

    .visit-form label {
      display: grid;
      gap: 8px;
      color: rgba(29,29,27,.68);
      font-size: 12px;
      letter-spacing: .08em;
      text-transform: uppercase;
      font-weight: 700;
    }

    .visit-form input,
    .visit-form textarea {
      min-height: 48px;
      border: 1px solid rgba(29,29,27,.16);
      background: #fff;
      padding: 12px 14px;
      font: inherit;
      color: var(--text);
      outline: none;
      resize: vertical;
    }

    .visit-form textarea {
      min-height: 116px;
    }

    .visit-form input:focus,
    .visit-form textarea:focus {
      border-color: rgba(29,29,27,.38);
      box-shadow: 0 0 0 3px rgba(29,29,27,.04);
    }

    .visit-form-full,
    .visit-form button {
      grid-column: 1 / -1;
    }

    .visit-form button {
      width: fit-content;
      margin-top: 10px;
    }

    .visit-success {
      margin-top: 26px;
      padding-top: 24px;
      border-top: 1px solid rgba(29,29,27,.1);
    }

    .visit-success p {
      margin-bottom: 18px;
      color: rgba(29,29,27,.76);
      line-height: 1.7;
    }

    .visit-routing-note {
      margin-top: 16px;
      font-size: 13px;
      color: rgba(29,29,27,.58);
    }

    @media (max-width: 620px) {
      .visit-form {
        grid-template-columns: 1fr;
      }

      .visit-modal-dialog {
        padding: 28px 22px;
      }
    }

  
    .brand {
      display: inline-flex;
      align-items: center;
      flex: 0 0 auto;
      line-height: 0;
    }

    .brand img {
      display: block;
      height: 75px;
      width: auto;
      max-width: min(390px, 42vw);
      object-fit: contain;
    }

    @media (max-width: 620px) {
      .brand img {
        height: 46px;
        max-width: 220px;
      }
    }

  
    .location-section {
      padding: clamp(62px, 7vw, 104px) 0;
      /*border-bottom: 1px solid var(--soft-line);*/
      background: #fff;
    }

    .location-layout {
      display: flex;
      flex-direction: row;
      gap: clamp(34px, 5vw, 72px);
      align-items: stretch;
    }

    .location-left {
      flex: 0 0 46%;
      display: flex;
      flex-direction: column;
      gap: 24px;
      min-width: 0;
    }

    .location-right {
      flex: 1 1 54%;
      display: flex;
      min-width: 0;
    }

    .location-copy h2 {
      margin-bottom: 24px;
      max-width: 10ch;
    }

    .location-copy p {
      max-width: 560px;
      font-size: 16px;
      line-height: 1.9;
      color: rgba(29,29,27,.78);
    }

    .location-card {
      margin: 0;
      background: #fff;
      border: 1px solid var(--soft-line);
      box-shadow: 0 18px 48px rgba(0,0,0,.035);
      overflow: hidden;
    }

    .location-map-card {
      width: 100%;
      padding: 0;
    }

    .location-map-card img {
      width: 100%;
      height: auto;
      display: block;
    }

    .location-montage-card {
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      background: #fff;
      padding: 18px;
    }

    .location-montage-card img {
      width: 100%;
      height: auto;
      display: block;
      object-fit: contain;
      background: #fff;
    }

    @media (max-width: 980px) {
      .location-layout {
        flex-direction: column;
      }

      .location-left,
      .location-right {
        flex: 1 1 auto;
      }

      .location-copy h2,
      .location-copy p {
        max-width: none;
      }

      .location-montage-card {
        padding: 12px;
      }
    }

  
    .availability-table-commerciale tr.is-rented td,
    .availability-table-commerciale tr.is-rented th {
      background: #f3f3f1;
      color: rgba(29,29,27,.46);
    }

    .availability-table-commerciale tr.is-rented .doc-link {
      color: rgba(29,29,27,.42);
      pointer-events: none;
      cursor: default;
    }

    /* 404 */
    .error-404-main {
      min-height: calc(100vh - 141px);
      background: linear-gradient(180deg, #fff 0%, #fbfaf7 100%);
    }

    .error-404-layout {
      display: grid;
      grid-template-columns: minmax(420px, 46%) 1fr;
      min-height: calc(100vh - 141px);
    }

    .error-404-visual {
      position: relative;
      min-height: 640px;
      background-position: center;
      background-size: cover;
      border-right: 1px solid var(--soft-line);
      overflow: hidden;
    }

    .error-404-visual::after {
      content: '';
      position: absolute;
      inset: 0;
      background: linear-gradient(180deg, rgba(29,29,27,.04), rgba(29,29,27,.28));
    }

    .error-404-number {
      position: absolute;
      left: clamp(24px, 4vw, 64px);
      bottom: clamp(24px, 4vw, 56px);
      z-index: 1;
      color: rgba(255,255,255,.92);
      font-family: Georgia, 'Times New Roman', serif;
      font-size: clamp(94px, 14vw, 220px);
      font-weight: 400;
      line-height: .75;
      letter-spacing: -.06em;
    }

    .error-404-content {
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: flex-start;
      padding: clamp(58px, 8vw, 130px);
    }

    .error-404-content h1 {
      max-width: 760px;
      font-size: clamp(48px, 5.4vw, 82px);
    }

    .error-404-content p {
      max-width: 620px;
      margin-top: 28px;
      color: rgba(29,29,27,.74);
      font-size: 17px;
      line-height: 1.85;
    }

    .error-404-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 16px;
      margin-top: 38px;
    }

    @media (max-width: 980px) {
      .error-404-layout {
        grid-template-columns: 1fr;
      }

      .error-404-visual {
        min-height: 42vh;
        border-right: 0;
        border-bottom: 1px solid var(--soft-line);
      }

      .error-404-content {
        padding: clamp(48px, 10vw, 86px) 24px;
      }
    }

    @media (max-width: 620px) {
      .error-404-main,
      .error-404-layout {
        min-height: calc(100vh - 97px);
      }

      .error-404-visual {
        min-height: 34vh;
      }

      .error-404-content h1 {
        font-size: 44px;
      }

      .error-404-actions {
        width: 100%;
      }

      .error-404-actions .btn {
        width: 100%;
      }
    }

    /* STANDARD PAGE */
    .standard-page-main {
      min-height: calc(100vh - 141px);
      padding: 0 0 clamp(64px, 8vw, 120px);
      background: linear-gradient(180deg, #fff 0%, #fbfaf7 100%);
    }

    .standard-page-strip {
      display: grid;
      grid-template-columns: .8fr 1.1fr 1fr;
      gap: 12px;
      height: clamp(210px, 28vw, 390px);
      margin-bottom: clamp(54px, 7vw, 96px);
      padding-bottom: 12px;
      border-bottom: 1px solid var(--soft-line);
      background: #fff;
    }

    .standard-page-strip div {
      background-position: center;
      background-size: cover;
    }

    .standard-page {
      max-width: 980px;
    }

    .standard-page-header h1 {
      max-width: 18ch;
      font-size: clamp(40px, 4.6vw, 64px);
    }

    .standard-page-header {
      padding-bottom: clamp(32px, 5vw, 58px);
      margin-bottom: clamp(36px, 5vw, 64px);
      border-bottom: 1px solid var(--soft-line);
    }

    .standard-page-content {
      color: rgba(29,29,27,.78);
      font-size: 17px;
      line-height: 1.85;
    }

    .standard-page-content > * + * {
      margin-top: 24px;
    }

    .standard-page-content h2,
    .standard-page-content h3,
    .standard-page-content h4 {
      margin-top: clamp(42px, 6vw, 72px);
      color: var(--black);
    }

    .standard-page-content h2 {
      font-size: clamp(30px, 3.2vw, 42px);
    }

    .standard-page-content h3 {
      font-size: clamp(24px, 2.5vw, 32px);
    }

    .standard-page-content h4 {
      font-size: clamp(20px, 2vw, 26px);
    }

    .standard-page-content ul,
    .standard-page-content ol {
      padding-left: 1.4em;
    }

    .standard-page-content a {
      border-bottom: 1px solid var(--gold);
    }

    .standard-page-content img {
      height: auto;
    }

    .standard-page-content table {
      border: 1px solid var(--soft-line);
      background: #fff;
    }

    @media (max-width: 620px) {
      .standard-page-main {
        padding-bottom: 64px;
      }

      .standard-page-strip {
        grid-template-columns: 1fr 1fr;
        height: 250px;
        margin-bottom: 48px;
      }

      .standard-page-strip div:first-child {
        display: none;
      }

      .standard-page-header h1 {
        font-size: 38px;
      }

      .standard-page-content {
        font-size: 16px;
      }
    }

    /* LANDING MOBILE */
    .availability-left,
    .availability-right,
    .availability-copy-left {
      min-width: 0;
    }

    @media (max-width: 760px) {
      .hero-main-img {
        display: none;
      }

      .hero-strip .img:nth-child(1),
      .hero-strip .img:nth-child(2) {
        display: none;
      }

      .hero-strip {
        display: block;
        min-height: 250px;
        padding: 0;
      }

      .hero-strip .img:nth-child(3) {
        display: block;
        min-height: 250px;
      }

      .availability-layout-schema {
        width: min(calc(100% - 32px), var(--max));
        gap: 32px;
        padding-top: 54px;
      }

      .availability-copy-left h2 {
        max-width: 100%;
        font-size: 36px;
        overflow-wrap: anywhere;
      }

      .availability-copy-left p {
        max-width: 100%;
        font-size: 15px;
        overflow-wrap: anywhere;
      }

      .availability-actions,
      .visit-actions {
        display: flex;
        justify-content: center;
      }

      .schema-card {
        width: calc(100% - 24px);
        max-width: 480px;
        margin-inline: auto;
        padding: 12px;
      }

      .availability-table-commerciale {
        width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
      }

      .availability-table-commerciale table {
        min-width: 560px;
        font-size: 12px;
      }

      .availability-table-commerciale td,
      .availability-table-commerciale th {
        padding: 10px 7px;
      }

      .availability-table-commerciale .group-label {
        width: 68px;
        min-width: 68px;
        padding-inline: 5px;
        font-size: 9px;
        line-height: 1.3;
        overflow-wrap: anywhere;
      }

      .availability-table-commerciale .doc-link {
        font-size: 12px;
      }
    }

    /* FULLSCREEN PLAN VIEWER */
    .plan-modal {
      padding: 0;
    }

    .plan-modal-dialog {
      width: 100vw;
      height: 100vh;
      height: 100dvh;
      max-width: none;
      display: flex;
      flex-direction: column;
      padding: 0;
      border: 0;
      box-shadow: none;
    }

    .plan-modal-toolbar {
      position: relative;
      z-index: 1;
      min-height: 82px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 24px;
      padding: 14px clamp(18px, 4vw, 48px);
      background: #fff;
      border-bottom: 1px solid var(--soft-line);
    }

    .plan-modal-toolbar h2 {
      font-size: clamp(24px, 2.5vw, 36px);
    }

    .plan-modal-actions {
      display: flex;
      align-items: center;
      gap: 12px;
    }

    .plan-modal-actions .btn {
      min-height: 46px;
    }

    .plan-modal-viewer {
      flex: 1;
      min-height: 0;
      background: #ededeb;
    }

    .plan-modal-viewer iframe {
      width: 100%;
      height: 100%;
      display: block;
      border: 0;
      background: #fff;
    }

    @media (max-width: 620px) {
      .plan-modal-toolbar {
        min-height: 72px;
        padding: 10px 12px;
      }

      .plan-modal-toolbar h2 {
        display: none;
      }

      .plan-modal-actions {
        width: 100%;
      }

      .plan-modal-actions .btn {
        flex: 1;
        min-width: 0;
        padding-inline: 12px;
      }
    }

    /* MOTION SYSTEM */
    .primary-navigation a {
      position: relative;
    }

    .primary-navigation a:not(.nav-cta)::after {
      content: '';
      position: absolute;
      left: 0;
      right: 0;
      bottom: -8px;
      height: 1px;
      background: #fff;
      transform: scaleX(0);
      transform-origin: left;
      transition: transform .25s ease;
    }

    .primary-navigation a.is-active {
      color: #fff;
    }

    .primary-navigation a.is-active::after {
      transform: scaleX(1);
    }

    .hero-grid {
      overflow: visible;
    }

    .hero-main-img {
      animation: hero-main-under-header .9s cubic-bezier(.2,.8,.24,1) .08s both;
      transform-origin: center top;
      will-change: transform, opacity;
    }

    .hero-strip .img {
      animation: hero-strip-slide-in .82s cubic-bezier(.2,.8,.24,1) both;
      will-change: transform, opacity;
    }

    .hero-strip .img:nth-child(1) {
      animation-delay: .28s;
    }

    .hero-strip .img:nth-child(2) {
      animation-delay: .44s;
    }

    .hero-strip .img:nth-child(3) {
      animation-delay: .6s;
    }

    .hero-copy .kicker,
    .hero-copy h1,
    .hero-copy .lead,
    .hero-copy .body,
    .hero-actions {
      opacity: 0;
      animation: hero-content-in .8s cubic-bezier(.2,.75,.25,1) both;
    }

    .hero-copy .kicker { animation-delay: .12s; }
    .hero-copy h1 { animation-delay: .22s; }
    .hero-copy .lead { animation-delay: .32s; }
    .hero-copy .body { animation-delay: .42s; }
    .hero-actions { animation-delay: .54s; }

    @keyframes hero-main-under-header {
      from {
        opacity: .86;
        transform: translateY(-120px) scale(1.035);
      }
      to {
        opacity: 1;
        transform: translateY(0) scale(1);
      }
    }

    @keyframes hero-strip-slide-in {
      from {
        opacity: 0;
        transform: translateX(115%);
      }
      to {
        opacity: 1;
        transform: translateX(0);
      }
    }

    @keyframes hero-content-in {
      from {
        opacity: 0;
        transform: translateY(22px);
      }
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }

    .btn {
      position: relative;
      overflow: hidden;
    }

    .btn::after {
      content: '';
      position: absolute;
      inset: 0;
      background: rgba(185,151,105,.13);
      transform: translateX(-105%);
      transition: transform .35s ease;
      pointer-events: none;
    }

    .btn:hover::after {
      transform: translateX(0);
    }

    .scroll-reveal {
      opacity: 0;
      transform: translateY(28px);
      transition:
        opacity .75s ease var(--reveal-delay, 0ms),
        transform .75s cubic-bezier(.2,.75,.25,1) var(--reveal-delay, 0ms);
    }

    .scroll-reveal.is-visible {
      opacity: 1;
      transform: translateY(0);
    }

    .animated-schema {
      opacity: 1;
      transform: none;
      transition: none;
    }

    .animated-schema.is-visible {
      opacity: 1;
      transform: none;
    }

    .availability-table-commerciale tbody tr {
      opacity: 1;
      transition: background-color .2s ease;
    }

    .availability-table-commerciale tr.is-available:hover td,
    .availability-table-commerciale tr.is-available:hover th {
      background: #fbf7f0;
    }

    .availability-table-commerciale tr.is-available td:nth-last-child(2) {
      position: relative;
      color: #6f5634;
      font-weight: 800;
    }

    .availability-table-commerciale tr.is-available td:nth-last-child(2)::before {
      content: '';
      width: 6px;
      height: 6px;
      display: inline-block;
      margin-right: 7px;
      border-radius: 50%;
      background: var(--gold);
      box-shadow: 0 0 0 0 rgba(185,151,105,.35);
      animation: availability-pulse 2.8s ease-out infinite;
    }

    @keyframes availability-pulse {
      0%, 55%, 100% { box-shadow: 0 0 0 0 rgba(185,151,105,.3); }
      75% { box-shadow: 0 0 0 7px rgba(185,151,105,0); }
    }

    .adv-card:hover svg {
      opacity: 1;
      animation: advantage-icon-hover .65s ease-in-out both;
    }

    @keyframes advantage-icon-hover {
      from { transform: rotate(0deg); }
      to { transform: rotate(360deg); }
    }

    .location-map-card {
      position: relative;
      transform: translateY(var(--map-shift, 0));
      transition: transform .12s linear;
    }

    .location-map-card::before,
    .location-map-card::after {
      content: '';
      position: absolute;
      z-index: 2;
      width: 14px;
      height: 14px;
      border: 4px solid #fff;
      border-radius: 50% 50% 50% 0;
      background: var(--gold);
      box-shadow: 0 5px 14px rgba(29,29,27,.22);
      opacity: 0;
      transform: translateY(-14px) rotate(-45deg) scale(.6);
    }

    .location-map-card::before {
      left: 47%;
      top: 44%;
    }

    .location-map-card::after {
      left: 58%;
      top: 53%;
    }

    .location-map-card.is-visible::before,
    .location-map-card.is-visible::after {
      animation: map-pin-in .55s cubic-bezier(.2,.8,.25,1.25) both;
    }

    .location-map-card.is-visible::after {
      animation-delay: .22s;
    }

    @keyframes map-pin-in {
      to {
        opacity: 1;
        transform: translateY(0) rotate(-45deg) scale(1);
      }
    }

    .sticky-visit-cta {
      position: fixed;
      right: clamp(18px, 3vw, 42px);
      bottom: clamp(18px, 3vw, 34px);
      z-index: 80;
      min-height: 50px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 0 24px;
      border: 1px solid rgba(255,255,255,.24);
      background: var(--gold);
      color: #fff;
      box-shadow: 0 16px 38px rgba(29,29,27,.22);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: .08em;
      text-transform: uppercase;
      cursor: pointer;
      opacity: 0;
      transform: translateY(18px);
      pointer-events: none;
      transition: opacity .3s ease, transform .3s ease, box-shadow .2s ease;
    }

    .sticky-visit-cta.is-visible {
      opacity: 1;
      transform: translateY(0);
      pointer-events: auto;
    }

    .sticky-visit-cta:hover {
      box-shadow: 0 20px 46px rgba(29,29,27,.3);
      transform: translateY(-2px);
    }

    .plan-modal.is-open .plan-modal-backdrop,
    .visit-modal.is-open .visit-modal-backdrop {
      animation: modal-backdrop-in .25s ease both;
    }

    .plan-modal.is-open .plan-modal-dialog,
    .visit-modal.is-open .visit-modal-dialog {
      animation: modal-dialog-in .32s cubic-bezier(.2,.75,.25,1) both;
    }

    @keyframes modal-backdrop-in {
      from { opacity: 0; }
      to { opacity: 1; }
    }

    @keyframes modal-dialog-in {
      from {
        opacity: 0;
        transform: translateY(12px) scale(.975);
      }
      to {
        opacity: 1;
        transform: translateY(0) scale(1);
      }
    }

    @media (max-width: 760px) {
      .primary-navigation a:not(.nav-cta)::after {
        bottom: 4px;
      }

      .sticky-visit-cta {
        right: 14px;
        bottom: 14px;
        min-height: 46px;
        padding: 0 18px;
      }
    }

    @media (prefers-reduced-motion: reduce) {
      .hero-main-img,
      .hero-strip .img,
      .hero-copy .kicker,
      .hero-copy h1,
      .hero-copy .lead,
      .hero-copy .body,
      .hero-actions,
      .availability-table-commerciale tbody tr,
      .animated-schema,
      .location-map-card::before,
      .location-map-card::after,
      .plan-modal.is-open .plan-modal-backdrop,
      .visit-modal.is-open .visit-modal-backdrop,
      .plan-modal.is-open .plan-modal-dialog,
      .visit-modal.is-open .visit-modal-dialog {
        animation: none;
        opacity: 1;
        transform: none;
        clip-path: none;
      }

      .scroll-reveal {
        opacity: 1;
        transform: none;
        transition: none;
      }

      .availability-table-commerciale tr.is-available td:nth-last-child(2)::before {
        animation: none;
      }
    }

    /* INTERACTIVE LOCATION MAP */
    .location-layout {
      display: grid;
      grid-template-columns: 1fr;
      gap: clamp(34px, 5vw, 64px);
    }

    .location-copy {
      max-width: 820px;
    }

    .location-copy h2 {
      max-width: none;
    }

    .location-copy p {
      max-width: 760px;
    }

    .location-map-card {
      width: 100%;
      height: clamp(430px, 55vw, 720px);
      padding: 0;
      transform: none;
    }

    .location-map-card iframe {
      width: 100%;
      height: 100%;
      display: block;
      border: 0;
    }

    .mapbox-location-card {
      display: grid;
      grid-template-rows: auto minmax(360px, 1fr);
      height: auto;
      min-height: clamp(430px, 55vw, 720px);
      background: #fff;
    }

    .mapbox-toolbar {
      display: grid;
      grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
      align-items: stretch;
      border-bottom: 1px solid var(--soft-line);
      background: rgba(255,255,255,.94);
    }

    .mapbox-category-controls {
      display: flex;
      flex-wrap: wrap;
      align-content: center;
      gap: 10px;
      padding: 14px;
      background: transparent;
    }

    .mapbox-category-toggle {
      min-height: 36px;
      padding: 0 14px;
      border: 1px solid rgba(29,29,27,.16);
      background: #fff;
      color: rgba(29,29,27,.68);
      font: inherit;
      font-size: 12px;
      font-weight: 700;
      letter-spacing: .04em;
      text-transform: uppercase;
      cursor: pointer;
      transition: background .2s ease, color .2s ease, border-color .2s ease;
    }

    .mapbox-category-toggle.is-active {
      border-color: var(--pin-color, var(--gold));
      background: var(--pin-color, var(--gold));
      color: #fff;
    }

    .mapbox-map {
      width: 100%;
      min-height: 360px;
    }

    .mapbox-legend {
      display: flex;
      align-items: center;
      gap: 18px;
      padding: 14px;
      border-left: 1px solid var(--soft-line);
      background: transparent;
    }

    .mapbox-legend-list {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
      margin: 0;
      padding: 0;
      list-style: none;
    }

    .mapbox-legend-list li {
      display: flex;
      align-items: center;
      color: rgba(29,29,27,.72);
      font-size: 12px;
      line-height: 1.25;
    }

    .mapbox-legend-filter {
      display: inline-flex;
      align-items: center;
    }

    .mapbox-legend-filter:focus-visible {
      outline: 2px solid var(--gold);
      outline-offset: 3px;
    }

    .mapbox-pin-marker {
      width: var(--size-mapbox-pin);
      height: var(--size-mapbox-pin);
    }

    .mapbox-pin {
      position: relative;
      width: var(--size-mapbox-pin);
      height: var(--size-mapbox-pin);
      padding: 0;
      border: 5px solid #fff;
      border-radius: 50% 50% 50% 0;
      background: var(--pin-color, var(--gold));
      box-shadow: 0 7px 18px rgba(29,29,27,.24);
      cursor: pointer;
      transform: rotate(-45deg);
      transition: transform .2s ease, box-shadow .2s ease;
    }

    .mapbox-pin::after {
      content: '';
      position: absolute;
      inset: 15px;
      border-radius: 50%;
      background: #fff;
    }

    .mapbox-pin-marker.is-grand-passage {
      --size-mapbox-pin: 52px;
    }

    .mapbox-pin-marker.is-grand-passage .mapbox-pin::after {
      display: none;
    }

    .mapbox-pin-logo {
      position: absolute;
      top: 50%;
      left: 50%;
      width: 22px;
      height: auto;
      pointer-events: none;
      transform: translate(-50%, -50%) rotate(45deg);
      transform-origin: center;
    }

    .mapbox-pin:hover,
    .mapbox-pin:focus {
      outline: 0;
      box-shadow: 0 16px 34px rgba(29,29,27,.34);
      transform: rotate(-45deg) scale(1.08);
    }

    .mapboxgl-popup-content {
      padding: 12px 14px;
      border: 1px solid rgba(185,151,105,.24);
      border-radius: 0;
      box-shadow: 0 14px 34px rgba(29,29,27,.16);
      font-family: Inter, Arial, sans-serif;
    }

    .mapboxgl-popup-content strong,
    .mapboxgl-popup-content span {
      display: block;
    }

    .mapboxgl-popup-content strong {
      color: var(--black);
      font-size: 13px;
    }

    .mapboxgl-popup-content span {
      margin-top: 3px;
      color: var(--gold);
      font-size: 11px;
      font-weight: 700;
      letter-spacing: .07em;
      text-transform: uppercase;
    }

    .mapboxgl-popup-close-button {
      color: rgba(29,29,27,.58);
      font-size: 18px;
    }

    .mapbox-missing-token {
      grid-row: 2;
      align-self: center;
      justify-self: center;
      padding: 18px 22px;
      border: 1px solid rgba(185,151,105,.3);
      color: rgba(29,29,27,.68);
      background: #fff;
      font-size: 14px;
    }

    .location-map-card::before,
    .location-map-card::after {
      display: none;
    }

    @media (max-width: 760px) {
      .location-map-card {
        height: 440px;
      }

      .mapbox-location-card {
        height: auto;
        min-height: 440px;
      }

      .mapbox-map {
        min-height: 330px;
      }

      .mapbox-category-controls {
        padding: 12px;
        border-bottom: 1px solid var(--soft-line);
      }

      .mapbox-toolbar {
        grid-template-columns: 1fr;
      }

      .mapbox-legend {
        align-items: flex-start;
        flex-direction: column;
        gap: 10px;
        padding: 12px;
        border-left: 0;
      }
    }

    /* ADVANTAGES COMPACT TABLE */
    .advantages {
      position: relative;
      overflow: hidden;
      padding: clamp(52px, 6vw, 82px) 0;
      background: linear-gradient(180deg, #fff 0%, #faf8f4 100%);
    }

    .advantages::before {
      display: none;
    }

    .advantages-layout {
      position: relative;
      z-index: 1;
      display: grid;
      grid-template-columns: 1fr;
      gap: clamp(24px, 4vw, 38px);
    }

    .advantages-copy {
      display: grid;
      grid-template-columns: 1fr;
      gap: 22px;
      align-items: start;
    }

    .advantages-kicker {
      margin-bottom: 18px;
      color: var(--gold);
      font-size: 12px;
      font-weight: 700;
      letter-spacing: .22em;
      text-transform: uppercase;
    }

    .advantages-copy h2 {
      max-width: none;
      font-size: clamp(38px, 4vw, 54px);
      letter-spacing: -.035em;
    }

    .advantages-copy p {
      max-width: 680px;
      margin-top: 0;
      color: rgba(29,29,27,.72);
      font-size: var(--taille-texte, 16px);
      line-height: 1.72;
    }

    .advantages-copy .small-rule {
      display: none;
    }

    .advantage-flow {
      display: grid;
      grid-template-columns: repeat(6, minmax(0, 1fr));
      gap: 0;
      border: 1px solid rgba(29,29,27,.12);
      background: rgba(255,255,255,.72);
    }

    .advantage-item {
      position: relative;
      display: grid;
      grid-template-columns: 1fr;
      grid-template-rows: 42px auto;
      gap: 14px;
      min-height: 0;
      padding: clamp(20px, 2.2vw, 30px);
      border: 0;
      border-right: 1px solid rgba(29,29,27,.12);
      background: transparent;
      box-shadow: none;
      opacity: 0;
      transform: translateY(16px);
      transition:
        opacity .55s ease var(--adv-delay, 0ms),
        transform .55s cubic-bezier(.2,.75,.25,1) var(--adv-delay, 0ms),
        background .2s ease;
    }

    .advantage-item:last-child {
      border-right: 0;
    }

    .advantage-item:hover {
      box-shadow: none;
      background: #fff;
      transform: translateY(-4px);
    }

    .advantage-item.is-visible {
      opacity: 1;
      transform: translateY(0);
    }

    .advantage-item.is-visible:hover {
      transform: translateY(-4px);
    }

    .advantage-content {
      min-width: 0;
      padding-top: 0;
    }

    .advantage-heading {
      display: block;
    }

    .advantage-item h3 {
      margin: 0;
      color: var(--black);
      font-family: Inter, Arial, sans-serif;
      font-size: 14px;
      font-weight: 800;
      line-height: 1.24;
      letter-spacing: 0;
    }

    .advantage-icon {
      width: 42px;
      height: 42px;
      display: grid;
      place-items: center;
      border: 1px solid rgba(185,151,105,.34);
      border-radius: 50%;
      background: #fff;
      align-self: start;
      justify-self: start;
      transform: none;
      opacity: 1;
      transition: transform .35s ease, opacity .35s ease, border-color .35s ease;
    }

    .advantage-icon svg {
      width: 23px;
      height: 23px;
      margin: 0 !important;
      stroke: var(--gold);
      fill: none;
      stroke-width: 1.45;
      opacity: 1;
      transform: none;
      animation: none;
    }

    .advantage-item.is-visible .advantage-icon svg,
    .advantage-item:hover .advantage-icon svg {
      opacity: 1;
      transform: none;
      animation: none;
    }

    .advantage-item.is-visible .advantage-icon,
    .advantage-item:hover .advantage-icon {
      opacity: 1;
      transform: scale(1.05);
      border-color: rgba(185,151,105,.58);
    }

    .advantage-line {
      width: 42px;
      height: 1px;
      margin: 12px 0 10px;
      background: linear-gradient(90deg, var(--gold), rgba(185,151,105,0));
      transform: scaleX(0);
      transform-origin: left;
      transition: transform .6s cubic-bezier(.2,.75,.25,1) var(--adv-delay, 0ms);
    }

    .advantage-item.is-visible .advantage-line {
      transform: scaleX(1);
    }

    .advantage-item p {
      max-width: none;
      color: rgba(29,29,27,.68);
      font-size: 13px;
      line-height: 1.55;
    }

    .advantage-item::after {
      display: none;
    }

    .advantage-item:hover::after {
      opacity: 1;
      transform: scaleX(1);
    }

    @media (max-width: 1100px) {
      .advantage-flow {
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }

      .advantage-item:nth-child(3n) {
        border-right: 0;
      }

      .advantage-item:nth-child(n + 4) {
        border-top: 1px solid rgba(29,29,27,.12);
      }
    }

    @media (max-width: 980px) {
      .advantages-copy {
        grid-template-columns: 1fr;
        gap: 18px;
      }

      .advantages-copy h2,
      .advantages-copy p {
        max-width: none;
      }
    }

    @media (max-width: 620px) {
      .advantages {
        padding: 48px 0;
        background: linear-gradient(180deg, #fff 0%, #faf8f4 100%);
      }

      .advantage-flow {
        grid-template-columns: 1fr;
      }

      .advantage-item,
      .advantage-item:nth-child(3n) {
        grid-template-columns: 42px minmax(0, 1fr);
        grid-template-rows: auto;
        gap: 16px;
        padding: 18px;
        border-right: 0;
        border-top: 1px solid rgba(29,29,27,.12);
        transform: translateY(16px);
      }

      .advantage-item:first-child {
        border-top: 0;
      }

      .advantage-item:hover,
      .advantage-item.is-visible:hover {
        transform: none;
      }

      .advantage-icon {
        width: 42px;
        height: 42px;
      }

      .advantage-item h3 {
        font-size: 14px;
      }
    }

    @media (prefers-reduced-motion: reduce) {
      .advantage-item,
      .advantage-line,
      .advantage-icon,
      .advantage-item::after {
        transition: none;
      }

      .advantage-item {
        opacity: 1;
        transform: none;
      }

      .advantage-line {
        transform: scaleX(1);
      }
    }

    .availability-table-commerciale tr.is-zone-highlighted td,
    .availability-table-commerciale tr.is-zone-highlighted th,
    .availability-table-commerciale tr.is-zone-highlighted.is-available:hover td,
    .availability-table-commerciale tr.is-zone-highlighted.is-available:hover th {
      background: #efe1ce;
      color: rgba(29,29,27,.9);
    }

    .availability-table-commerciale tr.is-zone-highlighted .doc-link {
      color: var(--black);
    }
