/* v0.20.2 · 画窗饰扣、相册页角、誓言珠串、金叶、喜帖压边各归其位。
   不使用全屏贴花或重复壁纸。河灯整片水面归既有 Canvas 和交互所有。 */
.couture-root, .couture-root * { pointer-events: none !important; }
.couture-material { position: absolute; background: center / contain no-repeat; }
.couture-sway { animation: couture-sway 9s ease-in-out infinite; animation-play-state: paused; }
.couture-live .couture-sway { animation-play-state: running; }
.couture-static .couture-sway { animation: none; }
.couture-world { position: fixed; inset: 0; z-index: 2; overflow: hidden; opacity: 1; transition: opacity .65s ease; }
.couture-world.couture-clear { opacity: 0; visibility: hidden; }
.couture-side { position: absolute; top: 0; bottom: 0; width: var(--sl); }
.couture-side-left { left: 0; } .couture-side-right { right: 0; }
.couture-world-jewel, .couture-world-album, .couture-world-meadow { position: absolute; inset: 0; opacity: 0; transition: opacity .7s ease; }
.couture-world[data-scene="A"] .couture-world-jewel, .couture-world[data-scene="E"] .couture-world-jewel { opacity: 1; }
.couture-world[data-scene="C"] .couture-world-album { opacity: 1; }
.couture-world[data-scene="D"] .couture-world-meadow { opacity: 1; }
.couture-rail-cameo { width: 54px; height: 54px; left: calc(50% - 27px); top: 16%; opacity: .8; }
.couture-rail-pearls { width: min(75%, 290px); aspect-ratio: 164 / 72; left: 12.5%; top: 24%; opacity: .75; }
.couture-rail-corner { width: min(38%, 112px); aspect-ratio: 1; opacity: .66; }
.couture-world-album { inset: 18% 18% 19%; border: 1px solid rgba(190, 155, 104, .16); }
.couture-rail-feather { width: min(46%, 128px); aspect-ratio: 144 / 260; left: 30%; top: 43%; rotate: -17deg; opacity: .5; }
.couture-side-right .couture-rail-feather { top: 18%; rotate: 20deg; scale: -1 1; }
.couture-frame-detail { position: absolute; inset: 0; z-index: 4; overflow: visible; }
.couture-photo-pin { width: 29px; height: 29px; top: 28%; left: -11px; filter: drop-shadow(0 2px 2px #A8887040); }
.couture-vow-pearls { width: 100px; height: 44px; left: 6%; bottom: -30px; filter: drop-shadow(0 2px 1px #B3927420); }
.couture-album-detail { position: absolute; inset: 0; z-index: 6; }
.couture-album-corner { width: 23px; height: 23px; opacity: .83; }
.couture-tl { top: 0; left: 0; }
.couture-tr { top: 0; right: 0; scale: -1 1; }
.couture-bl { bottom: 0; left: 0; scale: 1 -1; }
.couture-br { bottom: 0; right: 0; rotate: 180deg; }
.couture-meadow-detail { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.couture-meadow-feather { width: 38px; height: 70px; right: -12px; bottom: 13%; rotate: -21deg; opacity: .7; }
.couture-paper-frame { position: absolute; inset: 8px; z-index: 2; border: 1px solid #C09B634F; }
.couture-paper-corner { width: 36px; height: 36px; opacity: .78; }
.couture-opening { position: absolute; inset: 18px 14px 28px; z-index: 6; border: 1px solid #C6A57438; }
.couture-opening::before { content: ''; position: absolute; inset: 5px; border: 1px solid #FFFDFB99; }
.couture-opening-corner { width: 57px; height: 57px; opacity: .74; }
.couture-opening-pendant { width: 140px; height: 62px; right: 2%; top: 6px; opacity: .82; }
/* 普通流三页按身份选材料，避开表单和建筑照片。 */
.couture-after { position: absolute; left: 0; right: 0; overflow: hidden; z-index: -1; }
.couture-venue-roof { width: 180px; height: 56px; left: calc(50% - 90px); top: 0; opacity: .64; }
.couture-letter-corner { width: 68px; height: 68px; opacity: .52; }
.couture-after-rsvp .couture-tl { left: max(8px, calc(50% - 264px)); top: 5%; }
.couture-after-rsvp .couture-br { right: max(8px, calc(50% - 264px)); bottom: 5%; }
.couture-closing-bouquet { position: absolute; width: 108px; height: 155px; background: center / contain no-repeat; right: max(-30px, calc(50% - 290px)); bottom: 5%; opacity: .86; rotate: -15deg; }
.couture-closing-cameo { width: 32px; height: 32px; left: calc(50% - 16px); top: 5%; opacity: .8; }
@keyframes couture-sway { 0%,100% { translate: 0 0; } 50% { translate: 0 -2px; } }
@media (max-width:760px), (orientation:portrait) { .couture-side { display: none; } }
@media (max-height:640px) { .couture-opening { inset: 14px 10px 22px; } .couture-opening-pendant { width: 108px; height: 47px; } .couture-vow-pearls { width: 78px; height: 34px; bottom: -22px; } }
@media (prefers-reduced-motion:reduce) { .couture-sway { animation: none !important; } .couture-world, .couture-world-jewel, .couture-world-album, .couture-world-meadow { transition: none; } }
body.couture-water-clear .bg-shadow { opacity: 0; }

/* v0.21：恢复有体积的华丽场景。每种大件只属于一幕，文字与照片前方不贴花。 */
.couture-scene { position: absolute; inset: 0; overflow: hidden; z-index: -1; }
.scene-object { background-size: 100% 100%; transform-origin: 50% 45%; }
.scene-object-A { opacity: 1; filter: drop-shadow(0 9px 11px #A98E781F); }
.couture-scene-A::before { content: ''; position: absolute; width: 79%; height: 78%; left: -22%; top: 18%; border-radius: 50% 50% 0 0; background: linear-gradient(112deg, #EED1DD9E, #FFFBF7B0 28%, #DFBECE50 46%, #FFF6FB00 75%); box-shadow: inset 2px 0 1px #FFF8EF; rotate: -7deg; }
.scene-object-B { opacity: .95; rotate: -12deg; filter: drop-shadow(0 10px 9px #A7778C19); }
.couture-scene-B::before { content: ''; position: absolute; width: 34%; height: 92%; left: -12%; top: 0; background: linear-gradient(90deg,#EDCDD999,#FEF1F7 52%,#F0D8E240); border-right: 1px solid #D5B67B70; transform: skewX(-9deg); }
.scene-object-F { opacity: .38; }
.scene-object-Q { opacity: .87; background-size: contain; }
.scene-object-C { opacity: 1; filter: drop-shadow(0 16px 12px #A16B821E); }
.scene-silk-upper { opacity: .68; rotate: 160deg; }
.scene-inscription { position: absolute; color: #9B753F; text-align: center; font: 400 clamp(38px,11vw,47px)/1.2 var(--display); letter-spacing: .09em; text-shadow: 0 1px 0 #FFFFFF; }
.scene-whisper { position: absolute; color: var(--text-black, #222222); text-align: center; font: 14px/1.6 var(--serif); letter-spacing: .045em; }
.scene-object-E { opacity: 1; filter: drop-shadow(0 6px 5px #967A601F); }
.scene-object-D { opacity: .78; rotate: 12deg; }
.couture-scene-D::before { content: ''; position: absolute; width: 110%; height: 30%; left: -26%; bottom: -4%; background: linear-gradient(162deg,#F0D8E695,#FFF8F09C 45%,#E7CFDE8C); border-top: 1px solid #C5A47170; border-radius: 80% 55% 0 0; rotate: 10deg; }
/* W：此容器实际终止于天水交界，无法把任何新增装饰绘到水面上。 */
.couture-scene-W { height: 40%; }
.scene-object-W { opacity: .92; -webkit-mask-image: linear-gradient(90deg,#000 0 52%,transparent 67%); mask-image: linear-gradient(90deg,#000 0 52%,transparent 67%); }
.couture-scene-I { z-index: 0; }
.scene-object-I { opacity: .83; background-size: cover; }
.scene-paper-tassel { opacity: .95; transform-origin: 50% 0; }
.scene-paper-tassel-left { opacity: .74; rotate: -10deg; }
.couture-scene-I::before { content: ''; position: absolute; inset: -4% 65% -4% -18%; background: linear-gradient(100deg,#DDB8C7,#FFF2F5 48%,#E1BFCD 61%,#F8E2ED); border-right: 2px solid #D2B08090; transform: rotate(8deg); box-shadow: 6px 0 15px #9D6B7C1A; }
/* 原来的屏风继续折叠；仅纸框与角饰随开启动作退场。 */
.couture-opening { inset: 18px 13px 28px; border-color: #C1A06E7A; }
.couture-opening-corner { width: 84px; height: 84px; opacity: .91; }
.env-go .couture-opening { animation: couture-unveil 1.8s cubic-bezier(.23,.74,.24,1) .12s both; }
@keyframes couture-unveil { 0% { opacity: 1; scale: 1; } 35% { opacity: .85; scale: 1.025; } 100% { opacity: 0; scale: 1.09; } }
/* 电脑两翼延续当前场景的物料，没有一整页重复的花纹。 */
.couture-world-jewel,.couture-world-album,.couture-world-meadow { display: none; }
.scene-side-object { width: min(115%, 390px); height: 55%; left: -16%; top: 12%; opacity: 0; transition: opacity .75s ease; }
.couture-side-right .scene-side-object { left: 1%; top: 44%; scale: -1 1; }
.couture-world[data-scene="A"] .scene-side-A,
.couture-world[data-scene="B"] .scene-side-B,
.couture-world[data-scene="F"] .scene-side-F,
.couture-world[data-scene="C"] .scene-side-C,
.couture-world[data-scene="E"] .scene-side-E,
.couture-world[data-scene="D"] .scene-side-D,
.couture-world[data-scene="I"] .scene-side-I,
.couture-world[data-scene="S"] .scene-side-I { opacity: .75; }
.scene-side-C { width: min(170%,620px); left: -55%; height: 60%; }
.couture-world[data-scene="F"] .scene-side-F { opacity: .28; }
.scene-side-I { height: 74%; opacity: 0; }
.couture-after { z-index: 0; }
.venue-paper,.rsvp-card { z-index: 1; }
.closing > :not(.couture-root) { position: relative; z-index: 1; }
.scene-venue-clock { width: min(122%,680px); height: 170px; left: calc(50% - min(61%,340px)); top: -15px; opacity: .86; }
.scene-venue-mount { width: min(170%,830px); height: 83%; left: calc(50% - min(85%,415px)); top: 9%; opacity: .72; }
.scene-reply-letter { width: min(86%,460px); height: 220px; left: calc(50% - min(43%,230px)); top: -22px; opacity: .95; rotate: -7deg; }
.couture-after-rsvp { background: linear-gradient(115deg,#ECD1DF70,transparent 24% 76%,#EACAD962); }
.couture-after-rsvp .couture-tl,.couture-after-rsvp .couture-br { width: 110px; height: 110px; opacity: .86; }
.couture-closing-bouquet { width: min(58%,250px); height: 330px; right: max(-55px,calc(50% - 335px)); bottom: -3%; opacity: .95; }
.couture-closing-cameo { width: 50px; height: 50px; }
.couture-after-closing::before { content: ''; position: absolute; width: min(72%,380px); height: 68%; left: max(-38px,calc(50% - 325px)); top: 11%; border: 1px solid #C6A679B3; border-radius: 50% 50% 6px 6px; background: linear-gradient(140deg,#FFFAF5BD,#F2DBE589 72%); rotate: -12deg; box-shadow: inset 0 0 0 6px #FFFDFB70,inset 0 0 0 7px #C7AC8140; }
/* 大件的轻微呼吸与核心转场相互独立，只在所在一幕可见时播放。 */
.couture-live .scene-object-C,.couture-live .scene-object-B { animation: material-breathe 10s ease-in-out infinite; }
.couture-live .scene-paper-tassel { animation: tassel-sway 12s ease-in-out infinite; }
@keyframes material-breathe { 0%,100% { translate: 0 0; } 50% { translate: 0 -4px; } }
@keyframes tassel-sway { 0%,100% { rotate: -2deg; } 50% { rotate: 2deg; } }
.couture-static .scene-object,.couture-static .scene-paper-tassel { animation: none !important; }
@media (max-height:680px) { .scene-inscription { display: none; } .scene-whisper { display: none; } }
@media (prefers-reduced-motion:reduce) { .scene-object,.scene-paper-tassel,.env-go .couture-opening { animation: none !important; } .scene-side-object { transition: none; } }
@media (max-height:480px) { .scene-opening-crown { width: min(90%,280px); left: calc(50% - min(45%,140px)); top: -6%; } }

/* Simple browsing restores a root that may have been faded during handoff. */
.simple .couture-scene-I { opacity: 1 !important; }
