Generation #18 on coin-quiz-test

← Report · variant c2 · urgency_line = none_neutral · openai · gpt-5 · 6,156 / 8,435 tokens · $0.0920 · 1 month ago

Prompt sent to the LLM

You are writing ONE challenger variant of a JS-driven quiz page for an A/B test.
The page is a multi-step interactive quiz — question containers are shown/hidden by scripts, buttons advance the step counter, and the final step redirects to an offer link. Your job is to rewrite the *visible copy* (question wording, button labels, headline, subhead, thank-you text, urgency lines, vote counts) — NOT to redesign the machinery. Element ids, class names, script blocks, and the number of question containers are all frozen by the protected tokens above.
Follow the HARD CONSTRAINTS below or your output will be discarded and money wasted.

## HARD CONSTRAINTS — READ FIRST

### Forbidden claims
(none configured)

### Required elements
(none configured)

### Protected tokens — MUST appear in your output, spelled identically

The control below contains placeholder tokens that stand in for dynamic PHP,
inline `<script>` blocks, and legally-frozen strings. These are SACRED. Every
single token below must appear in your output, exactly as written. You may
move a token within the DOM, but you may NOT rename it, split it, translate
it, or drop it. Losing even one token guarantees rejection.

**PHP blocks (2) — HTML-comment tokens:**
  - `<!--{{PHP_0}}-->`
  - `<!--{{PHP_1}}-->`

**Script blocks (7) — HTML-comment tokens:**
  - `<!--{{SCRIPT_0}}-->`
  - `<!--{{SCRIPT_1}}-->`
  - `<!--{{SCRIPT_2}}-->`
  - `<!--{{SCRIPT_3}}-->`
  - `<!--{{SCRIPT_4}}-->`
  - `<!--{{SCRIPT_5}}-->`
  - `<!--{{SCRIPT_6}}-->`

Each SCRIPT token stands in for a real `<script>...</script>` block from the
control. The script may reference DOM elements by `id` or `class` — so any
`id`/`class` already present in the control must be preserved on whichever
element ends up carrying that role, or the restored script will target
nothing and silently break.

**Frozen strings (0) — bracketed tokens:**
  (none)

Before you finalize your HTML, scan it with a text search and confirm every
token above is present. Missing any = rejected.

### Mode: QUIZ REDESIGN (visual restyle only)
- You MAY replace the entire `<style>` block. Keep it under 12KB. If the
  control's `:root` defines CSS variables, reuse them.
- Restyle freely: color palette, typography, spacing, button shape, card
  treatment, progress-bar look, modal styling, hover states.
- Do NOT change the container or card width. Preserve the control's column
  classes (e.g. `col-md-6`), `max-width`, and wrapper sizing exactly as-is.
  Narrowing the layout is a regression, not a style improvement.
- Do NOT restructure the DOM. Every element in the control must still be
  present in the variant, in the same nesting, with the same tag name.
- Do NOT rename or drop any existing `id` or `class` — protected SCRIPT
  tokens reference them by name. You may ADD extra classes for styling
  hooks, but nothing already present may disappear.
- Preserve the count of repeated-structure containers (e.g. `.poll-box`,
  `.step`, `.slide`, `.question`). Scripts hardcode the step count.
- Do NOT add external scripts, fonts, or trackers. Any new fonts must be
  loaded via CSS `@font-face` from a host already present in the control,
  or use system fonts.
- Images: reuse only. Every `<img>` in your output must use a `src` value
  that already appears in the control HTML. You may restyle them via CSS.
- Images MUST fit inside their card. Every `<img>` needs `max-width: 100%`
  and `height: auto` (or an equivalent aspect-ratio rule). Never let an
  image render wider than its containing `.poll-box` / step / question card
  — this ships as a visible overflow bug on the right edge.
- Copy is also changeable per the "what this variant must test" section —
  question wording, button labels, headline, subhead, vote counts, urgency
  lines, thank-you text, final CTA can all be rewritten to match the angle.
- Every protected token above must still appear in your output verbatim.

- **Images must be responsive.** Every `<img>` in your output must have CSS
  `max-width: 100%; height: auto` (inline style or stylesheet rule — both are fine).
  Never hardcode both `width` and `height` as fixed pixel values on an `<img>`
  element at the same time — this locks the aspect ratio and causes cropping on
  different viewports. If you know the intrinsic dimensions, set only `width`
  (or `max-width`) and leave `height: auto`. Never apply `overflow: hidden` + a
  fixed pixel `height` to a container that directly wraps an `<img>` unless a
  deliberate crop is part of the design intent and you have stated it explicitly.
- **Text must be legible against its background.** Never ship white-on-white,
  black-on-black, or low-contrast pale-on-pale text — the user will not be able
  to read it. When you set a page-level text color (e.g. `body { color: #fff }`
  for a dark theme), you MUST also set an explicit `color` on any container that
  has a different background — especially `.modal`, `.modal-content`,
  `.modal-body`, `.card`, `.popup`, `.dropdown-menu`, `.tooltip`, and any
  overlay/dialog. Bootstrap modals default to a white background; if body text
  is white and the modal doesn't override `color`, the entire modal is
  invisible. Verify every text-bearing container has an intentional color
  paired with its background, not an inherited one that clashes.

- No invented testimonials, statistics, endorsements, or case studies. Use only
  the proof assets listed below, verbatim in substance.
- Do NOT introduce new external hosts. Every `src`/`href` that points to another
  domain must already appear in the control.
- Preserve every `data-absys-cta="..."` attribute from the control verbatim
  (same element role, same value). These are tracking beacons — if you drop
  or rename one, the variant stops reporting clicks and we cannot measure it.
  You may add new `data-absys-cta` hooks on additional CTAs you introduce,
  but you may not remove or rename existing ones.
- Output the COMPLETE HTML document, ready to serve.

## The offer
Product: n/a
Price: n/a
Audience: n/a
Core promise: n/a
Proof available: []



## What this variant must test
Restyle the quiz around this creative direction: **urgency_line = none_neutral**.
Rationale: urgency_line=none_neutral has never been tested on this offer. No evidence either way.

QUIZ REDESIGN mode. The DOM, element ids/classes, script blocks, and the
number of question containers are all frozen — the quiz mechanic must keep
working exactly as before. What you CAN do:
- Rewrite the entire `<style>` block for a fresh visual look (color palette,
  typography, spacing, button shape, card treatment, progress-bar look).
- Rewrite the visible copy: question wording, button labels, headline,
  subhead, vote counts, urgency lines, thank-you copy, final CTA.

The goal is a genuinely different-feeling quiz that still walks the user
through the same 3-question-then-thank-you flow. Change the styling and the
persuasive copy to fit the direction above; leave the machinery alone.



## Page design guidelines
A multi-step quiz that qualifies users before presenting an offer. Industry-standard structure:

1. **Header** — Short benefit-focused headline + subheadline. Progress bar showing step X/N. Builds curiosity and momentum.
2. **Question steps** (one container per question, JS show/hide):
   - Contextual image at top — product, lifestyle, or question-relevant visual
   - Social proof line (vote count, e.g. "18,770 people answered this") to reduce hesitation
   - Bold question headline — clear, one sentence
   - 2–4 answer buttons, stacked vertically, full-width on mobile with generous padding
3. **Thank-you / qualification step** (shown after final question):
   - Congratulations headline — confirm they qualify
   - Product image, centered and prominent
   - Urgency line in red — stock warning or time limit
   - Countdown timer ("Reserved for: X:XX")
   - Large primary CTA button — high contrast, full-width, strong action label
   - Auto-redirect countdown text ("Redirecting in 5...")
4. **Processing modals** — Progress bar animation while "verifying" answers, inventory check
5. **Footer** — Legal disclaimer in small muted text

Visual conventions:
- **Do NOT change the container or card width.** Preserve whatever `max-width`, `width`, column class (e.g. `col-md-6`), or wrapper sizing the control uses. The control's width is intentional — shrinking it is a layout regression, not a style improvement.
- Progress bar: thin, colored, updates each step to communicate progress
- Answer buttons: 14px+ padding, full-width, clear hover state
- Thank-you CTA: 18px+ font, bright contrasting color (green or orange)
- Urgency text in red, confirmation text in green

## Control page (your starting point)
```html
<!--{{PHP_0}}-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- google font -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">

    <!-- boostrap -->
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">

    <!-- boostrap icon -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css">

    <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />

    <!-- jquery -->
    <!--{{SCRIPT_0}}-->


    <title>Quiz 5</title>
</head>

<style>
    body {
        font-family: "Roboto", sans-serif;
        font-size: 1rem;
    }

    img {
        width: 100%;
    }

    a {
        text-decoration: none;
    }

    .poll-container {
        border: 1px solid #cfcfcf;
        border-radius: 4px;
        box-shadow: 0px 0px 12px #c3c3c3
    }

    .poll-main-img {
        object-fit: cover;
        object-position: top;
        height: 190px;
    }

    .ty-mod-img {
        max-width: 500px;
        display: block;
        margin: 0 auto;
        height: 280px;
    }

    .poll-main-heading {
        font-weight: 800;
    }

    .votes {
        font-size: .875rem;
        color: #118af3;
        font-weight: 700;
        margin-bottom: .5rem;
    }

    .cta {
        background: none;
        border: 1px solid #118af3;
        border-radius: 4px;
        padding: .75em;
        margin: .25em 0;
        font-weight: 700;
        font-size: 1.25rem;
        color: #118af3;
    }

    .cta:hover {
        background-color: #118af3;
        color: white;
    }

    /* poll box */
    .poll-box {
        display: none;
    }

    .poll-box.active {
        display: block;
    }

    /* progress bar 1 */
    .progress {
        height: 1.5rem;
    }

    .progress-bar {
        background-color: red;
    }

    /* loading style */
    .progress-container {
        width: 100%;
        background-color: #e0e0e0;
        border-radius: 5px;
        overflow: hidden;
        height: 30px;
    }

    .progress-bar2 {
        width: 0;
        height: 100%;
        background-color: #118af3;
        animation: progressAnimation 6s forwards;
    }

    #map {
        height: 400px;
        width: 100%;
        margin-top: 15px;
    }

    @keyframes progressAnimation {
        from {
            width: 0%;
        }

        to {
            width: 100%;
        }
    }

    .blink {
        animation: blinking 1000ms linear infinite;
    }

    @keyframes blinking {
        35% {
            opacity: 0.5;
        }

        55% {
            opacity: 0.325;
        }

        75% {
            opacity: 0.5;
        }
    }

    /* end loading style */

    /* submit button */
    .submit-btn {
        background-color: #118af3;
        color: white;
        border-radius: 4px;
        padding: .75em;
        margin: .25em 0;
        font-weight: 700;
        font-size: 1.25rem;
        cursor: pointer;
    }

    .submit-btn:hover {
        background-color: rgb(43, 153, 248);
    }

    @media (min-width: 768px) {
        .poll-main-img {
            height: 360px;
        }

        .ty-mod-img {
            height: 460px;
        }
    }

    @media only screen and (max-width: 600px) {
        .mainheader {
            font-size: 23px !important;
        }
    }

    /* check inventory modal styles */
    #myBar {
        height: 18px !important;
        display: block;
        background-color: rgb(43, 194, 83);
        box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), inset 0 -2px 6px rgba(0, 0, 0, 0.4);
        position: relative;
        background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(.25, rgba(255, 255, 255, .2)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .2)), color-stop(.75, rgba(255, 255, 255, .2)), color-stop(.75, transparent), to(transparent));
        background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);
        z-index: 1;
        -moz-background-size: 50px 50px;
        background-size: 50px 50px;
        -webkit-animation: move 2s linear infinite;
        -moz-animation: move 2s linear infinite;
        border-radius: 20px;
        overflow: hidden;
        animation: moveIt 10s linear infinite;
    }

    @keyframes moveIt {
        0% {
            background-position: bottom left;
        }

        100% {
            background-position: top right;
        }
    }

    /* end check inventory modal styles */
</style>

<body>
    <a id="redirectlink" href="<!--{{PHP_1}}-->" style="display:none"></a>

    <div class="container mt-3 mt-md-4">
        <h2 class="text-center poll-main-heading mb-0 mainheader" style="line-height: 1;">Free Trump Victory Coin</h2>
        <h4 class="text-center" style="font-weight: 700; color: red; line-height: 1;">Just Pay Shipping</h4>
        <p class="text-center mb-2">Complete This 3 Question Quiz To Claim!</p>
        <!-- <p class="text-center" id="questionNumber">Question <span id="currentQuestion">1</span>/<span>3</span> </p> -->

        <div class="progress col-md-6 mx-auto mb-2" role="progressbar" aria-label="Danger striped example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
            <div class="progress-bar progress-bar-striped progress-bar-animated" id="progress-bar" style="width: 25%;">25%</div>
        </div>

        <p class="text-center" id="questionNumber">Question <span id="currentQuestion">1</span>/<span>3</span> </p>

    </div>

    <div class="container poll-box active" id="step-1">
        <div class="row">
            <div class="col-md-6 mx-auto">
                <div class="poll-container">
                    <!-- <img class="poll-main-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/survivor-coin/quiz/q1-bbs.webp" alt=""> -->
                    <img class="poll-main-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/2025/survivor-coin/qz/q1-survivor-coin-v3.jpg" alt="">
                    <div class="poll-content p-2 py-md-4 px-md-5">
                        <div class="votes">
                            <i class="bi bi-check-circle-fill me-2"></i><span>18,770 Votes</span>
                        </div>
                        <h2 class="poll-main-heading">Do you support Donald Trump?</h2>

                        <div class="d-flex flex-column">
                            <button class="next-btn cta text-center">Yes</button>
                            <button class="next-btn cta text-center">No</button>
                        </div>
                        <!-- <p class="text-center mb-0" style="color: black;">Instructions: Due to limited stock, please complete the 3-question quiz to claim your free coin.</p> -->
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="container poll-box" id="step-2">
        <div class="row">
            <div class="col-md-6 mx-auto">
                <div class="poll-container">
                    <img class="poll-main-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/survivor-coin/quiz/q2640x360.webp" alt="">
                    <div class="poll-content p-2 py-md-4 px-md-5">
                        <div class="votes">
                            <i class="bi bi-check-circle-fill me-2"></i><span>18,770 Votes</span>
                        </div>
                        <h2 class="poll-main-heading">Is Trump better than Biden?</h2>

                        <div class="d-flex flex-column">
                            <button class="next-btn cta text-center">Yes</button>
                            <button class="next-btn cta text-center">No</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="container poll-box" id="step-3">
        <div class="row">
            <div class="col-md-6 mx-auto">
                <div class="poll-container">
                    <img class="poll-main-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/survivor-coin/quiz/q3640x360.webp" alt="">
                    <div class="poll-content p-2 py-md-4 px-md-5">
                        <div class="votes">
                            <i class="bi bi-check-circle-fill me-2"></i><span>18,770 Votes</span>
                        </div>
                        <h2 class="poll-main-heading">Do you have a US mailing address?</h2>
                        <p class="text-center mb-0">Stocks are strictly limited.</p>

                        <div class="d-flex flex-column">
                            <button class="next-btn cta text-center">Yes</button>
                            <a href="https://www.google.com/" class="cta text-center">No</a>
                        </div>
                        <p class="text-center mb-0" style="color: red;">If you cannot receive these coins, please leave immediately so we can give your spot to the next person.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="container poll-box" id="step-4">
        <div class="row">
            <div class="col-md-6 mx-auto">
                <div class="poll-container">
                    <div class="poll-content p-2 py-md-3 px-md-5 text-center">
                        <h2>Thank you Patriot!</h2>
                        <h5 class="mb-1">You are qualified to get this Trump Survivor Coin for <span class="fw-bolder" style="color: green;">FREE!</span></h5>
                    </div>

                    <img class="poll-main-img ty-mod-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/survivor-coin/quiz/q5500x500.webp" alt="">

                    <div class="poll-content p-2 py-md-3 px-md-5 text-center">
                        <p class="mb-0" style="color: red;">This is a very limited offer and stocks are running out fast.</p>

                        <p><b>(Reserved: <span id="countdown">10:00</span>)</p>

                        <div class="get-started btn-v2 submit-btn">
                            CLICK HERE TO CLAIM NOW
                        </div>

                        <p id="redirecting">Redirecting you to claim your offer in... 5</p>
                    </div>

                </div>
            </div>
        </div>
    </div>

    <!-- Zip Code Modal -->
    <div class="modal fade" id="zipCodeVerificationModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="zipCodeVerificationModalLabel">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content">
                <div class="modal-body">
                    <div class="row">
                        <div class="col-sm-12 text-center">
                            <h4>Enter Zip Code</h4>
                            <p class="fw-normal mb-0">We will submit your answers and verify if we can deliver to your location.</p>
                            <input class="w-100 p-3 my-3 rounded form-control" type="text" placeholder="Zip code (e.g., 90210)" id="zipCodeInput">
                            <button type="button" class="cta" id="verifyButton">Verify Zip Code</button>
                            <div id="errorMessage" style="color: red; display: none; font-size: 14px;"></div>
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- End Zip Code Modal -->

    <div class="footer px-2" style="margin-top:2rem;">
        <p class="text-center" style="font-size: 12px; font-weight:400; color:gray;">This website is not affiliated with Facebook, Meta Platforms, Inc., Google, or any government entity. References to public figures, organizations, or events are for descriptive purposes only. Paid for by the sponsor of this promotion.</p>
    </div>

    <!--{{SCRIPT_1}}-->


    <!-- Submit Survery Modal -->
    <div class="modal fade" id="submitSurveyModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="submitSurveyModalLabel">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content">
                <div class="modal-body">
                    <div class="row">
                        <div class="col-sm-12" id="congrats" style="text-align:center;">
                            <h4 id="loadingText">Verifying zip code deliverability...</h4>
                            <div class="progress-container mb-2">
                                <div class="progress-bar2"></div>
                            </div>
                            <!-- <div id="map"></div> -->
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- End Submit Survery Modal -->

    <style>

    </style>

    <!-- Checking Inventory Modal -->
    <div class="modal fade" id="checkingInventoryModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="checkingInventoryModalLabel">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content">
                <div class="modal-body">
                    <div class="row">
                        <div class="col-sm-12" id="congrats" style="text-align:center;">
                            <h5 id="chckng">Congratulations there are still free Survivor Coins available. Claim yours before we
                                run
                                out of stock. </h5>
                            <p id="ptxt" class="progress-text">0%</p>
                            <div id="myProgress">
                                <div id="myBar" class="progress-bar-striped progress-bar-animated" style="width:0;"></div>
                            </div>
                            <br>
                            <img id="map0" src="https://img.cdnvideoserver.com/america/map/0.jpg"
                                style="width:100%;">
                            <img id="map1" src="https://img.cdnvideoserver.com/america/map/1.jpg"
                                style="width:100%; display:none;">
                            <img id="map2" src="https://img.cdnvideoserver.com/america/map/2.jpg"
                                style="width:100%; display:none;">
                            <img id="map3" src="https://img.cdnvideoserver.com/america/map/3.jpg"
                                style="width:100%; display:none;">

                            <h5 class="mt-3" id="redirecting2" style="display:none;">Redirecting to the private page in 3...</h5>
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- End Checking Inventory Modal -->


    <!--{{SCRIPT_2}}-->

    <!-- Reserved Counter -->
    <!--{{SCRIPT_3}}-->
    <!-- End Reserved Counter -->

    <!-- load map script -->
    <!--{{SCRIPT_4}}-->

    <!--{{SCRIPT_5}}-->
    <!-- end load map script -->

    <!--{{SCRIPT_6}}-->



</body>

</html>
```

## Output format
Return a single JSON object and nothing else. The `tokens_preserved` and
`forbidden_claims_checked` arrays are self-checks — filling them forces you
to attend to those constraints before writing the page. Fill them honestly.

{
  "label": "short human name for this variant",
  "attributes": { "urgency_line": "none_neutral" },
  "tokens_preserved": ["{{PHP_0}}", "..."],
  "forbidden_claims_checked": ["legal tender", "..."],
  "change_summary": "one sentence on what differs from control",
  "html": "<!doctype html>...complete document..."
}

Raw response (HTML)

<?php
$tid = $_GET['tid'];
$subid = $_GET['subid'];

$date = new DateTime("now", new DateTimeZone('America/New_York'));
$domain = $_SERVER['HTTP_HOST']; // just the domain
$redirect = "https://{$_SERVER['SERVER_NAME']}/hop/click.php";

if ($_SERVER['HTTP_HOST'] == 'usainquirer.com') {
    $logo = 'https://d1eyz2a6ch1vhl.cloudfront.net/logo/qz-usinquirer.png';
}

$source = $_GET['source'];

?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- google font -->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">

    <!-- boostrap -->
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">

    <!-- boostrap icon -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css">

    <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />

    <!-- jquery -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>


    <title>Quiz 5</title>
</head>

<style>
    :root {
        --bg: #f8fafc;
        --card-bg: #ffffff;
        --text: #0f172a;
        --muted: #64748b;
        --primary: #2563eb;
        --primary-700: #1d4ed8;
        --success: #16a34a;
        --border: #e5e7eb;
        --shadow: 0 6px 18px rgba(2, 6, 23, .08);
    }

    html, body {
        background: var(--bg);
        color: var(--text);
        font-family: "Roboto", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
        font-size: 1rem;
        line-height: 1.5;
    }

    img { /* ensure responsive images */
        max-width: 100%;
        height: auto;
        display: block;
    }

    a { text-decoration: none; }

    .poll-container {
        background: var(--card-bg);
        border: 1px solid var(--border);
        border-radius: 14px;
        box-shadow: var(--shadow);
        overflow: hidden;
    }

    .poll-main-img { /* natural image height, no distortion */
        width: 100%;
        border-bottom: 1px solid var(--border);
    }

    .ty-mod-img { /* thank-you image sizing remains responsive */
        margin: 0 auto;
    }

    .poll-main-heading {
        font-weight: 800;
        letter-spacing: -0.02em;
    }

    .votes {
        font-size: .9rem;
        color: var(--muted);
        font-weight: 600;
        margin-bottom: .5rem;
        display: flex;
        align-items: center;
        gap: .35rem;
    }

    .votes .bi { color: var(--success); }

    .cta {
        background: var(--primary);
        border: 1px solid var(--primary);
        border-radius: 10px;
        padding: .9em 1em;
        margin: .35em 0;
        font-weight: 700;
        font-size: 1.1rem;
        color: #fff;
        transition: all .15s ease-in-out;
        cursor: pointer;
    }

    .cta:hover, .cta:focus { background: var(--primary-700); border-color: var(--primary-700); color: #fff; }

    /* poll box */
    .poll-box { display: none; }
    .poll-box.active { display: block; }

    /* progress bar */
    .progress { height: .75rem; background: #e2e8f0; border-radius: 999px; overflow: hidden; }
    .progress-bar { background: linear-gradient(90deg, var(--primary), #60a5fa); font-size: .75rem; }

    /* loading style in submit modal */
    .progress-container {
        width: 100%;
        background-color: #e2e8f0;
        border-radius: 8px;
        overflow: hidden;
        height: 14px;
    }
    .progress-bar2 {
        width: 0;
        height: 100%;
        background: linear-gradient(90deg, var(--primary), #60a5fa);
        animation: progressAnimation 6s forwards;
    }

    @keyframes progressAnimation { from { width: 0%; } to { width: 100%; } }

    .blink { animation: blinking 1000ms linear infinite; }
    @keyframes blinking { 35% { opacity: .55; } 55% { opacity: .35; } 75% { opacity: .55; } }

    /* submit/primary CTA */
    .submit-btn {
        background-color: var(--success);
        color: #fff;
        border-radius: 12px;
        padding: .95em 1em;
        margin: .25em 0;
        font-weight: 800;
        font-size: 1.15rem;
        cursor: pointer;
        letter-spacing: .3px;
        transition: filter .15s ease-in-out;
    }
    .submit-btn:hover { filter: brightness(0.95); }

    /* modal text colors to ensure legibility on white backgrounds */
    .modal-content, .modal-body, .modal .modal-content { color: var(--text); }

    /* checking inventory modal progress bar */
    #myBar {
        height: 18px !important;
        display: block;
        background-color: rgb(43, 194, 83);
        box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), inset 0 -2px 6px rgba(0, 0, 0, 0.4);
        position: relative;
        background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent);
        z-index: 1;
        background-size: 50px 50px;
        animation: moveIt 10s linear infinite;
        border-radius: 20px;
        overflow: hidden;
    }
    @keyframes moveIt { 0% { background-position: bottom left; } 100% { background-position: top right; } }

    @media only screen and (max-width: 600px) { .mainheader { font-size: 23px !important; } }
</style>

<body>
    <a id="redirectlink" href="<?php echo $redirect; ?>" style="display:none"></a>

    <div class="container mt-3 mt-md-4">
        <h2 class="text-center poll-main-heading mb-0 mainheader" style="line-height: 1;">Trump Commemorative Coin — 3‑Question Check</h2>
        <h4 class="text-center" style="font-weight: 700; color: #334155; line-height: 1;">Answer at your own pace</h4>
        <p class="text-center mb-2">Please complete the short quiz below to see if you’re eligible.</p>
        <!-- <p class="text-center" id="questionNumber">Question <span id="currentQuestion">1</span>/<span>3</span> </p> -->

        <div class="progress col-md-6 mx-auto mb-2" role="progressbar" aria-label="Danger striped example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
            <div class="progress-bar progress-bar-striped progress-bar-animated" id="progress-bar" style="width: 25%;">25%</div>
        </div>

        <p class="text-center" id="questionNumber">Question <span id="currentQuestion">1</span>/<span>3</span> </p>

    </div>

    <div class="container poll-box active" id="step-1">
        <div class="row">
            <div class="col-md-6 mx-auto">
                <div class="poll-container">
                    <!-- <img class="poll-main-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/survivor-coin/quiz/q1-bbs.webp" alt=""> -->
                    <img class="poll-main-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/2025/survivor-coin/qz/q1-survivor-coin-v3.jpg" alt="">
                    <div class="poll-content p-2 py-md-4 px-md-5">
                        <div class="votes">
                            <i class="bi bi-check-circle-fill me-2"></i><span>Verified responses today: 12,842</span>
                        </div>
                        <h2 class="poll-main-heading">How would you describe your view of Donald Trump?</h2>

                        <div class="d-flex flex-column">
                            <button class="next-btn cta text-center">Favorable</button>
                            <button class="next-btn cta text-center">Unfavorable</button>
                        </div>
                        <!-- <p class="text-center mb-0" style="color: black;">Instructions: Due to limited stock, please complete the 3-question quiz to claim your free coin.</p> -->
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="container poll-box" id="step-2">
        <div class="row">
            <div class="col-md-6 mx-auto">
                <div class="poll-container">
                    <img class="poll-main-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/survivor-coin/quiz/q2640x360.webp" alt="">
                    <div class="poll-content p-2 py-md-4 px-md-5">
                        <div class="votes">
                            <i class="bi bi-check-circle-fill me-2"></i><span>People answered this: 18,770</span>
                        </div>
                        <h2 class="poll-main-heading">Who do you believe would do a better job as President?</h2>

                        <div class="d-flex flex-column">
                            <button class="next-btn cta text-center">Donald Trump</button>
                            <button class="next-btn cta text-center">Joe Biden</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="container poll-box" id="step-3">
        <div class="row">
            <div class="col-md-6 mx-auto">
                <div class="poll-container">
                    <img class="poll-main-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/survivor-coin/quiz/q3640x360.webp" alt="">
                    <div class="poll-content p-2 py-md-4 px-md-5">
                        <div class="votes">
                            <i class="bi bi-check-circle-fill me-2"></i><span>Responses recorded: 9,412</span>
                        </div>
                        <h2 class="poll-main-heading">Can we ship to a U.S. mailing address?</h2>
                        <p class="text-center mb-0" style="color: #64748b;">This helps confirm delivery availability.</p>

                        <div class="d-flex flex-column">
                            <button class="next-btn cta text-center">Yes</button>
                            <a href="https://www.google.com/" class="cta text-center">No, I’m outside the U.S.</a>
                        </div>
                        <p class="text-center mb-0" style="color: #64748b;">If you are not eligible for U.S. shipping, you can exit or skip.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="container poll-box" id="step-4">
        <div class="row">
            <div class="col-md-6 mx-auto">
                <div class="poll-container">
                    <div class="poll-content p-2 py-md-3 px-md-5 text-center">
                        <h2>Thanks for your answers</h2>
                        <h5 class="mb-1">You’re eligible to request the Trump Survivor Coin at <span class="fw-bolder" style="color: green;">no cost</span>.</h5>
                    </div>

                    <img class="poll-main-img ty-mod-img" src="https://d1eyz2a6ch1vhl.cloudfront.net/survivor-coin/quiz/q5500x500.webp" alt="">

                    <div class="poll-content p-2 py-md-3 px-md-5 text-center">
                        <p class="mb-0" style="color: #334155;">Your selection has been saved.</p>

                        <p><b>(Reserved for: <span id="countdown">10:00</span>)</b></p>

                        <div class="get-started btn-v2 submit-btn">
                            PROCEED TO CLAIM
                        </div>

                        <p id="redirecting">Redirecting to the offer page in... 5</p>
                    </div>

                </div>
            </div>
        </div>
    </div>

    <!-- Zip Code Modal -->
    <div class="modal fade" id="zipCodeVerificationModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="zipCodeVerificationModalLabel">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content">
                <div class="modal-body">
                    <div class="row">
                        <div class="col-sm-12 text-center">
                            <h4>Enter Zip Code</h4>
                            <p class="fw-normal mb-0">We will submit your answers and verify if we can deliver to your location.</p>
                            <input class="w-100 p-3 my-3 rounded form-control" type="text" placeholder="Zip code (e.g., 90210)" id="zipCodeInput">
                            <button type="button" class="cta" id="verifyButton">Verify Zip Code</button>
                            <div id="errorMessage" style="color: red; display: none; font-size: 14px;"></div>
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- End Zip Code Modal -->

    <div class="footer px-2" style="margin-top:2rem;">
        <p class="text-center" style="font-size: 12px; font-weight:400; color:gray;">This website is not affiliated with Facebook, Meta Platforms, Inc., Google, or any government entity. References to public figures, organizations, or events are for descriptive purposes only. Paid for by the sponsor of this promotion.</p>
    </div>

    <script>
        document.getElementById('verifyButton').addEventListener('click', function() {
            const zipCode = document.getElementById('zipCodeInput').value;
            const regex = /^\d{5}$/;
            const errorMessage = document.getElementById('errorMessage');

            errorMessage.style.display = 'none';

            if (!regex.test(zipCode)) {
                errorMessage.textContent = 'Please enter a valid 5-digit zip code (e.g., 90210).';
                errorMessage.style.display = 'block';
            } else {
                // var currentModal = new bootstrap.Modal(document.getElementById('zipCodeVerificationModal'));
                // currentModal.hide();

                $('#zipCodeVerificationModal').modal('hide');

                var myModal = new bootstrap.Modal(document.getElementById('submitSurveyModal'));
                myModal.show();
                updateLoadingText();
                // showMap()
            }
        });
    </script>


    <!-- Submit Survery Modal -->
    <div class="modal fade" id="submitSurveyModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="submitSurveyModalLabel">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content">
                <div class="modal-body">
                    <div class="row">
                        <div class="col-sm-12" id="congrats" style="text-align:center;">
                            <h4 id="loadingText">Verifying zip code deliverability...</h4>
                            <div class="progress-container mb-2">
                                <div class="progress-bar2"></div>
                            </div>
                            <!-- <div id="map"></div> -->
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- End Submit Survery Modal -->

    <style>

    
/* absys: prevent image overflow of parent container */
img{max-width:100%;height:auto}
/* absys: force hero image inside quiz step cards to fill the card width */
[class*="poll"]>img,[class*="poll"]>*:first-child>img,[class*="quiz"][class*="card"]>img,[class*="question"]>img:first-of-type,[class*="step"][class*="card"]>img{display:block;width:100%;height:auto}
</style>

    <!-- Checking Inventory Modal -->
    <div class="modal fade" id="checkingInventoryModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="checkingInventoryModalLabel">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content">
                <div class="modal-body">
                    <div class="row">
                        <div class="col-sm-12" id="congrats" style="text-align:center;">
                            <h5 id="chckng">Good news — delivery is available and coins are currently in stock.</h5>
                            <p id="ptxt" class="progress-text">0%</p>
                            <div id="myProgress">
                                <div id="myBar" class="progress-bar-striped progress-bar-animated" style="width:0;"></div>
                            </div>
                            <br>
                            <img id="map0" src="https://img.cdnvideoserver.com/america/map/0.jpg"
                                style="width:100%;">
                            <img id="map1" src="https://img.cdnvideoserver.com/america/map/1.jpg"
                                style="width:100%; display:none;">
                            <img id="map2" src="https://img.cdnvideoserver.com/america/map/2.jpg"
                                style="width:100%; display:none;">
                            <img id="map3" src="https://img.cdnvideoserver.com/america/map/3.jpg"
                                style="width:100%; display:none;">

                            <h5 class="mt-3" id="redirecting2" style="display:none;">Redirecting to the private page in 3...</h5>
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- End Checking Inventory Modal -->


    <script>
        let currentStep = 1;
        const totalSteps = 4;
        const progressBar = document.getElementById("progress-bar");

        document.querySelectorAll('.next-btn').forEach(btn => {
            btn.addEventListener('click', () => {
                if (currentStep < totalSteps) {
                    if (currentStep === 3) {
                        // const submitSurveyModal = new bootstrap.Modal(document.getElementById('submitSurveyModal'));
                        // submitSurveyModal.show();
                        const zipCodeVerificationModal = new bootstrap.Modal(document.getElementById('zipCodeVerificationModal'));
                        zipCodeVerificationModal.show();

                        // updateLoadingText();
                    } else {
                        currentStep++;
                        showStep(currentStep);
                    }
                }
            });
        });

        document.querySelector('.submit-btn').addEventListener('click', () => {
            var redirectHref = document.getElementById('redirectlink').getAttribute('href');
            window.location.href = redirectHref;
        });

        function showStep(step) {
            document.querySelectorAll('.poll-box').forEach((el, index) => {
                el.classList.toggle('active', index + 1 === step);
            });

            updateQuestionNumber();

            // Update Progress Bar
            let progress = (step / totalSteps) * 100;
            progressBar.style.width = progress + "%";
            progressBar.setAttribute("aria-valuenow", progress);
            progressBar.textContent = Math.round(progress) + "%";

            if (progress === 100) {
                progressBar.style.backgroundColor = "green";
            }

            // If on the last step, start countdown
            if (step === totalSteps) {
                startCountdowntoRedirect();
            }
        }

        function startCountdowntoRedirect() {
            let countdown = 5;
            const countdownInterval = setInterval(() => {
                document.getElementById("redirecting").textContent = `Redirecting you to claim your offer in... ${countdown}`;
                countdown--;

                if (countdown < 0) {
                    clearInterval(countdownInterval);
                    // INSERT_YOUR_CODE
                    var redirectHref = document.getElementById('redirectlink').getAttribute('href');
                    window.location.href = redirectHref;
                }
            }, 1000);
        }

        function updateQuestionNumber() {
            document.querySelector('#currentQuestion').textContent = currentStep;
        }

        // loading text
        const loadingTexts = [
            "Verifying zip code deliverability...",
            // "Verifying delivery status of location...",
            "Submitting answers...",
            "Confirming availability...",
        ];

        function updateLoadingText() {
            const loadingTextElement = document.getElementById('loadingText');
            loadingTextElement.classList.add("blink")
            let currentIndex = 0;
            const totalTexts = loadingTexts.length;
            const duration = 6000; // 6 seconds
            const interval = duration / totalTexts; // Time per text

            const loadingInterval = setInterval(() => {
                currentIndex++;

                if (currentIndex < totalTexts) {
                    loadingTextElement.textContent = loadingTexts[currentIndex];
                } else {
                    clearInterval(loadingInterval);
                    $('#submitSurveyModal').modal('hide');
                    showStep(4);
                    // Start the countdown for 10 minutes (600 seconds)
                    startCountdown(600);
                }
            }, interval);
        }
        // end loading text
    </script>

    <!-- Reserved Counter -->
    <script>
        function startCountdown(durationInSeconds) {
            let timer = durationInSeconds;
            const countdownElement = document.getElementById("countdown");

            const interval = setInterval(() => {
                let minutes = Math.floor(timer / 60);
                let seconds = timer % 60;

                // Format time (e.g., 09:05)
                seconds = seconds < 10 ? "0" + seconds : seconds;
                countdownElement.textContent = minutes + ":" + seconds;

                if (timer <= 0) {
                    clearInterval(interval);
                    countdownElement.textContent = "Time's up!";
                } else {
                    timer--;
                }
            }, 1000);
        }
    </script>
    <!-- End Reserved Counter -->

    <!-- load map script -->
    <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>

    <script>
        let map;
        let marker;

        function showMap() {
            const zipcode = document.getElementById('zipCodeInput').value.trim();
            if (!zipcode.match(/^\d{5}$/)) {
                alert("Please enter a valid 5-digit US ZIP code.");
                return;
            }

            const url = `https://nominatim.openstreetmap.org/search?format=json&q=${zipcode}%20USA`;

            fetch(url, {
                    headers: {
                        'Accept': 'application/json',
                        'User-Agent': 'YourAppName/1.0 ([email protected])' // Required by Nominatim
                    }
                })
                .then(response => response.json())
                .then(data => {
                    if (!data || data.length === 0) {
                        alert("Location not found.");
                        return;
                    }

                    const lat = parseFloat(data[0].lat);
                    const lon = parseFloat(data[0].lon);

                    if (!map) {
                        map = L.map('map').setView([lat, lon], 11);
                        L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
                            attribution: '&copy; OpenStreetMap contributors'
                        }).addTo(map);
                    } else {
                        map.setView([lat, lon], 11);
                        if (marker) marker.remove();
                    }

                    marker = L.marker([lat, lon]).addTo(map)
                        .bindPopup(`ZIP Code: ${zipcode}`)
                        .openPopup();
                })
                .catch(error => {
                    console.error(error);
                    alert("Error fetching location. Try again later.");
                });
        }
    </script>
    <!-- end load map script -->

    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>



</body>

</html>