/* Blue Conservatory: complete carved frames circle through a quiet 3D gallery.
   Original rail geometry remains in document flow for keyboard and lightbox use. */
#gallery[data-finale="album"]{--moment-ink:#254d63;--moment-muted:#526979;--moment-gold:#aa8547;--moment-width:min(100vw,800px);--moment-frame-width:320px;--moment-frame-gap:30px;position:relative;isolation:isolate;padding:92px 0 104px;background:#e7e4d5;color:var(--moment-ink);overflow:clip;overflow-anchor:none}
#gallery[data-finale="album"]::before{content:"";position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(#faf4e8 0%,#faf4e800 7%,#faf4e800 91%,#faf4e8 100%)}
#gallery .moment-room{position:absolute;inset:0;z-index:-2;pointer-events:none;display:block}
#gallery .moment-room img{display:block;width:100%;height:100%;object-fit:fill;max-width:none}
#gallery .moment-daylight{position:absolute;z-index:-1;inset:0;pointer-events:none;background:linear-gradient(118deg,transparent 16%,#fff6d12b 27%,#fffcef42 31%,transparent 44%);transform-origin:0 0;animation:conservatory-daylight 17s ease-in-out infinite alternate}
#invitation-page #gallery[data-finale="album"] .chapter-heading{position:relative;z-index:2;max-width:650px;margin:0 auto;padding:0 20px 4px;text-align:center}
#invitation-page #gallery[data-finale="album"] h2{margin:0;font:400 clamp(38px,4vw,56px)/1.08 var(--font-display);letter-spacing:-.035em;color:var(--moment-ink);text-shadow:0 1px 10px #fff9e9b3}
#invitation-page #gallery[data-finale="album"] .chapter-heading p{margin:9px auto 0;font:italic 400 clamp(15px,1.3vw,18px)/1.4 var(--font-body);color:#536674;text-wrap:balance;text-shadow:0 1px 7px #fff9e9}
#gallery[data-finale="album"] .album-stage{position:relative;z-index:2;width:var(--moment-width);max-width:100%;margin:0 auto;overflow:visible;transform:none!important;opacity:1!important;filter:none!important;transition:none!important;animation:none!important}
#gallery[data-finale="album"] #gallery-list{position:relative;display:flex;align-items:stretch;gap:0;width:100%;padding:0 0 6px;scroll-padding-inline:0;scroll-snap-type:x mandatory;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;touch-action:pan-x pan-y pinch-zoom;overflow-anchor:none;cursor:grab}
#gallery[data-finale="album"] #gallery-list.is-dragging{scroll-snap-type:none;scroll-behavior:auto;cursor:grabbing;user-select:none}
#gallery[data-finale="album"] .memory{position:relative;flex:0 0 100%;min-width:0;align-self:stretch;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;transform:none!important;scroll-snap-align:center;scroll-snap-stop:normal;cursor:zoom-in;color:var(--moment-ink);-webkit-tap-highlight-color:transparent}
#gallery[data-finale="album"] .memory::before{content:none}
/* Aperture measured in the 1024x1536 alpha frame: x180..845, y340..1306.
   Underlap the bevel by 1px to avoid a seam. No customer pixels are distorted. */
#gallery[data-finale="album"] .moment-image{position:relative;display:block;width:var(--moment-frame-width);max-width:100%;height:auto;aspect-ratio:2/3;margin:var(--moment-frame-gap) auto;padding:0;isolation:isolate;opacity:1;transition:none}
#gallery[data-finale="album"] .moment-image::before{content:"";position:absolute;z-index:0;left:17.45%;top:22.05%;width:65.2%;height:63.1%;background:#ede7d8;box-shadow:0 10px 22px #443b3124}
#gallery[data-finale="album"] .moment-image::after{content:"";position:absolute;z-index:4;inset:0;background:url('assets/moments-lapis-frame-v89.webp') center/100% 100% no-repeat;pointer-events:none;filter:drop-shadow(1px 6px 5px #4338272e)}
#gallery[data-finale="album"] .memory img.moment-photo{position:absolute;z-index:2;left:17.5%;top:22.1%;display:block;width:65.1%;height:62.9%;aspect-ratio:auto;object-fit:contain;object-position:center;border:0;border-radius:0;background:#eee9dc;transform:none!important;filter:none;box-shadow:none;transition:none;opacity:1;clip-path:inset(0)}
#gallery[data-finale="album"] .memory img.moment-backdrop,#gallery[data-finale="album"] .memory img.moment-reflection{display:none}
#gallery[data-finale="album"] .moment-image[data-moment-loaded="ready"][data-moment-revealed="false"] .moment-photo{opacity:.6}
#gallery[data-finale="album"] .moment-image[data-moment-revealed="true"][data-moment-settled="false"] .moment-photo{animation:moment-photograph-reveal 1450ms cubic-bezier(.18,.65,.22,1) both}
#gallery[data-finale="album"] .moment-light{position:absolute;z-index:3;pointer-events:none;left:17.5%;top:22.1%;width:65.1%;height:62.9%;overflow:hidden;opacity:0}
#gallery[data-finale="album"] .moment-light::before{content:"";position:absolute;top:-15%;bottom:-15%;width:28%;left:0;background:linear-gradient(90deg,transparent,#fffce644,#fffcef88,transparent);transform:translateX(-160%) skewX(-16deg)}
#gallery[data-finale="album"] .moment-image[data-moment-revealed="true"][data-moment-settled="false"] .moment-light{animation:moment-light-envelope 1450ms ease both}
#gallery[data-finale="album"] .moment-image[data-moment-revealed="true"][data-moment-settled="false"] .moment-light::before{animation:moment-light-pass 1450ms cubic-bezier(.2,.6,.25,1) both}
#gallery[data-finale="album"] .moment-unavailable{display:none;position:absolute;z-index:3;left:17.5%;top:22.1%;width:65.1%;height:62.9%;align-items:center;justify-content:center;padding:25px;background:#ede7d8;color:var(--moment-muted);font:italic 400 18px/1.5 var(--font-body);text-align:center}
#gallery[data-finale="album"] .moment-image[data-moment-loaded="error"] .moment-unavailable{display:flex}
#gallery[data-finale="album"] .moment-image[data-moment-loaded="error"] .moment-photo{visibility:hidden}
#gallery[data-finale="album"] .memory-caption{position:relative;display:block;max-width:380px;min-height:1.5em;margin:0 auto;padding:3px 28px 6px;color:var(--moment-ink);font:italic 400 19px/1.45 var(--font-body);overflow-wrap:anywhere;white-space:pre-line;text-wrap:pretty;text-shadow:0 1px 6px #fff8e9;opacity:1}
/* Every rotating face owns both the photograph and its complete carved frame.
   There is no fixed aperture or stationary frame over the carousel. */
#gallery[data-finale="album"] .moment-orbit-shell{display:none;position:absolute;z-index:2;inset:0 0 auto;height:calc(var(--moment-frame-width)*1.5 + var(--moment-frame-gap)*2);pointer-events:none;overflow:visible}
#gallery[data-finale="album"][data-moment-orbit="active"] .moment-orbit-shell{display:block}
#gallery[data-finale="album"][data-moment-orbit="active"] .moment-image{opacity:0}
#gallery[data-finale="album"][data-moment-orbit="active"] .moment-photo,#gallery[data-finale="album"][data-moment-orbit="active"] .moment-light,#gallery[data-finale="album"][data-moment-orbit="active"] .moment-light::before{animation:none!important}
#gallery[data-finale="album"][data-moment-orbit="active"] .album-stage,#gallery[data-finale="album"][data-moment-orbit="active"] #gallery-list{touch-action:pan-y pinch-zoom}
#gallery[data-finale="album"] .moment-orbit-window{position:absolute;inset:0;perspective:1100px;perspective-origin:50% 50%;overflow:visible}
#gallery[data-finale="album"] .moment-orbit-rotor{position:absolute;display:block;top:var(--moment-frame-gap);left:calc((100% - var(--moment-frame-width))/2);width:var(--moment-frame-width);aspect-ratio:2/3;transform-style:preserve-3d;transform-origin:50% 50%;transition:none}
#gallery[data-finale="album"][data-moment-motion="active"] .moment-orbit-rotor{will-change:transform}
#gallery[data-finale="album"] .moment-orbit-face{position:absolute;inset:0;display:block;backface-visibility:hidden;-webkit-backface-visibility:hidden;pointer-events:auto;touch-action:pan-y pinch-zoom;cursor:zoom-in}
#gallery[data-finale="album"] .moment-orbit-face::before{content:"";position:absolute;left:17.45%;top:22.05%;width:65.2%;height:63.1%;background:#eee9dc;box-shadow:0 13px 22px #263c4033}
#gallery[data-finale="album"] .moment-orbit-face::after{content:"";position:absolute;z-index:2;inset:0;background:url('assets/moments-lapis-frame-v89.webp') center/100% 100% no-repeat;filter:drop-shadow(0 7px 5px #26333d2b);pointer-events:none}
#gallery[data-finale="album"] .moment-orbit-face img{position:absolute;z-index:1;left:17.5%;top:22.1%;display:block;width:65.1%;height:62.9%;max-width:none;object-fit:contain;object-position:center;background:#eee9dc;border:0;border-radius:0;opacity:1;transform:none;filter:none;box-shadow:none;pointer-events:none}
#gallery[data-finale="album"] .moment-orbit-face[data-orbit-loaded="loading"] img,#gallery[data-finale="album"] .moment-orbit-face[data-orbit-loaded="error"] img{visibility:hidden}
#gallery[data-finale="album"] .moment-orbit-unavailable{position:absolute;z-index:1;left:17.5%;top:22.1%;width:65.1%;height:62.9%;display:grid;place-items:center;padding:20px;text-align:center;color:var(--moment-muted);font:italic 400 16px/1.5 var(--font-body)}
#gallery[data-finale="album"] .moment-orbit-unavailable[hidden],#gallery[data-finale="album"] .moment-orbit-face img[hidden]{display:none}
#gallery[data-finale="album"][data-moment-orbit="active"] .memory-caption{opacity:var(--orbit-caption-opacity,1)}
#gallery[data-finale="album"] .memory:focus-visible{outline:2px solid var(--moment-ink);outline-offset:-4px}
#gallery[data-finale="album"] .moment-jasmine{position:absolute;z-index:3;top:0;width:clamp(110px,19vw,290px);pointer-events:none;transform-origin:0 0}
#gallery .moment-jasmine-left{left:-1%;transform:rotate(-5deg)}
#gallery .moment-jasmine-right{right:-2%;transform:scaleX(-1) rotate(-10deg)}
#gallery .moment-jasmine img{display:block;width:100%;height:auto;transform-origin:0 0;animation:conservatory-breeze 9s ease-in-out infinite alternate}
#gallery .moment-jasmine-right img{animation-delay:-4.2s;animation-duration:11s}
#gallery[data-moment-scene-revealed="false"] .moment-jasmine{opacity:0}
#gallery[data-moment-scene-revealed="true"] .moment-jasmine{animation:conservatory-arrive 1700ms ease-out both}
#gallery[data-finale="album"] .gallery-thumbnails{position:relative;z-index:2;display:flex;justify-content:flex-start;gap:14px;width:max-content;max-width:calc(100% - 88px);margin:7px auto 8px;padding:5px 8px 10px;overflow-x:auto;scrollbar-width:none}
#gallery[data-finale="album"] .gallery-thumbnail{position:relative;width:51px;height:61px;flex:0 0 51px;min-width:44px;min-height:44px;padding:3px;border:1px solid #b4a282;border-radius:0;background:#faf3e4;box-shadow:1px 3px 5px #493c2826;opacity:.66;transition:opacity 300ms ease,transform 300ms ease;transform:rotate(-3deg)}
#gallery[data-finale="album"] .gallery-thumbnail:nth-child(even){transform:rotate(3deg)}
#gallery[data-finale="album"] .gallery-thumbnail img{display:block;width:100%;height:100%;object-fit:cover;border-radius:0;filter:none}
#gallery[data-finale="album"] .gallery-thumbnail[aria-current="true"]{border-color:#527583;opacity:1;transform:translateY(-2px)}
#gallery[data-finale="album"] .gallery-thumbnail:hover{opacity:1}
#gallery[data-finale="album"] .gallery-thumbnail:focus-visible{outline:2px solid var(--moment-ink);outline-offset:3px}
#gallery[data-finale="album"] .gallery-controls{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:18px;max-width:430px;margin:0 auto;padding:0 25px;flex-wrap:nowrap;color:var(--moment-ink)}
#gallery[data-finale="album"] .gallery-controls button{display:grid;place-items:center;min-width:44px;min-height:44px;padding:8px;border:0;border-radius:50%;background:#faf3e440;font:400 30px/1 var(--font-body);color:var(--moment-ink);transition:background-color 180ms ease;cursor:pointer}
#gallery[data-finale="album"] .gallery-controls button:hover{background:#faf3e4a6}
#gallery[data-finale="album"] .gallery-controls button:disabled{opacity:.3;cursor:default}
#gallery[data-finale="album"] .gallery-controls button:focus-visible{outline:2px solid var(--moment-ink);outline-offset:2px}
#gallery[data-finale="album"] .gallery-controls button svg{display:block;width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
#gallery[data-finale="album"] #gallery-count{font:400 15px/1.4 var(--font-body);font-variant-numeric:tabular-nums;min-width:45px;letter-spacing:.08em}
#gallery[data-finale="album"] .gallery-controls #gallery-autoplay{font-size:0;min-width:44px;width:44px;border:1px solid #547c8340;text-decoration:none;margin-left:5px}
#gallery[data-finale="album"] #gallery-autoplay::before{content:"";display:block;width:9px;height:12px;border-inline:2px solid currentColor}
#gallery[data-finale="album"] #gallery-autoplay[aria-pressed="true"]::before{width:0;height:0;margin-left:3px;border:6px solid transparent;border-right:0;border-left:9px solid currentColor}
#gallery[data-finale="album"] .moment-instruction{position:relative;z-index:2;width:max-content;max-width:calc(100% - 48px);margin:10px auto 0;padding:4px 10px;background:#faf4e8d9;text-align:center;font:400 13px/1.5 var(--font-body);color:#3e596a}
#gallery[data-finale="album"][data-moment-motion="paused"] *,#gallery[data-finale="album"][data-moment-motion="paused"] *::before,#gallery[data-finale="album"][data-moment-motion="paused"] *::after{animation-play-state:paused!important}
@keyframes moment-photograph-reveal{0%{opacity:.25;clip-path:inset(0 100% 0 0)}65%{opacity:1}100%{opacity:1;clip-path:inset(0)}}
@keyframes moment-light-envelope{0%,100%{opacity:0}12%,65%{opacity:1}}
@keyframes moment-light-pass{from{transform:translateX(-160%) skewX(-16deg)}to{transform:translateX(520%) skewX(-16deg)}}
@keyframes conservatory-breeze{from{transform:rotate(-1.4deg)}to{transform:rotate(2.2deg)}}
@keyframes conservatory-daylight{from{opacity:.38;transform:translateX(-3%)}to{opacity:.85;transform:translateX(3%)}}
@keyframes conservatory-arrive{from{opacity:0}to{opacity:1}}
@media(min-width:1100px){#gallery[data-finale="album"]{--moment-width:800px;--moment-frame-width:340px;padding-top:84px;padding-bottom:110px}}
@media(max-width:759px){#gallery[data-finale="album"]{--moment-width:100%;--moment-frame-width:min(62vw,260px);--moment-frame-gap:24px;padding:77px 0 91px}#gallery[data-finale="album"] .memory-caption{font-size:18px;padding-inline:30px}#invitation-page #gallery[data-finale="album"] h2{font-size:39px}#gallery[data-finale="album"] .gallery-thumbnails{margin-top:2px}#gallery[data-finale="album"] .moment-jasmine{width:96px}}
@media(max-width:359px){#gallery[data-finale="album"]{padding-top:68px;padding-bottom:78px}#invitation-page #gallery[data-finale="album"] h2{font-size:35px}#invitation-page #gallery[data-finale="album"] .chapter-heading p{font-size:14px}#gallery[data-finale="album"] .moment-instruction{font-size:12px}#gallery[data-finale="album"] .gallery-controls{gap:13px}#gallery[data-finale="album"] .moment-jasmine{width:84px}}
body.card-preview #gallery[data-finale="album"] *,body.card-preview #gallery[data-finale="album"] *::before{animation:none!important;transition:none!important}
body.card-preview #gallery[data-finale="album"] .moment-photo{opacity:1!important;clip-path:inset(0)!important}
body.card-preview #gallery[data-finale="album"] .moment-light{display:none}
body.card-preview #gallery[data-finale="album"] .moment-orbit-shell{display:none!important}
body.card-preview #gallery[data-finale="album"] .moment-image{opacity:1}
@media(prefers-reduced-motion:reduce){#gallery[data-finale="album"] *,#gallery[data-finale="album"] *::before{animation:none!important;transition:none!important}#gallery[data-finale="album"] .moment-photo{opacity:1!important;clip-path:inset(0)!important}#gallery[data-finale="album"] .moment-light,#gallery[data-finale="album"] .moment-orbit-shell{display:none!important}#gallery[data-finale="album"] .moment-image,#gallery[data-finale="album"] .memory-caption{opacity:1!important}}

@media(max-width:759px){#gallery[data-finale="album"] .moment-orbit-window{perspective:800px}}
