/* ============================================================
   La Vida Residence — shared stylesheet
   ============================================================ */

:root{
  --bg: #f4f5f6;
  --ink: #1c2126;
  --ink-soft: #454e57;
  --muted: #5a6672;
  --line: rgba(28,33,38,0.08);
  --line-strong: rgba(28,33,38,0.15);
  --accent: #38506b;
  --accent-dark: #2c3f54;
  --dark: #1c2126;
  --on-dark: #f4f5f6;
  --on-dark-soft: rgba(244,245,246,0.65);
  --on-dark-faint: rgba(244,245,246,0.4);
  --radius: 2px;
  --max: 1200px;
}

*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: 'Libre Franklin', -apple-system, BlinkMacSystemFont, sans-serif;
  -webkit-font-smoothing: antialiased;
  font-weight: 300;
  line-height: 1.5;
}
::selection{ background: #c3ccd6; }
img{ max-width: 100%; display: block; }
a{ color: inherit; text-decoration: none; }
button, input, textarea, select{ font-family: inherit; }
h1,h2,h3,h4{ margin: 0; font-weight: 600; }
p{ margin: 0; }

.container{ max-width: var(--max); margin: 0 auto; padding: 0 48px; }
.kicker{
  font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--muted); font-weight: 600;
}
.btn{
  display: inline-flex; align-items: center; justify-content: center;
  gap: 8px; border: none; cursor: pointer;
  font-size: 13px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
  padding: 15px 28px; border-radius: var(--radius);
  transition: opacity .15s ease, background-color .15s ease, transform .1s ease;
}
.btn:active{ transform: translateY(1px); }
.btn-primary{ background: var(--accent-dark); color: var(--on-dark); }
.btn-primary:hover{ background: var(--accent); }
.btn-light{ background: #fff; color: var(--ink); }
.btn-light:hover{ opacity: .9; }
.btn-outline{
  background: transparent; color: var(--ink);
  border: 1px solid var(--line-strong);
}
.btn-outline:hover{ background: rgba(28,33,38,0.04); }
.btn-outline-dark{
  background: transparent; color: var(--on-dark);
  border: 1px solid rgba(244,245,246,0.5);
}
.btn-outline-dark:hover{ background: rgba(244,245,246,0.08); }
.btn-small{ padding: 12px 22px; font-size: 12px; }

/* ---------------- Header ---------------- */
.site-header{
  position: sticky; top: 0; z-index: 100;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 48px;
  background: rgba(244,245,246,0.98);
  border-bottom: 1px solid var(--line);
}
.logo{
  font-size: 15px; letter-spacing: 0.16em; text-transform: uppercase;
  font-weight: 700; cursor: pointer;
}
.logo img{ display: block; height: 92px; width: auto; border-radius: 4px; }
.nav-center{ display: flex; flex: 1; align-items: center; justify-content: center; gap: 32px; }
.nav-center a, .main-nav a{
  font-size: 13px; opacity: .72; letter-spacing: 0.02em;
  cursor: pointer; white-space: nowrap;
  transition: opacity .2s ease;
}
.nav-center a:hover, .nav-center a.active,
.main-nav a:hover, .main-nav a.active{ opacity: 1; }

.nav-center a{
  position: relative; padding: 6px 1px;
  font-size: 15px; font-weight: 600;
}
.nav-center a::after{
  content: ""; position: absolute; left: 0; bottom: 0;
  width: 100%; height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: right;
  transition: transform .3s cubic-bezier(.4,0,.2,1);
}
.nav-center a:hover::after, .nav-center a.active::after{
  transform: scaleX(1); transform-origin: left;
}
.header-actions{ display: flex; align-items: center; gap: 14px; flex: none; }
.lang-switch{
  display: flex; gap: 2px; background: rgba(28,33,38,0.06);
  border-radius: 3px; padding: 3px;
}
.lang-switch button{
  border: none; background: transparent; color: var(--ink);
  font-size: 11px; font-weight: 700; padding: 6px 11px;
  border-radius: 2px; cursor: pointer; letter-spacing: 0.04em;
}
.lang-switch button.active{ background: #fff; }
.nav-toggle{
  display: none; border: none; background: transparent; cursor: pointer;
  width: 34px; height: 34px; padding: 0; flex-direction: column;
  align-items: center; justify-content: center; gap: 5px; flex: none;
}
.nav-toggle span{ width: 20px; height: 2px; background: var(--ink); display: block; }
.main-nav{ display: none; }

/* WhatsApp */
.btn-whatsapp{ background: #25d366; color: #fff; }
.btn-whatsapp:hover{ background: #1ebe59; }
.btn-whatsapp svg{ width: 15px; height: 15px; flex: none; }
.whatsapp-fab{
  display: none; position: fixed; right: 20px; bottom: 20px; z-index: 150;
  width: 56px; height: 56px; border-radius: 50%; background: #25d366;
  align-items: center; justify-content: center; box-shadow: 0 6px 18px rgba(0,0,0,0.25);
}
.whatsapp-fab svg{ width: 28px; height: 28px; fill: #fff; }
.whatsapp-fab:hover{ background: #1ebe59; }

/* ---------------- Hero ---------------- */
.hero{
  position: relative; height: 88vh; min-height: 520px; max-height: 820px;
  overflow: hidden;
}
.hero-collage{ position: absolute; inset: 0; display: flex; }
.hero-panel{ flex: 1; height: 100%; overflow: hidden; position: relative; }
.hero-panel:not(:last-child){ border-right: 2px solid rgba(244,245,246,0.18); }
.hero-panel img{ width: 100%; height: 100%; object-fit: cover; object-position: center 30%; }
.hero::after{
  content: ""; position: absolute; inset: 0;
  background:
    radial-gradient(ellipse at center, rgba(8,11,14,0.38) 0%, rgba(8,11,14,0.22) 50%, rgba(8,11,14,0.06) 72%),
    linear-gradient(180deg, rgba(8,11,14,0.32) 0%, rgba(8,11,14,0.18) 28%, rgba(8,11,14,0.22) 55%, rgba(8,11,14,0.45) 100%);
}
.hero-content{
  position: relative; z-index: 1; height: 100%;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; gap: 22px; padding: 32px; color: #fff;
  text-shadow: 0 2px 16px rgba(0,0,0,0.45);
}
.hero-content .kicker{ color: rgba(255,255,255,0.9); }
.hero-content h1{
  font-size: 52px; line-height: 1.1; margin: 0; max-width: 780px; letter-spacing: -0.01em;
}
.hero-content p{
  font-size: 17px; line-height: 1.6; max-width: 540px; margin: 0;
  opacity: .95; font-weight: 400;
}
.hero-actions{ display: flex; gap: 14px; margin-top: 10px; flex-wrap: wrap; justify-content: center; }

/* ---------------- Sections (generic) ---------------- */
section{ padding: 96px 0; }
.section-tight{ padding: 64px 0; }
.section-title{
  text-align: center; font-size: 28px; letter-spacing: -0.01em; margin-bottom: 8px;
}
.section-head{ display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; margin-bottom: 48px; }
.section-head p{ max-width: 620px; color: var(--ink-soft); font-size: 15px; line-height: 1.7; }

/* Intro */
.intro-grid{
  display: grid; grid-template-columns: 0.9fr 1.1fr; gap: 56px; align-items: center;
}
.intro-media img{ border-radius: var(--radius); height: 380px; width: 100%; object-fit: cover; }
.intro-text{ display: flex; flex-direction: column; gap: 18px; }
.intro-text h2{ font-size: 30px; line-height: 1.3; }
.intro-text p{ font-size: 15px; line-height: 1.8; color: var(--ink-soft); }

/* Apartments */
.apartments-section{ background: var(--dark); color: var(--on-dark); }
.apartments-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: 2px; background: rgba(244,245,246,0.1); }
.apt-card{ display: flex; flex-direction: column; background: var(--dark); }
.apt-card .apt-media{ position: relative; height: 320px; overflow: hidden; }
.apt-card .apt-media img{ width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.apt-card:hover .apt-media img{ transform: scale(1.04); }
.apt-body{ padding: 32px; display: flex; flex-direction: column; gap: 14px; }
.apt-body h3{ font-size: 22px; color: var(--on-dark); }
.apt-body p{ font-size: 14px; line-height: 1.7; color: var(--on-dark-soft); }
.apt-meta{ display: flex; gap: 16px; font-size: 12px; color: rgba(244,245,246,0.5); letter-spacing: 0.02em; }
.apt-actions{ display: flex; gap: 10px; margin-top: 8px; }

/* Apartment details modal */
.apt-modal{
  position: fixed; inset: 0; z-index: 200; display: none;
  align-items: center; justify-content: center; padding: 24px;
}
.apt-modal.open{ display: flex; }
.apt-modal-overlay{ position: absolute; inset: 0; background: rgba(15,18,21,0.6); }
.apt-modal-panel{
  position: relative; background: #fff; max-width: 780px; width: 100%;
  max-height: 88vh; overflow-y: auto; border-radius: var(--radius);
  box-shadow: 0 20px 60px rgba(0,0,0,0.3);
}
.apt-modal-close{
  position: sticky; top: 16px; float: right; margin: 16px 16px 0 0;
  width: 36px; height: 36px; border-radius: 50%; border: none; cursor: pointer;
  background: rgba(28,33,38,0.06); font-size: 20px; line-height: 1; color: var(--ink);
  display: flex; align-items: center; justify-content: center; z-index: 1;
}
.apt-modal-close:hover{ background: rgba(28,33,38,0.12); }
.apt-modal-body{ padding: 12px 40px 40px; display: flex; flex-direction: column; gap: 20px; }
.apt-modal-body h3{ font-size: 24px; margin-top: 8px; }
.apt-modal-body p{ font-size: 14px; line-height: 1.7; color: var(--ink-soft); }
.apt-modal-amenities{ display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.apt-modal-amenities-title{
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted);
  font-weight: 700; margin-bottom: 10px;
}
.apt-modal-amenities ul{ list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.apt-modal-amenities li{
  font-size: 14px; color: var(--ink);
  display: flex; align-items: center; gap: 10px;
}
.apt-modal-amenities li svg{ flex: none; width: 26px; height: 26px; color: var(--accent); }
.apt-modal-gallery{ display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; }
.apt-modal-thumb{ border: none; padding: 0; cursor: pointer; height: 100px; overflow: hidden; border-radius: var(--radius); }
.apt-modal-thumb img{ width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.apt-modal-thumb:hover img{ transform: scale(1.08); }
.apt-modal-body .btn{ align-self: flex-start; }

/* Amenities */
.amenities-grid{
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px;
  background: var(--line); border: 1px solid var(--line);
}
.amenity{
  background: var(--bg); padding: 24px 20px; font-size: 14px; font-weight: 500;
  display: flex; align-items: center; gap: 12px;
}
.amenity svg{ flex: none; width: 27px; height: 27px; color: var(--accent); }

/* Activities */
.activities-section{ background: var(--dark); color: var(--on-dark); }
.activities-section .section-title{ color: var(--on-dark); }
.activities-grid{
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px;
  background: rgba(244,245,246,0.1);
}
.activity-card{
  position: relative; display: block; overflow: hidden; aspect-ratio: 3/2;
  background: var(--dark);
}
.activity-card-bg{
  position: absolute; inset: 0; background-size: cover; background-position: center;
  transition: transform .5s ease;
}
.activity-card:hover .activity-card-bg{ transform: scale(1.04); }
.activity-card-overlay{
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(10,12,14,0.97) 0%, rgba(10,12,14,0.82) 40%, rgba(10,12,14,0.25) 75%, transparent 100%);
}
.activity-card-content{ position: absolute; left: 0; right: 0; bottom: 0; padding: 24px; }
.activity-card-num{ font-size: 26px; font-weight: 700; color: rgba(244,245,246,0.65); line-height: 1; margin-bottom: 6px; text-shadow: 0 1px 8px rgba(0,0,0,0.7); }
.activity-card-content h3{ font-size: 18px; color: var(--on-dark); margin-bottom: 6px; text-shadow: 0 1px 6px rgba(0,0,0,0.5); }
.activity-card-content p{ font-size: 13px; line-height: 1.6; color: rgba(244,245,246,0.85); font-weight: 400; text-shadow: 0 1px 4px rgba(0,0,0,0.5); }
.activity-card-text-wrap{ position: relative; max-height: 41.6px; overflow: hidden; padding-right: 48px; }
.activity-card-text-wrap.expanded{ max-height: 220px; overflow-y: auto; padding-right: 0; }
.activity-card-toggle{
  padding: 0; border: none; background: none; cursor: pointer;
  font-size: 13px; font-weight: 700; letter-spacing: 0.03em; color: var(--on-dark);
  text-decoration: underline; text-underline-offset: 2px; text-shadow: 0 1px 4px rgba(0,0,0,0.5);
  position: absolute; right: 0; bottom: 0; line-height: 1.6;
}
.activity-card-text-wrap.expanded .activity-card-toggle{ position: static; display: block; margin-top: 8px; }
.activity-card-toggle:hover{ color: rgba(244,245,246,0.75); }
.activity-card-toggle[hidden]{ display: none; }

/* Location */
.location-grid{ display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 56px; align-items: center; }
.location-text{ display: flex; flex-direction: column; gap: 16px; }
.location-text h2{ font-size: 28px; line-height: 1.3; }
.location-text p{ font-size: 15px; line-height: 1.8; color: var(--ink-soft); }
.location-facts{
  display: flex; flex-direction: column; gap: 8px; margin-top: 6px; font-size: 14px;
  list-style: disc; padding-left: 20px;
}
.location-media img, .location-media iframe{
  height: 340px; width: 100%; object-fit: cover; border-radius: var(--radius); border: 0;
}

/* Gallery */
.gallery-grid{ display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; }
.gallery-grid a{ display: block; height: 220px; overflow: hidden; position: relative; }
.gallery-grid img{ width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.gallery-grid a:hover img{ transform: scale(1.06); }
.gallery-grid.collapsed{ overflow: hidden; max-height: 668px; }
.gallery-more{ display: flex; justify-content: center; margin-top: 8px; }

.lightbox{
  position: fixed; inset: 0; z-index: 200; background: rgba(15,18,21,0.94);
  display: none; align-items: center; justify-content: center; padding: 40px;
}
.lightbox.open{ display: flex; }
.lightbox img{ max-width: 100%; max-height: 86vh; border-radius: var(--radius); }
.lightbox-close, .lightbox-prev, .lightbox-next{
  position: absolute; border: none; background: rgba(244,245,246,0.1); color: #fff;
  cursor: pointer; width: 44px; height: 44px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; font-size: 20px;
}
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{ background: rgba(244,245,246,0.22); }
.lightbox-close{ top: 20px; right: 20px; }
.lightbox-prev{ left: 20px; top: 50%; transform: translateY(-50%); }
.lightbox-next{ right: 20px; top: 50%; transform: translateY(-50%); }

/* FAQ */
.faq-list{ display: flex; flex-direction: column; border-top: 1px solid var(--line); max-width: 820px; margin: 0 auto; }
.faq-item{ border-bottom: 1px solid var(--line); }
.faq-q{
  width: 100%; text-align: left; background: transparent; border: none; cursor: pointer;
  padding: 22px 4px; display: flex; align-items: center; justify-content: space-between;
  font-size: 15px; font-weight: 500; color: var(--ink); gap: 20px;
}
.faq-q .plus{ flex: none; width: 20px; height: 20px; position: relative; }
.faq-q .plus::before, .faq-q .plus::after{
  content: ""; position: absolute; background: var(--ink); top: 50%; left: 50%;
  transform: translate(-50%,-50%); transition: transform .2s ease, opacity .2s ease;
}
.faq-q .plus::before{ width: 14px; height: 2px; }
.faq-q .plus::after{ width: 2px; height: 14px; }
.faq-item.open .faq-q .plus::after{ opacity: 0; transform: translate(-50%,-50%) rotate(90deg); }
.faq-a{ max-height: 0; overflow: hidden; transition: max-height .25s ease; }
.faq-a-inner{ padding: 0 4px 22px; font-size: 14px; line-height: 1.8; color: var(--ink-soft); max-width: 680px; }

/* Contact */
.contact-section{ background: #fff; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.contact-grid{ display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 56px; }
.contact-info{ display: flex; flex-direction: column; gap: 22px; }
.contact-info h2{ font-size: 28px; }
.contact-info p{ font-size: 14px; line-height: 1.8; color: var(--ink-soft); }
.contact-detail{ display: flex; flex-direction: column; gap: 4px; font-size: 14px; }
.contact-detail span:first-child{ color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; font-weight: 700; }
.field{ display: flex; flex-direction: column; gap: 6px; }
.field label{ font-size: 12px; font-weight: 600; color: var(--ink-soft); }
.field input, .field textarea, .field select{
  border: 1px solid var(--line-strong); border-radius: var(--radius);
  padding: 12px 13px; font-size: 14px; width: 100%; background: #fff; color: var(--ink);
}
.field input:focus, .field textarea:focus, .field select:focus{
  outline: none; border-color: var(--accent);
}
.field-row{ display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
form{ display: flex; flex-direction: column; gap: 16px; }
.form-note{ font-size: 12px; color: var(--muted); }
.form-message{
  padding: 14px 16px; border-radius: var(--radius); font-size: 14px; margin-bottom: 4px;
}
.form-message.success{ background: #e5f1e7; color: #24593a; }
.form-message.error{ background: #f6e4e2; color: #8a2f22; }

/* Footer */
.site-footer{ background: var(--dark); color: var(--on-dark); padding: 64px 0 40px; }
.footer-grid{ display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 40px; }
.footer-brand{ display: flex; flex-direction: column; gap: 12px; }
.footer-brand .logo{ color: var(--on-dark); }
.footer-brand p{ font-size: 13px; line-height: 1.7; color: var(--on-dark-soft); max-width: 320px; }
.footer-social{ display: flex; gap: 12px; margin-top: 4px; }
.footer-social a{
  display: flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border-radius: 50%;
  background: rgba(244,245,246,0.08); color: var(--on-dark-soft);
  transition: background 0.15s ease, color 0.15s ease;
}
.footer-social a:hover{ background: var(--accent); color: var(--on-dark); }
.footer-social svg{ width: 18px; height: 18px; }
.footer-col{ display: flex; flex-direction: column; gap: 10px; font-size: 13px; color: rgba(244,245,246,0.8); }
.footer-col-title{ color: var(--on-dark-faint); text-transform: uppercase; letter-spacing: 0.12em; font-size: 11px; margin-bottom: 4px; font-weight: 700; }
.footer-bottom{
  margin-top: 40px; padding-top: 24px; border-top: 1px solid rgba(244,245,246,0.12);
  font-size: 12px; color: var(--on-dark-faint);
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 10px;
  text-align: center;
}
.footer-credit a{ color: var(--on-dark-soft); text-decoration: underline; text-underline-offset: 2px; }
.footer-credit a:hover{ color: var(--on-dark); }
.footer-social{ display: flex; gap: 12px; margin-top: 4px; }
.footer-social a{ width: 34px; height: 34px; border-radius: 50%; border: 1px solid rgba(244,245,246,0.25); display: flex; align-items: center; justify-content: center; }
.footer-social a:hover{ background: rgba(244,245,246,0.1); }

/* ---------------- Page hero (inner pages) ---------------- */
.page-hero{ padding: 64px 0 40px; display: flex; flex-direction: column; gap: 8px; }
.page-hero h1{ font-size: 34px; }

/* ---------------- Booking / Prices page ---------------- */
.price-cards-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: 32px; align-items: stretch; }
.price-card{ display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); }
.price-card-media{ height: 320px; overflow: hidden; }
.price-card-media img{ width: 100%; height: 100%; object-fit: cover; }
.price-card-body{ padding: 32px; display: flex; flex-direction: column; gap: 14px; flex: 1; }
.price-card-body h3{ font-size: 22px; }
.price-card-body p{ font-size: 14px; line-height: 1.7; color: var(--ink-soft); }
.price-card-body .btn{ margin-top: auto; align-self: flex-start; }
.price-card-body .price-rate{ font-size: 26px; font-weight: 600; color: var(--ink); }
.price-card-body .price-rate span{ font-size: 14px; font-weight: 400; color: var(--ink-soft); }
.price-card-body .price-special{ margin-top: -8px; font-size: 13px; font-weight: 500; color: var(--ink); }
.price-special-note{ margin: -4px 0 0; color: var(--ink-soft); }

.rules-grid{ display: grid; grid-template-columns: repeat(5, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.rule{ background: #fff; padding: 24px 22px; display: flex; flex-direction: column; gap: 8px; }
.rule .rule-label{ font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); font-weight: 700; }
.rule .rule-value{ font-size: 15px; font-weight: 500; }
.rule .rule-sub{ font-size: 13px; color: var(--ink-soft); line-height: 1.6; }

.booking-panel{
  background: #fff; border: 1px solid var(--line); padding: 32px; max-width: 720px; margin: 0 auto;
  display: flex; flex-direction: column; gap: 18px;
}
.guest-stepper{ display: flex; align-items: center; justify-content: space-between; padding: 12px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.guest-stepper .controls{ display: flex; align-items: center; gap: 12px; }
.guest-stepper button{
  width: 28px; height: 28px; border-radius: 2px; border: 1px solid var(--line-strong);
  background: transparent; cursor: pointer; font-size: 15px; line-height: 1;
}

/* Price estimator */
.price-box{
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  background: var(--bg); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 16px 18px;
}
.price-box-label{ font-size: 13px; color: var(--ink-soft); line-height: 1.5; }
.price-box-amount{ font-size: 22px; font-weight: 600; color: var(--ink); white-space: nowrap; }

/* Availability check */
.btn-check-avail{ width: 100%; }
.avail-result{
  border-left: 3px solid var(--accent); background: rgba(56,80,107,0.06);
  border-radius: var(--radius); padding: 12px 16px; font-size: 13px; line-height: 1.6; color: var(--ink-soft);
}
.avail-result.success{ border-left-color: #2f7d4f; background: #e5f1e7; color: #24593a; }
.avail-result.error{ border-left-color: #8a2f22; background: #f6e4e2; color: #8a2f22; }

/* Booking details lock */
.booking-details{ display: flex; flex-direction: column; gap: 16px; transition: opacity .25s ease; }
.booking-details.step-locked{ opacity: .45; pointer-events: none; }
.details-lock-note{ display: none; }
.booking-details.step-locked .details-lock-note{ display: block; }
.btn:disabled{ opacity: .5; cursor: not-allowed; }

.confirm-box{
  max-width: 560px; margin: 40px auto 0; text-align: center; display: flex;
  flex-direction: column; align-items: center; gap: 16px;
}
.confirm-check{
  width: 52px; height: 52px; background: var(--accent); color: var(--on-dark);
  display: flex; align-items: center; justify-content: center; font-size: 24px; border-radius: 50%;
}

/* ---------------- Utilities ---------------- */
.hidden{ display: none !important; }
.stack{ display: flex; flex-direction: column; }

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 980px){
  .container{ padding: 0 24px; }
  .site-header{ padding: 10px 20px; }
  .logo img{ height: 44px; }
  .nav-center, .header-actions{ display: none; }
  .main-nav{
    display: flex;
    position: fixed; top: 65px; left: 0; right: 0; bottom: 0;
    background: var(--bg); flex-direction: column; align-items: stretch;
    gap: 0; padding: 8px 24px 24px; transform: translateY(-8px);
    opacity: 0; pointer-events: none; transition: opacity .18s ease, transform .18s ease;
    overflow-y: auto;
  }
  .main-nav.open{ opacity: 1; pointer-events: auto; transform: translateY(0); }
  .main-nav a{ padding: 16px 0; border-bottom: 1px solid var(--line); opacity: 1; font-size: 15px; }
  .main-nav .lang-switch{ align-self: flex-start; margin: 16px 0; }
  .main-nav .btn{ margin-top: 8px; }
  .nav-toggle{ display: flex; }
  .whatsapp-fab{ display: flex; }
  .hero-panel:first-child, .hero-panel:last-child{ display: none; }
  .hero-panel img{ object-position: center 25%; }

  .hero-content h1{ font-size: 34px; }
  .hero-content p{ font-size: 15px; }
  section{ padding: 64px 0; }

  .intro-grid, .location-grid, .price-cards-grid, .contact-grid{ grid-template-columns: 1fr; gap: 32px; }
  .intro-media img{ height: 260px; order: -1; }
  .location-media{ order: -1; }

  .apartments-grid{ grid-template-columns: 1fr; }
  .amenities-grid{ grid-template-columns: 1fr 1fr; }
  .activities-grid{ grid-template-columns: 1fr 1fr; }
  .activity-card{ aspect-ratio: 4/3; }
  .gallery-grid{ grid-template-columns: repeat(2, 1fr); }
  .rules-grid{ grid-template-columns: 1fr 1fr; }
  .footer-grid{ grid-template-columns: 1fr; gap: 32px; }
  .field-row{ grid-template-columns: 1fr; }

  .apt-modal-amenities{ grid-template-columns: 1fr; gap: 20px; }
  .apt-modal-gallery{ grid-template-columns: repeat(3, 1fr); }
  .apt-modal-body{ padding: 8px 20px 28px; }
}

@media (max-width: 560px){
  .container{ padding: 0 18px; }
  .hero-content h1{ font-size: 28px; }
  .hero-actions{ flex-direction: column; width: 100%; }
  .hero-actions .btn{ width: 100%; }
  .amenities-grid{ grid-template-columns: 1fr; }
  .activities-grid{ grid-template-columns: 1fr; }
  .activity-card{ aspect-ratio: 3/2; }
  .gallery-grid{ grid-template-columns: repeat(2, 1fr); }
  .gallery-grid a{ height: 160px; }
  .gallery-grid.collapsed{ max-height: 488px; }
  .rules-grid{ grid-template-columns: 1fr; }
  .section-title{ font-size: 24px; }
  .booking-panel{ padding: 22px; }
  .lightbox{ padding: 16px; }
  .lightbox-prev, .lightbox-next{ width: 38px; height: 38px; }
  .apt-modal-gallery{ grid-template-columns: repeat(2, 1fr); }
  .apt-modal{ padding: 12px; }
  .apt-actions{ flex-direction: column; }
  .apt-actions .btn{ width: 100%; }
  .apt-modal-body .btn{
    align-self: stretch; width: 100%;
    padding: 14px 12px; font-size: 12px; letter-spacing: 0.02em;
  }
}
