:root{--bg:#f2f1ef;--paper:#f8f7f5;--ink:#252525;--muted:#8e8a84;--line:#2f2f2f;--dark:#232429;--soft:#ded9d1;--accent:#c9b5a4;--script:'Great Vibes',cursive;--serif:'Cormorant Garamond',serif;--sans:'Montserrat',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--serif);overflow-x:hidden}.noise{display:none !important}.site{max-width:430px;margin:0 auto;background:var(--bg);min-height:100vh;overflow:hidden;box-shadow:0 0 0 1px rgba(0,0,0,.03)}.screen{position:relative;min-height:auto;padding:74px 24px 96px}.hero.screen{min-height:100svh;padding-top:84px;padding-bottom:118px}.narrow{padding-left:28px;padding-right:28px}.gate{position:fixed;z-index:9999;inset:0;background:#cfcfcd;display:grid;place-items:center;transition:opacity .8s ease,visibility .8s ease}.gate.is-hidden{opacity:0;visibility:hidden}.gate-blur{position:absolute;inset:-10%;background:url('images/hero.jpg?v=optvpn1') center/cover no-repeat;filter:blur(22px) grayscale(.25);opacity:.28;transform:scale(1.08)}.gate-card{width:min(350px,86vw);height:560px;background:rgba(247,246,244,.76);backdrop-filter:blur(7px);border:1px solid rgba(255,255,255,.35);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:38px 24px;box-shadow:0 20px 60px rgba(0,0,0,.1);animation:gateIn 1.3s ease both}.gate-kicker{font:500 22px/1 var(--serif);letter-spacing:.32em}.gate-names{font:400 50px/1.1 var(--script);margin:24px 0 8px;color:#555}.gate-line{height:1px;width:160px;background:#444;margin:10px auto 18px}.gate-date{font:400 20px/1 var(--serif);letter-spacing:.18em;color:#68645e}.open-slider{margin-top:62px;width:260px;height:48px;border:1px solid #2c2c2c;border-radius:50px;background:transparent;position:relative;overflow:hidden;font:400 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:#222;padding:0;touch-action:manipulation}.open-track{position:absolute;inset:0;background:#24252a;transform:translateX(-101%);transition:transform .65s cubic-bezier(.2,.8,.2,1)}.open-text{position:relative;z-index:2;transition:color .35s}.open-knob{position:absolute;top:4px;left:4px;width:38px;height:38px;border-radius:50%;background:#24252a;color:#fff;display:grid;place-items:center;z-index:3;font-family:var(--serif);font-size:23px;transition:left .65s cubic-bezier(.2,.8,.2,1),background .35s}.open-slider:hover .open-knob,.open-slider.opening .open-knob{left:216px;background:#f7f5f2;color:#222}.open-slider.opening .open-track{transform:translateX(0)}.open-slider.opening .open-text{color:#fff}.music{position:fixed;z-index:80;right:22px;top:132px;width:62px;height:62px;border-radius:50%;border:0;background:rgba(188,188,188,.75);color:#fff;font-size:31px;display:grid;place-items:center;box-shadow:0 8px 28px rgba(0,0,0,.08);backdrop-filter:blur(4px)}.rsvp-sticky{position:fixed;z-index:90;left:50%;bottom:0;transform:translateX(-50%);width:min(430px,100%);height:64px;border:0;background:#232429;color:white;font:500 15px/1 var(--sans);letter-spacing:.01em;padding-bottom:env(safe-area-inset-bottom)}.top-title{padding-top:30px}.eng-line{font:500 26px/1 var(--serif);letter-spacing:.33em;white-space:nowrap;display:flex;align-items:center;gap:16px}.eng-line i{display:block;height:1px;flex:1;background:#4a4947}.hero h1,.top-title h1{font:400 50px/1.04 var(--script);margin:14px 0 58px;text-align:center;color:#55504d}.hero-photo{width:100vw;margin-left:calc(50% - 50vw);height:360px;margin-top:10px}.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center 42%;display:block}.hero-time{margin:52px 0 0 auto;width:150px;display:flex;align-items:center;gap:18px;justify-content:flex-end;font:500 26px var(--serif);letter-spacing:.22em}.hero-time span{width:52px;height:1px;background:#2d2d2d}.script-bg{position:absolute;top:70px;right:22px;font:400 72px/1 var(--script);color:rgba(97,93,88,.18);z-index:0}.dear{position:relative;font:400 48px/1.05 var(--script);margin:90px 0 24px;color:#403d39}.invite-grid{position:relative;display:grid;grid-template-columns:1fr 140px;gap:20px;align-items:start}.invite-text{font-size:17px;line-height:1.55;color:#444}.mini-photo{height:225px;margin:0}.mini-photo img,.wide-photo img,.tall img,.small img,.venue-main img,.final-photo img,.contact-photo img{width:100%;height:100%;object-fit:cover;display:block}.section-title{font:500 40px/1 var(--serif);letter-spacing:.07em;margin:62px 0 0}.script-over{font:400 76px/1 var(--script);color:rgba(95,91,86,.27);margin:-2px 0 12px 90px;position:relative;z-index:2}.wide-photo{height:300px;margin:0 20px}.day .wide-photo img{object-position:center 30%}.day-copy{width:72%;margin:28px 0 0 auto;font-size:16px;line-height:1.55;color:#555}.collage{height:680px;position:relative}.collage figure{position:absolute;margin:0;overflow:hidden}.collage .tall{left:18px;top:40px;width:205px;height:320px}.collage .small{right:15px;top:190px;width:150px;height:210px}.collage .wide{left:92px;top:420px;width:280px;height:170px}.side-script{position:absolute;right:34px;top:65px;font:400 38px/1 var(--script);color:#6b6660;transform:rotate(-90deg);transform-origin:right center}.cal-card{border:1px solid #2c2c2c;padding:26px 22px 30px;background:rgba(250,249,247,.45);margin-top:70px}.cal-card h2{font:400 44px var(--script);text-align:center;margin:0 0 6px}.month-note{text-align:center;font:500 20px var(--serif);letter-spacing:.12em;margin-bottom:20px}.week{font:500 13px var(--sans);letter-spacing:.45em;text-align:center;color:#74706b;margin-bottom:14px}.days{display:grid;grid-template-columns:repeat(7,1fr);gap:8px 6px;text-align:center;font:400 16px var(--serif)}.days span{height:26px;display:grid;place-items:center}.days .heart{position:relative;color:#fff}.days .heart:before{content:'♡';position:absolute;font-size:48px;color:#8b7070;z-index:0;line-height:1}.days .heart b{position:relative;z-index:1;color:#222;font-weight:500}.date-big{margin:54px -28px 0;display:flex;align-items:center;justify-content:center;gap:26px;font:500 54px/1 var(--serif);letter-spacing:.03em}.date-big em{font-style:normal;transform:translateY(24px);font-weight:400}.date-big span{height:1px;width:80px;background:#303030}.venue{padding-top:80px}.venue-card{background:#e2ddd3;margin:0 -24px;padding:0 0 22px}.venue-main{height:225px;margin:0}.venue-info{background:#f2f1ef;margin:-36px 28px 0;padding:20px 22px 22px;position:relative;z-index:2;box-shadow:0 16px 40px rgba(0,0,0,.06)}.label{font:500 13px var(--sans);letter-spacing:.18em;text-transform:uppercase;color:#777;margin:0 0 8px}.venue-info h2{font:500 28px/1 var(--serif);letter-spacing:.02em;margin:0 0 6px;text-transform:uppercase}.venue-info p{font-size:15px;margin:6px 0 14px;color:#5d5852}.venue-thumbs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 18px}.venue-thumbs img{height:74px;width:100%;object-fit:cover}.dark-btn{display:flex;align-items:center;justify-content:center;min-height:43px;background:#25262b;color:#fff;text-decoration:none;border:0;padding:0 18px;font:500 13px var(--sans);letter-spacing:.02em}.program{padding-top:70px;padding-bottom:110px}.program:before{content:'';position:absolute;left:28px;right:28px;top:34px;bottom:78px;border:1px solid rgba(47,47,47,.13);pointer-events:none}.program:after{content:'29.08.2026';position:absolute;right:36px;top:48px;font:400 11px/1 var(--sans);letter-spacing:.22em;color:#aaa29a;transform:rotate(90deg);transform-origin:right top}.program-head{margin-top:0;text-align:center;position:relative}.program-head:before,.program-head:after{content:'';position:absolute;top:29px;width:54px;height:1px;background:#3b3a38}.program-head:before{left:0}.program-head:after{right:0}.program-head span{display:block;font:500 28px/1 var(--serif);letter-spacing:.18em}.program-head em{font:400 70px/1 var(--script);color:#b8ada3;display:block;margin-top:-7px}.timeline{margin:38px 10px 0;padding:28px 0 8px;position:relative}.timeline:before{content:'';position:absolute;left:93px;top:0;bottom:0;width:1px;background:linear-gradient(to bottom,transparent,#2f2f2f 10%,#2f2f2f 88%,transparent)}.timeline-row{display:grid;grid-template-columns:76px 1fr;gap:28px;align-items:start;margin-bottom:34px;position:relative}.timeline-row:last-child{margin-bottom:0}.timeline-row:after{content:'';position:absolute;left:88px;top:7px;width:10px;height:10px;border-radius:50%;background:#f2f1ef;border:1px solid #2f2f2f;box-shadow:0 0 0 7px #f2f1ef}.timeline-row time{font:500 21px/1 var(--serif);letter-spacing:.14em}.timeline-row div{border-left:0;padding-left:0;min-height:48px}.timeline-row p{margin:0;font-size:21px;line-height:1.25}.timeline-row p:after{content:'';display:block;width:38px;height:1px;background:#d5d0ca;margin-top:14px}.dress{padding-top:72px}.dress-title{font:500 24px var(--serif);letter-spacing:.22em;text-align:center;margin:0 0 18px}.dress-copy{max-width:335px;margin:0 auto 18px;text-align:center;font:400 14px/1.55 var(--sans);color:#5b5752}.palette{display:flex;justify-content:center;gap:8px;margin:22px 0 38px}.palette i{width:28px;height:28px;display:block}.slider-block{margin-bottom:48px}.slider-block h3{text-align:center;font:400 28px/1 var(--serif);margin:0 0 24px}.slider-window{overflow:hidden;width:100%;height:190px}.slides{display:flex;transition:transform .55s cubic-bezier(.2,.8,.2,1);height:100%}.slide{flex:0 0 100%;display:grid;grid-template-columns:repeat(3,1fr);gap:0;height:100%}.slide img{width:100%;height:100%;object-fit:cover}.slider-nav{display:flex;align-items:center;justify-content:space-between;margin:18px 0 0}.slider-nav button{border:0;background:transparent;font:300 60px/1 var(--serif);padding:0 4px;color:#222}.slider-nav span{font:400 15px var(--sans);color:#222}.timer-line{display:flex;align-items:center;justify-content:center;gap:14px;text-align:center;text-transform:uppercase;font:500 15px/1.3 var(--sans);letter-spacing:.05em;color:#56514b;margin-top:110px}.timer-line span{height:1px;background:#2d2d2d;width:48px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:34px;text-align:center}.countdown b{display:block;font:500 48px/1 var(--serif)}.countdown span{font:400 12px var(--sans);color:#777}.wishes{padding-top:80px}.wish-card{min-height:250px;border-top:1px solid #d4d0ca;padding:40px 28px;margin:0 -4px;background:linear-gradient(180deg,rgba(224,219,211,.45),rgba(242,241,239,0))}.wish-card span{display:block;text-align:center;font-size:28px;color:#8d8378}.wish-card h2{font:400 56px/1 var(--script);text-align:center;margin:8px 0 12px;color:#67605a}.wish-card p{font:400 15px/1.6 var(--sans);text-align:center;color:#555;margin:0}.contact-title{font:400 58px/1 var(--script);text-align:center;margin:40px 0 10px;color:#57514d}.contact-list{text-align:center;font:400 15px/1.55 var(--sans);color:#555}.contact-name{font:400 50px/1 var(--script);margin:18px 0 8px;color:#57514d}.phone{display:block;color:#333;text-decoration:none;margin:8px 0 20px}.small{max-width:220px;margin:0 auto}.contact-photo{margin:50px -28px 0;height:290px}.final{padding-top:70px;text-align:center}.final-photo{height:310px;margin:0 -24px 42px}.final h2{font:500 21px/1.2 var(--serif);letter-spacing:.09em;margin:0 0 34px}.final h2 span{font:400 72px/1 var(--script);letter-spacing:0;color:#817870}.final p{font:400 14px/1.5 var(--sans);color:#555;max-width:300px;margin:0 auto 12px}.deadline{font:500 26px/1 var(--serif);letter-spacing:.25em;margin:0 0 22px}.modal{position:fixed;z-index:10000;inset:0;background:rgba(242,241,239,.96);display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:34px 20px;opacity:0;visibility:hidden;transition:.35s}.modal.open{opacity:1;visibility:visible}.modal-card{width:min(430px,100%);background:#fff;padding:30px 22px 34px;position:relative;box-shadow:0 20px 70px rgba(0,0,0,.12)}.modal-close{position:absolute;right:12px;top:8px;border:0;background:none;font-size:32px}.modal h2{font:400 22px/1.2 var(--serif);text-align:left;margin:18px 0 26px}.modal label,.modal legend{display:block;font:400 13px/1.45 var(--sans);margin:10px 0;color:#242424}.modal input[type=text]{width:100%;border:0;border-bottom:1px solid #222;height:42px;background:transparent;margin-top:6px}.modal fieldset{border:0;padding:0;margin:22px 0}.modal input[type=radio],.modal input[type=checkbox]{margin-right:8px}.reveal{opacity:0;transform:translateY(34px);transition:opacity 1s ease,transform 1s cubic-bezier(.16,.84,.32,1)}.reveal.show{opacity:1;transform:none}.delay1{transition-delay:.14s}.delay2{transition-delay:.28s}.delay3{transition-delay:.42s}.photo-reveal{overflow:hidden;background:#ddd}.photo-reveal img{filter:blur(12px);transform:scale(1.1);transition:filter 1.2s ease,transform 1.6s cubic-bezier(.16,.84,.32,1)}.photo-reveal.show img,.show.photo-reveal img{filter:blur(0);transform:scale(1)}.site:not(.started){opacity:0;transform:translateY(16px);filter:blur(6px)}.site.started{opacity:1;transform:none;filter:none;transition:opacity .9s ease,filter .9s ease,transform .9s ease}@keyframes gateIn{from{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:none}}@media (min-width:431px){body:before{content:'';position:fixed;inset:0;background:#ddd;z-index:-1}.site{min-height:100vh}.rsvp-sticky{max-width:430px}}@media (max-width:360px){.eng-line{font-size:22px}.hero h1,.top-title h1{font-size:44px}.dear{font-size:42px}.invite-grid{grid-template-columns:1fr 125px}.section-title{font-size:34px}.script-over{font-size:66px}.slider-window{height:170px}}

/* spacing refinement */
.invite.screen{padding-top:58px;padding-bottom:88px}.day.screen{padding-top:58px;padding-bottom:82px}.gallery.screen{padding-top:28px;padding-bottom:62px}.calendar.screen{padding-top:56px;padding-bottom:86px}.venue.screen{padding-top:58px;padding-bottom:88px}.dress.screen{padding-top:64px;padding-bottom:92px}.timer.screen{padding-top:58px;padding-bottom:82px}.wishes.screen{padding-top:58px;padding-bottom:82px}.contacts.screen{padding-top:58px;padding-bottom:90px}.final.screen{padding-top:58px;padding-bottom:130px}.collage{height:560px}.collage .tall{top:10px}.collage .small{top:145px}.collage .wide{top:360px}.timer-line{margin-top:28px}.contact-title{margin-top:10px}

/* added scroll side animations - keep previous design */
.reveal{will-change:opacity,transform}
.photo-reveal{opacity:0;will-change:opacity,transform}
.photo-reveal.show{opacity:1}

/* default photo slide-in */
.photo-reveal.reveal,
.photo-reveal{transform:translateX(44px) scale(.985);transition:opacity 1.05s ease, transform 1.15s cubic-bezier(.16,.84,.32,1)}
.photo-reveal.show{transform:none}

/* hero stays soft vertical like the reference opening */
.hero-photo.photo-reveal{transform:translateY(38px) scale(.985)}
.hero-photo.photo-reveal.show{transform:none}

/* text blocks slide from the left */
.invite-text.reveal,
.day-copy.reveal,
.venue-info.reveal,
.dress-copy.reveal,
.contact-list.reveal,
.final p.reveal{transform:translateX(-34px)}
.invite-text.reveal.show,
.day-copy.reveal.show,
.venue-info.reveal.show,
.dress-copy.reveal.show,
.contact-list.reveal.show,
.final p.reveal.show{transform:none}

/* headings breathe upward, not sideways */
.top-title.reveal,
.script-bg.reveal,
.dear.reveal,
.section-title.reveal,
.script-over.reveal,
.program-head.reveal,
.dress-title.reveal,
.contact-title.reveal,
.final h2.reveal{transform:translateY(34px)}
.top-title.reveal.show,
.script-bg.reveal.show,
.dear.reveal.show,
.section-title.reveal.show,
.script-over.reveal.show,
.program-head.reveal.show,
.dress-title.reveal.show,
.contact-title.reveal.show,
.final h2.reveal.show{transform:none}

/* collage photos appear from different sides */
.collage .tall.photo-reveal{transform:translateX(-54px) scale(.985)}
.collage .small.photo-reveal{transform:translateX(54px) scale(.985)}
.collage .wide.photo-reveal{transform:translateY(42px) scale(.985)}
.collage .tall.photo-reveal.show,
.collage .small.photo-reveal.show,
.collage .wide.photo-reveal.show{transform:none}
.side-script.reveal{transform:translateX(42px)}
.side-script.reveal.show{transform:none}

/* venue and contact photos slide softly */
.venue-main.photo-reveal{transform:translateX(-44px) scale(.985)}
.contact-photo.photo-reveal,
.final-photo.photo-reveal{transform:translateY(42px) scale(.985)}
.venue-main.photo-reveal.show,
.contact-photo.photo-reveal.show,
.final-photo.photo-reveal.show{transform:none}

/* timeline rows alternate left/right */
.timeline-row.reveal:nth-child(odd){transform:translateX(-36px)}
.timeline-row.reveal:nth-child(even){transform:translateX(36px)}
.timeline-row.reveal.show{transform:none}

/* dress code elements appear delicately */
.palette.reveal{transform:translateY(26px) scale(.96)}
.slider-block.reveal:nth-of-type(1){transform:translateX(-34px)}
.slider-block.reveal:nth-of-type(2){transform:translateX(34px)}
.palette.reveal.show,.slider-block.reveal.show{transform:none}



/* DESIGN PLUS — аккуратнее сетка, ровнее фото, больше мягкой анимации */
.site{
  background:
    linear-gradient(90deg, rgba(35,35,35,.045) 0 1px, transparent 1px calc(100% - 1px), rgba(35,35,35,.045) calc(100% - 1px)),
    radial-gradient(rgba(80,80,80,.13) .45px, transparent .6px),
    var(--bg);
  background-size:100% 100%, 8px 8px, auto;
}
.screen{padding-left:28px;padding-right:28px}
.screen:not(.hero):not(.final)::after{
  content:'';position:absolute;left:28px;right:28px;bottom:0;height:1px;
  background:linear-gradient(90deg, transparent, rgba(47,47,47,.12), transparent);
  transform:scaleX(0);transform-origin:center;transition:transform 1.2s cubic-bezier(.16,.84,.32,1) .2s;
}
.screen:has(.show)::after{transform:scaleX(1)}

/* первый экран — ближе к журнальной обложке */
.hero.screen{padding:78px 28px 112px;display:flex;flex-direction:column;justify-content:flex-start}
.top-title{padding-top:14px;text-align:left}
.eng-line{font-size:25px;letter-spacing:.31em;gap:13px;color:#333}
.hero h1,.top-title h1{font-size:54px;margin:16px 0 44px;color:#5a5652;text-align:center;text-shadow:0 1px 0 rgba(255,255,255,.7)}
.hero-photo{height:390px;margin-top:0;border:1px solid rgba(50,50,50,.08);box-shadow:0 20px 44px rgba(42,38,34,.08)}
.hero-photo img{object-position:center 38%}
.hero-time{margin-top:42px}

/* общие фото — рамка + аккуратная тень, чтобы смотрелись ровно */
.photo-reveal{border:1px solid rgba(45,45,45,.07);box-shadow:0 18px 36px rgba(42,38,34,.075)}
.photo-reveal img{display:block;will-change:transform,filter}
.mini-photo{height:230px;border-radius:0}
.wide-photo{height:286px;margin-left:10px;margin-right:10px}
.contact-photo{height:305px;margin-top:42px}
.final-photo{height:326px;margin-bottom:36px}

/* приглашение — меньше хаоса, ровнее строки */
.invite.screen{padding-top:60px;padding-bottom:76px}
.script-bg{top:50px;right:22px;font-size:80px;opacity:.9}
.dear{font-size:52px;margin:72px 0 28px;white-space:normal;letter-spacing:-.02em}
.invite-grid{grid-template-columns:minmax(0,1fr) 148px;gap:22px;align-items:start}
.invite-text{font-size:18px;line-height:1.66;color:#48433f;padding-top:16px}
.invite-text p{margin:0 0 24px}
.invite-text p:last-child{margin-bottom:0}
.mini-photo img{object-position:center 28%}

/* день свадьбы */
.day.screen{padding-top:62px;padding-bottom:74px}
.section-title{font-size:43px;margin-top:36px;letter-spacing:.09em}
.script-over{font-size:84px;margin:-8px 0 18px 95px;color:rgba(91,88,84,.22)}
.day .wide-photo{height:295px;margin-left:18px;margin-right:18px}
.day-copy{font-size:17px;line-height:1.72;width:72%;margin-top:26px;color:#5a5550}

/* коллаж — фото разного размера, но гармонично */
.gallery.screen{padding-top:22px;padding-bottom:58px}
.collage{height:610px}
.collage .tall{left:14px;top:24px;width:205px;height:332px}
.collage .small{right:14px;top:158px;width:154px;height:224px}
.collage .wide{left:64px;right:auto;top:418px;width:308px;height:176px}
.side-script{right:26px;top:42px;font-size:42px;color:#625d57;opacity:.95}
.collage figure:before,.hero-photo:before,.wide-photo:before,.mini-photo:before,.final-photo:before{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg, rgba(255,255,255,.08), transparent 36%, rgba(0,0,0,.05));
}

/* календарь и место */
.calendar.screen{padding-top:58px;padding-bottom:74px}
.cal-card{margin-top:42px;box-shadow:0 18px 38px rgba(42,38,34,.045);background:rgba(248,247,245,.62)}
.venue.screen{padding-top:56px;padding-bottom:76px}
.venue-card{border-top:1px solid rgba(47,47,47,.08);border-bottom:1px solid rgba(47,47,47,.08)}
.venue-main{height:240px}
.venue-info{margin-top:-42px;padding:24px 22px 24px}
.venue-info h2{letter-spacing:.07em}
.venue-thumbs img{height:82px}

/* программа дня — эстетичнее, но в той же стилистике */
.program.screen{padding-top:62px;padding-bottom:88px}
.program:before{top:28px;bottom:56px;border-color:rgba(47,47,47,.16);background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0))}
.program-head span{font-size:30px;letter-spacing:.2em}
.program-head em{font-size:78px;margin-top:-9px;color:#b8ada3;text-shadow:0 1px 0 rgba(255,255,255,.65)}
.timeline{margin:30px 10px 0;padding:26px 0 2px}
.timeline:before{left:96px;background:linear-gradient(to bottom,transparent,#2f2f2f 8%,#2f2f2f 90%,transparent)}
.timeline-row{grid-template-columns:78px 1fr;gap:30px;margin-bottom:30px;padding:2px 0}
.timeline-row:after{left:91px;top:12px;width:11px;height:11px;background:var(--bg);box-shadow:0 0 0 8px var(--bg), 0 0 0 9px rgba(47,47,47,.08)}
.timeline-row time{font-size:22px;letter-spacing:.16em;color:#262626}
.timeline-row p{font-size:22px;line-height:1.18;color:#3b3835}
.timeline-row p:after{width:42px;background:#cfc8bf;margin-top:13px}

/* dress-code — добавлен “слайдерный” люкс */
.dress.screen{padding-top:64px;padding-bottom:84px}
.dress-title{font-size:25px;margin-bottom:16px}
.palette i{width:30px;height:30px;border:1px solid rgba(0,0,0,.04);box-shadow:0 8px 16px rgba(42,38,34,.045)}
.slider-block{position:relative;margin-bottom:42px;padding:18px 0 0}
.slider-block:before{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(47,47,47,.13),transparent)}
.slider-window{height:205px;border:1px solid rgba(47,47,47,.08);box-shadow:0 18px 32px rgba(42,38,34,.055)}
.slide{gap:1px;background:rgba(47,47,47,.08)}
.slide img{filter:saturate(.92) contrast(.98);transition:transform .7s cubic-bezier(.16,.84,.32,1)}
.slide img:hover{transform:scale(1.035)}

/* пожелания/контакты */
.wishes.screen,.contacts.screen{padding-top:58px;padding-bottom:74px}
.wish-card{border-top:1px solid rgba(47,47,47,.12);min-height:222px;padding-top:34px}
.contact-title{font-size:62px;margin-bottom:16px}
.final.screen{padding-top:56px;padding-bottom:126px}
.final h2 span{font-size:76px}

/* больше анимаций, но они остаются после появления */
.reveal{transition-duration:1.18s;transition-timing-function:cubic-bezier(.16,.84,.32,1)}
.reveal.show{animation:softSettle .9s cubic-bezier(.16,.84,.32,1) both}
.photo-reveal.show img{animation:photoBreath 1.7s cubic-bezier(.16,.84,.32,1) both}
.eng-line i{transform:scaleX(0);transform-origin:left;transition:transform 1.2s cubic-bezier(.16,.84,.32,1) .24s}.top-title.show .eng-line i{transform:scaleX(1)}
.date-big span,.timer-line span{transform:scaleX(0);transition:transform 1s cubic-bezier(.16,.84,.32,1) .2s}.date-big.show span,.timer-line.show span{transform:scaleX(1)}
.palette.show i{animation:swatchPop .55s cubic-bezier(.16,.84,.32,1) both}.palette.show i:nth-child(2){animation-delay:.06s}.palette.show i:nth-child(3){animation-delay:.12s}.palette.show i:nth-child(4){animation-delay:.18s}.palette.show i:nth-child(5){animation-delay:.24s}.palette.show i:nth-child(6){animation-delay:.3s}
.music{animation:musicFloat 3.6s ease-in-out infinite}
.rsvp-sticky{box-shadow:0 -12px 28px rgba(35,36,41,.10);transition:transform .35s ease,filter .35s ease}.rsvp-sticky:active{filter:brightness(1.12)}
.open-slider.opening .open-knob{animation:knobTap .65s cubic-bezier(.2,.8,.2,1) both}

@keyframes softSettle{0%{filter:blur(2px)}100%{filter:blur(0)}}
@keyframes photoBreath{0%{transform:scale(1.08);filter:blur(9px) saturate(.8)}55%{filter:blur(0) saturate(.95)}100%{transform:scale(1);filter:blur(0) saturate(.96)}}
@keyframes swatchPop{0%{opacity:0;transform:translateY(12px) scale(.78)}100%{opacity:1;transform:none}}
@keyframes musicFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes knobTap{0%{transform:scale(1)}50%{transform:scale(.92)}100%{transform:scale(1)}}

/* аккуратнее на маленьких экранах */
@media (max-width:380px){
  .screen{padding-left:24px;padding-right:24px}.eng-line{font-size:22px;letter-spacing:.28em}.hero h1,.top-title h1{font-size:48px}.hero-photo{height:360px}.dear{font-size:46px}.invite-grid{grid-template-columns:1fr 132px;gap:16px}.invite-text{font-size:16px}.mini-photo{height:214px}.section-title{font-size:38px}.script-over{font-size:74px;margin-left:78px}.timeline-row p{font-size:20px}.program-head:before,.program-head:after{width:42px}.collage .wide{width:285px;left:54px}.side-script{font-size:38px}
}

/* POLISH V2 — фикс по скринам: календарь, пробелы, коллаж, повторные анимации */
.screen{padding-top:68px;padding-bottom:86px}
.hero.screen{padding-top:80px;padding-bottom:112px}
.invite.screen{padding-bottom:94px}
.day.screen{padding-top:70px;padding-bottom:88px}
.gallery.screen{padding-top:42px;padding-bottom:92px}
.calendar.screen{padding-top:66px;padding-bottom:96px}
.venue.screen{padding-top:70px;padding-bottom:96px}
.program.screen{padding-top:72px;padding-bottom:102px}
.dress.screen{padding-top:74px;padding-bottom:104px}
.timer.screen{padding-top:70px;padding-bottom:96px}
.wishes.screen{padding-top:74px;padding-bottom:96px}
.contacts.screen{padding-top:82px;padding-bottom:112px}
.final.screen{padding-top:78px;padding-bottom:140px}

/* каждый крупный блок теперь визуально отделён, чтобы ничего не сливалось */
.screen:not(.hero)::before{
  content:'';position:absolute;left:24px;right:24px;top:18px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(47,47,47,.14),transparent);
  opacity:.9;
}
.invite.screen::before,.day.screen::before{opacity:.45}

/* календарь: только август, без ошибки июнь/август */
.cal-card{padding:30px 24px 34px;margin-top:34px;border-color:rgba(37,37,37,.82);box-shadow:0 22px 46px rgba(42,38,34,.055)}
.cal-card h2{font-size:50px;margin-bottom:12px;color:#2d2d2d}
.month-note{font-size:18px;text-transform:uppercase;letter-spacing:.32em;color:#544f4a;margin-bottom:24px}
.week{letter-spacing:.43em;color:#77716b}
.days{gap:10px 6px;font-size:17px}
.date-big{margin-top:62px}

/* коллаж: убрала случайную серую/обрезанную 3-ю фотографию, сделала гармоничнее */
.collage{height:690px}
.collage .tall{left:12px;top:30px;width:222px;height:360px;z-index:2}
.collage .small{right:8px;top:190px;width:166px;height:238px;z-index:3}
.collage .wide{left:52px;top:474px;width:326px;height:190px;z-index:1}
.collage .wide img{object-position:center 50%;filter:grayscale(.85) contrast(1.02)}
.collage .tall img{object-position:center 38%}
.collage .small img{object-position:center 32%}
.side-script{right:24px;top:54px;font-size:44px;z-index:4;color:#605a55;text-shadow:0 1px 0 rgba(255,255,255,.7)}

/* Пожелания и контакты больше не сливаются */
.wishes{display:flex;flex-direction:column;gap:34px}
.wish-card{min-height:0;padding:42px 28px 46px;margin:0;background:rgba(248,247,245,.62);border:1px solid rgba(47,47,47,.11);box-shadow:0 18px 40px rgba(42,38,34,.045)}
.wish-card + .wish-card{margin-top:6px}
.wish-card h2{font-size:62px;margin-bottom:16px;color:#625c57}
.wish-card p{font-size:16px;line-height:1.72;max-width:310px;margin:0 auto}
.contacts{background:linear-gradient(180deg,rgba(222,217,209,.16),rgba(242,241,239,0) 38%)}
.contact-title{margin-top:8px;font-size:68px;color:#57514d}
.contact-list{padding:24px 18px 28px;border:1px solid rgba(47,47,47,.10);background:rgba(248,247,245,.50);box-shadow:0 18px 40px rgba(42,38,34,.035)}
.contact-list p{margin-top:0;font-size:16px;line-height:1.65}
.contact-name{font-size:58px;margin-top:22px}
.contact-photo{margin-top:54px;height:330px}

/* Программа: чуть богаче, но в стиле референса */
.program:before{left:24px;right:24px;top:30px;bottom:70px;border-color:rgba(47,47,47,.22)}
.program-head{padding-top:4px;margin-bottom:8px}
.program-head span{font-size:31px;letter-spacing:.21em}
.program-head em{font-size:82px;color:#b8ada3}
.timeline{margin-top:36px;padding:30px 0 4px}
.timeline-row{margin-bottom:36px}
.timeline-row time{font-size:23px;color:#252525}
.timeline-row p{font-size:23px;color:#37332f}
.timeline-row:after{background:#f2f1ef;border-color:#2f2f2f;box-shadow:0 0 0 8px #f2f1ef,0 0 0 10px rgba(184,173,163,.45)}

/* больше повторяющихся анимаций при движении вверх/вниз */
.reveal{transition-duration:.95s;transition-property:opacity,transform,filter;will-change:opacity,transform,filter}
.photo-reveal{transition:opacity .95s cubic-bezier(.16,.84,.32,1), transform 1.05s cubic-bezier(.16,.84,.32,1), filter .95s ease;will-change:opacity,transform,filter}
.photo-reveal:not(.show){opacity:0;filter:blur(6px)}
.photo-reveal.show{opacity:1;filter:blur(0)}
.invite .mini-photo.photo-reveal{transform:translateX(44px) scale(.98)}
.invite .mini-photo.photo-reveal.show{transform:none}
.day .wide-photo.photo-reveal{transform:translateY(42px) scale(.985)}
.day .wide-photo.photo-reveal.show{transform:none}
.cal-card.reveal{transform:translateY(42px) scale(.985)}
.cal-card.reveal.show{transform:none}
.date-big.reveal{transform:translateY(32px)}
.date-big.reveal.show{transform:none}
.wish-card.reveal:nth-child(odd){transform:translateX(-40px)}
.wish-card.reveal:nth-child(even){transform:translateX(40px)}
.wish-card.reveal.show{transform:none}

/* sticky не перекрывает последние блоки слишком грубо */
.final{padding-bottom:160px}
@media (max-width:380px){
  .collage{height:660px}.collage .tall{width:205px;height:340px}.collage .small{width:150px;height:222px;top:188px}.collage .wide{left:44px;width:292px;height:178px;top:462px}.contact-title{font-size:62px}.wish-card h2{font-size:56px}
}


/* BACK TO CLEAN DESIGN + ONE-TIME SLIDE-IN ANIMATIONS */
/* Кнопка подтверждения больше не закреплена снизу: она остается только в финальном блоке. */
.rsvp-sticky{display:none!important}
.final{padding-bottom:118px!important}

/* Возвращаем спокойный дизайн: без фоновых фото и лишней перегрузки. */
.screen{overflow:hidden}
.site{background:var(--bg)}

/* Анимации появляются один раз и остаются на месте. */
.reveal{opacity:0;transition-property:opacity,transform,filter;transition-duration:1.05s;transition-timing-function:cubic-bezier(.16,.84,.32,1);will-change:opacity,transform,filter}
.reveal.show{opacity:1;transform:none!important;filter:none!important}
.photo-reveal{opacity:0;filter:blur(7px);transition:opacity 1.08s cubic-bezier(.16,.84,.32,1),transform 1.15s cubic-bezier(.16,.84,.32,1),filter 1.05s ease;will-change:opacity,transform,filter}
.photo-reveal.show{opacity:1;filter:blur(0);transform:none!important}
.photo-reveal img{transition:transform 1.45s cubic-bezier(.16,.84,.32,1),filter 1.15s ease;transform:scale(1.08);filter:blur(8px) saturate(.92)}
.photo-reveal.show img,.show.photo-reveal img{transform:scale(1);filter:blur(0) saturate(.96)}

/* Фото “выползают” с разных сторон и становятся на свое место. */
.hero-photo.photo-reveal{transform:translateY(46px) scale(.985)}
.invite .mini-photo.photo-reveal{transform:translateX(68px) scale(.985)}
.day .wide-photo.photo-reveal{transform:translateX(-72px) scale(.985)}
.collage .tall.photo-reveal{transform:translateX(-78px) scale(.985)}
.collage .small.photo-reveal{transform:translateX(78px) scale(.985)}
.collage .wide.photo-reveal{transform:translateY(54px) scale(.985)}
.venue-main.photo-reveal{transform:translateY(54px) scale(.985)}
.contact-photo.photo-reveal{transform:translateX(70px) scale(.985)}
.final-photo.photo-reveal{transform:translateX(-70px) scale(.985)}

/* Текст мягко появляется, но без дерганий при обратном скролле. */
.top-title.reveal,.section-title.reveal,.program-head.reveal,.dress-title.reveal,.contact-title.reveal{transform:translateY(28px)}
.invite-text.reveal,.day-copy.reveal,.dress-copy.reveal,.contact-list.reveal{transform:translateY(30px)}
.dear.reveal,.script-bg.reveal,.script-over.reveal,.side-script.reveal{transform:translateY(24px)}
.cal-card.reveal,.date-big.reveal,.wish-card.reveal,.timer-line.reveal,.countdown.reveal{transform:translateY(34px)}
.timeline-row.reveal:nth-child(odd){transform:translateX(-34px)}
.timeline-row.reveal:nth-child(even){transform:translateX(34px)}

/* Чтобы дизайн не казался кривым: сохраняем аккуратные расстояния из удачной версии. */
.screen{padding-top:66px;padding-bottom:88px}
.hero.screen{padding-top:80px;padding-bottom:112px}
.invite.screen{padding-bottom:92px}
.gallery.screen{padding-top:42px;padding-bottom:92px}
.program.screen{padding-top:72px;padding-bottom:100px}
.contacts.screen{padding-bottom:98px}




/* === CLEAN FIX: без лишних стикеров, текст как был, аккуратные анимации === */

/* убираем нижнюю фиксированную кнопку, подтверждение только в конце */
.rsvp-sticky{display:none!important}
.final{padding-bottom:118px!important}

/* базовый аккуратный вид */
.screen{overflow:hidden}
.site{background:var(--bg)}
.photo-reveal{background:#e6e2da}

/* анимации один раз: элемент выезжает и остается на месте */
.reveal{
  opacity:0;
  transition:opacity .95s ease, transform 1.05s cubic-bezier(.16,.84,.32,1), filter .95s ease;
  will-change:opacity,transform,filter;
}
.reveal.show{
  opacity:1;
  transform:none!important;
  filter:none!important;
}
.photo-reveal{
  opacity:0;
  filter:blur(7px);
  transition:opacity 1s ease, transform 1.12s cubic-bezier(.16,.84,.32,1), filter .95s ease;
}
.photo-reveal.show{
  opacity:1;
  filter:blur(0);
  transform:none!important;
}
.photo-reveal img{
  transform:scale(1.06);
  filter:blur(5px) saturate(.94);
  transition:transform 1.35s cubic-bezier(.16,.84,.32,1), filter 1.05s ease;
}
.photo-reveal.show img,.show.photo-reveal img{
  transform:scale(1);
  filter:blur(0) saturate(.97);
}

/* выезд фото со сторон */
.hero-photo.photo-reveal{transform:translateY(46px) scale(.985)}
.invite .mini-photo.photo-reveal{transform:translateX(58px) scale(.985)}
.day .wide-photo.photo-reveal{transform:translateX(-58px) scale(.985)}
.collage .tall.photo-reveal{transform:translateX(-70px) scale(.985)}
.collage .small.photo-reveal{transform:translateX(70px) scale(.985)}
.collage .wide.photo-reveal{transform:translateY(46px) scale(.985)}
.venue-main.photo-reveal{transform:translateY(45px) scale(.985)}
.contact-photo.photo-reveal{transform:translateX(58px) scale(.985)}
.final-photo.photo-reveal{transform:translateY(50px) scale(.985)}

/* текст тоже мягко встает на место, но без кривых сдвигов */
.invite-text.reveal,.day-copy.reveal,.dress-copy.reveal,.contact-list.reveal{transform:translateY(28px)}
.section-title.reveal,.dress-title.reveal,.contact-title.reveal{transform:translateY(24px)}
.script-over.reveal,.side-script.reveal{transform:translateX(38px)}

/* коллаж — без forever и без кривой нижней фотки */
.collage{height:680px!important}
.collage:before{
  content:'';
  position:absolute;
  left:34px; right:34px; top:18px; bottom:22px;
  border:1px solid rgba(47,47,47,.10);
  background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(232,226,218,.10));
  z-index:0;
}
.collage figure{box-shadow:0 14px 28px rgba(38,34,30,.045)}
.collage .tall{left:14px!important;top:34px!important;width:218px!important;height:352px!important;z-index:2}
.collage .small{right:12px!important;top:184px!important;width:160px!important;height:230px!important;z-index:3}
.collage .wide{left:54px!important;top:486px!important;width:320px!important;height:174px!important;z-index:1}
.collage .wide img{object-position:center 48%!important;filter:none!important}
.collage .tall img{object-position:center 38%!important}
.collage .small img{object-position:center 34%!important}

/* таймер: вместо огромного темного фото — легкий фон-фото */
.timer{position:relative;padding-top:68px!important}
.timer-bg-photo{
  position:absolute;
  left:30px; right:30px; top:38px;
  height:210px;
  background:
    linear-gradient(180deg,rgba(242,241,239,.18),rgba(242,241,239,.78)),
    url('images/couple4.jpg?v=optvpn1') center 52%/cover no-repeat;
  opacity:.38;
  border:1px solid rgba(47,47,47,.08);
  filter:grayscale(1);
  z-index:0;
}
.timer-line,.countdown{position:relative;z-index:1}
.timer-line{margin-top:112px!important}
.countdown{
  background:rgba(248,247,245,.78);
  border:1px solid rgba(47,47,47,.08);
  padding:24px 12px;
  box-shadow:0 14px 30px rgba(48,42,38,.035);
}
.countdown div{position:relative}
.countdown div:not(:last-child):after{
  content:'';
  position:absolute;
  right:0; top:50%;
  width:1px; height:34px;
  background:rgba(47,47,47,.08);
  transform:translateY(-50%);
}

/* программа дня — без стикера, только слова из сторон + строки таймлайна */
.program{padding-top:76px!important;padding-bottom:108px!important}
.program:before{
  left:24px!important; right:24px!important; top:30px!important; bottom:68px!important;
  border-color:rgba(47,47,47,.18)!important;
  background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,0));
}
.program:after{display:none!important}
.program-head{padding-top:4px!important;margin-bottom:10px!important}
.program-head .slide-word-left,
.program-head .slide-word-right{
  display:block;
  opacity:0;
  transition:opacity 1s ease, transform 1s cubic-bezier(.16,.84,.32,1);
}
.program-head .slide-word-left{transform:translateX(-58px)}
.program-head .slide-word-right{transform:translateX(58px)}
.program-head.show .slide-word-left,
.program-head.show .slide-word-right{
  opacity:1;
  transform:none;
}
.program-head span{font-size:31px!important;letter-spacing:.21em!important}
.program-head em{font-size:82px!important;color:#b8ada3!important}

.timeline{margin-top:44px!important}
.timeline-row time,
.timeline-row p{
  opacity:0;
  transition:opacity .95s ease, transform 1s cubic-bezier(.16,.84,.32,1);
}
.timeline-row time{transform:translateX(-34px)}
.timeline-row p{transform:translateX(34px)}
.timeline-row.show time,
.timeline-row.show p{
  opacity:1;
  transform:none;
}
.timeline-row:after{
  box-shadow:0 0 0 8px #f2f1ef,0 0 0 10px rgba(201,181,164,.34)!important;
}
.timeline-row p:after{background:#d9d2cb!important}

/* контакты не сливаются */
.contacts{background:linear-gradient(180deg,rgba(222,217,209,.13),rgba(242,241,239,0) 42%)}
.contact-list{
  padding:24px 18px 28px;
  border:1px solid rgba(47,47,47,.09);
  background:rgba(248,247,245,.48);
  box-shadow:0 14px 34px rgba(42,38,34,.03);
}

/* на маленьком экране */
@media (max-width:380px){
  .collage{height:650px!important}
  .collage .tall{width:205px!important;height:334px!important}
  .collage .small{width:148px!important;height:214px!important;top:182px!important}
  .collage .wide{width:292px!important;height:166px!important;left:42px!important;top:458px!important}
  .program-head em{font-size:76px!important}
  .timer-bg-photo{height:190px;left:26px;right:26px}
  .timer-line{margin-top:98px!important}
}


/* === PROGRAM REF STYLE: как в референсе WedWed === */
.program.screen{
  padding-top:82px!important;
  padding-bottom:116px!important;
}
.program:before{
  left:22px!important;
  right:22px!important;
  top:26px!important;
  bottom:64px!important;
  border:0!important;
  background:
    linear-gradient(90deg, transparent 0, transparent 22px, rgba(47,47,47,.16) 22px, rgba(47,47,47,.16) 23px, transparent 23px),
    linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,0))!important;
}
.program-head{
  margin:0 0 54px!important;
  min-height:132px;
}
.program-head:before,.program-head:after{
  top:42px!important;
  width:62px!important;
  background:#303030!important;
}
.program-head span{
  font-size:32px!important;
  letter-spacing:.22em!important;
  position:relative;
  z-index:2;
}
.program-head em{
  font-size:94px!important;
  margin-top:-18px!important;
  color:#c8bfb7!important;
  opacity:.88;
  position:relative;
  z-index:1;
}
.program-head .slide-word-left,
.program-head .slide-word-right{
  display:block;
  opacity:0;
  transition:opacity 1s ease, transform 1.05s cubic-bezier(.16,.84,.32,1);
}
.program-head .slide-word-left{transform:translateX(-60px)}
.program-head .slide-word-right{transform:translateX(60px)}
.program-head.show .slide-word-left,
.program-head.show .slide-word-right{opacity:1;transform:none}

.timeline{
  margin:0!important;
  padding:0 0 0!important;
  position:relative;
}
.timeline:before{
  content:'';
  position:absolute;
  left:104px!important;
  top:0!important;
  bottom:0!important;
  width:1px!important;
  background:#2e2e2e!important;
}
.timeline-row{
  display:grid!important;
  grid-template-columns:76px 62px 1fr!important;
  gap:18px!important;
  align-items:center!important;
  margin:0 0 52px!important;
  min-height:108px;
  position:relative;
}
.timeline-row:last-child{margin-bottom:0!important}
.timeline-row:after{display:none!important}
.timeline-row time{
  font:500 34px/1 var(--serif)!important;
  letter-spacing:.08em!important;
  color:#272727!important;
  opacity:0;
  transform:translateX(-42px);
  transition:opacity .95s ease, transform 1.05s cubic-bezier(.16,.84,.32,1);
}
.program-icon{
  width:62px;
  height:62px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#343434;
  background:var(--bg);
  position:relative;
  z-index:2;
  opacity:0;
  transform:scale(.8) translateX(-18px);
  transition:opacity .95s ease .08s, transform 1.05s cubic-bezier(.16,.84,.32,1) .08s;
}
.program-icon svg{
  width:56px;
  height:56px;
  display:block;
}
.program-text{
  min-width:0;
  opacity:0;
  transform:translateX(46px);
  transition:opacity .95s ease .14s, transform 1.05s cubic-bezier(.16,.84,.32,1) .14s;
}
.program-text em{
  display:block;
  font:400 38px/1 var(--script);
  color:#69645f;
  margin:0 0 3px;
}
.program-text span{
  display:block;
  width:100%;
  height:1px;
  background:#303030;
  transform:scaleX(0);
  transform-origin:left center;
  transition:transform .95s cubic-bezier(.16,.84,.32,1) .32s;
}
.program-text p{
  margin:8px 0 0!important;
  font:500 26px/1.06 var(--sans)!important;
  letter-spacing:-.03em;
  color:#25262b;
}
.program-text p:after{display:none!important}

.timeline-row.show time,
.timeline-row.show .program-icon,
.timeline-row.show .program-text{
  opacity:1;
  transform:none;
}
.timeline-row.show .program-text span{
  transform:scaleX(1);
}

@media (max-width:380px){
  .program-head em{font-size:82px!important}
  .program-head span{font-size:28px!important}
  .program-head:before,.program-head:after{width:42px!important}
  .timeline:before{left:96px!important}
  .timeline-row{
    grid-template-columns:70px 58px 1fr!important;
    gap:14px!important;
    min-height:100px;
    margin-bottom:46px!important;
  }
  .timeline-row time{font-size:30px!important}
  .program-icon{width:58px;height:58px}
  .program-icon svg{width:52px;height:52px}
  .program-text em{font-size:34px}
  .program-text p{font-size:23px!important}
}


/* === compact contact block + refined collage patch === */
.contacts.screen{padding-top:76px!important;padding-bottom:94px!important}
.contact-title{margin-bottom:18px!important}
.contact-list{max-width:342px!important;margin:0 auto 22px!important;padding:30px 22px 28px!important;border:1px solid rgba(47,47,47,.10)!important;background:rgba(248,247,245,.64)!important;box-shadow:0 16px 34px rgba(42,38,34,.04)!important}
.contact-list p{max-width:270px;margin:0 auto!important}
.contact-name{margin-top:18px!important}
.contact-photo{margin:22px auto 0!important;width:min(360px,calc(100% - 12px))!important;height:404px!important;border:10px solid rgba(248,247,245,.82)!important;box-shadow:0 18px 36px rgba(42,38,34,.055)!important}
.contact-photo img{object-position:center 34%!important}
.contact-photo.photo-reveal{transform:translateY(46px) scale(.985)!important}

.collage{height:736px!important;margin-top:8px!important}
.collage:before{inset:18px 30px 18px 30px!important;opacity:.72!important}
.collage figure{box-shadow:0 18px 38px rgba(38,34,30,.05)!important;border:8px solid rgba(248,247,245,.82)!important;background:#ece7e0!important}
.collage .tall{left:8px!important;top:22px!important;width:230px!important;height:388px!important;z-index:2!important}
.collage .small{right:8px!important;top:214px!important;width:182px!important;height:264px!important;z-index:3!important}
.collage .wide{left:32px!important;top:528px!important;width:344px!important;height:188px!important;z-index:1!important}
.collage .wide img{object-position:center 36%!important;filter:none!important}
.collage .tall img{object-position:center 38%!important}
.collage .small img{object-position:center 34%!important}
.side-script{right:16px!important;top:40px!important;max-width:172px!important;font-size:50px!important;line-height:.92!important;text-align:left!important;color:#605a55!important;z-index:4!important;text-shadow:0 1px 0 rgba(255,255,255,.75)!important}
.side-script.reveal{transform:translateX(56px)!important}
.collage .tall.photo-reveal{transform:translateX(-92px) rotate(-2deg) scale(.985)!important}
.collage .small.photo-reveal{transform:translateX(92px) rotate(2deg) scale(.985)!important}
.collage .wide.photo-reveal{transform:translateY(58px) scale(.985)!important}

@media (max-width:390px){
  .contact-photo{height:386px!important}
  .collage{height:700px!important}
  .collage .tall{width:214px!important;height:362px!important}
  .collage .small{width:168px!important;height:244px!important;top:208px!important}
  .collage .wide{width:312px!important;height:176px!important;left:28px!important;top:504px!important}
  .side-script{font-size:46px!important;max-width:158px!important;right:12px!important}
}

/* Patch: larger photo in the invitation intro block */
.invite-grid{
  grid-template-columns:minmax(0,1fr) 170px;
  gap:18px;
  align-items:center;
}
.invite .mini-photo{
  width:170px;
  height:300px;
  justify-self:end;
}
.invite-text{
  padding-top:0;
}
.invite .mini-photo img{
  object-position:center 42%;
}
@media (max-width:390px){
  .invite-grid{
    grid-template-columns:minmax(0,1fr) 158px;
    gap:14px;
  }
  .invite .mini-photo{
    width:158px;
    height:282px;
  }
}
@media (max-width:360px){
  .invite-grid{
    grid-template-columns:minmax(0,1fr) 148px;
    gap:12px;
  }
  .invite .mini-photo{
    width:148px;
    height:260px;
  }
}

/* === v4 collage cleanup: better photo choices, bigger sizes, cleaner layout === */
.collage-a{
  height:700px!important;
  margin-top:0!important;
}
.collage-a:before{
  content:'';
  position:absolute;
  inset:18px 22px 18px 22px!important;
  border:1px solid rgba(122,116,109,.13)!important;
  pointer-events:none;
  opacity:.75!important;
}
.collage-a figure{
  margin:0;
  overflow:hidden;
  background:#ece7e0!important;
  border:8px solid rgba(248,247,245,.92)!important;
  box-shadow:0 14px 30px rgba(45,40,35,.05)!important;
}
.collage-a .tall{
  left:16px!important;
  top:34px!important;
  width:212px!important;
  height:332px!important;
  z-index:2!important;
}
.collage-a .small{
  right:10px!important;
  top:192px!important;
  width:154px!important;
  height:224px!important;
  z-index:3!important;
}
.collage-a .wide{
  left:52px!important;
  top:452px!important;
  width:300px!important;
  height:192px!important;
  z-index:1!important;
}
.collage-a .tall img{object-position:center 38%!important}
.collage-a .small img{object-position:center 30%!important}
.collage-a .wide img{object-position:center 56%!important;filter:none!important}
.collage-a .side-script{
  right:22px!important;
  top:52px!important;
  width:156px!important;
  font:400 34px/.95 var(--script)!important;
  color:#69635e!important;
  text-align:right!important;
  transform:none!important;
  z-index:4!important;
}
/* more natural slide-in animation for this collage */
.collage-a .tall.photo-reveal{transform:translateX(-88px) rotate(-2.2deg) scale(.985)!important}
.collage-a .small.photo-reveal{transform:translateX(88px) rotate(2.2deg) scale(.985)!important}
.collage-a .wide.photo-reveal{transform:translateY(54px) scale(.985)!important}
.collage-a .side-script.reveal{transform:translateX(44px)!important}

@media (max-width:390px){
  .collage-a{height:674px!important}
  .collage-a .tall{width:202px!important;height:320px!important;left:12px!important}
  .collage-a .small{width:146px!important;height:214px!important;right:8px!important;top:188px!important}
  .collage-a .wide{width:286px!important;height:184px!important;left:40px!important;top:436px!important}
  .collage-a .side-script{right:16px!important;top:50px!important;width:148px!important;font-size:31px!important}
}

/* === DESKTOP RESPONSIVE VERSION ===
   Mobile styles stay the same. These rules only apply on tablets/PC. */
@media (min-width: 900px){
  body{
    background:
      radial-gradient(circle at 18% 8%, rgba(255,255,255,.55), transparent 26%),
      radial-gradient(circle at 82% 18%, rgba(230,224,214,.55), transparent 30%),
      #d9d7d3;
  }
  .site{
    width:min(1100px, calc(100vw - 56px));
    max-width:1100px;
    margin:34px auto;
    border-radius:2px;
    box-shadow:0 26px 90px rgba(33,30,27,.14), 0 0 0 1px rgba(0,0,0,.04);
  }
  .noise{opacity:.12}
  .music{right:calc((100vw - min(1100px, calc(100vw - 56px))) / 2 + 34px);top:90px}

  .screen{padding:110px 74px 132px;min-height:auto}
  .narrow{padding-left:90px;padding-right:90px}

  .hero.screen{
    min-height:760px;
    display:grid;
    grid-template-columns:.95fr 1.15fr;
    gap:58px;
    align-items:center;
    padding-top:84px;
    padding-bottom:84px;
  }
  .hero .top-title{padding-top:0;align-self:end}
  .eng-line{font-size:30px;letter-spacing:.34em}
  .hero h1,.top-title h1{font-size:68px;margin:22px 0 0;text-align:left}
  .hero-photo{
    grid-column:2;
    grid-row:1 / span 2;
    width:100%;
    height:620px;
    margin:0;
    box-shadow:0 22px 60px rgba(46,40,35,.12);
  }
  .hero-time{grid-column:1;margin:0;width:210px;justify-content:flex-start;font-size:30px}

  .invite.screen{padding-top:118px;padding-bottom:126px}
  .script-bg{top:70px;left:76px;right:auto;font-size:118px;opacity:.22}
  .dear{font-size:78px;margin:80px 0 38px}
  .invite-grid{
    grid-template-columns:minmax(0, 1fr) 360px!important;
    gap:72px!important;
    align-items:center;
  }
  .invite-text{font-size:25px!important;line-height:1.68;padding-top:0;max-width:470px}
  .invite .mini-photo{
    width:360px!important;
    height:520px!important;
    justify-self:end;
    box-shadow:0 18px 48px rgba(45,39,34,.09);
  }

  .day.screen{
    display:grid;
    grid-template-columns:1fr 470px;
    grid-template-areas:
      "title photo"
      "script photo"
      "text photo";
    gap:0 72px;
    align-items:center;
    padding-top:110px;
    padding-bottom:124px;
  }
  .day .section-title{grid-area:title;font-size:56px;margin:0}
  .day .script-over{grid-area:script;font-size:112px;margin:-4px 0 18px 80px}
  .day .wide-photo{grid-area:photo;width:100%;height:560px;margin:0;box-shadow:0 20px 56px rgba(45,39,34,.1)}
  .day-copy{grid-area:text;width:100%;max-width:410px;margin:0;font-size:22px}

  .gallery.screen{padding-top:70px;padding-bottom:120px}
  .collage-a{
    width:900px;
    max-width:100%;
    height:760px!important;
    margin:0 auto!important;
  }
  .collage-a:before{inset:26px 64px 34px 64px!important}
  .collage-a .tall{
    left:74px!important;
    top:44px!important;
    width:390px!important;
    height:590px!important;
  }
  .collage-a .small{
    right:88px!important;
    top:220px!important;
    width:300px!important;
    height:430px!important;
  }
  .collage-a .wide{
    left:430px!important;
    top:520px!important;
    width:390px!important;
    height:220px!important;
  }
  .collage-a .side-script{
    right:84px!important;
    top:64px!important;
    width:280px!important;
    font-size:66px!important;
    text-align:left!important;
  }

  .calendar.screen{padding-top:100px;padding-bottom:120px}
  .cal-card{max-width:680px;margin:0 auto;padding:44px 54px 48px}
  .cal-card h2{font-size:62px}
  .month-note{font-size:22px}
  .week{font-size:15px}
  .days{font-size:20px;gap:12px 10px}
  .days span{height:34px}
  .date-big{max-width:720px;margin:70px auto 0;font-size:76px;gap:38px}

  .venue.screen{padding-top:98px;padding-bottom:120px}
  .venue-card{max-width:900px;margin:0 auto;padding:0 0 34px}
  .venue-main{height:430px}
  .venue-info{margin:-62px 58px 0;padding:34px 38px 36px;display:grid;grid-template-columns:1fr 260px;gap:20px 34px;align-items:end}
  .venue-info .label,.venue-info h2,.venue-info p{grid-column:1}
  .venue-info h2{font-size:42px}
  .venue-info p{font-size:18px}
  .venue-thumbs{grid-column:2;grid-row:1 / span 3;margin:0}
  .venue-thumbs img{height:112px}
  .venue-info .dark-btn{grid-column:1;max-width:240px}

  .program.screen{padding-top:110px!important;padding-bottom:130px!important}
  .program:before{left:82px!important;right:82px!important;top:58px!important;bottom:80px!important}
  .program-head{max-width:780px;margin:0 auto 70px!important}
  .program-head span{font-size:44px!important}
  .program-head em{font-size:126px!important}
  .program-head:before,.program-head:after{top:58px!important;width:104px!important}
  .timeline{max-width:780px;margin:0 auto!important}
  .timeline:before{left:146px!important}
  .timeline-row{grid-template-columns:112px 78px 1fr!important;gap:28px!important;min-height:128px;margin-bottom:58px!important}
  .timeline-row time{font-size:46px!important}
  .program-icon{width:78px;height:78px}
  .program-icon svg{width:68px;height:68px}
  .program-text em{font-size:48px}
  .program-text p{font-size:34px!important}

  .dress.screen{padding-top:110px;padding-bottom:120px}
  .dress-title{font-size:36px}
  .dress-copy{font-size:17px;max-width:620px}
  .palette i{width:38px;height:38px}
  .slider-block{max-width:760px;margin-left:auto;margin-right:auto}
  .slider-window{height:290px}

  .timer.screen{padding-top:106px!important;padding-bottom:120px!important}
  .timer-bg-photo{left:180px;right:180px;top:56px;height:300px}
  .timer-line{margin-top:170px!important;font-size:18px}
  .timer-line span{width:96px}
  .countdown{max-width:760px;margin-left:auto;margin-right:auto;padding:34px 28px}
  .countdown b{font-size:72px!important}
  .countdown span{font-size:15px}

  .wishes.screen{display:grid;grid-template-columns:1fr 1fr;gap:36px;padding-top:110px;padding-bottom:120px}
  .wish-card{margin:0!important;min-height:320px!important;padding:58px 40px!important}
  .wish-card h2{font-size:72px}
  .wish-card p{font-size:17px}

  .contacts.screen{
    display:grid;
    grid-template-columns:420px 1fr;
    gap:36px 62px;
    align-items:center;
    padding-top:110px!important;
    padding-bottom:124px!important;
  }
  .contact-title{grid-column:1 / -1;font-size:86px;margin:0 0 4px!important}
  .contact-list{max-width:none!important;margin:0!important;padding:44px 36px!important}
  .contact-list p{font-size:18px;max-width:330px}
  .contact-name{font-size:70px}
  .contact-photo{
    width:100%!important;
    height:560px!important;
    margin:0!important;
  }

  .final.screen{padding-top:110px;padding-bottom:130px!important}
  .final-photo{max-width:720px;height:520px;margin:0 auto 58px!important}
  .final h2{font-size:28px}
  .final h2 span{font-size:104px}
  .final p{font-size:17px;max-width:460px}
  .deadline{font-size:38px}
  .final .dark-btn{max-width:320px;margin:0 auto}
}

@media (min-width: 900px) and (max-width: 1080px){
  .site{width:min(960px, calc(100vw - 42px))}
  .screen{padding-left:58px;padding-right:58px}
  .narrow{padding-left:70px;padding-right:70px}
  .collage-a{width:820px}
  .collage-a .tall{left:46px!important}
  .collage-a .small{right:54px!important}
  .collage-a .wide{left:372px!important}
  .contacts.screen{grid-template-columns:370px 1fr;gap:46px}
}


/* === ONLY COLLAGE PATCH on top of desktop version === */
.gallery-polaroid-section{
  padding-top:70px!important;
  padding-bottom:105px!important;
  overflow:hidden;
}
.couple-collage-v2{
  position:relative;
  width:100%;
  min-height:710px;
  max-width:390px;
  margin:0 auto;
}
.couple-frame-v2{
  position:absolute;
  inset:22px 18px 28px 18px;
  border:1px solid rgba(70,64,58,.12);
  background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(232,226,218,.09));
  pointer-events:none;
  z-index:0;
}
.gallery-card{
  position:absolute;
  margin:0;
  padding:8px;
  background:rgba(249,248,246,.95);
  box-shadow:0 18px 38px rgba(55,48,42,.075);
  overflow:hidden;
  z-index:2;
  opacity:0;
  transition:opacity 1s ease, transform 1.08s cubic-bezier(.16,.84,.32,1), filter 1s ease;
  will-change:transform,opacity,filter;
}
.gallery-card img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(.94) contrast(.98);
}
.gallery-main{
  left:10px;
  top:92px;
  width:250px;
  height:380px;
  z-index:2;
  transform:translateX(-90px) scale(.985);
}
.gallery-main img{object-position:center 40%}
.gallery-top{
  right:4px;
  top:282px;
  width:178px;
  height:260px;
  z-index:3;
  transform:translateX(90px) scale(.985);
}
.gallery-top img{object-position:center 36%}
.gallery-bottom{
  left:76px;
  top:540px;
  width:250px;
  height:150px;
  z-index:1;
  transform:translateY(70px) scale(.985);
}
.gallery-bottom img{object-position:center 40%}
.couple-name-v2{
  position:absolute;
  top:42px;
  right:18px;
  width:178px;
  z-index:4;
  font:400 48px/.92 var(--script);
  color:#635d57;
  text-align:left;
  text-shadow:0 1px 0 rgba(255,255,255,.75);
  opacity:0;
  transform:translateX(48px);
  transition:opacity .95s ease .12s, transform 1s cubic-bezier(.16,.84,.32,1) .12s;
}
.gallery-card.show,
.couple-name-v2.show{
  opacity:1!important;
  transform:none!important;
  filter:none!important;
}

/* Desktop collage, while preserving all previous desktop styling */
@media (min-width:900px){
  .gallery-polaroid-section{
    padding:110px 40px 135px!important;
  }
  .couple-collage-v2{
    max-width:1060px;
    min-height:720px;
  }
  .couple-frame-v2{
    inset:42px 72px 40px 72px;
  }
  .couple-name-v2{
    top:60px;
    right:105px;
    width:300px;
    font-size:76px;
    line-height:.9;
    text-align:right;
  }
  .gallery-main{
    left:90px;
    top:110px;
    width:430px;
    height:560px;
  }
  .gallery-top{
    right:120px;
    top:255px;
    width:300px;
    height:390px;
  }
  .gallery-bottom{
    left:515px;
    top:520px;
    width:350px;
    height:210px;
  }
}
@media (min-width:600px) and (max-width:899px){
  .couple-collage-v2{max-width:620px;min-height:760px}
  .couple-frame-v2{inset:28px 34px 30px 34px}
  .gallery-main{left:38px;top:96px;width:330px;height:500px}
  .gallery-top{right:30px;top:295px;width:230px;height:330px}
  .gallery-bottom{left:240px;top:585px;width:300px;height:180px}
  .couple-name-v2{right:34px;top:48px;width:260px;font-size:64px;text-align:right}
}
@media (max-width:390px){
  .gallery-polaroid-section{padding-top:58px!important;padding-bottom:86px!important}
  .couple-collage-v2{min-height:660px}
  .gallery-main{left:6px;top:88px;width:232px;height:356px}
  .gallery-top{right:0;top:282px;width:164px;height:242px}
  .gallery-bottom{left:58px;top:510px;width:244px;height:146px}
  .couple-name-v2{right:8px;top:44px;width:165px;font-size:43px}
}


/* === FINAL MERGE PATCH: только новый коллаж, весь остальной проект сохранён === */

.gallery-polaroid-section{
  padding-top:70px!important;
  padding-bottom:108px!important;
  overflow:hidden;
}

.couple-collage-v3{
  position:relative;
  width:100%;
  max-width:390px;
  min-height:1008px;
  margin:0 auto;
}

.couple-frame-v3{
  position:absolute;
  inset:14px 16px 20px;
  border:1px solid rgba(170,160,150,.24);
  background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(238,233,227,.08));
  pointer-events:none;
  z-index:0;
}

.couple-name-v3{
  position:absolute;
  top:24px;
  left:50%;
  width:100%;
  max-width:360px;
  z-index:6;
  font:400 50px/.86 var(--script);
  color:#736963;
  text-align:center;
  text-shadow:0 1px 0 rgba(255,255,255,.75);
  opacity:0;
  transform:translate(-50%,-26px);
  transition:opacity .95s ease .1s, transform 1s cubic-bezier(.16,.84,.32,1) .1s;
}

.gallery-card-v3{
  position:absolute;
  margin:0;
  padding:7px;
  background:rgba(255,255,255,.96);
  box-shadow:0 16px 34px rgba(70,55,45,.085);
  overflow:hidden;
  z-index:2;
  opacity:0;
  transition:opacity 1s ease, transform 1.08s cubic-bezier(.16,.84,.32,1), filter 1s ease;
  will-change:transform,opacity,filter;
}

.gallery-card-v3 img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}

.gallery-main-v3{
  left:14px;
  top:168px;
  width:238px;
  height:318px;
  z-index:3;
  transform:translateX(-96px);
}

.gallery-main-v3 img{
  object-position:center 42%;
}

.gallery-top-v3{
  right:12px;
  top:302px;
  width:174px;
  height:232px;
  z-index:4;
  transform:translateX(96px);
}

.gallery-top-v3 img{
  object-position:center 34%;
}

.gallery-bottom-v3{
  left:6%;
  top:550px;
  width:88%;
  height:390px;
  z-index:3;
  transform:translateY(82px);
}

.gallery-bottom-v3 img{
  object-position:center 34%;
}

.couple-name-v3.show{
  opacity:1!important;
  transform:translate(-50%,0)!important;
}

.gallery-card-v3.show{
  opacity:1!important;
  transform:none!important;
  filter:none!important;
}

/* Desktop version */
@media (min-width:900px){
  .gallery-polaroid-section{
    padding:118px 40px 142px!important;
  }

  .couple-collage-v3{
    max-width:1060px;
    min-height:1320px;
  }

  .couple-frame-v3{
    inset:22px 58px 26px;
  }

  .couple-name-v3{
    top:28px;
    max-width:560px;
    font-size:86px;
    line-height:.82;
  }

  .gallery-main-v3{
    left:88px;
    top:230px;
    width:390px;
    height:520px;
  }

  .gallery-top-v3{
    right:86px;
    top:270px;
    width:325px;
    height:434px;
  }

  .gallery-bottom-v3{
    left:50%;
    margin-left:-305px;
    top:690px;
    width:610px;
    height:560px;
  }
}

/* Tablet */
@media (min-width:600px) and (max-width:899px){
  .gallery-polaroid-section{
    padding-top:92px!important;
    padding-bottom:118px!important;
  }

  .couple-collage-v3{
    max-width:660px;
    min-height:1180px;
  }

  .couple-frame-v3{
    inset:22px 42px 24px;
  }

  .couple-name-v3{
    top:28px;
    max-width:500px;
    font-size:72px;
  }

  .gallery-main-v3{
    left:54px;
    top:210px;
    width:340px;
    height:454px;
  }

  .gallery-top-v3{
    right:52px;
    top:250px;
    width:285px;
    height:380px;
  }

  .gallery-bottom-v3{
    left:50%;
    margin-left:-270px;
    top:640px;
    width:540px;
    height:500px;
  }
}

/* Small phone */
@media (max-width:390px){
  .couple-collage-v3{
    min-height:1008px;
  }

  .couple-name-v3{
    top:24px;
    font-size:50px;
  }

  .gallery-main-v3{
    left:14px;
    top:168px;
    width:238px;
    height:318px;
  }

  .gallery-top-v3{
    right:12px;
    top:302px;
    width:174px;
    height:232px;
  }

  .gallery-bottom-v3{
    top:550px;
    width:88%;
    height:390px;
  }
}


/* === FINAL POLISH ROUND: date line, invite photo, program icons, wishes background, smoother animations === */

/* hero date line like reference */
.hero-date-line{
  position:relative;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:22px;
  margin:34px auto 0;
  font:500 22px/1 var(--serif);
  letter-spacing:.28em;
  color:#252525;
  text-align:center;
}
.hero-date-line i{
  display:block;
  width:1px;
  height:30px;
  background:rgba(47,47,47,.58);
}
.hero-date-line b{
  font-weight:500;
}
.hero-time{display:none!important}

/* smoother entrance everywhere */
.reveal,
.photo-reveal{
  transition-duration:1.15s!important;
  transition-timing-function:cubic-bezier(.16,.84,.32,1)!important;
}
.delay1{transition-delay:.14s!important}
.delay2{transition-delay:.28s!important}
.delay3{transition-delay:.42s!important}

/* text flies in from sides in an elegant way */
.top-title .eng-line{transform:translateX(-46px);opacity:0;transition:opacity 1s ease,transform 1.1s cubic-bezier(.16,.84,.32,1)}
.top-title h1{transform:translateX(46px);opacity:0;transition:opacity 1s ease .12s,transform 1.1s cubic-bezier(.16,.84,.32,1) .12s}
.top-title.show .eng-line,
.top-title.show h1{transform:none;opacity:1}

.script-bg{transform:translateX(-58px)}
.dear{transform:translateX(44px)}
.invite-text{transform:translateX(-34px)}
.section-title{transform:translateX(-54px)}
.script-over{transform:translateX(54px)}
.day-copy{transform:translateX(34px)}
.dress-title,.contact-title{transform:translateX(-44px)}
.dress-copy,.contact-list{transform:translateX(34px)}

/* invite second block: new photo, larger and cleaner */
.invite-grid{
  grid-template-columns:minmax(0,1fr) 182px!important;
  gap:18px!important;
  align-items:center!important;
}
.invite .mini-photo{
  width:182px!important;
  height:304px!important;
  justify-self:end!important;
  box-shadow:0 18px 36px rgba(55,48,42,.07)!important;
}
.invite .mini-photo img{
  object-position:center 38%!important;
}

/* wishes: soft expensive background */
.wishes{
  position:relative;
  overflow:hidden;
}
.wishes:before{
  content:'';
  position:absolute;
  inset:34px 18px 34px;
  background:
    linear-gradient(180deg,rgba(255,255,255,.50),rgba(229,223,215,.22)),
    url('images/photo3.jpg?v=optvpn1') center 36%/cover no-repeat;
  filter:grayscale(1);
  opacity:.105;
  border:1px solid rgba(47,47,47,.07);
  z-index:0;
}
.wishes:after{
  content:'';
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 50% 50%,rgba(248,247,245,.45),rgba(248,247,245,.92) 74%);
  pointer-events:none;
  z-index:0;
}
.wish-card{
  position:relative!important;
  z-index:1!important;
  backdrop-filter:blur(1px);
}

/* Program icons closer to reference */
.program-icon{
  color:#2c2c2c!important;
}
.program-icon svg{
  width:60px!important;
  height:60px!important;
}
.program-text em{
  font-size:40px!important;
  color:#5f5954!important;
}
.timeline-row{
  transition:opacity 1s ease,transform 1.1s cubic-bezier(.16,.84,.32,1)!important;
}
.timeline-row time{transform:translateX(-56px)!important}
.timeline-row .program-icon{transform:translateX(-22px) scale(.72)!important}
.timeline-row .program-text{transform:translateX(62px)!important}
.timeline-row.show time,
.timeline-row.show .program-icon,
.timeline-row.show .program-text{
  transform:none!important;
  opacity:1!important;
}
.program-text span{
  transition-duration:1.05s!important;
}

/* stronger smooth photo appearance */
.photo-reveal{
  transform:translateY(46px) scale(.985);
  filter:blur(8px);
}
.photo-reveal.show{
  transform:none!important;
  filter:blur(0)!important;
}
.photo-reveal img{
  transition-duration:1.45s!important;
}

/* improve current 3-photo collage entrance even more */
.gallery-main-v3{transform:translateX(-115px) scale(.985)!important}
.gallery-top-v3{transform:translateX(115px) scale(.985)!important}
.gallery-bottom-v3{transform:translateY(94px) scale(.985)!important}
.gallery-card-v3.show{transform:none!important}

/* desktop polish */
@media (min-width:900px){
  .hero-date-line{margin-top:44px;font-size:24px;gap:28px}
  .invite-grid{grid-template-columns:minmax(0,1fr) 300px!important;gap:42px!important}
  .invite .mini-photo{width:300px!important;height:430px!important}
  .wishes:before{inset:54px 70px 54px}
}

/* mobile polish */
@media (max-width:390px){
  .hero-date-line{font-size:18px;gap:14px;letter-spacing:.18em;margin-top:28px}
  .hero-date-line i{height:24px}
  .invite-grid{grid-template-columns:minmax(0,1fr) 168px!important;gap:14px!important}
  .invite .mini-photo{width:168px!important;height:286px!important}
  .program-icon svg{width:54px!important;height:54px!important}
  .program-text em{font-size:35px!important}
}

/* === LUXURY ANIMATION PATCH: живой первый экран + ползунок + прилёты со сторон === */
body.gate-locked{overflow:hidden;touch-action:none}
.gate{background:linear-gradient(135deg,#d7d4cf 0%,#efede9 52%,#c9c4bd 100%)}
.gate:before,
.gate:after{content:'';position:absolute;border-radius:999px;pointer-events:none;filter:blur(1px)}
.gate:before{width:330px;height:330px;left:-115px;top:8%;background:rgba(255,255,255,.28);animation:gateGlow 6.8s ease-in-out infinite}
.gate:after{width:280px;height:280px;right:-100px;bottom:8%;background:rgba(177,159,144,.18);animation:gateGlow 7.4s ease-in-out infinite reverse}
.gate-blur{animation:gatePhotoDrift 8s ease-in-out infinite alternate;will-change:transform,filter}
.gate-card{position:relative;overflow:hidden;animation:gateCardEntrance 1.25s cubic-bezier(.16,.84,.32,1) both!important}
.gate-card:before{content:'';position:absolute;inset:18px;border:1px solid rgba(92,84,76,.16);pointer-events:none}
.gate-card:after{content:'';position:absolute;left:-90px;top:-120px;width:90px;height:760px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.42),transparent);transform:rotate(21deg);animation:gateSheen 4.8s ease-in-out 1.15s infinite;pointer-events:none}
.gate-kicker,.gate-names,.gate-line,.gate-date,.open-slider{opacity:0;animation:gateItemIn 1s cubic-bezier(.16,.84,.32,1) both}
.gate-kicker{animation-delay:.18s}.gate-names{animation-delay:.32s}.gate-line{animation-delay:.44s}.gate-date{animation-delay:.54s}.open-slider{animation-delay:.72s}
.open-slider{--drag:0;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(255,255,255,.22),0 12px 30px rgba(49,43,38,.08);transition:box-shadow .35s ease,transform .35s ease;color:#252525}
.open-slider:active{transform:scale(.985)}
.open-slider:before{content:'';position:absolute;inset:4px;border-radius:999px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.23),transparent);transform:translateX(-115%);animation:sliderSheen 2.9s ease-in-out 1.2s infinite;z-index:1;pointer-events:none}
.open-track{transform:translateX(var(--track-x,-101%))!important;transition:transform .28s cubic-bezier(.16,.84,.32,1)!important}
.open-knob{left:var(--knob-left,4px)!important;transition:left .28s cubic-bezier(.16,.84,.32,1),background .35s ease,color .35s ease,box-shadow .35s ease!important;box-shadow:0 8px 18px rgba(35,36,41,.18)}
.open-slider:not(.opening):not(.dragging) .open-knob{animation:sliderKnobIdle 2.25s cubic-bezier(.16,.84,.32,1) 1.4s infinite}
.open-slider.opening .open-knob{left:calc(100% - 42px)!important;background:#f7f5f2!important;color:#222!important;animation:knobTap .55s cubic-bezier(.2,.8,.2,1) both!important}
.open-slider.opening .open-track{transform:translateX(0)!important;transition-duration:.52s!important}.open-slider.opening .open-text{color:#fff!important}
.open-slider.dragging .open-knob{animation:none!important}.open-slider.dragging .open-track{transition:none!important}.open-slider.dragging .open-knob{transition:none!important}

@keyframes gateCardEntrance{0%{opacity:0;transform:translateY(34px) scale(.965);filter:blur(10px)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes gateItemIn{0%{opacity:0;transform:translateY(18px);filter:blur(5px)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes gateSheen{0%,62%{transform:translateX(0) rotate(21deg);opacity:0}72%{opacity:1}100%{transform:translateX(560px) rotate(21deg);opacity:0}}
@keyframes gateGlow{0%,100%{transform:translate3d(0,0,0) scale(1);opacity:.55}50%{transform:translate3d(28px,-20px,0) scale(1.08);opacity:.82}}
@keyframes gatePhotoDrift{0%{transform:scale(1.09) translate3d(-8px,0,0)}100%{transform:scale(1.15) translate3d(10px,-8px,0)}}
@keyframes sliderSheen{0%,55%{transform:translateX(-115%);opacity:0}66%{opacity:1}100%{transform:translateX(115%);opacity:0}}
@keyframes sliderKnobIdle{0%,100%{transform:translateX(0)}42%{transform:translateX(16px)}60%{transform:translateX(0)}}

/* первый экран больше не проигрывается под заставкой — он стартует после открытия */
.hero .top-title.reveal:not(.show){transform:translate3d(-58px,-18px,0) scale(.98)!important;filter:blur(5px)!important}
.hero .hero-photo.photo-reveal:not(.show){transform:translate3d(74px,42px,0) scale(.982)!important;filter:blur(9px)!important}
.hero .hero-date-line.reveal:not(.show){transform:translate3d(-62px,24px,0)!important;filter:blur(5px)!important}

/* дорогие плавные прилёты: текст, даты, карточки, фото */
.reveal,.photo-reveal,.gallery-card-v3,.couple-name-v3{transition-duration:1.28s!important;transition-timing-function:cubic-bezier(.13,.86,.28,1)!important}
.reveal:not(.show){filter:blur(4px)}
.script-bg.reveal:not(.show){transform:translate3d(-76px,-6px,0)!important}
.dear.reveal:not(.show){transform:translate3d(66px,0,0)!important}
.invite-text.reveal:not(.show){transform:translate3d(-58px,16px,0)!important}
.invite .mini-photo.photo-reveal:not(.show){transform:translate3d(86px,24px,0) scale(.982)!important}
.section-title.reveal:not(.show){transform:translate3d(-72px,0,0)!important}
.script-over.reveal:not(.show){transform:translate3d(72px,-10px,0)!important}
.day .wide-photo.photo-reveal:not(.show){transform:translate3d(-86px,34px,0) scale(.982)!important}
.day-copy.reveal:not(.show){transform:translate3d(58px,18px,0)!important}
.couple-name-v3:not(.show){transform:translate(-50%,-42px)!important;filter:blur(5px)!important}
.gallery-main-v3:not(.show){transform:translate3d(-132px,18px,0) scale(.98)!important;filter:blur(7px)!important}
.gallery-top-v3:not(.show){transform:translate3d(132px,16px,0) scale(.98)!important;filter:blur(7px)!important}
.gallery-bottom-v3:not(.show){transform:translate3d(0,108px,0) scale(.98)!important;filter:blur(7px)!important}
.cal-card.reveal:not(.show){transform:translate3d(-62px,34px,0) scale(.985)!important}.date-big.reveal:not(.show){transform:translate3d(62px,28px,0)!important}.days .heart{animation:heartLuxuryPulse 2.8s ease-in-out infinite}
.venue-card.reveal:not(.show){transform:translate3d(70px,38px,0) scale(.985)!important}.venue-main.photo-reveal:not(.show){transform:translate3d(-72px,36px,0) scale(.985)!important}.venue-info{transition:transform 1.15s cubic-bezier(.13,.86,.28,1),opacity 1s ease}.venue-card:not(.show) .venue-info{opacity:0;transform:translateX(44px)}
.program-head.reveal:not(.show){transform:translateY(20px)!important}.program-head .slide-word-left{transform:translateX(-78px)!important}.program-head .slide-word-right{transform:translateX(78px)!important}.program-head.show .slide-word-left,.program-head.show .slide-word-right{transform:none!important}.timeline-row.reveal:not(.show):nth-child(odd){transform:translateX(-54px)!important}.timeline-row.reveal:not(.show):nth-child(even){transform:translateX(54px)!important}
.dress-title.reveal:not(.show){transform:translateX(-62px)!important}.dress-copy.reveal:not(.show){transform:translateX(62px)!important}.palette.reveal:not(.show){transform:translateY(32px) scale(.94)!important}.slider-block.reveal:not(.show):nth-of-type(1){transform:translateX(-64px)!important}.slider-block.reveal:not(.show):nth-of-type(2){transform:translateX(64px)!important}
.timer-bg-photo.reveal:not(.show){transform:translateX(-66px) scale(.985)!important}.timer-line.reveal:not(.show){transform:translateX(60px)!important}.countdown.reveal:not(.show){transform:translateY(44px) scale(.985)!important}
.wish-card.reveal:not(.show):nth-child(odd){transform:translateX(-68px)!important}.wish-card.reveal:not(.show):nth-child(even){transform:translateX(68px)!important}.contact-title.reveal:not(.show){transform:translateX(-70px)!important}.contact-list.reveal:not(.show){transform:translateX(64px)!important}.contact-photo.photo-reveal:not(.show){transform:translate3d(-58px,40px,0) scale(.985)!important}.final-photo.photo-reveal:not(.show){transform:translate3d(68px,40px,0) scale(.985)!important}.final h2.reveal:not(.show){transform:translateX(-56px)!important}.final p.reveal:not(.show),.deadline.reveal:not(.show),.final .dark-btn.reveal:not(.show){transform:translateX(56px)!important}
@keyframes heartLuxuryPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}

/* фото “приземляются” чуть глубже и мягче */
.photo-reveal img{transform:scale(1.075)!important;transition-duration:1.65s!important;transition-timing-function:cubic-bezier(.13,.86,.28,1)!important}.photo-reveal.show img,.show.photo-reveal img{transform:scale(1)!important}

@media (max-width:390px){
  .open-slider{width:252px}.gate-card{height:548px}.gate-names{font-size:48px}.hero .hero-photo.photo-reveal:not(.show){transform:translate3d(58px,38px,0) scale(.982)!important}.invite .mini-photo.photo-reveal:not(.show){transform:translate3d(58px,20px,0) scale(.982)!important}.gallery-main-v3:not(.show){transform:translate3d(-94px,16px,0) scale(.98)!important}.gallery-top-v3:not(.show){transform:translate3d(94px,16px,0) scale(.98)!important}
}

/* === SLOWER LUXURY MOTION PATCH + program stickers closer to reference === */
.reveal,
.photo-reveal,
.gallery-card-v3,
.couple-name-v3,
.timeline-row,
.venue-info,
.program-text span,
.photo-reveal img{
  transition-duration:1.65s!important;
  transition-timing-function:cubic-bezier(.14,.8,.24,1)!important;
}

.reveal.show,
.timeline-row.show,
.photo-reveal.show img{
  animation-duration:1.25s!important;
}

.delay1{transition-delay:.22s!important}
.delay2{transition-delay:.38s!important}
.delay3{transition-delay:.54s!important}

.top-title .eng-line,
.top-title h1,
.timeline-row time,
.timeline-row .program-icon,
.timeline-row .program-text,
.program-head .slide-word-left,
.program-head .slide-word-right,
.open-track,
.open-knob{
  transition-duration:1.35s!important;
  transition-timing-function:cubic-bezier(.14,.8,.24,1)!important;
}

.open-track{transition-duration:.62s!important}
.open-knob{transition-duration:.62s!important}
.open-slider.opening .open-track{transition-duration:.76s!important}
.open-slider.opening .open-knob{animation-duration:.82s!important}
.open-slider:before{animation-duration:3.8s!important}
.open-slider:not(.opening):not(.dragging) .open-knob{animation-duration:3s!important}

.hero .top-title.reveal:not(.show){transform:translate3d(-52px,-12px,0) scale(.985)!important}
.hero .hero-photo.photo-reveal:not(.show){transform:translate3d(64px,34px,0) scale(.986)!important}
.hero .hero-date-line.reveal:not(.show){transform:translate3d(-54px,22px,0)!important}

/* softer arrival for program items */
.timeline-row.reveal:not(.show):nth-child(odd){transform:translateX(-44px)!important}
.timeline-row.reveal:not(.show):nth-child(even){transform:translateX(44px)!important}
.timeline-row time{transform:translateX(-44px)!important}
.timeline-row .program-icon{transform:translateX(-18px) scale(.78)!important}
.timeline-row .program-text{transform:translateX(48px)!important}
.program-text em{font-size:39px!important;letter-spacing:.01em!important}
.program-icon svg{width:58px!important;height:58px!important}

/* final mobile refinement */
@media (max-width:390px){
  .program-icon svg{width:52px!important;height:52px!important}
  .timeline-row .program-text{transform:translateX(42px)!important}
}

/* === FINAL REQUEST PATCH: slower softer animations + music toggle + refined program stickers === */
.reveal,
.photo-reveal,
.gallery-card-v3,
.couple-name-v3{
  transition-duration:1.82s!important;
  transition-timing-function:cubic-bezier(.18,.78,.24,1)!important;
}
.delay1{transition-delay:.20s!important}
.delay2{transition-delay:.38s!important}
.delay3{transition-delay:.54s!important}
.reveal:not(.show){filter:blur(2.6px)!important}
.photo-reveal:not(.show){filter:blur(4.5px)!important}
.photo-reveal img{
  transform:scale(1.045)!important;
  filter:blur(5px) saturate(.95)!important;
  transition-duration:2.15s!important;
  transition-timing-function:cubic-bezier(.18,.78,.24,1)!important;
}
.photo-reveal.show img,
.show.photo-reveal img{transform:scale(1)!important;filter:blur(0) saturate(.98)!important}

/* нежнее: меньше рывок, больше скольжение */
.hero .top-title.reveal:not(.show){transform:translate3d(-42px,-12px,0) scale(.992)!important}
.hero .hero-photo.photo-reveal:not(.show){transform:translate3d(48px,28px,0) scale(.992)!important}
.hero .hero-date-line.reveal:not(.show){transform:translate3d(-44px,18px,0)!important}
.script-bg.reveal:not(.show){transform:translate3d(-50px,-4px,0)!important}
.dear.reveal:not(.show){transform:translate3d(44px,0,0)!important}
.invite-text.reveal:not(.show){transform:translate3d(-42px,10px,0)!important}
.invite .mini-photo.photo-reveal:not(.show){transform:translate3d(54px,16px,0) scale(.992)!important}
.section-title.reveal:not(.show){transform:translate3d(-48px,0,0)!important}
.script-over.reveal:not(.show){transform:translate3d(48px,-7px,0)!important}
.day .wide-photo.photo-reveal:not(.show){transform:translate3d(-56px,24px,0) scale(.992)!important}
.day-copy.reveal:not(.show){transform:translate3d(42px,12px,0)!important}
.gallery-main-v3:not(.show){transform:translate3d(-82px,14px,0) scale(.992)!important}
.gallery-top-v3:not(.show){transform:translate3d(82px,14px,0) scale(.992)!important}
.gallery-bottom-v3:not(.show){transform:translate3d(0,68px,0) scale(.992)!important}
.cal-card.reveal:not(.show){transform:translate3d(-44px,24px,0) scale(.992)!important}
.date-big.reveal:not(.show){transform:translate3d(44px,22px,0)!important}
.venue-card.reveal:not(.show){transform:translate3d(48px,28px,0) scale(.992)!important}
.venue-main.photo-reveal:not(.show){transform:translate3d(-48px,26px,0) scale(.992)!important}
.program-head .slide-word-left{transform:translateX(-54px)!important}
.program-head .slide-word-right{transform:translateX(54px)!important}
.timeline-row.reveal:not(.show):nth-child(odd){transform:translateX(-38px)!important}
.timeline-row.reveal:not(.show):nth-child(even){transform:translateX(38px)!important}
.timeline-row time{transform:translateX(-36px)!important;transition:opacity 1.75s ease,transform 1.82s cubic-bezier(.18,.78,.24,1)!important}
.timeline-row .program-icon{transform:translateX(-14px) scale(.86)!important;transition:opacity 1.75s ease,transform 1.82s cubic-bezier(.18,.78,.24,1)!important}
.timeline-row .program-text{transform:translateX(40px)!important;transition:opacity 1.75s ease,transform 1.82s cubic-bezier(.18,.78,.24,1)!important}
.program-text span{transition-duration:1.65s!important}
.dress-title.reveal:not(.show){transform:translateX(-44px)!important}
.dress-copy.reveal:not(.show){transform:translateX(44px)!important}
.palette.reveal:not(.show){transform:translateY(24px) scale(.97)!important}
.slider-block.reveal:not(.show):nth-of-type(1){transform:translateX(-42px)!important}
.slider-block.reveal:not(.show):nth-of-type(2){transform:translateX(42px)!important}
.timer-bg-photo.reveal:not(.show){transform:translateX(-44px) scale(.992)!important}
.timer-line.reveal:not(.show){transform:translateX(42px)!important}
.countdown.reveal:not(.show){transform:translateY(32px) scale(.992)!important}
.wish-card.reveal:not(.show):nth-child(odd){transform:translateX(-46px)!important}
.wish-card.reveal:not(.show):nth-child(even){transform:translateX(46px)!important}
.contact-title.reveal:not(.show){transform:translateX(-48px)!important}
.contact-list.reveal:not(.show){transform:translateX(44px)!important}
.contact-photo.photo-reveal:not(.show){transform:translate3d(-42px,28px,0) scale(.992)!important}
.final-photo.photo-reveal:not(.show){transform:translate3d(46px,28px,0) scale(.992)!important}
.final h2.reveal:not(.show){transform:translateX(-40px)!important}
.final p.reveal:not(.show),
.deadline.reveal:not(.show),
.final .dark-btn.reveal:not(.show){transform:translateX(40px)!important}

/* music button */
.music{
  cursor:pointer;
  transition:opacity .45s ease,transform .45s ease,background .45s ease,color .45s ease,box-shadow .45s ease!important;
}
.music.is-playing{
  background:rgba(48,48,52,.74)!important;
  color:#fff!important;
  box-shadow:0 12px 32px rgba(0,0,0,.13), inset 0 0 0 1px rgba(255,255,255,.18)!important;
}
.music.is-muted{
  background:rgba(188,188,188,.72)!important;
  color:#fff!important;
}
.music.is-muted:after{
  content:'';
  position:absolute;
  width:34px;
  height:2px;
  background:#fff;
  transform:rotate(-42deg);
  border-radius:20px;
  box-shadow:0 1px 5px rgba(0,0,0,.12);
}
.music.is-playing:before{
  content:'';
  position:absolute;
  inset:-5px;
  border:1px solid rgba(255,255,255,.28);
  border-radius:50%;
  animation:musicPulseSoft 2.6s ease-in-out infinite;
}
@keyframes musicPulseSoft{0%,100%{transform:scale(.92);opacity:.15}50%{transform:scale(1.08);opacity:.5}}

@media (max-width:390px){
  .hero .hero-photo.photo-reveal:not(.show){transform:translate3d(38px,24px,0) scale(.992)!important}
  .invite .mini-photo.photo-reveal:not(.show){transform:translate3d(40px,14px,0) scale(.992)!important}
  .gallery-main-v3:not(.show){transform:translate3d(-66px,12px,0) scale(.992)!important}
  .gallery-top-v3:not(.show){transform:translate3d(66px,12px,0) scale(.992)!important}
}


/* === EXTRA SOFT PATCH: even slower and gentler + cleaner program icons === */
.reveal,
.photo-reveal,
.gallery-card-v3,
.couple-name-v3,
.timeline-row,
.venue-info,
.program-text span,
.photo-reveal img{
  transition-duration:2.28s!important;
  transition-timing-function:cubic-bezier(.2,.78,.24,1)!important;
}

.delay1{transition-delay:.24s!important}
.delay2{transition-delay:.44s!important}
.delay3{transition-delay:.64s!important}

.reveal:not(.show){filter:blur(1.8px)!important}
.photo-reveal:not(.show){filter:blur(3.3px)!important}
.photo-reveal img{
  transform:scale(1.028)!important;
  filter:blur(3.8px) saturate(.97)!important;
  transition-duration:2.55s!important;
}
.photo-reveal.show img,
.show.photo-reveal img{transform:scale(1)!important;filter:blur(0) saturate(.99)!important}

.top-title .eng-line,
.top-title h1,
.timeline-row time,
.timeline-row .program-icon,
.timeline-row .program-text,
.program-head .slide-word-left,
.program-head .slide-word-right{
  transition-duration:2.15s!important;
  transition-timing-function:cubic-bezier(.2,.78,.24,1)!important;
}

/* smaller travel distance = more нежно */
.hero .top-title.reveal:not(.show){transform:translate3d(-28px,-8px,0) scale(.996)!important}
.hero .hero-photo.photo-reveal:not(.show){transform:translate3d(32px,18px,0) scale(.996)!important}
.hero .hero-date-line.reveal:not(.show){transform:translate3d(-30px,12px,0)!important}
.script-bg.reveal:not(.show){transform:translate3d(-34px,-2px,0)!important}
.dear.reveal:not(.show){transform:translate3d(30px,0,0)!important}
.invite-text.reveal:not(.show){transform:translate3d(-30px,8px,0)!important}
.invite .mini-photo.photo-reveal:not(.show){transform:translate3d(34px,12px,0) scale(.996)!important}
.section-title.reveal:not(.show){transform:translate3d(-34px,0,0)!important}
.script-over.reveal:not(.show){transform:translate3d(34px,-5px,0)!important}
.day .wide-photo.photo-reveal:not(.show){transform:translate3d(-38px,16px,0) scale(.996)!important}
.day-copy.reveal:not(.show){transform:translate3d(30px,10px,0)!important}
.gallery-main-v3:not(.show){transform:translate3d(-52px,10px,0) scale(.996)!important}
.gallery-top-v3:not(.show){transform:translate3d(52px,10px,0) scale(.996)!important}
.gallery-bottom-v3:not(.show){transform:translate3d(0,44px,0) scale(.996)!important}
.cal-card.reveal:not(.show){transform:translate3d(-30px,18px,0) scale(.996)!important}
.date-big.reveal:not(.show){transform:translate3d(30px,16px,0)!important}
.venue-card.reveal:not(.show){transform:translate3d(34px,18px,0) scale(.996)!important}
.venue-main.photo-reveal:not(.show){transform:translate3d(-34px,18px,0) scale(.996)!important}
.program-head .slide-word-left{transform:translateX(-36px)!important}
.program-head .slide-word-right{transform:translateX(36px)!important}
.timeline-row.reveal:not(.show):nth-child(odd){transform:translateX(-26px)!important}
.timeline-row.reveal:not(.show):nth-child(even){transform:translateX(26px)!important}
.timeline-row time{transform:translateX(-24px)!important;transition:opacity 2s ease,transform 2.12s cubic-bezier(.2,.78,.24,1)!important}
.timeline-row .program-icon{transform:translateX(-8px) scale(.92)!important;transition:opacity 2s ease,transform 2.12s cubic-bezier(.2,.78,.24,1)!important}
.timeline-row .program-text{transform:translateX(26px)!important;transition:opacity 2s ease,transform 2.12s cubic-bezier(.2,.78,.24,1)!important}
.dress-title.reveal:not(.show){transform:translateX(-30px)!important}
.dress-copy.reveal:not(.show){transform:translateX(30px)!important}
.palette.reveal:not(.show){transform:translateY(18px) scale(.985)!important}
.slider-block.reveal:not(.show):nth-of-type(1){transform:translateX(-28px)!important}
.slider-block.reveal:not(.show):nth-of-type(2){transform:translateX(28px)!important}
.timer-bg-photo.reveal:not(.show){transform:translateX(-30px) scale(.996)!important}
.timer-line.reveal:not(.show){transform:translateX(28px)!important}
.countdown.reveal:not(.show){transform:translateY(20px) scale(.996)!important}
.wish-card.reveal:not(.show):nth-child(odd){transform:translateX(-30px)!important}
.wish-card.reveal:not(.show):nth-child(even){transform:translateX(30px)!important}
.contact-title.reveal:not(.show){transform:translateX(-32px)!important}
.contact-list.reveal:not(.show){transform:translateX(30px)!important}
.contact-photo.photo-reveal:not(.show){transform:translate3d(-30px,18px,0) scale(.996)!important}
.final-photo.photo-reveal:not(.show){transform:translate3d(30px,18px,0) scale(.996)!important}
.final h2.reveal:not(.show){transform:translateX(-26px)!important}
.final p.reveal:not(.show),
.deadline.reveal:not(.show),
.final .dark-btn.reveal:not(.show){transform:translateX(26px)!important}

/* cleaner sticker sizing */
.program-icon svg{width:54px!important;height:54px!important}
.program-text em{font-size:38px!important;color:#67615c!important}

@media (max-width:390px){
  .hero .hero-photo.photo-reveal:not(.show){transform:translate3d(24px,16px,0) scale(.996)!important}
  .invite .mini-photo.photo-reveal:not(.show){transform:translate3d(26px,10px,0) scale(.996)!important}
  .gallery-main-v3:not(.show){transform:translate3d(-42px,8px,0) scale(.996)!important}
  .gallery-top-v3:not(.show){transform:translate3d(42px,8px,0) scale(.996)!important}
  .program-icon svg{width:50px!important;height:50px!important}
}


/* === PATCH: fix last program icon alignment + replace contacts photo === */
.timeline-row-end .program-icon svg{transform:translateY(-6px)!important}
.timeline-row-end .program-icon{align-self:center!important}
.contact-photo img{object-position:center 18%!important}
@media (max-width:430px){
  .contact-photo img{object-position:center 12%!important}
}


/* === RSVP modal patch: empty guest field + partner buttons === */
.modal input::placeholder{color:#a39e98}
.guest-type-group{margin:18px 0 20px!important}
.guest-type-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.choice-chip{margin:0!important;display:block}
.choice-chip input{position:absolute;opacity:0;pointer-events:none}
.choice-chip span{display:flex;align-items:center;justify-content:center;min-height:46px;padding:0 14px;border:1px solid rgba(37,38,43,.22);background:#f8f7f5;color:#2b2b2b;font:500 13px/1.2 var(--sans);text-align:center;transition:background .28s ease,color .28s ease,border-color .28s ease,box-shadow .28s ease}
.choice-chip input:checked + span{background:#25262b;color:#fff;border-color:#25262b;box-shadow:0 8px 18px rgba(37,38,43,.12)}
.partner-field{margin:-6px 0 6px}
.partner-field[hidden]{display:none!important}
@media (max-width:390px){
  .guest-type-buttons{grid-template-columns:1fr;gap:8px}
}


/* === tiny final fixes: RSVP text/button + cleaner 22:00 icon === */
.final .rsvp-open{
  width:100%!important;
  max-width:100%!important;
  justify-content:center!important;
  display:flex!important;
}
.timeline-row-end .program-icon{transform:translateY(-1px)!important;}
.timeline-row-end .program-icon svg{transform:none!important;width:48px!important;height:48px!important}
.modal fieldset label{display:flex;align-items:center;gap:8px}

/* === FINAL GALLERY ANIMATION PATCH: more elegant 3-photo entrance === */
.couple-collage-v3{
  perspective:1100px;
}
.gallery-card-v3{
  transform-origin:center center!important;
  transition:
    opacity 2.25s ease,
    transform 2.45s cubic-bezier(.19,.76,.22,1),
    filter 2.2s ease,
    box-shadow 2.2s ease!important;
  will-change:opacity,transform,filter;
}
.gallery-card-v3:not(.show){
  opacity:0!important;
  filter:blur(3.2px) saturate(.96)!important;
  box-shadow:0 8px 22px rgba(45,40,34,.035)!important;
}
.gallery-main-v3:not(.show){
  transform:translate3d(-36px,28px,0) rotate(-1.5deg) scale(.982)!important;
}
.gallery-top-v3:not(.show){
  transform:translate3d(34px,-24px,0) rotate(1.4deg) scale(.982)!important;
}
.gallery-bottom-v3:not(.show){
  transform:translate3d(0,42px,0) rotate(-.8deg) scale(.982)!important;
}
.gallery-card-v3.show{
  opacity:1!important;
  filter:none!important;
  transform:none!important;
  box-shadow:0 22px 46px rgba(45,40,34,.08)!important;
}
.gallery-card-v3 img{
  transition:transform 3s cubic-bezier(.19,.76,.22,1),filter 2.6s ease!important;
}
.gallery-card-v3:not(.show) img{
  transform:scale(1.035)!important;
  filter:blur(2px) saturate(.96)!important;
}
.gallery-card-v3.show img{
  transform:scale(1)!important;
  filter:none!important;
}
.gallery-top-v3{transition-delay:.18s!important}
.gallery-bottom-v3{transition-delay:.34s!important}

@media (max-width:430px){
  .gallery-main-v3:not(.show){transform:translate3d(-24px,22px,0) rotate(-1.2deg) scale(.985)!important}
  .gallery-top-v3:not(.show){transform:translate3d(24px,-18px,0) rotate(1.1deg) scale(.985)!important}
  .gallery-bottom-v3:not(.show){transform:translate3d(0,32px,0) rotate(-.7deg) scale(.985)!important}
}


/* === RSVP send status === */
#rsvpModal .dark-btn[disabled]{
  opacity:.72;
  cursor:wait;
}


/* === VENUE FINAL PATCH: label + bigger photos like before === */
.venue-info .label{text-transform:none!important;letter-spacing:.16em!important}
@media (min-width:900px){
  .venue-card{max-width:920px!important;padding-bottom:42px!important}
  .venue-main{height:500px!important}
  .venue-info{
    margin:-68px 48px 0!important;
    padding:34px 38px 38px!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:14px!important;
  }
  .venue-info .label,.venue-info h2,.venue-info p,.venue-thumbs,.venue-info .dark-btn{grid-column:1!important;grid-row:auto!important}
  .venue-thumbs{display:grid!important;grid-template-columns:1fr 1fr!important;gap:14px!important;margin:12px 0 4px!important;width:100%!important}
  .venue-thumbs img{height:190px!important;width:100%!important;object-fit:cover!important}
  .venue-info .dark-btn{max-width:280px!important;margin-top:6px!important}
}
@media (max-width:899px){
  .venue-thumbs img{height:96px!important}
}


/* === Final: connected Google Sheet URL + RSVP button polish === */
.final .rsvp-open{width:100%!important;max-width:100%!important;display:flex!important;justify-content:center!important}
.venue-info .label{text-transform:none!important;letter-spacing:.13em!important}

/* === Tiny requested fix: show “Открыть приглашение” fully and centered in the opening button === */
.open-slider{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  font-size:11px!important;
  letter-spacing:.075em!important;
}
.open-text{
  position:absolute!important;
  left:58px!important;
  right:18px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  display:block!important;
  text-align:center!important;
  white-space:nowrap!important;
  line-height:1!important;
  pointer-events:none!important;
}
@media (max-width:390px){
  .open-slider{font-size:10.5px!important;letter-spacing:.055em!important}
  .open-text{left:56px!important;right:14px!important}
}

/* === FINAL CLEAN PATCH: calendar heart + dress code sizing === */
.calendar .days{
  align-items:center !important;
}
.calendar .days span{
  position:relative !important;
  min-height:34px !important;
  height:34px !important;
  margin:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  line-height:1 !important;
}
.calendar .days .heart{
  position:relative !important;
  color:transparent !important;
  overflow:visible !important;
  animation:heartLuxuryPulse 2.8s ease-in-out infinite !important;
}
.calendar .days .heart::before,
.calendar .days .heart > i{
  content:'' !important;
  position:absolute !important;
  left:50% !important;
  top:54% !important;
  width:42px !important;
  height:38px !important;
  transform:translate(-50%,-50%) !important;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 58'%3E%3Cpath d='M32 52C20.5 41.6 8 31.2 8 19.2C8 11.8 13.4 7 20.2 7C25 7 29.2 9.6 32 13.6C34.8 9.6 39 7 43.8 7C50.6 7 56 11.8 56 19.2C56 31.2 43.5 41.6 32 52Z' fill='none' stroke='%238b7070' stroke-width='2.25' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat !important;
  pointer-events:none !important;
  z-index:0 !important;
}
.calendar .days .heart::before{display:none !important;}
.calendar .days .heart > i{display:block !important;}
.calendar .days .heart b{
  position:absolute !important;
  left:50% !important;
  top:54% !important;
  transform:translate(-50%,-39%) !important;
  margin:0 !important;
  padding:0 !important;
  color:#2a2a2a !important;
  font-weight:500 !important;
  font-size:17px !important;
  line-height:1 !important;
  z-index:1 !important;
}

.dress .dress-copy{
  max-width:365px !important;
  margin:0 auto 18px !important;
}
.dress .slider-block{
  margin-bottom:32px !important;
}
.dress .slider-window{
  height:176px !important;
  overflow:hidden !important;
  background:rgba(248,247,245,.82) !important;
  border:1px solid rgba(47,47,47,.08) !important;
  box-shadow:0 14px 26px rgba(42,38,34,.05) !important;
}
.dress .slides{
  display:flex !important;
  height:100% !important;
}
.dress .slide{
  flex:0 0 100% !important;
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:10px !important;
  align-items:stretch !important;
  height:100% !important;
  padding:10px 12px 6px !important;
}
.dress .look-card{
  position:relative !important;
  height:auto !important;
  aspect-ratio:1 / 1 !important;
  min-height:0 !important;
  margin:0 !important;
  display:block !important;
  overflow:hidden !important;
  background:transparent !important;
}
.dress .look-card img{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center 24% !important;
  transform:none !important;
  filter:none !important;
}
.dress .slider-nav{
  margin:4px 0 0 !important;
}
@media (max-width:390px){
  .calendar .days span,
  .calendar .days .heart{height:32px !important; min-height:32px !important;}
  .calendar .days .heart > i{width:40px !important;height:36px !important;}
  .calendar .days .heart b{font-size:16px !important;}
  .dress .slider-window{height:160px !important;}
  .dress .slide{gap:8px !important;padding:8px 10px 4px !important;}
}
@media (min-width:768px){
  .dress .slider-block{max-width:860px !important;}
  .dress .slider-window{height:210px !important;}
  .dress .slide{gap:12px !important;padding:12px 16px 8px !important;}
  .calendar .days span,
  .calendar .days .heart{height:38px !important; min-height:38px !important;}
  .calendar .days .heart > i{width:48px !important;height:44px !important;}
  .calendar .days .heart b{font-size:18px !important;}
}
@media (min-width:1100px){
  .dress .slider-window{height:230px !important;}
  .dress .slide{gap:14px !important;padding:14px 18px 10px !important;}
}



/* === FINAL PATCH V7: square dress-code photos, centered content, no dot texture === */
.dress, .dress *{background-image:none !important;}
.dress .slider-window{display:block !important;}
.dress .slides{align-items:flex-start !important;}
.dress .slide{align-items:start !important;}
.dress .look-card{justify-self:center !important; align-self:start !important; width:100% !important; max-width:100% !important;}
.dress .look-card img{object-position:center 24% !important;}
@media (max-width:390px){.calendar .days .heart > i{top:54% !important;} .calendar .days .heart b{top:54% !important;} }
@media (min-width:768px){.calendar .days .heart > i{top:54% !important;} .calendar .days .heart b{top:54% !important;} }


/* === FINAL PATCH V8: dress code ровные портретные фото + сердечко ниже + надежная кнопка === */
.calendar .days .heart > i,
.calendar .days .heart::before{
  top:58% !important;
}
.calendar .days .heart b{
  top:58% !important;
}

.dress .slider-block{
  margin-bottom:34px !important;
}
.dress .slider-window{
  height:188px !important;
  overflow:hidden !important;
  background:transparent !important;
}
.dress .slides{
  display:flex !important;
  height:100% !important;
}
.dress .slide{
  flex:0 0 100% !important;
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:10px !important;
  height:100% !important;
  align-items:start !important;
  padding:0 12px !important;
}
.dress .look-card{
  width:100% !important;
  height:100% !important;
  margin:0 !important;
  overflow:hidden !important;
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
}
.dress .look-card img{
  position:static !important;
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center top !important;
  transform:none !important;
  filter:none !important;
}
.dress .slider-nav{
  margin:8px 0 0 !important;
}

@media (max-width:390px){
  .dress .slider-window{height:172px !important;}
  .dress .slide{gap:8px !important;padding:0 10px !important;}
}
@media (min-width:768px){
  .dress .slider-block{max-width:860px !important;}
  .dress .slider-window{height:250px !important;}
  .dress .slide{gap:14px !important;padding:0 16px !important;}
}
@media (min-width:1100px){
  .dress .slider-window{height:272px !important;}
  .dress .slide{gap:16px !important;padding:0 18px !important;}
}


/* === FINAL PATCH V9: красивый ровный dress code + сердечко ниже === */
.calendar .days .heart > i,
.calendar .days .heart::before{
  top:62% !important;
}
.calendar .days .heart b{
  top:62% !important;
}

.dress .slider-block{
  margin-bottom:34px !important;
}
.dress .slider-window{
  height:auto !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .slides{
  display:flex !important;
  height:auto !important;
  align-items:flex-start !important;
}
.dress .slide{
  flex:0 0 100% !important;
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:10px !important;
  align-items:start !important;
  height:auto !important;
  padding:0 !important;
}
.dress .look-card{
  width:100% !important;
  aspect-ratio:15 / 22 !important;
  height:auto !important;
  margin:0 !important;
  display:block !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .look-card img{
  position:static !important;
  inset:auto !important;
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center center !important;
  transform:none !important;
  filter:none !important;
}
.dress .slider-nav{
  margin:10px 0 0 !important;
}
@media (max-width:390px){
  .dress .slide{gap:8px !important;}
}
@media (min-width:768px){
  .dress .slider-block{max-width:860px !important;}
  .dress .slide{gap:14px !important;}
}
@media (min-width:1100px){
  .dress .slide{gap:16px !important;}
}


/* === FINAL PATCH V10: удалить лишние фото, dress code широкий и ровный, сердце ниже === */
.calendar .days .heart > i,
.calendar .days .heart::before{
  top:70% !important;
}
.calendar .days .heart b{
  top:70% !important;
}

.dress .slider-block{
  margin-bottom:36px !important;
}
.dress .slider-window{
  height:auto !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .slides{
  display:flex !important;
  height:auto !important;
  align-items:flex-start !important;
}
.dress .slide{
  flex:0 0 100% !important;
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:12px !important;
  align-items:start !important;
  height:auto !important;
  padding:0 !important;
}
.dress .look-card{
  width:100% !important;
  aspect-ratio:3 / 4 !important;
  height:auto !important;
  margin:0 !important;
  display:block !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .look-card img{
  position:static !important;
  inset:auto !important;
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center 18% !important;
  transform:none !important;
  filter:none !important;
}
.dress .slider-nav{
  margin:12px 0 0 !important;
}
@media (max-width:390px){
  .dress .slide{gap:8px !important;}
}
@media (min-width:768px){
  .dress .slider-block{max-width:860px !important;}
  .dress .slide{gap:16px !important;}
}
@media (min-width:1100px){
  .dress .slide{gap:18px !important;}
}


/* === FINAL PATCH V11: dress code ровный и одинаковый + сердечко ниже без сдвига 29 === */
.calendar .days .heart > i,
.calendar .days .heart::before{
  top:64% !important;
  transform:translate(-50%,-50%) !important;
}
.calendar .days .heart b{
  top:50% !important;
  transform:translate(-50%,-39%) !important;
}

.dress .slider-window{
  height:auto !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .slides{
  display:flex !important;
  height:auto !important;
  align-items:flex-start !important;
}
.dress .slide{
  flex:0 0 100% !important;
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:12px !important;
  align-items:start !important;
  height:auto !important;
  padding:0 !important;
}
.dress .look-card{
  width:100% !important;
  aspect-ratio:4 / 5 !important;
  height:auto !important;
  margin:0 !important;
  display:block !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .look-card img{
  position:static !important;
  inset:auto !important;
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center center !important;
  transform:none !important;
  filter:none !important;
}
.dress .slider-nav{
  margin:12px 0 0 !important;
}
@media (max-width:390px){
  .dress .slide{gap:8px !important;}
}
@media (min-width:768px){
  .dress .slide{gap:16px !important;}
}
@media (min-width:1100px){
  .dress .slide{gap:18px !important;}
}


/* === FINAL PATCH V12: bigger dress-code photos + no white side frames === */
.dress .slide{
  gap:8px !important;
}
.dress .look-card{
  width:100% !important;
  aspect-ratio:4 / 5 !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .look-card img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  object-position:center center !important;
}
@media (max-width:390px){
  .dress .slide{gap:6px !important;}
}
@media (min-width:768px){
  .dress .slide{gap:12px !important;}
}


/* === FINAL PATCH V13: bigger dress-code photos + no side white frames === */
.dress .slider-block{
  margin-left:-4px !important;
  margin-right:-4px !important;
}
.dress .slider-window{
  width:100% !important;
  overflow:hidden !important;
}
.dress .slide{
  gap:4px !important;
  padding:0 !important;
}
.dress .look-card{
  width:100% !important;
  aspect-ratio:4 / 5 !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .look-card img{
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center center !important;
  transform:none !important;
}
@media (max-width:390px){
  .dress .slider-block{margin-left:-2px !important; margin-right:-2px !important;}
  .dress .slide{gap:4px !important;}
}
@media (min-width:768px){
  .dress .slide{gap:8px !important;}
}


/* === FINAL PATCH V14: dress code only — bigger, even, no white side frames, no distortion === */
.dress .slider-block{
  max-width:100% !important;
  margin-bottom:42px !important;
}
.dress .slider-window{
  width:100% !important;
  height:auto !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .slides{
  display:flex !important;
  height:auto !important;
  align-items:flex-start !important;
}
.dress .slide{
  flex:0 0 100% !important;
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:6px !important;
  align-items:start !important;
  height:auto !important;
  padding:0 !important;
}
.dress .look-card{
  width:100% !important;
  aspect-ratio:2 / 3 !important;
  height:auto !important;
  margin:0 !important;
  display:block !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .look-card img{
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center center !important;
  transform:none !important;
  filter:none !important;
}
.dress .slider-nav{
  margin:12px 0 0 !important;
}
@media (max-width:390px){
  .dress .slide{gap:6px !important;}
}
@media (min-width:768px){
  .dress .slider-block{max-width:860px !important;}
  .dress .slide{gap:10px !important;}
}


/* === FINAL PATCH V15: dress code only, bigger even images, no white side frames, no distortion === */
.dress.screen{
  padding-left:16px !important;
  padding-right:16px !important;
}
.dress .slider-block{
  max-width:100% !important;
  margin-bottom:42px !important;
}
.dress .slider-window{
  width:100% !important;
  height:auto !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .slides{
  display:flex !important;
  height:auto !important;
  align-items:stretch !important;
}
.dress .slide{
  flex:0 0 100% !important;
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:4px !important;
  align-items:stretch !important;
  height:auto !important;
  padding:0 !important;
}
.dress .look-card{
  width:100% !important;
  aspect-ratio:2 / 3 !important;
  height:auto !important;
  margin:0 !important;
  display:block !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .look-card img{
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center center !important;
  transform:none !important;
  filter:none !important;
}
.dress .slider-nav{
  margin:12px 0 0 !important;
}
@media (max-width:390px){
  .dress.screen{padding-left:14px !important; padding-right:14px !important;}
  .dress .slide{gap:4px !important;}
}
@media (min-width:768px){
  .dress .slider-block{max-width:860px !important;}
  .dress .slide{gap:8px !important;}
}


/* === FINAL DRESS CODE ONLY FIX: larger equal photos, no white frames === */
.dress .slider-block{
  margin-left:-8px !important;
  margin-right:-8px !important;
  margin-bottom:42px !important;
}
.dress .slider-window{
  width:calc(100% + 16px) !important;
  margin-left:-8px !important;
  height:auto !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .slides{
  display:flex !important;
  height:auto !important;
  align-items:flex-start !important;
}
.dress .slide{
  flex:0 0 100% !important;
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
  align-items:stretch !important;
  height:auto !important;
  padding:0 !important;
}
.dress .look-card{
  width:100% !important;
  aspect-ratio:2 / 3 !important;
  height:auto !important;
  min-height:0 !important;
  margin:0 !important;
  display:block !important;
  overflow:hidden !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.dress .look-card img{
  position:static !important;
  inset:auto !important;
  width:100% !important;
  height:100% !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center center !important;
  transform:none !important;
  filter:none !important;
  border:0 !important;
}
.dress .slider-nav{
  margin:12px 0 0 !important;
}
@media (max-width:390px){
  .dress .slider-block{
    margin-left:-6px !important;
    margin-right:-6px !important;
  }
  .dress .slider-window{
    width:calc(100% + 12px) !important;
    margin-left:-6px !important;
  }
  .dress .slide{
    gap:7px !important;
  }
}


/* === FINAL PATCH V19: PC dress-code photos smaller only === */
@media (min-width:900px){
  .dress.screen{
    padding-left:74px !important;
    padding-right:74px !important;
  }
  .dress .slider-block{
    width:100% !important;
    max-width:620px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    margin-bottom:48px !important;
  }
  .dress .slider-window{
    width:100% !important;
    max-width:620px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    height:auto !important;
    overflow:hidden !important;
  }
  .dress .slide{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:14px !important;
    padding:0 !important;
  }
  .dress .look-card{
    aspect-ratio:2 / 3 !important;
    max-height:455px !important;
  }
  .dress .slider-nav{
    max-width:620px !important;
    margin:14px auto 0 !important;
  }
}
@media (min-width:1200px){
  .dress .slider-block,
  .dress .slider-window,
  .dress .slider-nav{
    max-width:600px !important;
  }
  .dress .slide{gap:14px !important;}
}


/* === FINAL PATCH V20: restore motion + clean gate button + dress top strip === */
/* возвращаем анимации на всех устройствах */
.reveal,
.photo-reveal,
.gallery-card-v3,
.couple-name-v3,
.timeline-row,
.venue-info{
  transition-property:opacity, transform, filter !important;
  transition-duration:1.45s !important;
  transition-timing-function:cubic-bezier(.14,.8,.24,1) !important;
  will-change:opacity, transform, filter;
}
.reveal:not(.show),
.photo-reveal:not(.show),
.gallery-card-v3:not(.show),
.couple-name-v3:not(.show),
.timeline-row:not(.show){
  opacity:0 !important;
}
.reveal.show,
.photo-reveal.show,
.gallery-card-v3.show,
.couple-name-v3.show,
.timeline-row.show{
  opacity:1 !important;
  filter:none !important;
}
.photo-reveal img{
  transition:filter 1.25s ease, transform 1.65s cubic-bezier(.14,.8,.24,1) !important;
  will-change:transform, filter;
}
.photo-reveal:not(.show) img{
  transform:scale(1.075) !important;
  filter:blur(10px) !important;
}
.photo-reveal.show img,
.show.photo-reveal img{
  transform:scale(1) !important;
  filter:blur(0) !important;
}
.site:not(.started){
  opacity:0 !important;
  transform:translateY(16px) !important;
  filter:blur(6px) !important;
}
.site.started{
  opacity:1 !important;
  transform:none !important;
  filter:none !important;
  transition:opacity .9s ease, filter .9s ease, transform .9s ease !important;
}
.gate-card{animation:gateCardEntrance 1.25s cubic-bezier(.16,.84,.32,1) both !important;}
.gate-blur{animation:gatePhotoDrift 8s ease-in-out infinite alternate !important;}
.gate:before{animation:gateGlow 6.8s ease-in-out infinite !important;}
.gate:after{animation:gateGlow 7.4s ease-in-out infinite reverse !important;}
.gate-kicker,.gate-names,.gate-line,.gate-date,.open-slider{animation:gateItemIn 1s cubic-bezier(.16,.84,.32,1) both !important;}
.open-slider:before{animation:sliderSheen 3.8s ease-in-out 1.2s infinite !important;}
.open-slider:not(.opening):not(.dragging) .open-knob{animation:sliderKnobIdle 3s cubic-bezier(.16,.84,.32,1) 1.4s infinite !important;}

/* кнопка открытия: текст ровно и не залезает под черный кружок */
.open-slider{
  width:280px !important;
  max-width:86vw !important;
  height:48px !important;
}
.open-text{
  position:absolute !important;
  inset:0 14px 0 50px !important;
  z-index:2 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  white-space:nowrap !important;
  font-size:11px !important;
  letter-spacing:.105em !important;
  line-height:1 !important;
  pointer-events:none !important;
}
.open-knob{
  width:38px !important;
  height:38px !important;
}
.open-slider.opening .open-knob{
  left:calc(100% - 42px) !important;
}

/* dress code: убираем лишнюю верхнюю белую полосу/воздух у фото, остальное не трогаем */
.dress .slider-block h3{
  margin-bottom:14px !important;
}
.dress .slider-window,
.dress .slide,
.dress .look-card,
.dress .look-card img{
  background:transparent !important;
  border:0 !important;
}
.dress .look-card img{
  display:block !important;
}

@media (max-width:390px){
  .open-slider{width:272px !important;}
  .open-text{inset:0 12px 0 48px !important;font-size:10.5px !important;letter-spacing:.095em !important;}
}

/* === FINAL PATCH V20.1: opening button exact centering after all older rules === */
.open-slider{
  width:290px !important;
  max-width:86vw !important;
  position:relative !important;
}
.open-text{
  position:absolute !important;
  left:62px !important;
  right:16px !important;
  top:0 !important;
  bottom:0 !important;
  transform:none !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  white-space:nowrap !important;
  font-size:10.5px !important;
  letter-spacing:.075em !important;
  line-height:1 !important;
  pointer-events:none !important;
}
@media (max-width:390px){
  .open-slider{width:282px !important;}
  .open-text{left:60px !important;right:14px !important;font-size:10px !important;letter-spacing:.065em !important;}
}


/* === FINAL PATCH V21: opening button centered exactly === */
.gate-card{
  align-items:center !important;
}
.open-slider{
  display:block !important;
  width:290px !important;
  max-width:86vw !important;
  margin:62px auto 0 !important;
}
.open-text{
  left:0 !important;
  right:0 !important;
  top:0 !important;
  bottom:0 !important;
  padding:0 18px 0 58px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
}
@media (max-width:390px){
  .open-slider{width:282px !important;}
  .open-text{padding:0 14px 0 54px !important;}
}


/* === FINAL PATCH V22: open button text slightly more left === */
.open-text{
  padding:0 18px 0 54px !important;
  transform:translateX(-10px) !important;
}
@media (max-width:390px){
  .open-text{
    padding:0 14px 0 50px !important;
    transform:translateX(-8px) !important;
  }
}


/* === FINAL PATCH V23: RESTORE ORIGINAL MOTION ONLY === */
/* Opening screen animation */
.gate{transition:opacity .8s ease, visibility .8s ease !important;}
.gate.is-hidden{opacity:0 !important; visibility:hidden !important;}
.gate-blur{animation:gatePhotoDrift 8s ease-in-out infinite alternate !important; will-change:transform, filter !important;}
.gate-card{animation:gateCardEntrance 1.25s cubic-bezier(.16,.84,.32,1) both !important;}
.gate-card:after{animation:gateSheen 4.8s ease-in-out 1.15s infinite !important;}
.gate-kicker,.gate-names,.gate-line,.gate-date,.open-slider{animation:gateItemIn 1s cubic-bezier(.16,.84,.32,1) both !important;}
.gate-kicker{animation-delay:.18s !important;}
.gate-names{animation-delay:.32s !important;}
.gate-line{animation-delay:.44s !important;}
.gate-date{animation-delay:.54s !important;}
.open-slider{animation-delay:.72s !important;}
.open-slider:before{animation:sliderSheen 3.8s ease-in-out 1.2s infinite !important;}
.open-slider:not(.opening):not(.dragging) .open-knob{animation:sliderKnobIdle 3s cubic-bezier(.16,.84,.32,1) 1.4s infinite !important;}
.open-slider.opening .open-track{transform:translateX(0) !important; transition-duration:.76s !important;}
.open-slider.opening .open-knob{left:calc(100% - 42px) !important; animation:knobTap .82s cubic-bezier(.2,.8,.2,1) both !important;}
.open-slider.opening .open-text{color:#fff !important;}
.site:not(.started){opacity:0 !important; transform:translateY(16px) !important; filter:blur(6px) !important;}
.site.started{opacity:1 !important; transform:none !important; filter:none !important; transition:opacity .9s ease, filter .9s ease, transform .9s ease !important;}

/* Scroll reveal animation */
.reveal,.photo-reveal,.gallery-card-v3,.couple-name-v3,.timeline-row,.venue-info{
  transition-property:opacity, transform, filter !important;
  transition-duration:1.28s !important;
  transition-timing-function:cubic-bezier(.13,.86,.28,1) !important;
  will-change:opacity, transform, filter !important;
}
.reveal:not(.show),.photo-reveal:not(.show),.gallery-card-v3:not(.show),.couple-name-v3:not(.show),.timeline-row:not(.show){opacity:0 !important; filter:blur(3px) !important;}
.reveal.show,.photo-reveal.show,.gallery-card-v3.show,.couple-name-v3.show,.timeline-row.show{opacity:1 !important; transform:none !important; filter:none !important;}
.photo-reveal img{transition:filter 1.25s ease, transform 1.65s cubic-bezier(.13,.86,.28,1) !important; will-change:transform, filter !important;}
.photo-reveal:not(.show) img{transform:scale(1.075) !important; filter:blur(10px) !important;}
.photo-reveal.show img,.show.photo-reveal img{transform:scale(1) !important; filter:blur(0) !important;}

/* Directional reveal like it was before */
.hero .top-title.reveal:not(.show){transform:translate3d(-52px,-12px,0) scale(.985) !important;}
.hero .hero-photo.photo-reveal:not(.show){transform:translate3d(64px,34px,0) scale(.986) !important;}
.hero .hero-date-line.reveal:not(.show){transform:translate3d(-54px,22px,0) !important;}
.script-bg.reveal:not(.show){transform:translate3d(-50px,-4px,0) !important;}
.dear.reveal:not(.show){transform:translate3d(44px,0,0) !important;}
.invite-text.reveal:not(.show){transform:translate3d(-42px,10px,0) !important;}
.invite .mini-photo.photo-reveal:not(.show){transform:translate3d(54px,16px,0) scale(.992) !important;}
.section-title.reveal:not(.show){transform:translate3d(-52px,0,0) !important;}
.script-over.reveal:not(.show){transform:translate3d(52px,-8px,0) !important;}
.day .wide-photo.photo-reveal:not(.show){transform:translate3d(-58px,26px,0) scale(.992) !important;}
.day-copy.reveal:not(.show){transform:translate3d(44px,14px,0) !important;}
.gallery-main-v3:not(.show){transform:translate3d(-94px,16px,0) scale(.98) !important;}
.gallery-top-v3:not(.show){transform:translate3d(94px,16px,0) scale(.98) !important;}
.gallery-bottom-v3:not(.show){transform:translate3d(0,38px,0) scale(.98) !important;}
.couple-name-v3:not(.show){transform:translate3d(-50%,28px,0) !important;}
.couple-name-v3.show{transform:translate(-50%,0) !important;}
.cal-card.reveal:not(.show){transform:translate3d(-52px,30px,0) scale(.988) !important;}
.date-big.reveal:not(.show){transform:translate3d(52px,24px,0) !important;}
.venue-card.reveal:not(.show){transform:translate3d(58px,34px,0) scale(.988) !important;}
.venue-main.photo-reveal:not(.show){transform:translate3d(-58px,30px,0) scale(.988) !important;}
.venue-card:not(.show) .venue-info{opacity:0 !important; transform:translateX(40px) !important;}
.venue-card.show .venue-info{opacity:1 !important; transform:none !important;}
.program-head.reveal:not(.show){transform:translateY(20px) !important;}
.program-head .slide-word-left{transition:transform 1.15s cubic-bezier(.13,.86,.28,1) !important; transform:translateX(-78px) !important;}
.program-head .slide-word-right{transition:transform 1.15s cubic-bezier(.13,.86,.28,1) !important; transform:translateX(78px) !important;}
.program-head.show .slide-word-left,.program-head.show .slide-word-right{transform:none !important;}
.timeline-row.reveal:not(.show):nth-child(odd){transform:translateX(-44px) !important;}
.timeline-row.reveal:not(.show):nth-child(even){transform:translateX(44px) !important;}
.dress-title.reveal:not(.show){transform:translateX(-52px) !important;}
.dress-copy.reveal:not(.show){transform:translateX(52px) !important;}
.palette.reveal:not(.show){transform:translateY(32px) scale(.94) !important;}
.slider-block.reveal:not(.show):nth-of-type(1){transform:translateX(-54px) !important;}
.slider-block.reveal:not(.show):nth-of-type(2){transform:translateX(54px) !important;}
.timer-bg-photo.reveal:not(.show){transform:translateX(-56px) scale(.988) !important;}
.timer-line.reveal:not(.show){transform:translateX(52px) !important;}
.countdown.reveal:not(.show){transform:translateY(40px) scale(.988) !important;}
.wish-card.reveal:not(.show):nth-child(odd){transform:translateX(-56px) !important;}
.wish-card.reveal:not(.show):nth-child(even){transform:translateX(56px) !important;}
.contact-title.reveal:not(.show){transform:translateX(-58px) !important;}
.contact-list.reveal:not(.show){transform:translateX(56px) !important;}
.contact-photo.photo-reveal:not(.show){transform:translate3d(-52px,34px,0) scale(.988) !important;}
.final-photo.photo-reveal:not(.show){transform:translate3d(58px,34px,0) scale(.988) !important;}
.final h2.reveal:not(.show){transform:translateX(-52px) !important;}
.final p.reveal:not(.show),.deadline.reveal:not(.show),.final .dark-btn.reveal:not(.show){transform:translateX(52px) !important;}
.days .heart{animation:heartLuxuryPulse 2.8s ease-in-out infinite !important;}

@keyframes gateCardEntrance{0%{opacity:0;transform:translateY(34px) scale(.965);filter:blur(10px)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes gateItemIn{0%{opacity:0;transform:translateY(18px);filter:blur(5px)}100%{opacity:1;transform:none;filter:blur(0)}}
@keyframes gateSheen{0%,62%{transform:translateX(0) rotate(21deg);opacity:0}72%{opacity:1}100%{transform:translateX(560px) rotate(21deg);opacity:0}}
@keyframes gateGlow{0%,100%{transform:translate3d(0,0,0) scale(1);opacity:.55}50%{transform:translate3d(28px,-20px,0) scale(1.08);opacity:.82}}
@keyframes gatePhotoDrift{0%{transform:scale(1.09) translate3d(-8px,0,0)}100%{transform:scale(1.15) translate3d(10px,-8px,0)}}
@keyframes sliderSheen{0%,55%{transform:translateX(-115%);opacity:0}66%{opacity:1}100%{transform:translateX(115%);opacity:0}}
@keyframes sliderKnobIdle{0%,100%{transform:translateX(0)}42%{transform:translateX(16px)}60%{transform:translateX(0)}}
@keyframes knobTap{0%{transform:scale(1)}38%{transform:scale(.92)}100%{transform:scale(1)}}
@keyframes heartLuxuryPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}

/* === PATCH V25: program title neat alignment, animations restored === */
.program.screen{
  padding-top:54px!important;
}
.program-head{
  margin:-6px auto 46px!important;
  min-height:126px!important;
  text-align:center!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important;
}
.program-head:before,
.program-head:after{
  display:none!important;
  content:none!important;
}
.program-head span{
  display:block!important;
  width:100%!important;
  text-align:center!important;
  line-height:1!important;
  letter-spacing:.16em!important;
  padding-left:.16em!important;
  margin:0!important;
}
.program-head em{
  display:block!important;
  width:100%!important;
  text-align:center!important;
  line-height:1!important;
  margin:10px 0 0!important;
}
.reveal,
.photo-reveal,
.gallery-card-v3,
.couple-name-v3,
.timeline-row{
  backface-visibility:hidden;
  -webkit-font-smoothing:antialiased;
}
@media (min-width:900px){
  .program.screen{padding-top:76px!important}
  .program-head{margin:-8px auto 58px!important;min-height:156px!important}
  .program-head em{margin-top:12px!important}
}
@media (max-width:390px){
  .program.screen{padding-top:48px!important}
  .program-head{margin:-8px auto 42px!important;min-height:120px!important}
  .program-head span{letter-spacing:.14em!important;padding-left:.14em!important}
  .program-head em{margin-top:8px!important}
}

/* === PATCH V26: stable zoom handling + higher Program title === */
html{
  -webkit-text-size-adjust:100%!important;
  text-size-adjust:100%!important;
  touch-action:pan-y;
  overscroll-behavior-x:none;
}
body{
  touch-action:pan-y;
  overscroll-behavior-x:none;
}
button,
a,
label,
input,
textarea,
select,
.open-slider,
.slider-window,
.slider-nav button,
.rsvp-open,
.modal-card{
  touch-action:manipulation;
}
input,
textarea,
select{
  font-size:16px!important;
}
body.gate-locked{
  overflow:hidden!important;
  touch-action:none;
}
.program.screen{
  padding-top:32px!important;
}
.program:before{
  top:26px!important;
}
.program:after{
  top:40px!important;
}
.program-head{
  width:100%!important;
  max-width:100%!important;
  margin:-18px auto 56px!important;
  min-height:138px!important;
  gap:14px!important;
  text-align:center!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important;
  position:relative!important;
  z-index:2!important;
}
.program-head:before,
.program-head:after{
  display:none!important;
  content:none!important;
}
.program-head span{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  text-align:center!important;
  white-space:nowrap!important;
  line-height:1.05!important;
  font-size:30px!important;
  letter-spacing:.18em!important;
  padding-left:.18em!important;
  margin:0!important;
}
.program-head em{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  text-align:center!important;
  line-height:.95!important;
  font-size:84px!important;
  margin:0!important;
  padding:0!important;
  transform-origin:center center!important;
}
@media (min-width:900px){
  .program.screen{padding-top:50px!important;}
  .program-head{margin:-24px auto 66px!important;min-height:166px!important;gap:18px!important;}
  .program-head span{font-size:42px!important;letter-spacing:.2em!important;padding-left:.2em!important;}
  .program-head em{font-size:124px!important;}
}
@media (max-width:390px){
  .program.screen{padding-top:28px!important;}
  .program-head{margin:-20px auto 48px!important;min-height:128px!important;gap:12px!important;}
  .program-head span{font-size:27px!important;letter-spacing:.15em!important;padding-left:.15em!important;}
  .program-head em{font-size:78px!important;}
}

/* === PATCH V27: fast photos, beautiful smooth motion, clean dress slider, safe zoom === */
html{
  -webkit-text-size-adjust:100% !important;
  text-size-adjust:100% !important;
  touch-action:pan-y;
  overscroll-behavior-x:none;
}
body{
  -webkit-tap-highlight-color:transparent;
  overscroll-behavior-x:none;
  background:var(--bg) !important;
}
.site{
  isolation:isolate;
  transform:translateZ(0);
  -webkit-transform:translateZ(0);
}
img{
  max-width:100%;
  -webkit-user-drag:none;
  user-select:none;
}
.reveal,
.photo-reveal,
.gallery-card-v3,
.couple-name-v3,
.timeline-row,
.venue-info{
  transition-property:opacity, transform, filter !important;
  transition-duration:1.15s !important;
  transition-timing-function:cubic-bezier(.16,.86,.24,1) !important;
  will-change:opacity, transform, filter;
}
.reveal:not(.show),
.photo-reveal:not(.show),
.gallery-card-v3:not(.show),
.couple-name-v3:not(.show),
.timeline-row:not(.show){
  opacity:0 !important;
  filter:blur(4px) !important;
}
.reveal.show,
.photo-reveal.show,
.gallery-card-v3.show,
.couple-name-v3.show,
.timeline-row.show{
  opacity:1 !important;
  filter:blur(0) !important;
}
.hero-photo.show img,
.invite .mini-photo.show img,
.day .wide-photo.show img,
.gallery-card-v3.show img,
.venue-main.show img,
.contact-photo.show img,
.final-photo.show img{
  animation:photoSoftAlive 13s ease-in-out .35s infinite alternate;
  transform-origin:center center;
}
.gate-card{
  box-shadow:0 28px 80px rgba(40,37,34,.14), inset 0 1px 0 rgba(255,255,255,.45) !important;
}
.gate-card::after{
  content:'';
  position:absolute;
  inset:18px;
  border:1px solid rgba(255,255,255,.38);
  pointer-events:none;
}
.open-slider{
  -webkit-user-select:none;
  user-select:none;
  touch-action:manipulation !important;
}
.screen:not(.hero):not(.final)::after{
  animation:none !important;
}
.screen:has(.show)::after{
  transform:scaleX(1) !important;
}
.timeline-row.show .program-icon{
  animation:iconBloom .9s cubic-bezier(.16,.86,.24,1) both;
}
.timeline-row .program-text span{
  transform-origin:left center;
  transform:scaleX(0);
  transition:transform .85s cubic-bezier(.16,.86,.24,1) .22s;
}
.timeline-row.show .program-text span{
  transform:scaleX(1);
}
.palette.show i{
  animation:palettePop .7s cubic-bezier(.16,.86,.24,1) both;
}
.palette.show i:nth-child(2){animation-delay:.05s}.palette.show i:nth-child(3){animation-delay:.1s}.palette.show i:nth-child(4){animation-delay:.15s}.palette.show i:nth-child(5){animation-delay:.2s}.palette.show i:nth-child(6){animation-delay:.25s}

/* Dress slider: убираем чёрную полоску из первого мужского фото и любые технические линии между карточками */
.dress .slider-window,
.dress .slides,
.dress .slide{
  background:transparent !important;
  border:0 !important;
  outline:0 !important;
  box-shadow:none !important;
}
.dress .slide{
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:14px !important;
  column-gap:14px !important;
  align-items:stretch !important;
  transform:translateZ(0);
}
.dress .look-card{
  position:relative !important;
  isolation:isolate !important;
  overflow:hidden !important;
  background:#f2f1ef !important;
  border:0 !important;
  outline:0 !important;
  box-shadow:0 14px 32px rgba(42,38,34,.055) !important;
}
.dress .look-card::before,
.dress .look-card::after,
.dress .slide::before,
.dress .slide::after{
  display:none !important;
  content:none !important;
}
.dress .look-card img{
  width:calc(100% + 10px) !important;
  height:calc(100% + 10px) !important;
  margin:-5px !important;
  border:0 !important;
  outline:0 !important;
  box-shadow:none !important;
  transform:translateZ(0) !important;
  backface-visibility:hidden;
  object-fit:cover !important;
}
.dress .slider-nav button{
  touch-action:manipulation !important;
  transition:transform .28s ease, opacity .28s ease;
}
.dress .slider-nav button:active{
  transform:scale(.9);
  opacity:.65;
}
@media (max-width:390px){
  .dress .slide{gap:10px !important;column-gap:10px !important;}
  .dress .look-card img{width:calc(100% + 8px) !important;height:calc(100% + 8px) !important;margin:-4px !important;}
}
@media (min-width:900px){
  .dress .slide{gap:18px !important;column-gap:18px !important;}
}
@media (prefers-reduced-motion:reduce){
  .hero-photo.show img,
  .invite .mini-photo.show img,
  .day .wide-photo.show img,
  .gallery-card-v3.show img,
  .venue-main.show img,
  .contact-photo.show img,
  .final-photo.show img,
  .music,
  .days .heart,
  .palette.show i{
    animation:none !important;
  }
  .reveal,
  .photo-reveal,
  .gallery-card-v3,
  .couple-name-v3,
  .timeline-row,
  .venue-info{
    transition-duration:.35s !important;
  }
}
@keyframes photoSoftAlive{
  0%{transform:scale(1.001) translate3d(0,0,0)}
  100%{transform:scale(1.035) translate3d(0,-8px,0)}
}
@keyframes iconBloom{
  0%{opacity:0;transform:scale(.72) rotate(-5deg);filter:blur(4px)}
  100%{opacity:1;transform:scale(1) rotate(0);filter:blur(0)}
}
@keyframes palettePop{
  0%{opacity:0;transform:translateY(12px) scale(.78)}
  100%{opacity:1;transform:none}
}


/* === PATCH V28: softer, slower, gentler motion === */
.gate:before{animation-duration:10s!important}
.gate:after{animation-duration:11s!important}
.gate-blur{animation-duration:12s!important}
.gate-card{animation-duration:1.55s!important}
.gate-kicker,.gate-names,.gate-line,.gate-date,.open-slider{animation-duration:1.18s!important}
.gate-kicker{animation-delay:.26s!important}
.gate-names{animation-delay:.44s!important}
.gate-line{animation-delay:.60s!important}
.gate-date{animation-delay:.78s!important}
.open-slider{animation-delay:.98s!important}
.open-slider:before{animation-duration:4.8s!important;animation-delay:1.8s!important}
.open-track{transition-duration:.58s!important}
.open-knob{transition:left .58s cubic-bezier(.16,.84,.22,1),background .42s ease,color .42s ease,box-shadow .42s ease!important}
.open-slider:not(.opening):not(.dragging) .open-knob{animation-duration:3.8s!important;animation-delay:2.1s!important}
.open-slider.opening .open-knob{animation-duration:.72s!important}
.open-slider.opening .open-track{transition-duration:.72s!important}

.reveal,.photo-reveal,.gallery-card-v3,.couple-name-v3,.timeline-row,.venue-info,.program-text span{
  transition-duration:1.72s!important;
  transition-timing-function:cubic-bezier(.16,.84,.22,1)!important;
}
.delay1{transition-delay:.30s!important}
.delay2{transition-delay:.52s!important}
.delay3{transition-delay:.74s!important}
.reveal:not(.show){filter:blur(3px)!important}
.photo-reveal{transform:translateY(34px) scale(.992)!important;filter:blur(6px)!important}
.photo-reveal img{transform:scale(1.045)!important;transition-duration:2.05s!important;transition-timing-function:cubic-bezier(.16,.84,.22,1)!important}
.photo-reveal.show img,.show.photo-reveal img{transform:scale(1)!important}

.hero .top-title.reveal:not(.show){transform:translate3d(-34px,-10px,0) scale(.992)!important;filter:blur(3px)!important}
.hero .hero-photo.photo-reveal:not(.show){transform:translate3d(36px,22px,0) scale(.992)!important;filter:blur(7px)!important}
.hero .hero-date-line.reveal:not(.show){transform:translate3d(-34px,16px,0)!important;filter:blur(3px)!important}
.script-bg.reveal:not(.show){transform:translate3d(-38px,-4px,0)!important}
.dear.reveal:not(.show){transform:translate3d(32px,0,0)!important}
.invite-text.reveal:not(.show){transform:translate3d(-34px,10px,0)!important}
.invite .mini-photo.photo-reveal:not(.show){transform:translate3d(44px,16px,0) scale(.992)!important}
.section-title.reveal:not(.show){transform:translate3d(-38px,0,0)!important}
.script-over.reveal:not(.show){transform:translate3d(34px,-6px,0)!important}
.day .wide-photo.photo-reveal:not(.show){transform:translate3d(-46px,20px,0) scale(.992)!important}
.day-copy.reveal:not(.show){transform:translate3d(32px,12px,0)!important}
.couple-name-v3:not(.show){transform:translate(-50%,-24px)!important;filter:blur(4px)!important}
.gallery-main-v3:not(.show){transform:translate3d(-72px,12px,0) scale(.992)!important;filter:blur(6px)!important}
.gallery-top-v3:not(.show){transform:translate3d(72px,12px,0) scale(.992)!important;filter:blur(6px)!important}
.gallery-bottom-v3:not(.show){transform:translate3d(0,54px,0) scale(.992)!important;filter:blur(6px)!important}
.cal-card.reveal:not(.show){transform:translate3d(-34px,22px,0) scale(.992)!important}
.date-big.reveal:not(.show){transform:translate3d(34px,18px,0)!important}
.venue-card.reveal:not(.show){transform:translate3d(36px,24px,0) scale(.992)!important}
.venue-main.photo-reveal:not(.show){transform:translate3d(-40px,22px,0) scale(.992)!important}
.venue-card:not(.show) .venue-info{transform:translateX(24px)!important}
.program-head.reveal:not(.show){transform:translateY(14px)!important}
.program-head .slide-word-left{transform:translateX(-42px)!important}
.program-head .slide-word-right{transform:translateX(42px)!important}
.timeline-row.reveal:not(.show):nth-child(odd){transform:translateX(-30px)!important}
.timeline-row.reveal:not(.show):nth-child(even){transform:translateX(30px)!important}
.dress-title.reveal:not(.show){transform:translateX(-34px)!important}
.dress-copy.reveal:not(.show){transform:translateX(34px)!important}
.palette.reveal:not(.show){transform:translateY(20px) scale(.97)!important}
.slider-block.reveal:not(.show):nth-of-type(1){transform:translateX(-34px)!important}
.slider-block.reveal:not(.show):nth-of-type(2){transform:translateX(34px)!important}
.timer-bg-photo.reveal:not(.show){transform:translateX(-36px) scale(.992)!important}
.timer-line.reveal:not(.show){transform:translateX(34px)!important}
.countdown.reveal:not(.show){transform:translateY(24px) scale(.992)!important}
.wish-card.reveal:not(.show):nth-child(odd){transform:translateX(-34px)!important}
.wish-card.reveal:not(.show):nth-child(even){transform:translateX(34px)!important}
.contact-title.reveal:not(.show){transform:translateX(-36px)!important}
.contact-list.reveal:not(.show){transform:translateX(34px)!important}
.contact-photo.photo-reveal:not(.show){transform:translate3d(-34px,24px,0) scale(.992)!important}
.final-photo.photo-reveal:not(.show){transform:translate3d(34px,24px,0) scale(.992)!important}
.final h2.reveal:not(.show){transform:translateX(-32px)!important}
.final p.reveal:not(.show),.deadline.reveal:not(.show),.final .dark-btn.reveal:not(.show){transform:translateX(32px)!important}
.days .heart{animation-duration:4.4s!important}


/* === PATCH V29: much slower and loaded-before-reveal motion === */
.gate-card{animation-duration:1.9s!important}
.gate-kicker,.gate-names,.gate-line,.gate-date,.open-slider{animation-duration:1.35s!important}
.gate:before{animation-duration:12s!important}
.gate:after{animation-duration:13s!important}
.gate-blur{animation-duration:14s!important}
.open-track{transition-duration:.82s!important}
.open-knob{transition:left .82s cubic-bezier(.16,.84,.22,1),background .45s ease,color .45s ease,box-shadow .45s ease!important}
.open-slider:not(.opening):not(.dragging) .open-knob{animation-duration:4.8s!important}
.open-slider.opening .open-knob{animation-duration:.9s!important}
.open-slider.opening .open-track{transition-duration:.9s!important}
.reveal,.photo-reveal,.gallery-card-v3,.couple-name-v3,.timeline-row,.venue-info,.program-text span{transition-duration:2.2s!important;transition-timing-function:cubic-bezier(.16,.84,.22,1)!important}
.photo-reveal img{transition-duration:2.55s!important;transition-timing-function:cubic-bezier(.16,.84,.22,1)!important}
.delay1{transition-delay:.38s!important}.delay2{transition-delay:.64s!important}.delay3{transition-delay:.9s!important}
.days .heart{animation-duration:5.8s!important}
.open-slider.is-waiting{pointer-events:none;opacity:.96}
.open-slider.is-waiting .open-text{letter-spacing:.12em}


/* === PATCH V30: ultra-slow gentle motion === */
.gate-card{animation-duration:2.35s!important}
.gate-kicker,.gate-names,.gate-line,.gate-date,.open-slider{animation-duration:1.85s!important}
.gate-kicker{animation-delay:.35s!important}
.gate-names{animation-delay:.62s!important}
.gate-line{animation-delay:.84s!important}
.gate-date{animation-delay:1.04s!important}
.open-slider{animation-delay:1.28s!important}
.gate:before{animation-duration:15s!important}
.gate:after{animation-duration:16s!important}
.gate-blur{animation-duration:18s!important}
.open-track{transition-duration:1.15s!important}
.open-knob{transition:left 1.15s cubic-bezier(.16,.84,.22,1),background .55s ease,color .55s ease,box-shadow .55s ease!important}
.open-slider:not(.opening):not(.dragging) .open-knob{animation-duration:6.2s!important;animation-delay:2.5s!important}
.open-slider.opening .open-knob{animation-duration:1.15s!important}
.open-slider.opening .open-track{transition-duration:1.15s!important}
.reveal,.photo-reveal,.gallery-card-v3,.couple-name-v3,.timeline-row,.venue-info,.program-text span{transition-duration:3.4s!important;transition-timing-function:cubic-bezier(.16,.84,.22,1)!important}
.photo-reveal img{transition-duration:3.9s!important;transition-timing-function:cubic-bezier(.16,.84,.22,1)!important}
.delay1{transition-delay:.65s!important}
.delay2{transition-delay:1.05s!important}
.delay3{transition-delay:1.45s!important}
.days .heart{animation-duration:7.2s!important}
.timeline-row p:after{transition-duration:2.2s!important}


/* === PATCH V31: faster photo readiness before animation === */
.open-slider.is-waiting{cursor:progress!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.24),0 14px 34px rgba(49,43,38,.10)!important}
.open-slider.is-waiting .open-text{opacity:.98}


/* === PATCH V32: no inner photo animation + better mobile crop === */
/* Photos themselves stay static; only blocks/frames move into place */
.photo-reveal img,
.photo-reveal.show img,
.show.photo-reveal img,
.contact-photo.show img,
.final-photo.show img{
  transform:none !important;
  filter:none !important;
  transition:none !important;
  animation:none !important;
  will-change:auto !important;
}

/* Final couple photo: show legs better on mobile */
.final-photo{
  height:420px !important;
}
.final-photo img{
  object-position:center 36% !important;
}
@media (max-width:430px){
  .final-photo{
    height:520px !important;
    margin:0 -6px 42px !important;
  }
  .final-photo img{
    object-position:center 38% !important;
  }
}
@media (max-width:390px){
  .final-photo{
    height:500px !important;
    margin:0 -4px 40px !important;
  }
  .final-photo img{
    object-position:center 40% !important;
  }
}


/* === PATCH V33: move "Приглашение" more to the left === */
.invite .script-bg{
  right:auto !important;
  left:8px !important;
  text-align:left !important;
}
@media (max-width:430px){
  .invite .script-bg{
    left:2px !important;
  }
}
@media (max-width:390px){
  .invite .script-bg{
    left:0 !important;
    font-size:66px !important;
  }
}


/* === PATCH V34: smaller "Приглашение" title === */
.invite .script-bg{
  font-size:58px !important;
  line-height:1 !important;
}
@media (max-width:430px){
  .invite .script-bg{
    font-size:54px !important;
  }
}
@media (max-width:390px){
  .invite .script-bg{
    font-size:50px !important;
  }
}


/* === PATCH V35: center "Приглашение" and keep full word visible === */
.invite .script-bg{
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%) !important;
  text-align: center !important;
  width: 100% !important;
  max-width: calc(100% - 24px) !important;
  font-size: 58px !important;
  line-height: 1 !important;
  white-space: nowrap !important;
}
@media (max-width:430px){
  .invite .script-bg{
    max-width: calc(100% - 16px) !important;
    font-size: 52px !important;
  }
}
@media (max-width:390px){
  .invite .script-bg{
    max-width: calc(100% - 10px) !important;
    font-size: 48px !important;
  }
}


/* === PATCH V38: bigger text under day photo + bigger names base === */
.day-copy{
  font-size:20px !important;
  line-height:1.7 !important;
  width:84% !important;
  max-width:520px !important;
}
@media (max-width:430px){
  .day-copy{
    width:100% !important;
    font-size:21px !important;
    line-height:1.72 !important;
    margin-top:30px !important;
  }
}
@media (max-width:390px){
  .day-copy{
    font-size:20px !important;
    line-height:1.7 !important;
  }
}


/* === PATCH V39: bigger text under day photo === */
.day-copy{
  width:100% !important;
  max-width:none !important;
  margin:34px 0 0 0 !important;
  font-size:24px !important;
  line-height:1.62 !important;
  color:#59544f !important;
}
@media (max-width:430px){
  .day-copy{
    width:100% !important;
    max-width:none !important;
    margin:34px 0 0 0 !important;
    font-size:24px !important;
    line-height:1.62 !important;
  }
}
@media (max-width:390px){
  .day-copy{
    font-size:23px !important;
    line-height:1.6 !important;
  }
}


/* === PATCH V40: сайт не обрезает ноги на нужных фото === */
/* Большая парная фотография: показываем весь исходник целиком, без object-fit: cover */
.day .wide-photo{
  height:auto !important;
  min-height:0 !important;
  margin:0 auto !important;
  width:min(100%, 380px) !important;
  overflow:visible !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
}
.day .wide-photo img{
  width:100% !important;
  height:auto !important;
  max-height:none !important;
  object-fit:contain !important;
  object-position:center bottom !important;
  display:block !important;
  transform:none !important;
  filter:none !important;
}

/* Финальная фотография тоже без обрезки снизу */
.final-photo{
  height:auto !important;
  min-height:0 !important;
  max-width:380px !important;
  margin:0 auto 48px !important;
  overflow:visible !important;
}
.final-photo img{
  width:100% !important;
  height:auto !important;
  max-height:none !important;
  object-fit:contain !important;
  object-position:center bottom !important;
  display:block !important;
  transform:none !important;
  filter:none !important;
}

/* Dress code: карточки остаются ровными, но фото больше не режутся по ногам */
.dress .look-card{
  aspect-ratio:2 / 3 !important;
  overflow:hidden !important;
  background:#f2f1ef !important;
}
.dress .look-card img{
  width:100% !important;
  height:100% !important;
  margin:0 !important;
  object-fit:cover !important;
  object-position:center bottom !important;
  transform:none !important;
  filter:none !important;
  border:0 !important;
  box-shadow:none !important;
}

/* Именно коричневый женский образ — исходник полный, держим низ кадра в кадре */
.dress .look-card img[src*="dress_w_brown4"]{
  object-position:center bottom !important;
}

@media (max-width:430px){
  .day .wide-photo,
  .final-photo{
    width:calc(100% - 8px) !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
}
@media (min-width:900px){
  .day .wide-photo,
  .final-photo{
    max-width:520px !important;
  }
}


/* === FINAL PATCH V16: remove page contours, enlarge brown women photo, smaller wedding-day text === */
.site{box-shadow:none !important;}
.program:before,.couple-frame-v3,.couple-frame-v2{display:none !important;}
.day-copy{font-size:14px !important;line-height:1.45 !important;width:66% !important;margin-top:22px !important;}
.dress .look-card img[src*="dress_w_brown4"]{object-fit:cover !important;object-position:center 18% !important;transform:scale(1.04) !important;}


/* === FINAL PATCH V17: more legs on day photo, larger day text, bigger brown look without cutting legs === */
.day .wide-photo{height:470px !important; width:calc(100% - 8px) !important; margin:0 auto !important; overflow:hidden !important;}
.day .wide-photo img{object-fit:cover !important; object-position:center center !important;}
.day-copy{font-size:17px !important; line-height:1.5 !important; width:74% !important; margin-top:24px !important;}
.dress .look-card img[src*="dress_w_brown4"]{object-fit:cover !important; object-position:center center !important; transform:none !important;}

/* === FINAL PATCH V18: replace day photo with second original photo, crop only top, enlarge day text === */
.day .wide-photo{
  height:470px !important;
  width:calc(100% - 8px) !important;
  margin:0 auto !important;
  overflow:hidden !important;
}
.day .wide-photo img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  object-position:center center !important;
  display:block !important;
}
.day-copy{
  width:100% !important;
  max-width:none !important;
  margin:28px 0 0 0 !important;
  font-size:22px !important;
  line-height:1.55 !important;
  color:#59544f !important;
}
@media (max-width:390px){
  .day-copy{
    font-size:20px !important;
    line-height:1.5 !important;
  }
}


/* === FINAL PATCH V19: remove empty area under wedding-day photo and make text much larger === */
.day .wide-photo{
  height:auto !important;
  min-height:0 !important;
  width:calc(100% - 8px) !important;
  margin:0 auto !important;
  overflow:visible !important;
  background:transparent !important;
  box-shadow:none !important;
}
.day .wide-photo:before{display:none !important; content:none !important;}
.day .wide-photo img{
  width:100% !important;
  height:auto !important;
  max-height:none !important;
  display:block !important;
  object-fit:cover !important;
  object-position:center center !important;
  aspect-ratio:auto !important;
}
.day-copy{
  width:100% !important;
  max-width:none !important;
  margin:18px 0 0 0 !important;
  padding:0 !important;
  font-size:30px !important;
  line-height:1.34 !important;
  color:#59544f !important;
}
@media (max-width:430px){
  .day-copy{
    font-size:28px !important;
    line-height:1.34 !important;
    margin-top:18px !important;
  }
}
@media (max-width:390px){
  .day-copy{
    font-size:26px !important;
    line-height:1.32 !important;
  }
}


/* === FINAL PATCH V20: make wedding-day text slightly smaller === */
.day-copy{
  font-size:26px !important;
  line-height:1.36 !important;
  margin-top:18px !important;
}
@media (max-width:430px){
  .day-copy{
    font-size:24px !important;
    line-height:1.36 !important;
  }
}
@media (max-width:390px){
  .day-copy{
    font-size:23px !important;
    line-height:1.34 !important;
  }
}


/* === FINAL PATCH V21: make wedding-day text a bit smaller again === */
.day-copy{
  font-size:23px !important;
  line-height:1.36 !important;
  margin-top:18px !important;
}
@media (max-width:430px){
  .day-copy{
    font-size:21px !important;
    line-height:1.36 !important;
  }
}
@media (max-width:390px){
  .day-copy{
    font-size:20px !important;
    line-height:1.34 !important;
  }
}


/* === FINAL PATCH V24: stable loading placeholders for slow VPN/mobile connections === */
.photo-reveal, .hero-photo, .wide-photo, .mini-photo, .venue-main, .final-photo, .contact-photo, .look-card{
  background:#ded9d1;
}
img{
  content-visibility:auto;
}
img.is-img-error{
  opacity:.2 !important;
}


/* === FINAL PATCH V25: VK dress images stable rendering === */
.dress img{min-height:1px;}
.dress .look-card img{background:#e8e3dc;}
