/* One photographic breath: open on arrival, approach gently, release slowly.
   The image moves inside its frame; copy and control geometry stay still. */
[data-image-breath]{--photo-scale:1;--photo-open:1.012;--photo-near:1.035;--photo-release:950ms;--photo-ease:cubic-bezier(.22,1,.36,1)}
[data-image-breath=hero]{--photo-open:1.006;--photo-near:1.018}
[data-image-breath=self]{--photo-open:1.006;--photo-near:1.018}
[data-image-breath][data-breath-visible=true]{--photo-scale:var(--photo-open)}
[data-image-breath][data-breath-near=true],[data-image-breath]:focus-within{--photo-scale:var(--photo-near)}
.breath-image{scale:var(--photo-scale,1);transform-origin:center;transition:scale var(--photo-release,950ms) var(--photo-ease,ease)}
[data-breath-near=true] .breath-image{transition-duration:620ms}
.waiheke-photo{overflow:hidden;min-width:0;position:relative}
.waiheke .breath-image{transition:opacity var(--fresh-settle,480ms) var(--fresh-quiet,ease),transform var(--fresh-release,760ms) var(--fresh-quiet,ease),scale 950ms var(--photo-ease)}
.waiheke[data-fresh-state=shown] .waiheke-image.breath-image{transition:opacity var(--fresh-settle) var(--fresh-quiet),transform var(--fresh-release) var(--fresh-quiet),scale 950ms var(--photo-ease)}
.waiheke[data-fresh-state=immediate] .waiheke-image.breath-image{transition:scale 950ms var(--photo-ease)}
.destination-image.breath-image{transition:opacity 1250ms cubic-bezier(.33,0,.2,1),scale 950ms var(--photo-ease)}

/* Source begins to open before contact. Actual selection retains its existing
   editorial and colour response. Wā's shared photographic coordinates are untouched. */
.pathway[data-image-breath] .pathway-aperture{transform:scale(1);transition:transform 900ms var(--photo-ease)}
.pathway[data-image-breath][data-breath-near=true] .pathway-aperture{transform:scale(1.035);transition-duration:620ms}
.pathway[data-image-breath][data-present=true] .pathway-aperture{transform:scale(1.065);transition-duration:550ms}
.tw-source:not([data-intent=wa]) .pathway[data-breath-near=true]:not([data-present=true]) .pathway-aperture>img{opacity:.86;transition-duration:550ms}
.tw-source:not([data-intent=wa]) .pathway[data-breath-near=true]:not([data-present=true]) .pathway-mist{opacity:.21;transition-duration:550ms}
.tw-source[data-intent=wa] .pathway[data-image-breath] .pathway-aperture{transform:scale(1)}

/* Booking photographs share the same response; itinerary controls keep their behaviour. */
.arrival-photo[data-image-breath],.tour-photo[data-image-breath]{overflow:hidden}
.tour-photo .breath-image{transform:none;transition:scale 850ms var(--photo-ease),opacity 450ms var(--photo-ease)}
.tour>summary:is(:hover,:focus-visible) .tour-photo,.tour[open] .tour-photo{--photo-scale:1.035}
.tour>summary:is(:hover,:focus-visible) .tour-photo .breath-image,.tour[open] .tour-photo .breath-image{transform:none}
@media(prefers-reduced-motion:reduce){
 .breath-image{scale:1!important;transition:none!important}
 .pathway[data-image-breath] .pathway-aperture{transform:none!important;transition:none!important}
}
html[data-motion=reduce] .breath-image{scale:1!important;transition:none!important}
html[data-motion=reduce] .pathway[data-image-breath] .pathway-aperture{transform:none!important;transition:none!important}

/* Selected landscape details settle once; do not combine with proximity scaling. */
img[data-editorial-scenic=true]{scale:1!important}

/* Slow arrival belongs to the frame; quick Source acknowledgement stays inside.
   Documentary images and the rotating hero never acquire a second zoom. */
[data-reveal=image] .breath-image{scale:1!important}
.pathway[href]{text-decoration:none}
.pathway-pending{font-size:15px;line-height:1.7;display:inline-flex;min-height:48px;align-items:center}
a.detail-availability{min-height:44px;margin-top:-24px;margin-bottom:10px;text-decoration:none;transform-origin:left center;transition:transform 420ms cubic-bezier(.22,1,.36,1),color 180ms ease}
.tw-source[data-intent=ahi] .detail-availability,
.detail-availability:is(:hover,:focus-visible){transform:scale(1.028);color:#825040}
.detail-availability:is(:hover,:focus-visible){text-decoration:underline;text-underline-offset:5px}
.pathway[href]:focus-visible,.detail-availability:focus-visible{outline:2px solid currentColor;outline-offset:6px}
@media(max-width:900px){a.detail-availability{margin-top:-11px;margin-bottom:4px}}
@media(prefers-reduced-motion:reduce){a.detail-availability{transform:none!important;transition:none}}
html[data-motion=reduce] a.detail-availability{transform:none!important;transition:none}
