
.type-hero { height:100svh; min-height:570px; overflow:hidden; background:var(--bg); color:var(--text); }
.type-hero canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.type-hero .hero-note { position: absolute; bottom: 28px; left: 3vw; font: 11px/1.6 monospace; text-transform: uppercase; }
.type-hero .down { position:absolute;right:3vw;bottom:28px;font:12px monospace;border-bottom:1px solid;padding:10px 0; }
.type-hero .down svg { display:inline-block; width:14px; height:14px; margin-left:5px; vertical-align:-2px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
@media(max-width:640px) {
.type-hero .hero-note {left:16px;font-size:9px;}
.type-hero .down {right:16px;font-size:10px;bottom:33px;}
}

/* Keep the homepage sections compact and the work carousel centered. */
main > .work { margin-top: 0; padding-top: clamp(28px, 5svh, 48px); padding-bottom: 40px; scroll-margin-top:0; }
.work .section-heading { margin-bottom:clamp(28px, 5svh, 48px); }
.work .carousel-shell { width:100%; }
@media(min-width:641px) {
  .work .carousel-shell { width:min(94%,1060px); margin-inline:auto; }
}
.work .record img { width:min(100%,max(140px,calc(100svh - 250px))); height:auto; max-height:none; aspect-ratio:1 / 1; margin-inline:auto; object-fit:cover; }
.closing-page { margin-top:0; }
.type-hero canvas { touch-action:pan-y pinch-zoom; }
@media(max-width:640px){
  .type-hero { min-height:420px; }
  main > .work { padding-top:28px; padding-bottom:64px; }
  .work .section-heading { flex-direction:column; align-items:center; gap:16px; margin-bottom:44px; }
  .work-heading { font-size:clamp(2.25rem,7vw,2.8rem); text-align:center; }
  .work .carousel-controls { align-self:center; }
  .work .record-meta { padding-top:12px; }
  .work .record img { width:min(100%,max(140px,calc(100svh - 250px))); height:auto; max-height:none; aspect-ratio:1 / 1; margin-inline:auto; }
  .type-hero .hero-note { bottom:max(24px, env(safe-area-inset-bottom)); }
  .type-hero .down { bottom:max(19px, env(safe-area-inset-bottom)); }
}
 .booking-contact { display:flex; align-items:center; gap:20px; margin-top:16px; justify-self:start; }
.booking { grid-template-columns:minmax(180px,.7fr) minmax(0,1.3fr); align-items:center; gap:clamp(32px,7vw,100px); }
.booking-portrait { display:block; width:100%; max-width:270px; height:auto; justify-self:start; }
.booking-copy h2 { color:var(--text); margin-bottom:28px; }
@media(max-width:640px) {
  .booking { grid-template-columns:1fr; gap:28px; }
  .booking-portrait { width:120px; }
  .booking-copy h2 { margin-bottom:20px; }
}
.booking-contact .booking-socials { margin-left:-12px; justify-content:flex-start; }
.booking-contact .hero-email { width:44px; height:44px; }

/* One flexible closing view: names, contact, footer. */
.closing-page { min-height:100svh; min-height:100dvh; }
.closing-page > .credits { padding-top:clamp(16px,3vh,32px); }
.closing-page > .booking { grid-template-columns:1fr; padding:clamp(20px,4vh,48px) 0; text-align:left; justify-items:stretch; }
.closing-page .booking-portrait { max-width:min(300px,29vh); justify-self:center; }
.closing-page .booking-copy { text-align:center; margin:0; justify-self:center; }
.closing-page .booking-copy h2 { text-align:center; margin-bottom:20px; }
.closing-page .booking-copy h2 span { display:block; }
.closing-page .booking-contact { width:100%; justify-content:center; }
.closing-page .booking-contact .booking-socials { justify-content:center; margin-left:0; }
.closing-page > .site-footer { padding-top:20px; padding-bottom:24px; }
@media(min-width:641px) and (prefers-reduced-motion:no-preference) {
  .type-hero canvas { animation: hero-letter-art-enter 1.1s cubic-bezier(.22,1,.36,1) both; }
}
@keyframes hero-letter-art-enter {
  from { opacity:0; transform:translateY(24px); }
  to { opacity:1; transform:translateY(0); }
}
@media(max-width:640px) {
  .closing-page { min-height:100svh; min-height:100dvh; }
  .closing-page .booking-portrait { display:none; }
  .closing-page > .booking { gap:16px; padding:16px 0; }
  .closing-page .booking-copy { order:1; }
  .closing-page .booking-copy { text-align:center; }
  .closing-page .booking-copy h2 { text-align:center; margin-bottom:12px; }
  .closing-page .booking-copy h2 span { display:block; }
  .closing-page .booking-contact { width:100%; justify-content:center; }
  .closing-page .booking-contact .booking-socials { justify-content:center; }
}

.home-accessible-title { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }

/* Three native document snap destinations; oversized sections remain scrollable. */
html.homepage-snap { scroll-snap-type:y mandatory; scroll-padding-top:0; }
.homepage-snap .type-hero,
.homepage-snap main > .work,
.homepage-snap .closing-page { scroll-snap-align:start; scroll-snap-stop:always; }
.homepage-snap .type-hero { height:100svh; min-height:0; }
.homepage-snap main > .work {
  min-height:100svh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding-block:clamp(24px,4svh,48px);
}
.homepage-snap .work .carousel-shell { flex:0 0 auto; }
/* The final section must fill the expanded Safari viewport too; otherwise
   the document ends before its top can reach the snap position. */
.homepage-snap .closing-page { min-height:100svh; min-height:100dvh; }
.homepage-snap:has(.artist-dialog[open]) { scroll-snap-type:none; }
@media(max-width:640px) {
  .homepage-snap .work .section-heading { margin-bottom:24px; }
  .homepage-snap .work .record img { width:min(100%,max(140px,calc(100svh - 250px))); height:auto; max-height:none; aspect-ratio:1 / 1; margin-inline:auto; }
}
@media(prefers-reduced-motion:reduce) {
  html.homepage-snap { scroll-behavior:auto; }
}

@media (prefers-reduced-motion: reduce) {
  .homepage-snap .booking { opacity:1; visibility:visible; transform:none; transition:none; }
}

/* A reachable end target keeps tall closing content accessible in short WebKit windows. */
@media (max-height: 500px) {
  .homepage-snap .site-footer { scroll-snap-align: end; }
}

/* Native touch momentum and section snapping share one browser-controlled timeline. */
@media (pointer: coarse) {
  html.homepage-snap { scroll-behavior: auto; }
}

@media (max-width: 640px) {
  .homepage-snap main.shared-mobile-ribbon > .work {
    min-height:calc(100svh - var(--shared-ribbon-height, 132px));
    padding-block:20px;
  }
  .homepage-snap .shared-mobile-ribbon .work .record img {
    width:min(100%,max(120px,calc(100svh - var(--shared-ribbon-height, 132px) - 230px)));
  }
  .homepage-snap main.shared-mobile-ribbon > .credits {
    position:sticky;
    top:0;
    z-index:4;
    order:3;
    flex:none;
    padding:12px 0;
    background:var(--bg);
  }
  .homepage-snap .shared-mobile-ribbon .closing-page {
    order:4;
    min-height:calc(100svh - var(--shared-ribbon-height, 132px));
    min-height:calc(100dvh - var(--shared-ribbon-height, 132px));
    scroll-margin-top:var(--shared-ribbon-height, 132px);
  }
}
