@font-face {
    font-family: 'Angelica';
    src: url('../font/Angelica.woff') format('woff');
    font-weight: 400;
    font-style: normal;
}

@font-face {
    font-family: 'A La Russ';
    src: url('../font/Rus.woff') format('woff');
    font-weight: 400;
    font-style: normal;
}


/* ==================== PRELOADER ==================== */
.preloader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background-color: #FBF3D4;
    /* Текстура старой бумаги */
    background-image:
        /* Пятна и пожелтение */
        radial-gradient(ellipse at 15% 20%, rgba(139, 119, 75, 0.08) 0%, transparent 40%),
        radial-gradient(ellipse at 85% 75%, rgba(139, 119, 75, 0.06) 0%, transparent 45%),
        radial-gradient(ellipse at 50% 50%, rgba(103, 97, 51, 0.04) 0%, transparent 60%),
        radial-gradient(circle at 30% 80%, rgba(139, 119, 75, 0.05) 0%, transparent 35%),
        radial-gradient(circle at 70% 15%, rgba(139, 119, 75, 0.07) 0%, transparent 30%),
        /* Виньетка по краям */
        radial-gradient(ellipse at center, transparent 50%, rgba(103, 97, 51, 0.15) 100%),
        /* Легкие "царапины" */
        repeating-linear-gradient(45deg,
            transparent,
            transparent 100px,
            rgba(103, 97, 51, 0.02) 100px,
            rgba(103, 97, 51, 0.02) 101px),
        repeating-linear-gradient(-45deg,
            transparent,
            transparent 150px,
            rgba(103, 97, 51, 0.015) 150px,
            rgba(103, 97, 51, 0.015) 151px);
    z-index: 9999;
    overflow: hidden;

    /* Начальное состояние для анимации отрывания */
    transform-origin: top center;
    transition: transform 1.4s cubic-bezier(0.68, -0.55, 0.265, 1.55),
        opacity 1s ease-out;
}

/* Убираем любые отступы у body, чтобы прелоадер занимал 100% экрана */
body {
    margin: 0;
    padding: 0;
}

/* Анимация отрывания листочка */
.preloader--hidden {
    transform: translateY(105vh) rotateX(-20deg) rotateZ(-2deg);
    opacity: 0;
    pointer-events: none;
    animation: paperTear 1.4s ease-out;
}

/* Декоративные углы */
.preloader__corner {
    position: absolute;
    width: 60px;
    height: 60px;
    border: 2px solid rgba(103, 97, 51, 0.3);
    opacity: 0;
    animation: fadeInCorner 1s ease-out 2.5s forwards;
    z-index: 2;
}

.preloader__corner--top-left {
    top: 30px;
    left: 30px;
    border-right: none;
    border-bottom: none;
}

.preloader__corner--top-right {
    top: 30px;
    right: 30px;
    border-left: none;
    border-bottom: none;
}

.preloader__corner--bottom-left {
    bottom: 100px;
    left: 30px;
    border-right: none;
    border-top: none;
}

.preloader__corner--bottom-right {
    bottom: 100px;
    right: 30px;
    border-left: none;
    border-top: none;
}

@keyframes fadeInCorner {
    to {
        opacity: 1;
    }
}

/* Контейнер с текстом - правый верхний угол */
.preloader__content {
    position: absolute;
    top: 15%;
    right: 8%;
    text-align: right;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 20px;
}

/* Декоративные орнаменты */
.preloader__ornament {
    width: 120px;
    height: 2px;
    background: linear-gradient(to right,
            transparent 0%,
            rgba(103, 97, 51, 0.5) 20%,
            rgba(103, 97, 51, 0.8) 50%,
            rgba(103, 97, 51, 0.5) 80%,
            transparent 100%);
    opacity: 0;
    position: relative;
}

.preloader__ornament::before {
    content: '❧';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 20px;
    color: #676133;
    background-color: transparent;
    padding: 0 10px;
}

.preloader__ornament--top {
    animation: fadeInOrnament 0.8s ease-out 2.3s forwards;
}

.preloader__ornament--bottom {
    animation: fadeInOrnament 0.8s ease-out 2.5s forwards;
}

@keyframes fadeInOrnament {
    to {
        opacity: 1;
    }
}

.preloader__text {
    display: flex;
    flex-direction: column;
    gap: 12px;
    align-items: flex-end;
}

.preloader__word {
    font-family: 'Playfair Display', 'Georgia', serif;
    font-size: 72px;
    font-weight: 400;
    font-style: italic;
    color: #676133;
    opacity: 0;
    transform: translateY(30px) scale(0.95) translateZ(0);
    display: block;
    letter-spacing: 3px;
    text-shadow: 0 2px 4px rgba(103, 97, 51, 0.1);
    line-height: 1.1;
    /* Оптимизация рендеринга - убираем артефакты */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    will-change: transform, opacity;
    backface-visibility: hidden;
}

/* Анимация появления слов - каждое слово появляется последовательно */
.preloader__word--1 {
    animation: fadeInWord 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.3s forwards;
}

.preloader__word--2 {
    animation: fadeInWord 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.9s forwards;
}

.preloader__word--3 {
    animation: fadeInWord 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94) 1.5s forwards;
}

@keyframes fadeInWord {
    0% {
        opacity: 0;
        transform: translateY(30px) scale(0.95) translateZ(0);
    }

    100% {
        opacity: 1;
        transform: translateY(0) scale(1) translateZ(0);
    }
}

/* Изображение в левом нижнем углу - приподнято */
.preloader__image {
    position: absolute;
    bottom: 300px;
    left: 0;
    z-index: 1;
    overflow: visible;
}

.preloader__image img {
    display: block;
    width: 145px;
    height: auto;
    opacity: 0;
    /* Начинаем глубоко за экраном по диагонали */
    transform: translateX(-130%) translateY(90%) rotate(-8deg) translateZ(0);
    /* Плавная пружинистая анимация */
    animation:
        peekImageDiagonal 4s cubic-bezier(0.22, 1, 0.36, 1) 0.9s forwards,
        fadeInImageSoft 1.2s ease-out 0.9s forwards,
        fadeOutImageSoft 1.2s ease-in 3.8s forwards;
    will-change: transform, opacity;
    backface-visibility: hidden;
}

/* Анимация движения изображения */
@keyframes peekImageDiagonal {
    0% {
        transform: translateX(-130%) translateY(90%) rotate(-8deg) translateZ(0);
    }

    /* Overshoot: картинка выезжает, но остаётся на 12px за пределами экрана */
    25% {
        transform: translateX(-12px) translateY(12px) rotate(1.5deg) translateZ(0);
    }

    /* Отскок назад: чуть глубже за экран (2px за пределами) */
    35% {
        transform: translateX(-2px) translateY(2px) rotate(-0.5deg) translateZ(0);
    }

    /* Финальная позиция: 5px за пределами экрана */
    45% {
        transform: translateX(-5px) translateY(5px) rotate(0deg) translateZ(0);
    }

    /* Удерживаем позицию */
    80% {
        transform: translateX(-5px) translateY(5px) rotate(0deg) translateZ(0);
    }

    /* Уезжаем обратно глубоко за экран */
    100% {
        transform: translateX(-130%) translateY(90%) rotate(-8deg) translateZ(0);
    }
}

/* Плавное появление изображения */
@keyframes fadeInImageSoft {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

/* Плавное исчезновение изображения */
@keyframes fadeOutImageSoft {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

/* Дата внизу по центру - выделенная, приподнята */
.preloader__date {
    position: absolute;
    bottom: 100px;
    left: 50%;
    transform: translateX(-50%) translateZ(0);
    z-index: 2;
    opacity: 0;
    animation: fadeInDate 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) 2.1s forwards;
    display: flex;
    align-items: center;
    gap: 20px;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.preloader__date-text {
    font-family: 'Playfair Display', 'Georgia', serif;
    font-size: 36px;
    font-weight: 600;
    color: #676133;
    letter-spacing: 4px;
    text-transform: uppercase;
    white-space: nowrap;
    text-shadow: 0 2px 8px rgba(103, 97, 51, 0.15);
}

.preloader__date-line {
    width: 80px;
    height: 1px;
    background: linear-gradient(to right,
            transparent 0%,
            #676133 50%,
            transparent 100%);
}

@keyframes fadeInDate {
    0% {
        opacity: 0;
        transform: translateX(-50%) translateY(30px) scale(0.9) translateZ(0);
    }

    100% {
        opacity: 1;
        transform: translateX(-50%) translateY(0) scale(1) translateZ(0);
    }
}

/* Эффект тени при отрывании листочка */
.preloader__shadow {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(to bottom,
            rgba(0, 0, 0, 0) 0%,
            rgba(0, 0, 0, 0) 60%,
            rgba(0, 0, 0, 0.15) 100%);
    opacity: 0;
    pointer-events: none;
    transition: opacity 1.4s ease-out;
    z-index: 3;
}

.preloader--hidden .preloader__shadow {
    opacity: 1;
}

/* Анимация тени и свечения при отрывании */
@keyframes paperTear {
    0% {
        filter: drop-shadow(0 0 0 rgba(0, 0, 0, 0));
    }

    30% {
        filter: drop-shadow(0 15px 25px rgba(0, 0, 0, 0.25));
    }

    70% {
        filter: drop-shadow(0 25px 40px rgba(0, 0, 0, 0.35));
    }

    100% {
        filter: drop-shadow(0 0 0 rgba(0, 0, 0, 0));
    }
}

/* Скрытие основного контента пока прелоадер активен */
body.preloading {
    overflow: hidden;
}

body.preloading>*:not(.preloader) {
    opacity: 0;
    transition: opacity 0.8s ease-in;
}

body:not(.preloading)>*:not(.preloader) {
    opacity: 1;
}

/* ==================== АДАПТИВНОСТЬ ==================== */
@media (max-width: 768px) {
    .preloader__word {
        font-size: 54px;
        letter-spacing: 2px;
    }

    .preloader__content {
        top: 12%;
        right: 6%;
    }

    .preloader__image {
        bottom: 300px;
    }

    .preloader__image img {
        width: 120px;
    }

    .preloader__date {
        bottom: 100px;
    }

    .preloader__date-text {
        font-size: 28px;
        letter-spacing: 3px;
    }

    .preloader__date-line {
        width: 60px;
    }

    .preloader__corner {
        width: 45px;
        height: 45px;
    }

    .preloader__corner--top-left,
    .preloader__corner--top-right {
        top: 20px;
    }

    .preloader__corner--top-left,
    .preloader__corner--bottom-left {
        left: 20px;
    }

    .preloader__corner--top-right,
    .preloader__corner--bottom-right {
        right: 20px;
    }

    .preloader__corner--bottom-left,
    .preloader__corner--bottom-right {
        bottom: 100px;
    }
}

@media (max-width: 480px) {
    .preloader__word {
        font-size: 42px;
        letter-spacing: 1px;
    }

    .preloader__content {
        top: 10%;
        right: 5%;
    }

    .preloader__image {
        bottom: 300px;
    }

    .preloader__image img {
        width: 95px;
    }

    .preloader__date {
        bottom: 100px;
    }

    .preloader__date-text {
        font-size: 24px;
        letter-spacing: 2px;
    }

    .preloader__date-line {
        width: 40px;
    }

    .preloader__corner {
        width: 35px;
        height: 35px;
    }

    .preloader__corner--bottom-left,
    .preloader__corner--bottom-right {
        bottom: 100px;
    }

    .preloader__ornament {
        width: 80px;
    }
}

@media (max-width: 350px) {
    .preloader__word {
        font-size: 34px;
    }

    .preloader__image {
        bottom: 300px;
    }

    .preloader__image img {
        width: 80px;
    }

    .preloader__date {
        bottom: 100px;
    }

    .preloader__date-text {
        font-size: 20px;
    }

    .preloader__corner {
        width: 28px;
        height: 28px;
    }

    .preloader__corner--bottom-left,
    .preloader__corner--bottom-right {
        bottom: 100px;
    }
}

h1.title,
h2.title,
h3.title,
h4.title,
h5.title,
h6.title {
    font-family: 'A La Russ';
    font-size: 48px;
    color: #676133;
}

h3.title-time {
    font-family: 'Angelica';
    font-size: 36px;
    color: #676133;
}

p.text {
    font-family: 'Montserrat Alternates', sans-serif;
    font-size: 13px;
    color: #676133;
}

.right-text {
    text-align: right;
}

.container {
    padding: 0 21px;
}


/* welcome */

.welcome {
    width: 100vw;
    height: 100vh;
    position: relative;
}

.welcome__image {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    object-fit: cover;
    background-position: bottom;
    z-index: -1;
}

.welcome__title {
    position: absolute;
    z-index: 10;
    font-family: 'A La Russ';
    font-size: 64px;
    color: #676133;
}

.welcome__title span {
    font-family: 'Angelica';
    font-size: 96px;
    position: absolute;
}

._husband {
    top: 86px;
    left: 127px;
}

._wife {
    top: 187px;
    left: 180px;
}

.D {
    left: 0;
    transform: rotate(-15deg) translate(-100%, -45px);
}

.N {
    left: 0;
    transform: rotate(-30deg) translate(-85%, -54px);
}

/* Текст приглашения над датой */
.welcome__invite {
    position: absolute;
    bottom: 180px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 10;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    text-align: center;
}

.welcome__invite-text {
    font-family: 'Playfair Display', 'Georgia', serif;
    font-size: 24px;
    font-weight: 400;
    font-style: italic;
    color: #F1E0A1;
    letter-spacing: 2px;
    white-space: nowrap;
    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

/* Дата внизу по центру */
.welcome__date {
    position: absolute;
    bottom: 100px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 10;
    display: flex;
    align-items: center;
    gap: 20px;
}

.welcome__date-text {
    font-family: 'Playfair Display', 'Georgia', serif;
    font-size: 36px;
    font-weight: 600;
    color: #F1E0A1;
    letter-spacing: 4px;
    text-transform: uppercase;
    white-space: nowrap;
    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.welcome__date-line {
    width: 80px;
    height: 1px;
    background: linear-gradient(to right,
            transparent 0%,
            #F1E0A1 50%,
            transparent 100%);
}

/* Адаптивность */
@media (max-width: 768px) {
    .welcome__invite {
        bottom: 170px;
    }

    .welcome__invite-text {
        font-size: 20px;
        letter-spacing: 1.5px;
    }

    .welcome__date {
        bottom: 100px;
    }

    .welcome__date-text {
        font-size: 28px;
        letter-spacing: 3px;
    }

    .welcome__date-line {
        width: 60px;
    }
}

@media (max-width: 480px) {
    .welcome__invite {
        bottom: 160px;
        gap: 4px;
    }

    .welcome__invite-text {
        font-size: 17px;
        letter-spacing: 1px;
    }

    .welcome__date {
        bottom: 100px;
    }

    .welcome__date-text {
        font-size: 24px;
        letter-spacing: 2px;
    }

    .welcome__date-line {
        width: 40px;
    }
}

@media (max-width: 350px) {
    .welcome__invite {
        bottom: 150px;
    }

    .welcome__invite-text {
        font-size: 15px;
    }

    .welcome__date {
        bottom: 100px;
    }

    .welcome__date-text {
        font-size: 20px;
    }
}

/* place */
.place {
    padding: 42px 0px;
}

.place__title h2 {
    text-align: right;
}

.place__flex {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 14px;
    margin-top: 28px;
}

img.place__image {
    width: 212px;
    border-radius: 10px 0px 0px 10px;
}

h3.place__name {
    font-family: 'Angelica';
    font-size: 48px;
    color: #676133;
}

.place__address {
    margin-top: 14px;
}

a.place__button {
    display: block;
    width: 80%;
    background-color: #4F2E1B;
    color: #FBF3D4;
    font-size: 20px;
    font-family: 'Montserrat Alternates', sans-serif;
    font-weight: 500;
    padding: 21px 20px;
    border-radius: 85px 0px 0px 85px;
    margin-top: 14px;
    margin-right: 0;
    margin-left: auto;
    text-align: center;
}

/* time */
.time {
    padding: 42px 0px;
}

.time__title h2 {
    text-align: center;
}

.time__wrapper {
    position: relative;
}

.time__list {
    margin-top: 35px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.time__line {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.time__line img {
    width: 100%
}

.time__list-items {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.sbor img {
    width: 100px;
}

.time__img img {
    width: 120px;
    opacity: 0.7;
}

.time__list-text {
    width: 145px;
}

.time__list-text p {
    font-size: 12px;
}

/* Выравнивание текста для создания "коридора" */
.time__list-items:nth-child(odd) .time__list-text h3,
.time__list-items:nth-child(odd) .time__list-text p {
    text-align: right;
}

.time__list-items:nth-child(even) .time__list-text h3,
.time__list-items:nth-child(even) .time__list-text p {
    text-align: left;
}

.time__list-items:nth-child(odd) .time__list-item img {
    margin-right: 30px;
}

.time__list-items:nth-child(even) .time__list-item img {
    margin-left: 30px;
}

/* wishes */
.wishes {
    padding: 35px 0px;
    background-color: #676133;
    border-radius: 28px 28px 0px 0px;
}

.wishes h2,
p {
    color: #FBF3D4;
    text-align: center;
}

.wishes__text {
    position: relative;
    width: 288px;
    margin: 28px auto
}

.wishes__text p {
    color: #FBF3D4;
}

.wishes__letter {
    position: absolute;
    top: 0;
    right: 0;
    transform: translate(50%, -80%);
}

._with_letter {
    margin-top: 42px;
}

/* dresscode */
.dresscode {
    padding-bottom: 63px;
}

.dresscode__title {
    position: relative;
}

.dresscode__title img {
    width: 100vw;
    height: 240px;
    object-fit: cover;
    object-position: right -275px;
}

.dresscode__title h2 {
    text-align: left;
    position: absolute;
    bottom: 7px;
    left: 23px;
}

.dresscode__text {
    margin-top: 14px;
}

.dresscode__image {
    width: 48px;
    height: 48px;
}

.dresscode__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
}

.dresscode__list {
    margin-top: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
}

.dresscode__list-man {
    margin-top: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
}

/* answer */
.answer {
    padding-bottom: 42px;
}

.answer__title {
    position: relative;
}

.answer__title img {
    width: 100vw;
    height: 240px;
    object-fit: cover;
    object-position: 0px -20px;
}

.answer__title-text {
    position: absolute;
    top: 7px;
    left: 21px;
}

.answer__title h2 {
    color: #F1E0A1;
}

.answer__title p {
    color: #F1E0A1;
}

.form__items {
    margin-top: 21px;
}

.form__item {
    margin-top: 14px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.form__label {
    font-size: 14px;
    font-family: 'Montserrat Alternates', sans-serif;
    color: #676133;
    align-self: flex-start;
    cursor: pointer;
    position: relative;
}

.form__input {
    padding: 7px 14px;
    border: 1px solid #676133;
    border-radius: 85px;
    width: 205px;
    font-size: 14px;
    font-family: 'Montserrat Alternates', sans-serif;
    color: #676133;
    align-self: flex-end;
}

.form__item-checkboxes {
    display: flex;
    flex-direction: column;
    gap: 14px;
    width: fit-content;
    margin-left: auto;
}

.form__item-checkbox {
    display: grid;
    grid-template-columns: auto auto;
    gap: 7px;
    align-items: center;
    justify-content: end;
    position: relative;
}

.form__item-radio {
    display: grid;
    grid-template-columns: auto auto;
    gap: 7px;
    align-items: center;
    justify-content: end;
    position: relative;
}

/* Кастомный чекбокс */
.form__checkbox {
    position: absolute;
    opacity: 0;
    border-radius: 7px;
    width: 21px;
    height: 21px;
    cursor: pointer;
    margin: 0;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
}

.form__item-checkbox .form__label {
    padding-right: 28px;
}

/* Квадратик чекбокса */
.form__item-checkbox .form__label::before {
    content: '';
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 21px;
    height: 21px;
    border: 2px solid #676133;
    border-radius: 7px;
    background: transparent;
    transition: background 0.2s ease;
}

/* Кружок внутри (скрыт по умолчанию) */
.form__item-checkbox .form__label::after {
    content: '';
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #F1E0A1;
    opacity: 0;
    transition: opacity 0.2s ease;
}

/* Активное состояние чекбокса */
.form__item-checkbox:has(.form__checkbox:checked) .form__label::before {
    background: #676133;
}

.form__item-checkbox:has(.form__checkbox:checked) .form__label::after {
    opacity: 1;
}

/* Кастомная радио-кнопка */
.form__input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 21px;
    height: 21px;
    cursor: pointer;
    margin: 0;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
}

.form__item-radio .form__label {
    padding-right: 28px;
}

/* Круглая радио-кнопка */
.form__item-radio .form__label::before {
    content: '';
    position: absolute;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 21px;
    height: 21px;
    border: 2px solid #676133;
    border-radius: 50%;
    background: transparent;
    transition: background 0.2s ease;
}

/* Кружок внутри радио (скрыт по умолчанию) */
.form__item-radio .form__label::after {
    content: '';
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #F1E0A1;
    opacity: 0;
    transition: opacity 0.2s ease;
}

/* Активное состояние радио */
.form__item-radio:has(.form__input[type="radio"]:checked) .form__label::before {
    background: #676133;
}

.form__item-radio:has(.form__input[type="radio"]:checked) .form__label::after {
    opacity: 1;
}

/* Фокус для доступности */
.form__checkbox:focus-visible+.form__label::before,
.form__input[type="radio"]:focus-visible+.form__label::before {
    outline: 2px solid #F1E0A1;
    outline-offset: 2px;
}

.form__button {
    padding: 7px 42px;
    background-color: #4F2E1B;
    font-size: 14px;
    font-family: 'Montserrat Alternates', sans-serif;
    color: #FBF3D4;
    border-radius: 85px;
    cursor: pointer;
    font-weight: 600;
}

@media (max-width: 350px) {
    .welcome__title {
        font-size: 48px;
    }

    .welcome__title span {
        font-size: 80px;
    }
}