музыка
Материалы для урока
Общий чат
03
Конверт
01
Dropbox
02
  <style>
    :root {
      --vh-z-snezha: 1vh;
      --text-dark-z-snezha: #FFFFFF;
      --hint-z-snezha: rgba(255, 255, 255, 100);
      --ease-z-snezha: cubic-bezier(0.22, 1, 0.36, 1);
      --duration-overlay-hide-z-snezha: 900ms;
      --duration-content-show-z-snezha: 900ms;
      --duration-fade-z-snezha: 500ms;
    }

    * {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }

    html {
      scroll-behavior: smooth;
      -webkit-text-size-adjust: 100%;
    }

    html,
    body {
      width: 100%;
      min-height: 100%;
    }

    body {
      font-family: 'Inter', sans-serif;
      background: #faf8f5;
      color: #111111;
      overflow-x: hidden;
      -webkit-font-smoothing: antialiased;
      text-rendering: optimizeLegibility;
    }

    body.locked-z-snezha {
      overflow: hidden;
      touch-action: none;
    }

    img {
      display: block;
      max-width: 100%;
    }

    button {
      font: inherit;
      color: inherit;
      background: transparent;
      border: none;
    }

    .page-z-snezha {
      width: 100%;
      position: relative;
    }

    .hero-z-snezha {
      position: fixed;
      inset: 0;
      background-size: cover;
      background-image: url('https://static.tildacdn.com/tild6363-6466-4566-b261-353437333235/Frame_20-6.png');
      background-size: cover;
      display: flex;
      align-items: center;
      justify-content: center;
      overflow: hidden;
      isolation: isolate;
      z-index: 9999;
      opacity: 1;
      visibility: visible;
      pointer-events: auto;
      transition:
        opacity var(--duration-overlay-hide-z-snezha) ease,
        visibility var(--duration-overlay-hide-z-snezha) ease;
    }

    .hero-z-snezha.is-hidden-z-snezha {
      opacity: 0;
      visibility: hidden;
      pointer-events: none;
    }

    .hero__center-z-snezha {
      position: relative;
      z-index: 3;
      width: 100%;
      max-width: 920px;
      padding: 32px 20px;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      text-align: center;
    }

    .hero__suptitle-z-snezha {
      font-family: 'Cormorant Garamond', serif;
      color: var(--text-dark-z-snezha);
      font-size: clamp(28px, 2.2vw, 42px);
      line-height: 1;
      letter-spacing: 0.02em;
      margin-bottom: 22px;
      text-transform: uppercase;
    }

    .hero__title-z-snezha {
      font-family: 'Cormorant Garamond', serif;
      color: var(--text-dark-z-snezha);
      font-size: clamp(64px, 6vw, 118px);
      line-height: 0.9;
      font-weight: 500;
      letter-spacing: 0.02em;
      margin-bottom: 26px;
      text-transform: uppercase;
    }

    .fingerprint-trigger-z-snezha {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: min(190px, 58vw);
      padding: 0;
      cursor: pointer;
      outline: none;
      -webkit-tap-highlight-color: transparent;
      transition:
        transform 300ms ease,
        opacity var(--duration-overlay-hide-z-snezha) ease;
      transform-origin: center center;
    }

    .fingerprint-trigger-z-snezha:hover,
    .fingerprint-trigger-z-snezha:focus-visible {
      transform: scale(1.06);
    }

    .fingerprint-trigger-z-snezha:focus-visible {
      outline: 2px solid rgba(0, 0, 0, 0.45);
      outline-offset: 8px;
      border-radius: 12px;
    }

    .fingerprint-trigger-z-snezha img {
      width: 100%;
      height: auto;
      object-fit: contain;
      user-select: none;
      -webkit-user-drag: none;
      pointer-events: none;
      filter: drop-shadow(0 10px 28px rgba(0, 0, 0, 0.12));
    }

    .hero__hint-z-snezha {
      margin-top: 20px;
      color: var(--hint-z-snezha);
      font-size: clamp(16px, 1.15vw, 20px);
      line-height: 1.3;
      transition:
        opacity var(--duration-overlay-hide-z-snezha) ease,
        transform var(--duration-overlay-hide-z-snezha) ease;
    }

    .hero-z-snezha.is-start-hide-z-snezha .fingerprint-trigger-z-snezha,
    .hero-z-snezha.is-start-hide-z-snezha .hero__hint-z-snezha,
    .hero-z-snezha.is-start-hide-z-snezha .hero__center-text-z-snezha {
      opacity: 0;
      transform: scale(0.92);
      pointer-events: none;
    }

    .content-z-snezha {
      position: relative;
      display: none;
      background: #faf8f5;
      color: #222222;
      padding: 80px 20px 120px;
      opacity: 0;
      transform: translateY(30px);
      transition:
        opacity var(--duration-content-show-z-snezha) ease,
        transform var(--duration-content-show-z-snezha) ease;
    }

    .content-z-snezha.is-visible-z-snezha {
      opacity: 1;
      transform: translateY(0);
    }

    .content__inner-z-snezha {
      max-width: 1800px;
      margin: 0 auto;
    }

    .content-z-snezha h2 {
      font-family: 'Cormorant Garamond', serif;
      font-size: clamp(36px, 4vw, 64px);
      margin-bottom: 20px;
    }

    .content-z-snezha p {
      font-size: 18px;
      line-height: 1.7;
      margin-bottom: 18px;
      max-width: 780px;
    }

    @media (max-width: 767px) {
      .hero__suptitle-z-snezha {
        margin-bottom: 18px;
      }

      .hero__title-z-snezha {
        margin-bottom: 20px;
      }

      .fingerprint-trigger-z-snezha {
        width: min(120px, 62vw);
      }

      .hero__hint-z-snezha {
        max-width: 260px;
      }
    }

    @media (hover: none) {
      .fingerprint-trigger-z-snezha:hover {
        transform: none;
      }
    }

    @media (prefers-reduced-motion: reduce) {
      html {
        scroll-behavior: auto;
      }

      .hero-z-snezha,
      .fingerprint-trigger-z-snezha,
      .hero__hint-z-snezha,
      .hero__center-text-z-snezha,
      .content-z-snezha {
        transition: none !important;
        animation: none !important;
      }
    }
  </style>
</head>
<body class="locked-z-snezha">
  <div class="page-z-snezha">
    <section class="hero-z-snezha" id="hero-z-snezha">
      <div class="hero__center-z-snezha">
        <div class="hero__center-text-z-snezha">
          <div class="hero__suptitle-z-snezha">Максим<br>&<br>Анна</div>
          <h1 class="hero__title-z-snezha">⠀</h1>
        </div>

        <button
          type="button"
          class="fingerprint-trigger-z-snezha"
          id="inviteCard-z-snezha"
          aria-label="Открыть приглашение"
        >
          <img
            src="https://static.tildacdn.com/tild3537-6265-4139-b663-386664623238/__-2.png"
            alt="Отпечаток пальца"
          />
        </button>

        <div class="hero__hint-z-snezha">
          Нажмите на отпечаток, чтобы<br />
          открыть приглашение
        </div>
      </div>
    </section>

    <section class="content-z-snezha" id="content-z-snezha">
     
    </section>
  </div>

  <audio id="weddingAudio-z-snezha" preload="auto">
    <source src="https://www.dropbox.com/scl/fi/g87vljgwhis12euyd6wh9/.mp3?rlkey=uudfbnskhdobzkwqqk089dsfi&st=wlt6ijlj&raw=1" type="audio/mpeg" />
    Ваш браузер не поддерживает audio.
  </audio>

  <script>
    (function () {
      const bodyZsnezha = document.body;
      const rootZsnezha = document.documentElement;
      const heroZsnezha = document.getElementById('hero-z-snezha');
      const triggerZsnezha = document.getElementById('inviteCard-z-snezha');
      const contentZsnezha = document.getElementById('content-z-snezha');
      const audioZsnezha = document.getElementById('weddingAudio-z-snezha');

      const overlayHideDurationZsnezha = 900;
      let isOpenedZsnezha = false;
      let resizeTimerZsnezha = null;

      function setRealVhZsnezha() {
        const vhZsnezha = window.innerHeight * 0.01;
        rootZsnezha.style.setProperty('--vh-z-snezha', vhZsnezha + 'px');
      }

      function lockScrollZsnezha() {
        bodyZsnezha.classList.add('locked-z-snezha');
      }

      function unlockScrollZsnezha() {
        bodyZsnezha.classList.remove('locked-z-snezha');
      }

      function playAudioZsnezha() {
        if (!audioZsnezha) return;

        const promiseZsnezha = audioZsnezha.play();

        if (promiseZsnezha && typeof promiseZsnezha.catch === 'function') {
          promiseZsnezha.catch(function () {
            console.log('Аудио было заблокировано браузером.');
          });
        }
      }

      function openInvitationZsnezha() {
        if (!heroZsnezha || !contentZsnezha || isOpenedZsnezha) return;

        isOpenedZsnezha = true;

        playAudioZsnezha();
        heroZsnezha.classList.add('is-start-hide-z-snezha');

        window.setTimeout(function () {
          heroZsnezha.classList.add('is-hidden-z-snezha');
          contentZsnezha.classList.add('is-visible-z-snezha');
          unlockScrollZsnezha();
        }, overlayHideDurationZsnezha);
      }

      function initZsnezha() {
        setRealVhZsnezha();
        lockScrollZsnezha();

        if (triggerZsnezha) {
          triggerZsnezha.addEventListener('click', openInvitationZsnezha);

          triggerZsnezha.addEventListener('keydown', function (eventZsnezha) {
            if (eventZsnezha.key === 'Enter' || eventZsnezha.key === ' ') {
              eventZsnezha.preventDefault();
              openInvitationZsnezha();
            }
          });
        }

        window.addEventListener('resize', function () {
          clearTimeout(resizeTimerZsnezha);
          resizeTimerZsnezha = window.setTimeout(function () {
            setRealVhZsnezha();
          }, 120);
        });

        window.addEventListener('orientationchange', function () {
          window.setTimeout(function () {
            setRealVhZsnezha();
          }, 220);
        });
      }

      initZsnezha();
    })();
  </script>
контакты для связи
Made on
Tilda