/**
 * Site-wide alignment & rhythm — header grid, sections, contact, inner pages
 */

.site-header--many-links {
  --header-height: auto;
}

/* Main is not a scrollport (see layout-fixes.css + content-polish.css) */
main#main,
main#page-content {
  overflow: visible;
  max-width: 100%;
}

.site-header--many-links .site-header__inner {
  min-height: unset;
}

/* --------------------------------------------------------------------------
   Header — 11 links: logo + actions on row 1, nav centered on row 2
   -------------------------------------------------------------------------- */
@media (min-width: 768px) {
  .site-header--many-links .site-header__inner {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
    align-items: center;
    gap: 0.35rem var(--space-lg);
    max-width: min(92rem, 100%);
    padding-top: var(--space-sm);
    padding-bottom: var(--space-sm);
  }

  .site-header--many-links .site-header__brand {
    grid-column: 1;
    grid-row: 1;
    justify-self: start;
  }

  .site-header--many-links .site-header__actions {
    grid-column: 2;
    grid-row: 1;
    justify-self: end;
    display: flex;
    flex-wrap: nowrap;
    gap: var(--space-sm);
  }

  .site-header--many-links .site-header__nav {
    grid-column: 1 / -1;
    grid-row: 2;
    flex: none;
    order: unset;
    width: 100%;
    min-width: 0;
    padding-top: 0.15rem;
    border-top: 1px solid rgba(232, 232, 232, 0.65);
  }

  .site-header--many-links .site-header__menu--many {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 0.35rem 0.85rem;
    padding: 0.45rem 0 0;
    margin: 0;
  }

  .site-header--many-links .site-header__menu--many a {
    font-size: 0.625rem;
    letter-spacing: 0.06em;
    padding: 0.15rem 0;
    line-height: 1.35;
  }
}

@media (min-width: 1024px) {
  .site-header--many-links .site-header__inner {
    flex-wrap: unset;
  }

  .site-header--many-links .site-header__menu--many a {
    font-size: 0.6875rem;
    gap: 0.5rem 1rem;
  }
}

/* Don't force single-row header when many links are present */
.site-header--many-links .site-header__inner {
  max-width: min(92rem, 100%);
}

/* --------------------------------------------------------------------------
   Page headers — align with main content width
   -------------------------------------------------------------------------- */
.page-header {
  text-align: center;
}

.page-header__inner {
  max-width: var(--content-max);
  margin-inline: auto;
}

.page-header__lead {
  max-width: 40rem;
  margin-inline: auto;
}

.page-header__actions {
  justify-content: center;
}

/* --------------------------------------------------------------------------
   Contact — balanced columns, single card surface per column
   (Load this sheet last on contact.html so these rules win over 3d-theme.)
   -------------------------------------------------------------------------- */
.page-contact .contact {
  padding: var(--space-2xl) clamp(var(--space-md), 4vw, var(--space-lg)) var(--space-3xl);
}

.page-contact .contact__inner {
  display: grid;
  max-width: var(--content-max);
  margin-inline: auto;
  gap: var(--space-xl);
  align-items: start;
  min-width: 0;
  width: 100%;
  grid-template-columns: minmax(0, 1fr);
}

@media (min-width: 768px) {
  .page-contact .contact__inner {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--space-xl) var(--space-2xl);
  }
}

@media (min-width: 1024px) {
  .page-contact .contact__inner {
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
    gap: var(--space-2xl);
  }
}

.page-contact .contact__aside,
.page-contact .contact__form-wrap {
  min-width: 0;
  max-width: 100%;
}

.page-contact .contact__aside {
  display: flex;
  flex-direction: column;
  gap: var(--space-xl);
}

.page-contact .contact__panel {
  padding: var(--space-xl);
  background: var(--color-surface);
  border: 1px solid var(--color-border-refined);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}

.page-contact .contact__panel--info {
  height: auto;
}

.page-contact .contact__address {
  font-style: normal;
  line-height: 1.65;
  margin: 0;
  color: var(--color-text);
}

.page-contact .contact__channels {
  margin: var(--space-lg) 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--color-text-muted);
}

.page-contact .contact__panel--form,
.page-contact .contact__form-wrap.contact__panel--form.glass-panel {
  padding: var(--space-xl);
  background: var(--color-surface);
  border: 1px solid var(--color-border-refined);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

.page-contact .contact__form-wrap .contact-form--styled {
  padding: 0;
  margin: 0;
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
}

.page-contact .contact-hours {
  padding: var(--space-xl);
  margin: 0;
  background: var(--color-surface);
  border: 1px solid var(--color-border-refined);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}

.page-contact .contact-hours__list {
  margin: 0;
  padding: 0;
}

.page-contact .contact-hours__row {
  display: grid;
  gap: 0.15rem var(--space-md);
  grid-template-columns: minmax(0, 1fr);
  padding-block: var(--space-sm);
  border-bottom: 1px solid var(--color-border-refined);
}

.page-contact .contact-hours__row:last-of-type {
  border-bottom: none;
  padding-bottom: 0;
}

@media (min-width: 480px) {
  .page-contact .contact-hours__row {
    grid-template-columns: minmax(7.5rem, 9rem) minmax(0, 1fr);
    align-items: baseline;
  }
}

.page-contact .contact-hours__day {
  margin: 0;
}

.page-contact .contact-hours__time {
  margin: 0;
  color: var(--color-text);
}

.page-contact .contact-hours__note {
  margin: var(--space-lg) 0 0;
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--color-text-muted);
}

.page-contact .contact__heading {
  margin-bottom: var(--space-md);
}

.page-contact .contact__list li:last-child {
  margin-bottom: 0;
}

.page-contact .contact-form__field {
  min-width: 0;
}

.page-contact .contact-form__field label {
  display: block;
  margin-bottom: var(--space-xs);
  font-weight: 500;
  font-size: 0.9375rem;
  line-height: 1.4;
}

.page-contact .contact-form__field:last-of-type {
  margin-bottom: var(--space-md);
}

.page-contact .contact-form__row {
  display: grid;
  gap: var(--space-md);
  grid-template-columns: minmax(0, 1fr);
}

@media (min-width: 900px) {
  .page-contact .contact-form__row {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--space-lg);
  }
}

.page-contact .contact-form__actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-sm);
  margin-top: var(--space-md);
}

@media (min-width: 480px) {
  .page-contact .contact-form__actions {
    align-items: flex-start;
  }
}

.page-contact .contact-form__fine-print {
  margin: 0;
  font-size: 0.8125rem;
  color: var(--color-text-muted);
  line-height: 1.5;
  max-width: 36rem;
}

.page-contact .contact-form__intro,
.page-contact .contact-form__hint {
  margin: 0;
  font-size: 0.875rem;
  color: var(--color-text-muted);
  line-height: 1.55;
}

.page-contact .contact-form__intro {
  margin-bottom: var(--space-lg);
  max-width: 40rem;
}

.page-contact .contact-form__hint {
  margin-top: var(--space-xs);
  max-width: 36rem;
}

.page-contact .contact-form input,
.page-contact .contact-form textarea {
  max-width: 100%;
  box-sizing: border-box;
}

/* Map — split copy + embed (matches location page rhythm) */
.page-contact .contact-map {
  padding: var(--space-2xl) clamp(var(--space-md), 4vw, var(--space-lg)) var(--space-3xl);
}

.page-contact .contact-map__split {
  display: grid;
  gap: var(--space-xl);
  align-items: start;
  text-align: center;
}

.page-contact .contact-map__copy {
  min-width: 0;
}

.page-contact .contact-map__copy .section-label {
  margin: 0 0 var(--space-sm);
  font-family: var(--font-sans);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--color-champagne);
}

.page-contact .contact-map__copy .contact-map__text {
  margin-inline: auto;
  max-width: 36rem;
}

.page-contact .contact-map__copy .contact-map__address {
  margin-inline: auto;
}

.page-contact .contact-map__embed {
  min-width: 0;
  width: 100%;
}

.page-contact .contact-map__iframe {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  min-height: 16rem;
  height: auto;
}

@media (min-width: 900px) {
  .page-contact .contact-map__split {
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
    gap: var(--space-2xl);
    text-align: left;
  }

  .page-contact .contact-map__copy .contact-map__text,
  .page-contact .contact-map__copy .contact-map__address {
    margin-inline: 0;
    max-width: none;
  }

  .page-contact .contact-map__actions {
    justify-content: flex-start;
  }
}

.page-contact .contact-map__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  justify-content: center;
  margin-top: var(--space-md);
  margin-bottom: 0;
}

/* --------------------------------------------------------------------------
   Section rhythm — centered blocks, consistent horizontal padding
   -------------------------------------------------------------------------- */
main#main > section,
main#page-content > section,
main#page-content > header.page-header {
  box-sizing: border-box;
}

.section-block,
.intro,
.highlights,
.stats-bar,
.awards,
.split-section,
.offers,
.experiences,
.amenities-strip,
.cta-band,
.location-teaser,
.quote-band {
  padding-left: clamp(var(--space-md), 4vw, var(--space-lg));
  padding-right: clamp(var(--space-md), 4vw, var(--space-lg));
}

[class$="__inner"],
[class*="__inner--"] {
  margin-left: auto;
  margin-right: auto;
}

.site-footer__inner {
  max-width: var(--content-max);
  margin-inline: auto;
  padding-inline: var(--space-lg);
}

/* Prevent 3D card children from breaking grid cell sizing */
.card-3d {
  min-width: 0;
}

.card-3d > * {
  max-width: 100%;
}

/* Reveal blocks: reserve space (avoid layout jump) */
.reveal:not(.is-visible) {
  min-height: 0.01px;
}

@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1 !important;
    transform: none !important;
  }
}
