
:root {
  --page-bg:#fffdfd; --text-color:#6b6573; --text-soft:#928b9a;
  --accent-pink:#f6a4a2; --accent-pink-soft:rgba(246,164,162,.14);
  --accent-blue:#7ea6d2; --accent-blue-soft:rgba(126,166,210,.14);
  --accent-dark:#9691a3; --script-color:#918a9d;
  --line:rgba(126,118,142,.12); --line-strong:rgba(126,118,142,.22);
  --flower-filter:none; --glass-light:rgba(255,255,255,.3);
  --glass-base:rgba(255,255,255,.45); --glass-panel:rgba(255,255,255,.80);
  --glass-solid:rgba(255,255,255,.9); --glass-input:rgba(255,255,255,.5);
}

    @font-face {
      font-family: "VeryBerry";
      src: url("../fonts/veryberry.woff2") format("woff2");
      font-weight: normal;
      font-style: normal;
      font-display: swap;
    }

    :root {
      --content-width: 920px;
      --ease: cubic-bezier(.2, .8, .2, 1);
    }

    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; }

    body {
      margin: 0;
      min-width: 320px;
      color: var(--text-color);
      font-family: "Cormorant Garamond", Georgia, serif;
      background:
        repeating-linear-gradient(90deg, transparent 0, transparent 140px, rgba(120,110,130,.012) 140px, rgba(120,110,130,.012) 141px),
        var(--page-bg);
      line-height: 1.65;
      overflow-x: hidden;
      transition: background-color .4s ease, color .4s ease;
    }

    img { display: block; max-width: 100%; }
    button, input, select { font: inherit; }
    a { color: inherit; text-decoration: none; }

    .pageWrap { width: 100%; margin: 0 auto; position: relative; }
    .content { width: min(var(--content-width), calc(100% - 32px)); margin-inline: auto; }
    .section { position: relative; padding: clamp(60px, 8vw, 90px) 0; }

    .section + .section::before {
      content: "";
      position: absolute;
      top: 0;
      left: 50%;
      width: min(680px, calc(100% - 60px));
      height: 1px;
      transform: translateX(-50%);
      background: linear-gradient(90deg, transparent, var(--line-strong) 18%, var(--line-strong) 82%, transparent);
    }

    .sectionHead { position: relative; z-index: 3; max-width: 700px; margin: 0 auto 38px; text-align: center; }

    .sectionKicker {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 34px;
      padding: 0 15px;
      margin-bottom: 16px;
      border: 1px solid var(--line);
      border-radius: 999px;
      background: var(--glass-base);
      color: var(--accent-dark);
      font-size: 11px;
      font-weight: 600;
      letter-spacing: .16em;
      text-transform: uppercase;
      backdrop-filter: blur(8px);
    }

    .sectionTitle {
      margin: 0;
      color: var(--accent-dark);
      font-size: clamp(46px, 6.5vw, 76px);
      line-height: .95;
      font-weight: 400;
      letter-spacing: -.045em;
      text-wrap: balance;
    }

    .sectionText {
      margin: 20px auto 0;
      max-width: 660px;
      color: var(--text-color);
      font-size: clamp(19px, 2.1vw, 23px);
      line-height: 1.75;
    }

    .script { font-family: "VeryBerry", cursive; color: var(--script-color); }

    .themeSwitcher {
      position: fixed;
      right: max(20px, env(safe-area-inset-right));
      bottom: max(20px, env(safe-area-inset-bottom));
      z-index: 60;
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 8px;
      padding: 10px;
      border: 1px solid var(--line);
      border-radius: 20px;
      background: var(--glass-panel);
      box-shadow: 0 12px 30px rgba(0,0,0,.06);
      backdrop-filter: blur(16px);
      -webkit-backdrop-filter: blur(16px);
    }

    .themeBtn {
      width: 28px;
      height: 28px;
      border: 2px solid var(--glass-solid);
      border-radius: 50%;
      cursor: pointer;
      box-shadow: 0 0 0 1px var(--line);
      transition: transform .2s var(--ease), box-shadow .2s ease;
    }

    .themeBtn:hover { transform: scale(1.12); }

    .themeBtn.isActive {
      box-shadow: 0 0 0 2px var(--page-bg), 0 0 0 4px var(--accent-dark);
    }

    .hero {
      min-height: 920px;
      display: grid;
      place-items: center;
      padding: 60px 0 80px;
      text-align: center;
      position: relative;
    }

    .heroInner { position: relative; z-index: 2; width: min(760px, calc(100% - 32px)); }

    .heroBadge {
      display: inline-flex;
      min-height: 38px;
      align-items: center;
      justify-content: center;
      padding: 0 18px;
      border: 1px solid var(--line);
      border-radius: 999px;
      background: var(--glass-base);
      color: var(--accent-dark);
      font-size: 12px;
      font-weight: 600;
      letter-spacing: .16em;
      text-transform: uppercase;
      backdrop-filter: blur(8px);
    }

    .wreathStage {
      position: relative;
      width: min(76vw, 700px);
      aspect-ratio: 391 / 415;
      margin: 26px auto 14px;
      display: grid;
      place-items: center;
      isolation: isolate;
    }

    .wreathStatic {
      position: absolute;
      z-index: 1;
      width: 100%;
      height: 100%;
      object-fit: contain;
      opacity: .88;
      filter: var(--flower-filter);
      transition: filter .4s ease;
    }

    .heroNames {
      position: relative;
      z-index: 3;
      display: grid;
      gap: 2px;
      width: 66%;
      color: var(--script-color);
      font-family: "VeryBerry", cursive;
      font-size: clamp(40px, 6.5vw, 75px);
      line-height: .92;
      text-shadow: 0 4px 15px rgba(100,90,110,.04);
      transition: color .4s ease;
    }

    .heroNames span { display: block; white-space: nowrap; }
    .heroNames .amp { margin: 2px 0; font-size: .8em; }

    .heroDateLine {
      position: relative;
      z-index: 4;
      width: fit-content;
      max-width: 100%;
      min-height: 58px;
      margin: 4px auto 18px;
      padding: 8px 20px;
      display: flex;
      align-items: baseline;
      justify-content: center;
      flex-wrap: wrap;
      gap: 8px;
      border: 1px solid var(--line);
      border-radius: 999px;
      background: var(--glass-panel);
      box-shadow: 0 14px 34px rgba(70, 62, 82, .08);
      backdrop-filter: blur(14px);
      -webkit-backdrop-filter: blur(14px);
      color: var(--accent-dark);
    }

    .heroDateLine::before {
      content: "";
      position: absolute;
      inset: 5px;
      z-index: -1;
      border-radius: inherit;
      background:
        linear-gradient(
          110deg,
          transparent,
          var(--accent-pink-soft),
          transparent 45%,
          var(--accent-blue-soft),
          transparent
        );
      opacity: .72;
      pointer-events: none;
    }

    .heroDateLine__day,
    .heroDateLine__year,
    .heroDateLine__time {
      font-variant-numeric: lining-nums tabular-nums;
    }

    .heroDateLine__day {
      color: var(--accent-pink);
      font-size: clamp(32px, 4.8vw, 48px);
      font-weight: 500;
      line-height: .9;
      letter-spacing: -.065em;
    }

    .heroDateLine__month {
      color: var(--accent-dark);
      font-size: clamp(18px, 2.3vw, 24px);
      font-weight: 500;
      line-height: 1;
      letter-spacing: .05em;
      text-transform: lowercase;
    }

    .heroDateLine__year {
      color: var(--accent-dark);
      font-size: clamp(23px, 3.2vw, 34px);
      font-weight: 300;
      line-height: 1;
      letter-spacing: -.04em;
    }

    .heroDateLine__dot {
      width: 6px;
      height: 6px;
      margin: 0 3px 4px;
      border-radius: 50%;
      background: var(--accent-blue);
      box-shadow: 0 0 0 5px var(--accent-blue-soft);
      flex: 0 0 6px;
    }

    .heroDateLine__time {
      color: var(--text-color);
      font-size: clamp(20px, 2.8vw, 28px);
      font-weight: 600;
      line-height: 1;
      letter-spacing: .08em;
    }

    .heroVenue { margin-top: 10px; color: var(--accent-dark); font-size: 14px; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; }
    .heroReception { margin-top: 8px; font-size: clamp(34px, 5.2vw, 48px); line-height: 1; }

    .heroScroll {
      width: 40px;
      height: 64px;
      margin: 34px auto 0;
      display: grid;
      place-items: start center;
      padding-top: 10px;
      border: 1px solid var(--line);
      border-radius: 999px;
      background: var(--glass-light);
    }

    .heroScroll::before {
      content: "";
      width: 4px;
      height: 10px;
      border-radius: 999px;
      background: var(--accent-pink);
      animation: scrollDot 2s ease-in-out infinite;
    }

    @keyframes scrollDot {
      0%, 100% { transform: translateY(0); opacity: .3; }
      50% { transform: translateY(24px); opacity: 1; }
    }

    .decor { position: absolute; z-index: 1; pointer-events: none; user-select: none; filter: var(--flower-filter); transition: filter .4s ease; }
    .decorStory { top: 40px; left: 150px; width: clamp(180px, 24vw, 280px); transform: rotate(-4deg); opacity: .85; }
    .decorRsvpTop { top: 35px; left: 150px; width: clamp(190px, 24vw, 290px); opacity: .88; }
    .decorRsvpBottom { right: 150px; bottom: 30px; width: clamp(190px, 24vw, 290px); opacity: .88; }

    .storyWrap { max-width: 720px; margin: 0 auto; text-align: center; }
    .storyText { margin: 0; color: var(--text-color); font-size: clamp(20px, 2.2vw, 24px); line-height: 1.9; }
    .storySignature { margin-top: 26px; font-size: clamp(36px, 5vw, 50px); }

    .timeline { position: relative; max-width: 720px; margin: 0 auto; display: grid; gap: 28px; }
    .timeline::before {
      content: "";
      position: absolute;
      top: 24px;
      bottom: 24px;
      left: 50%;
      width: 1px;
      transform: translateX(-50%);
      background: linear-gradient(180deg, transparent, var(--accent-pink) 15%, var(--accent-blue) 85%, transparent);
    }

    .timelineItem { position: relative; width: calc(50% - 36px); }
    .timelineItem:nth-child(odd) { justify-self: start; text-align: right; }
    .timelineItem:nth-child(even) { justify-self: end; text-align: left; }

    .timelineItem::after {
      content: "";
      position: absolute;
      top: 14px;
      width: 11px;
      height: 11px;
      border: 4px solid var(--page-bg);
      border-radius: 50%;
      background: var(--accent-blue);
      box-shadow: 0 0 0 1px var(--line);
    }

    .timelineItem:nth-child(odd)::after { right: -43px; }
    .timelineItem:nth-child(even)::after { left: -43px; }

    .timelineTime { color: var(--accent-dark); font-size: 28px; font-weight: 600; line-height: 1; letter-spacing: .02em; }
    .timelineEvent { margin-top: 6px; color: var(--text-color); font-size: 20px; line-height: 1.55; }

    .locationLayout { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 260px; align-items: center; gap: 50px; max-width: 780px; margin: 0 auto; }
    .locationName { color: var(--accent-dark); font-size: clamp(42px, 5vw, 58px); line-height: 1; }
    .locationAddress { margin: 16px 0 0; font-size: 22px; line-height: 1.6; }
    .locationText { margin-top: 14px; font-size: 18px; }
    .locationVisual { position: relative; min-height: 260px; display: grid; place-items: center; }

    .locationVisual::before {
      content: "";
      position: absolute;
      width: 220px;
      height: 220px;
      border-radius: 50%;
      background: radial-gradient(circle, var(--glass-solid), var(--accent-blue-soft) 60%, transparent 72%);
    }

    .locationVisual img { position: relative; z-index: 1; width: 220px; filter: var(--flower-filter); opacity: .92; }

    .btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 10px;
      min-height: 54px;
      padding: 0 28px;
      margin-top: 24px;
      border: 1px solid transparent;
      border-radius: 999px;
      background: var(--accent-blue);
      color: #fff;
      font-size: 17px;
      font-weight: 600;
      cursor: pointer;
      box-shadow: 0 10px 25px rgba(126,166,210,.15);
      transition: transform .25s var(--ease), box-shadow .25s var(--ease), background-color .3s ease;
    }

    .btn:hover { transform: translateY(-2px); background: var(--accent-dark); box-shadow: 0 14px 30px rgba(100,95,115,.18); }

    .dressWrap { max-width: 740px; margin: 0 auto; text-align: center; }
    .palette { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; margin-top: 30px; }
    .swatch { position: relative; width: 64px; height: 64px; border: 8px solid var(--glass-panel); border-radius: 50%; box-shadow: 0 8px 20px rgba(0,0,0,.04); }
    .swatch::after { content: ""; position: absolute; inset: -9px; border: 1px solid var(--line); border-radius: 50%; }

    /* ПЛОСКАЯ ГАЛЕРЕЯ-СТИКЕРЫ */
    .galleryStage {
      position: relative;
      max-width: 980px;
      min-height: 930px;
      margin: 4px auto 0;
      padding: 52px 22px 72px;
      overflow: visible;
      isolation: isolate;
    }

    .galleryStage::before {
      content: "";
      position: absolute;
      inset: 7% 3% 5%;
      z-index: -2;
      border-radius: 46% 54% 48% 52% / 42% 46% 54% 58%;
      background:
        radial-gradient(circle at 24% 20%, var(--accent-pink-soft), transparent 31%),
        radial-gradient(circle at 76% 68%, var(--accent-blue-soft), transparent 34%);
      filter: blur(1px);
      opacity: .9;
    }

    .galleryStage::after {
      content: "";
      position: absolute;
      right: 2%;
      bottom: 7%;
      width: 130px;
      height: 220px;
      z-index: -1;
      opacity: .74;
      transform: rotate(18deg);
      background:
        linear-gradient(63deg, transparent 48%, var(--accent-dark) 49% 51%, transparent 52%) 50% 50% / 100% 100% no-repeat,
        radial-gradient(ellipse at center, var(--accent-dark) 0 32%, transparent 34%) 13px 18px / 34px 60px repeat-y;
      filter: saturate(.7);
      -webkit-mask-image: linear-gradient(#000,#000);
      mask-image: linear-gradient(#000,#000);
    }

    .stickerPhoto {
      position: absolute;
      margin: 0;
      width: 245px;
      padding: 11px 11px 38px;
      background: #fff;
      box-shadow:
        0 14px 28px rgba(46,38,48,.13),
        0 3px 8px rgba(46,38,48,.08);
      transform-origin: 50% 50%;
      transition:
        transform .38s var(--ease),
        box-shadow .38s var(--ease),
        z-index 0s linear .38s;
      isolation: isolate;
    }

    .stickerPhoto::before {
      content: "";
      position: absolute;
      top: -18px;
      left: 50%;
      width: 86px;
      height: 31px;
      transform: translateX(-50%) rotate(-2deg);
      background: rgba(245, 229, 214, .82);
      border-left: 1px solid rgba(130,110,96,.10);
      border-right: 1px solid rgba(130,110,96,.10);
      box-shadow: 0 3px 8px rgba(70,55,45,.07);
      backdrop-filter: blur(2px);
      z-index: 3;
    }

    .stickerPhoto::after {
      content: "";
      position: absolute;
      inset: 10px 10px 37px;
      pointer-events: none;
      box-shadow: inset 0 0 0 1px rgba(0,0,0,.04);
      z-index: 2;
    }

    .stickerPhoto img {
      width: 100%;
      aspect-ratio: 4 / 5;
      object-fit: cover;
      filter: saturate(.94) contrast(.98);
      transition: transform .55s var(--ease), filter .4s ease;
    }

    .stickerPhoto:hover {
      z-index: 20;
      box-shadow:
        0 24px 50px rgba(46,38,48,.19),
        0 6px 16px rgba(46,38,48,.10);
      transition-delay: 0s;
    }

    .stickerPhoto:hover img {
      transform: scale(1.018);
      filter: saturate(1.03) contrast(1.01);
    }

    .stickerPhoto--1 {
      left: 3%;
      top: 60px;
      width: 285px;
      transform: rotate(-8deg);
    }
    .stickerPhoto--1:hover { transform: rotate(-4deg) translateY(-8px) scale(1.025); }

    .stickerPhoto--2 {
      left: 35%;
      top: 16px;
      width: 250px;
      transform: rotate(5deg);
    }
    .stickerPhoto--2:hover { transform: rotate(2deg) translateY(-8px) scale(1.03); }

    .stickerPhoto--3 {
      right: 2%;
      top: 112px;
      width: 235px;
      transform: rotate(10deg);
    }
    .stickerPhoto--3:hover { transform: rotate(5deg) translateY(-8px) scale(1.03); }

    .stickerPhoto--4 {
      left: 9%;
      top: 465px;
      width: 235px;
      transform: rotate(7deg);
    }
    .stickerPhoto--4:hover { transform: rotate(3deg) translateY(-8px) scale(1.03); }

    .stickerPhoto--5 {
      left: 37%;
      top: 395px;
      width: 285px;
      transform: rotate(-5deg);
    }
    .stickerPhoto--5:hover { transform: rotate(-2deg) translateY(-8px) scale(1.025); }

    .stickerPhoto--6 {
      right: 4%;
      top: 520px;
      width: 225px;
      transform: rotate(-10deg);
    }
    .stickerPhoto--6:hover { transform: rotate(-5deg) translateY(-8px) scale(1.03); }

    .galleryDoodle {
      position: absolute;
      z-index: -1;
      pointer-events: none;
      opacity: .72;
    }

    .galleryDoodle--heart {
      left: 2%;
      bottom: 7%;
      width: 90px;
      height: 90px;
      transform: rotate(-12deg);
    }

    .galleryDoodle--heart::before,
    .galleryDoodle--heart::after {
      content: "";
      position: absolute;
      width: 42px;
      height: 68px;
      border: 3px solid var(--accent-pink);
      border-bottom: 0;
      border-radius: 42px 42px 0 0;
    }

    .galleryDoodle--heart::before {
      left: 13px;
      transform: rotate(-45deg);
      transform-origin: 0 100%;
    }

    .galleryDoodle--heart::after {
      right: 13px;
      transform: rotate(45deg);
      transform-origin: 100% 100%;
    }

    .galleryDoodle--sparkles {
      right: 25%;
      top: 46%;
      width: 74px;
      height: 74px;
      background:
        linear-gradient(var(--accent-pink), var(--accent-pink)) 50% 0 / 2px 74px no-repeat,
        linear-gradient(90deg, var(--accent-pink), var(--accent-pink)) 0 50% / 74px 2px no-repeat;
      transform: rotate(18deg) scale(.7);
    }

    .galleryDoodle--sparkles::before,
    .galleryDoodle--sparkles::after {
      content: "";
      position: absolute;
      inset: 0;
      background: inherit;
      transform: rotate(45deg);
    }

    .galleryDoodle--sparkles::after {
      transform: rotate(22.5deg) scale(.55);
    }

    .rsvpSection { min-height: 740px; display: grid; place-items: center; }
    .rsvpWrap { position: relative; z-index: 3; width: min(620px, calc(100% - 40px)); margin: 0 auto; text-align: center; }
    .rsvpForm { display: grid; gap: 14px; margin-top: 32px; }

    .field {
      width: 100%;
      min-height: 56px;
      padding: 0 20px;
      border: 1px solid var(--line);
      border-radius: 14px;
      background: var(--glass-input);
      color: var(--text-color);
      font-size: 17px;
      outline: none;
    }

    .field:focus {
      border-color: var(--accent-blue);
      background: var(--page-bg);
      box-shadow: 0 0 0 5px var(--accent-blue-soft);
    }

    .rsvpForm .btn { width: 100%; margin-top: 4px; }
    .formNote { margin: 10px 0 0; color: var(--text-soft); font-size: 14px; }
    .successMessage { display: none; margin-top: 22px; padding: 18px; border: 1px solid var(--line); border-radius: 16px; background: var(--accent-blue-soft); color: var(--accent-dark); font-size: 17px; }
    .successMessage.show { display: block; }

    .reveal { opacity: 0; transform: translateY(20px); transition: opacity .8s var(--ease), transform .8s var(--ease); }
    .reveal.in { opacity: 1; transform: translateY(0); }

    @media (max-width: 980px) {
      .galleryStage {
        min-height: 1110px;
        max-width: 760px;
      }

      .stickerPhoto--1 { left: 4%; top: 60px; }
      .stickerPhoto--2 { left: 48%; top: 15px; }
      .stickerPhoto--3 { right: 5%; top: 380px; }
      .stickerPhoto--4 { left: 2%; top: 430px; }
      .stickerPhoto--5 { left: 28%; top: 690px; }
      .stickerPhoto--6 { right: 2%; top: 745px; }
    }

    @media (max-width: 860px) {
      .locationLayout { grid-template-columns: 1fr; gap: 30px; text-align: center; }
      .locationVisual { min-height: 210px; }
      .themeSwitcher { grid-template-columns: repeat(5, 1fr); left: 50%; right: auto; bottom: 16px; transform: translateX(-50%); border-radius: 999px; padding: 8px 12px; width: max-content; max-width: 94vw; }
    }

    @media (max-width: 760px) {
      .hero { min-height: 800px; padding: 40px 0; }
      .wreathStage { width: min(92vw, 440px); }
      .heroNames { width: 68%; font-size: clamp(36px, 10vw, 54px); }
      .section { padding: 60px 0; }
      .section + .section::before { width: calc(100% - 40px); }
      .timeline::before { left: 18px; }
      .timelineItem { width: calc(100% - 44px); justify-self: end !important; text-align: left !important; }
      .timelineItem::after { left: -49px !important; right: auto !important; }

      .galleryStage {
        min-height: 1880px;
        padding: 34px 8px 80px;
      }

      .stickerPhoto {
        width: min(76vw, 300px) !important;
      }

      .stickerPhoto--1 { left: 2%; top: 65px; transform: rotate(-7deg); }
      .stickerPhoto--2 { right: 1%; left: auto; top: 335px; transform: rotate(6deg); }
      .stickerPhoto--3 { left: 3%; right: auto; top: 620px; transform: rotate(-5deg); }
      .stickerPhoto--4 { right: 2%; left: auto; top: 905px; transform: rotate(8deg); }
      .stickerPhoto--5 { left: 2%; top: 1190px; transform: rotate(-6deg); }
      .stickerPhoto--6 { right: 2%; top: 1480px; transform: rotate(5deg); }

      .galleryStage::after {
        width: 95px;
        height: 170px;
        right: -2%;
        bottom: 1%;
      }

      .decorStory { width: 200px; left: -25px; opacity: .74; }
      .decorRsvpTop, .decorRsvpBottom { width: 190px; opacity: .72; }
      .decorRsvpTop { left: -30px; }
      .decorRsvpBottom { right: -30px; }
    }

    @media (max-width: 480px) {
      .hero { min-height: 740px; }
      .heroBadge, .heroVenue { font-size: 11px; }

      .heroDateLine {
        min-height: 52px;
        margin-top: 2px;
        margin-bottom: 16px;
        padding: 8px 14px;
        gap: 6px;
      }

      .heroDateLine__day {
        font-size: clamp(30px, 10vw, 42px);
      }

      .heroDateLine__month {
        font-size: 18px;
      }

      .heroDateLine__year {
        font-size: 24px;
      }

      .heroDateLine__time {
        font-size: 20px;
        letter-spacing: .05em;
      }

      .heroDateLine__dot {
        width: 5px;
        height: 5px;
        flex-basis: 5px;
        margin-left: 1px;
        margin-right: 1px;
      }
      .wreathStage { width: min(98vw, 390px); }
      .heroNames { width: 66%; font-size: clamp(32px, 11vw, 46px); }
      .sectionTitle { font-size: clamp(42px, 13vw, 56px); }
      .sectionText, .storyText { font-size: 18px; }
      .timelineTime { font-size: 26px; }
      .timelineEvent { font-size: 18px; }
      .swatch { width: 54px; height: 54px; }
      .themeSwitcher { gap: 6px; padding: 6px 10px; }
      .themeBtn { width: 24px; height: 24px; }
      .galleryStage {
        min-height: 1660px;
      }

      .stickerPhoto {
        width: min(78vw, 270px) !important;
        padding: 9px 9px 34px;
      }

      .stickerPhoto::before {
        width: 72px;
        height: 27px;
        top: -15px;
      }

      .stickerPhoto--1 { top: 55px; }
      .stickerPhoto--2 { top: 300px; }
      .stickerPhoto--3 { top: 550px; }
      .stickerPhoto--4 { top: 800px; }
      .stickerPhoto--5 { top: 1050px; }
      .stickerPhoto--6 { top: 1300px; }

    }

    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after {
        animation: none !important;
        transition: none !important;
        scroll-behavior: auto !important;
      }

      .reveal {
        opacity: 1;
        transform: none;
      }
    }
  

/* Production shared blocks */
.sharedBlock { position:relative; z-index:3; }
.sharedBlock form { display:grid; gap:14px; }
.sharedBlock input,
.sharedBlock select,
.sharedBlock textarea {
  width:100%; min-height:56px; padding:12px 20px;
  border:1px solid var(--line); border-radius:14px;
  background:var(--glass-input); color:var(--text-color); outline:none;
  font:inherit; font-size:17px;
}
.sharedBlock textarea { min-height:110px; resize:vertical; }
.sharedBlock select:focus,
.sharedBlock textarea:focus {
  border-color:var(--accent-blue); background:var(--page-bg);
  box-shadow:0 0 0 5px var(--accent-blue-soft);
}
.sharedBlock button,
.sharedBlock [type="submit"] {
  width:100%; min-height:54px; border:0; border-radius:999px;
  background:var(--accent-blue); color:#fff; cursor:pointer;
  font:inherit; font-size:17px; font-weight:600;
}
.sharedBlock .rsvpTitle,
.sharedBlock .rsvpHint,
.sharedBlock h2:first-child,
.sharedBlock h3:first-child { display:none !important; }
.sharedBlock .fieldRow,
.sharedBlock .formRow { display:grid; gap:14px; }
.luminaHidden { display:none !important; }


/* =========================================================
   LUMINA: LOCATION BLOCK
   Церемония и банкет в мягких карточках с фотографиями.
========================================================= */
.decorLocation {
  top: 30px;
  right: max(24px, calc((100vw - var(--content-width)) / 2 - 118px));
  width: clamp(170px, 20vw, 260px);
  opacity: .56;
}

.luminaLocationBlock {
  position: relative;
  width: min(980px, 100%);
  margin: 0 auto;
}

.luminaLocationBlock .iviLoc {
  width: 100%;
  margin: 0;
  padding: 0;
}

.luminaLocationBlock .iviLocHead {
  display: none !important;
}

.luminaLocationBlock .iviLocGrid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(22px, 3vw, 34px);
  align-items: stretch;
}

.luminaLocationBlock .iviLocCard {
  position: relative;
  min-width: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line-strong);
  border-radius: 32px;
  background:
    radial-gradient(circle at 0 0, var(--accent-pink-soft), transparent 42%),
    radial-gradient(circle at 100% 100%, var(--accent-blue-soft), transparent 44%),
    var(--glass-panel);
  box-shadow:
    0 26px 70px rgba(77, 60, 72, .11),
    inset 0 1px 0 rgba(255,255,255,.82);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  transition:
    transform .35s var(--ease),
    box-shadow .35s var(--ease),
    border-color .35s ease;
}

.luminaLocationBlock .iviLocCard:hover {
  transform: translateY(-7px);
  border-color: color-mix(in srgb, var(--accent-blue) 44%, var(--line-strong));
  box-shadow:
    0 34px 86px rgba(77, 60, 72, .15),
    inset 0 1px 0 rgba(255,255,255,.9);
}

.luminaLocationBlock .iviLocPhoto {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background:
    linear-gradient(145deg, var(--accent-pink-soft), var(--accent-blue-soft));
}

.luminaLocationBlock .iviLocPhoto::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(180deg, transparent 58%, rgba(61, 48, 61, .14)),
    linear-gradient(135deg, rgba(255,255,255,.16), transparent 38%);
}

.luminaLocationBlock .iviLocPhoto img {
  width: 100%;
  height: 100%;
  min-height: 320px;
  display: block;
  object-fit: cover;
  transition: transform .7s var(--ease), filter .5s ease;
}

.luminaLocationBlock .iviLocCard:hover .iviLocPhoto img {
  transform: scale(1.035);
  filter: saturate(1.03) contrast(1.01);
}

.luminaLocationBlock .iviLocBody {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: clamp(24px, 3vw, 34px);
  text-align: left;
}

.luminaLocationBlock .iviLocBadge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 32px;
  margin-bottom: 16px;
  padding: 0 14px;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  background: rgba(255,255,255,.48);
  color: var(--accent-dark);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .16em;
  line-height: 1;
  text-transform: uppercase;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.luminaLocationBlock .iviLocName {
  margin: 0;
  color: var(--accent-dark);
  font-family: "VeryBerry", "Cormorant Garamond", Georgia, serif;
  font-size: clamp(34px, 4.3vw, 54px);
  font-weight: 400;
  line-height: 1.02;
  letter-spacing: -.025em;
  text-wrap: balance;
}

.luminaLocationBlock .iviLocAddr {
  margin-top: 18px;
  color: var(--text-color);
  font-size: clamp(18px, 2vw, 21px);
  font-weight: 500;
  line-height: 1.5;
}

.luminaLocationBlock .iviLocNote {
  margin-top: 14px;
  color: var(--text-soft);
  font-size: 16px;
  line-height: 1.72;
}

.luminaLocationBlock .iviLocActions {
  display: flex;
  flex-wrap: wrap;
  gap: 11px;
  margin-top: auto;
  padding-top: 24px;
}

.luminaLocationBlock .iviBtn {
  min-height: 50px;
  margin: 0;
  padding: 0 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  transition:
    transform .24s var(--ease),
    box-shadow .24s ease,
    background-color .24s ease,
    border-color .24s ease,
    color .24s ease;
}

.luminaLocationBlock .iviBtn:hover {
  transform: translateY(-2px);
}

.luminaLocationBlock .iviBtnPrimary {
  border: 1px solid var(--accent-blue);
  background: linear-gradient(
    135deg,
    var(--accent-blue),
    color-mix(in srgb, var(--accent-blue) 62%, var(--accent-dark))
  );
  color: #fff;
  box-shadow: 0 12px 26px var(--accent-blue-soft);
}

.luminaLocationBlock .iviBtnPrimary:hover {
  box-shadow: 0 17px 34px var(--accent-blue-soft);
}

.luminaLocationBlock .iviBtnGhost {
  border: 1px solid var(--line-strong);
  background: rgba(255,255,255,.46);
  color: var(--accent-dark);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7);
}

.luminaLocationBlock .iviBtnGhost:hover {
  border-color: var(--accent-pink);
  background: var(--accent-pink-soft);
}

@media (max-width: 860px) {
  .luminaLocationBlock .iviLocGrid {
    grid-template-columns: 1fr;
    width: min(660px, 100%);
    margin-inline: auto;
  }

  .luminaLocationBlock .iviLocPhoto img {
    min-height: 300px;
  }

  .decorLocation {
    right: -40px;
    width: 190px;
    opacity: .42;
  }
}

@media (max-width: 560px) {
  .luminaLocationBlock .iviLocGrid {
    gap: 20px;
  }

  .luminaLocationBlock .iviLocCard {
    border-radius: 25px;
  }

  .luminaLocationBlock .iviLocPhoto {
    aspect-ratio: 16 / 11;
  }

  .luminaLocationBlock .iviLocPhoto img {
    min-height: 220px;
  }

  .luminaLocationBlock .iviLocBody {
    padding: 22px 18px 24px;
  }

  .luminaLocationBlock .iviLocName {
    font-size: clamp(32px, 10vw, 44px);
  }

  .luminaLocationBlock .iviLocAddr {
    font-size: 17px;
  }

  .luminaLocationBlock .iviLocActions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .luminaLocationBlock .iviBtn {
    width: 100%;
  }
}
