/* Бумажные фотографии и спокойные переходы по мотивам видеореференса. */
.grand-opening{height:285vh;position:relative}
.grand-stage{position:sticky;top:0;height:100svh;min-height:0;overflow:hidden;isolation:isolate;perspective:1800px;background:var(--paper)}
.grand-paper{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 35%,#fdfdfb,var(--paper) 70%)}
.grand-copy{position:absolute;top:43%;left:5%;width:90%;text-align:center;opacity:var(--intro-copy,0);transform:translateY(calc((1 - var(--intro-copy,0))*18px));filter:blur(calc((1 - var(--intro-copy,0))*3px))}
.grand-copy h1{justify-content:center;font-size:clamp(65px,8vw,126px);margin:22px 0 20px;gap:22px}
.grand-copy h1 i{font-size:.65em;color:#92938a}.grand-copy .eyebrow{font-size:11px;letter-spacing:.24em}
.grand-date{font:26px var(--serif);letter-spacing:.22em}.grand-line{display:block;width:38px;height:1px;background:var(--line);margin:27px auto}.grand-note{font:italic 25px var(--serif);color:var(--muted)}
.paper-flap{position:absolute;inset:0;background-color:#e9eae3;background-image:linear-gradient(125deg,#fff5,#8b8d8012),url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22260%22%20height%3D%22360%22%20viewBox%3D%220%200%20260%20360%22%20fill%3D%22none%22%3E%3Cg%20stroke%3D%22%239b9d90%22%20stroke-width%3D%22.7%22%20opacity%3D%22.35%22%3E%3Cpath%20d%3D%22M35%20320C89%20229%2080%20145%20172%2035M81%20218C32%20195%2027%20165%2039%20159C64%20172%2072%20185%2081%20218ZM89%20187C130%20178%20151%20159%20145%20150C121%20151%20106%20166%2089%20187ZM104%20137C59%20117%2054%2094%2066%2089C89%20101%2097%20119%20104%20137ZM130%2090C160%2086%20181%2070%20173%2062C150%2064%20138%2074%20130%2090ZM156%2057C125%2043%20118%2022%20128%2017C145%2029%20151%2040%20156%2057ZM55%20277C82%20285%20103%20275%20101%20265C76%20260%2066%20267%2055%20277Z%22%2F%3E%3Cpath%20d%3D%22M214%20330C196%20271%20210%20230%20172%20190M208%20277C233%20264%20241%20246%20232%20242C216%20251%20210%20264%20208%20277ZM202%20247C181%20244%20168%20232%20174%20225C190%20227%20195%20235%20202%20247ZM192%20219C209%20213%20216%20195%20210%20191C197%20198%20193%20207%20192%20219Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A');background-size:auto,260px 360px;backface-visibility:hidden;will-change:transform;filter:drop-shadow(0 2px 6px #31322d28)}
.flap-top{clip-path:polygon(0 0,100% 0,50% 52%);z-index:5;transform-origin:50% 0;transform:rotateX(calc(var(--fold,0)*105deg)) translateY(calc(var(--fold,0)*-12vh))}
.flap-bottom{clip-path:polygon(0 100%,50% 48%,100% 100%);z-index:3;transform-origin:50% 100%;transform:rotateX(calc(var(--fold,0)*-105deg)) translateY(calc(var(--fold,0)*12vh));background-color:#e5e6df}
.flap-left{clip-path:polygon(0 0,52% 50%,0 100%);z-index:4;transform-origin:0 50%;transform:rotateY(calc(var(--fold,0)*-105deg)) translateX(calc(var(--fold,0)*-15vw))}
.flap-right{background:none;z-index:6;transform-origin:100% 50%;transform:rotateY(calc(var(--fold,0)*105deg)) translateX(calc(var(--fold,0)*15vw));filter:none}
.flap-right:before{content:'';position:absolute;inset:0;clip-path:polygon(100% 0,100% 100%,48% 50%);background:#e7e8e1 url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22260%22%20height%3D%22360%22%20viewBox%3D%220%200%20260%20360%22%20fill%3D%22none%22%3E%3Cg%20stroke%3D%22%239b9d90%22%20stroke-width%3D%22.7%22%20opacity%3D%22.35%22%3E%3Cpath%20d%3D%22M35%20320C89%20229%2080%20145%20172%2035M81%20218C32%20195%2027%20165%2039%20159C64%20172%2072%20185%2081%20218ZM89%20187C130%20178%20151%20159%20145%20150C121%20151%20106%20166%2089%20187ZM104%20137C59%20117%2054%2094%2066%2089C89%20101%2097%20119%20104%20137ZM130%2090C160%2086%20181%2070%20173%2062C150%2064%20138%2074%20130%2090ZM156%2057C125%2043%20118%2022%20128%2017C145%2029%20151%2040%20156%2057ZM55%20277C82%20285%20103%20275%20101%20265C76%20260%2066%20267%2055%20277Z%22%2F%3E%3Cpath%20d%3D%22M214%20330C196%20271%20210%20230%20172%20190M208%20277C233%20264%20241%20246%20232%20242C216%20251%20210%20264%20208%20277ZM202%20247C181%20244%20168%20232%20174%20225C190%20227%20195%20235%20202%20247ZM192%20219C209%20213%20216%20195%20210%20191C197%20198%20193%20207%20192%20219Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A');background-size:260px 360px;filter:drop-shadow(-2px 0 6px #31322d28)}
.opening-seal{position:absolute;width:155px;left:50%;top:50%;transform:translate(-50%,-50%);filter:drop-shadow(2px 5px 6px #33333321)}
.opening-butterfly{position:absolute;left:50%;top:50%;width:160px;aspect-ratio:3/2;transform:translate(-50%,calc(-50% - var(--butterfly,0)*26vh)) scale(calc(.6 + var(--butterfly,0)*.4));opacity:var(--butterfly,0);z-index:2;perspective:500px;filter:drop-shadow(3px 11px 9px #37382f26);pointer-events:none}
.butterfly-wing{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform;animation:wing-beat-left 1.9s ease-in-out infinite alternate}
.butterfly-wing img{display:block;width:100%;height:auto}
.wing-left{clip-path:inset(0 50% 0 0)}.wing-right{clip-path:inset(0 0 0 50%);animation-name:wing-beat-right}
@keyframes wing-beat-left{from{transform:rotateY(-9deg)}to{transform:rotateY(49deg)}}
@keyframes wing-beat-right{from{transform:rotateY(9deg)}to{transform:rotateY(-49deg)}}
.grand-cue{position:absolute;bottom:30px;left:0;width:100%;z-index:8;display:flex;gap:15px;align-items:center;justify-content:center;font-size:11px;letter-spacing:.08em;color:#5d5e56;opacity:calc(1 - var(--opening-progress,0)*4)}
.grand-cue b{font:26px var(--serif)}
.envelope-stage{overflow:clip}
.envelope-object{z-index:2}
.feather{position:absolute;width:clamp(190px,24vw,340px);z-index:1;pointer-events:none;opacity:calc(var(--feather-appear,0)*.82);filter:drop-shadow(2px 8px 10px #40413d16);will-change:transform,opacity}
.feather img{display:block;width:100%;height:auto;animation:feather-drift 14s ease-in-out infinite alternate;will-change:transform}
.feather-left{left:calc(50% - min(49vw,530px));top:46%;transform:translate3d(calc(var(--progress,0)*-25px),calc(var(--progress,0)*-40px),0) rotate(-32deg)}
.feather-right{right:calc(50% - min(49vw,530px));top:22%;transform:translate3d(calc(var(--progress,0)*30px),calc(var(--progress,0)*34px),0) rotate(143deg)}
.feather-right img{animation-name:feather-drift-other;animation-duration:17s;animation-delay:-6s}
@keyframes feather-drift{from{transform:translate3d(-4px,8px,0) rotate(-4deg)}to{transform:translate3d(9px,-12px,0) rotate(5deg)}}
@keyframes feather-drift-other{from{transform:translate3d(7px,-7px,0) rotate(4deg)}to{transform:translate3d(-8px,10px,0) rotate(-5deg)}}
.reveal{transition:opacity 1.35s cubic-bezier(.22,.61,.36,1),transform 1.55s cubic-bezier(.22,.61,.36,1)}
.program-section{padding-bottom:65px}
#program.timeline{max-width:1030px;padding:0;border:0;margin-top:70px}
.event-scene{--event-progress:0;display:grid;grid-template-columns:1fr 1.1fr;gap:65px;align-items:center;min-height:430px;padding:55px 25px;border-top:1px solid var(--line);position:relative}
.event-scene:nth-child(even) .event-art{order:2}.event-scene:nth-child(even) .event-info{order:1}
.event-art{width:100%;max-width:330px;margin:auto;color:#75766b;transform:translateY(calc((1 - var(--event-progress))*18px));opacity:calc(.18 + var(--event-progress)*.82)}
.event-art svg{display:block;width:100%;height:auto;overflow:visible}
.event-info{transform:translateY(calc((1 - var(--event-progress))*24px));opacity:calc(.25 + var(--event-progress)*.75)}
.event-number{font-size:10px;letter-spacing:.22em;color:var(--muted)}
#program time{font-size:47px;margin-top:18px;line-height:1}
#program h3{font-size:43px;line-height:1.1;margin-top:12px}
#program .event-info>p{font-size:14px;line-height:1.75;max-width:360px}
#program .event-place{font-size:16px;color:var(--ink);margin-top:22px}
#program .event-address{margin-top:4px;font-size:13px}
.event-routes{display:flex;gap:20px;flex-wrap:wrap;margin-top:20px}
.event-routes a{font-size:12px;border-bottom:1px solid #a7a89e;padding-bottom:4px}
.event-routes a:hover{border-color:var(--ink)}
.church-lines path{stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--event-progress))}
.church-halo{opacity:var(--event-progress)}
.candle{opacity:var(--event-progress);transform:translateY(calc((1 - var(--event-progress))*8px))}
.flame{transform-origin:center;transform-box:fill-box;animation:candle-light 4.5s ease-in-out infinite alternate}
@keyframes candle-light{from{opacity:.5;transform:scale(.92,1)}to{opacity:.9;transform:scale(1,1.05)}}
.signature-line{stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--event-progress))}
.signature-pen{transform:translate(calc((1 - var(--event-progress))*-70px),calc((1 - var(--event-progress))*22px)) rotate(calc((1 - var(--event-progress))*-12deg));transform-origin:190px 141px;opacity:calc(1 - var(--event-progress)*.65)}
.certificate{opacity:calc(.35 + var(--event-progress)*.65)}
.door-left{transform-origin:92px 150px;transform:perspective(350px) rotateY(calc(var(--event-progress)*-72deg))}
.door-right{transform-origin:188px 150px;transform:perspective(350px) rotateY(calc(var(--event-progress)*72deg))}
.door-branches{opacity:var(--event-progress)}
.table-base{transform:translateY(calc((1 - var(--event-progress))*15px))}
.table-flowers{opacity:clamp(0,calc(var(--event-progress)*2 - .3),1);transform:translateY(calc((1 - var(--event-progress))*-20px))}
.table-setting{opacity:clamp(0,calc(var(--event-progress)*2 - .7),1);transform:translateY(calc((1 - var(--event-progress))*-8px))}
.portrait-section{position:relative;z-index:5;margin-top:-70vh;padding-top:85px}
.photo-composition{position:relative;width:100%;height:650px;max-width:600px;margin:auto;isolation:isolate}
.portrait-frame{position:absolute;left:0;top:35px;width:78%;height:560px;margin:0;background:#fff;outline:none;border:14px solid #fff;border-bottom-width:54px;transform:rotate(-5deg);box-shadow:0 12px 38px #20211f12}
.portrait-frame img{display:block;object-fit:cover}
.photo-caption{bottom:-36px;font:italic 19px var(--serif);letter-spacing:.025em;color:var(--ink)}
.photo-memory{position:absolute;width:32%;margin:0;padding:8px 8px 32px;background:#fff;box-shadow:0 8px 25px #20211f1a;z-index:2}
.photo-memory img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;filter:grayscale(1)}
.photo-memory figcaption{position:absolute;left:0;bottom:6px;width:100%;text-align:center;font:italic 16px var(--serif)}
.memory-close{right:-2%;top:62px;transform:rotate(8deg)}
.memory-evening{right:0;bottom:47px;transform:rotate(5deg)}
.photo-interlude{max-width:1200px;margin:auto;display:grid;grid-template-columns:1.1fr 1fr;gap:85px;align-items:center;padding-top:65px}
.interlude-frame{margin:0;padding:12px 12px 42px;background:#fff;box-shadow:0 10px 32px #20211f12;transform:rotate(-3deg)}
.interlude-frame img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;filter:grayscale(1)}
.interlude-frame figcaption{font:italic 20px var(--serif);text-align:center;padding-top:18px}
.interlude-copy h2{font-size:clamp(48px,5.3vw,76px);margin:25px 0}
.interlude-copy>p:last-child{font-size:15px;color:var(--muted)}
.envelope-scroll{height:360vh;min-height:0}
.envelope-stage{min-height:0;--scene-exit:0}
.envelope-object{top:var(--envelope-top,45vh);opacity:calc((.65 + var(--appear,0)*.35)*(1 - var(--scene-exit,0)));transform:translateY(calc((1 - var(--appear,0))*35px + var(--scene-exit,0)*24px)) scale(calc(1 - var(--scene-exit,0)*.035))}
.opening-title{padding-top:75px;opacity:calc(1 - var(--progress,0)*5)}
.invitation-card{background:#fdfdfb;border-radius:1px}
.card-window{clip-path:inset(-200vh 0 8% 0)}
.envelope-stage .scroll-cue{bottom:30px}
.photo-composition.reveal{transform:translateY(25px)}
.photo-composition.visible{transform:none}
.interlude-frame.reveal{transform:translateY(25px) rotate(-3deg)}
.interlude-frame.visible{transform:rotate(-3deg)}
@media(max-width:700px){
  .grand-copy{top:39%;left:7%;width:86%}.grand-copy h1{flex-direction:column;font-size:clamp(57px,16vw,86px);gap:0;line-height:.9;margin:26px 0}
  .grand-copy h1 i{font-size:.55em;margin:8px 0}.grand-copy .eyebrow{font-size:9px;letter-spacing:.17em;max-width:240px;margin:auto}
  .grand-date{font-size:22px}.grand-note{font-size:22px}.grand-line{margin:23px auto}
  .opening-seal{width:120px}.opening-butterfly{width:125px;transform:translate(-50%,calc(-50% - var(--butterfly,0)*27vh)) scale(calc(.6 + var(--butterfly,0)*.4))}
  .paper-flap{background-size:auto,200px 277px}.flap-right:before{background-size:200px 277px}
  #program.timeline{margin-top:45px}
  .event-scene{grid-template-columns:1fr;gap:12px;padding:30px 0 45px;min-height:0;text-align:center}
  .event-scene:nth-child(even) .event-art,.event-scene:nth-child(even) .event-info{order:initial}
  .event-art{max-width:225px}.event-info>p{margin-left:auto;margin-right:auto}
  #program time{font-size:42px;margin-top:15px}#program h3{font-size:38px}
  .event-routes{justify-content:center;gap:22px}
  .feather{width:145px;opacity:calc(var(--feather-appear,0)*.68)}
  .feather-left{left:-38px;top:54%}.feather-right{right:-38px;top:12%}
  .portrait-section{gap:32px;padding-top:85px;padding-bottom:75px}
  .portrait-heading h2{font-size:clamp(67px,18vw,88px)}
  .photo-composition{height:460px;max-width:390px;width:calc(100% - 12px)}
  .portrait-frame{top:30px;left:0;width:78%;height:380px;border-width:9px;border-bottom-width:43px}
  .photo-caption{bottom:-29px;font-size:16px}
  .photo-memory{width:33%;padding:6px 6px 26px}
  .photo-memory figcaption{font-size:12px;bottom:6px}
  .memory-close{top:55px;right:-2%}.memory-evening{bottom:25px;right:-1%}
  .portrait-note{font-size:27px;margin-top:0}
  .photo-interlude{grid-template-columns:1fr;gap:55px;padding-top:10px;padding-bottom:85px}
  .interlude-frame{max-width:450px;width:calc(100% - 12px);margin:auto}
  .interlude-frame figcaption{font-size:18px}
  .interlude-copy{text-align:center}.interlude-copy h2{font-size:61px}
  .opening-title{padding-top:65px}.opening-title h1{font-size:clamp(47px,12vw,78px)}
  .envelope-object{height:auto;aspect-ratio:3/2;max-height:none}
  .invitation-card{left:15%;width:70%;padding:23px 20px calc(20px + 19.5%);min-height:0}
  .invitation-card h2{font-size:30px;line-height:1.05}
  .invitation-card p:not(.card-names){font-size:13px;line-height:1.6}
  .envelope-stage .scroll-cue{bottom:35px}
}
@media(max-width:360px){.photo-composition{height:410px}.portrait-frame{height:340px}.invitation-card{left:16%;width:68%;padding-left:17px;padding-right:17px}.invitation-card h2{font-size:27px}.invitation-card p:not(.card-names){font-size:12px}.card-names{font-size:24px}.interlude-copy h2{font-size:54px}}
@media(prefers-reduced-motion:reduce){
  .grand-opening{height:auto}.grand-stage{position:relative;height:850px}.paper-flap,.grand-cue{display:none}
  .grand-copy{opacity:1;transform:none;filter:none}.opening-butterfly{opacity:1;top:22%;transform:translate(-50%,-50%)}.butterfly-wing{animation:none}
  .event-scene{--event-progress:1!important}.event-art,.event-info,.candle,.table-base,.table-flowers,.table-setting{transform:none}.flame{animation:none}.signature-pen{display:none}
  .feather{display:none}.reveal{transition:none}.envelope-stage{overflow:visible}
  .portrait-section{margin-top:0}
  .envelope-scroll{height:auto}.envelope-stage{height:auto;min-height:800px;padding-bottom:30px}
  .opening-title{position:relative;padding-top:70px;opacity:1;transform:none}
  .envelope-object{position:relative;top:auto;margin-top:290px;opacity:1;transform:none;--open:1;--card:1}
  .envelope-stage .scroll-cue{display:none}
  .photo-composition.reveal,.photo-composition.visible{transform:none}
  .interlude-frame.reveal,.interlude-frame.visible{transform:rotate(-3deg)}
  @media(max-width:700px){.envelope-object{margin-top:370px}}
}
