/* V7: centered containers, complete photo grids and a tighter vertical rhythm. */
:root { --maxw:1280px; --edge:clamp(20px,4vw,64px); }
.section {padding-block:clamp(40px,5vw,72px);}
.section > * {margin-left:auto;margin-right:auto;}
.section > .room-photo-grid {margin:0 auto;max-width:var(--maxw);width:100%;}
.section > .room-gallery-intro {max-width:68ch;margin:0 auto 24px;text-align:center;}
.sec-head {margin-bottom:clamp(24px,3vw,40px);}
.section-title {line-height:1.12;text-wrap:balance;}
.center-link {margin-top:28px;}
.hero-inner {width:calc(100% - 2 * var(--edge));max-width:var(--maxw);padding-inline:0;}
/* Internal hero copy previously occupied only one half of a two-column grid. */
.page-hero .hero-inner {display:block;text-align:center;padding-top:132px;padding-bottom:48px;}
.page-hero .hero-lead {max-width:960px;margin-inline:auto;}
.page-hero .hero-title {max-width:960px;margin-inline:auto;text-wrap:balance;font-size:clamp(36px,5vw,64px);line-height:1.08;}
.page-hero .hero-desc {max-width:64ch;margin-inline:auto;}
.page-hero .hero-cta {justify-content:center;}
.page-hero .hero-scroll {display:none;}
.hero.page-hero {min-height:480px;}
/* Complete, regular grids take precedence over the original mosaic's nth-child spans. */
.gallery-grid.balanced-gallery {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;gap:16px;}
.balanced-gallery .g-item:nth-child(n) {grid-column:auto;grid-row:auto;height:auto;min-height:0;aspect-ratio:3/2;}
.balanced-gallery .g-frame {overflow:hidden;}
.balanced-gallery .g-meta {opacity:1;transform:none;padding:16px;}
.balanced-gallery .g-item::after {opacity:1;}
.balanced-gallery .g-name {font-size:clamp(15px,1.6vw,21px);line-height:1.2;}
/* Location and final invitation use aligned content with predictable wrapping. */
.location-banner {grid-template-columns:1fr 1fr;margin-top:32px;align-items:stretch;}
.location-banner .img-frame {min-height:300px;}
.location-banner .location-address {padding:clamp(28px,4vw,52px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;}
.location-banner .location-address h3 {font-size:clamp(26px,3vw,38px);max-width:18ch;line-height:1.18;text-wrap:balance;}
.location-address p {max-width:36ch;}
.location-address .link-underline {margin-top:8px;}
.hotel-cta {display:block;padding:clamp(44px,5vw,72px) var(--edge);}
.hotel-cta > .hotel-cta-inner {max-width:var(--maxw);margin:0 auto;display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px;}
.hotel-cta-inner > div:first-child {max-width:900px;}
.hotel-cta h2 {font-size:clamp(32px,4.5vw,58px);line-height:1.12;text-wrap:balance;margin-bottom:16px;}
.hotel-cta p:not(.eyebrow) {max-width:60ch;margin:0 auto;}
.hotel-cta .eyebrow {margin-bottom:16px;}
.hotel-cta-actions {flex-direction:row;flex-wrap:wrap;justify-content:center;min-width:0;gap:12px;}
/* Room galleries are first after the hero; 8 slots form two complete rows. */
.room-detail-page .hero.page-hero {min-height:460px;}
.room-detail-page .page-hero .hero-title {font-size:clamp(32px,4.5vw,58px)!important;max-width:960px;line-height:1.12;}
.room-detail-page .hero-inner {padding-top:124px;padding-bottom:36px;}
.room-detail-page .hero-desc {font-size:16px;margin-bottom:20px;}
.room-detail-page .hero-cta {gap:12px;}
.room-detail-page .room-gallery-section {padding-top:28px;padding-bottom:40px;}
.room-gallery-section .sec-head {display:block;text-align:center;margin-bottom:16px;}
.room-gallery-section .sec-num {display:none;}
.room-gallery-section .eyebrow {margin-bottom:10px;}
.room-gallery-section .section-title {font-size:clamp(28px,3vw,40px);}
.room-detail-page .room-photo-grid {grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.room-photo-grid .g-item {aspect-ratio:3/2;}
.room-photo-grid .g-meta {padding:12px;}
.room-photo-grid .g-name {font-size:14px;}
.room-detail-page #page-content {padding-top:36px;padding-bottom:44px;}
.room-detail-grid {grid-template-columns:1fr 1fr;gap:32px;align-items:start;}
.room-detail-grid .feature-panel {padding:28px;}
.feature-panel h3 {font-size:30px;margin-bottom:18px;}
.room-detail-grid .feature-checks {display:grid;grid-template-columns:1fr 1fr;gap:0 20px;}
.room-detail-grid .feature-checks li {font-size:14px;padding-block:10px;}
.room-specs {margin:20px 0;}
.room-detail-page .hotel-rooms {padding-top:40px;}
/* Balanced amenities cards and introduction. */
.amenities-page .sec-head,.dining-page .sec-head {display:block;text-align:center;}
.amenities-page .sec-num,.dining-page .sec-num {display:none;}
.amenities-page .sec-head .eyebrow,.dining-page .sec-head .eyebrow {margin-bottom:12px;}
.amenities-page .feature-highlight {grid-template-columns:1fr 1fr;gap:40px;}
.amenities-page .feature-highlight-copy {text-align:center;}
.amenities-page .feature-highlight-copy h3 {font-size:clamp(30px,3.3vw,44px);line-height:1.12;}
.amenities-page .feature-highlight-copy p {max-width:46ch;margin-inline:auto;font-size:16px;}
.amenities-page .amenity-cards {margin-top:40px;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 24px;}
.amenities-page .experience-card {text-align:center;}
.amenities-page .experience-card .img-frame {aspect-ratio:3/2;margin-bottom:18px;}
.amenities-page .experience-card h3 {font-size:clamp(23px,2.4vw,30px);line-height:1.15;}
.amenities-page .experience-card p {margin-inline:auto;margin-bottom:0;max-width:38ch;}
.amenities-page .highlight-row {gap:32px;text-align:center;}
.amenities-page .highlight-row > div {padding:24px;}
.amenities-page .highlight-row h3 {font-size:clamp(26px,3vw,36px);text-wrap:balance;}
/* Dining: equally weighted image/text, prominent restaurant actions and photos. */
.dining-page .overview-grid {display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;}
.dining-page .overview-copy {text-align:center;}
.dining-page .overview-copy p {max-width:52ch;margin-left:auto;margin-right:auto;}
.dining-page .overview-grid .img-frame {min-height:0;aspect-ratio:4/3;width:100%;}
.dining-page .dining-interiors {grid-template-columns:repeat(2,minmax(0,1fr));}
.dining-page .dining-interiors .g-item {aspect-ratio:4/3;}
.dining-page .dining-visit {text-align:center;gap:32px;align-items:start;}
.dining-page .dining-visit h3 {font-size:clamp(26px,3vw,36px);line-height:1.15;}
.dining-page .dining-visit p {max-width:48ch;margin-inline:auto;}
.dining-page .hero-media::after {background:linear-gradient(180deg,rgba(15,22,18,.32),rgba(15,22,18,.68));}
/* Anchor targets remain visible below the fixed navigation. */
main [id] {scroll-margin-top:100px;}
@media(max-width:1000px) {
 .room-detail-page .room-photo-grid {grid-template-columns:repeat(2,minmax(0,1fr));}
 .room-detail-grid {grid-template-columns:1fr;gap:24px;}
 .room-detail-grid .feature-checks {grid-template-columns:repeat(3,minmax(0,1fr));}
 .amenities-page .amenity-cards {grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:767px) {
 .section {padding-block:36px;}
 .page-hero .hero-inner {padding-top:112px;padding-bottom:32px;}
 .hero.page-hero,.room-detail-page .hero.page-hero {min-height:0;}
 .room-detail-page .hero-inner {padding-top:108px;padding-bottom:28px;}
 .room-detail-page .hero-desc {font-size:15px;}
 .hero.page-hero .hero-title {font-size:clamp(32px,7vw,46px)!important;}
 .location-banner,.amenities-page .feature-highlight,.dining-page .overview-grid {grid-template-columns:1fr;gap:24px;}
 .location-banner {gap:0;}
 .location-banner .img-frame {min-height:0;aspect-ratio:3/2;}
 .location-banner .location-address {padding:28px 24px;}
 .amenities-page .highlight-row,.dining-page .dining-visit {grid-template-columns:1fr;gap:24px;}
 .amenities-page .highlight-row > div {padding:8px 0;}
 .room-detail-grid .feature-checks {grid-template-columns:1fr 1fr;}
 .room-detail-grid .feature-panel {padding:22px;}
 .room-detail-page .room-photo-grid {gap:10px;}
 .room-photo-grid .g-meta {padding:8px;}
 .room-photo-grid .g-name {font-size:12px;}
 .hotel-cta {padding-block:40px;}
 .hotel-cta-actions {width:100%;}
 .hotel-cta-actions a {min-height:48px;}
}
@media(max-width:640px) {
 .gallery-grid.balanced-gallery {grid-template-columns:1fr;gap:14px;}
 .amenities-page .amenity-cards {grid-template-columns:1fr;gap:30px;margin-top:30px;}
 .dining-page .dining-interiors {grid-template-columns:1fr;}
 .hotel-cta-actions {flex-direction:column;max-width:360px;}
 .hotel-cta-actions a {white-space:normal;}
 .room-detail-page .hero-cta {display:grid;grid-template-columns:1fr;max-width:360px;margin-inline:auto;}
 .room-detail-page .hero-cta a {padding:12px 16px;min-height:44px;}
}
@media(max-width:767px) {
 .hotel-hero .hero-inner {width:100%;padding-inline:var(--edge);}
}
