:root{--paper:#f7f7f4;--ink:#20211f;--muted:#6d6d67;--line:#d7d7d0;--serif:'Cormorant Garamond',Georgia,serif;--sans:'Manrope',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.7 var(--sans);overflow-x:clip}body:before{content:'';position:fixed;inset:0;pointer-events:none;z-index:20;opacity:.028;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.5' filter='url(%23n)'/%3E%3C/svg%3E")}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #545550;outline-offset:5px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:300;line-height:.98}h2{font-size:clamp(48px,6.3vw,88px);letter-spacing:-.04em}h3{font-size:34px}i{font-family:var(--serif);font-weight:300} .eyebrow{font-size:12px;letter-spacing:.24em;line-height:1.8}.topbar{position:absolute;top:0;left:0;width:100%;padding:27px 5vw;display:flex;align-items:center;justify-content:space-between;z-index:10}.monogram{font:28px var(--serif);letter-spacing:.05em}.monogram span{font-style:italic;font-size:21px}.top-link{font-size:12px;letter-spacing:.04em;border-bottom:1px solid #999;padding-bottom:5px}.envelope-scroll{height:290vh;min-height:1800px}.envelope-stage{position:sticky;top:0;height:100svh;min-height:640px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;isolation:isolate}.opening-title{text-align:center;padding-top:100px;z-index:4;transform:translateY(calc(var(--progress,0)*-34px));opacity:calc(1 - var(--progress,0)*1.6)}h1{display:flex;align-items:center;gap:24px;font-size:clamp(64px,8.5vw,124px);letter-spacing:-.035em;margin:17px 0 14px}h1 i{font-size:.7em;color:#85857d}.intro-note{font-size:14px;color:var(--muted);letter-spacing:.03em}.envelope-object{position:absolute;width:min(700px,84vw);height:min(467px,56vw);top:calc(50% - 80px);perspective:1300px;transform:translateY(calc((1 - var(--appear,0)) * 35px));opacity:calc(.32 + var(--appear,0)*.68)}.envelope-back,.envelope-front,.envelope-flap{position:absolute;inset:0}.envelope-object img{width:100%;height:100%;object-fit:contain}.envelope-back{z-index:0}.envelope-front{z-index:3;clip-path:inset(49% 0 0 0)}.envelope-flap{clip-path:inset(0 0 51% 0);transform-origin:50% 49%;transform:rotateX(calc((1 - var(--open,0))*178deg));z-index:4;backface-visibility:visible;filter:brightness(calc(.92 + var(--open,0)*.08))}.invitation-card{position:absolute;left:19%;top:37%;width:62%;min-height:360px;background:#fdfdfa;padding:29px 30px 25px;text-align:center;box-shadow:0 4px 24px #33333315,inset 0 0 0 1px #e5e5df;z-index:2;transform:translateY(calc(var(--card,0)*-255px));opacity:var(--card-opacity,0)}.card-kicker{font-size:10px;letter-spacing:.21em}.invitation-card h2{font-size:34px;line-height:1.05;letter-spacing:-.025em;margin:20px 0 16px}.invitation-card p:not(.card-names){font-size:13px;line-height:1.8;color:#62625d}.card-names{font:29px var(--serif);margin:19px 0 8px}.card-date{font-size:11px;letter-spacing:.06em}.seal{position:absolute;z-index:5;top:56%;left:calc(50% - 30px);width:60px;height:60px;border-radius:46% 50% 45% 48%;background:radial-gradient(ellipse at 32% 22%,#ffffff,#d3d3cf 70%,#a9aaa4);box-shadow:2px 5px 9px #0002,inset 0 0 0 4px #ebebe780,inset 1px 1px 6px #fff;font:18px/60px var(--serif);text-align:center;color:#777870;opacity:calc(1 - var(--open,0)*3);transform:translateY(calc(var(--open,0)*40px))}.envelope-lettering{position:absolute;top:77%;width:100%;text-align:center;z-index:4;font:italic 24px var(--serif);opacity:calc(1 - var(--card,0)*3)}.scroll-cue{position:absolute;bottom:30px;display:flex;align-items:center;gap:16px;font-size:12px;color:var(--muted);letter-spacing:.07em}.scroll-cue b{height:37px;width:1px;background:#aaa;position:relative}.scroll-cue b:after{content:'';position:absolute;bottom:0;left:-3px;width:6px;height:6px;border-right:1px solid #aaa;border-bottom:1px solid #aaa;transform:rotate(45deg)}.section-pad{padding:140px max(6vw,24px)}.portrait-section{max-width:1300px;margin:auto;display:grid;grid-template-columns:1fr 1.1fr;gap:50px;align-items:center}.portrait-heading .eyebrow{margin-bottom:32px}.portrait-heading h2{font-size:clamp(75px,9vw,130px)}.portrait-heading h2 i{color:#898982;font-size:.7em}.portrait-frame{height:650px;position:relative;background:#e6e6e1;margin:0 20px;outline:1px solid #d9d9d2;outline-offset:14px}.portrait-frame img{width:100%;height:100%;object-fit:cover;filter:grayscale(1)}.photo-placeholder{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(140deg,#deded8,#efefea 48%,#d5d5cf);color:#686963}.photo-monogram{font:clamp(65px,7vw,105px) var(--serif)}.photo-monogram i{color:#999a91}.placeholder-rule{width:45px;height:1px;background:#b0b1a8;margin:30px}.photo-placeholder p{text-align:center;font:italic 26px/1.3 var(--serif)}.photo-caption{position:absolute;bottom:21px;left:0;width:100%;text-align:center;font-size:11px;letter-spacing:.25em}.portrait-note{grid-column:1/-1;text-align:center;font:italic 32px/1.35 var(--serif);margin-top:30px}.rings-scroll{height:190vh;min-height:1100px;background:#edede8}.rings-stage{position:sticky;top:0;height:100svh;min-height:620px;display:flex;align-items:center;justify-content:center;overflow:hidden}.rings-copy{text-align:center;opacity:calc(.1 + var(--ring-progress,0)*.9);transform:translateY(calc((1 - var(--ring-progress,0))*24px));z-index:2;padding:0 20px}.rings-copy h2{font-size:clamp(65px,8vw,112px);margin:28px 0}.rings-copy p:last-child{color:var(--muted);font-size:15px}.ring{position:absolute;width:clamp(220px,30vw,460px);height:clamp(220px,30vw,460px);object-fit:contain;top:calc(50% - clamp(110px,15vw,230px));filter:drop-shadow(0 18px 18px #00000010);z-index:3}.ring-one{left:calc(50% - clamp(190px,21vw,330px));transform:translateX(calc(var(--ring-progress,0)*-29vw)) rotate(calc(-15deg - var(--ring-progress,0)*20deg))}.ring-two{right:calc(50% - clamp(190px,21vw,330px));transform:translateX(calc(var(--ring-progress,0)*29vw)) rotate(calc(16deg + var(--ring-progress,0)*22deg))}.date-section{text-align:center}.date-section h2{margin-top:25px}.countdown{display:flex;justify-content:center;margin:55px auto 28px;max-width:700px}.countdown div{flex:1;border-right:1px solid var(--line);padding:0 20px}.countdown div:last-child{border:0}.countdown span{display:block;font:300 clamp(54px,7vw,88px)/1.1 var(--serif);font-variant-numeric:tabular-nums}.countdown small{display:block;margin-top:12px;font-size:11px;letter-spacing:.2em}#date-status{font:italic 24px var(--serif);color:var(--muted)}.calendar-wrap{margin-top:120px}.calendar-wrap h2{font-size:60px;margin-bottom:40px}.calendar{border:1px solid #cecec7;border-radius:4px;max-width:480px;min-height:325px;margin:auto;padding:40px 34px}.calendar-monogram{font:italic 45px var(--serif)}.calendar p{font:25px/1.35 var(--serif);margin:25px auto}.calendar-line{width:35px;height:1px;background:#bcbcb4;margin:26px auto}.calendar .eyebrow{font-size:10px;letter-spacing:.16em}.calendar h3{font-size:30px;margin-bottom:28px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:9px 5px;font-size:14px;align-items:center}.calendar-grid span{min-height:36px;display:grid;place-items:center}.calendar-grid .weekday{font-size:11px;color:var(--muted)}.calendar-grid .wedding-day{border-radius:50%;background:var(--ink);color:white;width:36px;margin:auto}.venue-section{background:#e9e9e3;display:grid;grid-template-columns:1.2fr 1fr;gap:80px;align-items:center}.venue-section h2{margin-top:30px;font-size:clamp(50px,6vw,80px)}.venue-content{border-top:1px solid #bfc0b7;padding-top:28px}.small-index{font-size:12px;letter-spacing:.16em;color:var(--muted)}.venue-content h3{margin:35px 0 20px}.venue-content p{font-size:14px;color:var(--muted)}.outline-button{display:inline-block;padding:12px 25px;border:1px solid #8c8d83;margin-top:28px;font-size:14px}.program-section{text-align:center}.program-section h2{margin-top:25px}.timeline{margin:70px auto 0;max-width:550px;text-align:left;border-left:1px solid var(--line);padding-left:45px}.timeline-pending,.timeline-item{position:relative;padding:15px 0 30px}.timeline-dot{width:9px;height:9px;border:1px solid #999b90;background:var(--paper);border-radius:50%;position:absolute;left:-50px;top:28px}.timeline h3{font-size:32px;line-height:1.15}.timeline p{color:var(--muted);font-size:14px;margin-top:15px}.timeline time{display:block;font:24px var(--serif);margin-bottom:10px}.form-section{text-align:center;border-top:1px solid var(--line)}.form-section h2{margin:25px 0 30px}.form-intro{color:var(--muted);font-size:14px}.form-section form{max-width:500px;margin:50px auto 0;text-align:left}.form-section label,legend{font-size:13px;display:block;margin-bottom:10px}.form-section input:not([type=radio]),textarea{border:1px solid #c7c8c0;border-radius:0;background:transparent;padding:17px 19px;width:100%;color:var(--ink);font-size:15px;margin-bottom:25px;min-height:57px}textarea{resize:vertical;min-height:180px}.form-section input::placeholder,textarea::placeholder{color:#85867e}fieldset{border:0;padding:0;margin:0 0 25px}.choice-row{display:flex;gap:12px}.choice{flex:1;position:relative}.choice input{position:absolute;opacity:0}.choice span{display:block;border:1px solid #c7c8c0;padding:15px;text-align:center;font-size:15px;cursor:pointer;transition:.25s}.choice input:checked+span{background:var(--ink);border-color:var(--ink);color:#fff}.choice input:focus-visible+span{outline:2px solid #545550;outline-offset:3px}.black-button{border:1px solid var(--ink);border-radius:0;background:var(--ink);color:#fff;padding:18px 20px;width:100%;font-size:14px;letter-spacing:.04em;transition:background .25s}.black-button:hover{background:#44453f}.black-button:disabled{opacity:.6;cursor:wait}.delivery-note{font-size:12px;line-height:1.6;color:var(--muted);text-align:center;margin:5px 0 23px}.form-status{font-size:13px;line-height:1.6;min-height:22px;margin-top:18px;text-align:center}.form-status.error{color:#7f342c}input[aria-invalid=true],textarea[aria-invalid=true]{border-color:#7f342c}.wishes-section{background:#f0f0eb}footer{text-align:center;padding:100px 24px 50px}.footer-names{font:clamp(43px,6vw,75px) var(--serif);margin:20px 0 45px}.footer-rule{height:1px;width:45px;background:#b8b9b0;margin:0 auto 35px}.credit{font-size:12px;color:#66675f}.music-button{position:fixed;bottom:24px;right:25px;background:#fafaf7e8;backdrop-filter:blur(10px);border:1px solid #cfcfc7;border-radius:40px;padding:12px 17px;display:flex;align-items:center;gap:10px;z-index:30;box-shadow:0 3px 15px #00000008;font-size:12px}.music-bars{display:flex;gap:3px;align-items:center;height:18px}.music-bars b{height:8px;width:1px;background:#444}.music-bars b:nth-child(2){height:16px}.music-bars b:nth-child(3){height:12px}.music-button[aria-pressed=true] b{animation:music 1s ease-in-out infinite alternate}.music-button[aria-pressed=true] b:nth-child(2){animation-delay:.3s}.music-toast{position:fixed;bottom:83px;right:25px;background:#fafaf7;border:1px solid var(--line);padding:12px 18px;max-width:290px;font-size:12px;z-index:30}.reveal{opacity:0;transform:translateY(25px);transition:opacity 1s ease,transform 1s ease}.reveal.visible{opacity:1;transform:none}@keyframes music{to{transform:scaleY(.35)}}
@media(min-width:1500px){.envelope-object{top:46%}}@media(max-width:700px){.topbar{padding:22px 22px}.top-link{font-size:10px}.envelope-stage{min-height:650px}.opening-title{padding-top:115px}h1{flex-wrap:wrap;justify-content:center;gap:9px;font-size:clamp(55px,12vw,78px)}.opening-title .eyebrow{font-size:10px}.intro-note{font-size:12px}.envelope-object{width:112vw;height:75vw;max-width:560px;max-height:373px;top:43%}.invitation-card{left:20%;width:60%;min-height:315px;padding:22px 22px 20px;transform:translateY(calc(var(--card,0)*-205px))}.invitation-card h2{font-size:29px;margin:17px 0 13px}.invitation-card p:not(.card-names){font-size:12px;line-height:1.65}.card-kicker{font-size:8px}.card-names{font-size:26px;margin:16px 0 7px}.card-date{font-size:10px}.seal{top:57%;width:48px;height:48px;left:calc(50% - 24px);font-size:15px;line-height:48px}.envelope-lettering{font-size:22px;top:79%}.scroll-cue{bottom:30px;font-size:11px}.section-pad{padding:95px 26px}.portrait-section{grid-template-columns:1fr;gap:45px}.portrait-heading{text-align:center}.portrait-heading h2{font-size:83px}.portrait-heading .eyebrow{font-size:10px;margin-bottom:25px}.portrait-frame{height:520px;max-width:430px;width:calc(100% - 28px);margin:auto}.portrait-note{font-size:25px;line-height:1.5;margin-top:10px}.rings-scroll{height:175vh}.rings-stage{min-height:570px}.ring{width:270px;height:270px;top:calc(50% - 135px)}.ring-one{left:calc(50% - 205px);transform:translateX(calc(var(--ring-progress,0)*-47vw)) rotate(calc(-15deg - var(--ring-progress,0)*20deg))}.ring-two{right:calc(50% - 205px);transform:translateX(calc(var(--ring-progress,0)*47vw)) rotate(calc(16deg + var(--ring-progress,0)*22deg))}.rings-copy h2{font-size:72px}.rings-copy .eyebrow{font-size:10px;max-width:240px;margin:auto}.rings-copy p:last-child{font-size:13px}.countdown{margin-top:45px}.countdown div{padding:0 8px}.countdown span{font-size:54px}.countdown small{font-size:9px;letter-spacing:.14em}.calendar-wrap{margin-top:90px}.calendar{padding:30px 20px;min-height:310px}.calendar .eyebrow{font-size:9px}.venue-section{grid-template-columns:1fr;gap:55px}.venue-section h2{font-size:55px}.venue-content h3{font-size:32px}.timeline{padding-left:28px;margin-top:45px}.timeline-dot{left:-33px}.timeline h3{font-size:28px}.form-section h2{font-size:55px}.form-section .eyebrow{font-size:10px}.form-section form{margin-top:38px}.music-button{bottom:15px;right:15px;padding:10px 13px;font-size:11px}.music-toast{right:15px;bottom:70px}footer{padding-bottom:85px}.footer-names{font-size:47px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.envelope-scroll{height:auto;min-height:0}.envelope-stage{position:relative;height:950px}.opening-title{opacity:1;transform:none}.envelope-object{top:520px;opacity:1;transform:none;--open:1;--card:1;--card-opacity:1}.seal,.envelope-lettering{display:none}.rings-scroll{height:auto;min-height:0}.rings-stage{height:660px;--ring-progress:1}.ring{opacity:.5}.music-button b{animation:none!important}}
/* Слои совпадают с линией сгиба исходного бумажного конверта. */
.envelope-back{clip-path:inset(44.8% 0 0 0)}
.envelope-front{clip-path:inset(44.8% 0 0 0)}
.envelope-flap{clip-path:inset(0 0 55.2% 0);transform-origin:50% 44.8%}
.envelope-object{opacity:calc(.65 + var(--appear,0)*.35)}
.invitation-card p:not(.card-names){font-size:14px;line-height:1.65}
@media(max-width:700px){.invitation-card{min-height:330px}.invitation-card p:not(.card-names){font-size:13px;line-height:1.55}}
.invitation-card{transform:translateY(calc(var(--card,0)*-430px))}
.envelope-flap{z-index:var(--flap-layer,4)}
@media(max-width:700px){.invitation-card{transform:translateY(calc(var(--card,0)*-355px))}}
@media(max-width:700px){.envelope-object{width:100%;height:66.667vw}.invitation-card{left:16%;width:68%}.scroll-cue{bottom:80px}}
@media(prefers-reduced-motion:reduce){.envelope-flap{z-index:1}}
.portrait-note{color:#44453f}
.form-intro,.venue-content p,.timeline p,.rings-copy p:last-child{font-size:16px}
.form-section input:not([type=radio]),textarea{font-size:16px}
@media(max-width:360px){.invitation-card{padding:19px 15px}.invitation-card h2{font-size:26px}.invitation-card p:not(.card-names){font-size:12px}.card-names{font-size:24px}.top-link{max-width:170px;text-align:right}}
@media(prefers-reduced-motion:reduce) and (max-width:700px){.envelope-object{top:500px}}
/* Первая сцена: золотые кольца. Конверт — без надписей и круглой печати. */
.rings-scroll{background:var(--paper)}
.ring-names{font-size:14px;letter-spacing:.18em;text-transform:uppercase}
.envelope-closure{position:absolute;z-index:5;top:66%;left:calc(50% - 18px);width:36px;height:1px;background:#bbbcb2;opacity:calc(1 - var(--open,0)*3)}
@media(prefers-reduced-motion:reduce){.envelope-closure{display:none}}
.route-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.route-links .outline-button{margin-top:0;text-align:center}
@media(max-width:700px){.route-links{flex-direction:column;align-items:stretch}}
/* Открытка лежит в кармане: выходит из V-образного выреза по швам конверта и обрезается по его дну. */
.envelope-front{clip-path:none;filter:drop-shadow(0 -1px 3px #00000020)}
.envelope-front img{clip-path:polygon(0 44.9%,15.6% 44.9%,39.1% 66.3%,60.5% 66.3%,84.4% 44.9%,100% 44.9%,100% 100%,0 100%)}
.card-window{position:absolute;inset:0;z-index:2;clip-path:inset(-200vh 0 6.6% 0)}
.invitation-card{left:20%;width:60%;top:46.2%;opacity:1;padding-bottom:calc(25px + 19.5%);transform:translateY(calc(var(--card,0)*var(--travel,360px)*-1));will-change:transform}
.envelope-flap{will-change:transform}
.envelope-stage .scroll-cue{opacity:calc(1 - var(--progress,0)*5)}
@media(max-width:700px){.invitation-card{left:17%;width:66%;padding-bottom:calc(20px + 19.5%);transform:translateY(calc(var(--card,0)*var(--travel,300px)*-1))}}
