/* Page door (P6): the arch <-> hero move. door.js sets --bv-* (boxes of the arch A and the hero H in viewport px, the clip paths c0 = arch, c1 = hero,
   the start transform of the hero photo) and html[data-door="f"] (forward, arch -> hero) or "b" (back, hero -> arch).
   The group fills the viewport, the pair is clipped, the hero photo is placed at its own box and only scales/translates: the crop never swaps. 0.7 s, back 0.61 s. */
@keyframes bv-d-clip{from{clip-path:var(--bv-c0)}to{clip-path:var(--bv-c1)}}
@keyframes bv-d-h{from{transform:translate(var(--bv-tx),var(--bv-ty)) scale(var(--bv-k))}to{transform:none}}
@keyframes bv-d-hop{0%{opacity:0}35%{opacity:1}100%{opacity:1}}
@keyframes bv-d-aop{0%{opacity:1}35%{opacity:0}100%{opacity:0}}
html[data-door]::view-transition-group(door){animation:none;transform:none;width:100%;height:100%}
html[data-door]::view-transition-image-pair(door){animation:bv-d-clip 700ms cubic-bezier(.76,0,.24,1) both}
html[data-door]::view-transition-old(door),html[data-door]::view-transition-new(door){animation:none;mix-blend-mode:normal;object-fit:fill;max-width:none;transform-origin:0 0}
/* the hero side (new going forward, old going back) and the arch side */
html[data-door=f]::view-transition-new(door),html[data-door=b]::view-transition-old(door){position:absolute;inset:auto;left:var(--bv-hx);top:var(--bv-hy);width:var(--bv-hw);height:var(--bv-hh);animation:bv-d-h 700ms cubic-bezier(.76,0,.24,1) both,bv-d-hop 700ms linear both}
html[data-door=f]::view-transition-old(door),html[data-door=b]::view-transition-new(door){position:absolute;inset:auto;left:var(--bv-ax);top:var(--bv-ay);width:var(--bv-aw);height:var(--bv-ah);animation:bv-d-aop 700ms linear both}
html[data-door=b]::view-transition-image-pair(door),html[data-door=b]::view-transition-old(door),html[data-door=b]::view-transition-new(door){animation-direction:reverse;animation-duration:610ms}
/* the page around it: the old page leaves and the new one arrives while the move runs; the hero layers that sit on the photo (name, house cut-out, scrims) arrive at the end */
html[data-door]::view-transition-old(root){animation:-ua-view-transition-fade-out 450ms linear both}
html[data-door]::view-transition-new(root){animation:-ua-view-transition-fade-in 450ms linear both}
html[data-door=f] .bv-hero__nm{animation:bv-name-in 600ms 450ms var(--ease,cubic-bezier(.22,1,.36,1)) backwards}
html[data-door=f] :is(.bv-hero__house,.bv-hero__vz,.bv-hero__sc,.bv-hero__blue,.bv-hero__bsc){animation:bv-name-in 350ms 520ms var(--ease,cubic-bezier(.22,1,.36,1)) backwards}
@keyframes bv-name-in{from{opacity:0}to{opacity:1}}
