/* V40 layout is the foundation. These additions are limited to photo surfaces. */
#photos .photo-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
#photos .photo-button { min-width:0; display:flex; flex-direction:column; }
#photos .photo-button img { width:100%; aspect-ratio:3/2; object-fit:cover; }
#photos .photo-button span { flex:1; font-size:.9375rem; }
#photos .photo-button:first-child { grid-column:1/-1; }
#photos .photo-button:first-child img { aspect-ratio:2.1/1; object-fit:contain; background:var(--ink); }
.corrective-rooms { border-top:1px solid var(--line); }
.corrective-rooms .section-lede { max-width:680px; }
.corrective-room-pair { margin-top:2.5rem; }
.corrective-room-pair h3 { margin:0 0 .75rem; font-family:var(--serif); font-weight:400; font-size:2rem; }
.corrective-room-pair > p { color:var(--ink-soft); margin:0 0 1.5rem; max-width:640px; }
.corrective-rooms .corrective-room-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.25rem; }
.corrective-room-grid .photo-button { display:flex; flex-direction:column; min-width:0; }
.corrective-room-grid .photo-button img { width:100%; aspect-ratio:3/2; object-fit:cover; }
.corrective-room-grid .photo-button span { flex:1; font-size:.9375rem; }
@media (max-width:900px) { #photos .photo-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:620px) {
 #photos .photo-grid, .corrective-rooms .corrective-room-grid { grid-template-columns:minmax(0,1fr); }
 #photos .photo-button:first-child img { aspect-ratio:auto; }
 .corrective-room-pair { margin-top:2rem; }
}

/* Complementary aerials inside the existing location treatment. */
.corrective-location-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; max-width:1160px; margin:0 auto 2rem; }
.corrective-location-grid .photo-button { display:flex; flex-direction:column; min-width:0; }
.corrective-location-grid .photo-button img { width:100%; aspect-ratio:3/2; object-fit:cover; }
.corrective-location-grid .photo-button span { flex:1; font-size:.9375rem; }
@media(max-width:620px) { .corrective-location-grid { grid-template-columns:minmax(0,1fr); } }

/* One continuous instance of the same accepted photograph through the booking area. */
.hero { overflow:hidden; }
.hero > .hero-picture, .hero > .hero-shade { height:100%; }
.hero-scene { overflow:visible; }
.hero-booking-backdrop { position:relative; z-index:2; padding:.5rem clamp(.75rem,3vw,2.5rem) 2.5rem; }

/* Natural lead photographs and flexible full rows replace dark side framing. */
#photos .photo-grid { display:flex; flex-wrap:wrap; align-items:stretch; gap:1rem; }
#photos .photo-button { flex:1 1 calc(33.333% - 1rem); margin:0; }
#photos .photo-button:first-child { flex-basis:100%; }
#photos .photo-button:first-child img { aspect-ratio:auto; object-fit:cover; background:transparent; }
#photos .photo-grid[data-category="Water activities"] .photo-button { flex-basis:calc(50% - 1rem); }
#photos .photo-grid[data-category="Water activities"] .photo-button:first-child { flex-basis:100%; }
#photos .photo-grid[data-category="Fitness & guest gear"] .photo-button { flex-basis:calc(50% - 1rem); }
#photos .photo-grid[data-category="Fitness & guest gear"] .photo-button img { aspect-ratio:auto; }
#photos .photo-grid[data-category="Kitchen"], #photos .photo-grid[data-category="Bathrooms"] { display:block; columns:2; }
#photos .photo-grid[data-category="Kitchen"] .photo-button, #photos .photo-grid[data-category="Bathrooms"] .photo-button { display:inline-flex; margin-bottom:1rem; width:100%; }
#photos .photo-grid[data-category="Kitchen"] img, #photos .photo-grid[data-category="Bathrooms"] img { aspect-ratio:auto; }
#photos .section-heading h2 { max-width:900px; font-size:clamp(2.6rem,4.4vw,4rem); }

/* Every review row is filled; long reviews retain their authentic full text. */
.reviews-grid { align-items:stretch; }
.reviews-grid .last-unpaired { grid-column:1/-1; }
.association-rule { padding:1.15rem 0; border-bottom:1px solid var(--line); }
.association-rule h3 { margin:0 0 .65rem; font:400 1.25rem/1.3 var(--serif); }
.rules-list .association-rule p { margin:0 0 .65rem; font-size:.94rem; }
.rules-list .association-rule p:last-child { margin-bottom:0; }
.detail-gallery.activity-story, .detail-gallery.fitness-story { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.8rem; columns:auto; }
.detail-gallery.activity-story .photo-button, .detail-gallery.fitness-story .photo-button { display:flex; flex-direction:column; margin:0; min-width:0; }
.detail-gallery.activity-story .photo-button:first-child { grid-column:1/-1; }
.detail-gallery.activity-story img { aspect-ratio:3/2; object-fit:cover; }
.detail-gallery.activity-story .photo-button:first-child img, .detail-gallery.fitness-story img { aspect-ratio:auto; }
.detail-gallery.activity-story span, .detail-gallery.fitness-story span { flex:1; }
@media(max-width:900px) {
 #photos .photo-button { flex-basis:calc(50% - 1rem); }
}
@media(max-width:620px) {
 .hero-booking-backdrop { padding:.5rem .75rem 1.75rem;  }
 #photos .photo-button, #photos .photo-grid[data-category] .photo-button { flex-basis:100%; }
 #photos .photo-grid[data-category="Kitchen"], #photos .photo-grid[data-category="Bathrooms"] { columns:1; }
 #photos .photo-button img { aspect-ratio:auto; }
 .reviews-grid { grid-template-columns:minmax(0,1fr); gap:1rem; }
 .review-card { padding:1.35rem; }
 .review-meta { display:flex; flex-wrap:wrap; }
 .review-meta strong { font-size:1.25rem; }
 .review-meta span { font-size:.78rem; }
 .review-date { font-size:.76rem; }
 .detail-gallery.activity-story, .detail-gallery.fitness-story { grid-template-columns:minmax(0,1fr); }
 .detail-gallery.activity-story img { aspect-ratio:auto; }
}

/* Micro pass: preserve the embedded map and offer its direct map action. */
.map-open-link { display:inline-flex; margin-top:1rem; padding:.5rem .8rem; border:1px solid var(--line); border-radius:.5rem; color:var(--ink); background:white; font-size:.875rem; font-weight:700; text-decoration:none; box-shadow:0 2px 8px #092f3b20; }
.map-open-link:hover { text-decoration:underline; }

/* Android QA: keep the accepted mobile photo; move its sailboat into the crop. */
@media (max-width:620px) {
 .hero-image { object-position:92% center; }
}

/* Approved waterfront composition: size the mobile photo to the scene, not the calculator. */
@media (max-width:620px) {
 .hero > .hero-picture, .hero > .hero-shade { display:none; }
 .hero > .hero-scene {
  isolation:isolate;
  min-height:560px;
  padding:7rem 1.25rem 1.75rem;
 }
 .hero > .hero-scene::before, .hero > .hero-scene::after {
  content:"";
  position:absolute;
  pointer-events:none;
 }
 .hero > .hero-scene::before {
  top:0;
  left:50%;
  height:117.6724137931%;
  aspect-ratio:2048 / 1365;
  width:auto;
  transform:translateX(-60.05859375%);
  background:url("assets/foshee/sh-2.jpg") center / 100% 100% no-repeat;
  clip-path:inset(0 0 15.0183150183% 0);
  z-index:0;
 }
 .hero > .hero-scene::after {
  inset:0;
  background:linear-gradient(to bottom,rgba(3,29,36,.05) 250px,rgba(3,29,36,.35) 100%),linear-gradient(90deg,rgba(3,29,36,.24),rgba(3,29,36,.14) 50%,transparent);
  z-index:1;
 }
 .hero > .hero-scene > .hero-copy {
  width:100%;
  min-width:0;
  text-shadow:0 1px 4px rgba(3,20,28,.4);
 }
 .hero > .hero-scene #hero-title {
  font-size:clamp(3rem,14vw,3.8rem);
  overflow-wrap:break-word;
 }
}
