:root{--bg:#fafbf7;--green:#60766b;--dark:#40584d;--line:#d7ddd5;--rose:#c98789}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--green);font-family:'Cormorant Garamond',Georgia,serif;font-size:21px;overflow-x:hidden}.paper{width:min(100%,720px);margin:auto;min-height:520px;padding:84px 8.5%;text-align:center;position:relative;overflow:hidden;background:var(--bg)}.paper:before,.paper:after{content:'✾';position:absolute;color:#d7cdc7;opacity:.46;font:270px/1 Georgia,serif;pointer-events:none}.paper:before{left:-115px;top:-84px}.paper:after{right:-150px;bottom:-120px;transform:rotate(30deg)}.hero{min-height:100svh;display:flex;align-items:center;justify-content:center;flex-direction:column}.hero:before,.hero:after{font-size:360px;opacity:.4}.hero:before{left:-170px;top:-100px}.hero:after{right:-180px;bottom:-90px}.micro,.label{font:500 12px Manrope,sans-serif;letter-spacing:2px;position:relative;z-index:1}.hero h1,.hand,.paper h2{position:relative;z-index:1;font-family:'Great Vibes',cursive;font-weight:400;color:var(--dark)}.hero h1{font-size:clamp(76px,18vw,135px);line-height:.7;margin:70px 0 46px}.hero h1 span{font-size:.38em;opacity:.35}.hero-date{font-size:22px;letter-spacing:7px;position:relative;z-index:1}.down{font:36px/1 Georgia,serif;color:var(--green);text-decoration:none;margin-top:80px;position:relative;z-index:1}.intro h2,.agenda h2,.details h2,.dress h2,.form-section h2,footer h2{font-size:clamp(60px,13vw,97px);line-height:.9;margin:15px 0 50px}.intro p,.details p,.form-section>p{position:relative;z-index:1;line-height:1.28;font-size:clamp(23px,5vw,31px)}.hand{font-size:clamp(56px,12vw,82px);line-height:.9;margin:80px 0 12px}.calendar-section{min-height:0;padding-top:48px;padding-bottom:80px}.calendar-section h3{font-weight:500;font-size:37px;margin:0 0 38px}.calendar-section h3 span{margin-left:70px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:15px 5px;position:relative;z-index:1;font-size:22px}.calendar div{font-size:16px}.calendar i{font-style:normal;min-height:34px}.heart{color:var(--rose);border:1.5px solid var(--rose);border-radius:50%;display:grid;place-items:center}.places{padding:0}.place{padding:72px 8.5% 58px;position:relative;z-index:1}.place h3{font-size:40px;font-weight:500;line-height:1;margin:18px 0}.place p{line-height:1.25;margin:12px auto;max-width:520px}.place b{font-size:30px;font-weight:500;display:block;margin:23px}.place a{font:12px Manrope,sans-serif;color:var(--dark);letter-spacing:1px;text-underline-offset:5px}.places img{width:100%;height:380px;display:block;object-fit:cover;position:relative;z-index:1}.agenda h2{margin-bottom:75px}.agenda-grid{display:grid;grid-template-columns:1fr 1px 1fr;gap:0 26px;position:relative;z-index:1}.agenda-grid:before{content:'';background:var(--line);width:1px;grid-column:2;grid-row:1/3}.agenda-grid div{min-height:178px;display:flex;flex-direction:column;justify-content:center}.agenda-grid time{font-size:31px}.agenda-grid span{font-size:28px;line-height:1.05;margin-top:10px}.agenda-grid div:nth-child(1),.agenda-grid div:nth-child(4){grid-column:1}.agenda-grid div:nth-child(2),.agenda-grid div:nth-child(3){grid-column:3}.agenda-grid div:nth-child(2){grid-row:1}.agenda-grid div:nth-child(3){grid-row:2}.details{min-height:620px}.details i{display:block;color:var(--dark);font-style:normal;margin:46px}.dress{padding-bottom:0}.dress .lead{position:relative;z-index:1;line-height:1.28;font-size:25px}.dress article{position:relative;z-index:1;text-align:left;border-top:1px solid var(--line);padding:30px 0 8px;margin-top:32px}.dress article h3,.palette-title{font-size:29px;font-weight:500;margin:0 0 16px}.dress article p{line-height:1.25;font-size:22px}.palette-title{position:relative;z-index:1;margin-top:50px}.dress>p:not(.lead){position:relative;z-index:1}.palette{position:relative;z-index:1;display:flex;justify-content:center;gap:14px;margin:30px 0}.palette i{width:40px;height:40px;border-radius:50%;background:#e7d5c0}.palette i:nth-child(2){background:#c9b396}.palette i:nth-child(3){background:#a2aa94}.palette i:nth-child(4){background:#776552}.palette i:nth-child(5){background:#423d33}.dress>img{width:100%;height:450px;object-fit:cover;object-position:top;display:block;position:relative;z-index:1}.form-section form{position:relative;z-index:1;text-align:left;max-width:520px;margin:50px auto 0;padding:30px;background:#ffffff99;border:1px solid var(--line)}.form-section label,.form-section legend{font-size:23px;line-height:1.22}.form-section>form>label{display:block}.form-section input[type=text],.form-section input:not([type]){font:22px 'Cormorant Garamond',serif;width:100%;border:0;border-bottom:1px solid var(--green);background:transparent;padding:14px 4px;margin:8px 0 28px}.form-section fieldset{border:0;padding:0;margin:30px 0}.form-section fieldset label{display:block;margin:12px 0}.form-section input[type=radio]{accent-color:var(--green);width:18px;height:18px;margin-right:10px}button{font:22px 'Cormorant Garamond',serif;color:#fff;border:0;background:var(--green);padding:18px 52px;cursor:pointer}button:hover{background:var(--dark)}form small{display:block;margin-top:23px;font:12px/1.5 Manrope,sans-serif;color:#809087}footer{min-height:650px}footer h2{margin-bottom:60px}footer p{position:relative;z-index:1;font-size:26px}footer a{color:var(--green);text-underline-offset:5px}.footer-flower{font-size:250px;color:#d7cdc7;opacity:.55;position:absolute;bottom:-140px;left:50%;transform:translateX(-50%)}.reveal{opacity:0;transform:translateY(25px);transition:.8s ease}.reveal.in-view{opacity:1;transform:none}@media(max-width:460px){.paper{padding-left:7%;padding-right:7%}.places .place{padding-left:7%;padding-right:7%}.places img{height:330px}.hero h1{margin-top:60px}.calendar{gap:13px 3px}.calendar-section h3 span{margin-left:40px}.agenda-grid{gap:0 15px}.agenda-grid span{font-size:25px}.form-section form{padding:25px 18px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}}
.dress>img{height:auto;object-fit:contain}
.places img{height:auto;object-fit:contain}
.music-toggle{position:fixed;z-index:20;top:18px;right:18px;border:1px solid #cfd8d1;border-radius:999px;background:#fafbf7e8;color:var(--green);padding:10px 15px;font:500 13px Manrope,sans-serif;box-shadow:0 4px 20px #40584d16}.music-toggle span{font-size:17px;margin-right:4px}.music-toggle.playing{background:var(--green);color:#fff}.gallery{padding-bottom:76px}.gallery h2{margin-bottom:55px}.gallery-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.gallery-grid img{width:100%;height:auto;display:block;object-fit:contain;background:#f0f0eb}.gallery-grid img:first-child{grid-column:1/-1}
.gallery-grid img:last-child{grid-column:1/-1}

/* Бесконечная фотолента: все фотографии показаны целиком, без обрезки. */
.gallery{padding-left:0;padding-right:0}.gallery h2,.gallery-hint{padding-left:8.5%;padding-right:8.5%}.gallery-hint{position:relative;z-index:1;margin:-27px 0 28px;font:500 11px Manrope,sans-serif;letter-spacing:1.5px;text-transform:uppercase}.gallery-viewport{position:relative;z-index:1;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:grab}.gallery-viewport::-webkit-scrollbar{display:none}.gallery-track{display:flex;gap:12px;width:max-content;padding:0 12px 12px}.gallery-track img{height:360px;width:auto;max-width:82vw;object-fit:contain;background:#f0f0eb;display:block;scroll-snap-align:center;border:1px solid #e3e5df}@media(max-width:460px){.gallery h2,.gallery-hint{padding-left:7%;padding-right:7%}.gallery-track img{height:310px;max-width:84vw}}

/* Показываем только наряды: верхняя типографика исходной картинки не попадает в кадр.
   Режим смешивания делает её кремовую подложку визуально прозрачной на бумаге сайта. */
.dress>img{height:640px;object-position:center bottom;mix-blend-mode:multiply}

/* Вторую строку плана дня меняем местами. */
.agenda-grid div:nth-child(3){grid-column:1;grid-row:2}.agenda-grid div:nth-child(4){grid-column:3;grid-row:2}

/* В блоке дресс-кода используется подготовленная PNG-версия без текста. */
.dress>img{height:auto;object-fit:contain;object-position:center;mix-blend-mode:normal;margin-top:-125px}
@media(max-width:460px){.dress>img{margin-top:-95px}}

footer p a{text-decoration:none}footer p{margin-bottom:10px}.contact-card{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap;margin:13px 0 30px}.contact-name{font-size:26px;line-height:1.1;margin-right:4px;color:var(--green)}.contact-name small{font-size:.78em}.contact-action{width:37px;height:37px;border:1px solid var(--green);border-radius:50%;display:inline-grid;place-items:center;text-decoration:none!important;color:var(--green);font:600 12px Manrope,sans-serif;transition:.2s ease}.contact-action.telegram{font-size:17px}.contact-action.max{font-size:9px}.contact-action.whatsapp{font-size:20px;font-family:Georgia,serif}.contact-action.call{font-size:18px}.contact-action:hover{background:var(--green);color:#fff;transform:translateY(-2px)}

/* Логотипы, загруженные для контактов. */
.contact-action{border:0;overflow:hidden;color:transparent}.contact-action i{display:block;width:37px;height:37px;background-image:url('assets/contact-whatsapp-telegram.png');background-size:74px 40px;background-repeat:no-repeat}.contact-action.telegram i{background-position:right center}.contact-action.whatsapp i{background-position:left center}.contact-action img{width:100%;height:100%;object-fit:cover;display:block}.contact-action:hover{background:transparent;transform:translateY(-2px) scale(1.05)}

/* Единый набор иконок: 4 равных клетки в одном прозрачном спрайте. */
.contact-card{width:min(100%,570px);margin-left:auto;margin-right:auto;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}.contact-name{min-width:0;text-align:left}.contact-icons{display:flex;align-items:center;gap:9px;white-space:nowrap}.contact-action{width:42px;height:42px}.contact-action i{width:42px;height:42px;background-image:url('assets/contact-icons-unified.png');background-size:84px 84px}.contact-action.telegram i{background-position:left top}.contact-action.whatsapp i{background-position:right top}.contact-action.call i{background-position:left bottom}.contact-action.max i{background-position:right bottom}@media(max-width:460px){.contact-card{width:100%;gap:7px}.contact-name{font-size:23px}.contact-icons{gap:6px}.contact-action{width:34px;height:34px}.contact-action i{width:34px;height:34px;background-size:68px 68px}}

/* У обеих строк одна и та же сетка из четырёх слотов: иконки стоят строго столбцами. */
.contact-icons{width:195px;justify-content:flex-start}@media(max-width:460px){.contact-icons{width:154px}}

/* В исходном спрайте звонок нарисован выше центра; компенсируем только его. */
.contact-action.call{position:relative;top:-3px}

/* Отдельные квадратные PNG вместо общего спрайта: все иконки выровнены одинаково. */
.contact-action{position:static!important}.contact-action img{width:100%;height:100%;display:block;object-fit:contain}.contact-action i{display:none}

/* Титульный экран: прокрутка открывается только кнопкой, которая запускает музыку. */
html:has(body.gate-active),body.gate-active{height:100%;overflow:hidden;overscroll-behavior:none}body.gate-active{position:fixed;width:100%;touch-action:none}.open-invitation{position:relative;z-index:1;margin-top:52px;padding:16px 24px;border:1px solid var(--green);border-radius:999px;background:transparent;color:var(--green);font:600 11px/1 Manrope,sans-serif;letter-spacing:.12em}.open-invitation:hover{background:var(--green);color:#fff}.open-invitation span{padding-left:6px;font-size:18px;vertical-align:-1px}
