/* Decoded photographic planes; transition wrappers stay flat and independent. */
.home-photography{padding-top:18px;margin-top:24px;isolation:isolate}
.home-photography .piece.rotating-showcase[data-photo-depth]{overflow:visible;background:transparent!important;border:0;box-shadow:none;border-radius:22px;perspective:1500px;max-height:78svh;isolation:isolate;touch-action:pan-y pinch-zoom}
.home-photo-layer{position:absolute;inset:0;display:block;opacity:0;pointer-events:none;transform-origin:50% 55%;transform-style:flat;isolation:isolate}
.home-photo-layer.is-current{opacity:1}
/* Amplify the existing camera inputs without retiming or changing its easing. */
.home-photo-layer[data-photo-motion=enhanced]{--photo-x:calc(var(--photo-input-x,0)*1.45);--photo-y:calc(var(--photo-input-y,0)*1.45);--photo-scroll:calc(var(--photo-input-scroll,0)*1.45)}
.home-photo-layer[hidden]{display:none!important}
.home-photo-flight,.home-photo-depth,.home-photo-room-motion,.home-photo-subject-motion,.home-photo-frame{position:absolute;inset:0;display:block}
.home-photo-flight,.home-photo-room-motion,.home-photo-subject-motion{transform:none}
.home-photo-flight{transform-origin:50% 55%;transform-style:flat}
.home-photo-depth{--photo-camera-distance:1100px;--photo-camera-pitch:calc(var(--photo-y,0)*-7deg + var(--photo-scroll,0)*-6deg);--photo-camera-yaw:calc(var(--photo-x,0)*12deg + var(--photo-scroll,0)*3deg);transform-style:flat;transform:perspective(var(--photo-camera-distance)) rotateX(var(--photo-camera-pitch)) rotateY(var(--photo-camera-yaw))}
.home-photo-frame{clip-path:inset(var(--photo-frame-clip,0px) round 22px);overflow:hidden;background:transparent;transform:none}
.home-photo-subject-motion{z-index:2;opacity:0;pointer-events:none}
.home-photo-layer[data-edge-pop=false] .home-photo-subject-motion{clip-path:inset(var(--photo-frame-clip,0px) round 22px)}
.home-photography [data-photo-depth] .showcase-photo{transition:none!important;animation:none!important;border-radius:0;background:transparent!important;pointer-events:none}
.home-photography [data-photo-depth] .showcase-photo:not(.home-photo-foreground){opacity:1!important;transform-origin:50% 55%;transform:perspective(1400px) translate3d(calc(var(--photo-x,0)*-18px),calc(var(--photo-y,0)*-10px + var(--photo-scroll,0)*-20px),calc(var(--photo-travel,0)*-12px)) rotateY(calc(var(--photo-x,0)*1.8deg)) rotateX(calc(var(--photo-y,0)*-1.2deg + var(--photo-scroll,0)*-.8deg)) scale(calc(1 + var(--photo-travel,0)*.04))!important;filter:none}
.home-photography [data-photo-depth] .home-photo-foreground{opacity:1;z-index:2;background:transparent;clip-path:none;transform:perspective(1200px) translate3d(calc(var(--photo-x,0)*14px*var(--photo-subject-x,1)),calc((var(--photo-y,0)*10px + var(--photo-scroll,0)*20px)*var(--photo-subject-y,1)),calc(var(--photo-travel,0)*10px*var(--photo-subject-x,1)*var(--photo-subject-y,1))) rotateY(calc(var(--photo-x,0)*2deg*var(--photo-subject-x,1))) rotateX(calc(var(--photo-y,0)*-1deg*var(--photo-subject-y,1)));filter:none}
.home-photo-layer[data-plane-kind=structure] .home-photo-foreground{filter:none}
.home-photo-layer[data-cutout=false] .home-photo-frame{border-radius:22px}
.home-photography .photo-link{z-index:6;bottom:22px;right:22px;box-shadow:0 8px 28px #0002}
.home-photo-controls{position:relative;z-index:7;margin-top:18px}
.home-photography [data-photo-state=loading] .showcase-photo,.home-photography [data-photo-state=loading] .home-photo-layer{visibility:hidden}
/* Steady full-frame boundary; the room recedes within it. */
.home-photography [data-photo-depth] .home-photo-layer[data-edge-pop=false] .home-photo-frame{transform:none}
/* Furniture pivots at photographed floor/source contacts. */
.home-photography [data-photo-depth] .home-photo-layer[data-scene-space=true]:not([data-plane-kind=people]) .home-photo-foreground{transform:perspective(1100px) translate3d(calc(var(--photo-x,0)*6px*var(--photo-subject-x,1)*var(--photo-plane-depth,1)),0px,calc(var(--photo-travel,0)*24px*var(--photo-plane-depth,1))) rotateY(calc(var(--photo-x,0)*1.5deg*var(--photo-plane-depth,1))) rotateX(calc((var(--photo-y,0)*-.8deg + var(--photo-scroll,0)*-.8deg)*var(--photo-plane-depth,1)));filter:none}
.home-photography [data-photo-depth] .home-photo-layer[data-scene-space=true] .home-photo-frame>.showcase-photo{transform:perspective(1400px) translate3d(calc(var(--photo-x,0)*-18px),calc(var(--photo-y,0)*-10px + var(--photo-scroll,0)*-20px),calc(var(--photo-travel,0)*-12px)) rotateY(calc(var(--photo-x,0)*2.4deg)) rotateX(calc(var(--photo-y,0)*-1deg + var(--photo-scroll,0)*-.6deg)) scale(calc(1 + var(--photo-travel,0)*.04))!important}
.home-photography [data-photo-depth] .home-photo-layer .home-photo-foreground[data-layer-depth=sign]{transform:perspective(1100px) translate3d(calc(var(--photo-x,0)*5px),calc(var(--photo-y,0)*3px + var(--photo-scroll,0)*6px),0) rotateY(calc(var(--photo-x,0)*.8deg));filter:none}
/* Table settings need exact original scale: the inset supplies the breakout. */
.home-photography [data-photo-depth] .home-photo-foreground[data-layer-depth=edge]{clip-path:inset(var(--photo-frame-clip,0px) round 22px)}
.home-photography [data-photo-depth] .home-photo-layer[data-plane-kind=table] .home-photo-foreground{transform-origin:50% 55%!important}
.home-photography [data-photo-depth] .home-photo-foreground[data-layer-depth=contact-table]{clip-path:inset(var(--photo-contact-clip,0px) round 22px)}
.home-photography [data-photo-depth] .home-photo-foreground[data-layer-depth=room-near]{clip-path:inset(var(--photo-frame-clip,0px) round 22px)}
/* A seated contact pose is one photographed rigid assembly, never a floating hand. */
@media(max-width:700px){
 .home-photography{padding-top:6px}
 .home-photography .rotating-showcase[data-photo-depth]{aspect-ratio:1.1;max-height:none;border-radius:15px;perspective:1000px}
 .home-photo-frame{clip-path:inset(var(--photo-frame-clip,0px) round 15px)}
 .home-photo-layer[data-edge-pop=false] .home-photo-subject-motion{clip-path:inset(var(--photo-frame-clip,0px) round 15px)}
 .home-photography .photo-link{bottom:12px;right:12px;font-size:12px}
 .home-photo-depth{--photo-camera-distance:850px;--photo-camera-pitch:calc(var(--photo-y,0)*-4.5deg + var(--photo-scroll,0)*-4.5deg);--photo-camera-yaw:calc(var(--photo-x,0)*8deg + var(--photo-scroll,0)*2.25deg)}
 .home-photo-controls{margin-top:12px}
 .home-photography [data-photo-depth] .home-photo-foreground{transform:perspective(900px) translate3d(calc(var(--photo-x,0)*8px*var(--photo-subject-x,1)),calc((var(--photo-y,0)*6px + var(--photo-scroll,0)*10px)*var(--photo-subject-y,1)),calc(var(--photo-travel,0)*6px*var(--photo-subject-x,1)*var(--photo-subject-y,1))) rotateY(calc(var(--photo-x,0)*1.2deg*var(--photo-subject-x,1))) rotateX(calc(var(--photo-y,0)*-.6deg*var(--photo-subject-y,1)))}
 .home-photography [data-photo-depth] .showcase-photo:not(.home-photo-foreground){transform:perspective(1000px) translate3d(calc(var(--photo-x,0)*-7px),calc(var(--photo-y,0)*-5px + var(--photo-scroll,0)*-10px),calc(var(--photo-travel,0)*-8px)) rotateY(calc(var(--photo-x,0)*1.2deg)) rotateX(calc(var(--photo-y,0)*-.6deg + var(--photo-scroll,0)*-.4deg)) scale(calc(1 + var(--photo-travel,0)*.05))!important}
 .home-photography [data-photo-depth] .home-photo-layer[data-scene-space=true]:not([data-plane-kind=people]) .home-photo-foreground{transform:perspective(800px) translate3d(calc(var(--photo-x,0)*3px*var(--photo-subject-x,1)*var(--photo-plane-depth,1)),0px,calc(var(--photo-travel,0)*14px*var(--photo-plane-depth,1))) rotateY(calc(var(--photo-x,0)*1deg*var(--photo-plane-depth,1))) rotateX(calc((var(--photo-y,0)*-.6deg + var(--photo-scroll,0)*-.5deg)*var(--photo-plane-depth,1)))}
 .home-photography [data-photo-depth] .home-photo-layer[data-scene-space=true] .home-photo-frame>.showcase-photo{transform:perspective(1000px) translate3d(calc(var(--photo-x,0)*-7px),calc(var(--photo-y,0)*-5px + var(--photo-scroll,0)*-10px),calc(var(--photo-travel,0)*-8px)) rotateY(calc(var(--photo-x,0)*1.4deg)) rotateX(calc(var(--photo-y,0)*-.7deg + var(--photo-scroll,0)*-.4deg)) scale(calc(1 + var(--photo-travel,0)*.05))!important}
 .home-photography [data-photo-depth] .home-photo-layer .home-photo-foreground[data-layer-depth=sign]{transform:perspective(800px) translate3d(calc(var(--photo-x,0)*3px),calc(var(--photo-y,0)*2px + var(--photo-scroll,0)*4px),0) rotateY(calc(var(--photo-x,0)*.5deg))}
 .home-photography [data-photo-depth] .home-photo-foreground[data-layer-depth=edge]{clip-path:inset(var(--photo-frame-clip,0px) round 15px)}
 .home-photography [data-photo-depth] .home-photo-foreground[data-layer-depth=contact-table]{clip-path:inset(var(--photo-contact-clip,0px) round 15px)}
 .home-photography [data-photo-depth] .home-photo-foreground[data-layer-depth=room-near]{clip-path:inset(var(--photo-frame-clip,0px) round 15px)}
 .home-photography .rotating-showcase[data-collection="forma-studio"] .photo-link{top:12px;bottom:auto}
 .home-photography .rotating-showcase[data-collection="alicia-bridal-shower"] .photo-link{top:-16px;bottom:auto}
}
/* Original contact assemblies move together; the cleared room supplies depth. */
.home-photography [data-photo-depth] .home-photo-layer[data-photo-contact=true] .home-photo-frame>.showcase-photo{transform:perspective(1400px) translate3d(calc(var(--photo-x,0)*-12px),calc(var(--photo-y,0)*-6px + var(--photo-scroll,0)*-16px),0) rotateY(calc(var(--photo-x,0)*1.8deg + var(--photo-scroll,0)*-.6deg))!important}
.home-photography [data-photo-depth] .home-photo-layer[data-photo-contact=true] .home-photo-foreground{transform-origin:var(--photo-contact-origin,50% 100%)!important;transform:perspective(1200px) translate3d(calc(var(--photo-x,0)*5px),0,0) rotateY(calc(var(--photo-x,0)*1.5deg + var(--photo-scroll,0)*.7deg))!important}
/* Whole original glasses and plates share one rigid foreground camera. */
.home-photography [data-photo-depth] .home-photo-layer[data-plane-kind=table] .home-photo-frame>.showcase-photo{transform-origin:50% 55%!important;transform:perspective(1400px) translate3d(calc(var(--photo-x,0)*-8px),calc(var(--photo-y,0)*-5px + var(--photo-scroll,0)*-12px),0) rotateY(calc(var(--photo-x,0)*-1deg + var(--photo-scroll,0)*-.5deg))!important}
.home-photography [data-photo-depth] .home-photo-layer[data-plane-kind=table] .home-photo-foreground{transform-origin:50% 55%!important;transform:perspective(1200px) translate3d(calc(var(--photo-x,0)*5px),calc(var(--photo-y,0)*3px + var(--photo-scroll,0)*8px),0) rotateY(calc(var(--photo-x,0)*1.5deg + var(--photo-scroll,0)*.7deg))!important}
/* Foundations and their streets cannot drift apart. Project the entire scene. */
.home-photography [data-photo-depth] .home-photo-layer[data-plane-kind=structure] .home-photo-frame>.showcase-photo,.home-photography [data-photo-depth] .home-photo-layer[data-plane-kind=structure] .home-photo-foreground{transform:none!important}
@media(max-width:700px){
 .home-photography [data-photo-depth] .home-photo-layer[data-photo-contact=true] .home-photo-frame>.showcase-photo{transform:perspective(1000px) translate3d(calc(var(--photo-x,0)*-6px),calc(var(--photo-y,0)*-3px + var(--photo-scroll,0)*-10px),0) rotateY(calc(var(--photo-x,0)*1.2deg + var(--photo-scroll,0)*-.4deg))!important}
 .home-photography [data-photo-depth] .home-photo-layer[data-photo-contact=true] .home-photo-foreground{transform:perspective(900px) translate3d(calc(var(--photo-x,0)*3px),0,0) rotateY(calc(var(--photo-x,0)*1deg + var(--photo-scroll,0)*.5deg))!important}
 .home-photography [data-photo-depth] .home-photo-layer[data-plane-kind=table] .home-photo-frame>.showcase-photo{transform:perspective(1000px) translate3d(calc(var(--photo-x,0)*-5px),calc(var(--photo-y,0)*-3px + var(--photo-scroll,0)*-8px),0) rotateY(calc(var(--photo-x,0)*-.8deg + var(--photo-scroll,0)*-.3deg))!important}
 .home-photography [data-photo-depth] .home-photo-layer[data-plane-kind=table] .home-photo-foreground{transform:perspective(900px) translate3d(calc(var(--photo-x,0)*3px),calc(var(--photo-y,0)*2px + var(--photo-scroll,0)*6px),0) rotateY(calc(var(--photo-x,0)*1deg + var(--photo-scroll,0)*.5deg))!important}
}
/* Keep actual source edges covered while the shared camera remains fully active. */
.home-photography [data-photo-depth] .home-photo-layer[data-room-bounded=frame] .home-photo-frame>.showcase-photo{transform:none!important}
.home-photography [data-photo-depth] .home-photo-layer[data-room-bounded=bottom] .home-photo-frame>.showcase-photo{transform-origin:var(--photo-contact-origin,50% 100%)!important;transform:perspective(1400px) translate3d(clamp(calc(var(--photo-room-right,0px)*-1),calc(var(--photo-x,0)*-18px),var(--photo-room-left,0px)),max(0px,calc(var(--photo-y,0)*-10px + var(--photo-scroll,0)*-20px)),0) rotateY(calc(var(--photo-x,0)*1.8deg + var(--photo-scroll,0)*-.4deg)) scale(calc(1.025 + var(--photo-travel,0)*.04))!important}
@media(max-width:700px){.home-photography [data-photo-depth] .home-photo-layer[data-room-bounded=bottom] .home-photo-frame>.showcase-photo{transform:perspective(1000px) translate3d(clamp(calc(var(--photo-room-right,0px)*-1),calc(var(--photo-x,0)*-7px),var(--photo-room-left,0px)),max(0px,calc(var(--photo-y,0)*-5px + var(--photo-scroll,0)*-10px)),0) rotateY(calc(var(--photo-x,0)*1.2deg + var(--photo-scroll,0)*-.3deg)) scale(calc(1.025 + var(--photo-travel,0)*.05))!important}}
/* Cityzen has no photographed ground contact: its original building stays anchored while the cleared sky recedes. */
.home-photography [data-photo-depth] .home-photo-layer[data-background-depth=sky] .home-photo-frame>.showcase-photo{transform:perspective(1400px) translate3d(clamp(calc(var(--photo-sky-pan-x,0px)*-1),calc(var(--photo-x,0)*-22px),var(--photo-sky-pan-x,0px)),clamp(calc(var(--photo-sky-pan-y,0px)*-1),calc(var(--photo-y,0)*-12px + var(--photo-scroll,0)*-24px),var(--photo-sky-pan-y,0px)),-12px) rotateY(calc(var(--photo-x,0)*2deg)) rotateX(calc(var(--photo-y,0)*-1deg + var(--photo-scroll,0)*-.6deg)) scale(1.24)!important}
@media(max-width:700px){.home-photography [data-photo-depth] .home-photo-layer[data-background-depth=sky] .home-photo-frame>.showcase-photo{transform:perspective(1000px) translate3d(clamp(calc(var(--photo-sky-pan-x,0px)*-1),calc(var(--photo-x,0)*-10px),var(--photo-sky-pan-x,0px)),clamp(calc(var(--photo-sky-pan-y,0px)*-1),calc(var(--photo-y,0)*-7px + var(--photo-scroll,0)*-14px),var(--photo-sky-pan-y,0px)),-8px) rotateY(calc(var(--photo-x,0)*1.3deg)) rotateX(calc(var(--photo-y,0)*-.6deg + var(--photo-scroll,0)*-.4deg)) scale(1.24)!important}}
/* Requested room/wedding depth: foreground contacts stay anchored; the saved room moves behind them. */
.home-photo-layer[data-photo-motion=wedding]{--photo-x:calc(var(--photo-input-x,0)*1.85);--photo-y:calc(var(--photo-input-y,0)*1.85);--photo-scroll:calc(var(--photo-input-scroll,0)*1.85)}
.home-photography [data-photo-depth] .home-photo-layer:is([data-background-depth=interior],[data-background-depth=wedding]) .home-photo-frame>.showcase-photo{transform-origin:50% 50%!important;transform:perspective(1400px) translate3d(clamp(calc(var(--photo-sky-pan-x,0px)*-.62),calc(var(--photo-x,0)*-22px),calc(var(--photo-sky-pan-x,0px)*.62)),clamp(calc(var(--photo-sky-pan-y,0px)*-.55),calc(var(--photo-y,0)*-10px + var(--photo-scroll,0)*-18px),calc(var(--photo-sky-pan-y,0px)*.55)),-8px) rotateY(calc(var(--photo-x,0)*1.5deg)) rotateX(calc(var(--photo-y,0)*-.6deg + var(--photo-scroll,0)*-.4deg)) scale(1.16)!important}
@media(max-width:700px){.home-photography [data-photo-depth] .home-photo-layer:is([data-background-depth=interior],[data-background-depth=wedding]) .home-photo-frame>.showcase-photo{transform:perspective(1000px) translate3d(clamp(calc(var(--photo-sky-pan-x,0px)*-.62),calc(var(--photo-x,0)*-12px),calc(var(--photo-sky-pan-x,0px)*.62)),clamp(calc(var(--photo-sky-pan-y,0px)*-.55),calc(var(--photo-y,0)*-6px + var(--photo-scroll,0)*-12px),calc(var(--photo-sky-pan-y,0px)*.55)),-5px) rotateY(calc(var(--photo-x,0)*1deg)) rotateX(calc(var(--photo-y,0)*-.4deg + var(--photo-scroll,0)*-.3deg)) scale(1.16)!important}}
/* Lettering sits between the cleared wall and the near vases. */
.home-photography [data-photo-depth] .home-photo-layer[data-background-depth=interior] .home-photo-foreground[data-layer-depth=sign]{transform:perspective(1100px) translate3d(calc(var(--photo-x,0)*7px),calc(var(--photo-y,0)*3px + var(--photo-scroll,0)*5px),3px) rotateY(calc(var(--photo-x,0)*.8deg + var(--photo-scroll,0)*.35deg))!important}
@media(max-width:700px){.home-photography [data-photo-depth] .home-photo-layer[data-background-depth=interior] .home-photo-foreground[data-layer-depth=sign]{transform:perspective(850px) translate3d(calc(var(--photo-x,0)*4px),calc(var(--photo-y,0)*2px + var(--photo-scroll,0)*3px),2px) rotateY(calc(var(--photo-x,0)*.6deg + var(--photo-scroll,0)*.25deg))!important}}
@media(prefers-reduced-motion:reduce){
 .home-photography [data-photo-depth] .home-photo-layer:is([data-background-depth=sky],[data-background-depth=interior],[data-background-depth=wedding]) .home-photo-frame>.showcase-photo,.home-photography [data-photo-depth] .home-photo-layer[data-background-depth=interior] .home-photo-foreground[data-layer-depth=sign]{transform:none!important;scale:1!important;filter:none!important}
 .home-photo-layer,.home-photo-flight,.home-photo-depth,.home-photo-frame,.home-photography [data-photo-depth] .home-photo-layer[data-photo-contact=true] .showcase-photo,.home-photography [data-photo-depth] .home-photo-layer[data-photo-contact=true] .home-photo-foreground,.home-photography [data-photo-depth] .home-photo-layer[data-photo-contact=true] .home-photo-frame>.showcase-photo,.home-photography [data-photo-depth] .showcase-photo:not(.home-photo-foreground),.home-photography [data-photo-depth] .home-photo-foreground,.home-photography [data-photo-depth] .home-photo-layer[data-plane-kind=table] .home-photo-foreground,.home-photography [data-photo-depth] .home-photo-layer[data-plane-kind=table] .home-photo-frame>.showcase-photo,.home-photography [data-photo-depth] .home-photo-layer[data-scene-space=true] .home-photo-frame>.showcase-photo,.home-photography [data-photo-depth] .home-photo-layer .home-photo-foreground[data-layer-depth=sign],.home-photo-subject-motion{transform:none!important;scale:1!important;filter:none!important}
}


.home-photo-controls button{touch-action:manipulation}
.home-photo-dots button[data-requested=true]:after{background:var(--accent,#b7a3ff);opacity:1;box-shadow:0 0 9px #b7a3ff88}

@media(max-width:360px){.home-photo-controls{gap:4px}.home-photo-arrow{width:36px;height:36px;flex-shrink:0}.home-photo-dots button{width:13px}}

.home-photo-arrow{transition:transform .18s cubic-bezier(.2,.75,.25,1),background .2s ease,border-color .2s ease,box-shadow .2s ease}
.home-photo-arrow svg{transition:transform .18s cubic-bezier(.2,.75,.25,1)}
.home-photo-arrow:hover,.home-photo-arrow:focus-visible{border-color:color-mix(in srgb,var(--accent) 55%,var(--line));box-shadow:0 3px 16px #a997ff24}
@media(hover:hover) and (pointer:fine){.home-photo-arrow:hover{transform:translateY(-2px)}.home-photo-arrow:first-child:hover svg{transform:translateX(-2px)}.home-photo-arrow:last-child:hover svg{transform:translateX(2px)}.home-photo-dots button:hover:after{opacity:.85;transform:scale(1.2)}}
.home-photo-arrow:active{transform:scale(.94)}
.home-photo-dots button:after{transition:width .3s cubic-bezier(.2,.75,.25,1),opacity .2s ease,transform .18s ease,box-shadow .25s ease}
.home-photo-dots button[aria-pressed=true]:after,.home-photo-dots button[data-requested=true]:after{background:linear-gradient(110deg,#c6a9ff,#8bbdff);box-shadow:0 0 10px #a997ff38}
.home-photo-dots button[data-requested=true]:after{width:12px;border-radius:999px}
@media(prefers-reduced-motion:reduce){.home-photo-arrow,.home-photo-arrow svg,.home-photo-dots button:after{transition:none!important;transform:none!important}}
