.brand-logo {
  flex-direction: row;
  align-items: center;
  gap: 14px;
}

.brand-logo > img {
  width: 92px;
  height: 92px;
  border-radius: 2px;
  object-fit: contain;
  box-shadow: 0 3px 14px rgba(32, 36, 31, .14);
}

.brand-copy {
  display: flex;
  flex-direction: column;
}

.site-header {
  height: 112px;
}

.gallery-last {
  position: relative;
}

.gallery-last a {
  display: block;
  height: 100%;
}

.gallery-all {
  position: absolute;
  right: 18px;
  bottom: 18px;
  padding: 11px 16px;
  background: rgba(251, 249, 244, .96);
  color: var(--forest);
  font-size: .86rem;
  font-weight: 750;
  box-shadow: 0 5px 20px rgba(20, 25, 18, .2);
}

.gallery-page {
  padding: 76px clamp(18px, 5vw, 76px) 110px;
}

.gallery-intro {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 7vw;
  align-items: end;
  margin-bottom: 55px;
}

.gallery-intro h1 {
  margin-bottom: 0;
  color: var(--forest);
  font-size: clamp(3rem, 6vw, 5.6rem);
}

.gallery-intro p:last-child {
  max-width: 620px;
  margin-bottom: 8px;
  color: #626357;
  font-size: 1.08rem;
}

.photo-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.photo-grid figure {
  position: relative;
  min-height: 290px;
  margin: 0;
  overflow: hidden;
  background: #ddd7ca;
}

.photo-grid figure:nth-child(8n + 1),
.photo-grid figure:nth-child(8n + 6) {
  grid-column: span 2;
}

.photo-grid a {
  display: block;
  height: 100%;
}

.photo-grid img {
  width: 100%;
  height: 100%;
  min-height: 290px;
  object-fit: cover;
  transition: transform .45s ease, filter .45s ease;
}

.photo-grid a:hover img,
.photo-grid a:focus img {
  transform: scale(1.025);
  filter: brightness(.9);
}

.photo-grid figcaption {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 38px 16px 13px;
  background: linear-gradient(transparent, rgba(20, 24, 19, .72));
  color: white;
  font-size: .82rem;
  pointer-events: none;
}

.gallery-booking {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  margin-top: 60px;
  padding: 42px clamp(24px, 5vw, 60px);
  background: var(--forest);
  color: white;
}

.gallery-booking h2 {
  margin-bottom: 8px;
  font-size: clamp(2rem, 3.5vw, 3.2rem);
}

.gallery-booking p {
  margin-bottom: 0;
  color: #d7d8d0;
}

.availability {
  padding: 0 clamp(24px, 8vw, 130px) 105px;
}

.availability-heading {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: 7vw;
  align-items: end;
  margin-bottom: 40px;
}

.availability-heading h2 {
  margin-bottom: 0;
}

.availability-heading > p {
  max-width: 620px;
  margin-bottom: 8px;
  color: #626357;
  font-size: 1.05rem;
}

.calendar-shell {
  padding: clamp(18px, 3vw, 38px);
  overflow-x: auto;
  background: white;
  border: 1px solid var(--line);
  box-shadow: 0 12px 38px rgba(32, 36, 31, .08);
}

.calendarWidget,
.calendarContent {
  min-width: 0;
  width: 100%;
}

.calendar-key { margin-bottom: 24px; color: #373c32; }
.calendar-key h3 { margin: 0 0 14px; font-size: 1.15rem; }
.calendar-key-items { display: flex; flex-wrap: wrap; gap: 14px 24px; list-style: none; margin: 0; padding: 0; }
.calendar-key-items li { display: flex; align-items: center; gap: 10px; font-size: 1rem; line-height: 1.5; }
.calendar-key-swatch { display: inline-block; flex: 0 0 28px; width: 28px; height: 28px; border: 1px solid #85877f; background: #f9f9f9; }
.calendar-key-booked { background: #ffbfbf; }
.calendar-key-arrival { background: linear-gradient(to right bottom, #f9f9f9 50%, #ffbfbf 50%); }
.calendar-key-departure { background: linear-gradient(to right bottom, #ffbfbf 50%, #f9f9f9 50%); }
.calendar-key-today { border: 2px solid #2de4e5; }
.calendar-key p { margin: 16px 0 0; max-width: 76ch; font-size: 1rem; line-height: 1.65; }

.booking-embed {
  scroll-margin-top: 130px;
  margin-top: 42px;
  padding: clamp(22px, 4vw, 48px);
  background: white;
  border: 1px solid var(--line);
  box-shadow: 0 12px 38px rgba(32, 36, 31, .08);
}

.booking-embed-heading {
  max-width: 720px;
  margin-bottom: 30px;
}

.booking-embed-heading h2 {
  margin-bottom: 12px;
}

.booking-embed-heading > p:last-child,
.booking-fallback {
  color: #626357;
}

.guest-questions {
  max-width: 1240px;
  margin: 0 auto;
  padding: 64px 28px;
}
.guest-questions-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  gap: 20px 36px;
  margin-top: 28px;
}
.guest-questions h3 { font-size: 1.15rem; margin-bottom: 10px; }
.guest-questions p { line-height: 1.7; }
.guest-questions a { text-decoration: underline; text-underline-offset: 3px; }

#apartmentIframeAll {
  width: 100%;
  min-width: 0;
}

#apartmentIframeAll iframe {
  display: block;
  max-width: 100%;
  border: 0;
}

@media (max-width: 900px) {
  .brand-logo > img { width: 76px; height: 76px; }
  .site-header { height: 94px; }
  .gallery-intro { grid-template-columns: 1fr; gap: 18px; }
  .availability-heading { grid-template-columns: 1fr; gap: 12px; }
  .photo-grid { grid-template-columns: 1fr 1fr; }
  .photo-grid figure:nth-child(8n + 1),
  .photo-grid figure:nth-child(8n + 6) { grid-column: auto; }
}

@media (max-width: 600px) {
  .brand-logo { gap: 8px; }
  .brand-logo > img { width: 58px; height: 58px; }
  .brand-copy { display: none; }
  .site-header { height: 74px; }
  .photo-grid { grid-template-columns: 1fr; }
  .photo-grid figure, .photo-grid img { min-height: 260px; }
  .gallery-page { padding-top: 54px; }
  .availability { padding: 0 14px 76px; }
  .calendar-shell { padding: 10px; }
  .booking-embed { margin-top: 24px; padding: 18px 12px; }
  .gallery-booking { align-items: flex-start; flex-direction: column; }
  .gallery-booking .button { width: 100%; }
}
