Formsby VASTROX
ExamplesGALLERY

Beautiful forms, ready to paste.

Copy a template, change the action to your endpoint, and you are live. Each one is self-contained, with no framework and no external CSS, and works on light and dark pages.

EXAMPLE 01

Aurora Contact

A premium floating-card contact form with a blue-to-violet aurora accent, refined inputs, and an animated focus underline, works on light and dark pages.

Get in touch

Let's start a conversation

Tell us what you're building. We read every message and reply within one business day.

Protected against spam. No newsletters, ever.

<div class="vxf-contact-aurora">
  <style>
    .vxf-contact-aurora {
      --vxf-bg: #f3f5f9;
      --vxf-card: #ffffff;
      --vxf-card-2: #ffffff;
      --vxf-line: #e2e6ee;
      --vxf-line-strong: #cfd5e1;
      --vxf-text: #141821;
      --vxf-muted: #5c6675;
      --vxf-faint: #8a93a2;
      --vxf-field: #f7f9fc;
      --vxf-field-focus: #ffffff;
      --vxf-a1: #5b8cff;
      --vxf-a2: #7a6cff;
      --vxf-ring: rgba(91, 140, 255, 0.16);
      --vxf-glow: rgba(91, 140, 255, 0.22);
      --vxf-shadow: 0 1px 2px rgba(20, 24, 33, 0.04), 0 24px 48px -20px rgba(20, 24, 33, 0.18);

      box-sizing: border-box;
      display: flex;
      justify-content: center;
      padding: 40px 20px;
      background:
        radial-gradient(120% 80% at 15% 0%, rgba(91, 140, 255, 0.06), transparent 60%),
        radial-gradient(110% 90% at 100% 100%, rgba(122, 108, 255, 0.06), transparent 55%),
        var(--vxf-bg);
      font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
      color: var(--vxf-text);
      -webkit-font-smoothing: antialiased;
      line-height: 1.5;
    }
    .vxf-contact-aurora *,
    .vxf-contact-aurora *::before,
    .vxf-contact-aurora *::after { box-sizing: border-box; }

    @media (prefers-color-scheme: dark) {
      .vxf-contact-aurora {
        --vxf-bg: #0e1116;
        --vxf-card: #171b22;
        --vxf-card-2: #12161c;
        --vxf-line: #262c36;
        --vxf-line-strong: #333b48;
        --vxf-text: #eef1f6;
        --vxf-muted: #99a2b1;
        --vxf-faint: #6c7686;
        --vxf-field: #10141a;
        --vxf-field-focus: #131820;
        --vxf-ring: rgba(91, 140, 255, 0.22);
        --vxf-glow: rgba(91, 140, 255, 0.30);
        --vxf-shadow: 0 1px 2px rgba(0, 0, 0, 0.4), 0 30px 60px -24px rgba(0, 0, 0, 0.65);
        background:
          radial-gradient(120% 80% at 15% 0%, rgba(91, 140, 255, 0.10), transparent 60%),
          radial-gradient(110% 90% at 100% 100%, rgba(122, 108, 255, 0.12), transparent 55%),
          var(--vxf-bg);
      }
    }
    :root[data-theme="light"] .vxf-contact-aurora {
      --vxf-bg: #f3f5f9;
      --vxf-card: #ffffff;
      --vxf-card-2: #ffffff;
      --vxf-line: #e2e6ee;
      --vxf-line-strong: #cfd5e1;
      --vxf-text: #141821;
      --vxf-muted: #5c6675;
      --vxf-faint: #8a93a2;
      --vxf-field: #f7f9fc;
      --vxf-field-focus: #ffffff;
      --vxf-ring: rgba(91, 140, 255, 0.16);
      --vxf-glow: rgba(91, 140, 255, 0.22);
      --vxf-shadow: 0 1px 2px rgba(20, 24, 33, 0.04), 0 24px 48px -20px rgba(20, 24, 33, 0.18);
      background:
        radial-gradient(120% 80% at 15% 0%, rgba(91, 140, 255, 0.06), transparent 60%),
        radial-gradient(110% 90% at 100% 100%, rgba(122, 108, 255, 0.06), transparent 55%),
        var(--vxf-bg);
    }
    :root[data-theme="dark"] .vxf-contact-aurora {
      --vxf-bg: #0e1116;
      --vxf-card: #171b22;
      --vxf-card-2: #12161c;
      --vxf-line: #262c36;
      --vxf-line-strong: #333b48;
      --vxf-text: #eef1f6;
      --vxf-muted: #99a2b1;
      --vxf-faint: #6c7686;
      --vxf-field: #10141a;
      --vxf-field-focus: #131820;
      --vxf-ring: rgba(91, 140, 255, 0.22);
      --vxf-glow: rgba(91, 140, 255, 0.30);
      --vxf-shadow: 0 1px 2px rgba(0, 0, 0, 0.4), 0 30px 60px -24px rgba(0, 0, 0, 0.65);
      background:
        radial-gradient(120% 80% at 15% 0%, rgba(91, 140, 255, 0.10), transparent 60%),
        radial-gradient(110% 90% at 100% 100%, rgba(122, 108, 255, 0.12), transparent 55%),
        var(--vxf-bg);
    }

    .vxf-contact-aurora .vxf-card {
      position: relative;
      width: 100%;
      max-width: 460px;
      background: var(--vxf-card);
      border: 1px solid var(--vxf-line);
      border-radius: 20px;
      padding: 38px 34px 34px;
      box-shadow: var(--vxf-shadow);
      overflow: hidden;
    }
    /* ambient aurora glow along the top edge of the card */
    .vxf-contact-aurora .vxf-card::before {
      content: "";
      position: absolute;
      inset: -1px -1px auto -1px;
      height: 3px;
      background: linear-gradient(90deg, var(--vxf-a1), var(--vxf-a2));
      opacity: 0.9;
    }
    .vxf-contact-aurora .vxf-card::after {
      content: "";
      position: absolute;
      top: -140px;
      left: 50%;
      width: 320px;
      height: 220px;
      transform: translateX(-50%);
      background: radial-gradient(closest-side, var(--vxf-glow), transparent 70%);
      pointer-events: none;
      filter: blur(6px);
    }

    .vxf-contact-aurora .vxf-head { margin-bottom: 26px; }
    .vxf-contact-aurora .vxf-eyebrow {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: var(--vxf-a1);
      margin-bottom: 12px;
    }
    .vxf-contact-aurora .vxf-eyebrow::before {
      content: "";
      width: 6px;
      height: 6px;
      border-radius: 50%;
      background: var(--vxf-a1);
      box-shadow: 0 0 0 4px var(--vxf-ring);
    }
    .vxf-contact-aurora .vxf-title {
      margin: 0 0 8px;
      font-size: 25px;
      line-height: 1.15;
      font-weight: 680;
      letter-spacing: -0.02em;
      text-wrap: balance;
    }
    .vxf-contact-aurora .vxf-sub {
      margin: 0;
      font-size: 14.5px;
      color: var(--vxf-muted);
      max-width: 40ch;
    }

    .vxf-contact-aurora form {
      display: flex;
      flex-direction: column;
      gap: 18px;
    }
    .vxf-contact-aurora .vxf-field { display: flex; flex-direction: column; gap: 8px; }
    .vxf-contact-aurora label {
      font-size: 12px;
      font-weight: 600;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      color: var(--vxf-faint);
    }

    .vxf-contact-aurora .vxf-input-wrap { position: relative; }
    /* animated gradient underline that grows from the left on focus */
    .vxf-contact-aurora .vxf-input-wrap::after {
      content: "";
      position: absolute;
      left: 12px;
      right: 12px;
      bottom: 0;
      height: 2px;
      border-radius: 2px;
      background: linear-gradient(90deg, var(--vxf-a1), var(--vxf-a2));
      transform: scaleX(0);
      transform-origin: left center;
      transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
      pointer-events: none;
    }
    .vxf-contact-aurora .vxf-input-wrap:focus-within::after { transform: scaleX(1); }

    .vxf-contact-aurora input,
    .vxf-contact-aurora textarea {
      width: 100%;
      font: inherit;
      font-size: 15px;
      color: var(--vxf-text);
      background: var(--vxf-field);
      border: 1px solid var(--vxf-line);
      border-radius: 12px;
      padding: 13px 14px;
      outline: none;
      transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
      -webkit-appearance: none;
      appearance: none;
    }
    .vxf-contact-aurora textarea {
      min-height: 128px;
      resize: vertical;
      line-height: 1.55;
    }
    .vxf-contact-aurora input::placeholder,
    .vxf-contact-aurora textarea::placeholder { color: var(--vxf-faint); }
    .vxf-contact-aurora input:hover,
    .vxf-contact-aurora textarea:hover { border-color: var(--vxf-line-strong); }
    .vxf-contact-aurora input:focus,
    .vxf-contact-aurora textarea:focus {
      background: var(--vxf-field-focus);
      border-color: var(--vxf-a1);
      box-shadow: 0 0 0 4px var(--vxf-ring);
    }

    .vxf-contact-aurora .vxf-submit {
      position: relative;
      margin-top: 4px;
      width: 100%;
      font: inherit;
      font-size: 15px;
      font-weight: 640;
      letter-spacing: 0.01em;
      color: #fff;
      border: 0;
      border-radius: 12px;
      padding: 14px 20px;
      cursor: pointer;
      background: linear-gradient(120deg, var(--vxf-a1), var(--vxf-a2));
      box-shadow: 0 8px 20px -8px var(--vxf-glow), inset 0 1px 0 rgba(255, 255, 255, 0.22);
      transition: transform 0.18s ease, box-shadow 0.22s ease, filter 0.2s ease;
    }
    .vxf-contact-aurora .vxf-submit:hover {
      transform: translateY(-1px);
      box-shadow: 0 14px 30px -10px var(--vxf-glow), inset 0 1px 0 rgba(255, 255, 255, 0.28);
      filter: saturate(1.06);
    }
    .vxf-contact-aurora .vxf-submit:active { transform: translateY(0); }
    .vxf-contact-aurora .vxf-submit:focus-visible {
      outline: none;
      box-shadow: 0 0 0 4px var(--vxf-ring), 0 10px 24px -10px var(--vxf-glow);
    }
    .vxf-contact-aurora .vxf-submit .vxf-arrow {
      display: inline-block;
      margin-left: 6px;
      transition: transform 0.2s ease;
    }
    .vxf-contact-aurora .vxf-submit:hover .vxf-arrow { transform: translateX(3px); }

    .vxf-contact-aurora .vxf-foot {
      margin-top: 15px;
      text-align: center;
      font-size: 12.5px;
      color: var(--vxf-faint);
    }

    .vxf-contact-aurora input:-webkit-autofill,
    .vxf-contact-aurora textarea:-webkit-autofill {
      -webkit-text-fill-color: var(--vxf-text);
      -webkit-box-shadow: 0 0 0 40px var(--vxf-field-focus) inset;
      caret-color: var(--vxf-text);
    }

    @media (prefers-reduced-motion: reduce) {
      .vxf-contact-aurora *,
      .vxf-contact-aurora *::after { transition: none !important; }
    }
    @media (max-width: 420px) {
      .vxf-contact-aurora .vxf-card { padding: 30px 22px 26px; border-radius: 16px; }
      .vxf-contact-aurora .vxf-title { font-size: 22px; }
    }
  </style>

  <div class="vxf-card">
    <div class="vxf-head">
      <span class="vxf-eyebrow">Get in touch</span>
      <h2 class="vxf-title">Let's start a conversation</h2>
      <p class="vxf-sub">Tell us what you're building. We read every message and reply within one business day.</p>
    </div>

    <form action="https://forms.vastrox.com/YOUR-ID" method="POST">
      <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">

      <div class="vxf-field">
        <label for="vxf-ca-name">Name</label>
        <div class="vxf-input-wrap">
          <input id="vxf-ca-name" name="name" type="text" placeholder="Ada Lovelace" autocomplete="name" required>
        </div>
      </div>

      <div class="vxf-field">
        <label for="vxf-ca-email">Email</label>
        <div class="vxf-input-wrap">
          <input id="vxf-ca-email" name="email" type="email" placeholder="ada@example.com" autocomplete="email" required>
        </div>
      </div>

      <div class="vxf-field">
        <label for="vxf-ca-message">Message</label>
        <div class="vxf-input-wrap">
          <textarea id="vxf-ca-message" name="message" placeholder="A few sentences about your project, timeline, and how we can help." required></textarea>
        </div>
      </div>

      <button class="vxf-submit" type="submit">Send message<span class="vxf-arrow" aria-hidden="true">&rarr;</span></button>

      <p class="vxf-foot">Protected against spam. No newsletters, ever.</p>
    </form>
  </div>
</div>

EXAMPLE 02

Waitlist / Early Access

A punchy, centered early-access waitlist form built around a single email field with an optional name, a glowing focus state, and a bold "Join the waitlist" CTA.

Early access · Limited spots

Be first in line.

We're opening the doors soon. Drop your email to claim early access and get notified the moment we launch.

No spam, ever. Unsubscribe anytime.

<div class="vxf-wl7q3">
  <style>
    .vxf-wl7q3 {
      --wl-bg: #0b0d17;
      --wl-panel: rgba(255,255,255,0.03);
      --wl-border: rgba(255,255,255,0.10);
      --wl-text: #eef0f7;
      --wl-muted: #9aa0b5;
      --wl-accent: #7c6cff;
      --wl-accent2: #22d3ee;
      box-sizing: border-box;
      max-width: 560px;
      margin: 0 auto;
      padding: clamp(28px, 5vw, 56px) clamp(22px, 5vw, 48px);
      border-radius: 28px;
      position: relative;
      overflow: hidden;
      background:
        radial-gradient(120% 90% at 15% 0%, rgba(124,108,255,0.22), transparent 55%),
        radial-gradient(120% 90% at 100% 100%, rgba(34,211,238,0.16), transparent 55%),
        var(--wl-bg);
      border: 1px solid var(--wl-border);
      box-shadow: 0 30px 80px -30px rgba(5,7,20,0.8);
      font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
      color: var(--wl-text);
      text-align: center;
    }
    .vxf-wl7q3 *, .vxf-wl7q3 *::before, .vxf-wl7q3 *::after { box-sizing: border-box; }

    .vxf-wl7q3 .wl-badge {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      font-size: 12.5px;
      font-weight: 600;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--wl-muted);
      padding: 7px 14px;
      border-radius: 999px;
      border: 1px solid var(--wl-border);
      background: var(--wl-panel);
      margin-bottom: 22px;
    }
    .vxf-wl7q3 .wl-badge::before {
      content: "";
      width: 8px; height: 8px;
      border-radius: 50%;
      background: var(--wl-accent2);
      box-shadow: 0 0 0 0 rgba(34,211,238,0.6);
      animation: vxf-pulse-wl7q3 2.4s ease-out infinite;
    }
    @keyframes vxf-pulse-wl7q3 {
      0% { box-shadow: 0 0 0 0 rgba(34,211,238,0.55); }
      70% { box-shadow: 0 0 0 10px rgba(34,211,238,0); }
      100% { box-shadow: 0 0 0 0 rgba(34,211,238,0); }
    }

    .vxf-wl7q3 h2 {
      margin: 0 0 12px;
      font-size: clamp(28px, 6vw, 40px);
      line-height: 1.05;
      font-weight: 800;
      letter-spacing: -0.02em;
      background: linear-gradient(180deg, #ffffff, #c7cbe0);
      -webkit-background-clip: text;
      background-clip: text;
      color: transparent;
    }
    .vxf-wl7q3 .wl-sub {
      margin: 0 auto 30px;
      max-width: 42ch;
      font-size: 15.5px;
      line-height: 1.6;
      color: var(--wl-muted);
    }

    .vxf-wl7q3 form { margin: 0; }
    .vxf-wl7q3 .wl-field { text-align: left; margin-bottom: 14px; }
    .vxf-wl7q3 label {
      display: block;
      font-size: 13px;
      font-weight: 600;
      color: var(--wl-text);
      margin: 0 0 7px 2px;
    }
    .vxf-wl7q3 label .wl-opt {
      color: var(--wl-muted);
      font-weight: 500;
    }
    .vxf-wl7q3 input[type="text"].wl-in,
    .vxf-wl7q3 input[type="email"] {
      width: 100%;
      font: inherit;
      font-size: 16px;
      color: var(--wl-text);
      padding: 15px 16px;
      border-radius: 14px;
      border: 1px solid var(--wl-border);
      background: rgba(255,255,255,0.04);
      outline: none;
      transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
    }
    .vxf-wl7q3 input::placeholder { color: #6d7390; }
    .vxf-wl7q3 input[type="text"].wl-in:focus,
    .vxf-wl7q3 input[type="email"]:focus {
      border-color: var(--wl-accent);
      background: rgba(124,108,255,0.08);
      box-shadow: 0 0 0 4px rgba(124,108,255,0.22);
    }

    .vxf-wl7q3 button {
      width: 100%;
      margin-top: 6px;
      font: inherit;
      font-size: 16px;
      font-weight: 700;
      letter-spacing: 0.01em;
      color: #0b0d17;
      cursor: pointer;
      padding: 16px 20px;
      border: none;
      border-radius: 14px;
      background: linear-gradient(135deg, #22d3ee 0%, #7c6cff 55%, #a855f7 100%);
      box-shadow: 0 12px 30px -8px rgba(124,108,255,0.6);
      transition: transform .12s ease, box-shadow .18s ease, filter .18s ease;
    }
    .vxf-wl7q3 button:hover { transform: translateY(-1px); filter: brightness(1.06); box-shadow: 0 18px 40px -10px rgba(124,108,255,0.7); }
    .vxf-wl7q3 button:active { transform: translateY(0); }
    .vxf-wl7q3 button:focus-visible { outline: 3px solid rgba(34,211,238,0.9); outline-offset: 3px; }

    .vxf-wl7q3 .wl-foot {
      margin: 18px 0 0;
      font-size: 12.5px;
      color: var(--wl-muted);
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 7px;
    }
    .vxf-wl7q3 .wl-foot svg { flex: none; opacity: 0.8; }

    .vxf-wl7q3 .wl-hp { display: none; }
  </style>

  <form action="https://forms.vastrox.com/YOUR-ID" method="POST">
    <span class="wl-badge">Early access · Limited spots</span>
    <h2>Be first in line.</h2>
    <p class="wl-sub">We're opening the doors soon. Drop your email to claim early access and get notified the moment we launch.</p>

    <input type="text" name="_gotcha" class="wl-hp" tabindex="-1" autocomplete="off" aria-hidden="true">

    <div class="wl-field">
      <label for="wl7q3-name">Name <span class="wl-opt">(optional)</span></label>
      <input type="text" class="wl-in" id="wl7q3-name" name="name" placeholder="Ada Lovelace" autocomplete="name">
    </div>

    <div class="wl-field">
      <label for="wl7q3-email">Email address</label>
      <input type="email" id="wl7q3-email" name="email" placeholder="you@company.com" required autocomplete="email">
    </div>

    <button type="submit">Join the waitlist &rarr;</button>

    <p class="wl-foot">
      <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
      No spam, ever. Unsubscribe anytime.
    </p>
  </form>
</div>

EXAMPLE 03

Feedback with Star Rating

A playful yet polished feedback form with CSS-only 5-star rating, message textarea, and optional email.

We're all ears

How did we do?

Your two cents make us better. Tap a star, tell us why.

Your rating

Powered by VASTROX Forms

<div class="vxf-feedback-rating">
  <style>
    .vxf-feedback-rating {
      --vxf-bg: #ffffff;
      --vxf-ink: #1a1626;
      --vxf-muted: #6b6480;
      --vxf-line: #e7e3ef;
      --vxf-field: #f7f5fb;
      --vxf-accent: #7c5cff;
      --vxf-accent-2: #ff5c9d;
      --vxf-star: #ffb020;
      --vxf-radius: 20px;
      box-sizing: border-box;
      max-width: 480px;
      margin: 0 auto;
      padding: 6px;
      font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
      color: var(--vxf-ink);
      line-height: 1.5;
      text-align: left;
    }
    .vxf-feedback-rating *,
    .vxf-feedback-rating *::before,
    .vxf-feedback-rating *::after { box-sizing: border-box; }

    .vxf-feedback-rating .vxf-card {
      position: relative;
      background: var(--vxf-bg);
      border: 1px solid var(--vxf-line);
      border-radius: var(--vxf-radius);
      padding: 30px 28px 28px;
      box-shadow: 0 1px 2px rgba(26, 22, 38, .04), 0 24px 48px -24px rgba(124, 92, 255, .28);
      overflow: hidden;
    }
    .vxf-feedback-rating .vxf-card::before {
      content: "";
      position: absolute;
      inset: 0 0 auto 0;
      height: 5px;
      background: linear-gradient(90deg, var(--vxf-accent), var(--vxf-accent-2));
    }

    .vxf-feedback-rating .vxf-head { margin-bottom: 22px; }
    .vxf-feedback-rating .vxf-badge {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      font-size: 12px;
      font-weight: 600;
      letter-spacing: .04em;
      text-transform: uppercase;
      color: var(--vxf-accent);
      background: color-mix(in srgb, var(--vxf-accent) 12%, transparent);
      padding: 5px 11px;
      border-radius: 999px;
      margin-bottom: 14px;
    }
    .vxf-feedback-rating .vxf-badge::before {
      content: "";
      width: 7px; height: 7px;
      border-radius: 50%;
      background: var(--vxf-accent-2);
      box-shadow: 0 0 0 4px color-mix(in srgb, var(--vxf-accent-2) 22%, transparent);
    }
    .vxf-feedback-rating h2 {
      margin: 0 0 6px;
      font-size: 24px;
      font-weight: 700;
      letter-spacing: -0.02em;
    }
    .vxf-feedback-rating .vxf-sub {
      margin: 0;
      font-size: 15px;
      color: var(--vxf-muted);
    }

    .vxf-feedback-rating .vxf-group { margin-bottom: 20px; }
    .vxf-feedback-rating .vxf-label {
      display: block;
      font-size: 13px;
      font-weight: 600;
      margin-bottom: 9px;
      color: var(--vxf-ink);
    }
    .vxf-feedback-rating .vxf-opt { color: var(--vxf-muted); font-weight: 500; }

    /* ---- CSS-only star rating (reverse row so :hover ~ works left→right visually) ---- */
    .vxf-feedback-rating .vxf-stars {
      display: inline-flex;
      flex-direction: row-reverse;
      justify-content: flex-end;
      gap: 4px;
      padding: 4px 0 2px;
    }
    .vxf-feedback-rating .vxf-stars input {
      position: absolute;
      opacity: 0;
      width: 1px; height: 1px;
      pointer-events: none;
    }
    .vxf-feedback-rating .vxf-stars label {
      cursor: pointer;
      font-size: 38px;
      line-height: 1;
      color: var(--vxf-line);
      transition: transform .12s ease, color .12s ease;
      user-select: none;
    }
    .vxf-feedback-rating .vxf-stars label::before { content: "\2605"; }
    /* hover + checked cascade: current + all following (visually preceding) siblings light up */
    .vxf-feedback-rating .vxf-stars label:hover,
    .vxf-feedback-rating .vxf-stars label:hover ~ label,
    .vxf-feedback-rating .vxf-stars input:checked ~ label {
      color: var(--vxf-star);
    }
    .vxf-feedback-rating .vxf-stars label:hover {
      transform: scale(1.18) rotate(-4deg);
    }
    .vxf-feedback-rating .vxf-stars input:focus-visible + label {
      outline: 3px solid color-mix(in srgb, var(--vxf-accent) 45%, transparent);
      outline-offset: 3px;
      border-radius: 6px;
    }

    .vxf-feedback-rating textarea,
    .vxf-feedback-rating input[type="email"] {
      width: 100%;
      font: inherit;
      color: var(--vxf-ink);
      background: var(--vxf-field);
      border: 1.5px solid transparent;
      border-radius: 13px;
      padding: 13px 15px;
      transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
      -webkit-appearance: none;
      appearance: none;
    }
    .vxf-feedback-rating textarea {
      min-height: 118px;
      resize: vertical;
    }
    .vxf-feedback-rating textarea::placeholder,
    .vxf-feedback-rating input[type="email"]::placeholder { color: var(--vxf-muted); }
    .vxf-feedback-rating textarea:focus,
    .vxf-feedback-rating input[type="email"]:focus {
      outline: none;
      background: var(--vxf-bg);
      border-color: var(--vxf-accent);
      box-shadow: 0 0 0 4px color-mix(in srgb, var(--vxf-accent) 18%, transparent);
    }

    .vxf-feedback-rating .vxf-honey {
      position: absolute !important;
      left: -9999px;
    }

    .vxf-feedback-rating .vxf-submit {
      width: 100%;
      font: inherit;
      font-weight: 650;
      font-size: 15.5px;
      color: #fff;
      cursor: pointer;
      border: none;
      border-radius: 13px;
      padding: 14px 18px;
      margin-top: 4px;
      background: linear-gradient(135deg, var(--vxf-accent), var(--vxf-accent-2));
      box-shadow: 0 10px 22px -8px color-mix(in srgb, var(--vxf-accent) 65%, transparent);
      transition: transform .12s ease, box-shadow .12s ease, filter .12s ease;
    }
    .vxf-feedback-rating .vxf-submit:hover {
      transform: translateY(-1px);
      filter: brightness(1.05);
      box-shadow: 0 14px 28px -8px color-mix(in srgb, var(--vxf-accent) 70%, transparent);
    }
    .vxf-feedback-rating .vxf-submit:active { transform: translateY(0); }
    .vxf-feedback-rating .vxf-submit:focus-visible {
      outline: 3px solid color-mix(in srgb, var(--vxf-accent) 50%, transparent);
      outline-offset: 3px;
    }

    .vxf-feedback-rating .vxf-foot {
      margin: 14px 0 0;
      text-align: center;
      font-size: 12.5px;
      color: var(--vxf-muted);
    }

    @media (max-width: 420px) {
      .vxf-feedback-rating .vxf-card { padding: 24px 20px; }
      .vxf-feedback-rating h2 { font-size: 21px; }
      .vxf-feedback-rating .vxf-stars label { font-size: 34px; }
    }

    /* ---- Dark page support ---- */
    @media (prefers-color-scheme: dark) {
      .vxf-feedback-rating {
        --vxf-bg: #1a1726;
        --vxf-ink: #f2effa;
        --vxf-muted: #a49fb8;
        --vxf-line: #322c47;
        --vxf-field: #241f36;
        --vxf-accent: #977dff;
        --vxf-accent-2: #ff6fb0;
      }
      .vxf-feedback-rating .vxf-card {
        box-shadow: 0 1px 2px rgba(0,0,0,.4), 0 28px 56px -28px rgba(0,0,0,.7);
      }
    }
  </style>

  <form class="vxf-card" action="https://forms.vastrox.com/YOUR-ID" method="POST">
    <div class="vxf-head">
      <span class="vxf-badge">We're all ears</span>
      <h2>How did we do?</h2>
      <p class="vxf-sub">Your two cents make us better. Tap a star, tell us why.</p>
    </div>

    <div class="vxf-group">
      <span class="vxf-label" id="vxf-rating-label">Your rating</span>
      <div class="vxf-stars" role="radiogroup" aria-labelledby="vxf-rating-label">
        <input type="radio" id="vxf-star5" name="rating" value="5" required>
        <label for="vxf-star5" title="Amazing"><span class="vxf-sr">5 stars</span></label>
        <input type="radio" id="vxf-star4" name="rating" value="4">
        <label for="vxf-star4" title="Great"><span class="vxf-sr">4 stars</span></label>
        <input type="radio" id="vxf-star3" name="rating" value="3">
        <label for="vxf-star3" title="Okay"><span class="vxf-sr">3 stars</span></label>
        <input type="radio" id="vxf-star2" name="rating" value="2">
        <label for="vxf-star2" title="Meh"><span class="vxf-sr">2 stars</span></label>
        <input type="radio" id="vxf-star1" name="rating" value="1">
        <label for="vxf-star1" title="Not good"><span class="vxf-sr">1 star</span></label>
      </div>
    </div>

    <div class="vxf-group">
      <label class="vxf-label" for="vxf-message">Tell us more</label>
      <textarea id="vxf-message" name="message" placeholder="What did you love? What tripped you up?"></textarea>
    </div>

    <div class="vxf-group">
      <label class="vxf-label" for="vxf-email">Email <span class="vxf-opt">(optional, if you'd like a reply)</span></label>
      <input type="email" id="vxf-email" name="email" placeholder="you@example.com" autocomplete="email">
    </div>

    <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">

    <button type="submit" class="vxf-submit">Send feedback</button>
    <p class="vxf-foot">Powered by VASTROX Forms</p>
  </form>
</div>

EXAMPLE 04

File Dispatch Upload Form

A self-contained dark "file dispatch" panel with name, email, and a CSS-only drag-and-drop upload zone (real file input overlaid for accessibility), animated accent hairline, and an amber gradient submit, enctype set for multipart uploads.

File dispatch

Send us your files

Drop a document, brief, or asset and we'll take it from here. We'll reply to the email you leave below.

Drag & drop or browse to upload One file, up to 25 MB PDFDOCXPNGJPGZIP

Secured by VASTROX Forms

<div class="vxf-upl9k3">
  <style>
    .vxf-upl9k3 {
      --vxf-ground: #0f1626;
      --vxf-panel: #18203a;
      --vxf-panel-2: #1f294a;
      --vxf-line: rgba(148,163,214,0.16);
      --vxf-line-strong: rgba(148,163,214,0.34);
      --vxf-text: #eef1fb;
      --vxf-muted: #94a0c6;
      --vxf-faint: #6b76a0;
      --vxf-accent: #ff8a5c;
      --vxf-accent-2: #ffb27a;
      --vxf-accent-soft: rgba(255,138,92,0.14);

      box-sizing: border-box;
      max-width: 480px;
      margin: 0 auto;
      padding: 34px 30px 30px;
      background:
        radial-gradient(120% 90% at 100% 0%, rgba(255,138,92,0.10), transparent 55%),
        linear-gradient(180deg, var(--vxf-panel) 0%, var(--vxf-ground) 100%);
      border: 1px solid var(--vxf-line);
      border-radius: 20px;
      box-shadow:
        0 1px 0 rgba(255,255,255,0.05) inset,
        0 24px 60px -28px rgba(6,10,22,0.85);
      color: var(--vxf-text);
      font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
      -webkit-font-smoothing: antialiased;
      position: relative;
      overflow: hidden;
    }
    .vxf-upl9k3 * { box-sizing: border-box; }

    .vxf-upl9k3::before {
      content: "";
      position: absolute;
      top: 0; left: 0; right: 0;
      height: 3px;
      background: linear-gradient(90deg, var(--vxf-accent) 0%, var(--vxf-accent-2) 45%, transparent 90%);
      opacity: 0.9;
    }

    .vxf-upl9k3 .vxf-eyebrow {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      color: var(--vxf-accent-2);
      margin: 0 0 14px;
    }
    .vxf-upl9k3 .vxf-eyebrow::before {
      content: "";
      width: 6px; height: 6px;
      border-radius: 50%;
      background: var(--vxf-accent);
      box-shadow: 0 0 0 4px var(--vxf-accent-soft);
    }

    .vxf-upl9k3 h2 {
      margin: 0 0 6px;
      font-size: 25px;
      line-height: 1.12;
      letter-spacing: -0.02em;
      font-weight: 680;
      text-wrap: balance;
    }
    .vxf-upl9k3 .vxf-sub {
      margin: 0 0 26px;
      font-size: 14px;
      line-height: 1.5;
      color: var(--vxf-muted);
      max-width: 40ch;
    }

    .vxf-upl9k3 form { display: flex; flex-direction: column; gap: 18px; }
    .vxf-upl9k3 .vxf-field { display: flex; flex-direction: column; gap: 8px; }

    .vxf-upl9k3 label {
      font-size: 11px;
      font-weight: 650;
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--vxf-faint);
    }

    .vxf-upl9k3 input[type="text"],
    .vxf-upl9k3 input[type="email"] {
      width: 100%;
      padding: 13px 15px;
      font-size: 15px;
      font-family: inherit;
      color: var(--vxf-text);
      background: var(--vxf-panel-2);
      border: 1px solid var(--vxf-line);
      border-radius: 11px;
      outline: none;
      transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
    }
    .vxf-upl9k3 input::placeholder { color: var(--vxf-faint); }
    .vxf-upl9k3 input[type="text"]:focus,
    .vxf-upl9k3 input[type="email"]:focus {
      border-color: var(--vxf-accent);
      background: #212c50;
      box-shadow: 0 0 0 4px var(--vxf-accent-soft);
    }

    /* Drop-zone: real file input overlaid transparently for accessibility + click */
    .vxf-upl9k3 .vxf-drop {
      position: relative;
      display: flex;
      flex-direction: column;
      align-items: center;
      text-align: center;
      gap: 12px;
      padding: 30px 22px;
      border: 1.5px dashed var(--vxf-line-strong);
      border-radius: 14px;
      background:
        radial-gradient(100% 120% at 50% 0%, rgba(255,138,92,0.06), transparent 60%),
        var(--vxf-panel-2);
      transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
    }
    .vxf-upl9k3 .vxf-drop input[type="file"] {
      position: absolute;
      inset: 0;
      width: 100%; height: 100%;
      opacity: 0;
      cursor: pointer;
    }
    .vxf-upl9k3 .vxf-drop:hover {
      border-color: var(--vxf-accent);
      background:
        radial-gradient(100% 120% at 50% 0%, rgba(255,138,92,0.12), transparent 60%),
        var(--vxf-panel-2);
    }
    /* keyboard focus on the hidden file input lights the whole zone */
    .vxf-upl9k3 .vxf-drop:focus-within {
      border-color: var(--vxf-accent);
      border-style: solid;
      box-shadow: 0 0 0 4px var(--vxf-accent-soft);
    }

    .vxf-upl9k3 .vxf-glyph {
      width: 46px; height: 46px;
      display: grid;
      place-items: center;
      border-radius: 13px;
      background: linear-gradient(160deg, var(--vxf-accent) 0%, var(--vxf-accent-2) 100%);
      box-shadow: 0 8px 20px -8px rgba(255,138,92,0.7);
      transition: transform 0.2s ease;
    }
    .vxf-upl9k3 .vxf-drop:hover .vxf-glyph { transform: translateY(-3px); }
    /* CSS arrow drawn with borders + a bar */
    .vxf-upl9k3 .vxf-glyph .vxf-arrow {
      position: relative;
      width: 2px; height: 15px;
      background: #2a1707;
      border-radius: 2px;
      margin-top: -2px;
    }
    .vxf-upl9k3 .vxf-glyph .vxf-arrow::before {
      content: "";
      position: absolute;
      top: 0; left: 50%;
      width: 8px; height: 8px;
      border-left: 2px solid #2a1707;
      border-top: 2px solid #2a1707;
      border-radius: 1px;
      transform: translateX(-50%) rotate(45deg);
    }
    .vxf-upl9k3 .vxf-glyph .vxf-arrow::after {
      content: "";
      position: absolute;
      bottom: -6px; left: 50%;
      width: 20px; height: 8px;
      border: 2px solid #2a1707;
      border-top: none;
      border-radius: 0 0 3px 3px;
      transform: translateX(-50%);
    }

    .vxf-upl9k3 .vxf-drop-title {
      font-size: 14.5px;
      font-weight: 600;
      color: var(--vxf-text);
    }
    .vxf-upl9k3 .vxf-drop-title b {
      color: var(--vxf-accent-2);
      font-weight: 650;
      text-decoration: underline;
      text-decoration-color: rgba(255,178,122,0.4);
      text-underline-offset: 2px;
    }
    .vxf-upl9k3 .vxf-drop-note {
      font-size: 12px;
      line-height: 1.45;
      color: var(--vxf-muted);
    }
    .vxf-upl9k3 .vxf-types {
      display: inline-flex;
      flex-wrap: wrap;
      justify-content: center;
      gap: 6px;
      margin-top: 2px;
    }
    .vxf-upl9k3 .vxf-types span {
      font-size: 10.5px;
      font-weight: 600;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: var(--vxf-muted);
      padding: 3px 8px;
      border: 1px solid var(--vxf-line);
      border-radius: 6px;
      background: rgba(148,163,214,0.05);
    }

    .vxf-upl9k3 button {
      margin-top: 4px;
      width: 100%;
      padding: 14px 20px;
      font-size: 15px;
      font-weight: 650;
      font-family: inherit;
      letter-spacing: 0.01em;
      color: #2a1707;
      background: linear-gradient(160deg, var(--vxf-accent-2) 0%, var(--vxf-accent) 100%);
      border: none;
      border-radius: 11px;
      cursor: pointer;
      box-shadow: 0 10px 24px -10px rgba(255,138,92,0.8);
      transition: transform 0.14s ease, box-shadow 0.18s ease, filter 0.18s ease;
    }
    .vxf-upl9k3 button:hover { filter: brightness(1.04); transform: translateY(-1px); box-shadow: 0 14px 28px -10px rgba(255,138,92,0.85); }
    .vxf-upl9k3 button:active { transform: translateY(0); }
    .vxf-upl9k3 button:focus-visible { outline: 3px solid var(--vxf-accent-2); outline-offset: 3px; }

    .vxf-upl9k3 .vxf-foot {
      margin: 15px 0 0;
      text-align: center;
      font-size: 11px;
      letter-spacing: 0.04em;
      color: var(--vxf-faint);
    }

    .vxf-upl9k3 .vxf-hp {
      position: absolute !important;
      left: -9999px;
    }

    @media (prefers-reduced-motion: reduce) {
      .vxf-upl9k3 *, .vxf-upl9k3 *::before, .vxf-upl9k3 *::after { transition: none !important; }
    }

    @media (max-width: 420px) {
      .vxf-upl9k3 { padding: 28px 20px 24px; border-radius: 16px; }
      .vxf-upl9k3 h2 { font-size: 22px; }
    }
  </style>

  <form action="https://forms.vastrox.com/YOUR-ID" method="POST" enctype="multipart/form-data">
    <p class="vxf-eyebrow">File dispatch</p>
    <h2>Send us your files</h2>
    <p class="vxf-sub">Drop a document, brief, or asset and we'll take it from here. We'll reply to the email you leave below.</p>

    <div class="vxf-field">
      <label for="vxf-upl9k3-name">Your name</label>
      <input type="text" id="vxf-upl9k3-name" name="name" placeholder="Ada Lovelace" autocomplete="name" required>
    </div>

    <div class="vxf-field">
      <label for="vxf-upl9k3-email">Email address</label>
      <input type="email" id="vxf-upl9k3-email" name="email" placeholder="you@company.com" autocomplete="email" required>
    </div>

    <div class="vxf-field">
      <label for="vxf-upl9k3-file">Attachment</label>
      <div class="vxf-drop">
        <div class="vxf-glyph" aria-hidden="true"><span class="vxf-arrow"></span></div>
        <span class="vxf-drop-title">Drag &amp; drop or <b>browse</b> to upload</span>
        <span class="vxf-drop-note">One file, up to 25&nbsp;MB</span>
        <span class="vxf-types">
          <span>PDF</span><span>DOCX</span><span>PNG</span><span>JPG</span><span>ZIP</span>
        </span>
        <input type="file" id="vxf-upl9k3-file" name="attachment"
               accept=".pdf,.doc,.docx,.png,.jpg,.jpeg,.zip" required>
      </div>
    </div>

    <!-- honeypot: leave empty -->
    <input type="text" name="_gotcha" class="vxf-hp" tabindex="-1" autocomplete="off" aria-hidden="true">

    <button type="submit">Upload &amp; send</button>
    <p class="vxf-foot">Secured by VASTROX Forms</p>
  </form>
</div>

EXAMPLE 05

Project Quote Inquiry

An agency-grade project inquiry form with name, email, company, budget select, and project details, paired with a reassurance rail on a self-contained dark panel.

Start a project

Let’s scope the work.

Tell us where you’re headed. We’ll come back with a tailored quote and a realistic timeline.

  • A written estimate within two business days
  • Fixed-scope pricing, no surprise line items
  • Your details stay private — never shared

We’ll only use this to reply to your inquiry.

<div class="vxf-q7k2">
  <style>
    .vxf-q7k2 {
      --bg: #141019;
      --field: #221a2b;
      --field-focus: #271e33;
      --line: #362b45;
      --ink: #f5f1f8;
      --muted: #a397b3;
      --faint: #6f6480;
      --accent: #e8b04b;
      --accent-soft: rgba(232, 176, 75, 0.16);
      box-sizing: border-box;
      max-width: 940px;
      margin: 0 auto;
      padding: clamp(28px, 4vw, 52px);
      background:
        radial-gradient(120% 90% at 100% 0%, rgba(232, 176, 75, 0.10), transparent 55%),
        radial-gradient(90% 80% at 0% 100%, rgba(122, 92, 200, 0.12), transparent 60%),
        var(--bg);
      border: 1px solid var(--line);
      border-radius: 22px;
      color: var(--ink);
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
      line-height: 1.5;
      box-shadow: 0 30px 70px -30px rgba(0, 0, 0, 0.7);
    }
    .vxf-q7k2 *,
    .vxf-q7k2 *::before,
    .vxf-q7k2 *::after { box-sizing: border-box; }

    .vxf-q7k2 .vxf-grid {
      display: grid;
      grid-template-columns: 1fr;
      gap: clamp(28px, 4vw, 48px);
    }
    @media (min-width: 760px) {
      .vxf-q7k2 .vxf-grid { grid-template-columns: 0.82fr 1.18fr; align-items: start; }
    }

    .vxf-q7k2 .vxf-eyebrow {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.18em;
      text-transform: uppercase;
      color: var(--accent);
      margin: 0 0 18px;
    }
    .vxf-q7k2 .vxf-eyebrow::before {
      content: "";
      width: 22px;
      height: 1px;
      background: var(--accent);
      opacity: 0.7;
    }
    .vxf-q7k2 .vxf-title {
      margin: 0 0 14px;
      font-size: clamp(28px, 4.4vw, 40px);
      font-weight: 700;
      line-height: 1.05;
      letter-spacing: -0.02em;
      text-wrap: balance;
    }
    .vxf-q7k2 .vxf-lede {
      margin: 0 0 26px;
      color: var(--muted);
      font-size: 15px;
      max-width: 34ch;
    }
    .vxf-q7k2 .vxf-assurances {
      list-style: none;
      margin: 0;
      padding: 0;
      display: grid;
      gap: 12px;
    }
    .vxf-q7k2 .vxf-assurances li {
      display: flex;
      align-items: flex-start;
      gap: 11px;
      font-size: 13.5px;
      color: var(--muted);
    }
    .vxf-q7k2 .vxf-tick {
      flex: none;
      margin-top: 1px;
      width: 17px;
      height: 17px;
      border-radius: 50%;
      background: var(--accent-soft);
      color: var(--accent);
      display: grid;
      place-items: center;
      font-size: 10px;
      font-weight: 700;
    }

    .vxf-q7k2 form { display: block; }
    .vxf-q7k2 .vxf-fields {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 18px 16px;
    }
    @media (max-width: 480px) {
      .vxf-q7k2 .vxf-fields { grid-template-columns: 1fr; }
    }
    .vxf-q7k2 .vxf-field { display: flex; flex-direction: column; }
    .vxf-q7k2 .vxf-span-2 { grid-column: 1 / -1; }

    .vxf-q7k2 label {
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.09em;
      text-transform: uppercase;
      color: var(--faint);
      margin-bottom: 8px;
    }
    .vxf-q7k2 .vxf-req { color: var(--accent); margin-left: 2px; }

    .vxf-q7k2 input,
    .vxf-q7k2 select,
    .vxf-q7k2 textarea {
      width: 100%;
      font: inherit;
      font-size: 15px;
      color: var(--ink);
      background: var(--field);
      border: 1px solid var(--line);
      border-radius: 12px;
      padding: 13px 15px;
      transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
      -webkit-appearance: none;
      appearance: none;
    }
    .vxf-q7k2 input::placeholder,
    .vxf-q7k2 textarea::placeholder { color: var(--faint); }

    .vxf-q7k2 input:hover,
    .vxf-q7k2 select:hover,
    .vxf-q7k2 textarea:hover { border-color: #4a3b5c; }

    .vxf-q7k2 input:focus,
    .vxf-q7k2 select:focus,
    .vxf-q7k2 textarea:focus {
      outline: none;
      background: var(--field-focus);
      border-color: var(--accent);
      box-shadow: 0 0 0 3px var(--accent-soft);
    }

    .vxf-q7k2 textarea { resize: vertical; min-height: 128px; line-height: 1.55; }

    .vxf-q7k2 .vxf-select-wrap { position: relative; }
    .vxf-q7k2 .vxf-select-wrap::after {
      content: "";
      position: absolute;
      right: 16px;
      top: 50%;
      width: 9px;
      height: 9px;
      border-right: 2px solid var(--muted);
      border-bottom: 2px solid var(--muted);
      transform: translateY(-70%) rotate(45deg);
      pointer-events: none;
    }
    .vxf-q7k2 select { padding-right: 40px; cursor: pointer; }
    .vxf-q7k2 select option { color: #f5f1f8; background: #1b1522; }

    .vxf-q7k2 .vxf-foot {
      margin-top: 24px;
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: space-between;
      gap: 14px;
    }
    .vxf-q7k2 .vxf-note {
      font-size: 12.5px;
      color: var(--faint);
      max-width: 30ch;
    }
    .vxf-q7k2 button {
      font: inherit;
      font-size: 15px;
      font-weight: 650;
      letter-spacing: 0.01em;
      color: #201704;
      background: linear-gradient(180deg, #f0bd5c, var(--accent));
      border: none;
      border-radius: 12px;
      padding: 14px 26px;
      cursor: pointer;
      display: inline-flex;
      align-items: center;
      gap: 9px;
      transition: transform 0.15s ease, box-shadow 0.2s ease, filter 0.2s ease;
      box-shadow: 0 10px 24px -8px rgba(232, 176, 75, 0.5);
    }
    .vxf-q7k2 button:hover { transform: translateY(-1px); filter: brightness(1.04); box-shadow: 0 14px 30px -8px rgba(232, 176, 75, 0.6); }
    .vxf-q7k2 button:active { transform: translateY(0); }
    .vxf-q7k2 button:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
    .vxf-q7k2 button svg { width: 16px; height: 16px; }

    .vxf-q7k2 .vxf-hp { position: absolute; left: -9999px; }

    @media (prefers-reduced-motion: reduce) {
      .vxf-q7k2 * { transition: none !important; }
    }
  </style>

  <div class="vxf-grid">
    <div class="vxf-intro">
      <p class="vxf-eyebrow">Start a project</p>
      <h2 class="vxf-title">Let&rsquo;s scope the work.</h2>
      <p class="vxf-lede">Tell us where you&rsquo;re headed. We&rsquo;ll come back with a tailored quote and a realistic timeline.</p>
      <ul class="vxf-assurances">
        <li><span class="vxf-tick" aria-hidden="true">&#10003;</span><span>A written estimate within two business days</span></li>
        <li><span class="vxf-tick" aria-hidden="true">&#10003;</span><span>Fixed-scope pricing, no surprise line items</span></li>
        <li><span class="vxf-tick" aria-hidden="true">&#10003;</span><span>Your details stay private &mdash; never shared</span></li>
      </ul>
    </div>

    <form action="https://forms.vastrox.com/YOUR-ID" method="POST">
      <input type="text" name="_gotcha" class="vxf-hp" tabindex="-1" autocomplete="off" aria-hidden="true">

      <div class="vxf-fields">
        <div class="vxf-field">
          <label for="vxf-q7k2-name">Full name <span class="vxf-req">*</span></label>
          <input id="vxf-q7k2-name" type="text" name="name" placeholder="Jordan Ellis" autocomplete="name" required>
        </div>

        <div class="vxf-field">
          <label for="vxf-q7k2-email">Work email <span class="vxf-req">*</span></label>
          <input id="vxf-q7k2-email" type="email" name="email" placeholder="jordan@company.com" autocomplete="email" required>
        </div>

        <div class="vxf-field">
          <label for="vxf-q7k2-company">Company</label>
          <input id="vxf-q7k2-company" type="text" name="company" placeholder="Acme Studio" autocomplete="organization">
        </div>

        <div class="vxf-field">
          <label for="vxf-q7k2-budget">Budget range <span class="vxf-req">*</span></label>
          <div class="vxf-select-wrap">
            <select id="vxf-q7k2-budget" name="budget" required>
              <option value="" selected disabled>Select a range</option>
              <option value="under-5k">Under $5,000</option>
              <option value="5k-15k">$5,000 &ndash; $15,000</option>
              <option value="15k-50k">$15,000 &ndash; $50,000</option>
              <option value="50k-plus">$50,000+</option>
              <option value="not-sure">Not sure yet</option>
            </select>
          </div>
        </div>

        <div class="vxf-field vxf-span-2">
          <label for="vxf-q7k2-details">Project details <span class="vxf-req">*</span></label>
          <textarea id="vxf-q7k2-details" name="details" placeholder="What are you building, who is it for, and when do you need it live? Links to anything relevant are welcome." required></textarea>
        </div>
      </div>

      <div class="vxf-foot">
        <p class="vxf-note">We&rsquo;ll only use this to reply to your inquiry.</p>
        <button type="submit">
          Request a quote
          <svg viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>
        </button>
      </div>
    </form>
  </div>
</div>

EXAMPLE 06

Inline Newsletter Signup

A compact single-row email capture with an integrated pill button, designed to sit elegantly in a footer or at the end of a blog post, and to stack gracefully on mobile.

Get the weekly dispatch

One sharp email every Friday. Product notes, no noise, unsubscribe anytime.

Protected by VASTROX Forms. We never share your address.

<div class="vxf-inl-news">
  <style>
    .vxf-inl-news{
      --vxf-accent:#5b57ff;
      --vxf-accent-2:#8f6bff;
      --vxf-ink:#12131a;
      --vxf-muted:#6b6d7c;
      --vxf-field:#ffffff;
      --vxf-border:rgba(18,19,26,.12);
      --vxf-card:rgba(255,255,255,.72);
      box-sizing:border-box;
      max-width:560px;
      margin:0 auto;
      padding:22px 22px 20px;
      border-radius:20px;
      background:
        radial-gradient(120% 140% at 0% 0%, rgba(91,87,255,.10), transparent 55%),
        var(--vxf-card);
      border:1px solid var(--vxf-border);
      box-shadow:0 1px 0 rgba(255,255,255,.6) inset, 0 18px 40px -24px rgba(18,19,26,.45);
      backdrop-filter:blur(10px);
      -webkit-backdrop-filter:blur(10px);
      font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
      color:var(--vxf-ink);
      text-align:left;
    }
    .vxf-inl-news *{box-sizing:border-box;}
    .vxf-inl-news .vxf-head{
      display:flex;align-items:center;gap:9px;margin:0 0 4px;
    }
    .vxf-inl-news .vxf-spark{
      display:inline-flex;align-items:center;justify-content:center;
      width:26px;height:26px;border-radius:8px;flex:0 0 auto;
      background:linear-gradient(135deg,var(--vxf-accent),var(--vxf-accent-2));
      color:#fff;box-shadow:0 6px 14px -6px var(--vxf-accent);
    }
    .vxf-inl-news .vxf-spark svg{width:15px;height:15px;display:block;}
    .vxf-inl-news .vxf-title{
      font-size:15px;font-weight:650;letter-spacing:-.01em;margin:0;
    }
    .vxf-inl-news .vxf-sub{
      margin:0 0 16px;font-size:13px;line-height:1.5;color:var(--vxf-muted);
    }
    .vxf-inl-news .vxf-row{
      display:flex;gap:8px;align-items:stretch;
    }
    .vxf-inl-news .vxf-field{position:relative;flex:1 1 auto;min-width:0;}
    .vxf-inl-news .vxf-vh{
      position:absolute;width:1px;height:1px;padding:0;margin:-1px;
      overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
    }
    .vxf-inl-news input[type=email]{
      width:100%;height:46px;
      padding:0 14px;
      font-size:14px;color:var(--vxf-ink);
      background:var(--vxf-field);
      border:1px solid var(--vxf-border);
      border-radius:12px;
      outline:none;
      transition:border-color .18s ease, box-shadow .18s ease, background .18s ease;
      -webkit-appearance:none;appearance:none;
    }
    .vxf-inl-news input[type=email]::placeholder{color:#9a9cab;}
    .vxf-inl-news input[type=email]:hover{border-color:rgba(91,87,255,.45);}
    .vxf-inl-news input[type=email]:focus{
      border-color:var(--vxf-accent);
      box-shadow:0 0 0 4px rgba(91,87,255,.18);
    }
    .vxf-inl-news button{
      flex:0 0 auto;
      display:inline-flex;align-items:center;gap:7px;
      height:46px;padding:0 20px;
      font-size:14px;font-weight:650;letter-spacing:-.01em;color:#fff;
      border:0;border-radius:12px;cursor:pointer;
      background:linear-gradient(135deg,var(--vxf-accent),var(--vxf-accent-2));
      box-shadow:0 10px 22px -10px var(--vxf-accent), 0 1px 0 rgba(255,255,255,.35) inset;
      transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
    }
    .vxf-inl-news button svg{width:15px;height:15px;transition:transform .18s ease;}
    .vxf-inl-news button:hover{
      filter:saturate(1.08);
      box-shadow:0 14px 26px -10px var(--vxf-accent), 0 1px 0 rgba(255,255,255,.35) inset;
    }
    .vxf-inl-news button:hover svg{transform:translateX(2px);}
    .vxf-inl-news button:active{transform:translateY(1px);}
    .vxf-inl-news button:focus-visible{outline:2px solid var(--vxf-accent);outline-offset:3px;}
    .vxf-inl-news .vxf-fine{
      margin:11px 0 0;font-size:11.5px;line-height:1.5;color:var(--vxf-muted);
    }
    @media (max-width:440px){
      .vxf-inl-news .vxf-row{flex-direction:column;}
      .vxf-inl-news button{justify-content:center;width:100%;}
    }
    @media (prefers-color-scheme:dark){
      .vxf-inl-news{
        --vxf-ink:#f2f2f7;
        --vxf-muted:#a1a3b4;
        --vxf-field:rgba(255,255,255,.04);
        --vxf-border:rgba(255,255,255,.14);
        --vxf-card:rgba(24,25,34,.66);
        box-shadow:0 1px 0 rgba(255,255,255,.05) inset, 0 22px 48px -24px rgba(0,0,0,.7);
      }
      .vxf-inl-news input[type=email]::placeholder{color:#7c7e8f;}
    }
  </style>

  <form class="vxf-form" action="https://forms.vastrox.com/YOUR-ID" method="POST">
    <div class="vxf-head">
      <span class="vxf-spark" aria-hidden="true">
        <svg viewBox="0 0 24 24" fill="none"><path d="M4 6.5 12 12l8-5.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><rect x="3.25" y="5.25" width="17.5" height="13.5" rx="2.5" stroke="currentColor" stroke-width="2"/></svg>
      </span>
      <p class="vxf-title">Get the weekly dispatch</p>
    </div>
    <p class="vxf-sub">One sharp email every Friday. Product notes, no noise, unsubscribe anytime.</p>

    <div class="vxf-row">
      <div class="vxf-field">
        <label class="vxf-vh" for="vxf-inl-email">Email address</label>
        <input id="vxf-inl-email" type="email" name="email" placeholder="you@company.com" autocomplete="email" required>
      </div>
      <button type="submit">
        Subscribe
        <svg viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12h13m0 0-5.5-5.5M18 12l-5.5 5.5" stroke="currentColor" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"/></svg>
      </button>
    </div>

    <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">
    <p class="vxf-fine">Protected by VASTROX Forms. We never share your address.</p>
  </form>
</div>
NextPOST

Get an endpoint to point these at.

Free, in about ten seconds.