/* Воздух, непрерывный шёлк и независимое от прокрутки дыхание деталей. */
:root{--paper:#faf9f6;--line:#e4e0d8;--muted:#77746e}
.date-section,.venue-section,#rsvp{overflow:visible}
.date-section:before,.venue-section:before,#rsvp:before{width:100vw;height:clamp(130px,19vw,290px);top:-100px;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201600%20300%22%20preserveAspectRatio%3D%22none%22%20fill%3D%22none%22%3E%0A%3Cdefs%3E%3ClinearGradient%20id%3D%22silk%22%20x1%3D%220%22%20y1%3D%2230%22%20x2%3D%220%22%20y2%3D%22260%22%20gradientUnits%3D%22userSpaceOnUse%22%3E%3Cstop%20stop-color%3D%22%23b13c49%22%20stop-opacity%3D%22.06%22%2F%3E%3Cstop%20offset%3D%22.3%22%20stop-color%3D%22%23c25461%22%20stop-opacity%3D%22.22%22%2F%3E%3Cstop%20offset%3D%22.48%22%20stop-color%3D%22%238d2339%22%20stop-opacity%3D%22.34%22%2F%3E%3Cstop%20offset%3D%22.64%22%20stop-color%3D%22%23e3a1aa%22%20stop-opacity%3D%22.13%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23b44759%22%20stop-opacity%3D%22.04%22%2F%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22edge%22%3E%3Cstop%20stop-color%3D%22%23a9374d%22%20stop-opacity%3D%22.12%22%2F%3E%3Cstop%20offset%3D%22.5%22%20stop-color%3D%22%23d28792%22%20stop-opacity%3D%22.46%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23a9374d%22%20stop-opacity%3D%22.12%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%0A%3Cpath%20d%3D%22M-40%20116C230%2010%20375%20256%20660%20146S1100%2031%201320%20135S1515%20222%201640%20142L1640%20211C1470%20287%201470%20219%201290%20193S1000%2065%20686%20192S240%2086-40%20177Z%22%20fill%3D%22url(%23silk)%22%2F%3E%0A%3Cpath%20d%3D%22M-40%20135C230%2028%20380%20269%20670%20163S1100%2049%201314%20152S1515%20239%201640%20159%22%20stroke%3D%22url(%23edge)%22%20stroke-width%3D%221.2%22%2F%3E%0A%3Cpath%20d%3D%22M-40%20164C245%2062%20380%20281%20682%20184S1066%2087%201300%20183S1490%20259%201640%20190%22%20stroke%3D%22%23e7bac2%22%20stroke-opacity%3D%22.24%22%2F%3E%0A%3Cpath%20d%3D%22M-40%20120C230%2014%20375%20259%20664%20149S1100%2034%201318%20138S1515%20224%201640%20145%22%20stroke%3D%22%23b24b60%22%20stroke-opacity%3D%22.13%22%2F%3E%0A%3C%2Fsvg%3E%0A");background-size:100% 100%;filter:none;opacity:.85;animation:silk-breath 19s ease-in-out infinite}
.venue-section:before{opacity:.65;animation-delay:-8s}
#rsvp:before{opacity:.75;animation-delay:-13s}
.venue-section,.wishes-section{background:linear-gradient(180deg,var(--paper),#f0eeea55 45%,var(--paper))}
.event-number,.small-index{display:none}
.event-scene{border:0;min-height:460px;padding:55px 25px;gap:65px}
.event-info{opacity:var(--event-progress);transform:translateY(calc((1 - var(--event-progress))*18px))}
.event-art:has(.event-sketch){transform:translateY(calc((1 - var(--event-progress))*20px))}
.reveal{transform:translateY(16px);transition:opacity 2.6s cubic-bezier(.22,.61,.36,1),transform 3s cubic-bezier(.22,.61,.36,1)}
.portrait-heading.reveal{transition:opacity 2.6s ease,transform 3s ease}
.portrait-heading.reveal.visible{opacity:var(--portrait-clear,1)}
.grand-opening{height:260vh}.envelope-scroll{height:300vh}.rings-scroll{height:130vh;min-height:0;margin-top:-7vh}
.rings-stage{height:78svh;min-height:510px}
.section-pad{padding-top:60px;padding-bottom:60px}
.portrait-section{padding-top:70px;padding-bottom:30px}
.portrait-note{margin-top:12px}
.calendar-wrap{margin-top:30px}
.date-section,.venue-section,#rsvp{padding-top:115px}
.photo-interlude{padding-top:35px;padding-bottom:75px}
.invitation-card{border-radius:12px;box-shadow:0 5px 30px #7066570b,inset 0 0 0 1px #e5e1d755;line-height:1.9;animation:letter-breath 15s ease-in-out infinite}
.invitation-card p:not(.card-names){line-height:1.85}
.envelope-front{filter:drop-shadow(0 -1px 4px #0000000b)}
.portrait-frame{border-radius:12px;background:#fffdf9;box-shadow:0 12px 45px #5550450a;animation:photo-breath 17s ease-in-out infinite;--rest-angle:-5deg}
.portrait-frame img{object-fit:contain;background:#eef0ee;object-position:50% 50%;border-radius:5px}
.photo-memory{border-radius:10px;animation:photo-breath 19s ease-in-out infinite;--rest-angle:8deg;animation-delay:-6s}
.memory-evening{--rest-angle:5deg;animation-duration:22s;animation-delay:-12s}
.photo-memory img{border-radius:4px;object-position:60% 35%}
.interlude-frame{border-radius:13px;animation:interlude-breath 21s ease-in-out infinite}
.interlude-frame img{mask-image:none;-webkit-mask-image:none;aspect-ratio:auto;height:auto;object-fit:contain;border-radius:5px}
.event-sketch{animation:sketch-breath 18s ease-in-out infinite;opacity:.8}
.event-signature .event-sketch{animation-delay:-4s}.event-doors .event-sketch{animation-delay:-9s}.event-table .event-sketch{animation-delay:-13s}
.event-signature .event-art:has(.event-sketch){max-width:320px}
.event-signature .event-sketch{aspect-ratio:2/3}
.ring{animation:ring-breath 19s ease-in-out infinite}.ring-two{animation-delay:-8s;animation-duration:23s}
.calendar{border:1px solid #dfd9cd80;border-radius:30px;background:#ffffff45;box-shadow:0 12px 55px #70645106;padding:45px 36px}
.calendar-grid .wedding-day{background:#93535a;color:#fff;box-shadow:0 0 0 5px #ac69720b}
.countdown{gap:12px;margin-top:36px}.countdown div{border:0;border-radius:20px;padding:20px 16px;background:#ffffff52}
.countdown span{color:#62584f;font-size:clamp(48px,6vw,78px)}.countdown small{color:#82776b}
.form-section input:not([type=radio]),textarea,.choice span{border-radius:16px;border-color:#d5cfc47a;background:#ffffff36}
.black-button{border-radius:40px;background:#53564e;border-color:#53564e}
.outline-button,.event-routes a{border:1px solid #ccc3b685;border-radius:40px;background:#ffffff62;padding:13px 20px;font-size:12px;line-height:1.5;transition:background .4s,box-shadow .4s,transform .4s}
.outline-button:hover,.event-routes a:hover{background:#fff;box-shadow:0 4px 18px #6256460b;transform:translateY(-2px)}
.event-routes{gap:10px;margin-top:22px}.route-hint{font-size:12px!important;color:#817a70!important;line-height:1.8!important;margin-top:16px!important;max-width:390px}
.botanical{position:absolute;width:clamp(170px,23vw,330px);height:620px;pointer-events:none;background:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20320%20620%22%20fill%3D%22none%22%3E%3Cg%20stroke%3D%22%23a29487%22%20stroke-width%3D%221.1%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%0A%3Cpath%20d%3D%22M54%20620C145%20455%2086%20267%20199%20120M120%20445C183%20408%20230%20359%20246%20295M127%20334C62%20305%2048%20255%2043%20207M137%20289C169%20238%20240%20228%20261%20191%22%2F%3E%0A%3Cpath%20d%3D%22M123%20448C85%20437%2055%20406%2051%20369C87%20379%20117%20414%20123%20448ZM131%20396C171%20390%20195%20365%20202%20337C163%20345%20138%20369%20131%20396ZM124%20348C86%20341%2068%20317%2066%20290C102%20301%20122%20320%20124%20348ZM140%20274C172%20271%20200%20250%20201%20222C170%20231%20147%20250%20140%20274ZM162%20203C124%20196%20109%20170%20110%20146C141%20161%20158%20181%20162%20203ZM185%20153C219%20147%20236%20127%20239%20103C210%20109%20191%20127%20185%20153Z%22%2F%3E%0A%3Cg%20transform%3D%22translate(200%20103)%22%3E%3Cpath%20d%3D%22M0%2015C-20%209-38-9-29-27C-13-34-2-19%200-5C4-25%2016-39%2031-28C40-11%2020%205%207%2012C29%205%2046%2014%2039%2031C26%2046%209%2030%203%2021C4%2042-10%2054-24%2041C-35%2025-17%2014%200%2015Z%22%2F%3E%3Cpath%20d%3D%22M-4%2011C-9-4%202-14%2012-6C24%205%2010%2020-1%2019C-10%2018-14%208-4%2011Z%22%2F%3E%3Ccircle%20cx%3D%224%22%20cy%3D%2210%22%20r%3D%224%22%2F%3E%3C%2Fg%3E%0A%3Cg%20transform%3D%22translate(247%20281)%20scale(.8)%20rotate(25)%22%3E%3Cpath%20d%3D%22M0%2015C-20%209-38-9-29-27C-13-34-2-19%200-5C4-25%2016-39%2031-28C40-11%2020%205%207%2012C29%205%2046%2014%2039%2031C26%2046%209%2030%203%2021C4%2042-10%2054-24%2041C-35%2025-17%2014%200%2015Z%22%2F%3E%3Ccircle%20cx%3D%224%22%20cy%3D%2210%22%20r%3D%225%22%2F%3E%3C%2Fg%3E%0A%3Cg%20transform%3D%22translate(43%20198)%20scale(.6)%20rotate(-22)%22%3E%3Cpath%20d%3D%22M0%2015C-20%209-38-9-29-27C-13-34-2-19%200-5C4-25%2016-39%2031-28C40-11%2020%205%207%2012C29%205%2046%2014%2039%2031C26%2046%209%2030%203%2021C4%2042-10%2054-24%2041C-35%2025-17%2014%200%2015Z%22%2F%3E%3Ccircle%20cx%3D%224%22%20cy%3D%2210%22%20r%3D%225%22%2F%3E%3C%2Fg%3E%0A%3C%2Fg%3E%3C%2Fsvg%3E%0A") center/contain no-repeat;opacity:.18;z-index:-1;animation:flower-breath 23s ease-in-out infinite;transform-origin:center bottom}
.botanical-left{left:-70px;top:70px}.botanical-right{right:-60px;bottom:45px;scale:-1 1;animation-delay:-9s}
.portrait-section,.program-section,.photo-interlude,#rsvp,#wishes,.date-section{position:relative;isolation:isolate}
.hourglass-scene{margin:36px auto 0;width:125px;text-align:center}
.hourglass{width:110px;height:182px;display:block;margin:auto;overflow:visible}
.hourglass-turn{transform-origin:80px 125px}.hourglass-scene.turning .hourglass-turn{animation:hourglass-turn 2.2s cubic-bezier(.45,0,.25,1)}
.hourglass-glass{fill:#ffffff48;stroke:#b2a99c;stroke-width:1.1}
.hourglass-sand{fill:#c3ab87;opacity:.65}.sand-stream{stroke:#c3ab87;stroke-width:1;stroke-dasharray:1 4;animation:sand-flow 1.8s linear infinite;opacity:0}
.hourglass-scene.running .sand-stream{opacity:.65}.hourglass-caption{font:italic 17px/1.5 var(--serif);color:#8d8172;margin-top:6px;white-space:nowrap;position:relative;left:50%;transform:translateX(-50%);width:210px}
.hourglass-scene.turning .hourglass-sand,.hourglass-scene.turning .sand-stream{opacity:0}
@keyframes sand-flow{to{stroke-dashoffset:-15}}
@keyframes hourglass-turn{from{transform:rotate(-180deg)}to{transform:rotate(0deg)}}
@keyframes silk-breath{0%,100%{translate:0 0}50%{translate:0 7px}}
@keyframes photo-breath{0%,100%{rotate:-.65deg;translate:0 0}50%{rotate:.65deg;translate:0 -5px}}
@keyframes interlude-breath{0%,100%{rotate:-.4deg}50%{rotate:.4deg}}
@keyframes letter-breath{0%,100%{rotate:-.3deg}50%{rotate:.3deg}}
@keyframes sketch-breath{0%,100%{rotate:-.5deg;translate:0 0}50%{rotate:.5deg;translate:0 -4px}}
@keyframes ring-breath{0%,100%{translate:0 0;rotate:-.7deg}50%{translate:0 -7px;rotate:.7deg}}
@keyframes flower-breath{0%,100%{rotate:-1.5deg}50%{rotate:1.5deg}}
@media(max-width:700px){
 .date-section:before,.venue-section:before,#rsvp:before{top:-65px;height:160px}
 .section-pad{padding-top:44px;padding-bottom:44px}
 .portrait-section{padding-top:65px;padding-bottom:20px;gap:24px}
 .portrait-note{margin-top:0;font-size:24px}
 .rings-scroll{height:120vh;margin-top:-8vh}
 .rings-stage{height:72svh;min-height:440px}
 .event-scene{min-height:0;padding:32px 0 48px;gap:15px}.event-art:has(.event-sketch){max-width:280px}
 .event-signature .event-art:has(.event-sketch){max-width:250px}
 .date-section,.venue-section,#rsvp{padding-top:95px}
 .calendar-wrap{margin-top:25px}
 .photo-interlude{padding-top:24px;padding-bottom:65px;gap:32px}
 .countdown{gap:5px}.countdown div{padding:16px 6px;border-radius:16px}.countdown span{font-size:45px}.countdown small{font-size:8px}
 .calendar{padding:34px 23px;border-radius:24px}.botanical{width:180px;height:440px;opacity:.13}.botanical-left{left:-100px}.botanical-right{right:-105px}
 .photo-memory{right:-1%}.portrait-frame{width:80%}.route-hint{margin-left:auto;margin-right:auto}.hourglass-scene{margin-top:27px}
}
@media(prefers-reduced-motion:reduce){
 .date-section:before,.venue-section:before,#rsvp:before,.invitation-card,.portrait-frame,.photo-memory,.interlude-frame,.event-sketch,.ring,.botanical,.hourglass-turn,.sand-stream{animation:none!important;rotate:none;translate:none}
 .grand-opening,.envelope-scroll,.rings-scroll{height:auto}.rings-scroll{margin-top:0}.reveal,.portrait-heading.reveal{transition:none}
 .hourglass-scene.running .sand-stream{opacity:0}.event-info{opacity:1;transform:none}
}

main{overflow-x:clip}
.date-section:before,.venue-section:before,#rsvp:before{background-image:url('assets/crimson-silk-ribbon.png');background-size:100% 280%;background-position:center;filter:grayscale(1) brightness(1.32);opacity:.43}
.venue-section:before{opacity:.36}#rsvp:before{opacity:.39}
