<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="theme-color" content="#fff8fb">

  <title>$750 Gift Card Reward</title>

  <style>
    :root {
      --pink: #ef4398;
      --pink-dark: #dc2f87;
      --pink-soft: #fce8f2;
      --background: #fff8fb;
      --white: #ffffff;
      --text: #111114;
      --muted: #74747e;
      --border: #e5e5e9;
    }

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

    html {
      scroll-behavior: smooth;
    }

    body {
      min-height: 100vh;

      font-family:
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        Roboto,
        Helvetica,
        Arial,
        sans-serif;

      background:
        linear-gradient(
          180deg,
          #fffafd 0%,
          #fff8fb 55%,
          #fff7fa 100%
        );

      color: var(--text);
    }

    button,
    input {
      font: inherit;
    }

    button {
      -webkit-tap-highlight-color: transparent;
    }

    .container {
      width: min(100%, 760px);
      margin: 0 auto;
      padding: 60px 28px 90px;
    }

    /* HEADER */

    .hero {
      text-align: center;
      margin-bottom: 34px;
    }

    .hero h1 {
      font-size: clamp(34px, 6vw, 50px);
      line-height: 1.05;
      font-weight: 800;
      letter-spacing: -1.5px;
      margin-bottom: 13px;
    }

    .hero p {
      font-size: clamp(18px, 3vw, 23px);
      color: var(--muted);
      line-height: 1.4;
    }

    /* GIFT CARD */

    .gift-card {
      position: relative;

      width: 100%;
      aspect-ratio: 1.78 / 1;

      min-height: 310px;

      overflow: hidden;

      border-radius: 29px;

      background:
        linear-gradient(
          135deg,
          #f365a7 0%,
          #ee4d9c 47%,
          #dd3189 100%
        );

      box-shadow:
        0 18px 45px rgba(213, 44, 130, 0.10);

      margin-bottom: 31px;
    }

    .gift-card::before {
      content: "";

      position: absolute;
      inset: 0;

      background:
        linear-gradient(
          135deg,
          rgba(255,255,255,0.08),
          transparent 45%
        );
    }

    .amount {
      position: absolute;

      top: 32px;
      right: 35px;

      color: white;

      font-size: clamp(45px, 8vw, 68px);
      font-weight: 800;
      letter-spacing: -2px;
    }

    .brand {
      position: absolute;
      inset: 0;

      display: flex;
      align-items: center;
      justify-content: center;

      color: white;

      font-size: clamp(65px, 13vw, 108px);
      font-weight: 700;

      letter-spacing: clamp(9px, 2vw, 18px);

      padding-left: 12px;
    }

    .card-label {
      position: absolute;

      left: 34px;
      bottom: 27px;

      color: rgba(255,255,255,0.78);

      font-size: clamp(18px, 3vw, 25px);
      font-weight: 500;
    }

    /* GET STARTED */

    .get-started {
      width: 100%;
      min-height: 96px;

      border: none;
      border-radius: 28px;

      background:
        linear-gradient(
          90deg,
          #ef489a,
          #e93690
        );

      color: white;

      font-size: clamp(23px, 4vw, 30px);
      font-weight: 700;

      display: flex;
      align-items: center;
      justify-content: center;

      gap: 15px;

      cursor: pointer;

      box-shadow:
        0 10px 25px rgba(226, 50, 139, 0.08);

      transition:
        transform 0.18s ease,
        box-shadow 0.18s ease;
    }

    .get-started:hover {
      transform: translateY(-2px);

      box-shadow:
        0 15px 30px rgba(226, 50, 139, 0.13);
    }

    .get-started:active {
      transform: translateY(0);
    }

    .arrow {
      font-size: 34px;
      line-height: 1;
    }

    /* HOW IT WORKS */

    .how-it-works {
      margin-top: 58px;
    }

    .section-title {
      display: flex;
      align-items: center;

      gap: 15px;

      margin-bottom: 29px;
    }

    .check {
      width: 48px;
      height: 48px;

      flex: 0 0 48px;

      border: 3px solid var(--pink);
      border-radius: 50%;

      display: grid;
      place-items: center;

      color: var(--pink);

      font-size: 23px;
      font-weight: 700;
    }

    .section-title h2 {
      font-size: clamp(30px, 5vw, 40px);
      font-weight: 800;
      letter-spacing: -1px;
    }

    .steps {
      display: grid;
      gap: 18px;
    }

    .step {
      position: relative;

      min-height: 138px;

      display: flex;
      align-items: center;

      gap: 23px;

      padding: 25px 88px 25px 25px;

      background: var(--white);

      border: 1.5px solid var(--border);

      border-radius: 27px;

      box-shadow:
        0 3px 10px rgba(0,0,0,0.018);
    }

    .icon {
      width: 78px;
      height: 78px;

      flex: 0 0 78px;

      border-radius: 21px;

      background: var(--pink-soft);

      display: grid;
      place-items: center;
    }

    .icon svg {
      width: 36px;
      height: 36px;

      fill: none;
      stroke: var(--pink);

      stroke-width: 2;
      stroke-linecap: round;
      stroke-linejoin: round;
    }

    .step-text h3 {
      font-size: clamp(20px, 3vw, 26px);
      line-height: 1.2;

      font-weight: 700;

      margin-bottom: 6px;
    }

    .step-text p {
      color: var(--muted);

      font-size: clamp(16px, 2.5vw, 20px);
      line-height: 1.35;
    }

    .number {
      position: absolute;

      right: 26px;

      width: 53px;
      height: 53px;

      border-radius: 50%;

      background: var(--pink);

      color: white;

      display: grid;
      place-items: center;

      font-size: 23px;
      font-weight: 700;
    }

    /* MODAL OVERLAY */

    .overlay {
      position: fixed;
      inset: 0;

      z-index: 1000;

      display: none;
      align-items: center;
      justify-content: center;

      padding: 24px;

      background: rgba(10,10,12,0.53);
    }

    .overlay.active {
      display: flex;
    }

    /* MODAL */

    .modal {
      position: relative;

      width: min(100%, 660px);

      background: white;

      border-radius: 38px;

      padding: 47px 38px 35px;

      box-shadow:
        0 25px 70px rgba(0,0,0,0.18);

      animation: modalAnimation 0.2s ease;
    }

    @keyframes modalAnimation {
      from {
        opacity: 0;
        transform: scale(0.98) translateY(8px);
      }

      to {
        opacity: 1;
        transform: scale(1) translateY(0);
      }
    }

    .close {
      position: absolute;

      top: 23px;
      right: 27px;

      width: 44px;
      height: 44px;

      border: none;

      background: transparent;

      color: #696a72;

      font-size: 43px;
      font-weight: 300;

      line-height: 1;

      cursor: pointer;
    }

    .modal h2 {
      max-width: 500px;

      padding-right: 35px;

      font-size: clamp(30px, 5vw, 40px);
      line-height: 1.15;

      font-weight: 800;
      letter-spacing: -1.2px;

      margin-bottom: 14px;
    }

    .modal-description {
      color: var(--muted);

      font-size: clamp(18px, 3vw, 22px);

      line-height: 1.4;

      margin-bottom: 32px;
    }

    /* FORM */

    .name-row {
      display: grid;

      grid-template-columns: 1fr 1fr;

      gap: 17px;
    }

    .field {
      margin-bottom: 24px;
    }

    label {
      display: block;

      margin-bottom: 11px;

      font-size: 19px;
      font-weight: 700;
    }

    input {
      width: 100%;
      height: 76px;

      padding: 0 21px;

      border: 2px solid #dfe0e5;
      border-radius: 20px;

      background: white;

      color: #222;

      font-size: 20px;

      outline: none;

      transition:
        border 0.15s ease,
        box-shadow 0.15s ease;
    }

    input::placeholder {
      color: #aaaab2;
    }

    input:focus {
      border-color: var(--pink);

      box-shadow:
        0 0 0 5px rgba(239, 67, 152, 0.11);
    }

    .continue {
      width: 100%;
      min-height: 78px;

      border: none;
      border-radius: 23px;

      background: #efafd0;

      color: white;

      font-size: 25px;
      font-weight: 700;

      cursor: pointer;

      transition:
        background 0.15s ease,
        transform 0.15s ease;
    }

    .continue.ready {
      background:
        linear-gradient(
          90deg,
          #ef489a,
          #dc3088
        );
    }

    .continue.ready:hover {
      transform: translateY(-1px);
    }

    .notice {
      text-align: center;

      color: #999aa3;

      font-size: 14px;
      line-height: 1.45;

      margin-top: 17px;
    }

    .demo-message {
      display: none;

      margin-top: 17px;

      padding: 15px;

      background: #fff0f7;

      color: #c52b78;

      border-radius: 15px;

      text-align: center;

      font-size: 15px;
      font-weight: 700;
    }

    /* MOBILE */

    @media (max-width: 600px) {

      .container {
        padding:
          47px
          20px
          70px;
      }

      .hero {
        margin-bottom: 26px;
      }

      .hero h1 {
        font-size: 32px;
      }

      .hero p {
        font-size: 17px;
      }

      .gift-card {
        min-height: 0;

        border-radius: 25px;

        margin-bottom: 27px;
      }

      .amount {
        top: 23px;
        right: 24px;

        font-size: 39px;
      }

      .brand {
        font-size: 57px;

        letter-spacing: 10px;

        padding-left: 8px;
      }

      .card-label {
        left: 24px;
        bottom: 21px;

        font-size: 16px;
      }

      .get-started {
        min-height: 78px;

        border-radius: 24px;

        font-size: 23px;
      }

      .how-it-works {
        margin-top: 48px;
      }

      .section-title {
        margin-bottom: 24px;
      }

      .check {
        width: 43px;
        height: 43px;

        flex-basis: 43px;

        font-size: 20px;
      }

      .section-title h2 {
        font-size: 29px;
      }

      .step {
        min-height: 118px;

        padding:
          19px
          68px
          19px
          18px;

        gap: 15px;

        border-radius: 23px;
      }

      .icon {
        width: 59px;
        height: 59px;

        flex-basis: 59px;

        border-radius: 17px;
      }

      .icon svg {
        width: 29px;
        height: 29px;
      }

      .step-text h3 {
        font-size: 18px;
      }

      .step-text p {
        font-size: 15px;
      }

      .number {
        right: 15px;

        width: 43px;
        height: 43px;

        font-size: 19px;
      }

      .overlay {
        padding: 17px;
      }

      .modal {
        border-radius: 30px;

        padding:
          41px
          21px
          27px;
      }

      .close {
        top: 17px;
        right: 17px;

        font-size: 37px;
      }

      .modal h2 {
        font-size: 29px;
      }

      .modal-description {
        font-size: 17px;

        margin-bottom: 26px;
      }

      .name-row {
        gap: 10px;
      }

      .field {
        margin-bottom: 20px;
      }

      label {
        font-size: 16px;
      }

      input {
        height: 65px;

        padding: 0 16px;

        border-radius: 17px;

        font-size: 16px;
      }

      .continue {
        min-height: 68px;

        border-radius: 20px;

        font-size: 21px;
      }

    }

  </style>
</head>

<body>

  <main class="container">

    <!-- HEADER -->

    <header class="hero">

      <h1>
        $750 Gift Card Reward
      </h1>

      <p>
        Complete simple tasks &amp; get rewarded
      </p>

    </header>

    <!-- GIFT CARD -->

    <section class="gift-card">

      <div class="amount">
        $750
      </div>

      <div class="brand">
        SHOP
      </div>

      <div class="card-label">
        Gift Card Reward
      </div>

    </section>

    <!-- GET STARTED -->

    <button
      class="get-started"
      id="getStarted"
      type="button"
    >

      <span>
        Get Started
      </span>

      <span class="arrow">
        →
      </span>

    </button>

    <!-- HOW IT WORKS -->

    <section class="how-it-works">

      <div class="section-title">

        <div class="check">
          ✓
        </div>

        <h2>
          How It Works
        </h2>

      </div>

      <div class="steps">

        <!-- STEP ONE -->

        <article class="step">

          <div class="icon">

            <svg viewBox="0 0 24 24">

              <rect
                x="3"
                y="5"
                width="18"
                height="14"
                rx="2"
              ></rect>

              <path
                d="M3 7l9 6 9-6"
              ></path>

            </svg>

          </div>

          <div class="step-text">

            <h3>
              Enter your email address
            </h3>

            <p>
              For notifications and rewards
            </p>

          </div>

          <div class="number">
            1
          </div>

        </article>

        <!-- STEP TWO -->

        <article class="step">

          <div class="icon">

            <svg viewBox="0 0 24 24">

              <rect
                x="6"
                y="2"
                width="12"
                height="20"
                rx="2"
              ></rect>

              <path
                d="M10 18h4"
              ></path>

            </svg>

          </div>

          <div class="step-text">

            <h3>
              Complete simple offers
            </h3>

            <p>
              Follow the available instructions
            </p>

          </div>

          <div class="number">
            2
          </div>

        </article>

        <!-- STEP THREE -->

        <article class="step">

          <div class="icon">

            <svg viewBox="0 0 24 24">

              <rect
                x="3"
                y="6"
                width="18"
                height="12"
                rx="2"
              ></rect>

              <path
                d="M3 10h18"
              ></path>

            </svg>

          </div>

          <div class="step-text">

            <h3>
              Complete the process
            </h3>

            <p>
              Follow the final reward instructions
            </p>

          </div>

          <div class="number">
            3
          </div>

        </article>

      </div>

    </section>

  </main>

  <!-- POPUP -->

  <div
    class="overlay"
    id="overlay"
  >

    <div class="modal">

      <button
        class="close"
        id="closeModal"
        type="button"
        aria-label="Close popup"
      >
        ×
      </button>

      <h2>
        Continue to the Reward
      </h2>

      <p class="modal-description">
        Enter your details below to continue.
      </p>

      <form id="rewardForm">

        <div class="name-row">

          <div class="field">

            <label for="firstName">
              First name
            </label>

            <input
              id="firstName"
              type="text"
              placeholder="John"
              autocomplete="given-name"
              required
            >

          </div>

          <div class="field">

            <label for="lastName">
              Last name
            </label>

            <input
              id="lastName"
              type="text"
              placeholder="Smith"
              autocomplete="family-name"
              required
            >

          </div>

        </div>

        <div class="field">

          <label for="email">
            Email address
          </label>

          <input
            id="email"
            type="email"
            placeholder="you@example.com"
            autocomplete="email"
            required
          >

        </div>

        <button
          class="continue"
          id="continueButton"
          type="submit"
        >
          Continue →
        </button>

        <p class="notice">
          This demonstration page does not submit or store your personal information.
        </p>

        <div
          class="demo-message"
          id="demoMessage"
        >
          Demo complete — no information was transmitted.
        </div>

      </form>

    </div>

  </div>

  <script>

    const getStarted =
      document.getElementById("getStarted");

    const overlay =
      document.getElementById("overlay");

    const closeModal =
      document.getElementById("closeModal");

    const rewardForm =
      document.getElementById("rewardForm");

    const firstName =
      document.getElementById("firstName");

    const lastName =
      document.getElementById("lastName");

    const email =
      document.getElementById("email");

    const continueButton =
      document.getElementById("continueButton");

    const demoMessage =
      document.getElementById("demoMessage");

    /* OPEN POPUP */

    function openPopup() {

      overlay.classList.add("active");

      document.body.style.overflow =
        "hidden";

    }

    /* CLOSE POPUP */

    function closePopup() {

      overlay.classList.remove("active");

      document.body.style.overflow =
        "";

    }

    getStarted.addEventListener(
      "click",
      openPopup
    );

    closeModal.addEventListener(
      "click",
      closePopup
    );

    /* CLOSE WHEN CLICKING OUTSIDE */

    overlay.addEventListener(
      "click",
      function(event) {

        if (event.target === overlay) {

          closePopup();

        }

      }
    );

    /* CLOSE WITH ESCAPE KEY */

    document.addEventListener(
      "keydown",
      function(event) {

        if (event.key === "Escape") {

          closePopup();

        }

      }
    );

    /* CHANGE BUTTON COLOR */

    function updateButton() {

      const completed =
        firstName.value.trim() !== "" &&
        lastName.value.trim() !== "" &&
        email.value.trim() !== "";

      if (completed) {

        continueButton.classList.add(
          "ready"
        );

      } else {

        continueButton.classList.remove(
          "ready"
        );

      }

    }

    firstName.addEventListener(
      "input",
      updateButton
    );

    lastName.addEventListener(
      "input",
      updateButton
    );

    email.addEventListener(
      "input",
      updateButton
    );

    /* DEMO SUBMISSION */

    rewardForm.addEventListener(
      "submit",
      function(event) {

        event.preventDefault();

        if (!rewardForm.checkValidity()) {

          rewardForm.reportValidity();

          return;

        }

        demoMessage.style.display =
          "block";

      }
    );

  </script>

</body>
</html>