/* BRASA — the booking chapter and the last full-viewport frame. */

.book {
  position: relative;
  padding-block: clamp(5rem, 13vh, 9rem);
  overflow: hidden;
}
.book__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
  gap: clamp(1.6rem, 5vw, 5rem);
  align-items: end;
}
.book__copy { display: grid; gap: 1.3rem; align-content: start; }
.book__actions { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: .6rem; }

.book__hours {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--rule);
  font-size: var(--t-small);
}
.book__hours div {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: .7rem 0;
  border-bottom: 1px solid var(--rule);
  letter-spacing: .08em;
  text-transform: uppercase;
}
.book__hours dt { color: var(--muted); }
.book__hours dd { font-weight: 600; }

/* --- visit ------------------------------------------------------------- */
.visit { padding-block: clamp(4rem, 11vh, 8rem); }
.visit__grid {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  gap: clamp(1.6rem, 5vw, 5rem);
  align-items: start;
}
.visit__facts { display: grid; gap: 1.6rem; }
.visit__facts h3 {
  font-size: var(--t-label);
  letter-spacing: var(--track-label);
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: .4rem;
  font-weight: 600;
}
.visit__facts p { font-size: var(--t-lede); }
.visit__links { display: flex; flex-wrap: wrap; gap: .7rem; }

.visit__map {
  position: relative;
  aspect-ratio: 16 / 11;
  border-radius: var(--r-lg);
  overflow: hidden;
  border: 1px solid var(--rule);
  background:
    radial-gradient(120% 90% at 30% 20%, rgba(233, 79, 29, .12), transparent 60%),
    var(--black);
  display: grid;
  place-content: center;
  text-align: center;
  gap: .6rem;
  padding: 2rem;
}
.visit__map::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(var(--cream-14) 1px, transparent 1px),
    linear-gradient(90deg, var(--cream-14) 1px, transparent 1px);
  background-size: 46px 46px;
  mask-image: radial-gradient(70% 70% at 50% 50%, #000, transparent);
  opacity: .55;
}
.visit__pin {
  position: relative;
  justify-self: center;
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--ember);
  box-shadow: 0 0 0 0 rgba(255, 106, 36, .5);
  animation: pin-pulse 2.6s ease-out infinite;
}
@keyframes pin-pulse {
  70%  { box-shadow: 0 0 0 26px rgba(255, 106, 36, 0); }
  100% { box-shadow: 0 0 0 0 rgba(255, 106, 36, 0); }
}
.visit__map p { position: relative; }

/* --- social grid ------------------------------------------------------- */
.social { padding-block: clamp(4rem, 11vh, 8rem); }
.social__head {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: clamp(1.6rem, 3vw, 2.6rem);
}
.social__grid {
  /* Multi-column masonry: the tiles keep their own proportions and pack with
     no leftover holes, which a fixed row/column span grid cannot promise once
     the aspect ratios differ. */
  columns: 3;
  column-gap: clamp(.6rem, 1.2vw, 1rem);
}
.social__grid .frame {
  height: auto;
  margin-bottom: clamp(.6rem, 1.2vw, 1rem);
  border-radius: var(--r-sm);
  break-inside: avoid;
}
.social__grid img { width: 100%; height: auto; }

/* --- final frame ------------------------------------------------------- */
.final {
  position: relative;
  min-height: 100svh;
  display: grid;
  align-content: center;
  justify-items: center;
  text-align: center;
  overflow: hidden;
  padding: calc(var(--header-h) + 3rem) var(--gutter) 3rem;
}
.final__media { position: absolute; inset: -8% 0; z-index: 0; }
.final__media img { width: 100%; height: 100%; object-fit: cover; }
.final__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(11, 9, 8, .74), rgba(11, 9, 8, .42) 45%, rgba(11, 9, 8, .92));
}
.final__inner { position: relative; z-index: 1; display: grid; justify-items: center; gap: 1.6rem; }
.final__title {
  font-family: var(--font-display);
  font-size: var(--t-mega);
  line-height: var(--lh-mega);
  letter-spacing: var(--track-mega);
  text-transform: uppercase;
  color: var(--cream);
}
.final__place {
  font-size: var(--t-label);
  letter-spacing: .4em;
  text-transform: uppercase;
  color: var(--cream-72);
}

@media (max-width: 900px) {
  .book__grid, .visit__grid { grid-template-columns: 1fr; }
  .social__grid { columns: 2; }
}
