.gallery-page {
  overflow: clip;
}

.gallery-page .section {
  padding-block: var(--space-20);
}

.gallery-page .gallery-hero__grid,
.gallery-page .gallery-room__grid,
.gallery-page .gallery-detail__grid,
.gallery-page .gallery-progress__grid,
.gallery-page .gallery-lounge__grid,
.gallery-page .gallery-restaurant__grid,
.gallery-page .gallery-close__grid {
  display: grid;
  width: 100%;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--space-6);
}

.gallery-page .gallery-hero__copy { grid-column: 1 / span 5; min-width: 0; align-self: center; }
.gallery-page .gallery-hero__figure { grid-column: 7 / span 6; min-width: 0; margin: 0; }
.gallery-page .gallery-hero__figure img { width: 100%; aspect-ratio: 16 / 10; object-position: 58% center; }
.gallery-page figcaption { padding: var(--space-3) var(--space-4); color: var(--color-text-muted); font-size: var(--text-14); line-height: var(--leading-utility); }
.gallery-page .gallery-hero__copy > :last-child { margin-bottom: 0; }
.gallery-page .gallery-hero__copy > p:not(.eyebrow) { max-width: 54ch; }
.gallery-page .gallery-hero__rule,
.gallery-page .gallery-section-rule { display: block; width: 3rem; height: 2px; margin: 0 0 var(--space-4); background: var(--color-accent); }
.gallery-page .gallery-hero__actions { display: flex; min-width: 0; flex-wrap: wrap; gap: var(--space-4); margin-bottom: var(--space-6); }
.gallery-page .gallery-hero__actions > a { display: inline-flex; min-width: 0; min-height: 2.75rem; align-items: center; }
.gallery-page .gallery-hero__cues { display: grid; grid-template-columns: 1fr; gap: var(--space-3); padding-top: var(--space-4); border-top: 1px solid var(--color-border); }
.gallery-page .gallery-hero__cue { display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: var(--space-3); min-width: 0; }
.gallery-page .gallery-hero__cue span { color: var(--color-primary); font-family: var(--font-heading); font-size: var(--text-14); font-weight: 600; font-variant-numeric: tabular-nums; }
.gallery-page .gallery-hero__cue p { margin: 0; }

.gallery-page .gallery-room__lead { grid-column: 1 / span 8; min-width: 0; }
.gallery-page .gallery-room__lead > p:not(.eyebrow) { max-width: 66ch; }
.gallery-page .gallery-room__facts { display: grid; grid-column: 9 / span 4; grid-template-columns: 1fr; align-content: start; gap: var(--space-3); min-width: 0; }
.gallery-page .gallery-room__cards { display: grid; grid-column: 1 / span 8; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-6); min-width: 0; }
.gallery-page .gallery-info-card { min-width: 0; gap: var(--space-4); }
.gallery-page .gallery-info-card > * { margin: 0; }
.gallery-page .gallery-info-card__head { display: flex; min-width: 0; align-items: flex-start; gap: var(--space-3); }
.gallery-page .gallery-info-card__head > * { min-width: 0; }
.gallery-page .gallery-info-card__head h3 { margin: 0; font-size: var(--text-24); }

.gallery-page .gallery-detail__text { grid-column: 1 / span 5; min-width: 0; align-self: start; }
.gallery-page .gallery-detail__text > p:not(.eyebrow) { max-width: 50ch; }
.gallery-page .gallery-detail__figure { grid-column: 7 / span 6; min-width: 0; margin: 0; align-self: start; }
.gallery-page .gallery-detail__figure img { width: 100%; aspect-ratio: 4 / 3; }
.gallery-page .gallery-detail__notes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); min-width: 0; }
.gallery-page .gallery-note { min-width: 0; gap: var(--space-3); padding: var(--space-4); }
.gallery-page .gallery-note > * { margin: 0; }
.gallery-page .gallery-note h3 { font-size: var(--text-18); }

.gallery-page .gallery-image-trigger { position: relative; display: block; width: 100%; min-height: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--color-text); }
.gallery-page .gallery-image-trigger:hover { background: transparent; box-shadow: none; transform: none; }
.gallery-page .gallery-image-trigger img { display: block; width: 100%; }
.gallery-page .gallery-image-trigger span { position: absolute; right: var(--space-3); bottom: var(--space-3); min-height: 2rem; padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); background: rgba(23, 33, 43, 0.88); color: #fff; font-family: var(--font-heading); font-size: var(--text-12); line-height: var(--leading-compact); opacity: 0; transition: opacity var(--transition-fast); }
.gallery-page .gallery-image-trigger:hover span,
.gallery-page .gallery-image-trigger:focus-visible span { opacity: 1; }

.gallery-page .gallery-progress__scene { grid-column: 1 / span 7; min-width: 0; }
.gallery-page .gallery-progress__figure { margin: 0 0 var(--space-4); }
.gallery-page .gallery-progress__figure img { width: 100%; aspect-ratio: 16 / 10; object-position: center center; }
.gallery-page .gallery-progress__caption { max-width: 64ch; }
.gallery-page .gallery-progress__rail { display: flex; grid-column: 9 / span 4; min-width: 0; flex-direction: column; gap: var(--space-4); }
.gallery-page .gallery-progress__rail > * { min-width: 0; }
.gallery-page .gallery-progress__note { max-width: 50ch; margin: 0; padding-top: var(--space-4); border-top: 1px solid var(--color-border-subtle); color: var(--color-text-muted); font-size: var(--text-14); line-height: var(--leading-utility); }

.gallery-page .gallery-occasions__intro { width: 66.6667%; min-width: 0; }
.gallery-page .gallery-occasions__intro > p:not(.eyebrow) { max-width: 66ch; }
.gallery-page .gallery-occasions__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); min-width: 0; }
.gallery-page .gallery-occasion { min-width: 0; border-top: 3px solid var(--color-accent); gap: var(--space-4); }
.gallery-page .gallery-occasion > * { margin: 0; }
.gallery-page .gallery-occasion h3 { font-size: var(--text-24); }
.gallery-page .gallery-occasion .button--tertiary { align-self: flex-start; }
.gallery-page .gallery-occasions__bridge { width: 66.6667%; max-width: 66ch; margin: var(--space-6) 0 0; }

.gallery-page .gallery-lounge__text { grid-column: 1 / span 5; min-width: 0; }
.gallery-page .gallery-lounge__text > p:not(.eyebrow) { max-width: 54ch; }
.gallery-page .gallery-lounge__figure { grid-column: 7 / span 6; min-width: 0; margin: 0; }
.gallery-page .gallery-lounge__figure img { width: 100%; aspect-ratio: 16 / 10; object-position: 60% center; }
.gallery-page .gallery-lounge__notes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); min-width: 0; }

.gallery-page .gallery-guide__intro { width: 58.3333%; min-width: 0; }
.gallery-page .gallery-guide__modules { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); min-width: 0; }
.gallery-page .gallery-guide__module { min-width: 0; padding-top: var(--space-4); border-top: 1px solid var(--color-accent); }
.gallery-page .gallery-guide__module > * { min-width: 0; }
.gallery-page .gallery-guide__module > span { display: block; margin-bottom: var(--space-3); color: var(--color-primary); font-family: var(--font-heading); font-size: var(--text-24); font-weight: 600; font-variant-numeric: tabular-nums; }
.gallery-page .gallery-guide__module h3 { font-size: var(--text-24); }
.gallery-page .gallery-guide__callout { display: flex; width: 50%; min-width: 0; flex-direction: column; align-items: flex-start; gap: var(--space-4); margin-top: var(--space-8); padding: var(--space-6); border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-accent-tint); }
.gallery-page .gallery-guide__callout > * { margin: 0; }
.gallery-page .gallery-guide__callout p { max-width: 52ch; }
.gallery-page .gallery-guide__actions { display: flex; min-width: 0; flex-wrap: wrap; gap: var(--space-4); }
.gallery-page .gallery-guide__actions > * { min-width: 0; }

.gallery-page .gallery-restaurant__figure { grid-column: 1 / span 5; min-width: 0; margin: 0; }
.gallery-page .gallery-restaurant__figure img { width: 100%; aspect-ratio: 3 / 2; }
.gallery-page .gallery-restaurant__copy { grid-column: 7 / span 5; min-width: 0; }
.gallery-page .gallery-restaurant__copy > p:not(.eyebrow) { max-width: 52ch; }
.gallery-page .gallery-restaurant__plan { display: flex; min-width: 0; flex-direction: column; gap: var(--space-3); margin-top: var(--space-6); padding: var(--space-4); border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-accent-tint); }
.gallery-page .gallery-restaurant__plan > * { margin: 0; }
.gallery-page .gallery-restaurant__plan h3 { font-size: var(--text-18); }
.gallery-page .gallery-restaurant__plan p { max-width: 44ch; }

.gallery-page .gallery-reference__intro { width: 50%; min-width: 0; }
.gallery-page .gallery-reference__modules { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); min-width: 0; }
.gallery-page .gallery-reference__module { min-width: 0; gap: var(--space-4); }
.gallery-page .gallery-reference__module > * { margin: 0; }
.gallery-page .gallery-reference__module h3 { font-size: var(--text-18); }
.gallery-page .gallery-reference__module .button { align-self: flex-start; }
.gallery-page .gallery-reference__module--age { background: var(--color-accent-tint); }
.gallery-page .gallery-reference__age { display: inline-flex; width: 2.5rem; height: 2.5rem; align-items: center; justify-content: center; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-primary); font-family: var(--font-heading); font-weight: 600; }

.gallery-page .gallery-close { padding-top: var(--space-12); }
.gallery-page .gallery-close__panel { display: flex; grid-column: 3 / span 8; min-width: 0; flex-direction: column; align-items: center; gap: var(--space-4); padding: var(--space-12); border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); text-align: center; }
.gallery-page .gallery-close__panel > * { margin: 0; }
.gallery-page .gallery-close__rule { width: 3rem; height: 3px; background: var(--color-accent); }
.gallery-page .gallery-close__panel p { max-width: 52ch; margin-inline: auto; }
.gallery-page .gallery-close__actions { display: flex; min-width: 0; flex-wrap: wrap; justify-content: center; gap: var(--space-4); }
.gallery-page .gallery-close__actions > * { min-width: 0; }

.gallery-page .gallery-dialog { width: min(94vw, 72rem); max-width: none; padding: 0; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); box-shadow: var(--shadow-panel); }
.gallery-page .gallery-dialog::backdrop { background: rgba(23, 33, 43, 0.78); }
.gallery-page .gallery-dialog__inner { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-4); padding: var(--space-4); }
.gallery-page .gallery-dialog__close { justify-self: end; }
.gallery-page .gallery-dialog__image { width: 100%; max-height: 72vh; object-fit: contain; background: var(--color-page); }
.gallery-page .gallery-dialog__caption { margin: 0; color: var(--color-text-secondary); }

@media (max-width: 63.9375rem) {
  .gallery-page .gallery-room__lead { grid-column: 1 / span 8; }
  .gallery-page .gallery-room__facts { grid-column: 1 / -1; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gallery-page .gallery-room__cards { grid-column: 1 / span 8; }
  .gallery-page .gallery-occasions__intro { width: 75%; }
  .gallery-page .gallery-occasions__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gallery-page .gallery-occasions__bridge { width: 75%; }
  .gallery-page .gallery-guide__modules { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gallery-page .gallery-guide__callout { width: 66.6667%; }
  .gallery-page .gallery-reference__modules { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 56.1875rem) {
  .gallery-page .gallery-hero__grid,
  .gallery-page .gallery-room__grid,
  .gallery-page .gallery-detail__grid,
  .gallery-page .gallery-progress__grid,
  .gallery-page .gallery-lounge__grid,
  .gallery-page .gallery-restaurant__grid,
  .gallery-page .gallery-close__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .gallery-page .gallery-hero__copy,
  .gallery-page .gallery-hero__figure,
  .gallery-page .gallery-room__lead,
  .gallery-page .gallery-room__facts,
  .gallery-page .gallery-room__cards,
  .gallery-page .gallery-detail__text,
  .gallery-page .gallery-detail__figure,
  .gallery-page .gallery-progress__scene,
  .gallery-page .gallery-progress__rail,
  .gallery-page .gallery-lounge__text,
  .gallery-page .gallery-lounge__figure,
  .gallery-page .gallery-restaurant__figure,
  .gallery-page .gallery-restaurant__copy { grid-column: 1 / -1; }
  .gallery-page .gallery-hero__copy { order: 1; }
  .gallery-page .gallery-hero__figure { order: 2; }
  .gallery-page .gallery-room__lead { order: 1; }
  .gallery-page .gallery-room__facts { order: 2; }
  .gallery-page .gallery-room__cards { order: 3; }
  .gallery-page .gallery-detail__text { order: 1; }
  .gallery-page .gallery-detail__figure { order: 2; }
  .gallery-page .gallery-progress__scene { order: 1; }
  .gallery-page .gallery-progress__rail { order: 2; }
  .gallery-page .gallery-lounge__text { order: 1; }
  .gallery-page .gallery-lounge__figure { order: 2; }
  .gallery-page .gallery-restaurant__copy { order: 1; }
  .gallery-page .gallery-restaurant__figure { order: 2; }
  .gallery-page .gallery-hero__copy > p:not(.eyebrow),
  .gallery-page .gallery-room__lead > p:not(.eyebrow),
  .gallery-page .gallery-detail__text > p:not(.eyebrow),
  .gallery-page .gallery-lounge__text > p:not(.eyebrow),
  .gallery-page .gallery-restaurant__copy > p:not(.eyebrow),
  .gallery-page .gallery-progress__caption { max-width: none; }
  .gallery-page .gallery-progress__rail { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gallery-page .gallery-progress__note { grid-column: 1 / -1; max-width: none; }
  .gallery-page .gallery-occasions__intro,
  .gallery-page .gallery-occasions__bridge,
  .gallery-page .gallery-guide__intro,
  .gallery-page .gallery-reference__intro { width: 100%; }
  .gallery-page .gallery-close__panel { grid-column: 1 / -1; }
}

@media (max-width: 42.4375rem) {
  .gallery-page .section { padding-block: var(--space-16); }
  .gallery-page .gallery-hero__grid,
  .gallery-page .gallery-room__grid,
  .gallery-page .gallery-detail__grid,
  .gallery-page .gallery-progress__grid,
  .gallery-page .gallery-lounge__grid,
  .gallery-page .gallery-restaurant__grid,
  .gallery-page .gallery-close__grid { gap: var(--space-4); }
  .gallery-page h1 { font-size: clamp(2.25rem, 10vw, 2.5rem); }
  .gallery-page h2 { font-size: 2rem; }
  .gallery-page .gallery-room__facts,
  .gallery-page .gallery-room__cards,
  .gallery-page .gallery-detail__notes,
  .gallery-page .gallery-progress__rail,
  .gallery-page .gallery-occasions__cards,
  .gallery-page .gallery-guide__modules,
  .gallery-page .gallery-lounge__notes,
  .gallery-page .gallery-reference__modules { grid-template-columns: 1fr; }
  .gallery-page .gallery-info-card,
  .gallery-page .gallery-occasion,
  .gallery-page .gallery-reference__module { padding: 1.25rem; }
  .gallery-page .gallery-note { padding: 1.25rem; }
  .gallery-page .gallery-guide__callout { width: 100%; padding: 1.25rem; }
  .gallery-page .gallery-guide__actions,
  .gallery-page .gallery-close__actions { width: 100%; flex-direction: column; }
  .gallery-page .gallery-guide__actions > .button,
  .gallery-page .gallery-close__actions > .button { width: 100%; }
  .gallery-page .gallery-close__panel { padding: var(--space-6); }
  .gallery-page .gallery-hero__actions { flex-direction: column; align-items: flex-start; gap: var(--space-2); }
  .gallery-page .gallery-image-trigger span { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .gallery-page .gallery-image-trigger span { transition: none; }
  .gallery-page .card--interactive:hover { transform: none; }
}
