communications in-app</li>
          <li>Track, request &amp; add vehicles anytime</li>
          <li>Every repair tracked with photos</li>
          <li>Access your repair history anytime</li>
        </ul>
      </div>
      <h2>Company Information</h2>
      <p class="subtitle">Tell us about your business.</p>
      <form method="POST">
        <input type="hidden" name="step" value="1">
        <label>Company Name *</label>
        <input type="text" name="company_name" value="<?= htmlspecialchars($_POST['company_name']??'') ?>" placeholder="Acme Trucking Co." required>
        <label>Your Name *</label>
        <input type="text" name="contact_name" value="<?= htmlspecialchars($_POST['contact_name']??'') ?>" placeholder="John Smith" required>
        <div class="row-2">
          <div>
            <label>Email Address *</label>
            <input type="email" name="email" value="<?= htmlspecialchars($_POST['email']??'') ?>" placeholder="you@company.com" required>
          </div>
          <div>
            <label>Phone Number *</label>
            <input type="text" name="phone" value="<?= htmlspecialchars($_POST['phone']??'') ?>" placeholder="406-555-0100" required>
          </div>
        </div>
        <label>Business Address</label>
        <input type="text" name="address" value="<?= htmlspecialchars($_POST['address']??'') ?>" placeholder="123 Main St, Missoula MT">
        <button type="submit" class="btn-primary">Continue →</button>
      </form>

    <?php // ── STEP 2 ────────────────────────────────────────
    elseif ($step === 2): ?>
      <h2>Create Your Login</h2>
      <p class="subtitle">You'll use these to access your fleet dashboard.</p>
      <form method="POST">
        <input type="hidden" name="step" value="2">
        <label>Username *</label>
        <input type="text" name="username" value="<?= htmlspecialchars($_POST['username']??'') ?>" placeholder="fleetacme" autocomplete="username" required>
        <label>Password *</label>
        <input type="password" name="password" placeholder="At least 8 characters" autocomplete="new-password" required>
        <label>Confirm Password *</label>
        <input type="password" name="password2" placeholder="Re-enter password" autocomplete="new-password" required>
        <button type="submit" class="btn-primary">Continue →</button>
      </form>
      <a href="/app/fleet-signup.php?step=1" class="btn-back">← Back</a>

    <?php // ── STEP 3 ────────────────────────────────────────
    elseif ($step === 3): ?>
      <h2>Add Your Vehicles</h2>
      <p class="subtitle">Add all trucks in your fleet.</p>
      <form method="POST" id="veh-form">
        <input type="hidden" name="step" value="3">
        <div id="vehicle-list">
          <div class="vehicle-row">
            <div class="row-label">Vehicle 1</div>
            <div class="row-3">
              <div><label>Year</label><input type="number" name="year[]" placeholder="2021" min="1990" max="2030" required></div>
              <div><label>Make</label><input type="text" name="make[]" placeholder="Ford" required></div>
              <div><label>Model</label><input type="text" name="model[]" placeholder="F-250" required></div>
            </div>
            <div class="row-2" style="margin-top:.5rem">
              <div><label>Last 6 of VIN</label><input type="text" name="vin[]" placeholder="AB1234" maxlength="6" required></div>
              <div><label>Color</label><input type="text" name="color[]" placeholder="White"></div>
            </div>
          </div>
        </div>
        <button type="button" class="add-vehicle-btn" onclick="addVehicle()">+ Add Another Vehicle</button>
        <button type="submit" class="btn-primary">Continue →</button>
      </form>
      <a href="/app/fleet-signup.php?step=2" class="btn-back">← Back</a>

    <?php // ── STEP 4 ────────────────────────────────────────
    elseif ($step === 4):
      $co  = $signup['company'] ?? [];
      $log = $signup['login']   ?? [];
    ?>
      <h2>Review & Pay</h2>
      <p class="subtitle">Confirm your details then proceed to secure payment.</p>

      <?php if (!STRIPE_CONFIGURED): ?>
      <div class="not-configured">
        ⚠️ <strong>Payment processing coming soon.</strong> Your information has been saved. Please contact us at <a href="mailto:Sales@rockchipmedic.com" style="color:#FFB800">Sales@rockchipmedic.com</a> or <a href="tel:+14068802297" style="color:#FFB800">(406) 880-2297</a> to complete your enrollment.
      </div>
      <?php endif; ?>

      <div class="summary-box">
        <div class="summary-row"><span>Company</span><span><?= htmlspecialchars($co['company']??'') ?></span></div>
        <div class="summary-row"><span>Contact</span><span><?= htmlspecialchars($co['contact']??'') ?></span></div>
        <div class="summary-row"><span>Email</span><span><?= htmlspecialchars($co['email']??'') ?></span></div>
        <div class="summary-row"><span>Username</span><span><?= htmlspecialchars($log['username']??'') ?></span></div>
      </div>

      <div class="summary-box">
        <div class="vehicle-list">
          <?php foreach($vehicles as $i => $v): ?>
          <div class="vehicle-item">
            <span><?= htmlspecialchars($v['yr'].' '.$v['make'].' '.$v['model']) ?> — ···<?= htmlspecialchars($v['vin']) ?></span>
            <span style="color:#CC2200">Included</span>
          </div>
          <?php endforeach; ?>
        </div>
      </div>

      <?php if (STRIPE_CONFIGURED): ?>
      <form method="POST">
        <input type="hidden" name="step" value="4">
        <button type="submit" class="btn-primary">🔒 Proceed to Secure Payment →</button>
      </form>
      <p class="stripe-note">Secured by <a href="https://stripe.com" target="_blank">Stripe</a>. Your card info never touches our server. Cancel anytime.</p>
      <?php else: ?>
      <p class="stripe-note">Questions? Call <a href="tel:+14068802297">(406) 880-2297</a> or email <a href="mailto:Sales@rockchipmedic.com">Sales@rockchipmedic.com</a></p>
      <?php endif; ?>

      <a href="/app/fleet-signup.php?step=3" class="btn-back">← Edit Vehicles</a> &nbsp;|&nbsp;
      <a href="/app/fleet-signup.php?reset=1" class="btn-back">Start over</a>
    <?php endif; ?>
  </div>

  <div class="back-link"><a href="/app/fleet-login.php">Already have an account? Sign in →</a></div>
</div>

<script>
let count = 1;
function addVehicle(){
  count++;
  const d = document.createElement('div');
  d.className = 'vehicle-row';
  d.innerHTML = `
    <div class="row-label">Vehicle ${count}</div>
    <button type="button" class="remove-btn" onclick="this.parentElement.remove();recount()">✕ Remove</button>
    <div class="row-3">
      <div><label>Year</label><input type="number" name="year[]" placeholder="2021" min="1990" max="2030" required></div>
      <div><label>Make</label><input type="text" name="make[]" placeholder="Ford" required></div>
      <div><label>Model</label><input type="text" name="model[]" placeholder="F-250" required></div>
    </div>
    <div class="row-2" style="margin-top:.5rem">
      <div><label>Last 6 of VIN</label><input type="text" name="vin[]" placeholder="AB1234" maxlength="6" required></div>
      <div><label>Color</label><input type="text" name="color[]" placeholder="White"></div>
    </div>`;
  document.getElementById('vehicle-list').appendChild(d);
}
function recount(){
  document.querySelectorAll('.vehicle-row').forEach((r,i)=>{
    r.querySelector('.row-label').textContent = 'Vehicle '+(i+1);
  });
}
</script>
</body>
</html>          </div>
          <div>
            <label>Phone Number *</label>
            <input type="text" name="phone" value="<?= htmlspecialchars($_POST['phone']??'') ?>" placeholder="406-555-0100" required>
          </div>
        </div>
        <label>Business Address</label>
        <input type="text" name="address" value="<?= htmlspecialchars($_POST['address']??'') ?>" placeholder="123 Main St, Missoula MT">
        <button type="submit" class="btn-primary">Continue →</button>
      </form>

    <?php // ── STEP 2 ────────────────────────────────────────
    elseif ($step === 2): ?>
      <h2>Create Your Login</h2>
      <p class="subtitle">You'll use these to access your fleet dashboard.</p>
      <form method="POST">
        <input type="hidden" name="step" value="2">
        <label>Username *</label>
        <input type="text" name="username" value="<?= htmlspecialchars($_POST['username']??'') ?>" placeholder="fleetacme" autocomplete="username" required>
        <label>Password *</label>
        <input type="password" name="password" placeholder="At least 8 characters" autocomplete="new-password" required>
        <label>Confirm Password *</label>
        <input type="password" name="password2" placeholder="Re-enter password" autocomplete="new-password" required>
        <button type="submit" class="btn-primary">Continue →</button>
      </form>
      <a href="/app/fleet-signup.php?step=1" class="btn-back">← Back</a>

    <?php // ── STEP 3 ────────────────────────────────────────
    elseif ($step === 3): ?>
      <h2>Add Your Vehicles</h2>
      <p class="subtitle">Add all trucks in your fleet.</p>
      <form method="POST" id="veh-form">
        <input type="hidden" name="step" value="3">
        <div id="vehicle-list">
          <div class="vehicle-row">
            <div class="row-label">Vehicle 1</div>
            <div class="row-3">
              <div><label>Year</label><input type="number" name="year[]" placeholder="2021" min="1990" max="2030" required></div>
              <div><label>Make</label><input type="text" name="make[]" placeholder="Ford" required></div>
              <div><label>Model</label><input type="text" name="model[]" placeholder="F-250" required></div>
            </div>
            <div class="row-2" style="margin-top:.5rem">
              <div><label>Last 6 of VIN</label><input type="text" name="vin[]" placeholder="AB1234" maxlength="6" required></div>
              <div><label>Color</label><input type="text" name="color[]" placeholder="White"></div>
            </div>
          </div>
        </div>
        <button type="button" class="add-vehicle-btn" onclick="addVehicle()">+ Add Another Vehicle</button>
        <button type="submit" class="btn-primary">Continue →</button>
      </form>
      <a href="/app/fleet-signup.php?step=2" class="btn-back">← Back</a>

    <?php // ── STEP 4 ────────────────────────────────────────
    elseif ($step === 4):
      $co  = $signup['company'] ?? [];
      $log = $signup['login']   ?? [];
    ?>
      <h2>Review & Pay</h2>
      <p class="subtitle">Confirm your details then proceed to secure payment.</p>

      <?php if (!STRIPE_CONFIGURED): ?>
      <div class="not-configured">
        ⚠️ <strong>Payment processing coming soon.</strong> Your information has been saved. Please contact us at <a href="mailto:Sales@rockchipmedic.com" style="color:#FFB800">Sales@rockchipmedic.com</a> or <a href="tel:+14068802297" style="color:#FFB800">(406) 880-2297</a> to complete your enrollment.
      </div>
      <?php endif; ?>

      <div class="summary-box">
        <div class="summary-row"><span>Company</span><span><?= htmlspecialchars($co['company']??'') ?></span></div>
        <div class="summary-row"><span>Contact</span><span><?= htmlspecialchars($co['contact']??'') ?></span></div>
        <div class="summary-row"><span>Email</span><span><?= htmlspecialchars($co['email']??'') ?></span></div>
        <div class="summary-row"><span>Username</span><span><?= htmlspecialchars($log['username']??'') ?></span></div>
      </div>

      <div class="summary-box">
        <div class="vehicle-list">
          <?php foreach($vehicles as $i => $v): ?>
          <div class="vehicle-item">
            <span><?= htmlspecialchars($v['yr'].' '.$v['make'].' '.$v['model']) ?> — ···<?= htmlspecialchars($v['vin']) ?></span>
            <span style="color:#CC2200">Monthly</span>
          </div>
          <?php endforeach; ?>
        </div>
      </div>

      <?php if (STRIPE_CONFIGURED): ?>
      <form method="POST">
        <input type="hidden" name="step" value="4">
        <button type="submit" class="btn-primary">🔒 Proceed to Secure Payment →</button>
      </form>
      <p class="stripe-note">Secured by <a href="https://stripe.com" target="_blank">Stripe</a>. Your card info never touches our server. Cancel anytime.</p>
      <?php else: ?>
      <p class="stripe-note">Questions? Call <a href="tel:+14068802297">(406) 880-2297</a> or email <a href="mailto:Sales@rockchipmedic.com">Sales@rockchipmedic.com</a></p>
      <?php endif; ?>

      <a href="/app/fleet-signup.php?step=3" class="btn-back">← Edit Vehicles</a> &nbsp;|&nbsp;
      <a href="/app/fleet-signup.php?reset=1" class="btn-back">Start over</a>
    <?php endif; ?>
  </div>

  <div class="back-link"><a href="/app/fleet-login.php">Already have an account? Sign in →</a></div>
</div>

<script>
let count = 1;
function addVehicle(){
  count++;
  const d = document.createElement('div');
  d.className = 'vehicle-row';
  d.innerHTML = `
    <div class="row-label">Vehicle ${count}</div>
    <button type="button" class="remove-btn" onclick="this.parentElement.remove();recount()">✕ Remove</button>
    <div class="row-3">
      <div><label>Year</label><input type="number" name="year[]" placeholder="2021" min="1990" max="2030" required></div>
      <div><label>Make</label><input type="text" name="make[]" placeholder="Ford" required></div>
      <div><label>Model</label><input type="text" name="model[]" placeholder="F-250" required></div>
    </div>
    <div class="row-2" style="margin-top:.5rem">
      <div><label>Last 6 of VIN</label><input type="text" name="vin[]" placeholder="AB1234" maxlength="6" required></div>
      <div><label>Color</label><input type="text" name="color[]" placeholder="White"></div>
    </div>`;
  document.getElementById('vehicle-list').appendChild(d);
}
function recount(){
  document.querySelectorAll('.vehicle-row').forEach((r,i)=>{
    r.querySelector('.row-label').textContent = 'Vehicle '+(i+1);
  });
}
</script>
</body>
</html>