/* Four joined ornamental sides form one centered, continuously turning cube. */
#invitation-page #gallery.memory-frame-section {
  --memory-stage-width: clamp(194px,66vw,450px);
  --memory-stage-height: calc(var(--memory-stage-width)*1.25);
  --carousel-radius: calc(var(--memory-stage-width)*.5);
  display: block; padding: 115px 0 80px;
}
#invitation-page #gallery .memory-introduction { text-align: center; padding: 0 24px; }
#invitation-page #gallery .memory-introduction .section-intro { text-align: center; margin: 0 auto 12px; max-width: 720px; }
#invitation-page #gallery .memory-introduction h2 { max-width: none; font-size: clamp(3rem,6.4vw,5.8rem); }
#invitation-page #gallery .memory-introduction .section-intro>p { max-width: 300px; margin: 20px auto 0; }
#invitation-page #gallery .cabinet-flourish { margin: 0 auto 20px; }
#invitation-page #gallery .memory-cube-stage {
  --gallery-cube-ready: 1; --cabinet-play: paused;
  position: relative; width: min(100%,1100px); height: calc(var(--memory-stage-height)*1.45 + 100px);
  margin: 0 auto; perspective: calc(var(--memory-stage-width)*4.8);
  perspective-origin: 50% calc(var(--memory-stage-height)*.725 + 20px);
  pointer-events: none; user-select: none; -webkit-user-select: none;
}
#invitation-page #gallery .memory-cube-stage.cube-running { --cabinet-play: running; }
#invitation-page #gallery .cube-ground {
  position: absolute; z-index: 0; left: calc(50% - var(--memory-stage-width)*.77);
  top: calc(var(--memory-stage-height)*1.31 + 22px);
  width: calc(var(--memory-stage-width)*1.54); height: calc(var(--memory-stage-width)*.14);
  border-radius: 50%; pointer-events: none;
  background: radial-gradient(ellipse,#050a067d 0%,#050a0645 32%,#050a061c 55%,transparent 73%);
  filter: blur(9px); transform: scaleX(var(--cube-shadow-scale,1));
}
#invitation-page #gallery .memory-cube {
  position: absolute; z-index: 2; left: calc(50% - var(--memory-stage-width)*.5);
  top: calc(var(--memory-stage-height)*.225 + 20px);
  width: var(--memory-stage-width); height: var(--memory-stage-height);
  overflow: visible; background: none; transform-style: preserve-3d;
  transform: rotateY(var(--carousel-angle,0deg));
}
#invitation-page #gallery .cube-running .memory-cube { will-change: transform; }
#invitation-page #gallery .memory-cube-face {
  position: absolute; inset: 0 3.5%; margin: 0; padding: 0;
  background: linear-gradient(90deg,#211c13,#45432f 1px,#17291e 3px,#1e3124 50%,#17291e calc(100% - 3px),#45432f calc(100% - 1px),#211c13);
  box-shadow: inset 0 0 0 1px #cab38e38,inset 0 0 0 3px #0c120a66;
  backface-visibility: hidden; -webkit-backface-visibility: hidden;
  transform: rotateY(var(--face-angle,0deg)) translateZ(var(--carousel-radius));
}
#invitation-page #gallery .memory-cube-face::before {
  content: ''; position: absolute; z-index: 2; left: 10.356%; top: 7.6%; width: 79.288%; height: 83.422%;
  pointer-events: none; opacity: var(--glass-opacity,.06);
  background: linear-gradient(118deg,transparent 14%,#fff7de18 30%,#fff8e8 38%,#fff7de36 43%,transparent 58%);
  background-size: 240% 100%; background-position: var(--glass-x,50%) 0;
}
#invitation-page #gallery .memory-cube-face::after {
  content: ''; position: absolute; z-index: 12; inset: 0; pointer-events: none;
  background: #060905; opacity: calc(var(--face-shade,0)*.72);
}
#invitation-page #gallery .cube-corner-slice {
  position: absolute; left: 50%; top: 0; height: 100%;
  width: calc(var(--memory-stage-width)*var(--corner-width) + .3px);
  background: linear-gradient(#d2b57615,transparent 18%,#0c1c141a 82%,#b395660d),#1d3022;
  backface-visibility: hidden; -webkit-backface-visibility: hidden; pointer-events: none;
  transform: translateX(-50%) translateX(calc(var(--memory-stage-width)*var(--corner-x))) translateZ(calc(var(--memory-stage-width)*var(--corner-z))) rotateY(var(--corner-angle));
}
#invitation-page #gallery .cube-corner-slice::after {
  content: ''; position: absolute; inset: 0; background: #060905;
  opacity: calc(var(--face-shade,0)*.72);
}
#invitation-page #gallery .cube-photo {
  display: block; position: absolute; left: 9.856%; top: 7.1%; width: 80.288%; height: 84.422%;
  margin: 0; padding: 0; border: 0; border-radius: 0; object-fit: cover; object-position: center;
  box-shadow: none; background: #15291f; filter: none; transform: none; animation: none;
}
#invitation-page #gallery .cube-frame {
  position: absolute; z-index: 7; inset: -3%; width: 106%; height: 106%;
  pointer-events: none; filter: drop-shadow(1px 3px 2px #0a070bd9);
}
#invitation-page #gallery .cube-frame img { display: block; width: 100%; height: 100%; object-fit: fill; }
#invitation-page #gallery .cube-aperture {
  position: absolute; z-index: 3; left: 10.144%; top: 7.282%; width: 79.712%; height: 84.058%;
  perspective: 750px; overflow: hidden;
}
#invitation-page #gallery .cube-aperture::after {
  content: ''; position: absolute; z-index: 5; inset: 0; pointer-events: none;
  box-shadow: inset 0 7px 12px #080c0885,inset 3px 0 7px #080c0859,inset -2px -2px 3px #e0b57924;
}
#invitation-page #gallery .cube-door {
  position: absolute; inset: 0 auto 0 0; width: 50.2%;
  background: #203426 url('assets/memory-lattice-v56.svg') center/100% 100%;
  transform-origin: left center; transform: rotateY(calc(var(--door-angle,0deg)*-1));
  backface-visibility: hidden; -webkit-backface-visibility: hidden;
  box-shadow: inset 0 0 0 1px #b39257a6,inset 3px 0 3px #e2c17a24,inset -3px 0 4px #040a0880,7px 0 14px #08140c90;
}
#invitation-page #gallery .cube-door--right {
  left: auto; right: 0; transform-origin: right center;
  transform: rotateY(var(--door-angle,0deg)); background: #203426;
  box-shadow: inset 0 0 0 1px #b39257a6,inset 3px 0 3px #e2c17a24,inset -3px 0 4px #040a0880,-7px 0 14px #08140c90;
}
#invitation-page #gallery .cube-door::after {
  content: ''; position: absolute; z-index: 2; right: 10%; top: 46%; width: 3%; height: 8%;
  border: 1px solid #d5b277; border-radius: 3px;
  background: linear-gradient(90deg,#49301b,#d8b780 45%,#7f582f);
  box-shadow: 2px 2px 2px #040705ab;
}
#invitation-page #gallery .cube-door--right::after { right: auto; left: 10%; }
#invitation-page #gallery .cube-door--right::before {
  content: ''; position: absolute; inset: 0;
  background: url('assets/memory-lattice-v56.svg') center/100% 100%; transform: scaleX(-1);
}
#invitation-page #gallery .cube-light {
  position: absolute; inset: 0; pointer-events: none; opacity: var(--light-opacity,0);
  background: linear-gradient(115deg,transparent 18%,#f8e1ac44 49%,transparent 80%); mix-blend-mode: screen;
}
#invitation-page #gallery .cabinet-pendant { top: 5%; }
#invitation-page #gallery .cabinet-pendant::before { height: calc(var(--memory-stage-height)*.12); }
#invitation-page #gallery .cabinet-pendant--right::before { height: calc(var(--memory-stage-height)*.19); }
#invitation-page #gallery .cube-caption { display: none; }
#invitation-page #gallery .memory-frame-caption {
  position: absolute; z-index: 3; top: calc(var(--memory-stage-height)*1.45 + 42px); left: 0; right: 0;
  margin: 0; padding: 0 24px; color: #ddcda9; text-align: center;
  font-family: 'Cormorant Garamond',Georgia,serif; font-size: 1.13rem; line-height: 1.4;
  font-style: italic; text-wrap: balance;
}
#invitation-page #gallery .cube-static .memory-cube,
#invitation-page #gallery .cube-static .memory-cube-face { transform: none; }
#invitation-page #gallery .cube-static .memory-cube-face[aria-hidden='true'],
#invitation-page #gallery .cube-static .cube-corner-slice,
#invitation-page #gallery .cube-static .cube-ground,
#invitation-page #gallery .cube-static .cube-door,
#invitation-page #gallery .cube-static .cube-light { display: none; }
#invitation-page #gallery[data-gallery-layout='cube'] #gallery-list[hidden] { display: none!important; }
#invitation-page #gallery[data-gallery-layout='cube'] :is(.gallery-controls,.projection-playback,.album-help) { display: none!important; }
@media(min-width:900px) {
  #invitation-page #gallery.memory-frame-section { padding: 125px 0 95px; }
  #invitation-page #gallery .memory-introduction .section-intro>p { font-size: .92rem; }
  #invitation-page #gallery .memory-frame-caption { font-size: 1.2rem; }
}
