/* Hamanako's continuous motion, adapted to Inawashiro's three scenes. */
html.lenis { scroll-behavior: auto !important; }
.enhanced .journey { height: 340svh; }
.enhanced .scene { transition: none; }
.enhanced .scene, .enhanced .scene.is-active { opacity: var(--scene-opacity, 0); }
.enhanced .scene.is-active { --scene-opacity: 1; }
.enhanced .scene .scene-media { transition: none; transform: none; }
.enhanced .hero-typography, .enhanced .chapter-copy, .enhanced .scene-aside,
.enhanced .film-open, .enhanced .reserve-disc { opacity: var(--copy-opacity, 1); }
@media (max-width: 680px) {
  .enhanced .journey { height: 300svh; }
}
/* Hero: direct link to the booking engine plan list */
.hero-plan-direct { display: inline-flex; vertical-align: middle; align-items: center; justify-content: center; margin: 14px 0 0 22px; min-height: 48px; padding: 10px 28px; background: var(--ember); color: #fff; border: 1px solid #ffffff55; text-decoration: none; font-size: 15px; font-weight: 700; letter-spacing: .08em; line-height: 1.4; box-shadow: 0 6px 20px #00000040; }
.hero-plan-direct:hover { background: var(--ember-d); }
@media (max-width: 680px) {
  .hero-plan-direct { display: flex; width: fit-content; margin: 14px 0 0; min-height: 44px; padding: 8px 14px; font-size: 14px; letter-spacing: .04em; }
}
@media (max-width: 680px) and (max-height: 740px) {
  .hero-typography .hero-copy { margin-top: 12px; }
  .hero-typography .hero-plan-index { margin-top: 10px; }
  .hero-plan-direct { margin-top: 10px; min-height: 42px; }
}
@media (min-width: 681px) and (max-height: 820px) {
  .hero-typography h1 { font-size: 40px; font-size: min(4.5vw, 6vh); line-height: 1.4; }
  .hero-typography .hero-copy { margin-top: 12px; line-height: 1.85; }
  .hero-typography .hero-plan-index { margin-top: 10px; }
  .hero-plan-direct { min-height: 32px; padding: 3px 18px; font-size: 13px; margin: 10px 0 0 18px; }
}

/* Winter album: enough end space for the last card to snap to the same start. */
.album-track { padding-right: 0; }
.album-track::after { content: ''; flex: 0 0 max(0px, calc(100% - 505px)); }

/* Reserve enough reading space near the fixed booking entry. This does not
   replace intersection-based visibility control for arbitrary scroll stops. */
html { scroll-padding-bottom: calc(100px + env(safe-area-inset-bottom)); }
.practical { padding-bottom: calc(110px + env(safe-area-inset-bottom)); }
.album { padding-bottom: calc(100px + env(safe-area-inset-bottom)); }
/* Plans and membership hide the floating button (continuous.js), so they keep their own spacing; phones need less. */
@media (max-width: 680px) { .practical, .album { padding-bottom: calc(72px + env(safe-area-inset-bottom)); } }
.plan-link, .member-register, .faq details, .album-item {
  scroll-margin-bottom: calc(100px + env(safe-area-inset-bottom));
}

/* Keep the family at the left of the closing photograph clear of the CTA. */
@media (min-width: 1001px) {
  .finale-content { width: min(46%, 600px); margin-left: auto; margin-right: 6%; }
  .finale h2 { font-size: clamp(36px, 3.5vw, 50px); }
}
@media (max-width: 1000px) {
  .album-track::after { flex-basis: max(0px, calc(100% - 415px)); }
  /* A separate photo area preserves the family on narrow screens. */
  .finale { height: auto; display: flex; flex-direction: column; background: var(--ink); }
  .finale > img { position: relative; height: clamp(260px, 55vw, 420px); object-position: 25% 75%; filter: brightness(.8); }
  .finale-content { padding: 32px 0 40px; }
}
@media (max-width: 680px) {
  .album-track { clip-path: inset(0 0 0 25px); }
  .album-track::after { flex-basis: max(0px, calc(20% - 18px)); }
  .album-item > span { font-size: 20px; letter-spacing: 0; }
}
