:root {
    --green: #3d6b4f;
    --green-d: #2f5640;
    --green-dd: #244332;
    --gold: #d4891a;
    --gold-l: #e6a338;
    --blue: #5db8d4;
    --white: #ffffff;
    --ivory: #faf7f0;
    --ivory-2: #f3ece0;
    --ink: #283a30;
    --muted: #6a7a6f;
    --wa: #25d366;
    --wa-d: #1eb557;
    --shadow-sm: 0 10px 30px -12px rgba(36, 67, 50, 0.25);
    --shadow-md: 0 24px 60px -20px rgba(36, 67, 50, 0.35);
    --maxw: 1240px;
  }
  * { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; background: var(--green-dd); overscroll-behavior-y: none; }
  body {
    font-family: "Inter", system-ui, sans-serif;
    color: var(--ink);
    background: var(--ivory);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
    overscroll-behavior-y: none;
  }
  a { color: inherit; text-decoration: none; }
  ul { list-style: none; }
  img, image-slot { display: block; }
  section[id], [id="top"] { scroll-margin-top: 80px; }
  ::selection { background: var(--gold); color: #fff; }
  .seo-fallback {
    min-height: 100vh; padding: 120px clamp(20px, 6vw, 80px);
    background: var(--ivory); color: var(--ink);
  }
  .seo-fallback h1 {
    max-width: 900px; font: 800 clamp(2.4rem, 7vw, 5.8rem)/1.04 "Playfair Display", serif;
    color: var(--green-d); margin-bottom: 24px;
  }
  .seo-fallback p, .seo-fallback nav { max-width: 780px; margin: 0 0 18px; }
  .seo-fallback nav { display: flex; gap: 14px; flex-wrap: wrap; }
  .seo-fallback a { color: var(--green); font-weight: 700; text-decoration: underline; }

  /* ---------- CUSTOM SCROLLBAR (desktop) ---------- */
  @media (hover: hover) and (pointer: fine) {
    html { scrollbar-width: thin; scrollbar-color: var(--gold) var(--ivory-2); }
    ::-webkit-scrollbar { width: 11px; height: 11px; }
    ::-webkit-scrollbar-track { background: var(--ivory-2); }
    ::-webkit-scrollbar-thumb {
      background: linear-gradient(180deg, var(--gold-l), var(--gold));
      border-radius: 999px; border: 2px solid var(--ivory-2);
    }
    ::-webkit-scrollbar-thumb:hover { background: var(--green); }
    ::-webkit-scrollbar-corner { background: var(--ivory-2); }
  }
  /* ---------- HIDE SCROLLBAR (touch / mobile) ---------- */
  @media (max-width: 860px), (pointer: coarse) {
    html { scrollbar-width: none; -ms-overflow-style: none; overflow-x: clip; }
    body { overflow-x: clip; }
    ::-webkit-scrollbar { width: 0; height: 0; display: none; }
    .nav-scrolled { box-shadow: none; }
  }

  /* hidden-before-animate states */
  .hero-eyebrow, .hero-title .ht-char, .hero-sub, .hero-cta .btn, .hero-scroll { opacity: 0; }
  .reveal { opacity: 0; transform: translateY(26px);
    transition: opacity 0.8s cubic-bezier(.22,.61,.36,1), transform 0.8s cubic-bezier(.22,.61,.36,1); }
  .reveal.is-in { opacity: 1; transform: none; }
  body.no-anim .hero-eyebrow, body.no-anim .hero-title .ht-char,
  body.no-anim .hero-sub, body.no-anim .hero-cta .btn,
  body.no-anim .hero-scroll, body.no-anim .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }

  /* ---------- LOGO ---------- */
  .logo-lockup { display: inline-flex; align-items: center; }
  .logo-img { display: block; width: auto; transition: height 0.35s ease;
    filter: drop-shadow(0 6px 16px rgba(0,0,0,0.22)); }
  @media (max-width: 860px) {
    .logo-img { height: 62px !important; }
    .nav-scrolled .logo-img { height: 54px !important; }
  }
  @media (max-width: 480px) {
    .logo-img { height: 56px !important; }
    .nav-scrolled .logo-img { height: 48px !important; }
  }
  .logo-badge {
    background: var(--green);
    border: 2px solid var(--gold);
    border-radius: 13px;
    display: flex; align-items: center; justify-content: center;
    box-shadow: inset 0 0 0 2px rgba(255,255,255,0.85);
    flex: none;
  }
  .logo-words { display: flex; flex-direction: column; line-height: 0.98; }
  .logo-script {
    font-family: "Playfair Display", serif; font-style: italic; font-weight: 600;
    font-size: 1.18rem; color: var(--gold-l); letter-spacing: 0.01em;
  }
  .logo-bufaleria {
    font-family: "Inter", sans-serif; font-weight: 700; letter-spacing: 0.22em;
    font-size: 0.86rem; color: #fff; margin-top: 2px;
  }

  /* ---------- NAVBAR ---------- */
  .nav {
    position: fixed; top: 0; left: 0; width: 100%; z-index: 100;
    transition: background 0.4s ease, box-shadow 0.4s ease, padding 0.35s ease;
    padding: 18px 0;
  }
  .nav-scrolled {
    background: rgba(47, 86, 64, 0.96);
    backdrop-filter: blur(10px);
    box-shadow: 0 8px 30px -12px rgba(0,0,0,0.4);
    padding: 10px 0;
  }
  .nav-inner {
    max-width: var(--maxw); margin: 0 auto; padding: 0 clamp(20px, 5vw, 56px);
    display: flex; align-items: center; justify-content: space-between; gap: 24px;
  }
  .nav-links { display: flex; gap: clamp(18px, 2.2vw, 34px); }
  .nav-link {
    color: #fff; font-weight: 500; font-size: 0.96rem; letter-spacing: 0.01em;
    position: relative; padding: 4px 0; opacity: 0.92; white-space: nowrap;
  }
  .nav-link::after {
    content: ""; position: absolute; left: 0; bottom: -2px; width: 0; height: 2px;
    background: var(--gold-l); transition: width 0.3s ease;
  }
  .nav-link:hover { opacity: 1; }
  .nav-link:hover::after { width: 100%; }
  .nav-link-active { opacity: 1; }
  .nav-link-active::after { width: 100%; }
  .mobile-link.nav-link-active { color: var(--gold-l); }
  .nav-right { display: flex; align-items: center; gap: 16px; }
  .lang-toggle { display: inline-flex; align-items: center; gap: 6px; }
  .nav-scrolled .lang-toggle { background: none; }
  .lang-btn {
    background: none; border: none; cursor: pointer; padding: 0; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center; line-height: 0;
    opacity: 0.4; filter: grayscale(0.6); transform: scale(0.88);
    transition: opacity 0.28s ease, filter 0.28s ease, transform 0.28s ease, box-shadow 0.28s ease;
  }
  .lang-btn:hover { opacity: 0.8; filter: grayscale(0); transform: scale(0.95); }
  .lang-active { opacity: 1; filter: grayscale(0); transform: scale(1);
    box-shadow: 0 0 0 1.5px var(--gold-l), 0 1px 5px -1px rgba(0,0,0,0.35); }
  .flag-svg { display: block; border-radius: 50%; }
  .nav-wa {
    display: inline-flex; align-items: center; gap: 8px; background: var(--wa);
    color: #fff; font-weight: 600; font-size: 0.9rem; padding: 9px 16px;
    border-radius: 999px; transition: background 0.25s ease, transform 0.25s ease;
    box-shadow: 0 8px 20px -8px rgba(37,211,102,0.6);
  }
  .nav-wa:hover { background: var(--wa-d); transform: translateY(-1px); }
  .nav-burger { display: none; flex-direction: column; gap: 5px; background: none;
    border: none; cursor: pointer; padding: 6px; }
  .nav-burger span { width: 24px; height: 2px; background: #fff; border-radius: 2px;
    transition: transform 0.3s ease, opacity 0.3s ease; display: block; }
  .burger-x.b1 { transform: translateY(7px) rotate(45deg); }
  .burger-x.b2 { opacity: 0; }
  .burger-x.b3 { transform: translateY(-7px) rotate(-45deg); }

  /* ---------- MOBILE SIDE DRAWER ---------- */
  .drawer-scrim {
    position: fixed; inset: 0; z-index: 1200; background: rgba(20,30,24,0.5);
    backdrop-filter: blur(2px); opacity: 0; visibility: hidden;
    transition: opacity 0.4s ease, visibility 0.4s ease;
  }
  .drawer-scrim.scrim-open { opacity: 1; visibility: visible; }
  .drawer {
    position: fixed; top: 0; right: 0; z-index: 1210; height: 100%;
    width: min(86vw, 360px);
    background: linear-gradient(165deg, var(--green) 0%, var(--green-dd) 100%);
    box-shadow: none;
    transform: translateX(100%); transition: transform 0.45s cubic-bezier(.5,.05,.2,1);
    display: flex; flex-direction: column; padding: 22px 26px 28px;
    overflow-y: auto;
  }
  .drawer-open { transform: translateX(0); box-shadow: -24px 0 60px -20px rgba(0,0,0,0.5); }
  .drawer-head { display: flex; align-items: center; justify-content: space-between;
    padding-bottom: 22px; border-bottom: 1px solid rgba(255,255,255,0.14); }
  .drawer-eyebrow { color: var(--gold-l); font-weight: 600; text-transform: uppercase;
    letter-spacing: 0.22em; font-size: 0.72rem; }
  .drawer-close { position: relative; width: 40px; height: 40px; border-radius: 50%;
    background: rgba(255,255,255,0.1); border: none; cursor: pointer; flex: none; }
  .drawer-close span { position: absolute; top: 50%; left: 50%; width: 16px; height: 2px;
    background: #fff; border-radius: 2px; }
  .drawer-close span:first-child { transform: translate(-50%,-50%) rotate(45deg); }
  .drawer-close span:last-child { transform: translate(-50%,-50%) rotate(-45deg); }
  .drawer-close:hover { background: rgba(255,255,255,0.2); }
  .drawer-links { display: flex; flex-direction: column; padding: 14px 0; flex: 1; }
  .drawer-link { display: flex; align-items: center; gap: 14px; padding: 16px 4px;
    color: #fff; font-family: "Playfair Display", serif; font-size: 1.4rem; font-weight: 600;
    border-bottom: 1px solid rgba(255,255,255,0.1);
    opacity: 0; transform: translateX(16px); transition: opacity 0.4s ease, transform 0.4s ease, color 0.25s ease; }
  .drawer-open .drawer-link { opacity: 1; transform: translateX(0); }
  .drawer-link-idx { font-family: "Inter", sans-serif; font-size: 0.74rem; font-weight: 600;
    color: var(--gold-l); letter-spacing: 0.08em; min-width: 20px; }
  .drawer-link:hover { color: var(--gold-l); }
  .drawer-link-active { color: var(--gold-l); }
  .drawer-link-active .drawer-link-idx { color: #fff; }
  .drawer-foot { display: flex; flex-direction: column; gap: 14px; padding-top: 22px;
    border-top: 1px solid rgba(255,255,255,0.14); }
  .drawer-book { width: 100%; }
  .drawer-lang { display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding-bottom: 6px; }
  .drawer-lang-l { color: rgba(255,255,255,0.65); font-size: 0.9rem; }
  .drawer .lang-btn { opacity: 0.5; }
  .drawer .lang-active { opacity: 1; }
  .drawer-foot-l { color: rgba(255,255,255,0.55); font-size: 0.78rem; text-transform: uppercase;
    letter-spacing: 0.16em; }
  .drawer-contact { color: #fff; font-family: "Playfair Display", serif; font-weight: 700;
    font-size: 1.3rem; letter-spacing: 0.01em; }
  .drawer-contact:hover { color: var(--gold-l); }
  /* hide floating elements while the drawer is open */
  body.menu-open .sticky-wa, body.menu-open .cookie-banner { opacity: 0; pointer-events: none;
    transition: opacity 0.25s ease; }

  /* ---------- BUTTONS ---------- */
  .btn {
    display: inline-flex; align-items: center; gap: 9px; justify-content: center;
    font-family: "Inter", sans-serif; font-weight: 600; font-size: 1rem;
    padding: 15px 28px; border-radius: 999px; cursor: pointer; border: none;
    transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
    white-space: nowrap;
  }
  .btn-gold { background: var(--gold); color: #fff; box-shadow: 0 14px 30px -12px rgba(212,137,26,0.7); }
  .btn-gold:hover { background: #c47d12; transform: translateY(-2px); box-shadow: 0 18px 36px -12px rgba(212,137,26,0.8); }
  .btn-wa { background: var(--wa); color: #fff; box-shadow: 0 14px 30px -12px rgba(37,211,102,0.6); }
  .btn-wa:hover { background: var(--wa-d); transform: translateY(-2px); }
  .btn-sm { padding: 11px 18px; font-size: 0.9rem; }

  /* ---------- HERO ---------- */
  .hero {
    position: relative; min-height: 100svh; display: flex; flex-direction: column;
    align-items: center; justify-content: center; text-align: center;
    overflow: hidden; padding: 120px 24px 80px; color: #fff;
  }
  .hero-media { position: absolute; left: 0; top: -8%; width: 100%; height: 116%; z-index: 0; }
  .hero-slot { width: 100%; height: 100%; }
  /* Themed photo-slot placeholders */
  image-slot::part(frame) { background: #e2e8dd; }
  image-slot::part(ring) { border-color: rgba(61, 107, 79, 0.4); }
  image-slot::part(empty) { color: #4f6a5a; }
  .hero-slot::part(frame), .sea-slot::part(frame), .around-slot::part(frame) { background: #2f5640; }
  .hero-slot::part(ring), .sea-slot::part(ring), .around-slot::part(ring) { border-color: rgba(240, 217, 168, 0.5); }
  .hero-slot::part(empty), .sea-slot::part(empty), .around-slot::part(empty) { color: #f0d9a8; }
  img.hero-slot, img.about-slot, img.apt-slot, img.around-slot, img.sea-slot { object-fit: cover; display: block; }
  .hero-overlay {
    position: absolute; inset: 0;
    background:
      linear-gradient(to top, rgba(36,67,50,0.92) 0%, rgba(47,86,64,0.30) 45%, rgba(47,86,64,0.55) 100%),
      radial-gradient(120% 80% at 50% 30%, rgba(0,0,0,0.10), rgba(0,0,0,0.35));
  }
  .hero-content { position: relative; z-index: 2; max-width: 980px; }
  .hero-eyebrow {
    text-transform: uppercase; letter-spacing: 0.32em; font-size: 0.82rem;
    font-weight: 600; color: var(--gold-l); margin-bottom: 22px;
  }
  .hero-title {
    font-family: "Playfair Display", serif; font-weight: 800;
    font-size: clamp(3rem, 8.2vw, 6.6rem); line-height: 1.02; letter-spacing: -0.01em;
    text-shadow: 0 6px 40px rgba(0,0,0,0.4);
  }
  .ht-word { display: inline-block; margin: 0 0.16em; }
  .ht-char { display: inline-block; will-change: transform; }
  .hero-sub {
    font-family: "Playfair Display", serif; font-style: italic; font-weight: 500;
    font-size: clamp(1.15rem, 2.4vw, 1.7rem); margin-top: 22px; color: rgba(255,255,255,0.94);
  }
  .hero-cta { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; margin-top: 40px; }
  .hero-scroll {
    position: absolute; bottom: 28px; left: 50%; transform: translateX(-50%); z-index: 3;
    display: flex; flex-direction: column; align-items: center; gap: 8px; color: #fff;
    font-size: 0.72rem; letter-spacing: 0.25em; text-transform: uppercase;
  }
  .hero-scroll svg { animation: bob 1.8s ease-in-out infinite; }
  @keyframes bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(7px); } }

  /* ---------- SECTION PRIMITIVES ---------- */
  .section { max-width: var(--maxw); margin: 0 auto;
    padding: clamp(70px, 9vw, 130px) clamp(20px, 5vw, 56px); }
  .kicker { display: inline-flex; align-items: center; gap: 12px; margin-bottom: 18px; }
  .kicker-center { justify-content: center; }
  .kicker-rule { width: 38px; height: 2px; background: var(--gold); display: block; }
  .kicker-text { color: var(--gold); font-weight: 600; letter-spacing: 0.2em;
    text-transform: uppercase; font-size: 0.8rem; }
  .section-title {
    font-family: "Playfair Display", serif; font-weight: 700;
    font-size: clamp(2.1rem, 4.4vw, 3.5rem); line-height: 1.1; color: var(--green-d);
    letter-spacing: -0.01em;
  }
  .section-title.center { text-align: center; }
  .title-line { display: block; }
  .section-head { margin-bottom: clamp(40px, 6vw, 64px); }
  .section-head.center-head, .section-head:not(.left) { text-align: center; }
  .section-head.center-head .kicker, .apartments .kicker, .contact .kicker { justify-content: center; }
  .section-intro { max-width: 620px; margin: 18px auto 0; color: var(--muted);
    font-size: 1.08rem; }
  .section-head.left { text-align: left; }
  .section-head.left .section-intro { margin-left: 0; }
  .lede { font-size: 1.18rem; color: var(--ink); margin-top: 24px; }
  .body-text { color: var(--muted); margin-top: 16px; font-size: 1.04rem; }
  .quote {
    font-family: "Playfair Display", serif; font-style: italic; color: var(--gold);
    font-size: clamp(1.3rem, 2.2vw, 1.6rem); line-height: 1.4;
    border-left: 3px solid var(--gold); padding-left: 22px; margin: 30px 0;
  }

  /* ---------- ABOUT ---------- */
  .about-grid { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: clamp(36px, 5vw, 72px);
    align-items: center; }
  .about-badges { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; }
  .about-badge {
    display: inline-flex; align-items: center; gap: 9px; background: var(--white);
    border: 1px solid var(--ivory-2); border-radius: 999px; padding: 9px 16px;
    font-weight: 600; font-size: 0.92rem; color: var(--green-d); box-shadow: var(--shadow-sm);
  }
  .about-media { position: relative; }
  .about-slot { width: 100%; aspect-ratio: 4 / 5; border-radius: 20px;
    box-shadow: var(--shadow-md); position: relative; z-index: 2; }
  .about-media-accent {
    position: absolute; right: -18px; bottom: -18px; width: 62%; height: 62%;
    border: 2px solid var(--gold); border-radius: 20px; z-index: 1;
  }
  .stats {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px;
    margin-top: clamp(56px, 7vw, 88px); padding-top: 44px;
    border-top: 1px solid var(--ivory-2); text-align: center;
  }
  .stat-num { font-family: "Playfair Display", serif; font-weight: 800;
    font-size: clamp(2.6rem, 5vw, 4rem); color: var(--gold); line-height: 1; }
  .stat-label { text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.82rem;
    color: var(--muted); margin-top: 10px; font-weight: 500; }

  /* ---------- APARTMENTS ---------- */
  .apartments { background:
    linear-gradient(180deg, var(--ivory) 0%, var(--ivory-2) 100%); max-width: none; }
  .apartments > * { max-width: var(--maxw); margin-left: auto; margin-right: auto; }
  .apt-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 30px; }
  .apt-card {
    background: var(--white); border-radius: 20px; overflow: hidden;
    box-shadow: var(--shadow-sm); border: 1px solid rgba(212,137,26,0.0);
    transition: transform 0.35s ease, box-shadow 0.35s ease, border-color 0.35s ease;
    display: flex; flex-direction: column;
  }
  .apt-card:hover { transform: translateY(-8px) scale(1.012);
    box-shadow: 0 34px 70px -24px rgba(212,137,26,0.45); border-color: rgba(212,137,26,0.35); }
  .apt-photo-wrap { position: relative; aspect-ratio: 16 / 11; display: block; width: 100%;
    border: none; padding: 0; margin: 0; cursor: pointer; overflow: hidden; background: var(--ivory-2); }
  .apt-photo-wrap .apt-slot { transition: transform 0.7s cubic-bezier(.22,.61,.36,1); }
  .apt-card:hover .apt-photo-wrap .apt-slot { transform: scale(1.06); }
  .apt-photocount { position: absolute; bottom: 12px; right: 12px; display: inline-flex;
    align-items: center; gap: 6px; background: rgba(36,67,50,0.72); color: #fff; font-size: 0.78rem;
    font-weight: 600; padding: 6px 11px; border-radius: 999px; backdrop-filter: blur(4px); z-index: 2; }
  .apt-viewhint { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    background: rgba(36,67,50,0.42); color: #fff; font-family: "Playfair Display", serif; font-style: italic;
    font-size: 1.15rem; opacity: 0; transition: opacity 0.3s ease; }
  .apt-photo-wrap:hover .apt-viewhint { opacity: 1; }
  .apt-slot { width: 100%; height: 100%; }
  .apt-tag {
    position: absolute; top: 14px; left: 14px; background: var(--gold); color: #fff;
    font-weight: 600; font-size: 0.78rem; letter-spacing: 0.04em; padding: 6px 13px;
    border-radius: 999px; box-shadow: 0 8px 20px -8px rgba(212,137,26,0.7); white-space: nowrap;
  }
  .apt-body { padding: 26px 26px 24px; display: flex; flex-direction: column; flex: 1; }
  .apt-name-row { display: flex; justify-content: space-between; align-items: baseline;
    gap: 12px; flex-wrap: wrap; }
  .apt-name { font-family: "Playfair Display", serif; font-weight: 700; font-size: 1.5rem;
    color: var(--green-d); }
  .apt-cap { color: var(--gold); font-weight: 600; font-size: 0.82rem;
    text-transform: uppercase; letter-spacing: 0.06em; }
  .apt-features { margin: 18px 0 22px; display: flex; flex-direction: column; gap: 10px; }
  .apt-features li { display: flex; align-items: flex-start; gap: 10px; color: var(--ink);
    font-size: 0.98rem; }
  .feat-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--blue);
    margin-top: 8px; flex: none; }
  .apt-footer { margin-top: auto; padding-top: 20px; border-top: 1px solid var(--ivory-2);
    display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
  .apt-price { display: flex; align-items: baseline; gap: 4px; }
  .apt-from { color: var(--muted); font-size: 0.82rem; }
  .apt-eur { font-family: "Playfair Display", serif; font-weight: 800; font-size: 1.9rem;
    color: var(--green-d); }
  .apt-night { color: var(--muted); font-size: 0.9rem; }

  .amenities { margin-top: clamp(54px, 7vw, 84px); }
  .amenities-title { font-family: "Playfair Display", serif; font-weight: 700;
    font-size: 1.7rem; color: var(--green-d); text-align: center; margin-bottom: 32px; }
  .amenities-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px 22px; }
  .amenity { display: flex; align-items: center; gap: 13px; background: var(--white);
    border: 1px solid var(--ivory-2); border-radius: 14px; padding: 14px 16px;
    font-weight: 500; color: var(--ink); font-size: 0.96rem; }
  .amenity-ic { width: 42px; height: 42px; border-radius: 11px; flex: none;
    display: flex; align-items: center; justify-content: center;
    background: var(--ivory); border: 1px solid rgba(61,107,79,0.18); }

  /* ---------- SEA ---------- */
  .sea { position: relative; min-height: 82vh; display: flex; align-items: center;
    justify-content: center; overflow: hidden; color: #fff; text-align: center;
    padding: clamp(80px, 10vw, 140px) 24px; }
  .sea-media { position: absolute; left: 0; top: -10%; width: 100%; height: 120%; z-index: 0; }
  .sea-slot { width: 100%; height: 100%; }
  .sea-overlay { position: absolute; inset: 0; background:
    linear-gradient(180deg, rgba(47,86,64,0.55), rgba(36,67,50,0.30) 50%, rgba(47,86,64,0.65)),
    radial-gradient(100% 100% at 50% 50%, rgba(93,184,212,0.18), rgba(0,0,0,0.30)); }
  .sea-content { position: relative; z-index: 2; max-width: 760px; }
  .sea-title { font-family: "Playfair Display", serif; font-weight: 700;
    font-size: clamp(2.2rem, 5vw, 3.6rem); line-height: 1.1; text-shadow: 0 6px 30px rgba(0,0,0,0.4); }
  .sea-text { margin-top: 22px; font-size: 1.12rem; color: rgba(255,255,255,0.94);
    max-width: 600px; margin-left: auto; margin-right: auto; }
  .sea-pills { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 32px; }
  .sea-pill { display: inline-flex; align-items: center; gap: 9px;
    background: rgba(255,255,255,0.14); border: 1px solid rgba(255,255,255,0.3);
    backdrop-filter: blur(8px); border-radius: 999px; padding: 10px 18px;
    font-weight: 600; font-size: 0.94rem; white-space: nowrap; }
  .sea .kicker-text { color: var(--gold-l); }

  /* ---------- AROUND ---------- */
  .around { position: relative; overflow: hidden; max-width: none; color: #fff; }
  .around-bg { position: absolute; left: 0; top: -8%; width: 100%; height: 116%; z-index: 0; }
  .around-slot { width: 100%; height: 100%; object-position: center 55%; }
  .around-bg-veil { position: absolute; inset: 0; background:
    linear-gradient(105deg, rgba(31,58,43,0.95) 0%, rgba(36,67,50,0.80) 42%, rgba(36,67,50,0.42) 100%),
    linear-gradient(0deg, rgba(31,58,43,0.55), rgba(31,58,43,0) 40%); }
  .around-inner { position: relative; z-index: 2; max-width: var(--maxw); margin: 0 auto;
    display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(36px, 5vw, 72px);
    align-items: center; padding: clamp(70px, 9vw, 130px) clamp(20px, 5vw, 56px); }
  .around .section-title { color: #fff; }
  .around .section-intro { color: rgba(255,255,255,0.82); margin-left: 0; }
  .around .kicker-text { color: var(--gold-l); }
  .around-list { display: flex; flex-direction: column; }
  .around-row { display: flex; align-items: center; gap: 16px; padding: 18px 0;
    border-bottom: 1px solid rgba(255,255,255,0.16); }
  .around-row:first-child { border-top: 1px solid rgba(255,255,255,0.16); }
  .around-ic { width: 44px; height: 44px; border-radius: 12px; flex: none;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255,255,255,0.08); border: 1px solid rgba(212,137,26,0.4); }
  .around-name { font-family: "Playfair Display", serif; font-size: 1.2rem; font-weight: 600;
    color: #fff; flex: none; }
  .around-leader { flex: 1; border-bottom: 1px dotted rgba(255,255,255,0.35);
    margin: 0 4px; transform: translateY(4px); min-width: 20px; }
  .around-dist { font-weight: 700; color: var(--gold-l); font-size: 1.1rem; flex: none;
    letter-spacing: 0.02em; }

  /* ---------- CONTACT ---------- */
  .contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; align-items: stretch; }
  .contact-wa-card { display: flex; align-items: center; gap: 20px; background: var(--green);
    color: #fff; border-radius: 20px; padding: 32px 30px; box-shadow: var(--shadow-md);
    transition: transform 0.3s ease, box-shadow 0.3s ease; }
  .contact-wa-card:hover { transform: translateY(-4px);
    box-shadow: 0 34px 70px -22px rgba(37,211,102,0.5); }
  .cwa-ic { width: 64px; height: 64px; border-radius: 50%; flex: none; background: var(--wa);
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 10px 24px -8px rgba(37,211,102,0.8); }
  .cwa-body { display: flex; flex-direction: column; }
  .cwa-label { font-size: 0.92rem; color: rgba(255,255,255,0.8); }
  .cwa-num { font-family: "Playfair Display", serif; font-weight: 700; font-size: 1.7rem;
    margin-top: 4px; }
  .contact-info { background: var(--white); border: 1px solid var(--ivory-2);
    border-radius: 20px; padding: 30px; display: flex; flex-direction: column; gap: 20px; }
  .ci-row { display: flex; gap: 14px; align-items: flex-start; }
  .ci-row > div { display: flex; flex-direction: column; }
  .ci-k { text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.74rem;
    color: var(--muted); font-weight: 600; }
  .ci-v { color: var(--ink); font-size: 1rem; margin-top: 3px; }
  .ci-v.link:hover { color: var(--gold); }
  .contact-links { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 4px; }
  .ghost-btn { display: inline-flex; align-items: center; gap: 8px; padding: 11px 18px;
    border: 1.5px solid var(--green); color: var(--green-d); border-radius: 999px;
    font-weight: 600; font-size: 0.92rem; transition: all 0.25s ease; }
  .ghost-btn:hover { background: var(--green); color: #fff; }
  .contact-soon { display: inline-flex; align-items: center; gap: 10px; justify-content: center;
    width: 100%; margin-top: 34px; color: var(--muted); font-style: italic;
    font-family: "Playfair Display", serif; font-size: 1.05rem; }
  .soon-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--blue);
    box-shadow: 0 0 0 0 rgba(93,184,212,0.6); animation: soonPulse 2.4s infinite; flex: none; }
  @keyframes soonPulse { 0% { box-shadow: 0 0 0 0 rgba(93,184,212,0.55); }
    70% { box-shadow: 0 0 0 12px rgba(93,184,212,0); } 100% { box-shadow: 0 0 0 0 rgba(93,184,212,0); } }

  /* ---------- FOOTER ---------- */
  .footer { background: var(--green-dd); color: rgba(255,255,255,0.8); }
  .footer-inner { max-width: var(--maxw); margin: 0 auto;
    padding: clamp(54px, 7vw, 80px) clamp(20px, 5vw, 56px) 40px;
    display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 40px; }
  .footer-tagline { font-family: "Playfair Display", serif; font-style: italic;
    color: rgba(255,255,255,0.7); margin-top: 18px; max-width: 320px; font-size: 1.02rem; }
  .footer-h { text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.78rem;
    color: var(--gold-l); margin-bottom: 16px; font-weight: 600; }
  .footer-link { display: block; color: rgba(255,255,255,0.72); padding: 6px 0;
    transition: color 0.25s ease; }
  .footer-link:hover { color: var(--gold-l); }
  .footer-social { display: inline-flex; align-items: center; gap: 9px;
    color: rgba(255,255,255,0.78); padding: 6px 0; transition: color 0.25s ease; }
  .footer-social:hover { color: #fff; }
  .footer-bottom { max-width: var(--maxw); margin: 0 auto;
    padding: 22px clamp(20px, 5vw, 56px); border-top: 1px solid rgba(255,255,255,0.14);
    display: flex; align-items: center; justify-content: space-between; gap: 12px 24px; flex-wrap: wrap;
    font-size: 0.84rem; color: rgba(255,255,255,0.5); }
  .footer-credit { display: inline-flex; align-items: center; gap: 4px; }
  .footer-credit a { color: rgba(255,255,255,0.74); font-weight: 600; transition: color 0.2s ease; }
  .footer-credit a:hover { color: var(--gold-l); }
  .footer-heart { color: var(--gold-l); font-size: 1rem; line-height: 1;
    filter: drop-shadow(0 2px 5px rgba(212,137,26,0.28)); }

  /* ---------- STICKY WHATSAPP ---------- */
  .sticky-wa { position: fixed; right: 22px; bottom: 22px; z-index: 200;
    width: 60px; height: 60px; border-radius: 50%; background: var(--wa);
    display: flex; align-items: center; justify-content: center; color: #fff;
    box-shadow: 0 14px 34px -8px rgba(37,211,102,0.7); transition: transform 0.25s ease; }
  .sticky-wa:hover { transform: scale(1.07); }
  .sticky-wa-pulse { position: absolute; inset: 0; border-radius: 50%; background: var(--wa);
    z-index: -1; animation: waPulse 3s ease-out infinite; }
  @keyframes waPulse { 0% { transform: scale(1); opacity: 0.7; }
    70% { transform: scale(1.7); opacity: 0; } 100% { opacity: 0; } }
  .sticky-wa-tip { position: absolute; right: 72px; background: #fff; color: var(--green-d);
    font-weight: 600; font-size: 0.9rem; padding: 9px 14px; border-radius: 10px;
    box-shadow: var(--shadow-md); white-space: nowrap; opacity: 0; pointer-events: none;
    transform: translateX(8px); transition: opacity 0.25s ease, transform 0.25s ease; }
  .sticky-wa-tip::after { content: ""; position: absolute; right: -5px; top: 50%;
    transform: translateY(-50%) rotate(45deg); width: 10px; height: 10px; background: #fff; }
  .sticky-wa:hover .sticky-wa-tip { opacity: 1; transform: translateX(0); }

  /* ---------- GALLERY ---------- */
  .gallery-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px;
  }
  .gal-tile {
    position: relative; border: none; padding: 0; cursor: pointer; margin: 0;
    border-radius: 14px; overflow: hidden; aspect-ratio: 4 / 3;
    background: var(--ivory-2); box-shadow: var(--shadow-sm);
  }
  .gal-tile img { width: 100%; height: 100%; object-fit: cover; display: block;
    transition: transform 0.7s cubic-bezier(.22,.61,.36,1); }
  .gal-tile:hover img { transform: scale(1.07); }
  .gal-tile::after { content: ""; position: absolute; inset: 0;
    box-shadow: inset 0 0 0 0 rgba(212,137,26,0); transition: box-shadow 0.3s ease; }
  .gal-tile:hover::after { box-shadow: inset 0 0 0 3px rgba(212,137,26,0.85); }
  .gal-cap {
    position: absolute; left: 0; right: 0; bottom: 0; padding: 30px 14px 12px;
    color: #fff; font-size: 0.9rem; font-weight: 500; text-align: left;
    background: linear-gradient(to top, rgba(36,67,50,0.85), transparent);
    opacity: 0; transform: translateY(8px); transition: opacity 0.3s ease, transform 0.3s ease;
  }
  .gal-tile:hover .gal-cap { opacity: 1; transform: none; }
  .gal-tile::before {
    content: "⤢"; position: absolute; top: 10px; right: 12px; z-index: 2;
    color: #fff; font-size: 1rem; width: 30px; height: 30px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: rgba(36,67,50,0.5); opacity: 0; transition: opacity 0.3s ease;
  }
  .gal-tile:hover::before { opacity: 1; }
  .lightbox {
    position: fixed; inset: 0; z-index: 300; background: rgba(20,30,24,0.93);
    backdrop-filter: blur(6px); display: flex; align-items: center; justify-content: center;
    padding: 5vh 4vw; animation: lbIn 0.25s ease;
  }
  @keyframes lbIn { from { opacity: 0; } to { opacity: 1; } }
  .lb-img { max-width: 90vw; max-height: 84vh; border-radius: 10px; object-fit: contain;
    box-shadow: 0 30px 80px rgba(0,0,0,0.55); animation: lbZoom 0.3s cubic-bezier(.22,.61,.36,1); }
  @keyframes lbZoom { from { transform: scale(0.94); opacity: 0; } to { transform: scale(1); opacity: 1; } }
  .lb-close { position: absolute; top: 18px; right: 22px; width: 46px; height: 46px;
    border-radius: 50%; border: none; background: rgba(255,255,255,0.14); color: #fff;
    font-size: 1.9rem; line-height: 1; cursor: pointer; transition: background 0.2s ease; }
  .lb-close:hover { background: rgba(255,255,255,0.28); }
  .lb-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 54px; height: 54px;
    border-radius: 50%; border: none; background: rgba(255,255,255,0.14); color: #fff;
    font-size: 2.3rem; line-height: 1; cursor: pointer; transition: background 0.2s ease; }
  .lb-nav:hover { background: rgba(255,255,255,0.28); }
  .lb-prev { left: 18px; } .lb-next { right: 18px; }
  .lb-cap { position: absolute; bottom: 22px; left: 0; right: 0; text-align: center;
    color: rgba(255,255,255,0.92); font-family: "Playfair Display", serif; font-style: italic;
    font-size: 1.1rem; padding: 0 16px; }

  /* ---------- APARTMENT GALLERY MODAL ---------- */
  .apt-modal { position: fixed; inset: 0; z-index: 300; background: rgba(20,30,24,0.93);
    backdrop-filter: blur(6px); display: flex; align-items: center; justify-content: center;
    padding: 4vh 4vw; animation: lbIn 0.25s ease; }
  .apt-modal-card { position: relative; width: min(1060px, 96vw); height: min(86vh, 640px);
    background: var(--white); border-radius: 20px; overflow: hidden;
    display: grid; grid-template-columns: 1.5fr 1fr; grid-template-rows: 1fr auto;
    grid-template-areas: "media info" "thumbs info";
    box-shadow: 0 40px 100px rgba(0,0,0,0.5); animation: lbZoom 0.3s cubic-bezier(.22,.61,.36,1); }
  .amc-media { grid-area: media; position: relative; background: #11201a; min-height: 0; }
  .amc-main { width: 100%; height: 100%; object-fit: cover; display: block; }
  .amc-counter { position: absolute; bottom: 12px; left: 12px; background: rgba(0,0,0,0.55);
    color: #fff; font-size: 0.8rem; padding: 4px 11px; border-radius: 999px; }
  .amc-thumbs { grid-area: thumbs; display: flex; gap: 8px; padding: 10px; overflow-x: auto;
    background: var(--ivory); scrollbar-width: thin; }
  .amc-thumb { flex: 0 0 auto; width: 88px; height: 62px; border: 2px solid transparent;
    border-radius: 8px; overflow: hidden; cursor: pointer; padding: 0; background: none;
    opacity: 0.6; transition: opacity 0.2s ease, border-color 0.2s ease; }
  .amc-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
  .amc-thumb:hover { opacity: 1; }
  .amc-thumb-on { opacity: 1; border-color: var(--gold); }
  .amc-info { grid-area: info; padding: 32px 30px; overflow-y: auto; display: flex;
    flex-direction: column; gap: 7px; }
  .amc-kicker { color: var(--gold); font-weight: 600; font-size: 0.78rem; text-transform: uppercase;
    letter-spacing: 0.12em; }
  .amc-name { font-family: "Playfair Display", serif; font-size: 1.7rem; color: var(--green-d);
    line-height: 1.12; margin-top: 2px; }
  .amc-sub { color: var(--muted); font-size: 0.98rem; }
  .amc-dtitle { font-family: "Inter", sans-serif; font-size: 0.76rem; text-transform: uppercase;
    letter-spacing: 0.12em; color: var(--green-d); margin-top: 18px; padding-top: 16px;
    border-top: 1px solid var(--ivory-2); font-weight: 700; }
  .amc-features { margin: 8px 0 14px; }
  .amc-price { display: flex; align-items: baseline; gap: 5px; margin: 4px 0 16px; }
  .apt-modal .lb-close { background: rgba(0,0,0,0.45); z-index: 3; }
  @media (max-width: 760px) {
    .apt-modal { padding: 0; }
    .apt-modal-card { grid-template-columns: 1fr; grid-template-rows: auto auto auto;
      grid-template-areas: "media" "thumbs" "info"; width: 100vw; height: 100vh;
      max-height: 100vh; border-radius: 0; overflow-y: auto; }
    .amc-media { aspect-ratio: 4 / 3; }
    .amc-info { padding: 22px 20px 40px; }
  }

  /* ---------- EXPERIENCE ---------- */
  .exp-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
  .exp-card { background: var(--white); border: 1px solid var(--ivory-2); border-radius: 18px;
    padding: 30px 24px; box-shadow: var(--shadow-sm);
    transition: transform 0.35s ease, box-shadow 0.35s ease; }
  .exp-card:hover { transform: translateY(-6px); box-shadow: 0 28px 60px -24px rgba(61,107,79,0.35); }
  .exp-ic { width: 58px; height: 58px; border-radius: 15px; display: flex; align-items: center;
    justify-content: center; background: var(--ivory); border: 1px solid rgba(61,107,79,0.18);
    margin-bottom: 18px; }
  .exp-title { font-family: "Playfair Display", serif; font-size: 1.28rem; color: var(--green-d);
    margin-bottom: 10px; line-height: 1.2; }
  .exp-text { color: var(--muted); font-size: 0.98rem; line-height: 1.6; }

  /* ---------- CTA BAND ---------- */
  .cta-band { background: linear-gradient(120deg, var(--green) 0%, var(--green-d) 100%); color: #fff; }
  .cta-inner { max-width: var(--maxw); margin: 0 auto; padding: clamp(48px,6vw,80px) clamp(20px,5vw,56px);
    display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap; }
  .cta-title { font-family: "Playfair Display", serif; font-weight: 700;
    font-size: clamp(1.7rem, 3.2vw, 2.6rem); line-height: 1.15; }
  .cta-sub { color: rgba(255,255,255,0.85); margin-top: 12px; max-width: 580px; font-size: 1.05rem; }
  .cta-btn { flex: none; }

  /* Booking platforms trust bar */
  .footer-portals {
    position: relative; max-width: none; margin: 8px 0 0;
    padding: 30px max(20px, calc((100vw - var(--maxw)) / 2 + 56px));
    display: flex; align-items: center; justify-content: space-between; gap: 42px;
    background:
      linear-gradient(90deg, rgba(212,137,26,0.08), transparent 24%, transparent 76%, rgba(212,137,26,0.08)),
      var(--ivory-2);
    border-top: 1px solid rgba(212,137,26,0.28);
    border-bottom: 1px solid rgba(212,137,26,0.28);
  }
  .footer-portals::before {
    content: ""; position: absolute; top: -1px; left: 50%; width: 72px; height: 3px;
    transform: translateX(-50%); background: var(--gold); border-radius: 0 0 999px 999px;
  }
  .footer-portals-l {
    color: var(--green-d); font-size: 0.76rem; line-height: 1.4; font-weight: 700;
    text-transform: uppercase; letter-spacing: 0.18em; white-space: nowrap;
  }
  .footer-portals-row {
    display: grid; grid-template-columns: repeat(3, 160px); align-items: center;
    justify-content: end; gap: clamp(24px, 4vw, 54px);
  }
  .portal-logo {
    display: flex; align-items: center; justify-content: center; width: 160px; height: 42px;
    opacity: 0.92; transition: opacity 0.25s ease, transform 0.25s ease;
  }
  .portal-logo:hover { opacity: 1; transform: translateY(-2px); }
  .portal-badge { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
  .portal-img { display: block; width: 100%; height: 100%; object-position: center; }
  .portal-img-booking { transform: scale(0.92); }
  .portal-img-airbnb { transform: scale(0.92); }
  .portal-img-google { transform: scale(1.04); }
  @media (max-width: 900px) {
    .footer-portals { flex-direction: column; justify-content: center; gap: 24px; }
    .footer-portals-row { justify-content: center; }
  }
  @media (max-width: 560px) {
    .footer-portals { flex-direction: column; align-items: center; gap: 22px; padding: 28px 20px; }
    .footer-portals-l { white-space: normal; text-align: center; }
    .footer-portals-row { width: 100%; grid-template-columns: 1fr; justify-items: center; gap: 18px; }
  }

  /* ---------- FOOTER (expanded) ---------- */
  .footer-inner { grid-template-columns: 1.7fr 1fr 1.2fr 1fr; }
  .footer-blurb { color: rgba(255,255,255,0.7); margin-top: 18px; max-width: 300px;
    font-size: 0.96rem; line-height: 1.6; }
  .footer-socials { display: flex; gap: 12px; margin-top: 22px; }
  .footer-soc { width: 42px; height: 42px; border-radius: 50%; display: flex; align-items: center;
    justify-content: center; background: rgba(255,255,255,0.1); color: rgba(255,255,255,0.85);
    transition: background 0.25s ease, color 0.25s ease, transform 0.25s ease; }
  .footer-soc:hover { background: var(--gold); color: #fff; transform: translateY(-2px); }
  .footer-muted { display: block; color: rgba(255,255,255,0.5); font-size: 0.9rem; padding: 6px 0; }
  .footer-legal-links { display: flex; align-items: center; gap: 10px; }
  .footer-legal-links a { color: rgba(255,255,255,0.6); transition: color 0.2s ease; }
  .footer-legal-links a:hover { color: var(--gold-l); }
  .fl-dot { color: rgba(255,255,255,0.3); }
  .footer-code {
    display: block; color: rgba(255,255,255,0.76); font-size: 0.78rem;
    line-height: 1.45; overflow-wrap: anywhere;
  }

  /* ---------- COOKIE BANNER ---------- */
  .cookie-banner { position: fixed; left: 0; right: 0; bottom: 0; z-index: 260;
    background: rgba(36,67,50,0.97); backdrop-filter: blur(10px); color: #fff;
    display: flex; align-items: center; justify-content: center; gap: 22px;
    padding: 16px clamp(16px,4vw,40px); flex-wrap: wrap; box-shadow: 0 -10px 30px rgba(0,0,0,0.25);
    animation: cookieUp 0.4s ease; }
  body.preloading .cookie-banner, body.preloading .sticky-wa {
    opacity: 0; visibility: hidden; pointer-events: none; animation: none;
  }
  body.preloaded .cookie-banner { animation: cookieUp 0.4s ease; }
  @keyframes cookieUp { from { transform: translateY(100%); } to { transform: translateY(0); } }
  .cookie-text { font-size: 0.92rem; color: rgba(255,255,255,0.85); max-width: 720px; line-height: 1.5; }
  .cookie-link { color: var(--gold-l); text-decoration: underline; text-underline-offset: 2px; }
  .cookie-actions { display: flex; gap: 10px; flex: none; }
  .cookie-btn { border: none; cursor: pointer; font-family: "Inter", sans-serif; font-weight: 600;
    font-size: 0.9rem; padding: 11px 22px; border-radius: 999px; transition: all 0.2s ease; }
  .cookie-accept { background: var(--gold); color: #fff; }
  .cookie-accept:hover { background: #c47d12; }
  .cookie-reject { background: rgba(255,255,255,0.12); color: #fff; }
  .cookie-reject:hover { background: rgba(255,255,255,0.22); }

  /* refined responsive for new blocks */
  @media (max-width: 1000px) { .exp-grid { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 760px) {
    .cta-inner { flex-direction: column; align-items: flex-start; }
    .cta-btn { width: 100%; max-width: 360px; }
  }
  @media (max-width: 620px) {
    .cookie-banner { flex-direction: column; align-items: stretch; text-align: center; gap: 12px; }
    .cookie-actions { justify-content: center; }
    .cookie-btn { flex: 1; }
  }

  /* ---------- PRIVACY-FIRST MAP ---------- */
  .map-consent {
    min-height: 430px; display: grid; place-items: center; padding: 34px;
    background:
      linear-gradient(rgba(36,67,50,0.88), rgba(36,67,50,0.88)),
      url("assets/photos/n1-6.jpg") center/cover;
    color: #fff;
  }
  .map-consent-inner { max-width: 620px; text-align: center; }
  .map-consent h2 {
    font: 700 clamp(1.8rem, 4vw, 2.7rem)/1.1 "Playfair Display", serif;
    margin-bottom: 16px;
  }
  .map-consent p { color: rgba(255,255,255,0.86); margin-bottom: 24px; }
  .map-direct-link {
    display: block; width: fit-content; margin: 18px auto 0; color: #fff;
    text-decoration: underline; text-underline-offset: 3px;
  }

  /* ---------- LOCAL SEO LANDING ---------- */
  .local-seo-intro { max-width: 820px; margin: 0 auto 68px; text-align: center; }
  .local-seo-intro .section-intro { max-width: 760px; }
  .local-seo-grid {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px; margin: 34px 0 72px;
  }
  .local-seo-card {
    background: #fff; border: 1px solid rgba(61,107,79,0.14);
    border-radius: 18px; padding: 28px; box-shadow: var(--shadow-sm);
  }
  .local-seo-card h3, .local-seo-copy h2, .local-faq h2 {
    font-family: "Playfair Display", serif; color: var(--green-d);
  }
  .local-seo-card h3 { font-size: 1.35rem; margin-bottom: 8px; }
  .local-seo-card p, .local-seo-copy p, .local-faq p { color: var(--muted); }
  .local-seo-copy {
    max-width: 850px; margin: 0 auto 64px; padding: clamp(28px,5vw,54px);
    border-radius: 22px; background: var(--ivory-2);
  }
  .local-seo-copy h2, .local-faq h2 { font-size: clamp(1.7rem,3vw,2.4rem); margin-bottom: 16px; }
  .local-seo-copy .btn { margin-top: 24px; }
  .local-faq { max-width: 850px; margin: 0 auto; }
  .local-faq details { border-bottom: 1px solid rgba(61,107,79,0.18); padding: 18px 0; }
  .local-faq summary { cursor: pointer; color: var(--green-d); font-weight: 700; }
  .local-faq details p { padding-top: 10px; }
  @media (max-width: 700px) {
    .local-seo-grid { grid-template-columns: 1fr; }
  }
  @media (max-width: 540px) { .exp-grid { grid-template-columns: 1fr; } }

  /* ---------- RESPONSIVE ---------- */
  @media (max-width: 980px) {
    .about-grid { grid-template-columns: 1fr; }
    .about-media { order: -1; max-width: 460px; }
    .around-inner { grid-template-columns: 1fr; }
    .contact-grid { grid-template-columns: 1fr; }
    .footer-inner { grid-template-columns: 1fr 1fr; }
    .footer-brand { grid-column: 1 / -1; }
  }
  @media (max-width: 860px) {
    .nav-links, .nav-wa { display: none; }
    .nav-burger { display: flex; }
    .lang-top { order: 2; }
    .nav-burger { order: 3; }
    .nav-right { gap: 14px; }
    .apt-grid { grid-template-columns: 1fr; }
  }
  @media (max-width: 560px) {
    .stats { grid-template-columns: 1fr; gap: 18px; }
    .footer-inner { grid-template-columns: 1fr; }
    .footer-bottom { justify-content: center; text-align: center; }
    .footer-legal-links { width: 100%; justify-content: center; }
    .around-name { font-size: 1.05rem; }
    .sticky-wa-tip { display: none; }
    .hero-cta { flex-direction: column; width: 100%; max-width: 340px; margin-inline: auto; }
    .hero-cta .btn { width: 100%; }
  }
  @media (max-width: 480px) {
    .nav-inner { padding: 0 18px; }
    .nav { padding: 14px 0; }
    .nav-scrolled { padding: 9px 0; }
    .section { padding: clamp(54px, 12vw, 80px) 18px; }
    .partner-card { padding: 20px; }
    .partner-badge { font-size: 0.86rem; padding: 9px 13px; }
    .partner-services { grid-template-columns: 1fr; }
    .sticky-wa { right: 16px; bottom: 16px; width: 54px; height: 54px; }
    .drawer { width: min(92vw, 340px); padding: 20px 22px 24px; }
    .drawer-link { font-size: 1.25rem; padding: 14px 2px; }
  }

  /* ===================== BOOKING ===================== */
  .booking-bar { display: grid; grid-template-columns: repeat(3, minmax(155px, 1fr)) auto;
    align-items: end; gap: 10px; background: rgba(255,255,255,0.97);
    border: 1px solid rgba(255,255,255,0.7); border-radius: 20px; padding: 12px;
    box-shadow: 0 28px 70px -24px rgba(0,0,0,0.56), inset 0 1px 0 rgba(255,255,255,0.8);
    max-width: 900px; margin: 36px auto 0; backdrop-filter: blur(14px); }
  .bb-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; text-align: left; }
  .booking-field-label { padding-left: 4px; font-size: 0.68rem; line-height: 1;
    font-weight: 800; text-transform: uppercase; letter-spacing: 0.13em; color: var(--muted); }
  .booking-picker { position: relative; min-width: 0; }
  .booking-control { width: 100%; min-height: 50px; padding: 8px 11px; border: 1px solid rgba(61,107,79,0.14);
    border-radius: 12px; background: linear-gradient(180deg, #fff, #fdfbf7); color: var(--ink);
    display: grid; grid-template-columns: 28px minmax(0,1fr) 18px; align-items: center; gap: 8px;
    font: inherit; text-align: left; cursor: pointer; transition: border-color 0.2s ease,
    box-shadow 0.2s ease, background 0.2s ease, transform 0.2s ease; }
  .booking-control:hover { border-color: rgba(212,137,26,0.6); background: #fff;
    box-shadow: 0 8px 20px -14px rgba(36,67,50,0.45); }
  .booking-control:focus-visible, .booking-control[aria-expanded="true"] {
    outline: none; border-color: var(--gold);
    box-shadow: 0 0 0 3px rgba(212,137,26,0.14), 0 10px 24px -16px rgba(36,67,50,0.5); }
  .booking-control-icon { width: 28px; height: 28px; border-radius: 8px;
    display: grid; place-items: center; color: var(--green);
    background: rgba(61,107,79,0.09); }
  .booking-control-icon svg { width: 17px; height: 17px; }
  .booking-control-value { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    color: var(--green-dd); font-size: 0.88rem; font-weight: 700; text-transform: capitalize; }
  .booking-control-chevron { display: grid; place-items: center; color: var(--gold);
    transition: transform 0.2s ease; }
  .booking-control-chevron svg { width: 16px; height: 16px; }
  .booking-control[aria-expanded="true"] .booking-control-chevron { transform: rotate(180deg); }
  .bb-submit { background: var(--gold); color: #fff; border: none; cursor: pointer;
    font-family: "Inter", sans-serif; font-weight: 800; font-size: 0.9rem; min-height: 50px; padding: 13px 20px;
    border-radius: 12px; white-space: nowrap; transition: background 0.25s ease, transform 0.25s ease,
    box-shadow 0.25s ease; box-shadow: 0 14px 28px -12px rgba(212,137,26,0.75); }
  .bb-submit:hover { background: #c47d12; transform: translateY(-2px);
    box-shadow: 0 18px 32px -13px rgba(212,137,26,0.9); }

  .booking-section { max-width: none; background:
    linear-gradient(180deg, var(--ivory-2) 0%, var(--ivory) 100%); }
  .booking-card { max-width: var(--maxw); margin: 0 auto; display: grid;
    grid-template-columns: 1.1fr 0.9fr; gap: clamp(28px, 4vw, 56px); align-items: center; }
  .booking-h { font-family: "Playfair Display", serif; font-weight: 700;
    font-size: clamp(1.9rem, 3.6vw, 2.8rem); color: var(--green-d); line-height: 1.12; }
  .booking-p { color: var(--muted); font-size: 1.06rem; line-height: 1.7; margin-top: 14px; }
  .booking-perks { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px 20px; margin-top: 24px; }
  .booking-perks li { display: flex; align-items: flex-start; gap: 10px; color: var(--green-d);
    font-weight: 600; font-size: 0.96rem; line-height: 1.35; }
  .booking-perks li svg { flex: none; margin-top: 2px; }
  .booking-form { position: relative; background:
    linear-gradient(#fff,#fff) padding-box,
    linear-gradient(145deg, rgba(212,137,26,0.45), rgba(61,107,79,0.12)) border-box;
    border: 1px solid transparent; border-radius: 24px; padding: 32px;
    box-shadow: 0 30px 70px -30px rgba(36,67,50,0.48); display: flex; flex-direction: column; gap: 16px; }
  .booking-form::before { content: ""; position: absolute; top: 0; left: 32px; right: 32px; height: 3px;
    background: linear-gradient(90deg, transparent, var(--gold), transparent); border-radius: 0 0 999px 999px; }
  .bf-title { font-family: "Playfair Display", serif; font-weight: 700; font-size: 1.5rem;
    color: var(--green-d); }
  .bf-sub { color: var(--gold); font-weight: 600; font-size: 0.86rem; margin-top: -8px; }
  .bf-label { display: flex; flex-direction: column; gap: 7px; }
  .bf-label .booking-field-label { font-size: 0.71rem; }
  .bf-label .booking-control { min-height: 56px; padding: 10px 13px; border-radius: 14px; }
  .bf-label .booking-control-icon { width: 32px; height: 32px; border-radius: 9px; }
  .bf-label .booking-control-value { font-size: 0.98rem; }
  .bf-submit { width: 100%; margin-top: 6px; }
  .bf-note { color: var(--muted); font-size: 0.82rem; text-align: center; line-height: 1.5; }

  /* themed booking popovers are portalled to body, avoiding hero clipping */
  .booking-popover-backdrop { position: fixed; inset: 0; z-index: 490; border: 0; padding: 0;
    background: transparent; cursor: default; }
  .booking-popover { position: fixed; z-index: 500; color: var(--ink); background: #fff;
    border: 1px solid rgba(212,137,26,0.28); border-radius: 20px;
    box-shadow: 0 30px 80px -24px rgba(22,48,34,0.52), 0 8px 22px -14px rgba(22,48,34,0.3);
    animation: bookingPopoverIn 0.2s cubic-bezier(.2,.8,.2,1); overflow: hidden; }
  @keyframes bookingPopoverIn {
    from { opacity: 0; transform: translateY(7px) scale(0.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
  }
  .calendar-popover { width: 350px; padding: 18px; }
  .calendar-head { display: grid; grid-template-columns: 38px 1fr 38px; align-items: center;
    gap: 10px; margin-bottom: 14px; }
  .calendar-head strong { color: var(--green-dd); font-family: "Playfair Display", serif;
    font-size: 1.18rem; line-height: 1.1; text-align: center; text-transform: capitalize; }
  .calendar-nav { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 10px;
    border: 1px solid rgba(61,107,79,0.14); background: var(--ivory); color: var(--green);
    cursor: pointer; transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease; }
  .calendar-nav svg { width: 18px; height: 18px; }
  .calendar-nav:hover { color: #fff; background: var(--green); border-color: var(--green); }
  .calendar-nav:focus-visible, .calendar-day:focus-visible, .guests-stepper button:focus-visible,
  .guests-confirm:focus-visible { outline: 3px solid rgba(212,137,26,0.28); outline-offset: 2px; }
  .calendar-weekdays, .calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); }
  .calendar-weekdays { margin-bottom: 5px; }
  .calendar-weekdays span { padding: 5px 0; color: var(--gold); font-size: 0.68rem; font-weight: 800;
    text-align: center; text-transform: uppercase; }
  .calendar-grid { row-gap: 3px; }
  .calendar-day { position: relative; height: 39px; border: 0; border-radius: 10px; background: transparent;
    color: var(--green-dd); font-family: "Inter", sans-serif; font-size: 0.84rem; font-weight: 650;
    cursor: pointer; isolation: isolate; transition: color 0.16s ease, background 0.16s ease,
    transform 0.16s ease; }
  .calendar-day:hover:not(:disabled):not(.is-selected) { color: var(--green-dd);
    background: var(--ivory-2); transform: translateY(-1px); }
  .calendar-day.is-outside { color: rgba(106,122,111,0.42); }
  .calendar-day:disabled { color: rgba(106,122,111,0.25); cursor: not-allowed; }
  .calendar-day.is-today:not(.is-selected)::after { content: ""; position: absolute; left: 50%; bottom: 4px;
    width: 4px; height: 4px; border-radius: 50%; background: var(--gold); transform: translateX(-50%); }
  .calendar-day.is-in-range { border-radius: 0; background: rgba(61,107,79,0.09); }
  .calendar-day.is-range-edge { color: #fff; background: var(--green); }
  .calendar-day.is-selected { color: #fff; background: linear-gradient(145deg, var(--green), var(--green-d));
    box-shadow: 0 7px 16px -7px rgba(36,67,50,0.7); }
  .calendar-day.is-selected::before { content: ""; position: absolute; inset: 3px; z-index: -1;
    border: 1px solid rgba(255,255,255,0.36); border-radius: 8px; }

  .guests-popover { width: 340px; padding: 22px; }
  .guests-copy { display: flex; flex-direction: column; gap: 3px; padding-bottom: 18px;
    border-bottom: 1px solid var(--ivory-2); }
  .guests-copy strong { color: var(--green-dd); font-family: "Playfair Display", serif; font-size: 1.2rem; }
  .guests-copy span { color: var(--muted); font-size: 0.8rem; }
  .guests-stepper { display: grid; grid-template-columns: 48px 1fr 48px; align-items: center;
    gap: 18px; padding: 22px 0 18px; }
  .guests-stepper button { width: 48px; height: 48px; border-radius: 50%;
    border: 1px solid rgba(61,107,79,0.2); background: var(--ivory); color: var(--green-d);
    font: 500 1.55rem/1 "Inter", sans-serif; cursor: pointer;
    transition: color 0.2s ease, background 0.2s ease, transform 0.2s ease; }
  .guests-stepper button:hover:not(:disabled) { color: #fff; background: var(--green); transform: scale(1.05); }
  .guests-stepper button:disabled { opacity: 0.3; cursor: not-allowed; }
  .guests-count { display: flex; flex-direction: column; align-items: center; line-height: 1; }
  .guests-count strong { color: var(--green-dd); font-family: "Playfair Display", serif;
    font-size: 2.15rem; font-variant-numeric: tabular-nums; }
  .guests-count span { margin-top: 6px; color: var(--muted); font-size: 0.72rem;
    font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
  .guests-confirm { width: 100%; min-height: 44px; border: 0; border-radius: 11px;
    background: var(--gold); color: #fff; font: 800 0.88rem "Inter", sans-serif;
    cursor: pointer; box-shadow: 0 12px 24px -12px rgba(212,137,26,0.75);
    transition: background 0.2s ease, transform 0.2s ease; }
  .guests-confirm:hover { background: #c47d12; transform: translateY(-1px); }

  /* header Prenota button */
  .nav-book { display: inline-flex; align-items: center; gap: 8px; background: var(--gold); color: #fff;
    font-weight: 700; font-size: 0.9rem; padding: 9px 18px; border-radius: 999px;
    transition: background 0.25s ease, transform 0.25s ease;
    box-shadow: 0 8px 20px -8px rgba(212,137,26,0.7); }
  .nav-book:hover { background: #c47d12; transform: translateY(-1px); }

  @media (max-width: 900px) {
    .booking-bar { grid-template-columns: repeat(3, 1fr); max-width: 720px; }
    .bb-submit { grid-column: 1 / -1; }
  }
  @media (max-width: 760px) {
    .booking-bar { display: flex; flex-direction: column; align-items: stretch; padding: 14px;
      border-radius: 18px; max-width: 390px; }
    .bb-submit { width: 100%; }
    .booking-card { grid-template-columns: 1fr; }
    .booking-perks { grid-template-columns: 1fr; }
    .booking-form { padding: 26px 20px; }
    .booking-popover-backdrop { background: rgba(22,48,34,0.46); backdrop-filter: blur(3px); }
    .booking-popover { left: 12px !important; right: 12px; top: auto !important; bottom: 12px;
      width: auto; border-radius: 22px; animation-name: bookingSheetIn; }
    @keyframes bookingSheetIn {
      from { opacity: 0; transform: translateY(24px); }
      to { opacity: 1; transform: translateY(0); }
    }
    .calendar-popover { padding: 20px 16px 18px; }
    .calendar-day { height: 42px; }
    .guests-popover { padding: 24px; }
  }

  /* ===================== EXPLORE CARDS ===================== */
  .explore-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
  .explore-card { display: flex; flex-direction: column; background: var(--white);
    border: 1px solid var(--ivory-2); border-radius: 20px; overflow: hidden; box-shadow: var(--shadow-sm);
    transition: transform 0.35s ease, box-shadow 0.35s ease; }
  .explore-card:hover { transform: translateY(-8px); box-shadow: 0 32px 64px -26px rgba(61,107,79,0.42); }
  .explore-media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--ivory-2); }
  .explore-media img { width: 100%; height: 100%; object-fit: cover; display: block;
    transition: transform 0.8s cubic-bezier(.22,.61,.36,1); }
  .explore-card:hover .explore-media img { transform: scale(1.07); }
  .explore-tag { position: absolute; top: 14px; left: 14px; background: rgba(36,67,50,0.82);
    color: #fff; font-weight: 600; font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.1em;
    padding: 6px 13px; border-radius: 999px; backdrop-filter: blur(4px); }
  .explore-body { padding: 24px 24px 26px; display: flex; flex-direction: column; flex: 1; }
  .explore-title { font-family: "Playfair Display", serif; font-weight: 700; font-size: 1.5rem;
    color: var(--green-d); }
  .explore-text { color: var(--muted); margin-top: 10px; font-size: 0.98rem; line-height: 1.6; flex: 1; }
  .explore-cta { display: inline-flex; align-items: center; gap: 8px; margin-top: 20px;
    color: var(--gold); font-weight: 700; font-size: 0.95rem; transition: gap 0.25s ease; }
  .explore-card:hover .explore-cta { gap: 13px; }
  @media (max-width: 880px) { .explore-grid { grid-template-columns: 1fr; max-width: 460px; margin: 0 auto; } }

  /* ===================== TESTIMONIALS ===================== */
  .testimonials { background: linear-gradient(180deg, var(--ivory-2) 0%, var(--ivory) 100%); max-width: none; }
  .testimonials > * { max-width: var(--maxw); margin-left: auto; margin-right: auto; }
  .stars { display: inline-flex; gap: 2px; color: var(--gold); }
  .tst-stars { margin-bottom: 14px; }

  .rev-overview { display: flex; align-items: center; justify-content: space-between; gap: 28px;
    background: var(--green); color: #fff; border-radius: 22px; padding: 26px 30px;
    box-shadow: var(--shadow-md); }
  .rev-overview-brand { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
  .rev-glogo { display: inline-flex; align-items: center; gap: 9px; background: #fff; color: #3c4043;
    font-weight: 700; font-size: 1rem; padding: 8px 16px; border-radius: 999px; }
  .rev-score { display: flex; align-items: baseline; gap: 3px; }
  .rev-score strong { font-family: "Playfair Display", serif; font-size: 2.5rem; line-height: 1; }
  .rev-score span, .rev-total { color: rgba(255,255,255,0.72); font-size: 0.88rem; }
  .rev-stars-big { color: var(--gold-l); }
  .rev-overview-actions { display: flex; align-items: center; justify-content: flex-end; gap: 14px; flex-wrap: wrap; }
  .rev-highlight { display: inline-flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.92);
    color: var(--green-d); font-weight: 600; font-size: 0.88rem; padding: 9px 16px; border-radius: 999px;
    white-space: nowrap; line-height: 1; }
  .rev-highlight svg { stroke: var(--green-d); flex: none; }
  .rev-btn { white-space: nowrap; }
  .rev-rail-head { display: flex; align-items: center; justify-content: space-between; gap: 20px;
    margin-top: 32px; margin-bottom: 14px; }
  .rev-rail-label { font-family: "Playfair Display", serif; font-size: 1.25rem; font-weight: 700;
    color: var(--green-d); }
  .rev-controls { display: flex; gap: 8px; }
  .rev-controls button { width: 42px; height: 42px; border-radius: 50%; border: 1px solid rgba(61,107,79,0.22);
    background: #fff; color: var(--green-d); font-size: 1.8rem; line-height: 1; cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease; }
  .rev-controls button:hover { background: var(--green); color: #fff; transform: translateY(-2px); }
  .rev-rail { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(300px, 31%);
    gap: 18px; overflow-x: auto; padding: 4px 2px 18px; scroll-snap-type: x mandatory;
    scrollbar-width: none; overscroll-behavior-inline: contain; }
  .rev-rail::-webkit-scrollbar { display: none; }
  .rev-card { min-height: 260px; scroll-snap-align: start; background: #fff;
    border: 1px solid rgba(61,107,79,0.12); border-radius: 18px; padding: 24px;
    box-shadow: var(--shadow-sm); display: flex; flex-direction: column;
    transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease; }
  .rev-card:hover { transform: translateY(-4px); border-color: rgba(212,137,26,0.4);
    box-shadow: 0 24px 52px -22px rgba(61,107,79,0.42); }
  .rev-card-top { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; }
  .rev-avatar { width: 42px; height: 42px; border-radius: 50%; display: grid; place-items: center;
    background: var(--green); color: #fff; font-family: "Playfair Display", serif; font-weight: 800; }
  .rev-person { min-width: 0; display: flex; flex-direction: column; }
  .rev-person strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--green-d); }
  .rev-person span { color: var(--muted); font-size: 0.8rem; }
  .rev-card-stars { margin: 18px 0 12px; }
  .rev-card-stars .stars svg { width: 16px; height: 16px; }
  .rev-card-text { color: var(--ink); font-family: "Playfair Display", serif; font-style: italic;
    font-size: 1.02rem; line-height: 1.62; display: -webkit-box; -webkit-line-clamp: 7;
    -webkit-box-orient: vertical; overflow: hidden; }
  @media (max-width: 900px) {
    .rev-overview { flex-direction: column; align-items: flex-start; }
    .rev-overview-actions { justify-content: flex-start; }
    .rev-rail { grid-auto-columns: minmax(290px, 58%); }
  }
  @media (max-width: 560px) {
    .rev-overview { padding: 24px 20px; }
    .rev-overview-brand { gap: 12px; }
    .rev-overview-actions, .rev-btn { width: 100%; }
    .rev-highlight { white-space: normal; }
    .rev-rail { grid-auto-columns: 88%; }
    .rev-card { min-height: 280px; }
  }

  /* ===================== TERRITORY TEASER ===================== */
  .teaser { position: relative; overflow: hidden; color: #fff; }
  .teaser-media { position: absolute; inset: -8% 0; z-index: 0; }
  .teaser-img { width: 100%; height: 116%; object-fit: cover; object-position: center 60%; }
  .teaser-veil { position: absolute; inset: 0; background:
    linear-gradient(110deg, rgba(31,58,43,0.94) 0%, rgba(36,67,50,0.82) 45%, rgba(36,67,50,0.5) 100%); }
  .teaser-inner { position: relative; z-index: 2; max-width: var(--maxw); margin: 0 auto;
    padding: clamp(64px,8vw,120px) clamp(20px,5vw,56px); }
  .teaser-inner .kicker-text { color: var(--gold-l); }
  .teaser-title { font-family: "Playfair Display", serif; font-weight: 700;
    font-size: clamp(2rem,4.2vw,3.3rem); line-height: 1.1; max-width: 720px; }
  .teaser-text { margin-top: 20px; color: rgba(255,255,255,0.88); font-size: 1.1rem;
    max-width: 640px; line-height: 1.65; }
  .teaser-stats { display: flex; gap: clamp(28px,5vw,64px); margin: 34px 0 36px; flex-wrap: wrap; }
  .teaser-stat { display: flex; flex-direction: column; }
  .teaser-stat-n { font-family: "Playfair Display", serif; font-weight: 800; color: var(--gold-l);
    font-size: clamp(2.2rem,4vw,3rem); line-height: 1; }
  .teaser-stat-l { color: rgba(255,255,255,0.78); font-size: 0.86rem; text-transform: uppercase;
    letter-spacing: 0.1em; margin-top: 8px; }

  @media (max-width: 1000px) { .rev-layout { grid-template-columns: 1fr; } }

  /* ===================== SUBPAGE HERO + CONTENT ===================== */
  .subhero { position: relative; min-height: 62vh; display: flex; align-items: flex-end;
    overflow: hidden; color: #fff; padding: 140px 0 56px; }
  .subhero-media { position: absolute; inset: -8% 0; z-index: 0; }
  .subhero-media img { width: 100%; height: 116%; object-fit: cover; object-position: center 55%; }
  .subhero-veil { position: absolute; inset: 0; background:
    linear-gradient(to top, rgba(31,58,43,0.95) 0%, rgba(36,67,50,0.55) 55%, rgba(36,67,50,0.5) 100%); }
  .subhero-inner { position: relative; z-index: 2; max-width: var(--maxw); width: 100%;
    margin: 0 auto; padding: 0 clamp(20px,5vw,56px); }
  .subhero .kicker-text { color: var(--gold-l); }
  .subhero-title { font-family: "Playfair Display", serif; font-weight: 800;
    font-size: clamp(2.4rem,6vw,4.4rem); line-height: 1.04; text-shadow: 0 6px 30px rgba(0,0,0,0.4); }
  .subhero-sub { font-family: "Playfair Display", serif; font-style: italic;
    font-size: clamp(1.1rem,2.2vw,1.5rem); margin-top: 16px; color: rgba(255,255,255,0.92); max-width: 640px; }
  .crumbs { display: flex; gap: 8px; align-items: center; margin-bottom: 18px; font-size: 0.85rem;
    color: rgba(255,255,255,0.75); }
  .crumbs a { color: rgba(255,255,255,0.75); transition: color 0.2s ease; }
  .crumbs a:hover { color: var(--gold-l); }
  .crumbs span { color: rgba(255,255,255,0.45); }

  /* experiences page */
  .xp-intro { max-width: 760px; margin: 0 auto; text-align: center; }
  .xp-list { display: flex; flex-direction: column; gap: clamp(40px,6vw,72px); margin-top: clamp(40px,6vw,72px); }
  .xp-row { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px,4vw,60px); align-items: center; }
  .xp-row.flip .xp-figure { order: 2; }
  .xp-figure { position: relative; border-radius: 20px; overflow: hidden; aspect-ratio: 4/3;
    box-shadow: var(--shadow-md); background: var(--ivory-2); }
  .xp-figure img { width: 100%; height: 100%; object-fit: cover; display: block;
    transition: transform 0.8s cubic-bezier(.22,.61,.36,1); }
  .xp-row:hover .xp-figure img { transform: scale(1.05); }
  .xp-dist { position: absolute; top: 14px; left: 14px; background: var(--gold); color: #fff;
    font-weight: 700; font-size: 0.8rem; padding: 6px 13px; border-radius: 999px; }
  .xp-kicker { color: var(--gold); font-weight: 600; font-size: 0.78rem; text-transform: uppercase;
    letter-spacing: 0.14em; }
  .xp-title { font-family: "Playfair Display", serif; font-weight: 700; color: var(--green-d);
    font-size: clamp(1.6rem,3vw,2.3rem); line-height: 1.12; margin: 10px 0 14px; }
  .xp-text { color: var(--muted); font-size: 1.05rem; line-height: 1.7; }
  .xp-tags { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 20px; }
  .xp-tag { background: var(--white); border: 1px solid var(--ivory-2); border-radius: 999px;
    padding: 7px 15px; font-size: 0.86rem; font-weight: 600; color: var(--green-d); }
  @media (max-width: 820px) {
    .xp-row, .xp-row.flip { grid-template-columns: 1fr; }
    .xp-row.flip .xp-figure { order: 0; }
  }

  /* gallery filters + page grid */
  .gal-filters { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-bottom: 40px; }
  .gal-filter { border: 1.5px solid var(--ivory-2); background: var(--white); color: var(--green-d);
    font-family: "Inter", sans-serif; font-weight: 600; font-size: 0.92rem; padding: 10px 20px;
    border-radius: 999px; cursor: pointer; transition: all 0.22s ease; }
  .gal-filter:hover { border-color: var(--gold); color: var(--gold); }
  .gal-filter-on { background: var(--green); border-color: var(--green); color: #fff; }
  .gallery-grid-page .gal-tile { aspect-ratio: 1 / 1; }
  @media (max-width: 900px) { .gallery-grid { grid-template-columns: repeat(3, 1fr); } }
  @media (max-width: 620px) { .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; } }

  /* map */
  .map-section { padding: 0; }
  .map-wrap { max-width: var(--maxw); margin: 0 auto clamp(40px,6vw,80px); padding: 0 clamp(20px,5vw,56px); }
  .map-frame { width: 100%; height: clamp(320px, 46vw, 480px); border: 0; border-radius: 20px;
    box-shadow: var(--shadow-md); display: block; filter: saturate(0.92); }

  /* info strip */
  .info-strip { background: var(--ivory-2); }
  .info-grid { max-width: var(--maxw); margin: 0 auto; padding: clamp(48px,6vw,80px) clamp(20px,5vw,56px);
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
  .info-card { background: var(--white); border: 1px solid #ece4d6; border-radius: 16px; padding: 26px 24px; }
  .info-card h4 { font-family: "Playfair Display", serif; color: var(--green-d); font-size: 1.2rem;
    margin-bottom: 8px; }
  .info-card p { color: var(--muted); font-size: 0.98rem; line-height: 1.6; }
  @media (max-width: 820px) { .info-grid { grid-template-columns: 1fr; } }

  /* ===================== WELCOME BAND ===================== */
  .welcome { text-align: center; }
  .welcome-top { max-width: 820px; margin: 0 auto; }
  .welcome-lead { font-family: "Playfair Display", serif; font-size: clamp(1.5rem, 3.2vw, 2.3rem);
    line-height: 1.35; color: var(--green-d); font-weight: 600; }
  .welcome-body { color: var(--muted); font-size: 1.12rem; line-height: 1.75; margin-top: 22px; }
  .welcome-sign { font-family: "Playfair Display", serif; font-style: italic; color: var(--gold);
    font-size: 1.2rem; margin-top: 22px; }
  .welcome-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px;
    margin-top: clamp(44px, 6vw, 70px); padding-top: 44px; border-top: 1px solid var(--ivory-2); }
  .welcome-stat { display: flex; flex-direction: column; align-items: center; }
  .welcome-stat-n { font-family: "Playfair Display", serif; font-weight: 800;
    font-size: clamp(2.2rem, 4vw, 3.2rem); color: var(--gold); line-height: 1; display: inline-flex;
    align-items: baseline; gap: 2px; }
  .welcome-stat-u { font-size: 0.5em; color: var(--gold-l); }
  .welcome-stat-l { color: var(--muted); font-size: 0.86rem; text-transform: uppercase;
    letter-spacing: 0.08em; margin-top: 10px; max-width: 130px; }
  @media (max-width: 680px) { .welcome-stats { grid-template-columns: repeat(2, 1fr); gap: 28px 16px; } }

  /* ===================== REASONS ===================== */
  .reasons { background: linear-gradient(180deg, var(--ivory) 0%, var(--ivory-2) 100%); max-width: none; }
  .reasons > * { max-width: var(--maxw); margin-left: auto; margin-right: auto; }
  .reasons-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
  .reason-card { position: relative; background: var(--white); border: 1px solid var(--ivory-2);
    border-radius: 18px; padding: 30px 26px; box-shadow: var(--shadow-sm); overflow: hidden;
    transition: transform 0.35s ease, box-shadow 0.35s ease, border-color 0.35s ease; }
  .reason-card:hover { transform: translateY(-6px); border-color: rgba(212,137,26,0.35);
    box-shadow: 0 28px 60px -24px rgba(61,107,79,0.35); }
  .reason-ic { width: 56px; height: 56px; border-radius: 14px; display: flex; align-items: center;
    justify-content: center; background: var(--ivory); border: 1px solid rgba(61,107,79,0.16); }
  .reason-num { position: absolute; top: 20px; right: 24px; font-family: "Playfair Display", serif;
    font-weight: 800; font-size: 2.4rem; color: rgba(61,107,79,0.10); line-height: 1; }
  .reason-t { font-family: "Playfair Display", serif; font-weight: 700; font-size: 1.35rem;
    color: var(--green-d); margin: 18px 0 10px; }
  .reason-d { color: var(--muted); font-size: 0.99rem; line-height: 1.65; }
  .reasons-grid .reason-card:nth-child(4), .reasons-grid .reason-card:nth-child(5) { grid-column: span 1; }
  .reasons-banner { text-align: center; margin-top: 34px; color: var(--green-d); font-weight: 600;
    font-size: 0.95rem; letter-spacing: 0.01em; opacity: 0.85; }
  @media (max-width: 920px) { .reasons-grid { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 560px) { .reasons-grid { grid-template-columns: 1fr; } }

  /* ===================== FAQ ===================== */
  .faq-list { max-width: 820px; margin: 0 auto; }
  .faq-item { border: 1px solid var(--ivory-2); border-radius: 14px; background: var(--white);
    margin-bottom: 14px; overflow: hidden; transition: box-shadow 0.3s ease, border-color 0.3s ease; }
  .faq-item.faq-open { box-shadow: var(--shadow-sm); border-color: rgba(212,137,26,0.35); }
  .faq-q { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 18px;
    background: none; border: none; cursor: pointer; padding: 22px 24px; text-align: left;
    font-family: "Playfair Display", serif; font-size: 1.18rem; font-weight: 600; color: var(--green-d); }
  .faq-plus { flex: none; width: 34px; height: 34px; border-radius: 50%; display: flex;
    align-items: center; justify-content: center; background: var(--ivory); color: var(--gold);
    transition: transform 0.35s ease, background 0.3s ease; }
  .faq-open .faq-plus { transform: rotate(135deg); background: var(--gold); color: #fff; }
  .faq-a-wrap { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.35s ease; }
  .faq-open .faq-a-wrap { grid-template-rows: 1fr; }
  .faq-a { overflow: hidden; color: var(--muted); font-size: 1.02rem; line-height: 1.7;
    padding: 0 24px; }
  .faq-open .faq-a { padding: 0 24px 24px; }

  /* ===================== PARTNER / CONVENZIONE ===================== */
  .partner-card { display: grid; grid-template-columns: 1fr 1.05fr; gap: clamp(28px, 4vw, 56px);
    align-items: center; background: linear-gradient(135deg, var(--green) 0%, var(--green-dd) 100%);
    border-radius: 24px; padding: clamp(24px, 3vw, 40px); box-shadow: var(--shadow-md); overflow: hidden; }
  .partner-media { position: relative; height: 100%; min-height: 320px; border-radius: 16px;
    overflow: hidden; box-shadow: 0 18px 40px -16px rgba(0,0,0,0.5); }
  .partner-img { width: 100%; height: 100%; object-fit: cover; object-position: center 30%;
    display: block; min-height: 320px; }
  .partner-slot { position: absolute; border-radius: 16px; box-shadow: 0 18px 40px -16px rgba(0,0,0,0.5); }
  .partner-slot-a { width: 68%; aspect-ratio: 3/4; top: 0; left: 0; z-index: 2; }
  .partner-slot-b { width: 56%; aspect-ratio: 1/1; bottom: 0; right: 0; z-index: 1;
    border: 3px solid var(--green); }
  .partner-badge { position: absolute; top: 14px; right: 12px; z-index: 3; background: var(--gold);
    color: #fff; font-weight: 800; font-size: 1rem; padding: 12px 16px; border-radius: 999px;
    box-shadow: 0 12px 28px -8px rgba(212,137,26,0.8); transform: rotate(4deg); letter-spacing: 0.01em; }
  .partner-body { color: #fff; }
  .partner-body .kicker-text { color: var(--gold-l); }
  .partner-title { font-family: "Playfair Display", serif; font-weight: 800;
    font-size: clamp(1.9rem, 3.6vw, 2.9rem); line-height: 1.08; }
  .partner-lead { font-family: "Playfair Display", serif; font-style: italic; color: var(--gold-l);
    font-size: 1.2rem; margin-top: 14px; }
  .partner-text { color: rgba(255,255,255,0.86); font-size: 1.04rem; line-height: 1.7; margin-top: 14px; }
  .partner-services { display: grid; grid-template-columns: repeat(2, auto); justify-content: start;
    gap: 14px 30px; margin: 22px 0 26px; }
  .partner-services li { display: flex; align-items: flex-start; gap: 9px; color: #fff; font-weight: 600;
    font-size: 0.98rem; line-height: 1.35; }
  .partner-services .feat-dot { background: var(--gold-l); margin-top: 7px; }
  .partner-actions { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
  .partner-handle { color: rgba(255,255,255,0.7); font-weight: 600; }
  .partner-note { margin-top: 16px; color: rgba(255,255,255,0.6); font-size: 0.88rem; font-style: italic; }
  .partner-slot::part(frame) { background: #244332; }
  .partner-slot::part(ring) { border-color: rgba(240,217,168,0.5); }
  .partner-slot::part(empty) { color: #f0d9a8; }
  @media (max-width: 860px) {
    .partner-card { grid-template-columns: 1fr; }
    .partner-media { min-height: 300px; max-width: 420px; margin: 0 auto; width: 100%; }
  }

  /* ===================== PRELOADER (logo intro) ===================== */
  .preloader {
    position: fixed; inset: 0; z-index: 9999;
    display: grid; place-items: center;
    background: radial-gradient(125% 95% at 50% 42%, #3a6149 0%, #2c503b 48%, #1d3829 100%);
    opacity: 1; visibility: visible;
    transition:
      opacity var(--pl-exit, 560ms) cubic-bezier(.4,0,.2,1),
      visibility 0s linear var(--pl-exit, 560ms);
    will-change: opacity;
  }
  .preloader::before {
    content: ""; position: absolute; inset: 0; pointer-events: none;
    background: radial-gradient(70% 55% at 50% 46%, transparent 55%, rgba(0,0,0,0.32) 100%);
  }
  body.preloading { overflow: hidden; }
  body.preloaded .preloader { opacity: 0; visibility: hidden; pointer-events: none; }

  .pl-inner {
    position: relative; z-index: 1;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 34px; text-align: center; padding: 24px;
    transition: opacity 220ms ease, transform 320ms cubic-bezier(.4,0,.2,1);
  }
  body.preloaded .pl-inner { opacity: 0; transform: scale(0.985); }
  .pl-emblem { position: relative; display: grid; place-items: center; width: 200px; height: 200px; }
  /* soft pulsing glow behind the logo */
  .pl-emblem::before {
    content: ""; position: absolute; width: 150%; height: 150%; border-radius: 50%;
    background: radial-gradient(circle, rgba(230,163,56,0.32) 0%, rgba(230,163,56,0) 62%);
    opacity: 0; transform: scale(0.88);
    animation: plGlow 1s ease-out 0.1s forwards;
  }
  @keyframes plGlow { to { opacity: 0.82; transform: scale(1); } }
  /* thin ring that draws once around the emblem */
  .pl-ring { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
  .pl-ring circle { fill: none; stroke-linecap: round; }
  .pl-ring .pl-track { stroke: rgba(255,255,255,0.14); stroke-width: 1.5; }
  .pl-ring .pl-arc {
    stroke: var(--gold-l); stroke-width: 2.5;
    stroke-dasharray: 339.3; stroke-dashoffset: 339.3;
    animation: plDraw 1.05s cubic-bezier(.55,.06,.2,1) 0.12s forwards;
    filter: drop-shadow(0 0 5px rgba(230,163,56,0.6));
  }
  @keyframes plDraw { to { stroke-dashoffset: 0; } }
  .pl-logo {
    position: relative; z-index: 2; width: 132px; height: auto; display: block;
    opacity: 0; transform: scale(0.88);
    animation: plLogoIn 0.68s cubic-bezier(.22,.9,.3,1) 0.08s forwards;
    filter: drop-shadow(0 12px 28px rgba(0,0,0,0.45));
    will-change: transform, opacity;
  }
  @keyframes plLogoIn {
    0% { opacity: 0; transform: scale(0.88); }
    100% { opacity: 1; transform: scale(1); }
  }

  .pl-tagline {
    font-family: "Playfair Display", serif; font-style: italic;
    font-size: 1.02rem; letter-spacing: 0.02em; color: rgba(255,255,255,0);
    transform: translateY(6px); animation: plFadeUp 0.55s ease 0.42s forwards; max-width: 320px;
  }
  @keyframes plFadeUp { to { color: rgba(255,255,255,0.85); transform: translateY(0); } }
  .pl-bar { position: relative; width: 170px; height: 3px; border-radius: 3px;
    background: rgba(255,255,255,0.16); overflow: hidden; }
  .pl-bar span { position: absolute; inset: 0 auto 0 0; width: 0; border-radius: 3px;
    background: linear-gradient(90deg, var(--gold), var(--gold-l));
    animation: plBar var(--pl-duration, 1250ms) cubic-bezier(.2,.7,.2,1) forwards; }
  @keyframes plBar { to { width: 100%; } }
  .preloader-quick .pl-inner { gap: 0; }
  .preloader-quick .pl-emblem { width: 150px; height: 150px; }
  .preloader-quick .pl-logo { width: 100px; animation-duration: 320ms; animation-delay: 0ms; }
  .preloader-quick .pl-ring .pl-arc { animation-duration: 360ms; animation-delay: 0ms; }
  .preloader-quick .pl-tagline, .preloader-quick .pl-bar { display: none; }
  @media (prefers-reduced-motion: reduce) {
    .pl-arc, .pl-logo, .pl-tagline, .pl-emblem::before {
      animation: none !important; opacity: 1 !important; transform: none !important;
      color: rgba(255,255,255,0.85) !important; stroke-dashoffset: 0 !important; }
  }
  @media (max-width: 480px) {
    .pl-emblem { width: 168px; height: 168px; }
    .pl-logo { width: 112px; }
  }
