.album{position:relative;isolation:isolate;overflow:hidden;padding:48px 26px 40px;background:linear-gradient(180deg,#fffcf6,#f4edf5 48%,#fffcf6);color:#765583}
.album:before{content:"";position:absolute;inset:0;z-index:-1;opacity:.17;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.62' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23735d70' filter='url(%23grain)' opacity='.25' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
.album-heading{text-align:center;margin:0 0 36px;font-family:"Kaiti SC","KaiTi","STKaiti",serif;font-size:27px;font-weight:400;letter-spacing:6px}
.album-heading:before,.album-heading:after{content:"";display:inline-block;vertical-align:middle;width:29px;height:1px;margin:0 15px;background:#c7b0cc;transform:rotate(-5deg)}
.album-heading:after{transform:rotate(5deg)}
.photo-sheet{position:relative;margin:0;background:#fffdf7;padding:11px 11px 0;box-shadow:0 1px 2px #5d3e6412,0 8px 20px #5d3e6410;border:1px solid #e8dfe4;transform-origin:center}
.photo-sheet img{display:block;width:100%;height:auto;position:relative;z-index:1;border:1px solid #eee8e4}
.photo-sheet figcaption{height:46px;display:flex;justify-content:center;align-items:center;font-family:"Kaiti SC","KaiTi","STKaiti",serif;color:#8a7192;font-size:16px;letter-spacing:3px}
.photo-portrait{width:88%;margin-left:3%;transform:rotate(-2deg)}
.photo-wide{width:100%;margin:42px 0 4px;transform:rotate(1.5deg)}
.photo-sheet:before{content:"";z-index:3;position:absolute;left:50%;top:-13px;width:72px;height:26px;transform:translateX(-50%) rotate(6deg);background:repeating-linear-gradient(90deg,#d5c2de8a 0 2px,#e3d4e791 2px 5px);border-left:1px dashed #c6afd277;border-right:1px dashed #c6afd277;box-shadow:0 1px 2px #6b50700c;pointer-events:none}
.photo-wide:before{left:73%;transform:translateX(-50%) rotate(-9deg);width:64px}
.album-flower{position:absolute;z-index:2;width:70px;height:146px;right:-24px;bottom:25px;pointer-events:none;overflow:visible}
.album-twig{position:absolute;z-index:2;width:54px;height:100px;left:-24px;top:36px;pointer-events:none}
@media(prefers-reduced-motion:no-preference){.photo-sheet{animation:album-settle 1s both;animation-timeline:view();animation-range:entry 0% entry 80%}@keyframes album-settle{from{opacity:.4;translate:0 22px}to{opacity:1;translate:0 0}}}
@media(max-width:350px){.album{padding:40px 22px 30px}.photo-portrait{width:92%;margin-left:1%}.photo-sheet{padding:9px 9px 0}.photo-sheet figcaption{font-size:14px;height:42px}.album-flower{width:60px;right:-22px}}

.event .event-label{color:var(--purple);letter-spacing:2px;font-size:13px;margin-bottom:10px}.map-link{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;padding:11px 22px;border:1px solid #ccb3d8;border-radius:999px;background:#f0e5f6;color:#79528e;text-decoration:none;box-shadow:0 3px 12px #7655830d;touch-action:manipulation}.map-link:active{background:#e7d7ef}.map-link .action-icon{width:24px;height:24px}.event .map-hint{font-size:11px;color:#8c7e92;margin:8px 0 0}.photo-sheet{opacity:1}

/* 手机竖屏播放；脚本不可用时保留原有可滚动请柬。 */
.screen-reader-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.autoplay{overflow:hidden;overscroll-behavior:none}
.autoplay main{position:relative;margin:0 auto;border-radius:0;height:var(--stage-height,100svh);overflow:hidden;background:radial-gradient(ellipse at 15% 24%,#e6d8ef66,transparent 55%),radial-gradient(ellipse at 89% 82%,#e4d2ec88,transparent 60%),#fffcf6}
.autoplay main>header{position:absolute;z-index:4;left:0;right:0;top:env(safe-area-inset-top,0px);height:52px}
.autoplay .invitation-title{font-size:18px;letter-spacing:4px;line-height:52px;padding:0 68px}
.playback-toggle{position:absolute;top:4px;right:12px;min-width:48px;min-height:44px;border:0;background:transparent;font-size:12px;color:#755685}
.scene-navigation{position:absolute;left:24px;right:24px;bottom:calc(18px + env(safe-area-inset-bottom,0px));display:flex;justify-content:space-between;gap:20px;z-index:4}
.scene-navigation button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:92px;min-height:44px;padding:10px 13px;border:1px solid #ddcfe4;border-radius:24px;background:#fffcf6e8;color:#856097;font-size:13px;touch-action:manipulation}
.scene-navigation svg{width:17px;height:17px;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.scene-navigation button:disabled{opacity:.35}
.autoplay .poster-hint{display:none}
.autoplay .story-scene{position:absolute;inset:calc(60px + env(safe-area-inset-top,0px)) 16px calc(84px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(12px);transition:opacity .9s ease,transform 1.1s ease,visibility 0s .9s;z-index:1}
.autoplay .story-scene.is-active{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);transition-delay:0s;z-index:2}
.autoplay .poster img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 6px 30px #76558312}
.autoplay .photo-sheet{width:var(--photo-width,85%);margin:0;padding:11px 11px 0;animation:none;translate:none;transform:rotate(-1.5deg);flex-shrink:0;box-shadow:0 2px 5px #5938650c,0 14px 36px #59386516}
.autoplay .photo-wide{transform:rotate(1.5deg)}
.autoplay .photo-sheet img{width:100%;height:auto;max-height:none;object-fit:contain}
.autoplay .photo-sheet figcaption{height:46px;font-size:15px;letter-spacing:2px;white-space:nowrap}
.autoplay .photo-stage.is-active .album-flower,.autoplay .photo-stage.is-active .album-twig{animation:flower-sway 7s ease-in-out infinite;transform-origin:bottom center}
@keyframes flower-sway{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
.autoplay .scene-info{flex-direction:column;justify-content:safe center;text-align:center;padding:28px 22px;overflow-y:auto;border:1px solid #d8c4df;outline:1px solid #e8ddee;outline-offset:-7px;background:#fffdf8b8}
.scene-event{margin:0 0 24px;font-size:13px;letter-spacing:4px;color:#8d709d}
.scene-info h2{margin:0 0 22px;font-family:"Kaiti SC","KaiTi","STKaiti",serif;font-size:52px;font-weight:400;letter-spacing:10px;color:#856097}
.scene-names{margin:0 0 34px;font-family:"Kaiti SC","KaiTi","STKaiti",serif;font-size:23px;letter-spacing:2px}.scene-names span{color:#a88aba;margin:0 6px}
.scene-date{margin:0 0 14px;font-size:16px;line-height:1.8}.scene-address{margin:0 0 24px;font-size:14px;line-height:2;max-width:285px;overflow-wrap:anywhere}
.scene-info .map-link{font-size:13px;flex-shrink:0}.scene-map-note{margin:8px 0 0;font-size:11px;line-height:1.7;color:#8c7e92}
.playback-loading{position:absolute;z-index:3;left:50%;top:45%;transform:translate(-50%,-50%);margin:0;padding:12px 20px;background:#fffcf6ed;border:1px solid #e5d7eb;border-radius:6px;color:#856097;font-size:13px;white-space:nowrap;pointer-events:none}
.image-fallback{padding:28px;text-align:center;line-height:2;font-size:14px;color:#79528e}
.autoplay .image-unavailable .photo-sheet{min-height:140px}.autoplay .image-unavailable .photo-sheet figcaption{white-space:normal;text-align:center}
.autoplay .bar{z-index:10}
.autoplay .rsvp{position:fixed;z-index:20;top:var(--visual-top,0px);left:50%;transform:translateX(-50%);width:100%;max-width:520px;height:var(--visual-height,100svh);padding:0 24px calc(32px + env(safe-area-inset-bottom,0px));background:#fffcf6;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scroll-behavior:auto;scroll-padding-top:86px}
.rsvp-toolbar{position:sticky;top:0;z-index:3;display:flex;justify-content:flex-end;margin:0 -24px 18px;padding:calc(6px + env(safe-area-inset-top,0px)) 18px 6px;background:#fffcf6f7;border-bottom:1px solid #e8dfec}
.rsvp-toolbar button{min-height:44px;padding:10px 12px;font-size:13px;color:#755685;background:transparent;border:0}
.autoplay .rsvp .intro{margin-bottom:18px}.autoplay .rsvp .event{margin-bottom:20px}.autoplay #preview-note{margin:0 0 16px}
.autoplay.is-paused .petal,.autoplay.is-paused .album-flower,.autoplay.is-paused .album-twig{animation-play-state:paused}
@media(max-height:650px){.autoplay .story-scene{bottom:calc(142px + env(safe-area-inset-bottom,0px))}.scene-navigation{bottom:calc(12px + env(safe-area-inset-bottom,0px))}.autoplay .scene-info{padding:18px 20px}.scene-event{margin-bottom:14px}.scene-info h2{font-size:38px;margin-bottom:14px}.scene-names{font-size:20px;margin-bottom:18px}.scene-date{font-size:14px;margin-bottom:8px}.scene-address{margin-bottom:12px;font-size:13px}.autoplay .photo-sheet figcaption{font-size:13px}}
@media(prefers-reduced-motion:reduce){.autoplay .story-scene{transition:none;transform:none}.autoplay .album-flower,.autoplay .album-twig{animation:none!important}}

/* 末页的两个圆钮占据原地图入口位置；照片幕的按钮布局保持不变。 */
.scene-actions-slot{width:188px;height:80px;flex:0 0 80px}
@media(max-width:350px){.scene-actions-slot{height:74px;flex-basis:74px}}
@media(max-height:650px){
 .autoplay .scene-info{bottom:calc(84px + env(safe-area-inset-bottom,0px));padding:12px 16px}
 .scene-info .scene-event{margin-bottom:8px;line-height:16px}
 .scene-info h2{font-size:32px;line-height:1.2;margin-bottom:8px}
 .scene-info .scene-names{font-size:18px;line-height:22px;margin-bottom:12px}
 .scene-info .scene-date{font-size:13px;line-height:1.5;margin-bottom:8px}
 .scene-info .scene-address{font-size:12px;line-height:1.65;margin-bottom:12px}
 .scene-actions-slot{height:72px;flex-basis:72px}
}
